Example #1
0
 it('should pick the selector with greater specificity', () => {
   elem.classList.add('test');
   let called1 = false;
   let called2 = false;
   registry.addCommand('test1', {
     execute: () => { called1 = true; }
   });
   registry.addCommand('test2', {
     execute: () => { called2 = true; }
   });
   registry.addKeyBinding({
     keys: ['Ctrl ;'],
     selector: '.test',
     command: 'test1'
   });
   registry.addKeyBinding({
     keys: ['Ctrl ;'],
     selector: `#${elem.id}`,
     command: 'test2'
   });
   let event = generate('keydown', { keyCode: 59, ctrlKey: true });
   elem.dispatchEvent(event);
   expect(called1).to.equal(false);
   expect(called2).to.equal(true);
 });
Example #2
0
 it('should register partial and exact matches', () => {
   let count1 = 0;
   let count2 = 0;
   registry.addCommand('test1', {
     execute: () => { count1++; }
   });
   registry.addCommand('test2', {
     execute: () => { count2++; }
   });
   registry.addKeyBinding({
     keys: ['Ctrl S'],
     selector: `#${elem.id}`,
     command: 'test1'
   });
   registry.addKeyBinding({
     keys: ['Ctrl S', 'Ctrl D'],
     selector: `#${elem.id}`,
     command: 'test2'
   });
   let event1 = generate('keydown', { keyCode: 83, ctrlKey: true });
   let event2 = generate('keydown', { keyCode: 68, ctrlKey: true });
   expect(count1).to.equal(0);
   expect(count2).to.equal(0);
   elem.dispatchEvent(event1);
   expect(count1).to.equal(0);
   expect(count2).to.equal(0);
   elem.dispatchEvent(event2);
   expect(count1).to.equal(0);
   expect(count2).to.equal(1);
 });
Example #3
0
 it('should resolve an exact match of partial match time out', (done) => {
   let called1 = false;
   let called2 = false;
   registry.addCommand('test1', {
     execute: () => { called1 = true; }
   });
   registry.addCommand('test2', {
     execute: () => { called2 = true; }
   });
   registry.addKeyBinding({
     keys: ['D', 'D'],
     selector: `#${elem.id}`,
     command: 'test1'
   });
   registry.addKeyBinding({
     keys: ['D'],
     selector: `#${elem.id}`,
     command: 'test2'
   });
   let event = generate('keydown', { keyCode: 68 });
   elem.dispatchEvent(event);
   expect(called1).to.equal(false);
   expect(called2).to.equal(false);
   setTimeout(() => {
     expect(called1).to.equal(false);
     expect(called2).to.equal(true);
     done();
   }, 1300);
 });
Example #4
0
    disposables = Object.keys(composite).reduce((acc, val): DisposableSet => {
      const options = normalizeOptions(composite[val]);

      if (options) {
        acc.add(commands.addKeyBinding(options));
      }

      return acc;
    }, new DisposableSet());
Example #5
0
    disposables = shortcuts.reduce((acc, val): DisposableSet => {
      const options = normalizeOptions(val);

      if (options) {
        acc.add(commands.addKeyBinding(options));
      }

      return acc;
    }, new DisposableSet());
Example #6
0
 it('should be the keybindings in the palette', () => {
   registry.addCommand('test', { execute: () => { } });
   registry.addKeyBinding({
     keys: ['Ctrl ;'],
     selector: `body`,
     command: 'test'
   });
   expect(registry.keyBindings.length).to.equal(1);
   expect(registry.keyBindings[0].command).to.equal('test');
 });
Example #7
0
 it('should recognize permutations of modifiers', () => {
   let count1 = 0;
   let count2 = 0;
   registry.addCommand('test1', {
     execute: () => { count1++; }
   });
   registry.addCommand('test2', {
     execute: () => { count2++; }
   });
   registry.addKeyBinding({
     keys: ['Shift Alt Ctrl T'],
     selector: `#${elem.id}`,
     command: 'test1'
   });
   registry.addKeyBinding({
     keys: ['Alt Shift Ctrl Q'],
     selector: `#${elem.id}`,
     command: 'test2'
   });
   let event1 = generate('keydown', {
     keyCode: 84,
     ctrlKey: true,
     altKey: true,
     shiftKey: true
   });
   let event2 = generate('keydown', {
     keyCode: 81,
     ctrlKey: true,
     altKey: true,
     shiftKey: true
   });
   expect(count1).to.equal(0);
   elem.dispatchEvent(event1);
   expect(count1).to.equal(1);
   expect(count2).to.equal(0);
   elem.dispatchEvent(event2);
   expect(count2).to.equal(1);
 });
Example #8
0
 it('should add key bindings to the registry', () => {
   let called = false;
   registry.addCommand('test', {
     execute: () => { called = true; }
   });
   registry.addKeyBinding({
     keys: ['Ctrl ;'],
     selector: `#${elem.id}`,
     command: 'test'
   });
   let event = generate('keydown', { keyCode: 59, ctrlKey: true });
   elem.dispatchEvent(event);
   expect(called).to.equal(true);
 });
Example #9
0
 it('should not dispatch on a non-matching keyboard event', () => {
   let called = false;
   registry.addCommand('test', {
     execute: () => { called = true; }
   });
   registry.addKeyBinding({
     keys: ['Ctrl ;'],
     selector: `#${elem.id}`,
     command: 'test'
   });
   let event = generate('keydown', { keyCode: 45, ctrlKey: true });
   elem.dispatchEvent(event);
   expect(called).to.equal(false);
 });
Example #10
0
 it('should not execute a handler when missing a modifier', () => {
   let count = 0;
   registry.addCommand('test', {
     execute: () => { count++; }
   });
   registry.addKeyBinding({
     keys: ['Ctrl P'],
     selector: `#${elem.id}`,
     command: 'test'
   });
   let event = generate('keydown', { keyCode: 17 });
   expect(count).to.equal(0);
   elem.dispatchEvent(event);
   expect(count).to.equal(0);
 });