tom-select-rails 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +26 -0
- data/Rakefile +3 -0
- data/lib/tom-select-rails/engine.rb +8 -0
- data/lib/tom-select-rails/version.rb +5 -0
- data/lib/tom-select-rails.rb +7 -0
- data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.complete.js +4887 -0
- data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.complete.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.js +4085 -0
- data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.popular.js +4337 -0
- data/vendor/assets/javascripts/tom-select-rails/cjs/tom-select.popular.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/cjs/utils.js +196 -0
- data/vendor/assets/javascripts/tom-select-rails/cjs/utils.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/caret_position/plugin.js +162 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/caret_position/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/change_listener/plugin.js +50 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/change_listener/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/checkbox_options/plugin.js +172 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/checkbox_options/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/clear_button/plugin.js +91 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/clear_button/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/drag_drop/plugin.js +62 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/drag_drop/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_header/plugin.js +118 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_header/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_input/plugin.js +230 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/dropdown_input/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/input_autogrow/plugin.js +80 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/input_autogrow/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_active_items/plugin.js +25 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_active_items/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_backspace_delete/plugin.js +32 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/no_backspace_delete/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/optgroup_columns/plugin.js +108 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/optgroup_columns/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/remove_button/plugin.js +146 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/remove_button/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/restore_on_backspace/plugin.js +43 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/restore_on_backspace/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/virtual_scroll/plugin.js +261 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/plugins/virtual_scroll/plugin.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.complete.js +4885 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.complete.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.js +4083 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.popular.js +4335 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/tom-select.popular.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/utils.js +181 -0
- data/vendor/assets/javascripts/tom-select-rails/esm/utils.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/caret_position.js +170 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/caret_position.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/change_listener.js +58 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/change_listener.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/checkbox_options.js +180 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/checkbox_options.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/clear_button.js +99 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/clear_button.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/drag_drop.js +70 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/drag_drop.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_header.js +126 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_header.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_input.js +238 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/dropdown_input.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/input_autogrow.js +88 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/input_autogrow.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_active_items.js +33 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_active_items.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_backspace_delete.js +40 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/no_backspace_delete.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/optgroup_columns.js +116 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/optgroup_columns.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/remove_button.js +154 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/remove_button.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/restore_on_backspace.js +51 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/restore_on_backspace.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/virtual_scroll.js +269 -0
- data/vendor/assets/javascripts/tom-select-rails/js/plugins/virtual_scroll.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.js +4092 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.min.js +303 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.base.min.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.js +4894 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.min.js +362 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.complete.min.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.js +4344 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.min.js +324 -0
- data/vendor/assets/javascripts/tom-select-rails/js/tom-select.popular.min.js.map +1 -0
- data/vendor/assets/javascripts/tom-select-rails/types/constants.d.ts +12 -0
- data/vendor/assets/javascripts/tom-select-rails/types/contrib/highlight.d.ts +13 -0
- data/vendor/assets/javascripts/tom-select-rails/types/contrib/microevent.d.ts +20 -0
- data/vendor/assets/javascripts/tom-select-rails/types/contrib/microplugin.d.ts +71 -0
- data/vendor/assets/javascripts/tom-select-rails/types/defaults.d.ts +51 -0
- data/vendor/assets/javascripts/tom-select-rails/types/getSettings.d.ts +3 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/caret_position/plugin.d.ts +16 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/change_listener/plugin.d.ts +16 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/checkbox_options/plugin.d.ts +16 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/clear_button/plugin.d.ts +17 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/clear_button/types.d.ts +5 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/drag_drop/plugin.d.ts +16 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/dropdown_header/plugin.d.ts +17 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/dropdown_header/types.d.ts +8 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/dropdown_input/plugin.d.ts +16 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/input_autogrow/plugin.d.ts +15 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/no_active_items/plugin.d.ts +15 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/no_backspace_delete/plugin.d.ts +15 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/optgroup_columns/plugin.d.ts +16 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/remove_button/plugin.d.ts +17 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/remove_button/types.d.ts +6 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/restore_on_backspace/plugin.d.ts +21 -0
- data/vendor/assets/javascripts/tom-select-rails/types/plugins/virtual_scroll/plugin.d.ts +16 -0
- data/vendor/assets/javascripts/tom-select-rails/types/tom-select.complete.d.ts +2 -0
- data/vendor/assets/javascripts/tom-select-rails/types/tom-select.d.ts +579 -0
- data/vendor/assets/javascripts/tom-select-rails/types/tom-select.popular.d.ts +2 -0
- data/vendor/assets/javascripts/tom-select-rails/types/types/core.d.ts +44 -0
- data/vendor/assets/javascripts/tom-select-rails/types/types/index.d.ts +2 -0
- data/vendor/assets/javascripts/tom-select-rails/types/types/settings.d.ts +81 -0
- data/vendor/assets/javascripts/tom-select-rails/types/utils.d.ts +76 -0
- data/vendor/assets/javascripts/tom-select-rails/types/vanilla.d.ts +76 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.css +548 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.css.map +1 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.min.css +2 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap4.min.css.map +1 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.css +592 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.css.map +1 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.min.css +2 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.bootstrap5.min.css.map +1 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.css +391 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.css.map +1 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.css +476 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.css.map +1 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.min.css +2 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.default.min.css.map +1 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.min.css +2 -0
- data/vendor/assets/stylesheets/tom-select-rails/css/tom-select.min.css.map +1 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/_dropdown.scss +104 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/_items.scss +115 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/checkbox_options.scss +5 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/clear_button.scss +30 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/drag_drop.scss +16 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/dropdown_header.scss +23 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/dropdown_input.scss +47 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/input_autogrow.scss +18 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/optgroup_columns.scss +23 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/plugins/remove_button.scss +44 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.bootstrap4.scss +219 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.bootstrap5.scss +274 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.default.scss +87 -0
- data/vendor/assets/stylesheets/tom-select-rails/scss/tom-select.scss +175 -0
- metadata +195 -0
@@ -0,0 +1,116 @@
|
|
1
|
+
/**
|
2
|
+
* Tom Select v2.0.3
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
*/
|
5
|
+
|
6
|
+
(function (global, factory) {
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
8
|
+
typeof define === 'function' && define.amd ? define(factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.optgroup_columns = factory());
|
10
|
+
})(this, (function () { 'use strict';
|
11
|
+
|
12
|
+
const KEY_LEFT = 37;
|
13
|
+
const KEY_RIGHT = 39;
|
14
|
+
typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);
|
15
|
+
// ctrl key or apple key for ma
|
16
|
+
|
17
|
+
// https://github.com/andrewrk/node-diacritics/blob/master/index.js
|
18
|
+
const latin_convert = {
|
19
|
+
'æ': 'ae',
|
20
|
+
'ⱥ': 'a',
|
21
|
+
'ø': 'o'
|
22
|
+
};
|
23
|
+
new RegExp(Object.keys(latin_convert).join('|'), 'g');
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Get the closest node to the evt.target matching the selector
|
27
|
+
* Stops at wrapper
|
28
|
+
*
|
29
|
+
*/
|
30
|
+
|
31
|
+
const parentMatch = (target, selector, wrapper) => {
|
32
|
+
if (wrapper && !wrapper.contains(target)) {
|
33
|
+
return;
|
34
|
+
}
|
35
|
+
|
36
|
+
while (target && target.matches) {
|
37
|
+
if (target.matches(selector)) {
|
38
|
+
return target;
|
39
|
+
}
|
40
|
+
|
41
|
+
target = target.parentNode;
|
42
|
+
}
|
43
|
+
};
|
44
|
+
/**
|
45
|
+
* Get the index of an element amongst sibling nodes of the same type
|
46
|
+
*
|
47
|
+
*/
|
48
|
+
|
49
|
+
const nodeIndex = (el, amongst) => {
|
50
|
+
if (!el) return -1;
|
51
|
+
amongst = amongst || el.nodeName;
|
52
|
+
var i = 0;
|
53
|
+
|
54
|
+
while (el = el.previousElementSibling) {
|
55
|
+
if (el.matches(amongst)) {
|
56
|
+
i++;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
return i;
|
61
|
+
};
|
62
|
+
|
63
|
+
/**
|
64
|
+
* Plugin: "optgroup_columns" (Tom Select.js)
|
65
|
+
* Copyright (c) contributors
|
66
|
+
*
|
67
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
|
68
|
+
* file except in compliance with the License. You may obtain a copy of the License at:
|
69
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
70
|
+
*
|
71
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
72
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
73
|
+
* ANY KIND, either express or implied. See the License for the specific language
|
74
|
+
* governing permissions and limitations under the License.
|
75
|
+
*
|
76
|
+
*/
|
77
|
+
function plugin () {
|
78
|
+
var self = this;
|
79
|
+
var orig_keydown = self.onKeyDown;
|
80
|
+
self.hook('instead', 'onKeyDown', evt => {
|
81
|
+
var index, option, options, optgroup;
|
82
|
+
|
83
|
+
if (!self.isOpen || !(evt.keyCode === KEY_LEFT || evt.keyCode === KEY_RIGHT)) {
|
84
|
+
return orig_keydown.call(self, evt);
|
85
|
+
}
|
86
|
+
|
87
|
+
optgroup = parentMatch(self.activeOption, '[data-group]');
|
88
|
+
index = nodeIndex(self.activeOption, '[data-selectable]');
|
89
|
+
|
90
|
+
if (!optgroup) {
|
91
|
+
return;
|
92
|
+
}
|
93
|
+
|
94
|
+
if (evt.keyCode === KEY_LEFT) {
|
95
|
+
optgroup = optgroup.previousSibling;
|
96
|
+
} else {
|
97
|
+
optgroup = optgroup.nextSibling;
|
98
|
+
}
|
99
|
+
|
100
|
+
if (!optgroup) {
|
101
|
+
return;
|
102
|
+
}
|
103
|
+
|
104
|
+
options = optgroup.querySelectorAll('[data-selectable]');
|
105
|
+
option = options[Math.min(options.length - 1, index)];
|
106
|
+
|
107
|
+
if (option) {
|
108
|
+
self.setActiveOption(option);
|
109
|
+
}
|
110
|
+
});
|
111
|
+
}
|
112
|
+
|
113
|
+
return plugin;
|
114
|
+
|
115
|
+
}));
|
116
|
+
//# sourceMappingURL=optgroup_columns.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"optgroup_columns.js","sources":["../../../src/constants.ts","../../../node_modules/@orchidjs/sifter/lib/diacritics.ts","../../../src/vanilla.ts","../../../src/plugins/optgroup_columns/plugin.ts"],"sourcesContent":["export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n","\ntype TDiacraticList = {[key:string]:string};\n\n// https://github.com/andrewrk/node-diacritics/blob/master/index.js\n\nvar latin_pat:RegExp;\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}]'; // \\u{2bc}\nconst accent_reg = new RegExp(accent_pat,'g');\nvar diacritic_patterns:TDiacraticList;\n\nconst latin_convert:TDiacraticList = {\n\t'æ': 'ae',\n\t'ⱥ': 'a',\n\t'ø': 'o',\n};\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|'),'g');\n\n\nexport const DIACRITICS:TDiacraticList = {\n\t\" \":\" \",\n\t0:\"߀\",\n\tA:\"ⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ\",\n\tAA:\"Ꜳ\",\n\tAE:\"ÆǼǢ\",\n\tAO:\"Ꜵ\",\n\tAU:\"Ꜷ\",\n\tAV:\"ꜸꜺ\",\n\tAY:\"Ꜽ\",\n\tB:\"ⒷBḂḄḆɃƁ\",\n\tC:\"ⒸCꜾḈĆCĈĊČÇƇȻ\",\n\tD:\"ⒹDḊĎḌḐḒḎĐƊƉᴅꝹ\",\n\tDh:\"Ð\",\n\tDZ:\"DZDŽ\",\n\tDz:\"DzDž\",\n\tE:\"ɛⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚƐƎᴇ\",\n\tF:\"ꝼⒻFḞƑꝻ\",\n\tG:\"ⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾɢ\",\n\tH:\"ⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ\",\n\tI:\"ⒾIÌÍÎĨĪĬİÏḮỈǏȈȊỊĮḬƗ\",\n\tJ:\"ⒿJĴɈȷ\",\n\tK:\"ⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ\",\n\tL:\"ⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ\",\n\tLJ:\"LJ\",\n\tLj:\"Lj\",\n\tM:\"ⓂMḾṀṂⱮƜϻ\",\n\tN:\"ꞤȠⓃNǸŃÑṄŇṆŅṊṈƝꞐᴎ\",\n\tNJ:\"NJ\",\n\tNj:\"Nj\",\n\tO:\"ⓄOÒÓÔỒỐỖỔÕṌȬṎŌṐṒŎȮȰÖȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬØǾƆƟꝊꝌ\",\n\tOE:\"Œ\",\n\tOI:\"Ƣ\",\n\tOO:\"Ꝏ\",\n\tOU:\"Ȣ\",\n\tP:\"ⓅPṔṖƤⱣꝐꝒꝔ\",\n\tQ:\"ⓆQꝖꝘɊ\",\n\tR:\"ⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ\",\n\tS:\"ⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ\",\n\tT:\"ⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ\",\n\tTh:\"Þ\",\n\tTZ:\"Ꜩ\",\n\tU:\"ⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ\",\n\tV:\"ⓋVṼṾƲꝞɅ\",\n\tVY:\"Ꝡ\",\n\tW:\"ⓌWẀẂŴẆẄẈⱲ\",\n\tX:\"ⓍXẊẌ\",\n\tY:\"ⓎYỲÝŶỸȲẎŸỶỴƳɎỾ\",\n\tZ:\"ⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ\",\n\ta:\"ⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑ\",\n\taa:\"ꜳ\",\n\tae:\"æǽǣ\",\n\tao:\"ꜵ\",\n\tau:\"ꜷ\",\n\tav:\"ꜹꜻ\",\n\tay:\"ꜽ\",\n\tb:\"ⓑbḃḅḇƀƃɓƂ\",\n\tc:\"cⓒćĉċčçḉƈȼꜿↄ\",\n\td:\"ⓓdḋďḍḑḓḏđƌɖɗƋᏧԁꞪ\",\n\tdh:\"ð\",\n\tdz:\"dzdž\",\n\te:\"ⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇǝ\",\n\tf:\"ⓕfḟƒ\",\n\tff:\"ff\",\n\tfi:\"fi\",\n\tfl:\"fl\",\n\tffi:\"ffi\",\n\tffl:\"ffl\",\n\tg:\"ⓖgǵĝḡğġǧģǥɠꞡꝿᵹ\",\n\th:\"ⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ\",\n\thv:\"ƕ\",\n\ti:\"ⓘiìíîĩīĭïḯỉǐȉȋịįḭɨı\",\n\tj:\"ⓙjĵǰɉ\",\n\tk:\"ⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ\",\n\tl:\"ⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇɭ\",\n\tlj:\"lj\",\n\tm:\"ⓜmḿṁṃɱɯ\",\n\tn:\"ⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥлԉ\",\n\tnj:\"nj\",\n\to:\"ⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿꝋꝍɵɔᴑ\",\n\toe:\"œ\",\n\toi:\"ƣ\",\n\too:\"ꝏ\",\n\tou:\"ȣ\",\n\tp:\"ⓟpṕṗƥᵽꝑꝓꝕρ\",\n\tq:\"ⓠqɋꝗꝙ\",\n\tr:\"ⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ\",\n\ts:\"ⓢsśṥŝṡšṧṣṩșşȿꞩꞅẛʂ\",\n\tss:\"ß\",\n\tt:\"ⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ\",\n\tth:\"þ\",\n\ttz:\"ꜩ\",\n\tu:\"ⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ\",\n\tv:\"ⓥvṽṿʋꝟʌ\",\n\tvy:\"ꝡ\",\n\tw:\"ⓦwẁẃŵẇẅẘẉⱳ\",\n\tx:\"ⓧxẋẍ\",\n\ty:\"ⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ\",\n\tz:\"ⓩzźẑżžẓẕƶȥɀⱬꝣ\"\n}\n\n/**\n * code points generated from toCodePoints();\n * removed 65339 to 65345\n */\nexport const code_points = [\n\t[ 67, 67 ],\n\t[ 160, 160 ],\n\t[ 192, 438 ],\n\t[ 452, 652 ],\n\t[ 961, 961 ],\n\t[ 1019, 1019 ],\n\t[ 1083, 1083 ],\n\t[ 1281, 1289 ],\n\t[ 1984, 1984 ],\n\t[ 5095, 5095 ],\n\t[ 7429, 7441 ],\n\t[ 7545, 7549 ],\n\t[ 7680, 7935 ],\n\t[ 8580, 8580 ],\n\t[ 9398, 9449 ],\n\t[ 11360, 11391 ],\n\t[ 42792, 42793 ],\n\t[ 42802, 42851 ],\n\t[ 42873, 42897 ],\n\t[ 42912, 42922 ],\n\t[ 64256, 64260 ],\n\t[ 65313, 65338 ],\n\t[ 65345, 65370 ]\n];\n\n/**\n * Remove accents\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n *\n */\nexport const asciifold = (str:string):string => {\n\treturn str\n\t\t.normalize('NFKD')\n\t\t.replace(accent_reg, '')\n\t\t.toLowerCase()\n\t\t.replace(convert_pat,function(foreignletter) {\n\t\t\treturn latin_convert[foreignletter];\n\t\t});\n};\n\n\n/**\n * Convert list of diacritics to array of code points\n *\n */\n// @ts-ignore\nfunction toCodePoints(tolerance=8){\n\tvar char_codes:number[] = [];\n\n\tfor( let letter in DIACRITICS ){\n\t\tlet _diacritics = DIACRITICS[letter];\n\t\tfor( let n = 0; n < _diacritics.length; n++ ){\n\t\t\tvar code_point = _diacritics.codePointAt(n);\n\t\t\tif( code_point ) char_codes.push( code_point );\n\t\t}\n\t}\n\n\t//https://stackoverflow.com/questions/40431572/is-there-a-simple-way-to-group-js-array-values-by-range\n\tchar_codes.sort((a, b) => a - b);\n\tvar accumulator: number[][] = [];\n\tchar_codes.reduce(function (accumulator, currentValue, index, source) {\n\n\t\tif( !index ){\n\t\t\taccumulator.push( [currentValue,currentValue] );\n\n\t\t}else if( currentValue - source[index - 1] > tolerance ){\n\t\t\taccumulator.push( [currentValue,currentValue] );\n\n\t\t}else{\n\n\t\t\tlet range = accumulator.pop();\n\t\t\tif( range ){\n\t\t\t\taccumulator.push( [range[0],currentValue]);\n\t\t\t}\n\t\t}\n\n\t\treturn accumulator;\n\t}, accumulator);\n\n}\n\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n *\n */\nexport const arrayToPattern = (chars:string[],glue:string='|'):string =>{\n\t\n\tif( chars.length == 1 ){\n\t\treturn chars[0];\n\t}\n\t\n\tvar longest = 1;\n\tchars.forEach((a)=>{longest = Math.max(longest,a.length)});\n\n\tif( longest == 1 ){\n\t\treturn '['+chars.join('')+']';\n\t}\n\n\treturn '(?:'+chars.join(glue)+')';\t\n};\n\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n *\n */\nexport const allSubstrings = (input:string):string[][] => {\n\n if( input.length === 1) return [[input]];\n\n var result:string[][] = [];\n allSubstrings(input.substring(1)).forEach(function(subresult) {\n var tmp = subresult.slice(0);\n tmp[0] = input.charAt(0) + tmp[0];\n result.push(tmp);\n\n tmp = subresult.slice(0);\n tmp.unshift(input.charAt(0));\n result.push(tmp);\n });\n \n return result;\n}\n\n/**\n * Generate a list of diacritics from the list of code points\n *\n */\nexport const generateDiacritics = ():TDiacraticList => {\t\n\n\tvar diacritics:{[key:string]:string[]} = {};\n\tcode_points.forEach((code_range)=>{\n\n\t\tfor(let i = code_range[0]; i <= code_range[1]; i++){\n\t\t\t\n\t\t\tlet diacritic\t= String.fromCharCode(i);\n\t\t\tlet\tlatin\t\t= asciifold(diacritic);\n\n\t\t\tif( latin == diacritic.toLowerCase() ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( !(latin in diacritics) ){\n\t\t\t\tdiacritics[latin] = [latin];\n\t\t\t}\n\t\t\t\n\t\t\tvar patt = new RegExp( arrayToPattern(diacritics[latin]),'iu');\n\t\t\tif( diacritic.match(patt) ){\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tdiacritics[latin].push(diacritic);\n\t\t}\n\t});\n\t\t\n\tvar latin_chars = Object.keys(diacritics);\n\t\n\t\n\t// latin character pattern\n\t// match longer substrings first\n\tlatin_chars\t\t= latin_chars.sort((a, b) => b.length - a.length );\n\tlatin_pat\t\t= new RegExp('('+ arrayToPattern(latin_chars) + accent_pat + '*)','g');\n\t\n\t\n\t// build diacritic patterns\n\t// ae needs: \n\t//\t(?:(?:ae|Æ|Ǽ|Ǣ)|(?:A|Ⓐ|A...)(?:E|ɛ|Ⓔ...))\n\tvar diacritic_patterns:TDiacraticList = {};\n\tlatin_chars.sort((a,b) => a.length -b.length).forEach((latin)=>{\n\t\t\n\t\tvar substrings\t= allSubstrings(latin);\n\t\tvar pattern = substrings.map((sub_pat)=>{\n\t\t\t\n\t\t\tsub_pat = sub_pat.map((l)=>{\n\t\t\t\tif( diacritics.hasOwnProperty(l) ){\n\t\t\t\t\treturn arrayToPattern(diacritics[l]);\n\t\t\t\t}\n\t\t\t\treturn l;\n\t\t\t});\n\t\t\t\n\t\t\treturn arrayToPattern(sub_pat,'');\n\t\t});\n\t\t\n\t\tdiacritic_patterns[latin] = arrayToPattern(pattern);\t\t\n\t});\n\t\t\t\n\treturn diacritic_patterns;\n}\n\n/**\n * Expand a regular expression pattern to include diacritics\n * \teg /a/ becomes /aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑAⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ/\n *\n */\nexport const diacriticRegexPoints = (regex:string):string => {\n\n\tif( diacritic_patterns === undefined ){\n\t\tdiacritic_patterns = generateDiacritics();\n\t}\n\t\n\tconst decomposed\t\t= regex.normalize('NFKD').toLowerCase();\n\t\n\treturn decomposed.split(latin_pat).map((part:string)=>{\n\t\t\n\t\tif( part == '' ){\n\t\t\treturn '';\n\t\t}\n\t\t\n\t\t// \"ffl\" or \"ffl\"\n\t\tconst no_accent = asciifold(part);\t\t\t\t\n\t\tif( diacritic_patterns.hasOwnProperty(no_accent) ){\n\t\t\treturn diacritic_patterns[no_accent];\n\t\t}\n\t\t\n\t\t// 'أهلا' (\\u{623}\\u{647}\\u{644}\\u{627}) or 'أهلا' (\\u{627}\\u{654}\\u{647}\\u{644}\\u{627})\n\t\tconst composed_part = part.normalize('NFC');\n\t\tif( composed_part != part ){\n\t\t\treturn arrayToPattern([part,composed_part]);\n\t\t}\n\t\t\t\t\n\t\treturn part;\n\t}).join('');\n\t\n}\n","\nimport { iterate } from '@orchidjs/sifter/lib/utils';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tlet div = document.createElement('div');\n\t\tdiv.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn div.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n","/**\n * Plugin: \"optgroup_columns\" (Tom Select.js)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { parentMatch, nodeIndex } from '../../vanilla';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\tvar orig_keydown = self.onKeyDown;\n\n\tself.hook('instead','onKeyDown',(evt:KeyboardEvent)=>{\n\t\tvar index, option, options, optgroup;\n\n\t\tif( !self.isOpen || !(evt.keyCode === constants.KEY_LEFT || evt.keyCode === constants.KEY_RIGHT)) {\n\t\t\treturn orig_keydown.call(self,evt);\n\t\t}\n\n\t\toptgroup\t\t\t= parentMatch(self.activeOption,'[data-group]');\n\t\tindex\t\t\t\t= nodeIndex(self.activeOption,'[data-selectable]');\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( evt.keyCode === constants.KEY_LEFT ){\n\t\t\toptgroup = optgroup.previousSibling;\n\t\t} else {\n\t\t\toptgroup = optgroup.nextSibling;\n\t\t}\n\n\t\tif( !optgroup ){\n\t\t\treturn;\n\t\t}\n\n\t\toptions\t\t\t\t= (<HTMLOptGroupElement>optgroup).querySelectorAll('[data-selectable]');\n\t\toption\t\t\t\t= options[ Math.min(options.length - 1, index) ] as HTMLElement;\n\n\t\tif( option ){\n\t\t\tself.setActiveOption(option);\n\t\t}\n\n\t});\n\n};\n"],"names":["KEY_LEFT","KEY_RIGHT","navigator","test","userAgent","latin_convert","RegExp","Object","keys","join","parentMatch","target","selector","wrapper","contains","matches","parentNode","nodeIndex","el","amongst","nodeName","i","previousElementSibling","self","orig_keydown","onKeyDown","hook","evt","index","option","options","optgroup","isOpen","keyCode","constants","call","activeOption","previousSibling","nextSibling","querySelectorAll","Math","min","length","setActiveOption"],"mappings":"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"}
|
@@ -0,0 +1,154 @@
|
|
1
|
+
/**
|
2
|
+
* Tom Select v2.0.3
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
*/
|
5
|
+
|
6
|
+
(function (global, factory) {
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
8
|
+
typeof define === 'function' && define.amd ? define(factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.remove_button = factory());
|
10
|
+
})(this, (function () { 'use strict';
|
11
|
+
|
12
|
+
// https://github.com/andrewrk/node-diacritics/blob/master/index.js
|
13
|
+
const latin_convert = {
|
14
|
+
'æ': 'ae',
|
15
|
+
'ⱥ': 'a',
|
16
|
+
'ø': 'o'
|
17
|
+
};
|
18
|
+
new RegExp(Object.keys(latin_convert).join('|'), 'g');
|
19
|
+
|
20
|
+
/**
|
21
|
+
* Return a dom element from either a dom query string, jQuery object, a dom element or html string
|
22
|
+
* https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518
|
23
|
+
*
|
24
|
+
* param query should be {}
|
25
|
+
*/
|
26
|
+
|
27
|
+
const getDom = query => {
|
28
|
+
if (query.jquery) {
|
29
|
+
return query[0];
|
30
|
+
}
|
31
|
+
|
32
|
+
if (query instanceof HTMLElement) {
|
33
|
+
return query;
|
34
|
+
}
|
35
|
+
|
36
|
+
if (isHtmlString(query)) {
|
37
|
+
let div = document.createElement('div');
|
38
|
+
div.innerHTML = query.trim(); // Never return a text node of whitespace as the result
|
39
|
+
|
40
|
+
return div.firstChild;
|
41
|
+
}
|
42
|
+
|
43
|
+
return document.querySelector(query);
|
44
|
+
};
|
45
|
+
const isHtmlString = arg => {
|
46
|
+
if (typeof arg === 'string' && arg.indexOf('<') > -1) {
|
47
|
+
return true;
|
48
|
+
}
|
49
|
+
|
50
|
+
return false;
|
51
|
+
};
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Converts a scalar to its best string representation
|
55
|
+
* for hash keys and HTML attribute values.
|
56
|
+
*
|
57
|
+
* Transformations:
|
58
|
+
* 'str' -> 'str'
|
59
|
+
* null -> ''
|
60
|
+
* undefined -> ''
|
61
|
+
* true -> '1'
|
62
|
+
* false -> '0'
|
63
|
+
* 0 -> '0'
|
64
|
+
* 1 -> '1'
|
65
|
+
*
|
66
|
+
*/
|
67
|
+
/**
|
68
|
+
* Escapes a string for use within HTML.
|
69
|
+
*
|
70
|
+
*/
|
71
|
+
|
72
|
+
const escape_html = str => {
|
73
|
+
return (str + '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
74
|
+
};
|
75
|
+
/**
|
76
|
+
* Prevent default
|
77
|
+
*
|
78
|
+
*/
|
79
|
+
|
80
|
+
const preventDefault = (evt, stop = false) => {
|
81
|
+
if (evt) {
|
82
|
+
evt.preventDefault();
|
83
|
+
|
84
|
+
if (stop) {
|
85
|
+
evt.stopPropagation();
|
86
|
+
}
|
87
|
+
}
|
88
|
+
};
|
89
|
+
/**
|
90
|
+
* Prevent default
|
91
|
+
*
|
92
|
+
*/
|
93
|
+
|
94
|
+
const addEvent = (target, type, callback, options) => {
|
95
|
+
target.addEventListener(type, callback, options);
|
96
|
+
};
|
97
|
+
|
98
|
+
/**
|
99
|
+
* Plugin: "remove_button" (Tom Select)
|
100
|
+
* Copyright (c) contributors
|
101
|
+
*
|
102
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
|
103
|
+
* file except in compliance with the License. You may obtain a copy of the License at:
|
104
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
105
|
+
*
|
106
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
107
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
108
|
+
* ANY KIND, either express or implied. See the License for the specific language
|
109
|
+
* governing permissions and limitations under the License.
|
110
|
+
*
|
111
|
+
*/
|
112
|
+
function plugin (userOptions) {
|
113
|
+
const options = Object.assign({
|
114
|
+
label: '×',
|
115
|
+
title: 'Remove',
|
116
|
+
className: 'remove',
|
117
|
+
append: true
|
118
|
+
}, userOptions); //options.className = 'remove-single';
|
119
|
+
|
120
|
+
var self = this; // override the render method to add remove button to each item
|
121
|
+
|
122
|
+
if (!options.append) {
|
123
|
+
return;
|
124
|
+
}
|
125
|
+
|
126
|
+
var html = '<a href="javascript:void(0)" class="' + options.className + '" tabindex="-1" title="' + escape_html(options.title) + '">' + options.label + '</a>';
|
127
|
+
self.hook('after', 'setupTemplates', () => {
|
128
|
+
var orig_render_item = self.settings.render.item;
|
129
|
+
|
130
|
+
self.settings.render.item = (data, escape) => {
|
131
|
+
var rendered = getDom(orig_render_item.call(self, data, escape));
|
132
|
+
var close_button = getDom(html);
|
133
|
+
rendered.appendChild(close_button);
|
134
|
+
addEvent(close_button, 'mousedown', evt => {
|
135
|
+
preventDefault(evt, true);
|
136
|
+
});
|
137
|
+
addEvent(close_button, 'click', evt => {
|
138
|
+
// propagating will trigger the dropdown to show for single mode
|
139
|
+
preventDefault(evt, true);
|
140
|
+
if (self.isLocked) return;
|
141
|
+
var value = rendered.dataset.value;
|
142
|
+
self.removeItem(value);
|
143
|
+
self.refreshOptions(false);
|
144
|
+
self.inputState();
|
145
|
+
});
|
146
|
+
return rendered;
|
147
|
+
};
|
148
|
+
});
|
149
|
+
}
|
150
|
+
|
151
|
+
return plugin;
|
152
|
+
|
153
|
+
}));
|
154
|
+
//# sourceMappingURL=remove_button.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"remove_button.js","sources":["../../../node_modules/@orchidjs/sifter/lib/diacritics.ts","../../../src/vanilla.ts","../../../src/utils.ts","../../../src/plugins/remove_button/plugin.ts"],"sourcesContent":["\ntype TDiacraticList = {[key:string]:string};\n\n// https://github.com/andrewrk/node-diacritics/blob/master/index.js\n\nvar latin_pat:RegExp;\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}]'; // \\u{2bc}\nconst accent_reg = new RegExp(accent_pat,'g');\nvar diacritic_patterns:TDiacraticList;\n\nconst latin_convert:TDiacraticList = {\n\t'æ': 'ae',\n\t'ⱥ': 'a',\n\t'ø': 'o',\n};\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|'),'g');\n\n\nexport const DIACRITICS:TDiacraticList = {\n\t\" \":\" \",\n\t0:\"߀\",\n\tA:\"ⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ\",\n\tAA:\"Ꜳ\",\n\tAE:\"ÆǼǢ\",\n\tAO:\"Ꜵ\",\n\tAU:\"Ꜷ\",\n\tAV:\"ꜸꜺ\",\n\tAY:\"Ꜽ\",\n\tB:\"ⒷBḂḄḆɃƁ\",\n\tC:\"ⒸCꜾḈĆCĈĊČÇƇȻ\",\n\tD:\"ⒹDḊĎḌḐḒḎĐƊƉᴅꝹ\",\n\tDh:\"Ð\",\n\tDZ:\"DZDŽ\",\n\tDz:\"DzDž\",\n\tE:\"ɛⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚƐƎᴇ\",\n\tF:\"ꝼⒻFḞƑꝻ\",\n\tG:\"ⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾɢ\",\n\tH:\"ⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ\",\n\tI:\"ⒾIÌÍÎĨĪĬİÏḮỈǏȈȊỊĮḬƗ\",\n\tJ:\"ⒿJĴɈȷ\",\n\tK:\"ⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ\",\n\tL:\"ⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ\",\n\tLJ:\"LJ\",\n\tLj:\"Lj\",\n\tM:\"ⓂMḾṀṂⱮƜϻ\",\n\tN:\"ꞤȠⓃNǸŃÑṄŇṆŅṊṈƝꞐᴎ\",\n\tNJ:\"NJ\",\n\tNj:\"Nj\",\n\tO:\"ⓄOÒÓÔỒỐỖỔÕṌȬṎŌṐṒŎȮȰÖȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬØǾƆƟꝊꝌ\",\n\tOE:\"Œ\",\n\tOI:\"Ƣ\",\n\tOO:\"Ꝏ\",\n\tOU:\"Ȣ\",\n\tP:\"ⓅPṔṖƤⱣꝐꝒꝔ\",\n\tQ:\"ⓆQꝖꝘɊ\",\n\tR:\"ⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ\",\n\tS:\"ⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ\",\n\tT:\"ⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ\",\n\tTh:\"Þ\",\n\tTZ:\"Ꜩ\",\n\tU:\"ⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ\",\n\tV:\"ⓋVṼṾƲꝞɅ\",\n\tVY:\"Ꝡ\",\n\tW:\"ⓌWẀẂŴẆẄẈⱲ\",\n\tX:\"ⓍXẊẌ\",\n\tY:\"ⓎYỲÝŶỸȲẎŸỶỴƳɎỾ\",\n\tZ:\"ⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ\",\n\ta:\"ⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑ\",\n\taa:\"ꜳ\",\n\tae:\"æǽǣ\",\n\tao:\"ꜵ\",\n\tau:\"ꜷ\",\n\tav:\"ꜹꜻ\",\n\tay:\"ꜽ\",\n\tb:\"ⓑbḃḅḇƀƃɓƂ\",\n\tc:\"cⓒćĉċčçḉƈȼꜿↄ\",\n\td:\"ⓓdḋďḍḑḓḏđƌɖɗƋᏧԁꞪ\",\n\tdh:\"ð\",\n\tdz:\"dzdž\",\n\te:\"ⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇǝ\",\n\tf:\"ⓕfḟƒ\",\n\tff:\"ff\",\n\tfi:\"fi\",\n\tfl:\"fl\",\n\tffi:\"ffi\",\n\tffl:\"ffl\",\n\tg:\"ⓖgǵĝḡğġǧģǥɠꞡꝿᵹ\",\n\th:\"ⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ\",\n\thv:\"ƕ\",\n\ti:\"ⓘiìíîĩīĭïḯỉǐȉȋịįḭɨı\",\n\tj:\"ⓙjĵǰɉ\",\n\tk:\"ⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ\",\n\tl:\"ⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇɭ\",\n\tlj:\"lj\",\n\tm:\"ⓜmḿṁṃɱɯ\",\n\tn:\"ⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥлԉ\",\n\tnj:\"nj\",\n\to:\"ⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿꝋꝍɵɔᴑ\",\n\toe:\"œ\",\n\toi:\"ƣ\",\n\too:\"ꝏ\",\n\tou:\"ȣ\",\n\tp:\"ⓟpṕṗƥᵽꝑꝓꝕρ\",\n\tq:\"ⓠqɋꝗꝙ\",\n\tr:\"ⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ\",\n\ts:\"ⓢsśṥŝṡšṧṣṩșşȿꞩꞅẛʂ\",\n\tss:\"ß\",\n\tt:\"ⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ\",\n\tth:\"þ\",\n\ttz:\"ꜩ\",\n\tu:\"ⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ\",\n\tv:\"ⓥvṽṿʋꝟʌ\",\n\tvy:\"ꝡ\",\n\tw:\"ⓦwẁẃŵẇẅẘẉⱳ\",\n\tx:\"ⓧxẋẍ\",\n\ty:\"ⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ\",\n\tz:\"ⓩzźẑżžẓẕƶȥɀⱬꝣ\"\n}\n\n/**\n * code points generated from toCodePoints();\n * removed 65339 to 65345\n */\nexport const code_points = [\n\t[ 67, 67 ],\n\t[ 160, 160 ],\n\t[ 192, 438 ],\n\t[ 452, 652 ],\n\t[ 961, 961 ],\n\t[ 1019, 1019 ],\n\t[ 1083, 1083 ],\n\t[ 1281, 1289 ],\n\t[ 1984, 1984 ],\n\t[ 5095, 5095 ],\n\t[ 7429, 7441 ],\n\t[ 7545, 7549 ],\n\t[ 7680, 7935 ],\n\t[ 8580, 8580 ],\n\t[ 9398, 9449 ],\n\t[ 11360, 11391 ],\n\t[ 42792, 42793 ],\n\t[ 42802, 42851 ],\n\t[ 42873, 42897 ],\n\t[ 42912, 42922 ],\n\t[ 64256, 64260 ],\n\t[ 65313, 65338 ],\n\t[ 65345, 65370 ]\n];\n\n/**\n * Remove accents\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n *\n */\nexport const asciifold = (str:string):string => {\n\treturn str\n\t\t.normalize('NFKD')\n\t\t.replace(accent_reg, '')\n\t\t.toLowerCase()\n\t\t.replace(convert_pat,function(foreignletter) {\n\t\t\treturn latin_convert[foreignletter];\n\t\t});\n};\n\n\n/**\n * Convert list of diacritics to array of code points\n *\n */\n// @ts-ignore\nfunction toCodePoints(tolerance=8){\n\tvar char_codes:number[] = [];\n\n\tfor( let letter in DIACRITICS ){\n\t\tlet _diacritics = DIACRITICS[letter];\n\t\tfor( let n = 0; n < _diacritics.length; n++ ){\n\t\t\tvar code_point = _diacritics.codePointAt(n);\n\t\t\tif( code_point ) char_codes.push( code_point );\n\t\t}\n\t}\n\n\t//https://stackoverflow.com/questions/40431572/is-there-a-simple-way-to-group-js-array-values-by-range\n\tchar_codes.sort((a, b) => a - b);\n\tvar accumulator: number[][] = [];\n\tchar_codes.reduce(function (accumulator, currentValue, index, source) {\n\n\t\tif( !index ){\n\t\t\taccumulator.push( [currentValue,currentValue] );\n\n\t\t}else if( currentValue - source[index - 1] > tolerance ){\n\t\t\taccumulator.push( [currentValue,currentValue] );\n\n\t\t}else{\n\n\t\t\tlet range = accumulator.pop();\n\t\t\tif( range ){\n\t\t\t\taccumulator.push( [range[0],currentValue]);\n\t\t\t}\n\t\t}\n\n\t\treturn accumulator;\n\t}, accumulator);\n\n}\n\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n *\n */\nexport const arrayToPattern = (chars:string[],glue:string='|'):string =>{\n\t\n\tif( chars.length == 1 ){\n\t\treturn chars[0];\n\t}\n\t\n\tvar longest = 1;\n\tchars.forEach((a)=>{longest = Math.max(longest,a.length)});\n\n\tif( longest == 1 ){\n\t\treturn '['+chars.join('')+']';\n\t}\n\n\treturn '(?:'+chars.join(glue)+')';\t\n};\n\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n *\n */\nexport const allSubstrings = (input:string):string[][] => {\n\n if( input.length === 1) return [[input]];\n\n var result:string[][] = [];\n allSubstrings(input.substring(1)).forEach(function(subresult) {\n var tmp = subresult.slice(0);\n tmp[0] = input.charAt(0) + tmp[0];\n result.push(tmp);\n\n tmp = subresult.slice(0);\n tmp.unshift(input.charAt(0));\n result.push(tmp);\n });\n \n return result;\n}\n\n/**\n * Generate a list of diacritics from the list of code points\n *\n */\nexport const generateDiacritics = ():TDiacraticList => {\t\n\n\tvar diacritics:{[key:string]:string[]} = {};\n\tcode_points.forEach((code_range)=>{\n\n\t\tfor(let i = code_range[0]; i <= code_range[1]; i++){\n\t\t\t\n\t\t\tlet diacritic\t= String.fromCharCode(i);\n\t\t\tlet\tlatin\t\t= asciifold(diacritic);\n\n\t\t\tif( latin == diacritic.toLowerCase() ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( !(latin in diacritics) ){\n\t\t\t\tdiacritics[latin] = [latin];\n\t\t\t}\n\t\t\t\n\t\t\tvar patt = new RegExp( arrayToPattern(diacritics[latin]),'iu');\n\t\t\tif( diacritic.match(patt) ){\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tdiacritics[latin].push(diacritic);\n\t\t}\n\t});\n\t\t\n\tvar latin_chars = Object.keys(diacritics);\n\t\n\t\n\t// latin character pattern\n\t// match longer substrings first\n\tlatin_chars\t\t= latin_chars.sort((a, b) => b.length - a.length );\n\tlatin_pat\t\t= new RegExp('('+ arrayToPattern(latin_chars) + accent_pat + '*)','g');\n\t\n\t\n\t// build diacritic patterns\n\t// ae needs: \n\t//\t(?:(?:ae|Æ|Ǽ|Ǣ)|(?:A|Ⓐ|A...)(?:E|ɛ|Ⓔ...))\n\tvar diacritic_patterns:TDiacraticList = {};\n\tlatin_chars.sort((a,b) => a.length -b.length).forEach((latin)=>{\n\t\t\n\t\tvar substrings\t= allSubstrings(latin);\n\t\tvar pattern = substrings.map((sub_pat)=>{\n\t\t\t\n\t\t\tsub_pat = sub_pat.map((l)=>{\n\t\t\t\tif( diacritics.hasOwnProperty(l) ){\n\t\t\t\t\treturn arrayToPattern(diacritics[l]);\n\t\t\t\t}\n\t\t\t\treturn l;\n\t\t\t});\n\t\t\t\n\t\t\treturn arrayToPattern(sub_pat,'');\n\t\t});\n\t\t\n\t\tdiacritic_patterns[latin] = arrayToPattern(pattern);\t\t\n\t});\n\t\t\t\n\treturn diacritic_patterns;\n}\n\n/**\n * Expand a regular expression pattern to include diacritics\n * \teg /a/ becomes /aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑAⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ/\n *\n */\nexport const diacriticRegexPoints = (regex:string):string => {\n\n\tif( diacritic_patterns === undefined ){\n\t\tdiacritic_patterns = generateDiacritics();\n\t}\n\t\n\tconst decomposed\t\t= regex.normalize('NFKD').toLowerCase();\n\t\n\treturn decomposed.split(latin_pat).map((part:string)=>{\n\t\t\n\t\tif( part == '' ){\n\t\t\treturn '';\n\t\t}\n\t\t\n\t\t// \"ffl\" or \"ffl\"\n\t\tconst no_accent = asciifold(part);\t\t\t\t\n\t\tif( diacritic_patterns.hasOwnProperty(no_accent) ){\n\t\t\treturn diacritic_patterns[no_accent];\n\t\t}\n\t\t\n\t\t// 'أهلا' (\\u{623}\\u{647}\\u{644}\\u{627}) or 'أهلا' (\\u{627}\\u{654}\\u{647}\\u{644}\\u{627})\n\t\tconst composed_part = part.normalize('NFC');\n\t\tif( composed_part != part ){\n\t\t\treturn arrayToPattern([part,composed_part]);\n\t\t}\n\t\t\t\t\n\t\treturn part;\n\t}).join('');\n\t\n}\n","\nimport { iterate } from '@orchidjs/sifter/lib/utils';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tlet div = document.createElement('div');\n\t\tdiv.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn div.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n","\nimport TomSelect from './tom-select';\nimport { TomLoadCallback } from './types/index';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n * 'str' -> 'str'\n * null -> ''\n * undefined -> ''\n * true -> '1'\n * false -> '0'\n * 0 -> '0'\n * 1 -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>')\n\t\t.replace(/\"/g, '"');\n};\n\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n * - start\n * - length\n *\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Prevent default\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n","/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { escape_html, preventDefault, addEvent } from '../../utils';\nimport { TomOption } from '../../types/index';\nimport { RBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel : '×',\n\t\t\ttitle : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar rendered = getDom(orig_render_item.call(self, data, escape));\n\n\t\t\tvar close_button = getDom(html);\n\t\t\trendered.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif (self.isLocked) return;\n\n\t\t\t\tvar value = rendered.dataset.value;\n\t\t\t\tself.removeItem(value);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t\tself.inputState();\n\t\t\t});\n\n\t\t\treturn rendered;\n\t\t};\n\n\t});\n\n\n};\n"],"names":["latin_convert","RegExp","Object","keys","join","getDom","query","jquery","HTMLElement","isHtmlString","div","document","createElement","innerHTML","trim","firstChild","querySelector","arg","indexOf","escape_html","str","replace","preventDefault","evt","stop","stopPropagation","addEvent","target","type","callback","options","addEventListener","userOptions","assign","label","title","className","append","self","html","hook","orig_render_item","settings","render","item","data","escape","rendered","call","close_button","appendChild","isLocked","value","dataset","removeItem","refreshOptions","inputState"],"mappings":"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"}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
/**
|
2
|
+
* Tom Select v2.0.3
|
3
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
*/
|
5
|
+
|
6
|
+
(function (global, factory) {
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
8
|
+
typeof define === 'function' && define.amd ? define(factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.restore_on_backspace = factory());
|
10
|
+
})(this, (function () { 'use strict';
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Plugin: "restore_on_backspace" (Tom Select)
|
14
|
+
* Copyright (c) contributors
|
15
|
+
*
|
16
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
|
17
|
+
* file except in compliance with the License. You may obtain a copy of the License at:
|
18
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19
|
+
*
|
20
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
21
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
22
|
+
* ANY KIND, either express or implied. See the License for the specific language
|
23
|
+
* governing permissions and limitations under the License.
|
24
|
+
*
|
25
|
+
*/
|
26
|
+
function plugin (userOptions) {
|
27
|
+
const self = this;
|
28
|
+
const options = Object.assign({
|
29
|
+
text: option => {
|
30
|
+
return option[self.settings.labelField];
|
31
|
+
}
|
32
|
+
}, userOptions);
|
33
|
+
self.on('item_remove', function (value) {
|
34
|
+
if (!self.isFocused) {
|
35
|
+
return;
|
36
|
+
}
|
37
|
+
|
38
|
+
if (self.control_input.value.trim() === '') {
|
39
|
+
var option = self.options[value];
|
40
|
+
|
41
|
+
if (option) {
|
42
|
+
self.setTextboxValue(options.text.call(self, option));
|
43
|
+
}
|
44
|
+
}
|
45
|
+
});
|
46
|
+
}
|
47
|
+
|
48
|
+
return plugin;
|
49
|
+
|
50
|
+
}));
|
51
|
+
//# sourceMappingURL=restore_on_backspace.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"restore_on_backspace.js","sources":["../../../src/plugins/restore_on_backspace/plugin.ts"],"sourcesContent":["/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( !self.isFocused ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n"],"names":["userOptions","self","options","Object","assign","text","option","settings","labelField","on","value","isFocused","control_input","trim","setTextboxValue","call"],"mappings":";;;;;;;;;;;CAAA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAQe,iBAAyBA,WAAzB,EAAqD;CACnE,QAAMC,IAAI,GAAG,IAAb;CAEA,QAAMC,OAAO,GAAGC,MAAM,CAACC,MAAP,CAAc;CAC7BC,IAAAA,IAAI,EAAGC,MAAD,IAAsB;CAC3B,aAAOA,MAAM,CAACL,IAAI,CAACM,QAAL,CAAcC,UAAf,CAAb;CACA;CAH4B,GAAd,EAIdR,WAJc,CAAhB;CAMAC,EAAAA,IAAI,CAACQ,EAAL,CAAQ,aAAR,EAAsB,UAASC,KAAT,EAAsB;CAC3C,QAAI,CAACT,IAAI,CAACU,SAAV,EAAqB;CACpB;CACA;;CAED,QAAIV,IAAI,CAACW,aAAL,CAAmBF,KAAnB,CAAyBG,IAAzB,OAAoC,EAAxC,EAA4C;CAC3C,UAAIP,MAAM,GAAGL,IAAI,CAACC,OAAL,CAAaQ,KAAb,CAAb;;CACA,UAAIJ,MAAJ,EAAY;CACXL,QAAAA,IAAI,CAACa,eAAL,CAAqBZ,OAAO,CAACG,IAAR,CAAaU,IAAb,CAAkBd,IAAlB,EAAwBK,MAAxB,CAArB;CACA;CACD;CACD,GAXD;CAaA;;;;;;;;"}
|