@windwalker-io/unicorn-next 0.1.7 → 0.1.9

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 (133) hide show
  1. package/.editorconfig +18 -18
  2. package/.gulp.json +7 -7
  3. package/bin/release.mjs +47 -47
  4. package/dist/chunks/button-radio.js.map +1 -1
  5. package/dist/chunks/checkboxes-multi-select.js.map +1 -1
  6. package/dist/chunks/field-cascade-select.js +2 -2
  7. package/dist/chunks/field-cascade-select.js.map +1 -1
  8. package/dist/chunks/field-file-drag.js.map +1 -1
  9. package/dist/chunks/field-flatpickr.js.map +1 -1
  10. package/dist/chunks/field-modal-select.js.map +1 -1
  11. package/dist/chunks/field-modal-tree.js +2 -2
  12. package/dist/chunks/field-modal-tree.js.map +1 -1
  13. package/dist/chunks/field-multi-uploader.js.map +1 -1
  14. package/dist/chunks/field-repeatable.js.map +1 -1
  15. package/dist/chunks/field-single-image-drag.js.map +1 -1
  16. package/dist/chunks/form.js.map +1 -1
  17. package/dist/chunks/grid.js.map +1 -1
  18. package/dist/chunks/http-client.js.map +1 -1
  19. package/dist/chunks/iframe-modal.js.map +1 -1
  20. package/dist/chunks/index.js +1 -15
  21. package/dist/chunks/index.js.map +1 -1
  22. package/dist/chunks/keep-tab.js +2 -2
  23. package/dist/chunks/keep-tab.js.map +1 -1
  24. package/dist/chunks/legacy.js +3 -3
  25. package/dist/chunks/legacy.js.map +1 -1
  26. package/dist/chunks/list-dependent.js.map +1 -1
  27. package/dist/chunks/s3-multipart-uploader.js +23 -2
  28. package/dist/chunks/s3-multipart-uploader.js.map +1 -1
  29. package/dist/chunks/s3-uploader.js.map +1 -1
  30. package/dist/chunks/show-on.js +2 -2
  31. package/dist/chunks/show-on.js.map +1 -1
  32. package/dist/chunks/tinymce.js.map +1 -1
  33. package/dist/chunks/ui-bootstrap5.js.map +1 -1
  34. package/dist/chunks/unicorn.js +108 -89
  35. package/dist/chunks/unicorn.js.map +1 -1
  36. package/dist/chunks/validation.js.map +1 -1
  37. package/dist/index.d.ts +28 -6
  38. package/dist/unicorn.js +43 -41
  39. package/fusionfile.mjs +155 -155
  40. package/package.json +104 -104
  41. package/scss/bootstrap/multi-level-menu.scss +121 -121
  42. package/scss/editor.scss +116 -116
  43. package/scss/field/file-drag.scss +102 -102
  44. package/scss/field/single-image-drag.scss +88 -88
  45. package/scss/field/vue-drag-uploader.scss +160 -160
  46. package/scss/switcher.scss +156 -156
  47. package/src/app.ts +128 -128
  48. package/src/bootstrap/button-radio.ts +208 -208
  49. package/src/bootstrap/keep-tab.ts +155 -155
  50. package/src/composable/index.ts +22 -22
  51. package/src/composable/useCheckboxesMultiSelect.ts +22 -22
  52. package/src/composable/useFieldCascadeSelect.ts +9 -9
  53. package/src/composable/useFieldFileDrag.ts +9 -9
  54. package/src/composable/useFieldFlatpickr.ts +3 -3
  55. package/src/composable/useFieldModalSelect.ts +6 -6
  56. package/src/composable/useFieldModalTree.ts +3 -3
  57. package/src/composable/useFieldMultiUploader.ts +9 -9
  58. package/src/composable/useFieldRepeatable.ts +9 -9
  59. package/src/composable/useFieldSingleImageDrag.ts +9 -9
  60. package/src/composable/useForm.ts +43 -43
  61. package/src/composable/useGrid.ts +57 -57
  62. package/src/composable/useHttp.ts +9 -9
  63. package/src/composable/useIframeModal.ts +10 -10
  64. package/src/composable/useListDependent.ts +26 -26
  65. package/src/composable/useQueue.ts +13 -13
  66. package/src/composable/useS3Uploader.ts +32 -32
  67. package/src/composable/useShowOn.ts +9 -9
  68. package/src/composable/useStack.ts +13 -13
  69. package/src/composable/useTinymce.ts +29 -29
  70. package/src/composable/useTomSelect.ts +72 -72
  71. package/src/composable/useUIBootstrap5.ts +48 -48
  72. package/src/composable/useUniDirective.ts +43 -43
  73. package/src/composable/useValidation.ts +50 -50
  74. package/src/data.ts +34 -34
  75. package/src/events.ts +82 -82
  76. package/src/legacy/legacy.ts +190 -190
  77. package/src/legacy/loader.ts +125 -125
  78. package/src/module/checkboxes-multi-select.ts +54 -54
  79. package/src/module/field-cascade-select.ts +292 -292
  80. package/src/module/field-file-drag.ts +295 -295
  81. package/src/module/field-flatpickr.ts +130 -130
  82. package/src/module/field-modal-select.ts +179 -179
  83. package/src/module/field-modal-tree.ts +31 -31
  84. package/src/module/field-multi-uploader.ts +368 -368
  85. package/src/module/field-repeatable.ts +202 -202
  86. package/src/module/field-single-image-drag.ts +477 -477
  87. package/src/module/form.ts +223 -223
  88. package/src/module/grid.ts +479 -479
  89. package/src/module/http-client.ts +248 -248
  90. package/src/module/iframe-modal.ts +170 -170
  91. package/src/module/list-dependent.ts +321 -321
  92. package/src/module/s3-multipart-uploader.ts +330 -300
  93. package/src/module/s3-uploader.ts +234 -234
  94. package/src/module/show-on.ts +175 -175
  95. package/src/module/tinymce.ts +276 -276
  96. package/src/module/ui-bootstrap5.ts +116 -116
  97. package/src/module/validation.ts +1046 -1046
  98. package/src/plugin/index.ts +1 -1
  99. package/src/plugin/php-adapter.ts +72 -72
  100. package/src/polyfill/form-request-submit.ts +31 -31
  101. package/src/polyfill/index.ts +9 -9
  102. package/src/service/animate.ts +58 -58
  103. package/src/service/crypto.ts +27 -27
  104. package/src/service/dom-watcher.ts +62 -62
  105. package/src/service/dom.ts +291 -265
  106. package/src/service/helper.ts +52 -48
  107. package/src/service/index.ts +10 -10
  108. package/src/service/lang.ts +122 -122
  109. package/src/service/loader.ts +152 -152
  110. package/src/service/router.ts +118 -118
  111. package/src/service/ui.ts +525 -525
  112. package/src/service/uri.ts +106 -106
  113. package/src/types/base.ts +9 -9
  114. package/src/types/index.ts +4 -4
  115. package/src/types/modal-tree.ts +12 -12
  116. package/src/types/plugin.ts +6 -6
  117. package/src/types/shims.d.ts +18 -18
  118. package/src/types/ui.ts +6 -6
  119. package/src/unicorn.ts +79 -79
  120. package/src/utilities/arr.ts +25 -25
  121. package/src/utilities/base.ts +9 -9
  122. package/src/utilities/data.ts +48 -48
  123. package/src/utilities/index.ts +5 -5
  124. package/src/utilities/tree.ts +20 -20
  125. package/src/vue/components/ModalTree/ModalTreeApp.vue +175 -175
  126. package/src/vue/components/ModalTree/TreeItem.vue +262 -262
  127. package/src/vue/components/ModalTree/TreeModal.vue +225 -225
  128. package/tests/test.js +4 -4
  129. package/tsconfig.js.json +25 -25
  130. package/tsconfig.json +17 -17
  131. package/vite.assets.config.ts +61 -61
  132. package/vite.config.test.ts +36 -36
  133. package/vite.config.ts +112 -112
