card-mod-script 0.14.2 → 0.15.0

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.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/data/real.yml +50 -0
  3. data/lib/ansi2html.rb +69 -0
  4. data/lib/card/mod/script.rb +1 -0
  5. data/set/abstract/00_script.rb +4 -4
  6. data/set/abstract/02_coffee_script.rb +9 -1
  7. data/set/all/head_javascript.rb +13 -22
  8. data/set/right/script.rb +1 -1
  9. data/set/type/coffee_script.rb +6 -0
  10. data/set/type/java_script.rb +6 -0
  11. data/set/type/local_script_folder_group.rb +2 -0
  12. data/set/type/local_script_manifest_group.rb +2 -0
  13. data/set/type_plus_right/mod/script.rb +1 -5
  14. data/set/type_plus_right/set/script.rb +3 -1
  15. metadata +13 -119
  16. data/assets/script/decko/autosave.js.coffee +0 -30
  17. data/assets/script/decko/bridge.js.coffee +0 -31
  18. data/assets/script/decko/card_menu.js.coffee +0 -26
  19. data/assets/script/decko/components.js.coffee +0 -49
  20. data/assets/script/decko/decko.js.coffee +0 -82
  21. data/assets/script/decko/doubleclick.js.coffee +0 -30
  22. data/assets/script/decko/editor.js.coffee +0 -57
  23. data/assets/script/decko/filter.js.coffee +0 -183
  24. data/assets/script/decko/filter_items.js.coffee +0 -128
  25. data/assets/script/decko/filter_links.js.coffee +0 -81
  26. data/assets/script/decko/follow.js.coffee +0 -22
  27. data/assets/script/decko/layout.js.coffee +0 -76
  28. data/assets/script/decko/link_editor.js.coffee +0 -61
  29. data/assets/script/decko/mod.js.coffee +0 -79
  30. data/assets/script/decko/modal.js.coffee +0 -113
  31. data/assets/script/decko/name_editor.js.coffee +0 -40
  32. data/assets/script/decko/navbox.js.coffee +0 -74
  33. data/assets/script/decko/nest_editor.js.coffee +0 -166
  34. data/assets/script/decko/nest_editor_name.js.coffee +0 -102
  35. data/assets/script/decko/nest_editor_options.js.coffee +0 -93
  36. data/assets/script/decko/nest_editor_rules.js.coffee +0 -3
  37. data/assets/script/decko/overlay.js.coffee +0 -54
  38. data/assets/script/decko/pointer_config.js.coffee +0 -79
  39. data/assets/script/decko/pointer_list_editor.js.coffee +0 -67
  40. data/assets/script/decko/recaptcha.js.coffee +0 -19
  41. data/assets/script/decko/selectable_filtered_content.js.coffee +0 -12
  42. data/assets/script/decko/slot.js.coffee +0 -182
  43. data/assets/script/decko/slot_ready.js.coffee +0 -12
  44. data/assets/script/decko/slotter.js.coffee +0 -268
  45. data/assets/script/decko/type_editor.js.coffee +0 -21
  46. data/assets/script/decko/upload.js.coffee +0 -64
  47. data/assets/script/jquery-ui.min.js +0 -13
  48. data/assets/script/jquery.autosize.js +0 -274
  49. data/assets/script/manifest.yml +0 -57
  50. data/db/migrate_core_cards/20200804112348_add_mod_script_assets_type.rb +0 -30
  51. data/vendor/jquery_file_upload/LICENSE.txt +0 -20
  52. data/vendor/jquery_file_upload/README.md +0 -224
  53. data/vendor/jquery_file_upload/SECURITY.md +0 -227
  54. data/vendor/jquery_file_upload/VULNERABILITIES.md +0 -118
  55. data/vendor/jquery_file_upload/cors/postmessage.html +0 -85
  56. data/vendor/jquery_file_upload/cors/result.html +0 -26
  57. data/vendor/jquery_file_upload/css/jquery.fileupload-noscript.css +0 -22
  58. data/vendor/jquery_file_upload/css/jquery.fileupload-ui-noscript.css +0 -17
  59. data/vendor/jquery_file_upload/css/jquery.fileupload-ui.css +0 -68
  60. data/vendor/jquery_file_upload/css/jquery.fileupload.css +0 -36
  61. data/vendor/jquery_file_upload/docker-compose.yml +0 -55
  62. data/vendor/jquery_file_upload/img/loading.gif +0 -0
  63. data/vendor/jquery_file_upload/img/progressbar.gif +0 -0
  64. data/vendor/jquery_file_upload/index.html +0 -357
  65. data/vendor/jquery_file_upload/js/cors/jquery.postmessage-transport.js +0 -126
  66. data/vendor/jquery_file_upload/js/cors/jquery.xdr-transport.js +0 -97
  67. data/vendor/jquery_file_upload/js/demo.js +0 -75
  68. data/vendor/jquery_file_upload/js/jquery.fileupload-audio.js +0 -101
  69. data/vendor/jquery_file_upload/js/jquery.fileupload-image.js +0 -347
  70. data/vendor/jquery_file_upload/js/jquery.fileupload-process.js +0 -170
  71. data/vendor/jquery_file_upload/js/jquery.fileupload-ui.js +0 -759
  72. data/vendor/jquery_file_upload/js/jquery.fileupload-validate.js +0 -119
  73. data/vendor/jquery_file_upload/js/jquery.fileupload-video.js +0 -101
  74. data/vendor/jquery_file_upload/js/jquery.fileupload.js +0 -1604
  75. data/vendor/jquery_file_upload/js/jquery.iframe-transport.js +0 -227
  76. data/vendor/jquery_file_upload/js/vendor/jquery.ui.widget.js +0 -805
  77. data/vendor/jquery_file_upload/package-lock.json +0 -6853
  78. data/vendor/jquery_file_upload/package.json +0 -116
  79. data/vendor/jquery_file_upload/server/gae-python/app.yaml +0 -18
  80. data/vendor/jquery_file_upload/server/gae-python/main.py +0 -204
  81. data/vendor/jquery_file_upload/server/gae-python/static/favicon.ico +0 -0
  82. data/vendor/jquery_file_upload/server/gae-python/static/robots.txt +0 -2
  83. data/vendor/jquery_file_upload/server/php/Dockerfile +0 -44
  84. data/vendor/jquery_file_upload/server/php/UploadHandler.php +0 -1480
  85. data/vendor/jquery_file_upload/server/php/index.php +0 -15
  86. data/vendor/jquery_file_upload/server/php/php.ini +0 -5
  87. data/vendor/jquery_file_upload/test/index.html +0 -49
  88. data/vendor/jquery_file_upload/test/unit.js +0 -989
  89. data/vendor/jquery_file_upload/test/vendor/chai.js +0 -10854
  90. data/vendor/jquery_file_upload/test/vendor/mocha.css +0 -325
  91. data/vendor/jquery_file_upload/test/vendor/mocha.js +0 -18178
  92. data/vendor/jquery_file_upload/wdio/LICENSE.txt +0 -20
  93. data/vendor/jquery_file_upload/wdio/assets/black+white-3x2.jpg +0 -0
  94. data/vendor/jquery_file_upload/wdio/assets/black+white-60x40.gif +0 -0
  95. data/vendor/jquery_file_upload/wdio/conf/chrome.js +0 -40
  96. data/vendor/jquery_file_upload/wdio/conf/firefox.js +0 -25
  97. data/vendor/jquery_file_upload/wdio/hooks/index.js +0 -36
  98. data/vendor/jquery_file_upload/wdio/test/pages/file-upload.js +0 -79
  99. data/vendor/jquery_file_upload/wdio/test/specs/01-file-upload.js +0 -25
  100. data/vendor/jquery_file_upload/wdio/wdio.conf.js +0 -4
  101. data/vendor/jquery_rails/CHANGELOG.md +0 -359
  102. data/vendor/jquery_rails/CONTRIBUTING.md +0 -132
  103. data/vendor/jquery_rails/Gemfile +0 -22
  104. data/vendor/jquery_rails/MIT-LICENSE +0 -21
  105. data/vendor/jquery_rails/README.md +0 -75
  106. data/vendor/jquery_rails/Rakefile +0 -59
  107. data/vendor/jquery_rails/VERSIONS.md +0 -62
  108. data/vendor/jquery_rails/jquery-rails.gemspec +0 -26
  109. data/vendor/jquery_rails/lib/jquery/assert_select.rb +0 -149
  110. data/vendor/jquery_rails/lib/jquery/rails/engine.rb +0 -6
  111. data/vendor/jquery_rails/lib/jquery/rails/version.rb +0 -9
  112. data/vendor/jquery_rails/lib/jquery/rails.rb +0 -8
  113. data/vendor/jquery_rails/lib/jquery-rails.rb +0 -1
  114. data/vendor/jquery_rails/test/assert_select_jquery_test.rb +0 -85
  115. data/vendor/jquery_rails/test/test_helper.rb +0 -6
  116. data/vendor/jquery_rails/vendor/assets/javascripts/jquery.js +0 -11008
  117. data/vendor/jquery_rails/vendor/assets/javascripts/jquery.min.js +0 -5
  118. data/vendor/jquery_rails/vendor/assets/javascripts/jquery.min.map +0 -1
  119. data/vendor/jquery_rails/vendor/assets/javascripts/jquery2.js +0 -9814
  120. data/vendor/jquery_rails/vendor/assets/javascripts/jquery2.min.js +0 -4
  121. data/vendor/jquery_rails/vendor/assets/javascripts/jquery2.min.map +0 -1
  122. data/vendor/jquery_rails/vendor/assets/javascripts/jquery3.js +0 -10364
  123. data/vendor/jquery_rails/vendor/assets/javascripts/jquery3.min.js +0 -2
  124. data/vendor/jquery_rails/vendor/assets/javascripts/jquery3.min.map +0 -1
  125. data/vendor/jquery_rails/vendor/assets/javascripts/jquery_ujs.js +0 -555
