@taufik-nurrohman/text-editor.key 1.0.7 → 1.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  [Text Editor](https://github.com/taufik-nurrohman/text-editor) » Key
2
2
  ==========================================================================
3
3
 
4
- Key extension for [Text Editor](https://github.com/taufik-nurrohman/text-editor). This extension provides a feature to
5
- easily interact with the keyboard keys.
4
+ This extension provides a feature to easily interact with the keyboard keys.
6
5
 
7
6
  ![index.js](https://img.shields.io/github/size/taufik-nurrohman/text-editor.key/index.js?branch=main&color=%23f1e05a&label=index.js&labelColor=%231f2328&style=flat-square)
8
7
  ![index.min.js](https://img.shields.io/github/size/taufik-nurrohman/text-editor.key/index.min.js?branch=main&color=%23f1e05a&label=index.min.js&labelColor=%231f2328&style=flat-square)
package/index.js CHANGED
@@ -60,7 +60,7 @@
60
60
  var hasValue = function hasValue(x, data) {
61
61
  return -1 !== data.indexOf(x);
62
62
  };
63
- var fromStates = function fromStates() {
63
+ var _fromStates = function fromStates() {
64
64
  for (var _len = arguments.length, lot = new Array(_len), _key = 0; _key < _len; _key++) {
65
65
  lot[_key] = arguments[_key];
66
66
  }
@@ -82,7 +82,7 @@
82
82
  }
83
83
  // Merge object recursive
84
84
  } else if (isObject(out[k]) && isObject(lot[i][k])) {
85
- out[k] = fromStates({
85
+ out[k] = _fromStates({
86
86
  /* Clone! */ }, out[k], lot[i][k]);
87
87
  // Replace value
88
88
  } else {
@@ -176,12 +176,21 @@
176
176
  return map.pull();
177
177
  }, 1000);
178
178
  var name = 'TextEditor.Key';
179
- var id = '_Key';
179
+ var references = new WeakMap();
180
+
181
+ function getReference(key) {
182
+ return references.get(key) || null;
183
+ }
184
+
185
+ function letReference(key) {
186
+ return references.delete(key);
187
+ }
180
188
 
181
189
  function onBlur(e) {
182
- var $ = this;
190
+ var $ = this,
191
+ map = getReference($);
183
192
  $._event = e;
184
- $[id].pull(); // Reset all key(s)
193
+ map.pull(); // Reset all key(s)
185
194
  }
186
195
 
187
196
  function onInput(e) {
@@ -191,7 +200,7 @@
191
200
  function onKeyDown(e) {
192
201
  var $ = this;
193
202
  var command,
194
- map = $[id],
203
+ map = getReference($),
195
204
  v;
196
205
  map.push(e.key); // Add current key to the queue
197
206
  $._event = e;
@@ -208,24 +217,30 @@
208
217
  }
209
218
 
210
219
  function onKeyUp(e) {
211
- var $ = this;
220
+ var $ = this,
221
+ map = getReference($);
212
222
  $._event = e;
213
- $[id].pull(e.key); // Reset current key
223
+ map.pull(e.key); // Reset current key
224
+ }
225
+
226
+ function setReference(key, value) {
227
+ return references.set(key, value);
214
228
  }
215
229
 
216
230
  function attach() {
217
231
  var $ = this;
218
232
  var $$ = $.constructor.prototype;
219
233
  var map = new Key($);
220
- $.commands = fromStates($.commands = map.commands, $.state.commands || {});
221
- $.keys = fromStates($.keys = map.keys, $.state.keys || {});
234
+ $.commands = _fromStates($.commands = map.commands, $.state.commands || {});
235
+ $.keys = _fromStates($.keys = map.keys, $.state.keys || {});
222
236
  !isFunction($$.command) && ($$.command = function (command, of) {
223
237
  var $ = this;
224
238
  return $.commands[command] = of, $;
225
239
  });
226
240
  !isFunction($$.k) && ($$.k = function (join) {
227
241
  var $ = this,
228
- key = $[id] + "",
242
+ map = getReference($),
243
+ key = map + "",
229
244
  keys;
230
245
  if (isSet(join) && '-' !== join) {
231
246
  keys = "" !== key ? key.split(/-(?!$)/) : [];
@@ -249,18 +264,18 @@
249
264
  $.on('input', onInput);
250
265
  $.on('key.down', onKeyDown);
251
266
  $.on('key.up', onKeyUp);
252
- return $[id] = map, $;
267
+ return setReference($, map), $;
253
268
  }
254
269
 
255
270
  function detach() {
256
- var $ = this;
257
- $[id].pull();
271
+ var $ = this,
272
+ map = getReference($);
273
+ map.pull();
258
274
  $.off('blur', onBlur);
259
275
  $.off('input', onInput);
260
276
  $.off('key.down', onKeyDown);
261
277
  $.off('key.up', onKeyUp);
262
- delete $[id];
263
- return $;
278
+ return letReference($), $;
264
279
  }
265
280
  var index_js = {
266
281
  attach: attach,
package/index.min.js CHANGED
@@ -23,4 +23,4 @@
23
23
  * SOFTWARE.
24
24
  *
25
25
  */
26
- !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):((n="undefined"!=typeof globalThis?globalThis:n||self).TextEditor=n.TextEditor||{},n.TextEditor.Key=t())}(this,(function(){"use strict";var n=function(n){return Array.isArray(n)},t=function(n){return"function"==typeof n},e=function(n,t){return void 0===t&&(t=!0),"object"==typeof n&&(!t||function(n,t){return n&&r(t)&&n instanceof t}(n,Object))},r=function(n){return function(n){return void 0!==n}(n)&&!function(n){return null===n}(n)},o=function(n){return"string"==typeof n},u=function t(){for(var o=arguments.length,u=Array(o),f=0;f<o;f++)u[f]=arguments[f];for(var c,s=u.shift(),a=0,l=i(u);a<l;++a)for(var y in u[a])if(r(s[y]))if(n(s[y])&&n(u[a][y])){s[y]=[].concat(s[y]);for(var d=0,p=i(u[a][y]);d<p;++d)c=u[a][y][d],-1===s[y].indexOf(c)&&s[y].push(u[a][y][d])}else e(s[y])&&e(u[a][y])?s[y]=t({},s[y],u[a][y]):s[y]=u[a][y];else s[y]=u[a][y];return s},i=function(n){return n.length};function f(n){var t=this;return t.commands={},t.key=null,t.keys={},t.queue={},t.self=n||t,t}var c=f.prototype;c.command=function(n){var t=this;if(o(n))return n===t.toString();var e=t.keys[t.toString()];return!!r(e)&&e},c.fire=function(e){var u,i,f=this,c=f.self||f;if(t(e))u=e.call(c),i=!0;else if(o(e)&&(e=f.commands[e]))u=e.call(c),i=!0;else if(n(e)){var s=e[1]||[];(e=f.commands[e[0]])&&(u=e.apply(c,s),i=!0)}return i?!r(u)||u:null},c.pull=function(n){var t=this;return t.key=null,r(n)?(delete t.queue[n],t):(t.queue={},t)},c.push=function(n){var t=this;return t.queue[t.key=n]=1,t},c.toString=function(){return(n=this.queue,Object.keys(n)).join("-");var n},Object.defineProperty(f,"name",{value:"Key"});var s,a,l,y=function(n){return n&&n.preventDefault()},d=function(n){return n&&n.stopPropagation()},p=(s=function(n){return n.pull()},a=1e3,function(){var n=arguments,t=this;l&&clearTimeout(l),l=setTimeout((function(){return s.apply(t,n)}),a)}),m="_Key";function h(n){this._event=n,this[m].pull()}function v(n){h.call(this,n)}function k(n){var t,e,r=this[m];r.push(n.key),this._event=n,(t=r.command())&&(!1===(e=r.fire(t))?(y(n),d(n)):null===e&&console.warn("Unknown command: `"+t+"`")),p(r)}function b(n){this._event=n,this[m].pull(n.key)}var g={attach:function(){var n=this,e=n.constructor.prototype,o=new f(n);return n.commands=u(n.commands=o.commands,n.state.commands||{}),n.keys=u(n.keys=o.keys,n.state.keys||{}),!t(e.command)&&(e.command=function(n,t){return this.commands[n]=t,this}),!t(e.k)&&(e.k=function(n){var t,e=this[m]+"";return r(n)&&"-"!==n&&(t=""!==e?e.split(/-(?!$)/):[],!1!==n)?t.join(n):!1===n?"-"===e?[e]:t:e}),!t(e.key)&&(e.key=function(n,t){return this.keys[n]=t,this}),n.on("blur",h),n.on("input",v),n.on("key.down",k),n.on("key.up",b),n[m]=o,n},detach:function(){var n=this;return n[m].pull(),n.off("blur",h),n.off("input",v),n.off("key.down",k),n.off("key.up",b),delete n[m],n},name:"TextEditor.Key"};return g}));
26
+ !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):((n="undefined"!=typeof globalThis?globalThis:n||self).TextEditor=n.TextEditor||{},n.TextEditor.Key=t())}(this,(function(){"use strict";var n=function(n){return Array.isArray(n)},t=function(n){return"function"==typeof n},e=function(n,t){return void 0===t&&(t=!0),"object"==typeof n&&(!t||function(n,t){return n&&r(t)&&n instanceof t}(n,Object))},r=function(n){return function(n){return void 0!==n}(n)&&!function(n){return null===n}(n)},o=function(n){return"string"==typeof n},u=function(){for(var t=arguments.length,o=Array(t),f=0;f<t;f++)o[f]=arguments[f];for(var c,s=o.shift(),a=0,l=i(o);a<l;++a)for(var y in o[a])if(r(s[y]))if(n(s[y])&&n(o[a][y])){s[y]=[].concat(s[y]);for(var d=0,p=i(o[a][y]);d<p;++d)c=o[a][y][d],-1===s[y].indexOf(c)&&s[y].push(o[a][y][d])}else e(s[y])&&e(o[a][y])?s[y]=u({},s[y],o[a][y]):s[y]=o[a][y];else s[y]=o[a][y];return s},i=function(n){return n.length};function f(n){var t=this;return t.commands={},t.key=null,t.keys={},t.queue={},t.self=n||t,t}var c=f.prototype;c.command=function(n){var t=this;if(o(n))return n===t.toString();var e=t.keys[t.toString()];return!!r(e)&&e},c.fire=function(e){var u,i,f=this,c=f.self||f;if(t(e))u=e.call(c),i=!0;else if(o(e)&&(e=f.commands[e]))u=e.call(c),i=!0;else if(n(e)){var s=e[1]||[];(e=f.commands[e[0]])&&(u=e.apply(c,s),i=!0)}return i?!r(u)||u:null},c.pull=function(n){var t=this;return t.key=null,r(n)?(delete t.queue[n],t):(t.queue={},t)},c.push=function(n){var t=this;return t.queue[t.key=n]=1,t},c.toString=function(){return(n=this.queue,Object.keys(n)).join("-");var n},Object.defineProperty(f,"name",{value:"Key"});var s,a,l,y=(s=function(n){return n.pull()},a=1e3,function(){var n=arguments,t=this;l&&clearTimeout(l),l=setTimeout((function(){return s.apply(t,n)}),a)}),d=new WeakMap;function p(n){return d.get(n)||null}function m(n){var t=p(this);this._event=n,t.pull()}function h(n){m.call(this,n)}function v(n){var t,e,r=p(this);r.push(n.key),this._event=n,(t=r.command())&&(!1===(e=r.fire(t))?(function(n){n&&n.preventDefault()}(n),function(n){n&&n.stopPropagation()}(n)):null===e&&console.warn("Unknown command: `"+t+"`")),y(r)}function k(n){var t=p(this);this._event=n,t.pull(n.key)}var g={attach:function(){var n,e,o=this,i=o.constructor.prototype,c=new f(o);return o.commands=u(o.commands=c.commands,o.state.commands||{}),o.keys=u(o.keys=c.keys,o.state.keys||{}),!t(i.command)&&(i.command=function(n,t){return this.commands[n]=t,this}),!t(i.k)&&(i.k=function(n){var t,e=p(this)+"";return r(n)&&"-"!==n&&(t=""!==e?e.split(/-(?!$)/):[],!1!==n)?t.join(n):!1===n?"-"===e?[e]:t:e}),!t(i.key)&&(i.key=function(n,t){return this.keys[n]=t,this}),o.on("blur",m),o.on("input",h),o.on("key.down",v),o.on("key.up",k),n=o,e=c,d.set(n,e),o},detach:function(){var n,t=this;return p(t).pull(),t.off("blur",m),t.off("input",h),t.off("key.down",v),t.off("key.up",k),n=t,d.delete(n),t},name:"TextEditor.Key"};return g}));
package/index.mjs CHANGED
@@ -6,13 +6,21 @@ import {offEventDefault, offEventPropagation} from '@taufik-nurrohman/event';
6
6
 
7
7
  const bounce = debounce(map => map.pull(), 1000);
8
8
  const name = 'TextEditor.Key';
9
+ const references = new WeakMap;
9
10
 
10
- const id = '_Key';
11
+ function getReference(key) {
12
+ return references.get(key) || null;
13
+ }
14
+
15
+ function letReference(key) {
16
+ return references.delete(key);
17
+ }
11
18
 
12
19
  function onBlur(e) {
13
- let $ = this;
20
+ let $ = this,
21
+ map = getReference($);
14
22
  $._event = e;
15
- $[id].pull(); // Reset all key(s)
23
+ map.pull(); // Reset all key(s)
16
24
  }
17
25
 
18
26
  function onInput(e) {
@@ -21,7 +29,7 @@ function onInput(e) {
21
29
 
22
30
  function onKeyDown(e) {
23
31
  let $ = this;
24
- let command, map = $[id], v;
32
+ let command, map = getReference($), v;
25
33
  map.push(e.key); // Add current key to the queue
26
34
  $._event = e;
27
35
  if (command = map.command()) {
@@ -37,9 +45,14 @@ function onKeyDown(e) {
37
45
  }
38
46
 
39
47
  function onKeyUp(e) {
40
- let $ = this;
48
+ let $ = this,
49
+ map = getReference($);
41
50
  $._event = e;
42
- $[id].pull(e.key); // Reset current key
51
+ map.pull(e.key); // Reset current key
52
+ }
53
+
54
+ function setReference(key, value) {
55
+ return references.set(key, value);
43
56
  }
44
57
 
45
58
  function attach() {
@@ -54,8 +67,8 @@ function attach() {
54
67
  });
55
68
  !isFunction($$.k) && ($$.k = function (join) {
56
69
  let $ = this,
57
- key = $[id] + "",
58
- keys;
70
+ map = getReference($),
71
+ key = map + "", keys;
59
72
  if (isSet(join) && '-' !== join) {
60
73
  keys = "" !== key ? key.split(/-(?!$)/) : [];
61
74
  if (false !== join) {
@@ -78,18 +91,18 @@ function attach() {
78
91
  $.on('input', onInput);
79
92
  $.on('key.down', onKeyDown);
80
93
  $.on('key.up', onKeyUp);
81
- return ($[id] = map), $;
94
+ return setReference($, map), $;
82
95
  }
83
96
 
84
97
  function detach() {
85
- let $ = this;
86
- $[id].pull();
98
+ let $ = this,
99
+ map = getReference($);
100
+ map.pull();
87
101
  $.off('blur', onBlur);
88
102
  $.off('input', onInput);
89
103
  $.off('key.down', onKeyDown);
90
104
  $.off('key.up', onKeyUp);
91
- delete $[id];
92
- return $;
105
+ return letReference($), $;
93
106
  }
94
107
 
95
108
  export default {attach, detach, name};
package/package.json CHANGED
@@ -46,5 +46,5 @@
46
46
  "scripts": {
47
47
  "pack": "pack --clean=false --from=.factory --js-format=umd --js-name=TextEditor.Key --js-top='%(js.license)' --mjs=true --to=."
48
48
  },
49
- "version": "1.0.7"
49
+ "version": "1.0.8"
50
50
  }