@@ -1 +1 @@
1
- {"version":3,"file":"show-on.js","sources":["../../../../../../node_modules/lodash-es/_baseFindIndex.js","../../../../../../node_modules/lodash-es/_baseIsNaN.js","../../../../../../node_modules/lodash-es/_strictIndexOf.js","../../../../../../node_modules/lodash-es/_baseIndexOf.js","../../../../../../node_modules/lodash-es/_arrayIncludes.js","../../../../../../node_modules/lodash-es/_isFlattenable.js","../../../../../../node_modules/lodash-es/_baseFlatten.js","../../../../../../node_modules/lodash-es/_setCacheAdd.js","../../../../../../node_modules/lodash-es/_setCacheHas.js","../../../../../../node_modules/lodash-es/_SetCache.js","../../../../../../node_modules/lodash-es/_cacheHas.js","../../../../../../node_modules/lodash-es/isArrayLikeObject.js","../../../../../../node_modules/lodash-es/_baseDifference.js","../../../../../../node_modules/lodash-es/difference.js","../../src/module/show-on.ts"],"sourcesContent":["/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseDifference;\n","import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nexport default difference;\n","\r\nimport { useUniDirective } from '../composable';\r\nimport { fadeIn, fadeOut, selectAll, selectOne, module } from '../service';\r\nimport { difference } from 'lodash-es';\r\n\r\ntype HTMLInputTypes = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\r\ntype Conditions = Record<string, any>;\r\n\r\nexport class ShowOn {\r\n el!: HTMLElement;\r\n input!: HTMLInputTypes;\r\n conditions: Conditions = {};\r\n targets = {};\r\n defaultReadonly: boolean | null = null;\r\n initialDisplay!: string;\r\n\r\n constructor(el: HTMLElement, conditions: Conditions) {\r\n this.el = el;\r\n this.input = this.el.querySelector<HTMLInputTypes>(\r\n this.el.dataset.inputSelector || '[data-field-input]'\r\n )!;\r\n this.conditions = conditions;\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.initialDisplay = window.getComputedStyle(this.el).display || 'block';\r\n\r\n for (const selector in this.conditions) {\r\n const value = this.conditions[selector];\r\n\r\n const target = selectOne<HTMLElement>(selector)!;\r\n\r\n if (this.input) {\r\n this.defaultReadonly = this.input.hasAttribute('readonly');\r\n }\r\n\r\n let listenTarget: HTMLInputTypes[];\r\n\r\n if (target.nodeName === 'DIV') {\r\n listenTarget = Array.from(target.querySelectorAll<HTMLInputTypes>('input, select, textarea'));\r\n } else {\r\n listenTarget = [target as HTMLInputTypes];\r\n }\r\n\r\n selectAll(listenTarget, (ele) => {\r\n ele.addEventListener('change', () => {\r\n this.updateShowState(target, value);\r\n });\r\n });\r\n\r\n this.updateShowState(target, value, 1);\r\n }\r\n }\r\n\r\n updateShowState(target: HTMLElement, value: any, duration = 300) {\r\n const matched = this.isValueMatched(target, value);\r\n\r\n if (matched) {\r\n setTimeout(() => {\r\n fadeIn(this.el, duration, this.initialDisplay);\r\n }, duration + 30);\r\n } else {\r\n if (this.input) {\r\n this.defaultReadonly ??= this.input.hasAttribute('readonly');\r\n }\r\n\r\n fadeOut(this.el, duration);\r\n }\r\n\r\n if (this.input) {\r\n if (matched) {\r\n if (!this.defaultReadonly) {\r\n this.input.removeAttribute('readonly');\r\n }\r\n\r\n this.defaultReadonly = null;\r\n } else {\r\n this.input.setAttribute('readonly', 'readonly');\r\n }\r\n }\r\n }\r\n\r\n isValueMatched(target: HTMLElement, value: any) {\r\n let targetValue: any = null;\r\n\r\n const type = this.nodeType(target);\r\n\r\n switch (type) {\r\n case 'input':\r\n case 'textarea':\r\n targetValue = (target as HTMLInputElement).value;\r\n break;\r\n case 'select':\r\n if (!(target as HTMLSelectElement).multiple) {\r\n targetValue = (target as HTMLSelectElement).value;\r\n } else {\r\n targetValue = selectAll(target.querySelectorAll('option'))\r\n .filter(option => option.selected)\r\n .map(option => option.value);\r\n }\r\n break;\r\n\r\n case 'checkbox':\r\n targetValue = (target as HTMLInputElement).checked ? (target as HTMLInputElement).value : [null, false];\r\n break;\r\n\r\n case 'radio':\r\n targetValue = target.querySelector<HTMLInputElement>('input[type=radio]:checked')?.value;\r\n break;\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n if (Array.isArray(targetValue)) {\r\n return difference(value, targetValue).length === 0;\r\n }\r\n\r\n return value.indexOf(targetValue) !== -1;\r\n }\r\n\r\n if (targetValue && Array.isArray(targetValue)) {\r\n return targetValue.indexOf(value) !== -1;\r\n }\r\n\r\n return value == targetValue;\r\n }\r\n\r\n /**\r\n * @see https://github.com/nickjackson/val/blob/master/index.js#L55\r\n * @param el\r\n * @returns {string}\r\n */\r\n nodeType(el: HTMLElement): \"select\" | \"textarea\" | \"checkbox\" | \"input\" | \"radio\" {\r\n var node = el.nodeName.toLowerCase();\r\n var type = (el as HTMLInputElement).type;\r\n\r\n if (node === 'select') {\r\n return 'select';\r\n }\r\n\r\n if (node === 'textarea') {\r\n return 'textarea';\r\n }\r\n\r\n if (node === 'input') {\r\n if (type === 'checkbox') {\r\n return 'checkbox';\r\n }\r\n\r\n return 'input';\r\n }\r\n\r\n if (node === 'div') {\r\n if (el.querySelector('input[type=radio]')) {\r\n return 'radio';\r\n }\r\n }\r\n\r\n return 'input';\r\n }\r\n}\r\n\r\nexport const ready = useUniDirective('show-on', {\r\n mounted(el, { value }) {\r\n module<HTMLElement, HTMLElement>(el, 'show.on', (el) => {\r\n return new ShowOn(el, JSON.parse(value));\r\n });\r\n }\r\n});\r\n\r\nexport interface ShowOnModule {\r\n ShowOn: typeof ShowOn;\r\n ready: typeof ready;\r\n}\r\n"],"names":["Symbol","el"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
1
+ {"version":3,"file":"show-on.js","sources":["../../../../../../node_modules/lodash-es/_baseFindIndex.js","../../../../../../node_modules/lodash-es/_baseIsNaN.js","../../../../../../node_modules/lodash-es/_strictIndexOf.js","../../../../../../node_modules/lodash-es/_baseIndexOf.js","../../../../../../node_modules/lodash-es/_arrayIncludes.js","../../../../../../node_modules/lodash-es/_isFlattenable.js","../../../../../../node_modules/lodash-es/_baseFlatten.js","../../../../../../node_modules/lodash-es/_setCacheAdd.js","../../../../../../node_modules/lodash-es/_setCacheHas.js","../../../../../../node_modules/lodash-es/_SetCache.js","../../../../../../node_modules/lodash-es/_cacheHas.js","../../../../../../node_modules/lodash-es/isArrayLikeObject.js","../../../../../../node_modules/lodash-es/_baseDifference.js","../../../../../../node_modules/lodash-es/difference.js","../../src/module/show-on.ts"],"sourcesContent":["/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport arrayMap from './_arrayMap.js';\nimport baseUnary from './_baseUnary.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseDifference;\n","import baseDifference from './_baseDifference.js';\nimport baseFlatten from './_baseFlatten.js';\nimport baseRest from './_baseRest.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nexport default difference;\n","\nimport { useUniDirective } from '../composable';\nimport { fadeIn, fadeOut, selectAll, selectOne, module } from '../service';\nimport { difference } from 'lodash-es';\n\ntype HTMLInputTypes = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\ntype Conditions = Record<string, any>;\n\nexport class ShowOn {\n el!: HTMLElement;\n input!: HTMLInputTypes;\n conditions: Conditions = {};\n targets = {};\n defaultReadonly: boolean | null = null;\n initialDisplay!: string;\n\n constructor(el: HTMLElement, conditions: Conditions) {\n this.el = el;\n this.input = this.el.querySelector<HTMLInputTypes>(\n this.el.dataset.inputSelector || '[data-field-input]'\n )!;\n this.conditions = conditions;\n\n this.init();\n }\n\n init() {\n this.initialDisplay = window.getComputedStyle(this.el).display || 'block';\n\n for (const selector in this.conditions) {\n const value = this.conditions[selector];\n\n const target = selectOne<HTMLElement>(selector)!;\n\n if (this.input) {\n this.defaultReadonly = this.input.hasAttribute('readonly');\n }\n\n let listenTarget: HTMLInputTypes[];\n\n if (target.nodeName === 'DIV') {\n listenTarget = Array.from(target.querySelectorAll<HTMLInputTypes>('input, select, textarea'));\n } else {\n listenTarget = [target as HTMLInputTypes];\n }\n\n selectAll(listenTarget, (ele) => {\n ele.addEventListener('change', () => {\n this.updateShowState(target, value);\n });\n });\n\n this.updateShowState(target, value, 1);\n }\n }\n\n updateShowState(target: HTMLElement, value: any, duration = 300) {\n const matched = this.isValueMatched(target, value);\n\n if (matched) {\n setTimeout(() => {\n fadeIn(this.el, duration, this.initialDisplay);\n }, duration + 30);\n } else {\n if (this.input) {\n this.defaultReadonly ??= this.input.hasAttribute('readonly');\n }\n\n fadeOut(this.el, duration);\n }\n\n if (this.input) {\n if (matched) {\n if (!this.defaultReadonly) {\n this.input.removeAttribute('readonly');\n }\n\n this.defaultReadonly = null;\n } else {\n this.input.setAttribute('readonly', 'readonly');\n }\n }\n }\n\n isValueMatched(target: HTMLElement, value: any) {\n let targetValue: any = null;\n\n const type = this.nodeType(target);\n\n switch (type) {\n case 'input':\n case 'textarea':\n targetValue = (target as HTMLInputElement).value;\n break;\n case 'select':\n if (!(target as HTMLSelectElement).multiple) {\n targetValue = (target as HTMLSelectElement).value;\n } else {\n targetValue = selectAll(target.querySelectorAll('option'))\n .filter(option => option.selected)\n .map(option => option.value);\n }\n break;\n\n case 'checkbox':\n targetValue = (target as HTMLInputElement).checked ? (target as HTMLInputElement).value : [null, false];\n break;\n\n case 'radio':\n targetValue = target.querySelector<HTMLInputElement>('input[type=radio]:checked')?.value;\n break;\n }\n\n if (Array.isArray(value)) {\n if (Array.isArray(targetValue)) {\n return difference(value, targetValue).length === 0;\n }\n\n return value.indexOf(targetValue) !== -1;\n }\n\n if (targetValue && Array.isArray(targetValue)) {\n return targetValue.indexOf(value) !== -1;\n }\n\n return value == targetValue;\n }\n\n /**\n * @see https://github.com/nickjackson/val/blob/master/index.js#L55\n * @param el\n * @returns {string}\n */\n nodeType(el: HTMLElement): \"select\" | \"textarea\" | \"checkbox\" | \"input\" | \"radio\" {\n var node = el.nodeName.toLowerCase();\n var type = (el as HTMLInputElement).type;\n\n if (node === 'select') {\n return 'select';\n }\n\n if (node === 'textarea') {\n return 'textarea';\n }\n\n if (node === 'input') {\n if (type === 'checkbox') {\n return 'checkbox';\n }\n\n return 'input';\n }\n\n if (node === 'div') {\n if (el.querySelector('input[type=radio]')) {\n return 'radio';\n }\n }\n\n return 'input';\n }\n}\n\nexport const ready = useUniDirective('show-on', {\n mounted(el, { value }) {\n module<HTMLElement, HTMLElement>(el, 'show.on', (el) => {\n return new ShowOn(el, JSON.parse(value));\n });\n }\n});\n\nexport interface ShowOnModule {\n ShowOn: typeof ShowOn;\n ready: typeof ready;\n}\n"],"names":["Symbol","module","el"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}
@@ -1 +1 @@
1
- {"version":3,"file":"tinymce.js","sources":["../../src/module/tinymce.ts"],"sourcesContent":["import type { Editor, EditorOptions, TinyMCE } from 'tinymce';\r\nimport { useHttpClient, useStack } from '../composable';\r\nimport { useImport, useScriptImport } from '../service';\r\nimport { Dictionary, MaybePromise } from '../types';\r\nimport { mergeDeep } from '../utilities';\r\n\r\nconst instances: Dictionary<TinymceController> = {};\r\nlet hooks: ((tinymce: TinyMCE) => MaybePromise<any>)[] = [];\r\nlet imported: Promise<TinyMCE>;\r\n\r\ndeclare type UploadHandlerParams = Parameters<NonNullable<EditorOptions['images_upload_handler']>>;\r\n\r\nexport async function get(\r\n selector: string,\r\n options: Record<string, any> = {}\r\n): Promise<TinymceController> {\r\n return instances[selector] ??= await create(document.querySelector<HTMLElement>(selector)!, options);\r\n}\r\n\r\nexport async function create(\r\n selector: string | HTMLElement,\r\n options: Record<string, any> = {}\r\n): Promise<TinymceController> {\r\n const tinymce = await loadTinymce();\r\n let el: HTMLElement;\r\n\r\n if (typeof selector === 'string') {\r\n el = document.querySelector<HTMLElement>(selector)!;\r\n } else {\r\n el = selector;\r\n }\r\n\r\n return new TinymceController(tinymce, el, options);\r\n}\r\n\r\nexport function destroy(selector: string): void {\r\n delete instances[selector];\r\n}\r\n\r\nexport function addHook(handler: ((tinymce: TinyMCE) => MaybePromise<any>)) {\r\n hooks.push(handler);\r\n}\r\n\r\nexport function clearHooks() {\r\n hooks = [];\r\n}\r\n\r\nasync function loadTinymce(): Promise<TinyMCE> {\r\n return imported ??= new Promise((resolve) => {\r\n useScriptImport('@tinymce').then(() => {\r\n for (const hook of hooks) {\r\n hook(tinymce);\r\n }\r\n registerDragPlugin(tinymce).then(() => {\r\n resolve(tinymce);\r\n });\r\n });\r\n });\r\n}\r\n\r\nconst defaultOptions: Record<string, any> = {};\r\n\r\nexport class TinymceController {\r\n editor?: Editor;\r\n options: Record<string, any> = {};\r\n\r\n constructor(protected tinymce: TinyMCE, public element: HTMLElement, options: Record<string, any>) {\r\n this.options = mergeDeep(\r\n {\r\n unicorn: {\r\n stack_name: 'uploading'\r\n }\r\n },\r\n defaultOptions,\r\n this.prepareOptions(options, tinymce.majorVersion),\r\n );\r\n\r\n this.options.target = element;\r\n\r\n tinymce.init(this.options).then((editor) => {\r\n this.editor = editor[0];\r\n });\r\n }\r\n\r\n prepareOptions(options: Record<string, any>, version = '6') {\r\n const defaults: Partial<EditorOptions> = {};\r\n\r\n if (options.images_upload_url) {\r\n defaults.paste_data_images = true;\r\n defaults.remove_script_host = false;\r\n defaults.relative_urls = false;\r\n\r\n if (Number(version) >= 6) {\r\n defaults.images_upload_handler = (blobInfo, progress) =>\r\n this.imageUploadHandler(blobInfo, progress);\r\n } else {\r\n options.plugins.push('paste');\r\n\r\n // @ts-ignore\r\n defaults.images_upload_handler = (blobInfo, success, failure, progress) =>\r\n this.imageUploadHandler(blobInfo, progress)\r\n .then((url) => {\r\n success(url);\r\n return url;\r\n })\r\n .catch((e) => {\r\n failure(e.message, { remove: true });\r\n throw e;\r\n });\r\n }\r\n }\r\n\r\n // defaults.file_picker_callback = (...args) => this.filePickerCallback(...args);\r\n\r\n defaults.plugins = defaults.plugins || [];\r\n\r\n defaults.setup = (editor) => {\r\n editor.on('change', () => {\r\n this.tinymce.triggerSave();\r\n });\r\n };\r\n\r\n options = mergeDeep({}, defaults, options);\r\n\r\n if (options.plugins.indexOf('unicorndragdrop') === -1) {\r\n options.plugins.push('unicorndragdrop');\r\n }\r\n\r\n return options;\r\n }\r\n\r\n insert(text: string) {\r\n this.editor?.insertContent(text);\r\n }\r\n\r\n getValue(): string {\r\n return this.editor?.getContent() ?? '';\r\n }\r\n\r\n setValue(text: string): void {\r\n this.editor?.setContent(text);\r\n }\r\n\r\n // filePickerCallback(callback, value, meta) {\r\n // const input = document.createElement('input');\r\n // input.setAttribute('type', 'file');\r\n // input.style.display = 'none';\r\n //\r\n // if (meta.filetype === 'image') {\r\n // input.setAttribute('accept', `image/\\*`);\r\n // }\r\n //\r\n // document.body.appendChild(input);\r\n //\r\n // input.onchange = function () {\r\n // const file = this.files[0];\r\n //\r\n // const reader = new FileReader();\r\n // reader.onload = function () {\r\n // const id = 'blobid' + (new Date()).getTime();\r\n // const blobCache = tinymce.activeEditor.editorUpload.blobCache;\r\n // const base64 = reader.result.split(',')[1];\r\n // const blobInfo = blobCache.create(id, file, base64);\r\n // blobCache.add(blobInfo);\r\n //\r\n // /* call the callback and populate the Title field with the file name */\r\n // callback(blobInfo.blobUri(), { title: file.name, text: file.name });\r\n // };\r\n // reader.readAsDataURL(file);\r\n // input.remove();\r\n // };\r\n //\r\n // input.click();\r\n // }\r\n\r\n async imageUploadHandler(blobInfo: UploadHandlerParams[0], progress: UploadHandlerParams[1]) {\r\n const element = this.element;\r\n\r\n element.dispatchEvent(new CustomEvent('upload-start'));\r\n\r\n const formData = new FormData();\r\n formData.append('file', blobInfo.blob(), blobInfo.filename());\r\n\r\n const stack = useStack(this.options.unicorn.stack_name);\r\n stack.push(true);\r\n\r\n const { post, isAxiosError } = await useHttpClient();\r\n\r\n try {\r\n let res = await post(\r\n this.options.images_upload_url,\r\n formData,\r\n {\r\n withCredentials: false,\r\n onUploadProgress: (e) => {\r\n progress(e.loaded / e.total! * 100);\r\n }\r\n }\r\n );\r\n element.dispatchEvent(new CustomEvent('upload-success'));\r\n\r\n return res.data.data.url;\r\n } catch (err) {\r\n if (isAxiosError(err)) {\r\n const message = err?.response?.data?.message || err.message;\r\n console.error(err?.response?.data?.message || err.message, err);\r\n element.dispatchEvent(new CustomEvent('upload-error', { detail: err }));\r\n\r\n return Promise.reject({ message, remove: true });\r\n }\r\n\r\n throw err;\r\n } finally {\r\n element.dispatchEvent(new CustomEvent('upload-complete'));\r\n stack.pop();\r\n }\r\n }\r\n}\r\n\r\nfunction registerDragPlugin(tinymce: TinyMCE) {\r\n tinymce.PluginManager.add('unicorndragdrop', function (editor) {\r\n // Reset the drop area border\r\n tinymce.DOM.bind(document, 'dragleave', function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n if (tinymce.activeEditor) {\r\n tinymce.activeEditor.contentAreaContainer.style.transition = 'all .3s';\r\n tinymce.activeEditor.contentAreaContainer.style.borderWidth = '';\r\n }\r\n\r\n return false;\r\n });\r\n\r\n if (typeof FormData !== 'undefined') {\r\n\r\n // Fix for Chrome\r\n editor.on('dragenter', e => {\r\n e.stopPropagation();\r\n return false;\r\n });\r\n\r\n // Notify user when file is over the drop area\r\n editor.on('dragover', e => {\r\n e.preventDefault();\r\n\r\n if (tinymce.activeEditor) {\r\n tinymce.activeEditor.contentAreaContainer.style.transition = 'all .3s';\r\n tinymce.activeEditor.contentAreaContainer.style.border = '3px dashed rgba(0, 0, 0, .35)';\r\n }\r\n\r\n return false;\r\n });\r\n\r\n editor.on('drop', e => {\r\n editor.contentAreaContainer.style.borderWidth = '';\r\n editor.contentAreaContainer.style.borderWidth = '';\r\n });\r\n }\r\n });\r\n\r\n return Promise.resolve();\r\n}\r\n\r\nexport interface TinymceModule {\r\n get: typeof get;\r\n create: typeof create;\r\n destroy: typeof destroy;\r\n addHook: typeof addHook;\r\n clearHooks: typeof clearHooks;\r\n TinymceController: typeof TinymceController;\r\n}\r\n\r\ndeclare global {\r\n var tinymce: TinyMCE;\r\n}\r\n"],"names":["tinymce"],"mappings":"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"}
1
+ {"version":3,"file":"tinymce.js","sources":["../../src/module/tinymce.ts"],"sourcesContent":["import type { Editor, EditorOptions, TinyMCE } from 'tinymce';\nimport { useHttpClient, useStack } from '../composable';\nimport { useImport, useScriptImport } from '../service';\nimport { Dictionary, MaybePromise } from '../types';\nimport { mergeDeep } from '../utilities';\n\nconst instances: Dictionary<TinymceController> = {};\nlet hooks: ((tinymce: TinyMCE) => MaybePromise<any>)[] = [];\nlet imported: Promise<TinyMCE>;\n\ndeclare type UploadHandlerParams = Parameters<NonNullable<EditorOptions['images_upload_handler']>>;\n\nexport async function get(\n selector: string,\n options: Record<string, any> = {}\n): Promise<TinymceController> {\n return instances[selector] ??= await create(document.querySelector<HTMLElement>(selector)!, options);\n}\n\nexport async function create(\n selector: string | HTMLElement,\n options: Record<string, any> = {}\n): Promise<TinymceController> {\n const tinymce = await loadTinymce();\n let el: HTMLElement;\n\n if (typeof selector === 'string') {\n el = document.querySelector<HTMLElement>(selector)!;\n } else {\n el = selector;\n }\n\n return new TinymceController(tinymce, el, options);\n}\n\nexport function destroy(selector: string): void {\n delete instances[selector];\n}\n\nexport function addHook(handler: ((tinymce: TinyMCE) => MaybePromise<any>)) {\n hooks.push(handler);\n}\n\nexport function clearHooks() {\n hooks = [];\n}\n\nasync function loadTinymce(): Promise<TinyMCE> {\n return imported ??= new Promise((resolve) => {\n useScriptImport('@tinymce').then(() => {\n for (const hook of hooks) {\n hook(tinymce);\n }\n registerDragPlugin(tinymce).then(() => {\n resolve(tinymce);\n });\n });\n });\n}\n\nconst defaultOptions: Record<string, any> = {};\n\nexport class TinymceController {\n editor?: Editor;\n options: Record<string, any> = {};\n\n constructor(protected tinymce: TinyMCE, public element: HTMLElement, options: Record<string, any>) {\n this.options = mergeDeep(\n {\n unicorn: {\n stack_name: 'uploading'\n }\n },\n defaultOptions,\n this.prepareOptions(options, tinymce.majorVersion),\n );\n\n this.options.target = element;\n\n tinymce.init(this.options).then((editor) => {\n this.editor = editor[0];\n });\n }\n\n prepareOptions(options: Record<string, any>, version = '6') {\n const defaults: Partial<EditorOptions> = {};\n\n if (options.images_upload_url) {\n defaults.paste_data_images = true;\n defaults.remove_script_host = false;\n defaults.relative_urls = false;\n\n if (Number(version) >= 6) {\n defaults.images_upload_handler = (blobInfo, progress) =>\n this.imageUploadHandler(blobInfo, progress);\n } else {\n options.plugins.push('paste');\n\n // @ts-ignore\n defaults.images_upload_handler = (blobInfo, success, failure, progress) =>\n this.imageUploadHandler(blobInfo, progress)\n .then((url) => {\n success(url);\n return url;\n })\n .catch((e) => {\n failure(e.message, { remove: true });\n throw e;\n });\n }\n }\n\n // defaults.file_picker_callback = (...args) => this.filePickerCallback(...args);\n\n defaults.plugins = defaults.plugins || [];\n\n defaults.setup = (editor) => {\n editor.on('change', () => {\n this.tinymce.triggerSave();\n });\n };\n\n options = mergeDeep({}, defaults, options);\n\n if (options.plugins.indexOf('unicorndragdrop') === -1) {\n options.plugins.push('unicorndragdrop');\n }\n\n return options;\n }\n\n insert(text: string) {\n this.editor?.insertContent(text);\n }\n\n getValue(): string {\n return this.editor?.getContent() ?? '';\n }\n\n setValue(text: string): void {\n this.editor?.setContent(text);\n }\n\n // filePickerCallback(callback, value, meta) {\n // const input = document.createElement('input');\n // input.setAttribute('type', 'file');\n // input.style.display = 'none';\n //\n // if (meta.filetype === 'image') {\n // input.setAttribute('accept', `image/\\*`);\n // }\n //\n // document.body.appendChild(input);\n //\n // input.onchange = function () {\n // const file = this.files[0];\n //\n // const reader = new FileReader();\n // reader.onload = function () {\n // const id = 'blobid' + (new Date()).getTime();\n // const blobCache = tinymce.activeEditor.editorUpload.blobCache;\n // const base64 = reader.result.split(',')[1];\n // const blobInfo = blobCache.create(id, file, base64);\n // blobCache.add(blobInfo);\n //\n // /* call the callback and populate the Title field with the file name */\n // callback(blobInfo.blobUri(), { title: file.name, text: file.name });\n // };\n // reader.readAsDataURL(file);\n // input.remove();\n // };\n //\n // input.click();\n // }\n\n async imageUploadHandler(blobInfo: UploadHandlerParams[0], progress: UploadHandlerParams[1]) {\n const element = this.element;\n\n element.dispatchEvent(new CustomEvent('upload-start'));\n\n const formData = new FormData();\n formData.append('file', blobInfo.blob(), blobInfo.filename());\n\n const stack = useStack(this.options.unicorn.stack_name);\n stack.push(true);\n\n const { post, isAxiosError } = await useHttpClient();\n\n try {\n let res = await post(\n this.options.images_upload_url,\n formData,\n {\n withCredentials: false,\n onUploadProgress: (e) => {\n progress(e.loaded / e.total! * 100);\n }\n }\n );\n element.dispatchEvent(new CustomEvent('upload-success'));\n\n return res.data.data.url;\n } catch (err) {\n if (isAxiosError(err)) {\n const message = err?.response?.data?.message || err.message;\n console.error(err?.response?.data?.message || err.message, err);\n element.dispatchEvent(new CustomEvent('upload-error', { detail: err }));\n\n return Promise.reject({ message, remove: true });\n }\n\n throw err;\n } finally {\n element.dispatchEvent(new CustomEvent('upload-complete'));\n stack.pop();\n }\n }\n}\n\nfunction registerDragPlugin(tinymce: TinyMCE) {\n tinymce.PluginManager.add('unicorndragdrop', function (editor) {\n // Reset the drop area border\n tinymce.DOM.bind(document, 'dragleave', function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n if (tinymce.activeEditor) {\n tinymce.activeEditor.contentAreaContainer.style.transition = 'all .3s';\n tinymce.activeEditor.contentAreaContainer.style.borderWidth = '';\n }\n\n return false;\n });\n\n if (typeof FormData !== 'undefined') {\n\n // Fix for Chrome\n editor.on('dragenter', e => {\n e.stopPropagation();\n return false;\n });\n\n // Notify user when file is over the drop area\n editor.on('dragover', e => {\n e.preventDefault();\n\n if (tinymce.activeEditor) {\n tinymce.activeEditor.contentAreaContainer.style.transition = 'all .3s';\n tinymce.activeEditor.contentAreaContainer.style.border = '3px dashed rgba(0, 0, 0, .35)';\n }\n\n return false;\n });\n\n editor.on('drop', e => {\n editor.contentAreaContainer.style.borderWidth = '';\n editor.contentAreaContainer.style.borderWidth = '';\n });\n }\n });\n\n return Promise.resolve();\n}\n\nexport interface TinymceModule {\n get: typeof get;\n create: typeof create;\n destroy: typeof destroy;\n addHook: typeof addHook;\n clearHooks: typeof clearHooks;\n TinymceController: typeof TinymceController;\n}\n\ndeclare global {\n var tinymce: TinyMCE;\n}\n"],"names":["tinymce"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ui-bootstrap5.js","sources":["../../src/module/ui-bootstrap5.ts"],"sourcesContent":["import * as bootstrap from 'bootstrap';\r\nimport { Tooltip } from 'bootstrap';\r\nimport type { ButtonRadio, ButtonRadioModule, ButtonRadioOptions } from '../bootstrap/button-radio';\r\nimport type { KeepTab, KeepTabModule, KeepTabOptions } from '../bootstrap/keep-tab';\r\nimport { html, selectAll, selectOne, uid } from '../service';\r\nimport type { UIThemeInterface } from '../types';\r\n\r\nexport class UIBootstrap5 implements UIThemeInterface {\r\n static instance: UIBootstrap5 | null = null;\r\n\r\n bootstrap = bootstrap;\r\n\r\n static get() {\r\n return this.instance ??= new this();\r\n }\r\n\r\n renderMessage(messages: string | string[], type: string = 'info'): () => void {\r\n if (!Array.isArray(messages)) {\r\n messages = [messages];\r\n }\r\n\r\n let text = '';\r\n const id = 'uni-msg-' + uid();\r\n\r\n messages.forEach((msg) => {\r\n text += `<div class=\"\">${msg}</div>`;\r\n });\r\n\r\n const msgHtml = html(`<div id=\"${id}\" class=\"alert alert-${type} alert-dismissible fade show\" role=\"alert\">\r\n ${text}\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n</div>`);\r\n\r\n const container = selectOne('.c-messages-container');\r\n\r\n if (container) {\r\n container.appendChild(msgHtml);\r\n }\r\n\r\n return () => {\r\n const ele = document.getElementById(id);\r\n\r\n if (ele) {\r\n ele.remove();\r\n }\r\n }\r\n }\r\n\r\n clearMessages() {\r\n const container = selectOne('.c-messages-container');\r\n\r\n if (container) {\r\n container.innerHTML = '';\r\n }\r\n }\r\n\r\n async keepTab(): Promise<KeepTabModule>;\r\n async keepTab(selector?: string | HTMLElement, options?: KeepTabOptions): Promise<KeepTab>;\r\n async keepTab(selector?: string | HTMLElement, options: KeepTabOptions = {}): Promise<any> {\r\n const module = await import('../bootstrap/keep-tab');\r\n\r\n await module.ready;\r\n\r\n if (selector) {\r\n return new module.KeepTab(selector, options);\r\n }\r\n\r\n return module;\r\n }\r\n\r\n async buttonRadio(): Promise<ButtonRadioModule>;\r\n async buttonRadio(selector?: string | HTMLElement, options?: ButtonRadioOptions): Promise<ButtonRadio>;\r\n async buttonRadio(selector?: string | HTMLElement, options: ButtonRadioOptions = {}): Promise<any> {\r\n const m = await import('../bootstrap/button-radio');\r\n\r\n await m.ready;\r\n\r\n if (selector) {\r\n return m.ButtonRadio.handle(selector, options);\r\n }\r\n\r\n return m;\r\n }\r\n\r\n tooltip(\r\n selector: NodeListOf<Element> | Element | string = '[data-bs-toggle=\"tooltip\"]',\r\n config: Partial<Tooltip.Options> = {}\r\n ): Tooltip[] {\r\n return this.selectAsArray(selector)\r\n .map((ele) => Tooltip.getOrCreateInstance(ele, config));\r\n }\r\n\r\n protected selectAsArray(selector: NodeListOf<Element> | Element | string) {\r\n if (selector instanceof NodeList) {\r\n return Array.from(selector);\r\n } else if (typeof selector === 'string') {\r\n return selectAll(selector);\r\n } else {\r\n return [selector];\r\n }\r\n }\r\n\r\n getMajorVersion(module: any) {\r\n return Number(module.VERSION.split('.').shift());\r\n }\r\n\r\n pushBootstrapToGlobal() {\r\n window.bootstrap = bootstrap;\r\n }\r\n}\r\n\r\ndeclare global {\r\n export interface Window {\r\n bootstrap: typeof bootstrap;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;AAOO,MAAM,aAAyC;AAAA,EACpD,OAAO,WAAgC;AAAA,EAEvC,YAAY;AAAA,EAEZ,OAAO,MAAM;AACX,WAAO,KAAK,aAAa,IAAI,KAAA;AAAA,EAC/B;AAAA,EAEA,cAAc,UAA6B,OAAe,QAAoB;AAC5E,QAAI,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAC5B,iBAAW,CAAC,QAAQ;AAAA,IACtB;AAEA,QAAI,OAAO;AACX,UAAM,KAAK,aAAa,IAAA;AAExB,aAAS,QAAQ,CAAC,QAAQ;AACxB,cAAQ,iBAAiB,GAAG;AAAA,IAC9B,CAAC;AAED,UAAM,UAAU,KAAK,YAAY,EAAE,wBAAwB,IAAI;AAAA,IAC/D,IAAI;AAAA;AAAA,OAED;AAEH,UAAM,YAAY,UAAU,uBAAuB;AAEnD,QAAI,WAAW;AACb,gBAAU,YAAY,OAAO;AAAA,IAC/B;AAEA,WAAO,MAAM;AACX,YAAM,MAAM,SAAS,eAAe,EAAE;AAEtC,UAAI,KAAK;AACP,YAAI,OAAA;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAgB;AACd,UAAM,YAAY,UAAU,uBAAuB;AAEnD,QAAI,WAAW;AACb,gBAAU,YAAY;AAAA,IACxB;AAAA,EACF;AAAA,EAIA,MAAM,QAAQ,UAAiC,UAA0B,IAAkB;AACzF,UAAM,SAAS,MAAM,OAAO,eAAuB;AAEnD,UAAM,OAAO;AAEb,QAAI,UAAU;AACZ,aAAO,IAAI,OAAO,QAAQ,UAAU,OAAO;AAAA,IAC7C;AAEA,WAAO;AAAA,EACT;AAAA,EAIA,MAAM,YAAY,UAAiC,UAA8B,IAAkB;AACjG,UAAM,IAAI,MAAM,OAAO,mBAA2B;AAElD,UAAM,EAAE;AAER,QAAI,UAAU;AACZ,aAAO,EAAE,YAAY,OAAO,UAAU,OAAO;AAAA,IAC/C;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,QACE,WAAmD,8BACnD,SAAmC,CAAA,GACxB;AACX,WAAO,KAAK,cAAc,QAAQ,EAC/B,IAAI,CAAC,QAAQ,QAAQ,oBAAoB,KAAK,MAAM,CAAC;AAAA,EAC1D;AAAA,EAEU,cAAc,UAAkD;AACxE,QAAI,oBAAoB,UAAU;AAChC,aAAO,MAAM,KAAK,QAAQ;AAAA,IAC5B,WAAW,OAAO,aAAa,UAAU;AACvC,aAAO,UAAU,QAAQ;AAAA,IAC3B,OAAO;AACL,aAAO,CAAC,QAAQ;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,gBAAgB,QAAa;AAC3B,WAAO,OAAO,OAAO,QAAQ,MAAM,GAAG,EAAE,OAAO;AAAA,EACjD;AAAA,EAEA,wBAAwB;AACtB,WAAO,YAAY;AAAA,EACrB;AACF;"}
1
+ {"version":3,"file":"ui-bootstrap5.js","sources":["../../src/module/ui-bootstrap5.ts"],"sourcesContent":["import * as bootstrap from 'bootstrap';\nimport { Tooltip } from 'bootstrap';\nimport type { ButtonRadio, ButtonRadioModule, ButtonRadioOptions } from '../bootstrap/button-radio';\nimport type { KeepTab, KeepTabModule, KeepTabOptions } from '../bootstrap/keep-tab';\nimport { html, selectAll, selectOne, uid } from '../service';\nimport type { UIThemeInterface } from '../types';\n\nexport class UIBootstrap5 implements UIThemeInterface {\n static instance: UIBootstrap5 | null = null;\n\n bootstrap = bootstrap;\n\n static get() {\n return this.instance ??= new this();\n }\n\n renderMessage(messages: string | string[], type: string = 'info'): () => void {\n if (!Array.isArray(messages)) {\n messages = [messages];\n }\n\n let text = '';\n const id = 'uni-msg-' + uid();\n\n messages.forEach((msg) => {\n text += `<div class=\"\">${msg}</div>`;\n });\n\n const msgHtml = html(`<div id=\"${id}\" class=\"alert alert-${type} alert-dismissible fade show\" role=\"alert\">\n ${text}\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\n</div>`);\n\n const container = selectOne('.c-messages-container');\n\n if (container) {\n container.appendChild(msgHtml);\n }\n\n return () => {\n const ele = document.getElementById(id);\n\n if (ele) {\n ele.remove();\n }\n }\n }\n\n clearMessages() {\n const container = selectOne('.c-messages-container');\n\n if (container) {\n container.innerHTML = '';\n }\n }\n\n async keepTab(): Promise<KeepTabModule>;\n async keepTab(selector?: string | HTMLElement, options?: KeepTabOptions): Promise<KeepTab>;\n async keepTab(selector?: string | HTMLElement, options: KeepTabOptions = {}): Promise<any> {\n const module = await import('../bootstrap/keep-tab');\n\n await module.ready;\n\n if (selector) {\n return new module.KeepTab(selector, options);\n }\n\n return module;\n }\n\n async buttonRadio(): Promise<ButtonRadioModule>;\n async buttonRadio(selector?: string | HTMLElement, options?: ButtonRadioOptions): Promise<ButtonRadio>;\n async buttonRadio(selector?: string | HTMLElement, options: ButtonRadioOptions = {}): Promise<any> {\n const m = await import('../bootstrap/button-radio');\n\n await m.ready;\n\n if (selector) {\n return m.ButtonRadio.handle(selector, options);\n }\n\n return m;\n }\n\n tooltip(\n selector: NodeListOf<Element> | Element | string = '[data-bs-toggle=\"tooltip\"]',\n config: Partial<Tooltip.Options> = {}\n ): Tooltip[] {\n return this.selectAsArray(selector)\n .map((ele) => Tooltip.getOrCreateInstance(ele, config));\n }\n\n protected selectAsArray(selector: NodeListOf<Element> | Element | string) {\n if (selector instanceof NodeList) {\n return Array.from(selector);\n } else if (typeof selector === 'string') {\n return selectAll(selector);\n } else {\n return [selector];\n }\n }\n\n getMajorVersion(module: any) {\n return Number(module.VERSION.split('.').shift());\n }\n\n pushBootstrapToGlobal() {\n window.bootstrap = bootstrap;\n }\n}\n\ndeclare global {\n export interface Window {\n bootstrap: typeof bootstrap;\n }\n}\n"],"names":[],"mappings":";;;AAOO,MAAM,aAAyC;AAAA,EACpD,OAAO,WAAgC;AAAA,EAEvC,YAAY;AAAA,EAEZ,OAAO,MAAM;AACX,WAAO,KAAK,aAAa,IAAI,KAAA;AAAA,EAC/B;AAAA,EAEA,cAAc,UAA6B,OAAe,QAAoB;AAC5E,QAAI,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAC5B,iBAAW,CAAC,QAAQ;AAAA,IACtB;AAEA,QAAI,OAAO;AACX,UAAM,KAAK,aAAa,IAAA;AAExB,aAAS,QAAQ,CAAC,QAAQ;AACxB,cAAQ,iBAAiB,GAAG;AAAA,IAC9B,CAAC;AAED,UAAM,UAAU,KAAK,YAAY,EAAE,wBAAwB,IAAI;AAAA,IAC/D,IAAI;AAAA;AAAA,OAED;AAEH,UAAM,YAAY,UAAU,uBAAuB;AAEnD,QAAI,WAAW;AACb,gBAAU,YAAY,OAAO;AAAA,IAC/B;AAEA,WAAO,MAAM;AACX,YAAM,MAAM,SAAS,eAAe,EAAE;AAEtC,UAAI,KAAK;AACP,YAAI,OAAA;AAAA,MACN;AAAA,IACF;AAAA,EACF;AAAA,EAEA,gBAAgB;AACd,UAAM,YAAY,UAAU,uBAAuB;AAEnD,QAAI,WAAW;AACb,gBAAU,YAAY;AAAA,IACxB;AAAA,EACF;AAAA,EAIA,MAAM,QAAQ,UAAiC,UAA0B,IAAkB;AACzF,UAAM,SAAS,MAAM,OAAO,eAAuB;AAEnD,UAAM,OAAO;AAEb,QAAI,UAAU;AACZ,aAAO,IAAI,OAAO,QAAQ,UAAU,OAAO;AAAA,IAC7C;AAEA,WAAO;AAAA,EACT;AAAA,EAIA,MAAM,YAAY,UAAiC,UAA8B,IAAkB;AACjG,UAAM,IAAI,MAAM,OAAO,mBAA2B;AAElD,UAAM,EAAE;AAER,QAAI,UAAU;AACZ,aAAO,EAAE,YAAY,OAAO,UAAU,OAAO;AAAA,IAC/C;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,QACE,WAAmD,8BACnD,SAAmC,CAAA,GACxB;AACX,WAAO,KAAK,cAAc,QAAQ,EAC/B,IAAI,CAAC,QAAQ,QAAQ,oBAAoB,KAAK,MAAM,CAAC;AAAA,EAC1D;AAAA,EAEU,cAAc,UAAkD;AACxE,QAAI,oBAAoB,UAAU;AAChC,aAAO,MAAM,KAAK,QAAQ;AAAA,IAC5B,WAAW,OAAO,aAAa,UAAU;AACvC,aAAO,UAAU,QAAQ;AAAA,IAC3B,OAAO;AACL,aAAO,CAAC,QAAQ;AAAA,IAClB;AAAA,EACF;AAAA,EAEA,gBAAgB,QAAa;AAC3B,WAAO,OAAO,OAAO,QAAQ,MAAM,GAAG,EAAE,OAAO;AAAA,EACjD;AAAA,EAEA,wBAAwB;AACtB,WAAO,YAAY;AAAA,EACrB;AACF;"}
@@ -232,7 +232,21 @@ function getBoundedInstanceList(selector, name, callback = () => null) {
232
232
  const items = typeof selector === "string" ? document.querySelectorAll(selector) : selector;
233
233
  return Array.from(items).map((ele) => getBoundedInstance(ele, name, callback));
234
234
  }
235
- function module(ele, name, callback = () => null) {
235
+ function removeBoundedInstance(selector, name) {
236
+ const element = typeof selector === "string" ? document.querySelector(selector) : selector;
237
+ if (element) {
238
+ removeData(element, name);
239
+ }
240
+ }
241
+ function module$1(ele, name, callback = () => null) {
242
+ if (callback === false) {
243
+ if (typeof ele === "string" || ele instanceof Element) {
244
+ removeBoundedInstance(ele, name);
245
+ return null;
246
+ }
247
+ Array.from(ele).forEach((el) => removeBoundedInstance(el, name));
248
+ return null;
249
+ }
236
250
  if (typeof ele === "string") {
237
251
  return getBoundedInstanceList(ele, name, callback);
238
252
  }
@@ -704,12 +718,15 @@ function nextTick(callback) {
704
718
  function wait(...promisee) {
705
719
  return Promise.all(promisee);
706
720
  }
721
+ function isError(e) {
722
+ return e instanceof Error;
723
+ }
707
724
  var sprintf = {};
708
725
  var hasRequiredSprintf;
709
726
  function requireSprintf() {
710
727
  if (hasRequiredSprintf) return sprintf;
711
728
  hasRequiredSprintf = 1;
712
- (function(exports) {
729
+ (function(exports$1) {
713
730
  !(function() {
714
731
  var re = {
715
732
  not_type: /[^T]/,
@@ -887,8 +904,8 @@ function requireSprintf() {
887
904
  return sprintf_cache[fmt] = parse_tree;
888
905
  }
889
906
  {
890
- exports["sprintf"] = sprintf2;
891
- exports["vsprintf"] = vsprintf;
907
+ exports$1["sprintf"] = sprintf2;
908
+ exports$1["vsprintf"] = vsprintf;
892
909
  }
893
910
  if (typeof window !== "undefined") {
894
911
  window["sprintf"] = sprintf2;
@@ -1061,7 +1078,7 @@ async function useCssImport(...hrefs) {
1061
1078
  return importedSheets[href];
1062
1079
  })
1063
1080
  );
1064
- const styles = modules.map((module2) => module2.default);
1081
+ const styles = modules.map((module) => module.default);
1065
1082
  return injectCssToDocument(...styles);
1066
1083
  }
1067
1084
  async function simulateCssImport(href) {
@@ -1109,14 +1126,14 @@ async function useCheckboxesMultiSelect(selector, options = {}) {
1109
1126
  return m;
1110
1127
  }
1111
1128
  async function useFieldCascadeSelect() {
1112
- const module2 = await import("./field-cascade-select.js");
1113
- await module2.ready;
1114
- return module2;
1129
+ const module = await import("./field-cascade-select.js");
1130
+ await module.ready;
1131
+ return module;
1115
1132
  }
1116
1133
  async function useFieldFileDrag() {
1117
- const module2 = await import("./field-file-drag.js");
1118
- await module2.ready;
1119
- return module2;
1134
+ const module = await import("./field-file-drag.js");
1135
+ await module.ready;
1136
+ return module;
1120
1137
  }
1121
1138
  function useFieldFlatpickr() {
1122
1139
  return import("./field-flatpickr.js");
@@ -1128,14 +1145,14 @@ function useFieldModalTree() {
1128
1145
  return import("./field-modal-tree.js");
1129
1146
  }
1130
1147
  async function useFieldRepeatable() {
1131
- const module2 = await import("./field-repeatable.js");
1132
- await module2.ready;
1133
- return module2;
1148
+ const module = await import("./field-repeatable.js");
1149
+ await module.ready;
1150
+ return module;
1134
1151
  }
1135
1152
  async function useFieldSingleImageDrag() {
1136
- const module2 = await import("./field-single-image-drag.js");
1137
- await module2.ready;
1138
- return module2;
1153
+ const module = await import("./field-single-image-drag.js");
1154
+ await module.ready;
1155
+ return module;
1139
1156
  }
1140
1157
  let formElement;
1141
1158
  async function useFormAsync(ele, options = {}) {
@@ -1152,7 +1169,7 @@ function useForm(ele, options = {}) {
1152
1169
  if (!el) {
1153
1170
  throw new Error(`Form element of: ${selector} not found.`);
1154
1171
  }
1155
- return module(
1172
+ return module$1(
1156
1173
  el,
1157
1174
  "unicorn.form",
1158
1175
  () => new formElement(selector, el, options)
@@ -1183,7 +1200,7 @@ function useGrid(ele, options = {}) {
1183
1200
  if (!form) {
1184
1201
  throw new Error("UnicornGrid is depends on UnicornForm");
1185
1202
  }
1186
- return module(
1203
+ return module$1(
1187
1204
  element,
1188
1205
  "grid.plugin",
1189
1206
  () => new gridElement(selector, element, form, options)
@@ -1199,18 +1216,18 @@ async function useHttpClient(config) {
1199
1216
  return createHttpClient(config);
1200
1217
  }
1201
1218
  async function useIframeModal() {
1202
- const module2 = await import("./iframe-modal.js");
1203
- await module2.ready;
1204
- return module2;
1219
+ const module = await import("./iframe-modal.js");
1220
+ await module.ready;
1221
+ return module;
1205
1222
  }
1206
1223
  async function useListDependent(element, dependent, options = {}) {
1207
- const module2 = await import("./list-dependent.js");
1208
- await module2.ready;
1224
+ const module = await import("./list-dependent.js");
1225
+ await module.ready;
1209
1226
  if (element) {
1210
- const { ListDependent } = module2;
1227
+ const { ListDependent } = module;
1211
1228
  return ListDependent.handle(element, dependent ?? void 0, options);
1212
1229
  }
1213
- return module2;
1230
+ return module;
1214
1231
  }
1215
1232
  const queues = {};
1216
1233
  function useQueue(name = "default", maxRunning = 1) {
@@ -1220,24 +1237,24 @@ function createQueue(maxRunning = 1) {
1220
1237
  return queue(maxRunning);
1221
1238
  }
1222
1239
  async function useS3Uploader(name, options = {}) {
1223
- const module2 = await import("./s3-uploader.js");
1240
+ const module = await import("./s3-uploader.js");
1224
1241
  if (!name) {
1225
- return module2;
1242
+ return module;
1226
1243
  }
1227
- const { get } = module2;
1244
+ const { get } = module;
1228
1245
  return get(name, options);
1229
1246
  }
1230
1247
  async function useS3MultipartUploader(options) {
1231
- const module2 = await import("./s3-multipart-uploader.js");
1248
+ const module = await import("./s3-multipart-uploader.js");
1232
1249
  if (options != null) {
1233
- return new module2.S3MultipartUploader(options);
1250
+ return new module.S3MultipartUploader(options);
1234
1251
  }
1235
- return module2;
1252
+ return module;
1236
1253
  }
1237
1254
  async function useShowOn() {
1238
- const module2 = await import("./show-on.js");
1239
- await module2.ready;
1240
- return module2;
1255
+ const module = await import("./show-on.js");
1256
+ await module.ready;
1257
+ return module;
1241
1258
  }
1242
1259
  const stacks = {};
1243
1260
  function useStack(name = "default", store = []) {
@@ -1252,7 +1269,7 @@ async function useTomSelect(selector, options = {}, theme = "bootstrap5") {
1252
1269
  useCssImport(`@vendor/tom-select/dist/css/tom-select.${theme}.min.css`)
1253
1270
  );
1254
1271
  if (selector) {
1255
- module(
1272
+ module$1(
1256
1273
  selector,
1257
1274
  "tom.select",
1258
1275
  (ele) => {
@@ -1294,11 +1311,11 @@ async function useTomSelect(selector, options = {}, theme = "bootstrap5") {
1294
1311
  return m;
1295
1312
  }
1296
1313
  async function useTinymce(selector, options = {}) {
1297
- const module2 = await import("./tinymce.js");
1314
+ const module = await import("./tinymce.js");
1298
1315
  if (selector) {
1299
- return module2.get(selector, options);
1316
+ return module.get(selector, options);
1300
1317
  }
1301
- return module2;
1318
+ return module;
1302
1319
  }
1303
1320
  async function useTinymceHook(handler) {
1304
1321
  const { addHook } = await import("./tinymce.js");
@@ -1346,10 +1363,10 @@ async function createWebDirective(options = {}) {
1346
1363
  return wd;
1347
1364
  }
1348
1365
  async function useFormValidation(selector) {
1349
- const module2 = await import("./validation.js");
1350
- await module2.ready;
1366
+ const module = await import("./validation.js");
1367
+ await module.ready;
1351
1368
  if (!selector) {
1352
- return module2;
1369
+ return module;
1353
1370
  }
1354
1371
  return useFormValidationInstance(selector);
1355
1372
  }
@@ -1610,7 +1627,7 @@ async function useColorPicker(selector, options = {}) {
1610
1627
  }
1611
1628
  }
1612
1629
  if (selector) {
1613
- module(selector, "spectrum", (ele) => Spectrum.getInstance(ele, options));
1630
+ return module$1(selector, "spectrum", (ele) => Spectrum.getInstance(ele, options));
1614
1631
  }
1615
1632
  return m;
1616
1633
  }
@@ -1984,11 +2001,11 @@ class UnicornApp extends (/* @__PURE__ */ Mixin(EventMixin)) {
1984
2001
  return this;
1985
2002
  }
1986
2003
  inject(id, def) {
1987
- if (!typeof this.registry.has(id)) {
2004
+ if (!this.registry.has(id)) {
1988
2005
  if (def !== void 0) {
1989
2006
  return def;
1990
2007
  }
1991
- throw new Error(`Injectable: ${id.name} not found.`);
2008
+ throw new Error(`Injectable: "${id.name ?? id}" not found.`);
1992
2009
  }
1993
2010
  return this.registry.get(id);
1994
2011
  }
@@ -2058,9 +2075,9 @@ function polyfill() {
2058
2075
  }
2059
2076
  }
2060
2077
  async function useFieldMultiUploader() {
2061
- const module2 = await import("./field-multi-uploader.js");
2062
- await module2.ready;
2063
- return module2;
2078
+ const module = await import("./field-multi-uploader.js");
2079
+ await module.ready;
2080
+ return module;
2064
2081
  }
2065
2082
  function useUnicornPhpAdapter(app2) {
2066
2083
  app2 ??= useUnicorn();
@@ -2168,7 +2185,7 @@ export {
2168
2185
  useKeepAlive as Z,
2169
2186
  __ as _,
2170
2187
  useUniDirective as a,
2171
- useS3MultipartUploader as a$,
2188
+ useListDependent as a$,
2172
2189
  useBs5ButtonRadio as a0,
2173
2190
  useBs5Tooltip as a1,
2174
2191
  useFormAsync as a2,
@@ -2179,33 +2196,33 @@ export {
2179
2196
  mergeDeep as a7,
2180
2197
  injectCssToDocument as a8,
2181
2198
  watchAttributes as a9,
2182
- doImport as aA,
2183
- useSeriesImport as aB,
2184
- useCssIncludes as aC,
2185
- useAlertAdapter as aD,
2186
- useUI as aE,
2187
- UnicornUI as aF,
2188
- useVueComponentField as aG,
2189
- addUriBase as aH,
2190
- UnicornSystemUri as aI,
2191
- UnicornAssetUri as aJ,
2192
- addRoute as aK,
2193
- hasRoute as aL,
2194
- addQuery as aM,
2195
- parseQuery as aN,
2196
- buildQuery as aO,
2197
- useFieldCascadeSelect as aP,
2198
- useFieldFileDrag as aQ,
2199
- useFieldFlatpickr as aR,
2200
- useFieldModalSelect as aS,
2201
- useFieldModalTree as aT,
2202
- useFieldRepeatable as aU,
2203
- useFieldSingleImageDrag as aV,
2204
- useFormComponent as aW,
2205
- useGridComponent as aX,
2206
- useIframeModal as aY,
2207
- useListDependent as aZ,
2208
- useS3Uploader as a_,
2199
+ isError as aA,
2200
+ useLang as aB,
2201
+ doImport as aC,
2202
+ useSeriesImport as aD,
2203
+ useCssIncludes as aE,
2204
+ useAlertAdapter as aF,
2205
+ useUI as aG,
2206
+ UnicornUI as aH,
2207
+ useVueComponentField as aI,
2208
+ addUriBase as aJ,
2209
+ UnicornSystemUri as aK,
2210
+ UnicornAssetUri as aL,
2211
+ addRoute as aM,
2212
+ hasRoute as aN,
2213
+ addQuery as aO,
2214
+ parseQuery as aP,
2215
+ buildQuery as aQ,
2216
+ useFieldCascadeSelect as aR,
2217
+ useFieldFileDrag as aS,
2218
+ useFieldFlatpickr as aT,
2219
+ useFieldModalSelect as aU,
2220
+ useFieldModalTree as aV,
2221
+ useFieldRepeatable as aW,
2222
+ useFieldSingleImageDrag as aX,
2223
+ useFormComponent as aY,
2224
+ useGridComponent as aZ,
2225
+ useIframeModal as a_,
2209
2226
  useImport as aa,
2210
2227
  useCssImport as ab,
2211
2228
  data as ac,
@@ -2228,19 +2245,21 @@ export {
2228
2245
  removeData as at,
2229
2246
  randomBytes as au,
2230
2247
  randomBytesString as av,
2231
- AttributeMutationObserver as aw,
2232
- nextTick as ax,
2233
- wait as ay,
2234
- useLang as az,
2248
+ removeBoundedInstance as aw,
2249
+ AttributeMutationObserver as ax,
2250
+ nextTick as ay,
2251
+ wait as az,
2235
2252
  animateTo as b,
2236
- useShowOn as b0,
2237
- createStack as b1,
2238
- useTinymce as b2,
2239
- useTinymceHook as b3,
2240
- useUIBootstrap5 as b4,
2241
- useWebDirective as b5,
2242
- useUnicornPhpAdapter as b6,
2243
- UnicornPhpAdapter as b7,
2253
+ useS3Uploader as b0,
2254
+ useS3MultipartUploader as b1,
2255
+ useShowOn as b2,
2256
+ createStack as b3,
2257
+ useTinymce as b4,
2258
+ useTinymceHook as b5,
2259
+ useUIBootstrap5 as b6,
2260
+ useWebDirective as b7,
2261
+ useUnicornPhpAdapter as b8,
2262
+ UnicornPhpAdapter as b9,
2244
2263
  renderMessage as c,
2245
2264
  clearMessages as d,
2246
2265
  clearNotifies as e,
@@ -2264,6 +2283,6 @@ export {
2264
2283
  selectAll as w,
2265
2284
  getBoundedInstance as x,
2266
2285
  getBoundedInstanceList as y,
2267
- module as z
2286
+ module$1 as z
2268
2287
  };
2269
2288
  //# sourceMappingURL=unicorn.js.map