@@ -1,805 +0,0 @@
1
- /*! jQuery UI - v1.12.1+0b7246b6eeadfa9e2696e22f3230f6452f8129dc - 2020-02-20
2
- * http://jqueryui.com
3
- * Includes: widget.js
4
- * Copyright jQuery Foundation and other contributors; Licensed MIT */
5
-
6
- /* global define, require */
7
- /* eslint-disable no-param-reassign, new-cap, jsdoc/require-jsdoc */
8
-
9
- (function (factory) {
10
- 'use strict';
11
- if (typeof define === 'function' && define.amd) {
12
- // AMD. Register as an anonymous module.
13
- define(['jquery'], factory);
14
- } else if (typeof exports === 'object') {
15
- // Node/CommonJS
16
- factory(require('jquery'));
17
- } else {
18
- // Browser globals
19
- factory(window.jQuery);
20
- }
21
- })(function ($) {
22
- ('use strict');
23
-
24
- $.ui = $.ui || {};
25
-
26
- $.ui.version = '1.12.1';
27
-
28
- /*!
29
- * jQuery UI Widget 1.12.1
30
- * http://jqueryui.com
31
- *
32
- * Copyright jQuery Foundation and other contributors
33
- * Released under the MIT license.
34
- * http://jquery.org/license
35
- */
36
-
37
- //>>label: Widget
38
- //>>group: Core
39
- //>>description: Provides a factory for creating stateful widgets with a common API.
40
- //>>docs: http://api.jqueryui.com/jQuery.widget/
41
- //>>demos: http://jqueryui.com/widget/
42
-
43
- // Support: jQuery 1.9.x or older
44
- // $.expr[ ":" ] is deprecated.
45
- if (!$.expr.pseudos) {
46
- $.expr.pseudos = $.expr[':'];
47
- }
48
-
49
- // Support: jQuery 1.11.x or older
50
- // $.unique has been renamed to $.uniqueSort
51
- if (!$.uniqueSort) {
52
- $.uniqueSort = $.unique;
53
- }
54
-
55
- var widgetUuid = 0;
56
- var widgetHasOwnProperty = Array.prototype.hasOwnProperty;
57
- var widgetSlice = Array.prototype.slice;
58
-
59
- $.cleanData = (function (orig) {
60
- return function (elems) {
61
- var events, elem, i;
62
- // eslint-disable-next-line eqeqeq
63
- for (i = 0; (elem = elems[i]) != null; i++) {
64
- // Only trigger remove when necessary to save time
65
- events = $._data(elem, 'events');
66
- if (events && events.remove) {
67
- $(elem).triggerHandler('remove');
68
- }
69
- }
70
- orig(elems);
71
- };
72
- })($.cleanData);
73
-
74
- $.widget = function (name, base, prototype) {
75
- var existingConstructor, constructor, basePrototype;
76
-
77
- // ProxiedPrototype allows the provided prototype to remain unmodified
78
- // so that it can be used as a mixin for multiple widgets (#8876)
79
- var proxiedPrototype = {};
80
-
81
- var namespace = name.split('.')[0];
82
- name = name.split('.')[1];
83
- var fullName = namespace + '-' + name;
84
-
85
- if (!prototype) {
86
- prototype = base;
87
- base = $.Widget;
88
- }
89
-
90
- if ($.isArray(prototype)) {
91
- prototype = $.extend.apply(null, [{}].concat(prototype));
92
- }
93
-
94
- // Create selector for plugin
95
- $.expr.pseudos[fullName.toLowerCase()] = function (elem) {
96
- return !!$.data(elem, fullName);
97
- };
98
-
99
- $[namespace] = $[namespace] || {};
100
- existingConstructor = $[namespace][name];
101
- constructor = $[namespace][name] = function (options, element) {
102
- // Allow instantiation without "new" keyword
103
- if (!this._createWidget) {
104
- return new constructor(options, element);
105
- }
106
-
107
- // Allow instantiation without initializing for simple inheritance
108
- // must use "new" keyword (the code above always passes args)
109
- if (arguments.length) {
110
- this._createWidget(options, element);
111
- }
112
- };
113
-
114
- // Extend with the existing constructor to carry over any static properties
115
- $.extend(constructor, existingConstructor, {
116
- version: prototype.version,
117
-
118
- // Copy the object used to create the prototype in case we need to
119
- // redefine the widget later
120
- _proto: $.extend({}, prototype),
121
-
122
- // Track widgets that inherit from this widget in case this widget is
123
- // redefined after a widget inherits from it
124
- _childConstructors: []
125
- });
126
-
127
- basePrototype = new base();
128
-
129
- // We need to make the options hash a property directly on the new instance
130
- // otherwise we'll modify the options hash on the prototype that we're
131
- // inheriting from
132
- basePrototype.options = $.widget.extend({}, basePrototype.options);
133
- $.each(prototype, function (prop, value) {
134
- if (!$.isFunction(value)) {
135
- proxiedPrototype[prop] = value;
136
- return;
137
- }
138
- proxiedPrototype[prop] = (function () {
139
- function _super() {
140
- return base.prototype[prop].apply(this, arguments);
141
- }
142
-
143
- function _superApply(args) {
144
- return base.prototype[prop].apply(this, args);
145
- }
146
-
147
- return function () {
148
- var __super = this._super;
149
- var __superApply = this._superApply;
150
- var returnValue;
151
-
152
- this._super = _super;
153
- this._superApply = _superApply;
154
-
155
- returnValue = value.apply(this, arguments);
156
-
157
- this._super = __super;
158
- this._superApply = __superApply;
159
-
160
- return returnValue;
161
- };
162
- })();
163
- });
164
- constructor.prototype = $.widget.extend(
165
- basePrototype,
166
- {
167
- // TODO: remove support for widgetEventPrefix
168
- // always use the name + a colon as the prefix, e.g., draggable:start
169
- // don't prefix for widgets that aren't DOM-based
170
- widgetEventPrefix: existingConstructor
171
- ? basePrototype.widgetEventPrefix || name
172
- : name
173
- },
174
- proxiedPrototype,
175
- {
176
- constructor: constructor,
177
- namespace: namespace,
178
- widgetName: name,
179
- widgetFullName: fullName
180
- }
181
- );
182
-
183
- // If this widget is being redefined then we need to find all widgets that
184
- // are inheriting from it and redefine all of them so that they inherit from
185
- // the new version of this widget. We're essentially trying to replace one
186
- // level in the prototype chain.
187
- if (existingConstructor) {
188
- $.each(existingConstructor._childConstructors, function (i, child) {
189
- var childPrototype = child.prototype;
190
-
191
- // Redefine the child widget using the same prototype that was
192
- // originally used, but inherit from the new version of the base
193
- $.widget(
194
- childPrototype.namespace + '.' + childPrototype.widgetName,
195
- constructor,
196
- child._proto
197
- );
198
- });
199
-
200
- // Remove the list of existing child constructors from the old constructor
201
- // so the old child constructors can be garbage collected
202
- delete existingConstructor._childConstructors;
203
- } else {
204
- base._childConstructors.push(constructor);
205
- }
206
-
207
- $.widget.bridge(name, constructor);
208
-
209
- return constructor;
210
- };
211
-
212
- $.widget.extend = function (target) {
213
- var input = widgetSlice.call(arguments, 1);
214
- var inputIndex = 0;
215
- var inputLength = input.length;
216
- var key;
217
- var value;
218
-
219
- for (; inputIndex < inputLength; inputIndex++) {
220
- for (key in input[inputIndex]) {
221
- value = input[inputIndex][key];
222
- if (
223
- widgetHasOwnProperty.call(input[inputIndex], key) &&
224
- value !== undefined
225
- ) {
226
- // Clone objects
227
- if ($.isPlainObject(value)) {
228
- target[key] = $.isPlainObject(target[key])
229
- ? $.widget.extend({}, target[key], value)
230
- : // Don't extend strings, arrays, etc. with objects
231
- $.widget.extend({}, value);
232
-
233
- // Copy everything else by reference
234
- } else {
235
- target[key] = value;
236
- }
237
- }
238
- }
239
- }
240
- return target;
241
- };
242
-
243
- $.widget.bridge = function (name, object) {
244
- var fullName = object.prototype.widgetFullName || name;
245
- $.fn[name] = function (options) {
246
- var isMethodCall = typeof options === 'string';
247
- var args = widgetSlice.call(arguments, 1);
248
- var returnValue = this;
249
-
250
- if (isMethodCall) {
251
- // If this is an empty collection, we need to have the instance method
252
- // return undefined instead of the jQuery instance
253
- if (!this.length && options === 'instance') {
254
- returnValue = undefined;
255
- } else {
256
- this.each(function () {
257
- var methodValue;
258
- var instance = $.data(this, fullName);
259
-
260
- if (options === 'instance') {
261
- returnValue = instance;
262
- return false;
263
- }
264
-
265
- if (!instance) {
266
- return $.error(
267
- 'cannot call methods on ' +
268
- name +
269
- ' prior to initialization; ' +
270
- "attempted to call method '" +
271
- options +
272
- "'"
273
- );
274
- }
275
-
276
- if (!$.isFunction(instance[options]) || options.charAt(0) === '_') {
277
- return $.error(
278
- "no such method '" +
279
- options +
280
- "' for " +
281
- name +
282
- ' widget instance'
283
- );
284
- }
285
-
286
- methodValue = instance[options].apply(instance, args);
287
-
288
- if (methodValue !== instance && methodValue !== undefined) {
289
- returnValue =
290
- methodValue && methodValue.jquery
291
- ? returnValue.pushStack(methodValue.get())
292
- : methodValue;
293
- return false;
294
- }
295
- });
296
- }
297
- } else {
298
- // Allow multiple hashes to be passed on init
299
- if (args.length) {
300
- options = $.widget.extend.apply(null, [options].concat(args));
301
- }
302
-
303
- this.each(function () {
304
- var instance = $.data(this, fullName);
305
- if (instance) {
306
- instance.option(options || {});
307
- if (instance._init) {
308
- instance._init();
309
- }
310
- } else {
311
- $.data(this, fullName, new object(options, this));
312
- }
313
- });
314
- }
315
-
316
- return returnValue;
317
- };
318
- };
319
-
320
- $.Widget = function (/* options, element */) {};
321
- $.Widget._childConstructors = [];
322
-
323
- $.Widget.prototype = {
324
- widgetName: 'widget',
325
- widgetEventPrefix: '',
326
- defaultElement: '<div>',
327
-
328
- options: {
329
- classes: {},
330
- disabled: false,
331
-
332
- // Callbacks
333
- create: null
334
- },
335
-
336
- _createWidget: function (options, element) {
337
- element = $(element || this.defaultElement || this)[0];
338
- this.element = $(element);
339
- this.uuid = widgetUuid++;
340
- this.eventNamespace = '.' + this.widgetName + this.uuid;
341
-
342
- this.bindings = $();
343
- this.hoverable = $();
344
- this.focusable = $();
345
- this.classesElementLookup = {};
346
-
347
- if (element !== this) {
348
- $.data(element, this.widgetFullName, this);
349
- this._on(true, this.element, {
350
- remove: function (event) {
351
- if (event.target === element) {
352
- this.destroy();
353
- }
354
- }
355
- });
356
- this.document = $(
357
- element.style
358
- ? // Element within the document
359
- element.ownerDocument
360
- : // Element is window or document
361
- element.document || element
362
- );
363
- this.window = $(
364
- this.document[0].defaultView || this.document[0].parentWindow
365
- );
366
- }
367
-
368
- this.options = $.widget.extend(
369
- {},
370
- this.options,
371
- this._getCreateOptions(),
372
- options
373
- );
374
-
375
- this._create();
376
-
377
- if (this.options.disabled) {
378
- this._setOptionDisabled(this.options.disabled);
379
- }
380
-
381
- this._trigger('create', null, this._getCreateEventData());
382
- this._init();
383
- },
384
-
385
- _getCreateOptions: function () {
386
- return {};
387
- },
388
-
389
- _getCreateEventData: $.noop,
390
-
391
- _create: $.noop,
392
-
393
- _init: $.noop,
394
-
395
- destroy: function () {
396
- var that = this;
397
-
398
- this._destroy();
399
- $.each(this.classesElementLookup, function (key, value) {
400
- that._removeClass(value, key);
401
- });
402
-
403
- // We can probably remove the unbind calls in 2.0
404
- // all event bindings should go through this._on()
405
- this.element.off(this.eventNamespace).removeData(this.widgetFullName);
406
- this.widget().off(this.eventNamespace).removeAttr('aria-disabled');
407
-
408
- // Clean up events and states
409
- this.bindings.off(this.eventNamespace);
410
- },
411
-
412
- _destroy: $.noop,
413
-
414
- widget: function () {
415
- return this.element;
416
- },
417
-
418
- option: function (key, value) {
419
- var options = key;
420
- var parts;
421
- var curOption;
422
- var i;
423
-
424
- if (arguments.length === 0) {
425
- // Don't return a reference to the internal hash
426
- return $.widget.extend({}, this.options);
427
- }
428
-
429
- if (typeof key === 'string') {
430
- // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
431
- options = {};
432
- parts = key.split('.');
433
- key = parts.shift();
434
- if (parts.length) {
435
- curOption = options[key] = $.widget.extend({}, this.options[key]);
436
- for (i = 0; i < parts.length - 1; i++) {
437
- curOption[parts[i]] = curOption[parts[i]] || {};
438
- curOption = curOption[parts[i]];
439
- }
440
- key = parts.pop();
441
- if (arguments.length === 1) {
442
- return curOption[key] === undefined ? null : curOption[key];
443
- }
444
- curOption[key] = value;
445
- } else {
446
- if (arguments.length === 1) {
447
- return this.options[key] === undefined ? null : this.options[key];
448
- }
449
- options[key] = value;
450
- }
451
- }
452
-
453
- this._setOptions(options);
454
-
455
- return this;
456
- },
457
-
458
- _setOptions: function (options) {
459
- var key;
460
-
461
- for (key in options) {
462
- this._setOption(key, options[key]);
463
- }
464
-
465
- return this;
466
- },
467
-
468
- _setOption: function (key, value) {
469
- if (key === 'classes') {
470
- this._setOptionClasses(value);
471
- }
472
-
473
- this.options[key] = value;
474
-
475
- if (key === 'disabled') {
476
- this._setOptionDisabled(value);
477
- }
478
-
479
- return this;
480
- },
481
-
482
- _setOptionClasses: function (value) {
483
- var classKey, elements, currentElements;
484
-
485
- for (classKey in value) {
486
- currentElements = this.classesElementLookup[classKey];
487
- if (
488
- value[classKey] === this.options.classes[classKey] ||
489
- !currentElements ||
490
- !currentElements.length
491
- ) {
492
- continue;
493
- }
494
-
495
- // We are doing this to create a new jQuery object because the _removeClass() call
496
- // on the next line is going to destroy the reference to the current elements being
497
- // tracked. We need to save a copy of this collection so that we can add the new classes
498
- // below.
499
- elements = $(currentElements.get());
500
- this._removeClass(currentElements, classKey);
501
-
502
- // We don't use _addClass() here, because that uses this.options.classes
503
- // for generating the string of classes. We want to use the value passed in from
504
- // _setOption(), this is the new value of the classes option which was passed to
505
- // _setOption(). We pass this value directly to _classes().
506
- elements.addClass(
507
- this._classes({
508
- element: elements,
509
- keys: classKey,
510
- classes: value,
511
- add: true
512
- })
513
- );
514
- }
515
- },
516
-
517
- _setOptionDisabled: function (value) {
518
- this._toggleClass(
519
- this.widget(),
520
- this.widgetFullName + '-disabled',
521
- null,
522
- !!value
523
- );
524
-
525
- // If the widget is becoming disabled, then nothing is interactive
526
- if (value) {
527
- this._removeClass(this.hoverable, null, 'ui-state-hover');
528
- this._removeClass(this.focusable, null, 'ui-state-focus');
529
- }
530
- },
531
-
532
- enable: function () {
533
- return this._setOptions({ disabled: false });
534
- },
535
-
536
- disable: function () {
537
- return this._setOptions({ disabled: true });
538
- },
539
-
540
- _classes: function (options) {
541
- var full = [];
542
- var that = this;
543
-
544
- options = $.extend(
545
- {
546
- element: this.element,
547
- classes: this.options.classes || {}
548
- },
549
- options
550
- );
551
-
552
- function bindRemoveEvent() {
553
- options.element.each(function (_, element) {
554
- var isTracked = $.map(that.classesElementLookup, function (elements) {
555
- return elements;
556
- }).some(function (elements) {
557
- return elements.is(element);
558
- });
559
-
560
- if (!isTracked) {
561
- that._on($(element), {
562
- remove: '_untrackClassesElement'
563
- });
564
- }
565
- });
566
- }
567
-
568
- function processClassString(classes, checkOption) {
569
- var current, i;
570
- for (i = 0; i < classes.length; i++) {
571
- current = that.classesElementLookup[classes[i]] || $();
572
- if (options.add) {
573
- bindRemoveEvent();
574
- current = $(
575
- $.uniqueSort(current.get().concat(options.element.get()))
576
- );
577
- } else {
578
- current = $(current.not(options.element).get());
579
- }
580
- that.classesElementLookup[classes[i]] = current;
581
- full.push(classes[i]);
582
- if (checkOption && options.classes[classes[i]]) {
583
- full.push(options.classes[classes[i]]);
584
- }
585
- }
586
- }
587
-
588
- if (options.keys) {
589
- processClassString(options.keys.match(/\S+/g) || [], true);
590
- }
591
- if (options.extra) {
592
- processClassString(options.extra.match(/\S+/g) || []);
593
- }
594
-
595
- return full.join(' ');
596
- },
597
-
598
- _untrackClassesElement: function (event) {
599
- var that = this;
600
- $.each(that.classesElementLookup, function (key, value) {
601
- if ($.inArray(event.target, value) !== -1) {
602
- that.classesElementLookup[key] = $(value.not(event.target).get());
603
- }
604
- });
605
-
606
- this._off($(event.target));
607
- },
608
-
609
- _removeClass: function (element, keys, extra) {
610
- return this._toggleClass(element, keys, extra, false);
611
- },
612
-
613
- _addClass: function (element, keys, extra) {
614
- return this._toggleClass(element, keys, extra, true);
615
- },
616
-
617
- _toggleClass: function (element, keys, extra, add) {
618
- add = typeof add === 'boolean' ? add : extra;
619
- var shift = typeof element === 'string' || element === null,
620
- options = {
621
- extra: shift ? keys : extra,
622
- keys: shift ? element : keys,
623
- element: shift ? this.element : element,
624
- add: add
625
- };
626
- options.element.toggleClass(this._classes(options), add);
627
- return this;
628
- },
629
-
630
- _on: function (suppressDisabledCheck, element, handlers) {
631
- var delegateElement;
632
- var instance = this;
633
-
634
- // No suppressDisabledCheck flag, shuffle arguments
635
- if (typeof suppressDisabledCheck !== 'boolean') {
636
- handlers = element;
637
- element = suppressDisabledCheck;
638
- suppressDisabledCheck = false;
639
- }
640
-
641
- // No element argument, shuffle and use this.element
642
- if (!handlers) {
643
- handlers = element;
644
- element = this.element;
645
- delegateElement = this.widget();
646
- } else {
647
- element = delegateElement = $(element);
648
- this.bindings = this.bindings.add(element);
649
- }
650
-
651
- $.each(handlers, function (event, handler) {
652
- function handlerProxy() {
653
- // Allow widgets to customize the disabled handling
654
- // - disabled as an array instead of boolean
655
- // - disabled class as method for disabling individual parts
656
- if (
657
- !suppressDisabledCheck &&
658
- (instance.options.disabled === true ||
659
- $(this).hasClass('ui-state-disabled'))
660
- ) {
661
- return;
662
- }
663
- return (
664
- typeof handler === 'string' ? instance[handler] : handler
665
- ).apply(instance, arguments);
666
- }
667
-
668
- // Copy the guid so direct unbinding works
669
- if (typeof handler !== 'string') {
670
- handlerProxy.guid = handler.guid =
671
- handler.guid || handlerProxy.guid || $.guid++;
672
- }
673
-
674
- var match = event.match(/^([\w:-]*)\s*(.*)$/);
675
- var eventName = match[1] + instance.eventNamespace;
676
- var selector = match[2];
677
-
678
- if (selector) {
679
- delegateElement.on(eventName, selector, handlerProxy);
680
- } else {
681
- element.on(eventName, handlerProxy);
682
- }
683
- });
684
- },
685
-
686
- _off: function (element, eventName) {
687
- eventName =
688
- (eventName || '').split(' ').join(this.eventNamespace + ' ') +
689
- this.eventNamespace;
690
- element.off(eventName);
691
-
692
- // Clear the stack to avoid memory leaks (#10056)
693
- this.bindings = $(this.bindings.not(element).get());
694
- this.focusable = $(this.focusable.not(element).get());
695
- this.hoverable = $(this.hoverable.not(element).get());
696
- },
697
-
698
- _delay: function (handler, delay) {
699
- var instance = this;
700
- function handlerProxy() {
701
- return (
702
- typeof handler === 'string' ? instance[handler] : handler
703
- ).apply(instance, arguments);
704
- }
705
- return setTimeout(handlerProxy, delay || 0);
706
- },
707
-
708
- _hoverable: function (element) {
709
- this.hoverable = this.hoverable.add(element);
710
- this._on(element, {
711
- mouseenter: function (event) {
712
- this._addClass($(event.currentTarget), null, 'ui-state-hover');
713
- },
714
- mouseleave: function (event) {
715
- this._removeClass($(event.currentTarget), null, 'ui-state-hover');
716
- }
717
- });
718
- },
719
-
720
- _focusable: function (element) {
721
- this.focusable = this.focusable.add(element);
722
- this._on(element, {
723
- focusin: function (event) {
724
- this._addClass($(event.currentTarget), null, 'ui-state-focus');
725
- },
726
- focusout: function (event) {
727
- this._removeClass($(event.currentTarget), null, 'ui-state-focus');
728
- }
729
- });
730
- },
731
-
732
- _trigger: function (type, event, data) {
733
- var prop, orig;
734
- var callback = this.options[type];
735
-
736
- data = data || {};
737
- event = $.Event(event);
738
- event.type = (
739
- type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type
740
- ).toLowerCase();
741
-
742
- // The original event may come from any element
743
- // so we need to reset the target on the new event
744
- event.target = this.element[0];
745
-
746
- // Copy original event properties over to the new event
747
- orig = event.originalEvent;
748
- if (orig) {
749
- for (prop in orig) {
750
- if (!(prop in event)) {
751
- event[prop] = orig[prop];
752
- }
753
- }
754
- }
755
-
756
- this.element.trigger(event, data);
757
- return !(
758
- ($.isFunction(callback) &&
759
- callback.apply(this.element[0], [event].concat(data)) === false) ||
760
- event.isDefaultPrevented()
761
- );
762
- }
763
- };
764
-
765
- $.each({ show: 'fadeIn', hide: 'fadeOut' }, function (method, defaultEffect) {
766
- $.Widget.prototype['_' + method] = function (element, options, callback) {
767
- if (typeof options === 'string') {
768
- options = { effect: options };
769
- }
770
-
771
- var hasOptions;
772
- var effectName = !options
773
- ? method
774
- : options === true || typeof options === 'number'
775
- ? defaultEffect
776
- : options.effect || defaultEffect;
777
-
778
- options = options || {};
779
- if (typeof options === 'number') {
780
- options = { duration: options };
781
- }
782
-
783
- hasOptions = !$.isEmptyObject(options);
784
- options.complete = callback;
785
-
786
- if (options.delay) {
787
- element.delay(options.delay);
788
- }
789
-
790
- if (hasOptions && $.effects && $.effects.effect[effectName]) {
791
- element[method](options);
792
- } else if (effectName !== method && element[effectName]) {
793
- element[effectName](options.duration, options.easing, callback);
794
- } else {
795
- element.queue(function (next) {
796
- $(this)[method]();
797
- if (callback) {
798
- callback.call(element[0]);
799
- }
800
- next();
801
- });
802
- }
803
- };
804
- });
805
- });