@windwalker-io/unicorn-next 0.1.17 → 0.1.18

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.
@@ -1407,20 +1407,19 @@ function useFormAsync(ele, options = {}) {
1407
1407
  const proxy = new Proxy({}, {
1408
1408
  get(target, prop) {
1409
1409
  return (...args) => {
1410
+ if (prop === "then" || prop === "catch") {
1411
+ return promise[prop].apply(promise, args);
1412
+ }
1410
1413
  return promise.then((form) => {
1411
- const func = form[prop];
1412
- if (typeof func === "function") {
1413
- return func.apply(form, args);
1414
+ const p = form[prop];
1415
+ if (typeof p === "function") {
1416
+ return p.apply(form, args);
1414
1417
  }
1415
- throw new Error(`Method ${String(prop)} does not exist on form.`);
1418
+ return p;
1416
1419
  });
1417
1420
  };
1418
1421
  }
1419
1422
  });
1420
- Object.assign(proxy, {
1421
- then: promise.then.bind(promise),
1422
- catch: promise.catch.bind(promise)
1423
- });
1424
1423
  return proxy;
1425
1424
  }
1426
1425
  function useForm(ele, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"unicorn.js","sources":["../../../../../../node_modules/ts-mixer/dist/esm/index.js","../../src/utilities/arr.ts","../../src/utilities/data.ts","../../src/service/dom.ts","../../src/service/animate.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/alert-adapter.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/alert.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/env.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/crypto.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/promise.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/queue.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/stack.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/timing.ts","../../src/service/crypto.ts","../../src/service/dom-watcher.ts","../../src/service/helper.ts","../../../../../../node_modules/sprintf-js/src/sprintf.js","../../src/service/lang.ts","../../src/service/loader.ts","../../src/composable/useUIBootstrap5.ts","../../src/composable/useBsModalAlert.ts","../../src/composable/useCheckboxesMultiSelect.ts","../../src/composable/useFieldCascadeSelect.ts","../../src/composable/useFieldFileDrag.ts","../../src/composable/useFieldFlatpickr.ts","../../src/composable/useFieldModalSelect.ts","../../src/composable/useFieldModalTree.ts","../../src/composable/useFieldRepeatable.ts","../../src/composable/useFieldSingleImageDrag.ts","../../src/composable/useForm.ts","../../src/composable/useGrid.ts","../../src/composable/useHttp.ts","../../src/composable/useIframeModal.ts","../../src/composable/useListDependent.ts","../../src/composable/useQueue.ts","../../src/composable/useS3Uploader.ts","../../src/composable/useShowOn.ts","../../src/composable/useStack.ts","../../src/composable/useTomSelect.ts","../../src/composable/useTinymce.ts","../../src/composable/useUniDirective.ts","../../src/composable/useValidation.ts","../../src/service/ui.ts","../../src/service/uri.ts","../../../../../../node_modules/qss/dist/qss.mjs","../../src/service/router.ts","../../src/utilities/base.ts","../../src/data.ts","../../src/events.ts","../../src/app.ts","../../src/polyfill/form-request-submit.ts","../../src/polyfill/index.ts","../../src/composable/useFieldMultiUploader.ts","../../src/plugin/php-adapter.ts","../../src/unicorn.ts"],"sourcesContent":["/**\n * Utility function that works like `Object.apply`, but copies getters and setters properly as well. Additionally gives\n * the option to exclude properties by name.\n */\nconst copyProps = (dest, src, exclude = []) => {\n const props = Object.getOwnPropertyDescriptors(src);\n for (let prop of exclude)\n delete props[prop];\n Object.defineProperties(dest, props);\n};\n/**\n * Returns the full chain of prototypes up until Object.prototype given a starting object. The order of prototypes will\n * be closest to farthest in the chain.\n */\nconst protoChain = (obj, currentChain = [obj]) => {\n const proto = Object.getPrototypeOf(obj);\n if (proto === null)\n return currentChain;\n return protoChain(proto, [...currentChain, proto]);\n};\n/**\n * Identifies the nearest ancestor common to all the given objects in their prototype chains. For most unrelated\n * objects, this function should return Object.prototype.\n */\nconst nearestCommonProto = (...objs) => {\n if (objs.length === 0)\n return undefined;\n let commonProto = undefined;\n const protoChains = objs.map(obj => protoChain(obj));\n while (protoChains.every(protoChain => protoChain.length > 0)) {\n const protos = protoChains.map(protoChain => protoChain.pop());\n const potentialCommonProto = protos[0];\n if (protos.every(proto => proto === potentialCommonProto))\n commonProto = potentialCommonProto;\n else\n break;\n }\n return commonProto;\n};\n/**\n * Creates a new prototype object that is a mixture of the given prototypes. The mixing is achieved by first\n * identifying the nearest common ancestor and using it as the prototype for a new object. Then all properties/methods\n * downstream of this prototype (ONLY downstream) are copied into the new object.\n *\n * The resulting prototype is more performant than softMixProtos(...), as well as ES5 compatible. However, it's not as\n * flexible as updates to the source prototypes aren't captured by the mixed result. See softMixProtos for why you may\n * want to use that instead.\n */\nconst hardMixProtos = (ingredients, constructor, exclude = []) => {\n var _a;\n const base = (_a = nearestCommonProto(...ingredients)) !== null && _a !== void 0 ? _a : Object.prototype;\n const mixedProto = Object.create(base);\n // Keeps track of prototypes we've already visited to avoid copying the same properties multiple times. We init the\n // list with the proto chain below the nearest common ancestor because we don't want any of those methods mixed in\n // when they will already be accessible via prototype access.\n const visitedProtos = protoChain(base);\n for (let prototype of ingredients) {\n let protos = protoChain(prototype);\n // Apply the prototype chain in reverse order so that old methods don't override newer ones.\n for (let i = protos.length - 1; i >= 0; i--) {\n let newProto = protos[i];\n if (visitedProtos.indexOf(newProto) === -1) {\n copyProps(mixedProto, newProto, ['constructor', ...exclude]);\n visitedProtos.push(newProto);\n }\n }\n }\n mixedProto.constructor = constructor;\n return mixedProto;\n};\nconst unique = (arr) => arr.filter((e, i) => arr.indexOf(e) == i);\n\n/**\n * Finds the ingredient with the given prop, searching in reverse order and breadth-first if searching ingredient\n * prototypes is required.\n */\nconst getIngredientWithProp = (prop, ingredients) => {\n const protoChains = ingredients.map(ingredient => protoChain(ingredient));\n // since we search breadth-first, we need to keep track of our depth in the prototype chains\n let protoDepth = 0;\n // not all prototype chains are the same depth, so this remains true as long as at least one of the ingredients'\n // prototype chains has an object at this depth\n let protosAreLeftToSearch = true;\n while (protosAreLeftToSearch) {\n // with the start of each horizontal slice, we assume this is the one that's deeper than any of the proto chains\n protosAreLeftToSearch = false;\n // scan through the ingredients right to left\n for (let i = ingredients.length - 1; i >= 0; i--) {\n const searchTarget = protoChains[i][protoDepth];\n if (searchTarget !== undefined && searchTarget !== null) {\n // if we find something, this is proof that this horizontal slice potentially more objects to search\n protosAreLeftToSearch = true;\n // eureka, we found it\n if (Object.getOwnPropertyDescriptor(searchTarget, prop) != undefined) {\n return protoChains[i][0];\n }\n }\n }\n protoDepth++;\n }\n return undefined;\n};\n/**\n * \"Mixes\" ingredients by wrapping them in a Proxy. The optional prototype argument allows the mixed object to sit\n * downstream of an existing prototype chain. Note that \"properties\" cannot be added, deleted, or modified.\n */\nconst proxyMix = (ingredients, prototype = Object.prototype) => new Proxy({}, {\n getPrototypeOf() {\n return prototype;\n },\n setPrototypeOf() {\n throw Error('Cannot set prototype of Proxies created by ts-mixer');\n },\n getOwnPropertyDescriptor(_, prop) {\n return Object.getOwnPropertyDescriptor(getIngredientWithProp(prop, ingredients) || {}, prop);\n },\n defineProperty() {\n throw new Error('Cannot define new properties on Proxies created by ts-mixer');\n },\n has(_, prop) {\n return getIngredientWithProp(prop, ingredients) !== undefined || prototype[prop] !== undefined;\n },\n get(_, prop) {\n return (getIngredientWithProp(prop, ingredients) || prototype)[prop];\n },\n set(_, prop, val) {\n const ingredientWithProp = getIngredientWithProp(prop, ingredients);\n if (ingredientWithProp === undefined)\n throw new Error('Cannot set new properties on Proxies created by ts-mixer');\n ingredientWithProp[prop] = val;\n return true;\n },\n deleteProperty() {\n throw new Error('Cannot delete properties on Proxies created by ts-mixer');\n },\n ownKeys() {\n return ingredients\n .map(Object.getOwnPropertyNames)\n .reduce((prev, curr) => curr.concat(prev.filter(key => curr.indexOf(key) < 0)));\n },\n});\n/**\n * Creates a new proxy-prototype object that is a \"soft\" mixture of the given prototypes. The mixing is achieved by\n * proxying all property access to the ingredients. This is not ES5 compatible and less performant. However, any\n * changes made to the source prototypes will be reflected in the proxy-prototype, which may be desirable.\n */\nconst softMixProtos = (ingredients, constructor) => proxyMix([...ingredients, { constructor }]);\n\nconst settings = {\n initFunction: null,\n staticsStrategy: 'copy',\n prototypeStrategy: 'copy',\n decoratorInheritance: 'deep',\n};\n\n// Keeps track of constituent classes for every mixin class created by ts-mixer.\nconst mixins = new WeakMap();\nconst getMixinsForClass = (clazz) => mixins.get(clazz);\nconst registerMixins = (mixedClass, constituents) => mixins.set(mixedClass, constituents);\nconst hasMixin = (instance, mixin) => {\n if (instance instanceof mixin)\n return true;\n const constructor = instance.constructor;\n const visited = new Set();\n let frontier = new Set();\n frontier.add(constructor);\n while (frontier.size > 0) {\n // check if the frontier has the mixin we're looking for. if not, we can say we visited every item in the frontier\n if (frontier.has(mixin))\n return true;\n frontier.forEach((item) => visited.add(item));\n // build a new frontier based on the associated mixin classes and prototype chains of each frontier item\n const newFrontier = new Set();\n frontier.forEach((item) => {\n var _a;\n const itemConstituents = (_a = mixins.get(item)) !== null && _a !== void 0 ? _a : protoChain(item.prototype)\n .map((proto) => proto.constructor)\n .filter((item) => item !== null);\n if (itemConstituents)\n itemConstituents.forEach((constituent) => {\n if (!visited.has(constituent) && !frontier.has(constituent))\n newFrontier.add(constituent);\n });\n });\n // we have a new frontier, now search again\n frontier = newFrontier;\n }\n // if we get here, we couldn't find the mixin anywhere in the prototype chain or associated mixin classes\n return false;\n};\n\nconst mergeObjectsOfDecorators = (o1, o2) => {\n var _a, _b;\n const allKeys = unique([...Object.getOwnPropertyNames(o1), ...Object.getOwnPropertyNames(o2)]);\n const mergedObject = {};\n for (let key of allKeys)\n mergedObject[key] = unique([...((_a = o1 === null || o1 === void 0 ? void 0 : o1[key]) !== null && _a !== void 0 ? _a : []), ...((_b = o2 === null || o2 === void 0 ? void 0 : o2[key]) !== null && _b !== void 0 ? _b : [])]);\n return mergedObject;\n};\nconst mergePropertyAndMethodDecorators = (d1, d2) => {\n var _a, _b, _c, _d;\n return ({\n property: mergeObjectsOfDecorators((_a = d1 === null || d1 === void 0 ? void 0 : d1.property) !== null && _a !== void 0 ? _a : {}, (_b = d2 === null || d2 === void 0 ? void 0 : d2.property) !== null && _b !== void 0 ? _b : {}),\n method: mergeObjectsOfDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.method) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.method) !== null && _d !== void 0 ? _d : {}),\n });\n};\nconst mergeDecorators = (d1, d2) => {\n var _a, _b, _c, _d, _e, _f;\n return ({\n class: unique([...(_a = d1 === null || d1 === void 0 ? void 0 : d1.class) !== null && _a !== void 0 ? _a : [], ...(_b = d2 === null || d2 === void 0 ? void 0 : d2.class) !== null && _b !== void 0 ? _b : []]),\n static: mergePropertyAndMethodDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.static) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.static) !== null && _d !== void 0 ? _d : {}),\n instance: mergePropertyAndMethodDecorators((_e = d1 === null || d1 === void 0 ? void 0 : d1.instance) !== null && _e !== void 0 ? _e : {}, (_f = d2 === null || d2 === void 0 ? void 0 : d2.instance) !== null && _f !== void 0 ? _f : {}),\n });\n};\nconst decorators = new Map();\nconst findAllConstituentClasses = (...classes) => {\n var _a;\n const allClasses = new Set();\n const frontier = new Set([...classes]);\n while (frontier.size > 0) {\n for (let clazz of frontier) {\n const protoChainClasses = protoChain(clazz.prototype).map(proto => proto.constructor);\n const mixinClasses = (_a = getMixinsForClass(clazz)) !== null && _a !== void 0 ? _a : [];\n const potentiallyNewClasses = [...protoChainClasses, ...mixinClasses];\n const newClasses = potentiallyNewClasses.filter(c => !allClasses.has(c));\n for (let newClass of newClasses)\n frontier.add(newClass);\n allClasses.add(clazz);\n frontier.delete(clazz);\n }\n }\n return [...allClasses];\n};\nconst deepDecoratorSearch = (...classes) => {\n const decoratorsForClassChain = findAllConstituentClasses(...classes)\n .map(clazz => decorators.get(clazz))\n .filter(decorators => !!decorators);\n if (decoratorsForClassChain.length == 0)\n return {};\n if (decoratorsForClassChain.length == 1)\n return decoratorsForClassChain[0];\n return decoratorsForClassChain.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst directDecoratorSearch = (...classes) => {\n const classDecorators = classes.map(clazz => getDecoratorsForClass(clazz));\n if (classDecorators.length === 0)\n return {};\n if (classDecorators.length === 1)\n return classDecorators[0];\n return classDecorators.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst getDecoratorsForClass = (clazz) => {\n let decoratorsForClass = decorators.get(clazz);\n if (!decoratorsForClass) {\n decoratorsForClass = {};\n decorators.set(clazz, decoratorsForClass);\n }\n return decoratorsForClass;\n};\nconst decorateClass = (decorator) => ((clazz) => {\n const decoratorsForClass = getDecoratorsForClass(clazz);\n let classDecorators = decoratorsForClass.class;\n if (!classDecorators) {\n classDecorators = [];\n decoratorsForClass.class = classDecorators;\n }\n classDecorators.push(decorator);\n return decorator(clazz);\n});\nconst decorateMember = (decorator) => ((object, key, ...otherArgs) => {\n var _a, _b, _c;\n const decoratorTargetType = typeof object === 'function' ? 'static' : 'instance';\n const decoratorType = typeof object[key] === 'function' ? 'method' : 'property';\n const clazz = decoratorTargetType === 'static' ? object : object.constructor;\n const decoratorsForClass = getDecoratorsForClass(clazz);\n const decoratorsForTargetType = (_a = decoratorsForClass === null || decoratorsForClass === void 0 ? void 0 : decoratorsForClass[decoratorTargetType]) !== null && _a !== void 0 ? _a : {};\n decoratorsForClass[decoratorTargetType] = decoratorsForTargetType;\n let decoratorsForType = (_b = decoratorsForTargetType === null || decoratorsForTargetType === void 0 ? void 0 : decoratorsForTargetType[decoratorType]) !== null && _b !== void 0 ? _b : {};\n decoratorsForTargetType[decoratorType] = decoratorsForType;\n let decoratorsForKey = (_c = decoratorsForType === null || decoratorsForType === void 0 ? void 0 : decoratorsForType[key]) !== null && _c !== void 0 ? _c : [];\n decoratorsForType[key] = decoratorsForKey;\n // @ts-ignore: array is type `A[] | B[]` and item is type `A | B`, so technically a type error, but it's fine\n decoratorsForKey.push(decorator);\n // @ts-ignore\n return decorator(object, key, ...otherArgs);\n});\nconst decorate = (decorator) => ((...args) => {\n if (args.length === 1)\n return decorateClass(decorator)(args[0]);\n return decorateMember(decorator)(...args);\n});\n\nfunction Mixin(...constructors) {\n var _a, _b, _c;\n const prototypes = constructors.map(constructor => constructor.prototype);\n // Here we gather up the init functions of the ingredient prototypes, combine them into one init function, and\n // attach it to the mixed class prototype. The reason we do this is because we want the init functions to mix\n // similarly to constructors -- not methods, which simply override each other.\n const initFunctionName = settings.initFunction;\n if (initFunctionName !== null) {\n const initFunctions = prototypes\n .map(proto => proto[initFunctionName])\n .filter(func => typeof func === 'function');\n const combinedInitFunction = function (...args) {\n for (let initFunction of initFunctions)\n initFunction.apply(this, args);\n };\n const extraProto = { [initFunctionName]: combinedInitFunction };\n prototypes.push(extraProto);\n }\n function MixedClass(...args) {\n for (const constructor of constructors)\n // @ts-ignore: potentially abstract class\n copyProps(this, new constructor(...args));\n if (initFunctionName !== null && typeof this[initFunctionName] === 'function')\n this[initFunctionName].apply(this, args);\n }\n MixedClass.prototype = settings.prototypeStrategy === 'copy'\n ? hardMixProtos(prototypes, MixedClass)\n : softMixProtos(prototypes, MixedClass);\n Object.setPrototypeOf(MixedClass, settings.staticsStrategy === 'copy'\n ? hardMixProtos(constructors, null, ['prototype'])\n : proxyMix(constructors, Function.prototype));\n let DecoratedMixedClass = MixedClass;\n if (settings.decoratorInheritance !== 'none') {\n const classDecorators = settings.decoratorInheritance === 'deep'\n ? deepDecoratorSearch(...constructors)\n : directDecoratorSearch(...constructors);\n for (let decorator of (_a = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.class) !== null && _a !== void 0 ? _a : []) {\n const result = decorator(DecoratedMixedClass);\n if (result) {\n DecoratedMixedClass = result;\n }\n }\n applyPropAndMethodDecorators((_b = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.static) !== null && _b !== void 0 ? _b : {}, DecoratedMixedClass);\n applyPropAndMethodDecorators((_c = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.instance) !== null && _c !== void 0 ? _c : {}, DecoratedMixedClass.prototype);\n }\n registerMixins(DecoratedMixedClass, constructors);\n return DecoratedMixedClass;\n}\nconst applyPropAndMethodDecorators = (propAndMethodDecorators, target) => {\n const propDecorators = propAndMethodDecorators.property;\n const methodDecorators = propAndMethodDecorators.method;\n if (propDecorators)\n for (let key in propDecorators)\n for (let decorator of propDecorators[key])\n decorator(target, key);\n if (methodDecorators)\n for (let key in methodDecorators)\n for (let decorator of methodDecorators[key])\n decorator(target, key, Object.getOwnPropertyDescriptor(target, key));\n};\n/**\n * A decorator version of the `Mixin` function. You'll want to use this instead of `Mixin` for mixing generic classes.\n */\nconst mix = (...ingredients) => decoratedClass => {\n // @ts-ignore\n const mixedClass = Mixin(...ingredients.concat([decoratedClass]));\n Object.defineProperty(mixedClass, 'name', {\n value: decoratedClass.name,\n writable: false,\n });\n return mixedClass;\n};\n\nexport { Mixin, decorate, hasMixin, mix, settings };\n","\nexport function isPlainObject(val: any): val is Record<string, any> {\n return val && typeof val === \"object\" && !Array.isArray(val);\n}\n\nexport function mergeDeep<T = Record<string, any>>(target: Partial<T>, ...sources: any[]): T {\n let out: any = isPlainObject(target) ? { ...target } : target;\n\n for (const source of sources) {\n if (Array.isArray(source)) {\n out = (Array.isArray(out) ? out.concat(source) : source) as T;\n continue;\n }\n if (isPlainObject(source)) {\n out = { ...(isPlainObject(out) ? out : {}) };\n for (const key of Object.keys(source)) {\n out[key] =\n key in out ? mergeDeep(out[key], source[key]) : source[key];\n }\n continue;\n }\n out = source as T;\n }\n return out;\n}\n","\nexport function getData(element: Element, name?: string) {\n prepareData(element);\n\n if (name === undefined) {\n return element.__unicorn;\n }\n\n return element.__unicorn[name];\n}\n\nexport function setData(element: Element, name: string, value: any) {\n prepareData(element);\n element.__unicorn[name] = value;\n}\n\nexport function defData(element: Element, name: string, defCallback: Function) {\n prepareData(element);\n element.__unicorn[name] = element.__unicorn[name] || defCallback(element);\n\n return element.__unicorn[name];\n}\n\nexport function removeData(element: Element, name: string) {\n prepareData(element);\n\n const v = element.__unicorn[name];\n delete element.__unicorn[name];\n\n return v;\n}\n\nexport function prepareData<T extends Node>(element: T): T {\n if (!element) {\n return element;\n }\n\n element.__unicorn = element.__unicorn || {};\n return element;\n}\n\ndeclare global {\n interface Node {\n __unicorn?: any;\n }\n}\n\n\n","import { removeData } from '../data';\nimport { defData } from '../utilities';\n\n/**\n * @see https://stackoverflow.com/a/9899701\n */\nexport function domready(callback?: ((value: any) => any)): Promise<void> {\n let promise = new Promise<void>((resolve) => {\n // see if DOM is already available\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // call on next available tick\n setTimeout(resolve, 0);\n } else {\n document.addEventListener('DOMContentLoaded', () => resolve());\n }\n });\n\n if (callback) {\n promise = promise.then(callback);\n }\n\n return promise;\n}\n\nexport function selectOne<K extends keyof HTMLElementTagNameMap>(ele: K): HTMLElementTagNameMap[K] | null;\nexport function selectOne<E extends Element = Element>(ele: string): E | null;\nexport function selectOne<E extends Element = Element>(ele: E): E;\nexport function selectOne<E extends Element = Element>(ele: string | E): E | null;\n// selectOne(ele: string): Element;\nexport function selectOne<E extends Element = Element>(ele: E | string): E | null {\n let r: E | null;\n\n if (typeof ele === 'string') {\n r = document.querySelector<E>(ele);\n } else {\n r = ele;\n }\n\n if (!r) {\n return r;\n }\n\n return r;\n}\n\nexport function selectAll<E extends Element = Element>(ele: string, callback?: ((ele: E) => any)): E[];\nexport function selectAll<E extends Element = Element>(ele: NodeListOf<E> | E[], callback?: ((ele: E) => any)): E[];\nexport function selectAll<E extends Element = Element>(\n ele: string | NodeListOf<E> | E[],\n callback?: ((ele: E) => any)\n): E[];\nexport function selectAll<E extends keyof HTMLElementTagNameMap>(\n ele: E,\n callback?: ((ele: HTMLElementTagNameMap[E]) => any)\n): HTMLElementTagNameMap[E][];\nexport function selectAll(\n ele: NodeListOf<Element> | Element[] | string,\n callback: ((el: Element) => any) | undefined = undefined\n): Element[] {\n if (typeof ele === 'string') {\n ele = document.querySelectorAll(ele);\n }\n\n const resultSet: Element[] = [].slice.call(ele);\n\n if (callback) {\n return resultSet.map((el) => callback(el) || el);\n }\n\n return resultSet;\n}\n\nexport function getBoundedInstance<T = any, E = Element>(selector: E, name: string, callback?: ((el: E) => any)): T;\nexport function getBoundedInstance<T = any, E extends Element = Element>(\n selector: string | E,\n name: string,\n callback?: ((el: E) => any)\n): T | null;\nexport function getBoundedInstance<T = any, E extends Element = Element>(\n selector: string | E,\n name: string,\n callback: ((el: E) => any) = () => null\n): T | null {\n const element = typeof selector === 'string' ? document.querySelector<E>(selector) : selector;\n\n if (!element) {\n return null;\n }\n\n return defData(element, name, callback);\n}\n\nexport function getBoundedInstanceList<T = any, E extends Element = Element>(\n selector: string | NodeListOf<E>,\n name: string,\n callback: ((el: E) => any) = () => null\n): (T | null)[] {\n const items = typeof selector === 'string' ? document.querySelectorAll<E>(selector) : selector;\n\n return Array.from(items).map((ele: E) => getBoundedInstance(ele, name, callback));\n}\n\nexport function removeBoundedInstance(selector: string | Element, name: string) {\n const element = typeof selector === 'string' ? document.querySelector<Element>(selector) : selector;\n\n if (element) {\n removeData(element, name);\n }\n}\n\nexport function module<T = any, E extends Element = Element>(\n ele: string,\n name: string,\n callback?: ((el: E) => any)\n): (T | null)[];\nexport function module<T = any, E extends Element = Element>(\n ele: NodeListOf<E>,\n name: string,\n callback?: ((el: E) => any)): (T | null)[];\nexport function module<T = any, E extends Element = Element>(\n ele: E,\n name: string,\n callback?: ((el: E) => any)\n): T | null;\nexport function module<T = any, E extends Element = Element>(\n ele: string | Element | NodeListOf<Element>,\n name: string,\n callback?: ((el: E) => any)\n): (T | null)[] | T | null;\nexport function module<T = any, E extends Element = Element>(\n ele: string | Element | NodeListOf<Element>,\n name: string,\n callback: false\n): (T | null)[] | T | null;\nexport function module<T = any, E extends Element = Element>(\n ele: string | E | NodeListOf<E>,\n name: string,\n callback: ((el: E) => any) | false = () => null\n): (T | null)[] | T | null {\n if (callback === false) {\n if (typeof ele === 'string' || ele instanceof Element) {\n removeBoundedInstance(ele, name);\n return null;\n }\n\n Array.from(ele).forEach((el) => removeBoundedInstance(el, name));\n return null;\n }\n\n if (typeof ele === 'string') {\n return getBoundedInstanceList<T, E>(ele, name, callback);\n }\n\n if (ele instanceof HTMLElement) {\n return getBoundedInstance<T, E>(ele, name, callback);\n }\n\n return getBoundedInstanceList<T, E>(ele as NodeListOf<E>, name, callback);\n}\n\nexport function h<T extends keyof HTMLElementTagNameMap>(\n element: T,\n attrs?: Record<string, any>,\n content?: any\n): HTMLElementTagNameMap[T]\nexport function h(element: string, attrs: Record<string, any> = {}, content: any = undefined): HTMLElement {\n const ele = document.createElement(element);\n\n for (let i in attrs) {\n const v = attrs[i];\n\n ele.setAttribute(i, v);\n }\n\n if (content !== null) {\n ele.innerHTML = content;\n }\n\n return ele;\n}\n\nexport function html<T extends Element = HTMLElement>(html: string): T {\n const div = document.createElement('div');\n div.innerHTML = html;\n return div.children[0] as T;\n}\n\n/**\n * Pure JS version of jQuery delegate()\n *\n * @see https://gist.github.com/iagobruno/4db2ed62dc40fa841bb9a5c7de92f5f8\n */\nexport function delegate(\n wrapper: Element | Document | string,\n selector: string,\n eventName: string,\n callback: (e: Event) => void\n): () => void {\n if (typeof selector === 'undefined' || selector === '') {\n throw new Error('The provided selector is empty.');\n }\n\n if (typeof callback === 'undefined' || typeof callback !== 'function') {\n throw new Error('Please specify an callback.');\n }\n\n const delegationSelectorsMap: Record<string, Function[]> = {};\n\n const wrapperElement = selectOne(wrapper);\n\n wrapperElement?.addEventListener(eventName, function (event) {\n let element: HTMLElement | null = event.target as HTMLElement;\n let forceBreak = false;\n\n while (element && element !== wrapperElement) {\n for (const selector in delegationSelectorsMap) {\n if (element.matches(selector)) {\n event.stopPropagation = function () {\n forceBreak = true;\n };\n Object.defineProperty(\n event,\n 'currentTarget',\n {\n get() {\n return element;\n }\n }\n );\n\n const callbackList = delegationSelectorsMap[selector];\n\n callbackList.forEach(function (callback) {\n callback(event);\n });\n }\n }\n\n if (forceBreak) {\n break;\n }\n\n element = element.parentElement;\n }\n });\n\n if (!delegationSelectorsMap[selector]) {\n // Add new selector to the list\n delegationSelectorsMap[selector] = [callback];\n } else {\n delegationSelectorsMap[selector].push(callback);\n }\n\n return function unsubscribe() {\n if (!delegationSelectorsMap[selector]) {\n return;\n }\n\n if (delegationSelectorsMap[selector].length >= 2) {\n delegationSelectorsMap[selector] = delegationSelectorsMap[selector].filter(cb => cb !== callback);\n } else {\n delete delegationSelectorsMap[selector];\n }\n };\n}\n\ntype CssSource = string | (() => Promise<{ default: string }>);\n\nexport function injectCssToDocument(doc: Document, ...css: (CssSource | CSSStyleSheet)[]): Promise<CSSStyleSheet[]>;\nexport function injectCssToDocument(...css: (CssSource | CSSStyleSheet)[]): Promise<CSSStyleSheet[]>;\nexport async function injectCssToDocument(\n doc: Document | CssSource | CSSStyleSheet,\n ...css: (CssSource | CSSStyleSheet)[]\n): Promise<CSSStyleSheet[]> {\n if (!(doc instanceof Document)) {\n css.push(doc);\n doc = document;\n }\n\n const promises: Promise<any>[] = [];\n\n for (let cssItem of css) {\n promises.push(\n new Promise((resolve, reject) => {\n if (cssItem instanceof CSSStyleSheet) {\n resolve(cssItem);\n } else if (typeof cssItem === 'string') {\n const style = new CSSStyleSheet();\n\n style.replace(cssItem).then(() => resolve(style)).catch(reject);\n } else if (typeof cssItem === 'function') {\n cssItem().then(({ default: result }) => {\n const style = new CSSStyleSheet();\n\n style.replace(result).then(() => resolve(style)).catch(reject);\n }).catch(reject);\n } else {\n reject(new Error('Invalid CSS source'));\n }\n })\n );\n }\n\n const styles = await Promise.all(promises);\n\n doc.adoptedStyleSheets = [...doc.adoptedStyleSheets, ...styles];\n\n return styles;\n}\n","import { selectOne } from './dom';\n\nexport function animateTo(\n element: HTMLElement,\n styles: Partial<Record<keyof CSSStyleDeclaration, any>>,\n options: number | KeyframeAnimationOptions = {}\n): Animation {\n element = selectOne(element);\n\n const currentStyles = window.getComputedStyle(element);\n const transitions: Record<string, any[]> = {};\n\n for (const name in styles) {\n const value = styles[name];\n\n transitions[name] = Array.isArray(value)\n ? value\n : [\n currentStyles.getPropertyValue(name),\n value\n ];\n }\n\n if (typeof options === 'number') {\n options = { duration: options };\n }\n\n options = Object.assign(\n {\n duration: 400,\n easing: 'linear',\n fill: 'both'\n },\n options\n );\n\n const animation = element.animate(\n transitions,\n options\n );\n\n animation.addEventListener('finish', () => {\n for (const name in styles) {\n const value = styles[name];\n\n element.style.setProperty(\n name,\n Array.isArray(value)\n ? value[value.length - 1]\n : value\n );\n }\n\n animation.cancel();\n });\n\n return animation;\n}\n","export type AlertHandler = (title: string, text?: string, icon?: string, extra?: any) => Promise<void>;\nexport type ConfirmHandler = (title: string, text?: string, icon?: string, extra?: any) => Promise<boolean>;\nexport type NotifyHandler = (title: string, text?: string, type?: string, extra?: any) => Promise<() => any>;\nexport type ClearNotifiesHandler = () => Promise<void>;\n\nexport class AlertAdapter {\n static alert: AlertHandler = async (title: string, text?: string) => {\n if (text) {\n title += ' | ' + text;\n }\n\n return window.alert(title);\n };\n static confirm: ConfirmHandler = async (title: string, text?: string) => {\n return new Promise<boolean>((resolve) => {\n if (text) {\n title += ' | ' + text;\n }\n\n const v = confirm(title);\n\n resolve(v);\n });\n };\n static deleteConfirm: ConfirmHandler = async (title: string, text?: string) => this.confirm(title, text);\n\n static notify: NotifyHandler = async (title: string, text?: string, type: string = 'log') => {\n if (text) {\n title += ' | ' + text;\n }\n\n if (type === 'error') {\n console.error(title);\n } else if (type === 'warn') {\n console.warn(title);\n } else {\n console.log(title);\n }\n\n return async () => {\n // Noop\n };\n }\n\n static clearNotifies: ClearNotifiesHandler = async () => {\n // Noop\n }\n\n static confirmText: () => string = () => 'OK';\n static cancelText: () => string = () => 'Cancel';\n static deleteText: () => string = () => 'Delete';\n}\n\n","import { AlertAdapter } from './alert-adapter';\n\nexport async function simpleAlert(\n title: string,\n text: string = '',\n icon: string = 'info',\n extra?: any\n) {\n return AlertAdapter.alert(title, text, icon, extra);\n}\n\nexport async function simpleConfirm(\n title: string,\n text: string = '',\n icon: string = 'info',\n extra?: any,\n) {\n return AlertAdapter.confirm(title, text, icon, extra);\n}\n\nexport async function deleteConfirm(\n title: string,\n text: string = '',\n icon: string = 'info',\n extra?: any,\n) {\n return AlertAdapter.deleteConfirm(title, text, icon, extra);\n}\n\nexport async function simpleNotify(\n title: string,\n text: string = '',\n type: string = 'info',\n extra?: any\n) {\n return AlertAdapter.notify(title, text, type, extra);\n}\n\nexport async function clearNotifies() {\n return AlertAdapter.clearNotifies();\n}\n","\nexport function getGlobalThis() {\n return globalThis;\n}\n\nexport function isBrowser() {\n return typeof window !== 'undefined';\n}\n\nexport function isNode() {\n return typeof window === 'undefined';\n}\n","import { isNode } from './env';\n\nexport function base64UrlEncode(string: string): string {\n return btoa(String(string))\n .replace(/\\+/, '-')\n .replace(new RegExp('\\\\/'), '_')\n .replace(/=+$/, '');\n}\n\nexport function base64UrlDecode(string: string): string {\n return atob(\n String(string)\n .replace(/-/, '+')\n .replace(/_/, '/')\n );\n}\n\nexport function uid(prefix: string = '', timebase: boolean = false): string {\n if (timebase) {\n const start = performance?.timeOrigin\n ? Math.round(performance.timeOrigin)\n : performance.timing.navigationStart;\n\n const time = (start * 100000) + (performance.now() * 100);\n\n return prefix + time.toString(12) + (randomBytesString(4));\n }\n\n return prefix + randomBytesString(12);\n}\n\nexport function tid(prefix: string = ''): string {\n return uid(prefix, true);\n}\n\nexport function randomBytesString(size: number = 12): string {\n if (!isNode() && !globalThis.crypto) {\n return String(Math.floor(Math.random() * (size ** 10)));\n }\n\n return Array.from(randomBytes(size))\n .map(x => x.toString(16).padStart(2, '0'))\n .join('');\n}\n\nexport function randomBytes(size: number = 12): Uint8Array {\n const arr = new Uint8Array(size);\n globalThis.crypto.getRandomValues(arr);\n return arr;\n}\n\nexport const STR_SEED_BASE32 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\nexport const STR_SEED_BASE32HEX = '0123456789ABCDEFGHIJKLMNOPQRSTUV';\nexport const STR_SEED_BASE36 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\nexport const STR_SEED_BASE58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nexport const STR_SEED_BASE64SAFE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nexport const STR_SEED_BASE62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\nexport function randomString(length: number, characters: string = STR_SEED_BASE62): string {\n let result = '';\n const charactersLength = characters.length;\n\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n}\n","declare type WithResolversReturn<T> = {\n promise: Promise<T>;\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: any) => void;\n}\n\nexport function promiseWithResolvers<T = void>(): WithResolversReturn<T> {\n let resolve: (value: T | PromiseLike<T>) => void;\n let reject: (reason?: any) => void;\n\n const promise = new Promise<T>((rs, rj) => {\n resolve = rs;\n reject = rj;\n });\n\n // @ts-ignore\n return { promise, resolve, reject };\n}\n","export class TaskQueue {\n items: (() => Promise<any>)[] = [];\n\n currentRunning = 0;\n\n running = false;\n\n observers: {\n handler: Function;\n once: boolean;\n }[] = [];\n\n constructor(public maxRunning = 1) {\n //\n }\n\n push<T extends ((...args: any[]) => any)>(callback: T): Promise<Awaited<ReturnType<T>>> {\n const p = new Promise<Awaited<ReturnType<T>>>((resolve, reject) => {\n this.items.push(() => {\n return Promise.resolve(callback()).then(resolve).catch(reject);\n });\n });\n\n this.run();\n\n return p;\n }\n\n run(): void {\n if (!this.running) {\n this.running = true;\n }\n\n this.pop();\n }\n\n async pop() {\n const callback = this.items.shift();\n\n // If empty, stop running.\n if (!callback) {\n this.running = false;\n return Promise.resolve();\n }\n\n // If current running full, set back to queue and leave.\n if (this.currentRunning >= this.maxRunning) {\n this.items.unshift(callback);\n return Promise.resolve();\n }\n\n this.currentRunning++;\n\n this.notice();\n\n try {\n return await callback();\n } catch (e) {\n throw e;\n } finally {\n this.endPop();\n }\n }\n\n endPop() {\n this.currentRunning--;\n this.notice();\n this.pop();\n }\n\n clear() {\n this.items = [];\n\n this.notice();\n\n return this;\n }\n\n isEmpty(): boolean {\n return this.items.length === 0;\n }\n\n get length(): number {\n return this.items.length;\n }\n\n peek() {\n return this.items;\n }\n\n observe(handler: ObserverFunction, options: { once?: boolean } = {}): () => void {\n this.observers.push({\n handler,\n once: options.once || false,\n });\n\n return () => {\n this.off(handler);\n };\n }\n\n once(handler: ObserverFunction, options: { once?: boolean } = {}): () => void {\n options.once = true;\n\n return this.observe(handler, options);\n }\n\n onEnd(callback: ObserverFunction, options: { once?: boolean } = {}) {\n return this.observe((queue, length, running) => {\n if (length === 0 && running === 0) {\n callback(queue, length, running);\n }\n }, options);\n }\n\n notice() {\n this.observers.forEach((observer) => {\n observer.handler(this, this.length, this.currentRunning);\n });\n\n this.observers = this.observers.filter((observer) => !observer.once);\n\n return this;\n }\n\n off(callback?: Function) {\n if (callback == null) {\n this.observers = [];\n return this;\n }\n\n this.observers = this.observers.filter((observer) => observer.handler !== callback);\n return this;\n }\n}\n\ndeclare type ObserverFunction = (queue: TaskQueue, length: number, running: number) => void\n\nexport function queue(maxRunning: number = 1) {\n return new TaskQueue(maxRunning);\n}\n","declare type StackHandler<T> = (stack: Stack<T>, length: number) => void;\n\ndeclare type StackValue<V> = V | true;\n\nexport class Stack<T = any> {\n observers: { handler: StackHandler<T>, once: boolean }[] = [];\n\n constructor(protected store: StackValue<T>[] = []) {\n //\n }\n\n push(value?: T): number {\n const r = this.store.push(value ?? true);\n\n this.notice();\n\n return r;\n }\n\n pop(): T | true | undefined {\n const r = this.store.pop();\n\n this.notice();\n\n return r;\n }\n\n clear(): this {\n this.store = [];\n\n this.notice();\n\n return this;\n }\n\n isEmpty(): boolean {\n return this.store.length === 0;\n }\n\n get length() {\n return this.store.length;\n }\n\n peek(): StackValue<T>[] {\n return this.store;\n }\n\n observe(handler: (stack: Stack, length: number) => void): () => void {\n this.observers.push({\n handler,\n once: false\n });\n\n return () => {\n this.off(handler);\n };\n }\n\n once(handler: StackHandler<T>): () => void {\n this.observers.push({\n handler,\n once: true\n });\n\n return () => {\n this.off(handler);\n };\n }\n\n notice(): this {\n this.observers.forEach((observer) => {\n observer.handler(this, this.length);\n });\n\n this.observers = this.observers.filter((observer) => observer.once !== true);\n\n return this;\n }\n\n off(callback?: StackHandler<T>): this {\n this.observers = this.observers.filter((observer) => observer.handler !== callback);\n return this;\n }\n}\n\nexport function stack<T = any>(store: any[] = []) {\n return new Stack<T>(store);\n}\n","export function sleep(time: number) {\n return new Promise((resolve) => {\n setTimeout(resolve, time);\n });\n}\n\nexport function nextTick(callback = () => {}) {\n return Promise.resolve().then(callback);\n}\n","import { uid, tid, randomBytes, randomBytesString } from '@lyrasoft/ts-toolkit/generic';\n\nexport function base64UrlEncode(string: string): string {\n return btoa(String(string))\n .replace(/\\+/, '-')\n .replace(new RegExp('\\\\/'), '_')\n .replace(/=+$/, '');\n}\n\n/**\n * Base64 URL decode\n */\nexport function base64UrlDecode(string: string): string {\n return atob(\n String(string)\n .replace(/-/, '+')\n .replace(/_/, '/')\n );\n}\n\nexport { uid, tid, randomBytes, randomBytesString };\n\nlet globalSerial = 1;\n\nexport function serial(): number {\n return globalSerial++;\n}\n","export function watchAttributes<T extends HTMLElement>(el: T, callback?: AttributeMutationCallback<T>) {\n return new AttributeMutationObserver<T>(el, callback);\n}\n\nexport type AttributeMutationCallback<T extends HTMLElement = HTMLElement> = (el: T, name: string, value: any, oldValue: any) => void;\nexport type AttributeWatcher<T extends HTMLElement = HTMLElement> = (el: T, value: any, oldValue: any) => void;\n\nexport class AttributeMutationObserver<T extends HTMLElement> {\n observer: MutationObserver;\n watches: Record<string, (AttributeWatcher<T>)[]> = {};\n\n constructor(protected element: T, public callback?: (el: T, name: string, value: any, oldValue: any) => void) {\n this.element = element;\n\n this.observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n const attrName = mutation.attributeName!;\n const target = mutation.target as T;\n const value = target.getAttribute(attrName);\n\n this.callback?.(\n target,\n attrName,\n value,\n mutation.oldValue\n );\n\n if (this.watches[attrName]) {\n for (const watch of this.watches[attrName]) {\n watch(target, value, mutation.oldValue);\n }\n }\n }\n }\n });\n\n this.observe();\n }\n\n watch(name: string, callback: AttributeWatcher<T>): () => void {\n this.watches[name] ??= [];\n this.watches[name].push(callback);\n\n return () => {\n this.watches[name] = this.watches[name].filter(fn => fn !== callback);\n };\n }\n\n observe() {\n this.observer.observe(this.element, {\n attributes: true,\n attributeOldValue: true,\n });\n }\n\n disconnect() {\n this.observer.disconnect();\n }\n}\n\n\n","import { data } from '../data';\nimport { sleep } from '@lyrasoft/ts-toolkit/generic';\n\nexport { sleep };\n\nexport function forceArray<T>(item: T | T[]): T[] {\n if (Array.isArray(item)) {\n return item;\n } else {\n return [item];\n }\n}\n\nexport function debounce<T extends Function = Function>(handler: T, wait = 1): T {\n let timer: ReturnType<typeof setTimeout> | number, result: any;\n return function (this: any, ...args: any[]) {\n clearTimeout(timer);\n timer = setTimeout(() => result = handler.call(this, ...args), wait);\n return result;\n } as any as T;\n}\n\nexport function throttle<T extends Function = Function>(handler: T, wait: number = 1): T {\n let timer: ReturnType<typeof setTimeout> | number | undefined, result: any;\n return function (this: any, ...args: any[]) {\n if (!timer) {\n return result = handler.call(this, ...args);\n }\n\n clearTimeout(timer);\n timer = setTimeout(() => timer = undefined, wait);\n return result;\n } as any as T;\n}\n\nexport function isDebug() {\n return Boolean(data('windwalker.debug'));\n}\n\nexport function nextTick(callback?: () => any): Promise<any> {\n return Promise.resolve().then(callback ?? (() => null));\n}\n\nexport function wait<T extends readonly unknown[]>(\n ...promisee: { [K in keyof T]: PromiseLike<T[K]> | T[K] }\n): Promise<Awaited<T>> {\n return Promise.all(promisee) as Promise<Awaited<T>>;\n}\n\nexport function isError<E = Error>(e: any): e is E {\n return e instanceof Error;\n}\n","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","import { data } from '../data';\nimport { isDebug } from './/helper';\nimport { Dictionary } from '../types';\nimport { vsprintf } from 'sprintf-js';\n\nlet lang: UnicornLang;\n\nexport function useLang() {\n return lang ??= new UnicornLang();\n}\n\nexport function trans(id: string, ...args: any[]) {\n return useLang().trans(id, ...args);\n}\n\nexport function __(id: string, ...args: any[]) {\n return trans(id, ...args);\n}\n\nexport default class UnicornLang {\n /**\n * Translate a string.\n */\n trans(id: string, ...args: any[]): string {\n const key = this.normalize(id);\n\n let translated = this.get(key) || '';\n\n translated = this.replace(translated, args);\n\n return translated !== '' ? translated : this.wrapDebug(id, false);\n }\n\n protected replace(str: string, args: any[]): string {\n let replacements: Dictionary<any> = {};\n let values: any[] = [];\n\n for (const arg of args) {\n if (typeof arg === 'object') {\n replacements = { ...replacements, ...arg };\n } else {\n values.push(arg);\n }\n }\n\n if (values.length) {\n str = vsprintf(str, values);\n }\n\n if (Object.values(replacements).length) {\n for (const key in replacements) {\n let value = replacements[key];\n\n if (typeof value === 'function') {\n value = value();\n }\n\n str = str.replace(new RegExp(':' + key, 'g'), String(value));\n }\n }\n\n return str;\n }\n\n /**\n * Find text.\n */\n get(id: string): string | null {\n const strings = this.getStrings();\n\n if (strings[id]) {\n return strings[id];\n }\n\n return null;\n }\n\n /**\n * Has language key.\n */\n has(key: string): boolean {\n const strings = this.getStrings();\n\n return strings[key] !== undefined;\n }\n\n /**\n * Add language key.\n */\n add(key: string, value: string): this {\n const strings = this.getStrings();\n\n strings[this.normalize(key)] = value;\n\n data('unicorn.languages', strings);\n\n return this;\n }\n\n /**\n * Replace all symbols to dot(.).\n */\n protected normalize(text: string): string {\n return text.replace(/[^A-Z0-9]+/ig, '.');\n }\n\n protected wrapDebug(text: string, success: boolean): string {\n if (isDebug()) {\n if (success) {\n return '**' + text + '**';\n }\n\n return '??' + text + '??';\n }\n\n return text;\n }\n\n getStrings(): Record<string, string> {\n return data('unicorn.languages') || {};\n }\n}\n","import { Dictionary } from '../types';\nimport { injectCssToDocument } from './';\n\ntype Source = string | (() => Promise<{ default: string }>);\n\nexport async function useScriptImport(src: Source, attrs: Record<string, string> = {}): Promise<void> {\n if (typeof src === 'function') {\n src = (await src()).default;\n }\n\n const script = document.createElement('script');\n script.src = resolveUrl(src);\n\n for (const key in attrs) {\n script.setAttribute(key, attrs[key]);\n }\n\n return new Promise((resolve, reject) => {\n script.onload = () => {\n resolve();\n document.body.removeChild(script);\n };\n script.onerror = (e) => {\n reject(e);\n document.body.removeChild(script);\n };\n\n document.body.appendChild(script);\n });\n}\n\nexport function doImport<T = any>(src: string): Promise<T> {\n return import(/* @vite-ignore */src);\n}\n\nexport async function useImport(...src: any[]): Promise<any>;\nexport async function useImport<T extends any[]>(...src: string[]): Promise<T>;\nexport async function useImport<T = any>(src: string): Promise<{ default: T }>;\nexport async function useImport<D = any, C = any>(src: string): Promise<{ default: D } & Dictionary<C>>;\nexport async function useImport(...src: any[]): Promise<any> {\n if (src.length === 1) {\n return doImport(src[0]);\n }\n\n const promises: Promise<any>[] = [];\n\n src.forEach((link) => {\n promises.push(\n link instanceof Promise ? link : doImport(link)\n );\n });\n\n return Promise.all(promises);\n}\n\nexport async function useSeriesImport(...src: any[]): Promise<any>;\nexport async function useSeriesImport<T extends any[]>(...src: string[]): Promise<T>;\nexport async function useSeriesImport<T = any>(src: string): Promise<{ default: T }>;\nexport async function useSeriesImport<D = any, C = any>(src: string): Promise<{ default: D } & Dictionary<C>>;\nexport async function useSeriesImport(...src: any[]): Promise<any> {\n const modules: any[] = [];\n\n for (const source of src) {\n if (Array.isArray(source)) {\n const m = await useImport(...source);\n modules.push(m);\n\n continue;\n }\n\n const m = await useImport(source);\n\n modules.push(m);\n }\n\n return modules;\n}\n\nexport async function useCssIncludes(...hrefs: Source[]): Promise<void[]> {\n const promises = hrefs.map((href) => {\n return new Promise<void>((resolve, reject) => {\n resolveSource(href).then((href) => {\n href = resolveUrl(href);\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.onload = () => resolve();\n link.onerror = (e) => reject(e);\n\n document.head.appendChild(link);\n });\n });\n });\n\n return Promise.all(promises);\n}\n\nconst importedSheets: Record<string, Promise<{ default: CSSStyleSheet }>> = {};\n\nexport async function useCssImport(...hrefs: Source[]): Promise<CSSStyleSheet[]> {\n // Todo: Use `{ assert: { type: \"css\" }` after all browsers support it.\n const modules = await Promise.all(\n hrefs.map((href) => {\n return new Promise<{ default: CSSStyleSheet }>((resolve) => {\n resolveSource(href).then((href) => {\n href = resolveUrl(href);\n\n if (!importedSheets[href]) {\n importedSheets[href] = simulateCssImport(href);\n }\n\n resolve(importedSheets[href]);\n });\n });\n })\n );\n const styles = modules.map(module => module.default);\n\n return injectCssToDocument(...styles);\n}\n\nasync function simulateCssImport(href: string) {\n const response = await fetch(href);\n if (!response.ok) {\n throw new Error(`Failed to load CSS: ${href}`);\n }\n const cssText = await response.text();\n\n const sheet = new CSSStyleSheet();\n await sheet.replace(cssText);\n return { default: sheet };\n}\n\nlet importMap: Record<string, string>;\n\nfunction parseImportMap() {\n const importMapScript = document.querySelector('script[type=\"importmap\"]');\n if (importMapScript) {\n try {\n return JSON.parse(importMapScript.textContent || '{}').imports || {};\n } catch (e) {\n console.error('Failed to parse import map:', e);\n }\n }\n return {};\n}\n\nfunction resolveUrl(specifier: string) {\n importMap ??= parseImportMap();\n\n for (const [prefix, target] of Object.entries(importMap)) {\n if (specifier === prefix) {\n return target;\n }\n }\n\n for (const [prefix, target] of Object.entries(importMap)) {\n if (specifier.startsWith(prefix)) {\n return specifier.replace(prefix, target);\n }\n }\n return specifier;\n}\n\nasync function resolveSource(src: Source): Promise<string> {\n if (typeof src === 'function') {\n return (await src()).default;\n }\n\n return src;\n}\n","import type { Tooltip } from 'bootstrap';\nimport { ButtonRadioOptions } from '../bootstrap/button-radio';\nimport type { KeepTabOptions } from '../bootstrap/keep-tab';\nimport type { UIBootstrap5 } from '../module/ui-bootstrap5';\nimport { useUITheme } from '../service';\n\nexport async function useUIBootstrap5(install = false, pushToGlobal = false): Promise<UIBootstrap5> {\n const { UIBootstrap5 } = await import('../module/ui-bootstrap5');\n\n const theme = UIBootstrap5.get();\n\n if (install) {\n useUITheme(theme);\n\n if (pushToGlobal) {\n theme.pushBootstrapToGlobal();\n }\n }\n\n return theme;\n}\n\nexport async function useBs5Tooltip(\n selector: NodeListOf<Element> | Element | string = '[data-bs-toggle=\"tooltip\"]',\n config: Partial<Tooltip.Options> = {}\n): Promise<Tooltip[]> {\n const bs5 = await useUIBootstrap5();\n\n return bs5.tooltip(selector, config);\n}\n\nexport const useBs5KeepTab: typeof UIBootstrap5.prototype.keepTab = async (\n selector?: string | HTMLElement,\n options: KeepTabOptions = {}\n): Promise<any> => {\n const bs5 = await useUIBootstrap5();\n\n return bs5.keepTab(selector, options);\n};\n\nexport const useBs5ButtonRadio: typeof UIBootstrap5.prototype.buttonRadio = async (\n selector?: string | HTMLElement,\n options: ButtonRadioOptions = {}\n): Promise<any> => {\n const bs5 = await useUIBootstrap5();\n\n return bs5.buttonRadio(selector, options);\n};\n\n\n","import { Modal } from 'bootstrap';\nimport { html } from '../service';\nimport { useUIBootstrap5 } from './useUIBootstrap5';\n\nexport interface BsModalAlertOptions {\n header?: string | HTMLElement | (() => HTMLElement | Promise<HTMLElement>);\n title?: string;\n text?: string;\n icon?: string | HTMLElement | (() => HTMLElement | Promise<HTMLElement>);\n content?: string | HTMLElement | (() => HTMLElement | Promise<HTMLElement>);\n size?: 'sm' | 'lg' | 'xl' | 'xxl';\n relatedTarget?: HTMLElement;\n buttons?: BsModalButton[];\n}\n\nexport type BsModalButton = {\n text?: string | ((button: HTMLElement) => void);\n class?: string;\n attrs?: Record<string, string>;\n styles?: Record<string, string>;\n dismiss?: boolean;\n value?: any;\n href?: string;\n target?: string;\n onClick?: (value?: any, e?: MouseEvent) => any;\n} | string | HTMLElement | (() => HTMLElement | Promise<HTMLElement>);\n\nexport interface BsModalAlertInstance {\n show(title: BsModalAlertOptions): Promise<any>;\n\n show(title: string, text?: string, icon?: string, options?: BsModalAlertOptions): Promise<any>;\n\n show(title: BsModalAlertOptions | string, text?: string, icon?: string, options?: BsModalAlertOptions): Promise<any>;\n\n hide: () => void;\n toggle: (relatedTarget?: HTMLElement) => void;\n dispose: () => void;\n destroy: () => void;\n instance: Modal;\n el: HTMLElement;\n}\n\nconst defaultOptions = {\n buttons: [\n 'OK'\n ],\n};\n\nexport async function useBsModalAlert(\n options: Partial<Modal.Options>\n): Promise<BsModalAlertInstance>\nexport async function useBsModalAlert(\n id?: string | HTMLElement,\n options?: Partial<Modal.Options>\n): Promise<BsModalAlertInstance>;\nexport async function useBsModalAlert(\n id?: string | HTMLElement | Partial<Modal.Options>,\n options?: Partial<Modal.Options>\n): Promise<BsModalAlertInstance> {\n await useUIBootstrap5();\n\n let modalElement: HTMLElement | null | undefined = undefined;\n\n if (typeof id !== 'string' && !(id instanceof HTMLElement)) {\n options = id;\n id = 'uni-modal-alert';\n modalElement = document.getElementById(id);\n } else {\n modalElement = typeof id === 'string' ? document.getElementById(id) : id;\n }\n\n if (!modalElement) {\n modalElement = html<HTMLDivElement>(`<div id=\"${id}\" class=\"uni-modal-alert modal fade\" tabindex=\"-1\" role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body text-center p-4\"></div>\n <div class=\"modal-footer\"></div>\n </div>\n </div>\n</div>`);\n\n document.body.appendChild(modalElement);\n }\n\n const modal = Modal.getOrCreateInstance(modalElement, options);\n\n return {\n show: (\n title: BsModalAlertOptions | string,\n text?: string,\n icon?: string,\n options?: BsModalAlertOptions\n ): Promise<any> => {\n if (typeof title === 'string') {\n options = options || {};\n options.title = title;\n options.text = text;\n options.icon = icon;\n } else {\n options = title;\n }\n\n return new Promise((resolve) => {\n prepareModalElement(modalElement, resolve, options);\n\n modal.show(options?.relatedTarget);\n });\n },\n hide: () => {\n modal.hide();\n },\n dispose: () => {\n modal.dispose();\n },\n toggle: (relatedTarget?: HTMLElement) => {\n modal.toggle(relatedTarget);\n },\n destroy: () => {\n modal.dispose();\n modalElement.remove();\n },\n instance: modal,\n el: modalElement,\n };\n}\n\nasync function prepareModalElement(\n modalElement: HTMLElement,\n handler: (value?: any) => any,\n options?: BsModalAlertOptions\n) {\n options = Object.assign({}, defaultOptions, options || {});\n\n let header = options.header;\n const content = options.content;\n\n modalElement.querySelector('.modal-header')?.remove();\n modalElement.querySelector('.modal-body')!.innerHTML = '';\n modalElement.querySelector('.modal-footer')!.innerHTML = '';\n\n const dialog = modalElement.querySelector('.modal-dialog');\n\n dialog?.classList.remove('modal-sm', 'modal-lg', 'modal-xl', 'modal-xxl');\n\n if (header) {\n if (typeof header === 'string') {\n header = `<div class=\"modal-header\">\n <h5 class=\"modal-title\">${header}</h5>\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>`;\n }\n\n header = await anyToElement(header);\n\n modalElement.querySelector('.modal-content')!.insertAdjacentElement('afterbegin', header);\n }\n\n if (content) {\n let contentElement = await anyToElement(content);\n\n modalElement.querySelector('.modal-body')!.appendChild(contentElement);\n } else {\n const title = options.title;\n const text = options.text;\n let icon = options.icon;\n\n if (icon) {\n if (typeof icon === 'string') {\n icon = `<div class=\"uni-modal-alert__icon text-center mb-4\"><span class=\"${icon}\" style=\"font-size: 48px;\"></span></div>`;\n }\n\n icon = await anyToElement(icon);\n\n modalElement.querySelector('.modal-body')!.appendChild(icon);\n }\n\n if (title) {\n const titleEl = html(`<h4 class=\"uni-modal-alert__title\">${title}</h4>`);\n\n modalElement.querySelector('.modal-body')!.appendChild(titleEl);\n }\n\n if (text) {\n const textEl = html(`<div class=\"uni-modal-alert__text\">${text}</div>`);\n\n modalElement.querySelector('.modal-body')!.appendChild(textEl);\n }\n }\n\n const buttons = options.buttons!;\n\n for (const i in buttons) {\n const button = buttons[i];\n const isConfirm = buttons.length === 1 || (buttons.length === 2 && Number(i) === 1);\n\n const buttonElement = createButton(\n button,\n handler,\n isConfirm\n );\n\n modalElement.querySelector('.modal-footer')!.appendChild(await buttonElement);\n }\n\n if (options.size) {\n modalElement.querySelector('.modal-dialog')!.classList.add(`modal-${options.size}`);\n }\n\n return modalElement;\n}\n\nasync function anyToElement(content: string | HTMLElement | (() => (HTMLElement | Promise<HTMLElement>))) {\n if (typeof content === 'function') {\n return content();\n }\n\n return typeof content === 'string' ? html(content) : content;\n}\n\nasync function createButton(\n buttonOption: BsModalButton,\n handler: (value?: any) => any,\n isConfirm?: boolean): Promise<HTMLElement> {\n if (typeof buttonOption === 'function') {\n return await buttonOption();\n }\n\n if (typeof buttonOption === 'string') {\n buttonOption = {\n text: buttonOption,\n value: isConfirm ?? false,\n class: isConfirm ? 'btn btn-primary is-confirm' : 'btn btn-outline-secondary',\n styles: isConfirm ? { width: '150px' } : {},\n dismiss: true,\n };\n }\n\n // if not HTMLElement\n let button: HTMLElement;\n\n if (buttonOption instanceof HTMLElement) {\n button = buttonOption;\n } else {\n const {\n text,\n class: className = 'btn btn-secondary',\n attrs = {},\n styles = {},\n dismiss = true,\n value,\n href,\n target,\n onClick\n } = buttonOption;\n\n const tag = href ? 'a' : 'button';\n\n const el = document.createElement(tag);\n\n if (el instanceof HTMLAnchorElement) {\n el.href = href!;\n el.target = target || '_self';\n }\n\n if (el instanceof HTMLButtonElement) {\n el.type = 'button';\n }\n\n el.setAttribute('class', className);\n\n for (let attr in attrs) {\n el.setAttribute(attr, attrs[attr]);\n }\n\n for (let style in styles) {\n (el.style as any)[style] = styles[style];\n }\n\n if (dismiss) {\n el.setAttribute('data-bs-dismiss', 'modal');\n }\n\n if (typeof text === 'string') {\n el.textContent = text;\n } else if (typeof text === 'function') {\n text(el);\n }\n\n el.addEventListener('click', (e) => {\n onClick?.(value, e as MouseEvent);\n handler(value);\n });\n\n button = el;\n }\n\n return button;\n}\n\n","import type { CheckboxesMultiSelect } from '../module/checkboxes-multi-select';\nimport type { Nullable } from '../types';\n\nexport async function useCheckboxesMultiSelect(): Promise<any>;\n\nexport async function useCheckboxesMultiSelect(\n selector?: Nullable<string | HTMLElement>,\n options?: Record<string, any>\n): Promise<CheckboxesMultiSelect>;\n\nexport async function useCheckboxesMultiSelect(\n selector?: Nullable<string | HTMLElement>,\n options: Record<string, any> = {}\n): Promise<any> {\n const m = await import('../module/checkboxes-multi-select');\n\n if (selector) {\n m.CheckboxesMultiSelect.handle(selector, options);\n }\n\n return m;\n}\n","import { CascadeSelectModule } from '../module/field-cascade-select';\n\nexport async function useFieldCascadeSelect(): Promise<CascadeSelectModule> {\n const module = await import('../module/field-cascade-select');\n\n await module.ready;\n\n return module;\n}\n","import { FileDragModule } from '../module/field-file-drag';\n\nexport async function useFieldFileDrag(): Promise<FileDragModule> {\n const module = await import('../module/field-file-drag');\n\n await module.ready;\n\n return module;\n}\n","export function useFieldFlatpickr(): Promise<any> {\n return import('../module/field-flatpickr');\n}\n","import type { ModalSelectModule } from '../module/field-modal-select';\n\nexport function useFieldModalSelect(): Promise<ModalSelectModule> {\n // Modal select has no exports now\n return import('../module/field-modal-select');\n}\n","export function useFieldModalTree(): Promise<any> {\n return import('../module/field-modal-tree');\n}\n","import { RepeatableModule } from '../module/field-repeatable';\n\nexport async function useFieldRepeatable(): Promise<RepeatableModule> {\n const module = await import('../module/field-repeatable');\n\n await module.ready;\n\n return module;\n}\n","import { SingleImageDragModule } from '../module/field-single-image-drag';\n\nexport async function useFieldSingleImageDrag(): Promise<SingleImageDragModule> {\n const module = await import('../module/field-single-image-drag');\n\n await module.ready;\n\n return module;\n}\n","import type { UnicornFormElement } from '../module/form';\nimport { module, selectOne } from '../service';\n\nlet formElement: typeof UnicornFormElement;\n\ntype FormProxy = {\n submit: (...args: Parameters<UnicornFormElement['submit']>) => Promise<ReturnType<UnicornFormElement['submit']> | undefined>;\n get: (...args: Parameters<UnicornFormElement['get']>) => Promise<ReturnType<UnicornFormElement['get']> | undefined>;\n post: (...args: Parameters<UnicornFormElement['post']>) => Promise<ReturnType<UnicornFormElement['post']> | undefined>;\n put: (...args: Parameters<UnicornFormElement['put']>) => Promise<ReturnType<UnicornFormElement['put']> | undefined>;\n patch: (...args: Parameters<UnicornFormElement['patch']>) => Promise<ReturnType<UnicornFormElement['patch']> | undefined>;\n delete: (...args: Parameters<UnicornFormElement['delete']>) => Promise<ReturnType<UnicornFormElement['delete']> | undefined>;\n};\n\nexport function useFormAsync(): FormProxy & Promise<UnicornFormElement>;\nexport function useFormAsync(\n ele?: string | Element,\n options?: Record<string, any>): FormProxy & Promise<UnicornFormElement | null>;\nexport function useFormAsync(\n ele?: string | Element,\n options: Record<string, any> = {}\n): FormProxy & Promise<UnicornFormElement | null> {\n const promise = import('../module/form').then(({ UnicornFormElement }) => {\n formElement ??= UnicornFormElement;\n\n return useForm(ele, options);\n });\n\n const proxy = new Proxy({} as FormProxy, {\n get(target, prop) {\n return (...args: any[]) => {\n return promise.then((form) => {\n const func = (form as any)[prop];\n\n if (typeof func === 'function') {\n return func.apply(form, args);\n }\n\n throw new Error(`Method ${String(prop)} does not exist on form.`);\n });\n };\n },\n });\n\n Object.assign(proxy, {\n then: promise.then.bind(promise),\n catch: promise.catch.bind(promise),\n });\n\n return proxy as FormProxy & Promise<UnicornFormElement | null>;\n}\n\nexport function useForm(): UnicornFormElement;\nexport function useForm(ele?: string | Element, options?: Record<string, any>): UnicornFormElement | null;\nexport function useForm(ele?: string | Element, options: Record<string, any> = {}): UnicornFormElement | null {\n if (!formElement) {\n throw new Error('Form module is not loaded. Please use useFormAsync() to load the module before using useForm().');\n }\n\n if (ele == null) {\n return new formElement(undefined, undefined, options);\n }\n\n let selector: string | undefined = undefined;\n let el: HTMLFormElement | undefined = undefined;\n\n if (typeof ele === 'string') {\n selector = ele;\n el = selectOne<HTMLFormElement>(ele) ?? undefined;\n } else {\n el = ele as HTMLFormElement;\n }\n\n if (!el) {\n return new formElement(selector, el, options);\n }\n\n return module(\n el,\n 'unicorn.form',\n () => new formElement(selector, el, options)\n );\n}\n\nexport async function useFormComponent(ele?: string | Element, options: Record<string, any> = {}) {\n const form = await useFormAsync(ele, options);\n\n await form?.initComponent();\n\n return form;\n}\n\nexport interface FormSubmitOptions {\n form?: string | Element;\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n url?: string;\n data?: Record<string, any>;\n}\n\nexport async function useFormSubmit(options: FormSubmitOptions = {}) {\n const form = (await useFormAsync(options.form)) as UnicornFormElement;\n\n // fun type should be method of form\n const func = (options.method?.toLowerCase() || 'post') as 'get' | 'post' | 'put' | 'delete' | 'patch';\n\n return form[func](options.url, options.data);\n}\n","import type { UnicornGridElement } from '../module/grid';\nimport { useForm, useFormAsync } from './useForm';\nimport { selectOne, module } from '../service';\n\nlet gridElement: typeof UnicornGridElement;\n\nexport async function useGridAsync(\n ele?: string | HTMLElement,\n options: Record<string, any> | undefined = {}\n): Promise<UnicornGridElement | null> {\n await useFormAsync();\n\n const { UnicornGridElement } = await import('../module/grid');\n\n gridElement ??= UnicornGridElement;\n\n if (!ele) {\n return null;\n }\n\n return useGrid(ele, options);\n}\n\nexport function useGrid(\n ele: string | HTMLElement,\n options: Record<string, any> | undefined = {}\n): UnicornGridElement | null {\n const selector = typeof ele === 'string' ? ele : '';\n const element = selectOne(ele);\n\n if (!element) {\n throw new Error('Element is empty');\n }\n\n const form = useForm(selector || element);\n\n if (!form) {\n throw new Error('UnicornGrid is depends on UnicornForm');\n }\n\n return module(\n element,\n 'grid.plugin',\n () => new gridElement(selector, element, form, options)\n );\n}\n\nexport async function useGridComponent(\n ele: string | HTMLElement,\n options: Record<string, any> | undefined = {}\n): Promise<UnicornGridElement | null> {\n const grid = await useGridAsync(ele, options);\n\n await grid?.initComponent();\n\n return grid;\n}\n","import type { UnicornHttpClient } from '../module/http-client';\nimport type { AxiosInstance, CreateAxiosDefaults } from 'axios';\nexport type { ApiReturn, UnicornHttpClient } from '../module/http-client';\n\ntype UnicornHttpClientProxy = {\n request: UnicornHttpClient['request'];\n get: UnicornHttpClient['get'];\n post: UnicornHttpClient['post'];\n put: UnicornHttpClient['put'];\n patch: UnicornHttpClient['patch'];\n delete: UnicornHttpClient['delete'];\n head: UnicornHttpClient['head'];\n options: UnicornHttpClient['options'];\n http: Promise<UnicornHttpClient>;\n};\n\nexport function useHttpClient(config?: CreateAxiosDefaults | AxiosInstance): UnicornHttpClientProxy & Promise<UnicornHttpClient> {\n const promise = import('../module/http-client').then(({ createHttpClient }) => {\n return createHttpClient(config as CreateAxiosDefaults | undefined);\n });\n\n const data: UnicornHttpClientProxy = {\n request: (options) => {\n return promise.then((client) => client.request(options));\n },\n get: (url, options) => {\n return promise.then((client) => client.get(url, options));\n },\n post: (url, data, options) => {\n return promise.then((client) => client.post(url, data, options));\n },\n put: (url, data, options) => {\n return promise.then((client) => client.put(url, data, options));\n },\n patch: (url, data, options) => {\n return promise.then((client) => client.patch(url, data, options));\n },\n delete: (url, data, options) => {\n return promise.then((client) => client.delete(url, data, options));\n },\n head: (url, options) => {\n return promise.then((client) => client.head(url, options));\n },\n options: (url, options) => {\n return promise.then((client) => client.options(url, options));\n },\n http: promise,\n };\n\n Object.assign(data, {\n then: promise.then.bind(promise),\n catch: promise.catch.bind(promise),\n });\n\n return data as UnicornHttpClientProxy & Promise<UnicornHttpClient>;\n}\n","import { IFrameModalModule } from '../module/iframe-modal';\nexport type { IFrameModalElement } from '../module/iframe-modal';\n\nexport async function useIframeModal(): Promise<IFrameModalModule> {\n const module = await import('../module/iframe-modal');\n\n await module.ready;\n\n return module;\n}\n","import type { ListDependent, ListDependentModule, ListDependentOptions } from '../module/list-dependent';\nimport { Nullable } from '../types';\n\nexport async function useListDependent(): Promise<ListDependentModule>;\nexport async function useListDependent(\n element: string | HTMLSelectElement,\n dependent?: Nullable<string | HTMLSelectElement>,\n options?: Partial<ListDependentOptions>\n): Promise<ListDependent>;\nexport async function useListDependent(\n element?: Nullable<string | HTMLSelectElement>,\n dependent?: Nullable<string | HTMLSelectElement>,\n options: Partial<ListDependentOptions> = {}\n): Promise<any> {\n const module = await import('../module/list-dependent');\n\n await module.ready;\n\n if (element) {\n const { ListDependent } = module;\n\n return ListDependent.handle(element, dependent ?? undefined, options);\n }\n\n return module;\n}\n","import { Dictionary } from '../types';\nimport { TaskQueue, queue } from '@lyrasoft/ts-toolkit/generic';\n\nconst queues: Dictionary<TaskQueue> = {};\n\nexport function useQueue(name: string = 'default', maxRunning = 1): TaskQueue {\n return queues[name] ??= createQueue(maxRunning);\n}\n\nexport function createQueue(maxRunning = 1): TaskQueue {\n return queue(maxRunning);\n}\n\n","import {\n S3MultipartUploader,\n S3MultipartUploaderModule,\n S3MultipartUploaderOptions\n} from '../module/s3-multipart-uploader';\nimport type { S3Uploader, S3UploaderGlobalOptions, S3UploaderModule } from '../module/s3-uploader';\n\nexport async function useS3Uploader(): Promise<S3UploaderModule>;\nexport async function useS3Uploader(name: string, options?: Partial<S3UploaderGlobalOptions>): Promise<S3Uploader>;\nexport async function useS3Uploader(name?: string, options: Partial<S3UploaderGlobalOptions> = {}): Promise<any> {\n const module = await import('../module/s3-uploader');\n\n if (!name) {\n return module;\n }\n\n const { get } = module;\n\n return get(name, options);\n}\n\nexport async function useS3MultipartUploader(): Promise<S3MultipartUploaderModule>;\nexport async function useS3MultipartUploader(options: Partial<S3MultipartUploaderOptions>): Promise<S3MultipartUploader>;\nexport async function useS3MultipartUploader(options?: Partial<S3MultipartUploaderOptions>): Promise<any> {\n const module = await import('../module/s3-multipart-uploader');\n\n if (options != null) {\n return new module.S3MultipartUploader(options);\n }\n\n return module;\n}\n","import { ShowOnModule } from '../module/show-on';\n\nexport async function useShowOn(): Promise<ShowOnModule> {\n const module = await import('../module/show-on');\n\n await module.ready;\n\n return module;\n}\n","\nimport { Dictionary } from '../types';\nimport { Stack, stack } from '@lyrasoft/ts-toolkit/generic';\n\nconst stacks: Dictionary<Stack> = {};\n\nexport function useStack<T = any>(name: string = 'default', store: any[] = []): Stack<T> {\n return stacks[name] ??= createStack<T>(store);\n}\n\nexport function createStack<T = any>(store: any[] = []): Stack<T> {\n return stack<T>(store);\n}\n","import { module, useCssImport, useCssIncludes, useImport, wait } from '../service';\nimport type { Nullable } from '../types';\nimport { mergeDeep } from '../utilities';\n\n/**\n * @see https://tom-select.js.org/\n */\nexport async function useTomSelect(\n selector?: Nullable<string | HTMLElement | NodeListOf<HTMLElement>>,\n options: Record<string, any> = {},\n theme: string = 'bootstrap5'\n) {\n const [m] = await wait(\n useImport('@vendor/tom-select/dist/js/tom-select.complete.min.js'),\n useCssImport(`@vendor/tom-select/dist/css/tom-select.${theme}.min.css`)\n );\n\n if (selector) {\n module<any, HTMLSelectElement>(\n selector,\n 'tom.select',\n (ele) => {\n options = mergeDeep({\n allowEmptyOption: true,\n maxOptions: null,\n plugins: {\n caret_position: {},\n clear_button: {},\n }\n }, options);\n\n if ((ele as HTMLSelectElement).multiple) {\n options.plugins.remove_button = {};\n } else {\n options.plugins.dropdown_input = {};\n }\n\n // Auto select first if options changed.\n // @see https://github.com/orchidjs/tom-select/issues/362\n class UnicornTomSelect extends TomSelect {\n syncOptionsWithoutKeepSelected() {\n const oldValue = ele.value;\n\n this.clear();\n this.clearOptions();\n this.sync();\n\n if (ele.value !== oldValue) {\n this.setValue(\n ele.querySelector<HTMLOptionElement>(`option[value=\"${oldValue}\"]`)?.value\n ?? ele.querySelector<HTMLOptionElement>('option')?.value\n ?? '',\n true\n );\n }\n }\n }\n\n // @ts-ignore\n const t = new UnicornTomSelect(ele as TomInput, options);\n\n ele.addEventListener('list:updated', () => {\n t.syncOptionsWithoutKeepSelected();\n });\n\n return t;\n }\n );\n }\n\n return m;\n}\n","import type { TinymceController, TinymceModule } from '../module/tinymce';\nimport type { MaybePromise } from '../types';\nimport type { TinyMCE } from 'tinymce';\n\nexport async function useTinymce(): Promise<TinymceModule>\nexport async function useTinymce(\n selector?: string,\n options?: Record<string, any>\n): Promise<TinymceController>;\nexport async function useTinymce(\n selector?: string,\n options: Record<string, any> = {}\n): Promise<any> {\n const module = await import('../module/tinymce');\n\n if (selector) {\n return module.get(selector, options);\n }\n\n return module;\n}\n\nexport async function useTinymceHook(\n handler: ((tinymce: TinyMCE) => MaybePromise<any>)\n): Promise<void> {\n const { addHook } = await import('../module/tinymce');\n\n return addHook(handler);\n}\n","import type { default as WebDirective, WebDirectiveHandler, WebDirectiveOptions } from 'web-directive';\nimport { Dictionary } from '../types';\n\nlet instances: Dictionary<WebDirective> = {};\n\nexport async function useWebDirective(\n name: string,\n options: false\n): Promise<void>;\nexport async function useWebDirective(\n name: string,\n options?: Partial<WebDirectiveOptions>\n): Promise<WebDirective>;\nexport async function useWebDirective(\n name: string = 'unicorn',\n options: Partial<WebDirectiveOptions> | false = {}\n): Promise<WebDirective | void> {\n if (options === false) {\n delete instances[name];\n return;\n }\n\n return instances[name] ??= await createWebDirective(Object.assign({}, options, { prefix: 'uni-' }));\n}\n\nexport async function useUniDirective<T extends Element = HTMLElement, M extends Record<string, boolean> = Record<string, boolean>>(\n name: string,\n handler: WebDirectiveHandler<T, M>,\n wdInstance: WebDirective | string = 'unicorn'\n): Promise<void> {\n const wd = typeof wdInstance === 'string' ? await useWebDirective(wdInstance) : wdInstance;\n\n wd.register<T, M>(name, handler);\n}\n\nasync function createWebDirective(options: Partial<WebDirectiveOptions> = {}): Promise<WebDirective> {\n const WebDirective = (await import('web-directive')).default;\n\n const wd = new WebDirective(options);\n wd.listen();\n\n return wd;\n}\n","import type {\n UnicornFieldValidation,\n UnicornFormValidation,\n ValidationHandler,\n ValidationModule,\n ValidatorOptions,\n} from '../module/validation';\nimport { getBoundedInstance } from '../service';\n\nexport type {\n ValidationHandler,\n ValidationModule,\n Validator,\n ValidatorOptions,\n ValidatorNoticeFunction,\n FieldValidationOptions,\n FormValidationOptions\n} from '../module/validation';\n\nexport async function useFormValidation(): Promise<ValidationModule>;\nexport async function useFormValidation(selector: string | Element): Promise<UnicornFormValidation | null>;\nexport async function useFormValidation(selector?: string | Element): Promise<any> {\n const module = await import('../module/validation');\n\n await module.ready;\n\n if (!selector) {\n return module;\n }\n\n return useFormValidationInstance(selector);\n}\n\nexport function useFormValidationInstance(selector: string | Element): UnicornFormValidation | null {\n return getBoundedInstance<UnicornFormValidation>(selector, 'form.validation');\n}\n\nexport function useFieldValidationInstance(selector: string | Element): UnicornFieldValidation | null {\n return getBoundedInstance<UnicornFieldValidation>(selector, 'field.validation');\n}\n\nexport async function addGlobalValidator<T extends any, E extends HTMLElement, P = Record<string, any>>(\n name: string,\n validator: ValidationHandler<T, E, P>,\n options: ValidatorOptions<E, P> = {}\n): Promise<void> {\n const { UnicornFormValidation } = await useFormValidation();\n\n UnicornFormValidation.addGlobalValidator<T, E, P>(name, validator, options);\n}\n","import {\n AlertAdapter,\n deleteConfirm,\n simpleAlert,\n simpleConfirm,\n simpleNotify,\n clearNotifies,\n promiseWithResolvers\n} from '@lyrasoft/ts-toolkit/generic';\nimport type { Alpine as AlpineGlobal } from 'alpinejs';\nimport type { default as SpectrumGlobal } from 'spectrum-vanilla';\nimport type { SpectrumOptions } from 'spectrum-vanilla/dist/types/types';\nimport type { default as TomSelectGlobal } from 'tom-select';\nimport { useStack } from '../composable';\nimport { data, removeData } from '../data';\nimport type { Constructor, MaybePromise, Nullable, UIThemeInterface } from '../types';\nimport { animateTo } from './animate';\nimport { html, module, selectAll, selectOne } from './dom';\nimport { nextTick } from './helper';\nimport { useCssImport, useImport } from './loader';\n\nlet ui: UnicornUI;\n\nAlertAdapter.alert = (title: string, text = '', type = 'info'): Promise<void> => {\n if (text) {\n title += ' | ' + text;\n }\n\n window.alert(title);\n\n return Promise.resolve();\n};\n\nAlertAdapter.confirm = (message: string, text = '', type = 'info'): Promise<boolean> => {\n message = message || 'Are you sure?';\n\n if (text) {\n message += ' | ' + text;\n }\n\n return new Promise((resolve) => {\n resolve(window.confirm(message));\n });\n};\n\nAlertAdapter.notify = async (title: string, text?: string, type: string = 'log'): Promise<() => any> => {\n if (text) {\n title += ' | ' + text;\n }\n\n return ui.theme?.renderMessage(title, type) ?? (() => null);\n};\n\nAlertAdapter.clearNotifies = async (): Promise<void> => {\n ui.theme?.clearMessages();\n};\n\nAlertAdapter.confirmText = () => 'OK';\nAlertAdapter.cancelText = () => 'Cancel';\nAlertAdapter.deleteText = () => 'Delete';\n\nexport { simpleAlert, simpleConfirm, deleteConfirm, simpleNotify, clearNotifies };\n\nexport interface AlertAdapterConfig {\n alert?: typeof AlertAdapter['alert'];\n confirm?: typeof AlertAdapter['confirm'];\n deleteConfirm?: typeof AlertAdapter['deleteConfirm'];\n confirmText?: typeof AlertAdapter['confirmText'];\n cancelText?: typeof AlertAdapter['cancelText'];\n deleteText?: typeof AlertAdapter['deleteText'];\n notify?: typeof AlertAdapter['notify'];\n clearNotifies?: typeof AlertAdapter['clearNotifies'];\n}\n\nexport function useAlertAdapter(config?: AlertAdapterConfig): typeof AlertAdapter {\n if (config) {\n Object.assign(AlertAdapter, config);\n }\n\n return AlertAdapter;\n}\n\nexport function useUI(instance?: UnicornUI): UnicornUI {\n if (instance) {\n ui = instance;\n }\n\n return ui ??= new UnicornUI();\n}\n\nexport function useUITheme<T extends UIThemeInterface>(theme?: T | Constructor<T>): UIThemeInterface {\n const ui = useUI();\n\n if (ui.theme && !theme) {\n return ui.theme;\n }\n\n if (typeof theme === 'function') {\n theme = new theme();\n }\n\n ui.installTheme(theme);\n\n return ui.theme!;\n}\n\nexport class UnicornUI {\n theme?: UIThemeInterface;\n\n static get defaultOptions() {\n return {\n messageSelector: '.message-wrap',\n };\n }\n\n installTheme(theme: any) {\n this.theme = theme;\n }\n\n // confirm(message: string): Promise<boolean> {\n // message = message || 'Are you sure?';\n //\n // return new Promise((resolve) => {\n // resolve(window.confirm(message));\n // });\n // }\n //\n // alert(title: string, text = '', type = 'info'): Promise<boolean> {\n // if (text) {\n // title += ' | ' + text;\n // }\n //\n // window.alert(title);\n //\n // return Promise.resolve(true);\n // }\n}\n\nconst prepares: AlpinePrepareCallback[] = [];\ntype AlpinePrepareCallback = (Alpine: AlpineGlobal) => MaybePromise<any>;\nconst { promise: alpineLoaded, resolve: alpineResolve } = promiseWithResolvers<AlpineGlobal>();\n\nexport async function loadAlpine(callback?: Nullable<AlpinePrepareCallback>): Promise<AlpineGlobal> {\n if (callback && !window.Alpine) {\n prepares.push(callback);\n }\n\n const { default: Alpine }: { default: AlpineGlobal } = await useImport('@alpinejs');\n\n if (!window.Alpine) {\n await Promise.all(prepares.map((callback) => Promise.resolve(callback(Alpine))));\n\n Alpine.start();\n\n window.Alpine = Alpine;\n\n alpineResolve(Alpine);\n } else if (callback) {\n await callback(Alpine);\n }\n\n return Alpine;\n}\n\nexport async function initAlpineComponent(directive: string) {\n const Alpine = await alpineLoaded;\n\n await nextTick();\n\n selectAll<HTMLElement>(`[${directive}]`, (el) => {\n const code = el.getAttribute(directive) || '';\n el.removeAttribute(directive);\n\n // @see https://github.com/alpinejs/alpine/issues/359#issuecomment-973688464\n Alpine.mutateDom(() => {\n el.setAttribute('x-data', code);\n });\n\n Alpine.initTree(el);\n });\n}\n\n/**\n * Before Alpine init\n */\nexport async function prepareAlpine(callback: AlpinePrepareCallback) {\n if (window.Alpine) {\n await callback(window.Alpine);\n } else {\n prepares.push(callback);\n }\n}\n\nexport async function prepareAlpineDefer(callback: AlpinePrepareCallback) {\n const Alpine = await alpineLoaded;\n\n await callback(window.Alpine);\n}\n\n/**\n * Render Messages.\n */\nexport function renderMessage(messages: string | string[], type: string = 'info') {\n return ui.theme?.renderMessage(messages, type);\n}\n\n/**\n * Clear messages.\n */\nexport function clearMessages() {\n ui.theme?.clearMessages();\n}\n\nexport async function mark(selector?: string | HTMLElement, keyword: string = '', options: Record<string, any> = {}) {\n const modules = await useImport('@vendor/mark.js/dist/mark.min.js');\n\n if (selector != null) {\n const instance = new Mark(selector);\n instance.mark(keyword, options);\n }\n\n return modules;\n}\n\nexport async function slideUp(target: string | HTMLElement, duration: number = 300): Promise<Animation | void> {\n const ele = selectOne(target);\n\n if (!ele) {\n return Promise.resolve();\n }\n\n ele.style.overflow = 'hidden';\n\n const animation = animateTo(\n ele,\n { height: 0, paddingTop: 0, paddingBottom: 0 },\n { duration, easing: 'ease-out' }\n );\n\n data(ele, 'animation.sliding.up', true);\n\n const r = await animation.finished;\n\n if (!data(ele, 'animation.sliding.down')) {\n ele.style.display = 'none';\n }\n\n removeData(ele, 'animation.sliding.up');\n\n return r;\n}\n\nexport function slideDown(\n target: string | HTMLElement,\n duration: number = 300,\n display: string = 'block'): Promise<Animation | void> {\n const ele = selectOne(target);\n\n if (!ele) {\n return Promise.resolve();\n }\n\n data(ele, 'animation.sliding.down', true);\n\n ele.style.display = display;\n ele.style.overflow = 'hidden';\n\n// Get height\n let maxHeight = 0;\n for (const child of Array.from(ele.children) as HTMLElement[]) {\n maxHeight = Math.max(child.offsetHeight, maxHeight);\n }\n\n const animation = animateTo(\n ele,\n {\n height: [\n 0,\n maxHeight + 'px'\n ]\n },\n { duration, easing: 'ease-out' }\n );\n\n animation.addEventListener('finish', () => {\n ele.style.height = '';\n\n if (!data(ele, 'animation.sliding.up')) {\n ele.style.overflow = 'visible';\n }\n\n removeData(ele, 'animation.sliding.down');\n });\n\n return animation.finished;\n}\n\n/**\n * slideToggle\n */\nexport function slideToggle(\n target: string | HTMLElement,\n duration: number = 500,\n display: string = 'block'): Promise<Animation | void> {\n const ele = selectOne(target);\n\n if (!ele) {\n return Promise.resolve();\n }\n\n if (window.getComputedStyle(ele).display === 'none') {\n return slideDown(ele, duration, display);\n } else {\n return slideUp(ele, duration);\n }\n}\n\nexport async function fadeOut(selector: string | HTMLElement, duration: number = 500): Promise<Animation | void> {\n const el = selectOne(selector);\n\n if (!el) {\n return;\n }\n\n const animation = animateTo(el, { opacity: 0 }, { duration, easing: 'ease-out' });\n\n const p = await animation.finished;\n el.style.display = 'none';\n\n return p;\n};\n\nexport async function fadeIn(\n selector: string | HTMLElement,\n duration: number = 500,\n display: string = 'block'\n): Promise<Animation | void> {\n const el = selectOne(selector);\n\n if (!el) {\n return;\n }\n\n el.style.display = '';\n\n if (window.getComputedStyle(el).display !== display) {\n el.style.display = display;\n }\n\n const animation = animateTo(el, { opacity: 1 }, { duration, easing: 'ease-out' });\n\n return animation.finished;\n};\n\nexport async function highlight(\n selector: string | HTMLElement,\n color: string = '#ffff99',\n duration: number = 600\n): Promise<Animation | void> {\n const ele = selectOne(selector);\n\n if (!ele) {\n return;\n }\n\n duration /= 2;\n const bg = window.getComputedStyle(ele).backgroundColor;\n\n const animation = animateTo(ele, { backgroundColor: color }, { duration });\n\n await animation.finished;\n\n return animateTo(ele, { backgroundColor: bg }, { duration });\n}\n\n/**\n * Color Picker.\n */\nexport async function useColorPicker(\n selector?: Nullable<string | HTMLElement | NodeListOf<HTMLElement>>,\n options: Partial<SpectrumOptions> = {}\n): Promise<any> {\n if (options?.theme === 'dark') {\n useCssImport('@spectrum/spectrum-dark.min.css');\n } else if (!options?.theme) {\n useCssImport('@spectrum/spectrum.min.css');\n }\n\n const m = await useImport('@spectrum');\n\n // Locale\n if (typeof options.locale === 'string') {\n let ls: any = options.locale.split('-').map((l) => l.toLowerCase());\n\n if (ls[0] === ls[1]) {\n ls = [ls];\n }\n\n ls = ls.join('-');\n try {\n await useImport(`@spectrum/i18n/${ls}.js`);\n } catch (e) {\n console.warn(`Unable to load Spectrum locale \"${ls}\" (${options.locale})`);\n }\n }\n\n if (selector) {\n return module<any, HTMLElement>(selector, 'spectrum', (ele) => Spectrum.getInstance(ele, options));\n }\n\n return m;\n}\n\nexport function useDisableOnSubmit(\n formSelector: string | HTMLFormElement = '#admin-form',\n buttonSelector: string = '',\n options: Record<string, any> = {}\n) {\n // Todo: Use object to handle it\n buttonSelector = buttonSelector || [\n '#admin-toolbar button',\n '#admin-toolbar a',\n formSelector + ' .disable-on-submit',\n formSelector + ' .js-dos',\n formSelector + ' [data-dos]',\n ].join(',');\n\n const iconSelector = options.iconSelector || [\n '[class*=\"fa-\"]',\n '[data-spin]',\n '[data-spinner]',\n ].join(',');\n\n const event = options.event || 'submit';\n const spinnerClass = options.spinnerClass || 'spinner-border spinner-border-sm';\n const loadingClass = options.loadingCass || 'is-loading';\n\n selectAll<HTMLElement>(buttonSelector, (button) => {\n button.addEventListener('click', (e) => {\n button.dataset.clicked = '1';\n\n setTimeout(() => {\n delete button.dataset.clicked;\n }, 1500);\n });\n });\n\n const form = selectOne<HTMLFormElement>(formSelector);\n form?.addEventListener(event, (e: SubmitEvent) => {\n setTimeout(() => {\n if (!form.checkValidity()) {\n return;\n }\n\n selectAll<HTMLElement>(buttonSelector, (button) => {\n button.style.pointerEvents = 'none';\n button.setAttribute('disabled', 'disabled');\n button.classList.add('disabled');\n\n if (button.dataset.clicked) {\n let icon = button.querySelector(iconSelector);\n button.classList.add(loadingClass);\n\n if (icon) {\n const i = html('<i></i>');\n icon.parentNode.replaceChild(i, icon);\n\n i.setAttribute('class', spinnerClass);\n // icon.styles.width = '1em';\n // icon.styles.height = '1em';\n // icon.styles.borderWith = '.15em';\n }\n }\n });\n }, 0);\n });\n}\n\nexport function useDisableIfStackNotEmpty(buttonSelector: string = '[data-task=save]',\n stackName: string = 'uploading') {\n const stack = useStack(stackName);\n\n stack.observe((stack, length) => {\n for (const button of selectAll<HTMLElement>(buttonSelector)) {\n if (length > 0) {\n button.setAttribute('disabled', 'disabled');\n button.classList.add('disabled');\n } else {\n button.removeAttribute('disabled');\n button.classList.remove('disabled');\n }\n }\n });\n}\n\n/**\n * Keep alive.\n */\nexport function useKeepAlive(url: string, time: number = 60000): () => void {\n const aliveHandle = window.setInterval(() => fetch(url), time);\n\n return () => {\n clearInterval(aliveHandle);\n };\n}\n\n/**\n * Vue component field.\n */\nexport async function useVueComponentField(\n selector?: Nullable<string | HTMLElement>,\n value?: any,\n options: Record<string, any> = {}\n): Promise<any> {\n const m = await useImport('@unicorn/field/vue-component-field.js');\n\n if (selector) {\n m.VueComponentField.init(selector, value, options);\n }\n\n return m;\n}\n\ndeclare global {\n var Alpine: AlpineGlobal;\n var TomSelect: typeof TomSelectGlobal;\n var Spectrum: typeof SpectrumGlobal;\n var Mark: any;\n}\n","import { data } from '../data';\n\ntype UriTypes = 'full' | 'path' | 'root' | 'current' | 'route' | 'script';\ntype AssetTypes = 'root' | 'path';\n\nexport function useSystemUri(): UnicornSystemUri;\nexport function useSystemUri(type: UriTypes): string;\nexport function useSystemUri(type?: UriTypes, path?: string): UnicornSystemUri | string {\n const uri = UnicornSystemUri.get();\n\n if (type) {\n return uri[type](path);\n }\n\n return uri;\n}\n\nexport function useAssetUri(): UnicornAssetUri;\nexport function useAssetUri(type?: AssetTypes, path?: string): string;\nexport function useAssetUri(type?: AssetTypes, path?: string): UnicornAssetUri | string {\n const asset = UnicornAssetUri.get();\n\n if (type) {\n return asset[type](path);\n }\n\n return asset;\n}\n\nfunction uri(type: string) {\n return data('unicorn.uri')[type];\n}\n\nfunction asset(type: string) {\n return uri('asset')[type];\n}\n\nexport function addUriBase(uri: string, type = 'path') {\n if (uri.substring(0, 2) === '/\\/' || uri.substring(0, 4) === 'http') {\n return uri;\n }\n\n return asset(type) + '/' + uri;\n}\n\nexport class UnicornSystemUri extends URL {\n static instance: UnicornSystemUri;\n\n static get() {\n return this.instance ??= new this(uri('full'));\n }\n\n path(path: string = ''): string {\n return uri('path') + path;\n }\n\n root(path: string = ''): string {\n return uri('root') + path;\n }\n\n current(): string {\n return uri('current') || '';\n }\n\n full(): string {\n return uri('full') || '';\n }\n\n route(): string {\n return uri('route') || '';\n }\n\n script(): string {\n return uri('script') || '';\n }\n\n routeWithQuery() {\n const route = this.route();\n const query = this.searchParams.toString();\n\n return query ? `${route}?${query}` : route;\n }\n\n routeAndQuery() {\n const route = this.route();\n const query = this.searchParams.toString();\n\n return [route, query];\n }\n}\n\nexport class UnicornAssetUri {\n static instance: UnicornAssetUri;\n\n static get() {\n return this.instance ??= new this();\n }\n\n path(path: string = ''): string {\n return asset('path') + path;\n }\n\n root(path: string = ''): string {\n return asset('root') + path;\n }\n}\n","export function encode(obj, pfx) {\n\tvar k, i, tmp, str='';\n\n\tfor (k in obj) {\n\t\tif ((tmp = obj[k]) !== void 0) {\n\t\t\tif (Array.isArray(tmp)) {\n\t\t\t\tfor (i=0; i < tmp.length; i++) {\n\t\t\t\t\tstr && (str += '&');\n\t\t\t\t\tstr += encodeURIComponent(k) + '=' + encodeURIComponent(tmp[i]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstr && (str += '&');\n\t\t\t\tstr += encodeURIComponent(k) + '=' + encodeURIComponent(tmp);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (pfx || '') + str;\n}\n\nfunction toValue(mix) {\n\tif (!mix) return '';\n\tvar str = decodeURIComponent(mix);\n\tif (str === 'false') return false;\n\tif (str === 'true') return true;\n\treturn (+str * 0 === 0) ? (+str) : str;\n}\n\nexport function decode(str) {\n\tvar tmp, k, out={}, arr=str.split('&');\n\n\twhile (tmp = arr.shift()) {\n\t\ttmp = tmp.split('=');\n\t\tk = tmp.shift();\n\t\tif (out[k] !== void 0) {\n\t\t\tout[k] = [].concat(out[k], toValue(tmp.shift()));\n\t\t} else {\n\t\t\tout[k] = toValue(tmp.shift());\n\t\t}\n\t}\n\n\treturn out;\n}\n","\nimport { data } from '../data';\nimport { decode, encode } from 'qss';\n\n/**\n * Add a route.\n */\nexport function addRoute(route: string, url: string) {\n const routes = data('unicorn.routes') || {};\n routes[route] = url;\n\n data('unicorn.routes', routes);\n}\n\n/**\n * Get route.\n */\nexport function route(route: string, query?: Record<string, any>): string {\n const source = route;\n const extract = extractRoute(source);\n route = extract.route;\n let path = extract.path;\n const routes = data('unicorn.routes') || {};\n\n let url = routes[route];\n\n if (url == null) {\n if (!route.startsWith('@')) {\n route = '@' + route;\n } else {\n route = route.substring(1);\n }\n }\n\n url = routes[route];\n\n if (url == null) {\n throw new Error(`Route: \"${source}\" not found`);\n }\n\n // Merge query\n if (path) {\n const { route: u1, path: u1q } = extractRoute(url, '?');\n const { route: u2, path: u2q } = extractRoute(path, '?');\n\n url = u1 + '/' + u2;\n\n if (u1q || u2q) {\n const q = [ u1q, u2q ].filter(u => u).join('&');\n url += '?' + q;\n }\n }\n\n return addQuery(url, query);\n}\n\nfunction extractRoute(route: string, sep: string = '/'): { path: string; route: string } {\n if (route.indexOf(sep) === -1) {\n return { route, path: '' }\n }\n\n const segments = route.split(sep);\n\n route = segments.shift() || '';\n const path = segments.join(sep);\n\n return { route, path };\n}\n\nexport function hasRoute(route: string): boolean {\n return undefined !== data('unicorn.routes')[route];\n}\n\nexport function addQuery(url: string, query?: Record<string, any>): string {\n if (query == null) {\n return url;\n }\n\n for (let k in query) {\n const v = query[k];\n\n const placeholder = `{${k}}`;\n\n if (url.indexOf(placeholder) !== -1) {\n url = url.replace(\n new RegExp(`${placeholder}`, 'g'),\n v\n );\n delete query[k];\n }\n\n const encodedPlaceholder = encodeURIComponent(`{${k}}`);\n\n if (url.indexOf(encodedPlaceholder) !== -1) {\n url = url.replace(\n new RegExp(`${encodedPlaceholder}`, 'g'),\n v\n );\n delete query[k];\n }\n }\n\n if (Object.keys(query).length === 0) {\n return url;\n }\n\n const queryString = encode(query);\n\n return url + (/\\?/.test(url) ? `&${queryString}` : `?${queryString}`);\n}\n\nexport function parseQuery<T = Record<string, any>>(queryString: string): T {\n return decode(queryString) as T;\n}\n\nexport function buildQuery(query: Record<string, any>): string {\n return encode(query);\n}\n","import { selectAll } from '../service';\n\nexport function removeCloak() {\n if (globalThis.document == null) {\n return;\n }\n\n selectAll('[uni-cloak]', (el) => el.removeAttribute('uni-cloak'));\n}\n","import { getData, removeData as rmdata, setData } from './utilities';\n\nexport function data(name: string, data?: any): any;\nexport function data<T = void, R = [T] extends [void] ? any : T | undefined>(name: string): R;\nexport function data<T = void, R = [T] extends [void] ? any : T | undefined>(ele: Element, name: string): R;\nexport function data(ele: Element, name: string, value: any): any;\nexport function data(ele: Element | string, name?: any, value?: any) {\n if (!(ele instanceof HTMLElement)) {\n value = name;\n name = ele;\n ele = document as any as Element;\n }\n\n if (name === undefined) {\n return getData(ele);\n }\n\n if (value === undefined) {\n return getData(ele, name);\n }\n\n setData(ele, name, value);\n}\n\nexport function removeData(name: string): any;\nexport function removeData(ele: Element, name: string): any;\nexport function removeData(ele: Element|string, name: any = undefined) {\n if (!(ele instanceof HTMLElement)) {\n name = ele;\n ele = document as any as Element;\n }\n\n rmdata(ele, name);\n}\n","export abstract class EventMixin implements EventAwareInterface {\n _listeners: Record<string, EventHandler[]> = {};\n\n on<T extends any[]>(event: string, handler: EventHandler<T>): this;\n on(event: string | string[], handler: EventHandler): this;\n on(event: string | string[], handler: EventHandler): this {\n if (Array.isArray(event)) {\n for (const e of event) {\n this.on(e, handler);\n }\n return this;\n }\n\n this._listeners[event] ??= [];\n\n this._listeners[event].push(handler);\n\n return this;\n }\n\n once<T extends any[]>(event: string, handler: EventHandler<T>): this;\n once(event: string | string[], handler: EventHandler): this;\n once(event: string | string[], handler: EventHandler): this {\n handler.once = true;\n return this.on(event, handler);\n }\n\n off(event: string, handler?: EventHandler): this {\n if (handler) {\n this._listeners[event] = this.listeners(event).filter((listener) => listener !== handler);\n return this;\n }\n\n delete this._listeners[event];\n\n return this;\n }\n\n trigger<T extends any[]>(event: string, ...args: T): this;\n trigger(event: string[], ...args: any[]): this;\n trigger(event: string | string[], ...args: any[]): this {\n if (Array.isArray(event)) {\n for (const e of event) {\n this.trigger(e);\n }\n return this;\n }\n\n for (const listener of this.listeners(event)) {\n listener(...args);\n }\n\n // Remove once\n this._listeners[event] = this.listeners(event).filter((listener) => listener?.once !== true);\n\n return this;\n }\n\n listeners(event: string): EventHandler[] {\n return this._listeners[event] === undefined ? [] : this._listeners[event];\n }\n}\n\n// export class EventBus extends Mixin(EventMixin) {\n// }\n\nexport type EventHandler<T extends any[] = any[]> = ((...event: T) => void) & { once?: boolean };\n\nexport interface EventAwareInterface {\n on<T extends any[]>(event: string, handler: EventHandler<T>): this;\n on(event: string | string[], handler: EventHandler): this;\n\n once<T extends any[]>(event: string, handler: EventHandler<T>): this;\n once(event: string | string[], handler: EventHandler): this;\n\n off(event: string, handler?: EventHandler): this;\n\n trigger<T extends any[]>(event: string, ...args: T): this;\n trigger(event: string[], ...args: any[]): this;\n\n listeners(event: string): EventHandler[];\n}\n","\nimport { Mixin } from 'ts-mixer';\nimport { data } from './data';\nimport { EventAwareInterface, EventMixin } from './events';\nimport { domready } from './service';\nimport { Constructor, UnicornPlugin } from './types';\n\nexport type InjectionKey<T = any> = string | symbol | Constructor<T>;\n\nexport interface UnicornApp extends EventAwareInterface {}\n\nexport class UnicornApp extends Mixin(EventMixin) implements EventAwareInterface {\n registry = new Map();\n plugins = new Map();\n // _listeners = {};\n waits: Promise<any>[] = [];\n options: Record<string, any>;\n defaultOptions: Record<string, any> = {};\n domready = domready;\n data = data;\n\n constructor(options = {}) {\n super();\n this.options = Object.assign({}, this.defaultOptions, options);\n\n // Wait dom ready\n if (typeof document !== 'undefined') {\n this.wait((resolve: Function) => {\n document.addEventListener('DOMContentLoaded', () => resolve());\n });\n\n // Ready\n document.addEventListener('DOMContentLoaded', () => {\n this.completed().then(() => this.trigger('loaded'));\n });\n }\n }\n\n use(plugin: UnicornPlugin, options: Record<string, any> = {}) {\n if (Array.isArray(plugin)) {\n plugin.forEach(p => this.use(p));\n return this;\n }\n\n // if (plugin.is === undefined) {\n // throw new Error(`Plugin: ${plugin.name} must instance of : ${Plugin.name}`);\n // }\n\n plugin?.install?.(this, options);\n\n this.trigger('plugin.installed', plugin);\n\n this.plugins.set(plugin, plugin);\n\n return this;\n }\n\n detach(plugin: any) {\n if (plugin.uninstall) {\n plugin.uninstall(this);\n }\n\n this.trigger('plugin.uninstalled', plugin);\n\n return this;\n }\n\n inject<T>(id: InjectionKey<T>): T;\n inject<T>(id: InjectionKey<T>, def: T): T;\n inject<T>(id: InjectionKey<T>, def?: T): T;\n inject<T>(id: InjectionKey<T>, def?: T): T | undefined {\n if (!this.registry.has(id)) {\n if (def !== undefined) {\n return def;\n }\n\n throw new Error(`Injectable: \"${(id as any).name ?? id}\" not found.`);\n }\n\n return this.registry.get(id);\n }\n\n provide<T>(id: InjectionKey<T>, value: any) {\n this.registry.set(id, value);\n\n return this;\n }\n\n // trigger(event, ...args) {\n // return this.tap(super.trigger(event, ...args), () => {\n // if (this.data('windwalker.debug')) {\n // console.debug(`[Unicorn Event] ${event}`, args, this.listeners(event));\n // }\n // });\n // }\n\n wait(callback: Function): Promise<any> {\n const p = new Promise((resolve, reject) => {\n const promise = callback(resolve, reject);\n\n if (promise && 'then' in promise) {\n promise.then(resolve).catch(reject);\n }\n });\n\n this.waits.push(p);\n\n return p;\n }\n\n completed(): Promise<any[]> {\n const promise = Promise.all(this.waits);\n\n this.waits = [];\n\n return promise;\n }\n\n macro(name: string, prop: any) {\n if ((this as any)[name]) {\n throw new Error(`Macro: ${name} already exists.`);\n }\n\n (this as any)[name] = prop;\n\n return this;\n }\n}\n","// @ts-nocheck\n// @see https://github.com/javan/form-request-submit-polyfill\nexport function formRequestSubmit(prototype) {\n if (typeof prototype.requestSubmit == 'function') {\n return;\n }\n\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement('input');\n submitter.type = 'submit';\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, 'parameter 1 is not of type \\'HTMLElement\\'');\n submitter.type == 'submit' || raise(TypeError, 'The specified element is not a submit button');\n submitter.form == form || raise(DOMException, 'The specified element is not owned by this form element', 'NotFoundError');\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor('Failed to execute \\'requestSubmit\\' on \\'HTMLFormElement\\': ' + message + '.', name);\n }\n}\n","\nimport { formRequestSubmit } from './form-request-submit';\n\nexport function polyfill() {\n // If in browser\n if (typeof window !== 'undefined') {\n formRequestSubmit(HTMLFormElement.prototype);\n }\n}\n","import { MultiUploaderModule } from '../module/field-multi-uploader';\n\nexport async function useFieldMultiUploader(): Promise<MultiUploaderModule> {\n const module = await import('../module/field-multi-uploader');\n\n await module.ready;\n\n return module;\n}\n","import type { UnicornApp } from '../app';\nimport {\n useBs5ButtonRadio, useBs5KeepTab,\n useBs5Tooltip,\n useFieldCascadeSelect,\n useFieldFileDrag,\n useFieldFlatpickr,\n useFieldModalSelect, useFieldModalTree,\n useFieldRepeatable,\n useFieldSingleImageDrag,\n useIframeModal, useListDependent, useS3Uploader,\n useShowOn, useTomSelect,\n} from '../composable';\nimport { useFieldMultiUploader } from '../composable/useFieldMultiUploader';\nimport { useTinymce } from '../composable/useTinymce';\nimport { useUnicorn } from '../unicorn';\n\ndeclare module '../app' {\n export interface UnicornApp {\n /** @deprecated Only for code generator use. */\n $ui: typeof methods;\n }\n}\n\n// @ts-ignore\ndeclare module '@windwalker-io/unicorn-next' {\n export interface UnicornApp {\n /** @deprecated Only for code generator use. */\n $ui: typeof methods;\n }\n}\n\nexport function useUnicornPhpAdapter(app?: UnicornApp) {\n app ??= useUnicorn();\n\n app.use(UnicornPhpAdapter);\n\n return app.$ui;\n}\n\nconst methods = {\n repeatable: useFieldRepeatable,\n flatpickr: useFieldFlatpickr,\n fileDrag: useFieldFileDrag,\n modalField: useFieldModalSelect,\n cascadeSelect: useFieldCascadeSelect,\n sid: useFieldSingleImageDrag,\n tinymce: {\n init: useTinymce\n },\n s3Uploader: useS3Uploader,\n iframeModal: useIframeModal,\n initShowOn: useShowOn,\n modalTree: useFieldModalTree,\n multiUploader: useFieldMultiUploader,\n tomSelect: useTomSelect,\n listDependent: useListDependent,\n bootstrap: {\n tooltip: useBs5Tooltip,\n buttonRadio: useBs5ButtonRadio,\n keepTab: useBs5KeepTab,\n }\n};\n\nexport class UnicornPhpAdapter {\n static install(app: UnicornApp) {\n if (app.$ui) {\n app.$ui = { ...app.$ui, ...methods };\n } else {\n app.$ui = methods;\n }\n }\n}\n","import { InjectionKey, UnicornApp } from './app';\nimport { polyfill } from './polyfill';\nimport { Dictionary } from './types';\nimport { removeCloak } from './utilities';\n\nexport * from './data';\nexport * from './events';\nexport * from './service';\nexport * from './composable';\nexport * from './plugin';\n\nexport type { UnicornApp };\n\nlet app: UnicornApp;\n\nexport function createUnicorn(): UnicornApp {\n polyfill();\n removeCloak();\n\n return app = new UnicornApp();\n}\n\nexport function createUnicornWithPlugins(): UnicornApp {\n const app = createUnicorn();\n\n // app.use(UnicornUI);\n\n // app.use(UnicornDom);\n\n return app;\n}\n\nexport function useUnicorn(instance?: UnicornApp): UnicornApp {\n if (instance) {\n app = instance;\n }\n\n return app ??= createUnicorn();\n}\n\nexport const useInject: typeof UnicornApp.prototype.inject = <T = any>(id: InjectionKey<T>, def?: T): T => {\n return useUnicorn().inject<T>(id, def);\n}\n\nexport function pushUnicornToGlobal(app?: UnicornApp) {\n // @ts-ignore\n window.u = app ?? useUnicorn();\n}\n\nexport function useMacro<T extends Dictionary>(name: T): T;\nexport function useMacro<N extends string, T extends any>(\n name: N,\n prop: T\n): { [K in N]: T };\nexport function useMacro(name: string | Dictionary, prop?: any): any {\n const app = useUnicorn();\n\n if (typeof name === 'string') {\n app.macro(name, prop!);\n } else {\n for (const k in name) {\n app.macro(k, name[k]!);\n }\n }\n\n return app;\n}\n\nexport async function useLegacy(app?: UnicornApp) {\n app ??= useUnicorn();\n\n pushUnicornToGlobal(app);\n\n const { useLegacyMethods } = await import('./legacy/legacy');\n\n await useLegacyMethods(app);\n\n return app;\n}\n"],"names":["protoChain","decorators","removeData","module","html","selector","callback","queue","wait","sprintf","exports","vsprintf","m","href","options","data","ui","stack","uri","asset","route","rmdata","app"],"mappings":"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","x_google_ignoreList":[0,5,6,7,8,9,10,11,12,16,44]}
1
+ {"version":3,"file":"unicorn.js","sources":["../../../../../../node_modules/ts-mixer/dist/esm/index.js","../../src/utilities/arr.ts","../../src/utilities/data.ts","../../src/service/dom.ts","../../src/service/animate.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/alert-adapter.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/alert.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/env.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/crypto.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/promise.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/queue.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/stack.ts","../../../../../../node_modules/@lyrasoft/ts-toolkit/src/generic/timing.ts","../../src/service/crypto.ts","../../src/service/dom-watcher.ts","../../src/service/helper.ts","../../../../../../node_modules/sprintf-js/src/sprintf.js","../../src/service/lang.ts","../../src/service/loader.ts","../../src/composable/useUIBootstrap5.ts","../../src/composable/useBsModalAlert.ts","../../src/composable/useCheckboxesMultiSelect.ts","../../src/composable/useFieldCascadeSelect.ts","../../src/composable/useFieldFileDrag.ts","../../src/composable/useFieldFlatpickr.ts","../../src/composable/useFieldModalSelect.ts","../../src/composable/useFieldModalTree.ts","../../src/composable/useFieldRepeatable.ts","../../src/composable/useFieldSingleImageDrag.ts","../../src/composable/useForm.ts","../../src/composable/useGrid.ts","../../src/composable/useHttp.ts","../../src/composable/useIframeModal.ts","../../src/composable/useListDependent.ts","../../src/composable/useQueue.ts","../../src/composable/useS3Uploader.ts","../../src/composable/useShowOn.ts","../../src/composable/useStack.ts","../../src/composable/useTomSelect.ts","../../src/composable/useTinymce.ts","../../src/composable/useUniDirective.ts","../../src/composable/useValidation.ts","../../src/service/ui.ts","../../src/service/uri.ts","../../../../../../node_modules/qss/dist/qss.mjs","../../src/service/router.ts","../../src/utilities/base.ts","../../src/data.ts","../../src/events.ts","../../src/app.ts","../../src/polyfill/form-request-submit.ts","../../src/polyfill/index.ts","../../src/composable/useFieldMultiUploader.ts","../../src/plugin/php-adapter.ts","../../src/unicorn.ts"],"sourcesContent":["/**\n * Utility function that works like `Object.apply`, but copies getters and setters properly as well. Additionally gives\n * the option to exclude properties by name.\n */\nconst copyProps = (dest, src, exclude = []) => {\n const props = Object.getOwnPropertyDescriptors(src);\n for (let prop of exclude)\n delete props[prop];\n Object.defineProperties(dest, props);\n};\n/**\n * Returns the full chain of prototypes up until Object.prototype given a starting object. The order of prototypes will\n * be closest to farthest in the chain.\n */\nconst protoChain = (obj, currentChain = [obj]) => {\n const proto = Object.getPrototypeOf(obj);\n if (proto === null)\n return currentChain;\n return protoChain(proto, [...currentChain, proto]);\n};\n/**\n * Identifies the nearest ancestor common to all the given objects in their prototype chains. For most unrelated\n * objects, this function should return Object.prototype.\n */\nconst nearestCommonProto = (...objs) => {\n if (objs.length === 0)\n return undefined;\n let commonProto = undefined;\n const protoChains = objs.map(obj => protoChain(obj));\n while (protoChains.every(protoChain => protoChain.length > 0)) {\n const protos = protoChains.map(protoChain => protoChain.pop());\n const potentialCommonProto = protos[0];\n if (protos.every(proto => proto === potentialCommonProto))\n commonProto = potentialCommonProto;\n else\n break;\n }\n return commonProto;\n};\n/**\n * Creates a new prototype object that is a mixture of the given prototypes. The mixing is achieved by first\n * identifying the nearest common ancestor and using it as the prototype for a new object. Then all properties/methods\n * downstream of this prototype (ONLY downstream) are copied into the new object.\n *\n * The resulting prototype is more performant than softMixProtos(...), as well as ES5 compatible. However, it's not as\n * flexible as updates to the source prototypes aren't captured by the mixed result. See softMixProtos for why you may\n * want to use that instead.\n */\nconst hardMixProtos = (ingredients, constructor, exclude = []) => {\n var _a;\n const base = (_a = nearestCommonProto(...ingredients)) !== null && _a !== void 0 ? _a : Object.prototype;\n const mixedProto = Object.create(base);\n // Keeps track of prototypes we've already visited to avoid copying the same properties multiple times. We init the\n // list with the proto chain below the nearest common ancestor because we don't want any of those methods mixed in\n // when they will already be accessible via prototype access.\n const visitedProtos = protoChain(base);\n for (let prototype of ingredients) {\n let protos = protoChain(prototype);\n // Apply the prototype chain in reverse order so that old methods don't override newer ones.\n for (let i = protos.length - 1; i >= 0; i--) {\n let newProto = protos[i];\n if (visitedProtos.indexOf(newProto) === -1) {\n copyProps(mixedProto, newProto, ['constructor', ...exclude]);\n visitedProtos.push(newProto);\n }\n }\n }\n mixedProto.constructor = constructor;\n return mixedProto;\n};\nconst unique = (arr) => arr.filter((e, i) => arr.indexOf(e) == i);\n\n/**\n * Finds the ingredient with the given prop, searching in reverse order and breadth-first if searching ingredient\n * prototypes is required.\n */\nconst getIngredientWithProp = (prop, ingredients) => {\n const protoChains = ingredients.map(ingredient => protoChain(ingredient));\n // since we search breadth-first, we need to keep track of our depth in the prototype chains\n let protoDepth = 0;\n // not all prototype chains are the same depth, so this remains true as long as at least one of the ingredients'\n // prototype chains has an object at this depth\n let protosAreLeftToSearch = true;\n while (protosAreLeftToSearch) {\n // with the start of each horizontal slice, we assume this is the one that's deeper than any of the proto chains\n protosAreLeftToSearch = false;\n // scan through the ingredients right to left\n for (let i = ingredients.length - 1; i >= 0; i--) {\n const searchTarget = protoChains[i][protoDepth];\n if (searchTarget !== undefined && searchTarget !== null) {\n // if we find something, this is proof that this horizontal slice potentially more objects to search\n protosAreLeftToSearch = true;\n // eureka, we found it\n if (Object.getOwnPropertyDescriptor(searchTarget, prop) != undefined) {\n return protoChains[i][0];\n }\n }\n }\n protoDepth++;\n }\n return undefined;\n};\n/**\n * \"Mixes\" ingredients by wrapping them in a Proxy. The optional prototype argument allows the mixed object to sit\n * downstream of an existing prototype chain. Note that \"properties\" cannot be added, deleted, or modified.\n */\nconst proxyMix = (ingredients, prototype = Object.prototype) => new Proxy({}, {\n getPrototypeOf() {\n return prototype;\n },\n setPrototypeOf() {\n throw Error('Cannot set prototype of Proxies created by ts-mixer');\n },\n getOwnPropertyDescriptor(_, prop) {\n return Object.getOwnPropertyDescriptor(getIngredientWithProp(prop, ingredients) || {}, prop);\n },\n defineProperty() {\n throw new Error('Cannot define new properties on Proxies created by ts-mixer');\n },\n has(_, prop) {\n return getIngredientWithProp(prop, ingredients) !== undefined || prototype[prop] !== undefined;\n },\n get(_, prop) {\n return (getIngredientWithProp(prop, ingredients) || prototype)[prop];\n },\n set(_, prop, val) {\n const ingredientWithProp = getIngredientWithProp(prop, ingredients);\n if (ingredientWithProp === undefined)\n throw new Error('Cannot set new properties on Proxies created by ts-mixer');\n ingredientWithProp[prop] = val;\n return true;\n },\n deleteProperty() {\n throw new Error('Cannot delete properties on Proxies created by ts-mixer');\n },\n ownKeys() {\n return ingredients\n .map(Object.getOwnPropertyNames)\n .reduce((prev, curr) => curr.concat(prev.filter(key => curr.indexOf(key) < 0)));\n },\n});\n/**\n * Creates a new proxy-prototype object that is a \"soft\" mixture of the given prototypes. The mixing is achieved by\n * proxying all property access to the ingredients. This is not ES5 compatible and less performant. However, any\n * changes made to the source prototypes will be reflected in the proxy-prototype, which may be desirable.\n */\nconst softMixProtos = (ingredients, constructor) => proxyMix([...ingredients, { constructor }]);\n\nconst settings = {\n initFunction: null,\n staticsStrategy: 'copy',\n prototypeStrategy: 'copy',\n decoratorInheritance: 'deep',\n};\n\n// Keeps track of constituent classes for every mixin class created by ts-mixer.\nconst mixins = new WeakMap();\nconst getMixinsForClass = (clazz) => mixins.get(clazz);\nconst registerMixins = (mixedClass, constituents) => mixins.set(mixedClass, constituents);\nconst hasMixin = (instance, mixin) => {\n if (instance instanceof mixin)\n return true;\n const constructor = instance.constructor;\n const visited = new Set();\n let frontier = new Set();\n frontier.add(constructor);\n while (frontier.size > 0) {\n // check if the frontier has the mixin we're looking for. if not, we can say we visited every item in the frontier\n if (frontier.has(mixin))\n return true;\n frontier.forEach((item) => visited.add(item));\n // build a new frontier based on the associated mixin classes and prototype chains of each frontier item\n const newFrontier = new Set();\n frontier.forEach((item) => {\n var _a;\n const itemConstituents = (_a = mixins.get(item)) !== null && _a !== void 0 ? _a : protoChain(item.prototype)\n .map((proto) => proto.constructor)\n .filter((item) => item !== null);\n if (itemConstituents)\n itemConstituents.forEach((constituent) => {\n if (!visited.has(constituent) && !frontier.has(constituent))\n newFrontier.add(constituent);\n });\n });\n // we have a new frontier, now search again\n frontier = newFrontier;\n }\n // if we get here, we couldn't find the mixin anywhere in the prototype chain or associated mixin classes\n return false;\n};\n\nconst mergeObjectsOfDecorators = (o1, o2) => {\n var _a, _b;\n const allKeys = unique([...Object.getOwnPropertyNames(o1), ...Object.getOwnPropertyNames(o2)]);\n const mergedObject = {};\n for (let key of allKeys)\n mergedObject[key] = unique([...((_a = o1 === null || o1 === void 0 ? void 0 : o1[key]) !== null && _a !== void 0 ? _a : []), ...((_b = o2 === null || o2 === void 0 ? void 0 : o2[key]) !== null && _b !== void 0 ? _b : [])]);\n return mergedObject;\n};\nconst mergePropertyAndMethodDecorators = (d1, d2) => {\n var _a, _b, _c, _d;\n return ({\n property: mergeObjectsOfDecorators((_a = d1 === null || d1 === void 0 ? void 0 : d1.property) !== null && _a !== void 0 ? _a : {}, (_b = d2 === null || d2 === void 0 ? void 0 : d2.property) !== null && _b !== void 0 ? _b : {}),\n method: mergeObjectsOfDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.method) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.method) !== null && _d !== void 0 ? _d : {}),\n });\n};\nconst mergeDecorators = (d1, d2) => {\n var _a, _b, _c, _d, _e, _f;\n return ({\n class: unique([...(_a = d1 === null || d1 === void 0 ? void 0 : d1.class) !== null && _a !== void 0 ? _a : [], ...(_b = d2 === null || d2 === void 0 ? void 0 : d2.class) !== null && _b !== void 0 ? _b : []]),\n static: mergePropertyAndMethodDecorators((_c = d1 === null || d1 === void 0 ? void 0 : d1.static) !== null && _c !== void 0 ? _c : {}, (_d = d2 === null || d2 === void 0 ? void 0 : d2.static) !== null && _d !== void 0 ? _d : {}),\n instance: mergePropertyAndMethodDecorators((_e = d1 === null || d1 === void 0 ? void 0 : d1.instance) !== null && _e !== void 0 ? _e : {}, (_f = d2 === null || d2 === void 0 ? void 0 : d2.instance) !== null && _f !== void 0 ? _f : {}),\n });\n};\nconst decorators = new Map();\nconst findAllConstituentClasses = (...classes) => {\n var _a;\n const allClasses = new Set();\n const frontier = new Set([...classes]);\n while (frontier.size > 0) {\n for (let clazz of frontier) {\n const protoChainClasses = protoChain(clazz.prototype).map(proto => proto.constructor);\n const mixinClasses = (_a = getMixinsForClass(clazz)) !== null && _a !== void 0 ? _a : [];\n const potentiallyNewClasses = [...protoChainClasses, ...mixinClasses];\n const newClasses = potentiallyNewClasses.filter(c => !allClasses.has(c));\n for (let newClass of newClasses)\n frontier.add(newClass);\n allClasses.add(clazz);\n frontier.delete(clazz);\n }\n }\n return [...allClasses];\n};\nconst deepDecoratorSearch = (...classes) => {\n const decoratorsForClassChain = findAllConstituentClasses(...classes)\n .map(clazz => decorators.get(clazz))\n .filter(decorators => !!decorators);\n if (decoratorsForClassChain.length == 0)\n return {};\n if (decoratorsForClassChain.length == 1)\n return decoratorsForClassChain[0];\n return decoratorsForClassChain.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst directDecoratorSearch = (...classes) => {\n const classDecorators = classes.map(clazz => getDecoratorsForClass(clazz));\n if (classDecorators.length === 0)\n return {};\n if (classDecorators.length === 1)\n return classDecorators[0];\n return classDecorators.reduce((d1, d2) => mergeDecorators(d1, d2));\n};\nconst getDecoratorsForClass = (clazz) => {\n let decoratorsForClass = decorators.get(clazz);\n if (!decoratorsForClass) {\n decoratorsForClass = {};\n decorators.set(clazz, decoratorsForClass);\n }\n return decoratorsForClass;\n};\nconst decorateClass = (decorator) => ((clazz) => {\n const decoratorsForClass = getDecoratorsForClass(clazz);\n let classDecorators = decoratorsForClass.class;\n if (!classDecorators) {\n classDecorators = [];\n decoratorsForClass.class = classDecorators;\n }\n classDecorators.push(decorator);\n return decorator(clazz);\n});\nconst decorateMember = (decorator) => ((object, key, ...otherArgs) => {\n var _a, _b, _c;\n const decoratorTargetType = typeof object === 'function' ? 'static' : 'instance';\n const decoratorType = typeof object[key] === 'function' ? 'method' : 'property';\n const clazz = decoratorTargetType === 'static' ? object : object.constructor;\n const decoratorsForClass = getDecoratorsForClass(clazz);\n const decoratorsForTargetType = (_a = decoratorsForClass === null || decoratorsForClass === void 0 ? void 0 : decoratorsForClass[decoratorTargetType]) !== null && _a !== void 0 ? _a : {};\n decoratorsForClass[decoratorTargetType] = decoratorsForTargetType;\n let decoratorsForType = (_b = decoratorsForTargetType === null || decoratorsForTargetType === void 0 ? void 0 : decoratorsForTargetType[decoratorType]) !== null && _b !== void 0 ? _b : {};\n decoratorsForTargetType[decoratorType] = decoratorsForType;\n let decoratorsForKey = (_c = decoratorsForType === null || decoratorsForType === void 0 ? void 0 : decoratorsForType[key]) !== null && _c !== void 0 ? _c : [];\n decoratorsForType[key] = decoratorsForKey;\n // @ts-ignore: array is type `A[] | B[]` and item is type `A | B`, so technically a type error, but it's fine\n decoratorsForKey.push(decorator);\n // @ts-ignore\n return decorator(object, key, ...otherArgs);\n});\nconst decorate = (decorator) => ((...args) => {\n if (args.length === 1)\n return decorateClass(decorator)(args[0]);\n return decorateMember(decorator)(...args);\n});\n\nfunction Mixin(...constructors) {\n var _a, _b, _c;\n const prototypes = constructors.map(constructor => constructor.prototype);\n // Here we gather up the init functions of the ingredient prototypes, combine them into one init function, and\n // attach it to the mixed class prototype. The reason we do this is because we want the init functions to mix\n // similarly to constructors -- not methods, which simply override each other.\n const initFunctionName = settings.initFunction;\n if (initFunctionName !== null) {\n const initFunctions = prototypes\n .map(proto => proto[initFunctionName])\n .filter(func => typeof func === 'function');\n const combinedInitFunction = function (...args) {\n for (let initFunction of initFunctions)\n initFunction.apply(this, args);\n };\n const extraProto = { [initFunctionName]: combinedInitFunction };\n prototypes.push(extraProto);\n }\n function MixedClass(...args) {\n for (const constructor of constructors)\n // @ts-ignore: potentially abstract class\n copyProps(this, new constructor(...args));\n if (initFunctionName !== null && typeof this[initFunctionName] === 'function')\n this[initFunctionName].apply(this, args);\n }\n MixedClass.prototype = settings.prototypeStrategy === 'copy'\n ? hardMixProtos(prototypes, MixedClass)\n : softMixProtos(prototypes, MixedClass);\n Object.setPrototypeOf(MixedClass, settings.staticsStrategy === 'copy'\n ? hardMixProtos(constructors, null, ['prototype'])\n : proxyMix(constructors, Function.prototype));\n let DecoratedMixedClass = MixedClass;\n if (settings.decoratorInheritance !== 'none') {\n const classDecorators = settings.decoratorInheritance === 'deep'\n ? deepDecoratorSearch(...constructors)\n : directDecoratorSearch(...constructors);\n for (let decorator of (_a = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.class) !== null && _a !== void 0 ? _a : []) {\n const result = decorator(DecoratedMixedClass);\n if (result) {\n DecoratedMixedClass = result;\n }\n }\n applyPropAndMethodDecorators((_b = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.static) !== null && _b !== void 0 ? _b : {}, DecoratedMixedClass);\n applyPropAndMethodDecorators((_c = classDecorators === null || classDecorators === void 0 ? void 0 : classDecorators.instance) !== null && _c !== void 0 ? _c : {}, DecoratedMixedClass.prototype);\n }\n registerMixins(DecoratedMixedClass, constructors);\n return DecoratedMixedClass;\n}\nconst applyPropAndMethodDecorators = (propAndMethodDecorators, target) => {\n const propDecorators = propAndMethodDecorators.property;\n const methodDecorators = propAndMethodDecorators.method;\n if (propDecorators)\n for (let key in propDecorators)\n for (let decorator of propDecorators[key])\n decorator(target, key);\n if (methodDecorators)\n for (let key in methodDecorators)\n for (let decorator of methodDecorators[key])\n decorator(target, key, Object.getOwnPropertyDescriptor(target, key));\n};\n/**\n * A decorator version of the `Mixin` function. You'll want to use this instead of `Mixin` for mixing generic classes.\n */\nconst mix = (...ingredients) => decoratedClass => {\n // @ts-ignore\n const mixedClass = Mixin(...ingredients.concat([decoratedClass]));\n Object.defineProperty(mixedClass, 'name', {\n value: decoratedClass.name,\n writable: false,\n });\n return mixedClass;\n};\n\nexport { Mixin, decorate, hasMixin, mix, settings };\n","\nexport function isPlainObject(val: any): val is Record<string, any> {\n return val && typeof val === \"object\" && !Array.isArray(val);\n}\n\nexport function mergeDeep<T = Record<string, any>>(target: Partial<T>, ...sources: any[]): T {\n let out: any = isPlainObject(target) ? { ...target } : target;\n\n for (const source of sources) {\n if (Array.isArray(source)) {\n out = (Array.isArray(out) ? out.concat(source) : source) as T;\n continue;\n }\n if (isPlainObject(source)) {\n out = { ...(isPlainObject(out) ? out : {}) };\n for (const key of Object.keys(source)) {\n out[key] =\n key in out ? mergeDeep(out[key], source[key]) : source[key];\n }\n continue;\n }\n out = source as T;\n }\n return out;\n}\n","\nexport function getData(element: Element, name?: string) {\n prepareData(element);\n\n if (name === undefined) {\n return element.__unicorn;\n }\n\n return element.__unicorn[name];\n}\n\nexport function setData(element: Element, name: string, value: any) {\n prepareData(element);\n element.__unicorn[name] = value;\n}\n\nexport function defData(element: Element, name: string, defCallback: Function) {\n prepareData(element);\n element.__unicorn[name] = element.__unicorn[name] || defCallback(element);\n\n return element.__unicorn[name];\n}\n\nexport function removeData(element: Element, name: string) {\n prepareData(element);\n\n const v = element.__unicorn[name];\n delete element.__unicorn[name];\n\n return v;\n}\n\nexport function prepareData<T extends Node>(element: T): T {\n if (!element) {\n return element;\n }\n\n element.__unicorn = element.__unicorn || {};\n return element;\n}\n\ndeclare global {\n interface Node {\n __unicorn?: any;\n }\n}\n\n\n","import { removeData } from '../data';\nimport { defData } from '../utilities';\n\n/**\n * @see https://stackoverflow.com/a/9899701\n */\nexport function domready(callback?: ((value: any) => any)): Promise<void> {\n let promise = new Promise<void>((resolve) => {\n // see if DOM is already available\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n // call on next available tick\n setTimeout(resolve, 0);\n } else {\n document.addEventListener('DOMContentLoaded', () => resolve());\n }\n });\n\n if (callback) {\n promise = promise.then(callback);\n }\n\n return promise;\n}\n\nexport function selectOne<K extends keyof HTMLElementTagNameMap>(ele: K): HTMLElementTagNameMap[K] | null;\nexport function selectOne<E extends Element = Element>(ele: string): E | null;\nexport function selectOne<E extends Element = Element>(ele: E): E;\nexport function selectOne<E extends Element = Element>(ele: string | E): E | null;\n// selectOne(ele: string): Element;\nexport function selectOne<E extends Element = Element>(ele: E | string): E | null {\n let r: E | null;\n\n if (typeof ele === 'string') {\n r = document.querySelector<E>(ele);\n } else {\n r = ele;\n }\n\n if (!r) {\n return r;\n }\n\n return r;\n}\n\nexport function selectAll<E extends Element = Element>(ele: string, callback?: ((ele: E) => any)): E[];\nexport function selectAll<E extends Element = Element>(ele: NodeListOf<E> | E[], callback?: ((ele: E) => any)): E[];\nexport function selectAll<E extends Element = Element>(\n ele: string | NodeListOf<E> | E[],\n callback?: ((ele: E) => any)\n): E[];\nexport function selectAll<E extends keyof HTMLElementTagNameMap>(\n ele: E,\n callback?: ((ele: HTMLElementTagNameMap[E]) => any)\n): HTMLElementTagNameMap[E][];\nexport function selectAll(\n ele: NodeListOf<Element> | Element[] | string,\n callback: ((el: Element) => any) | undefined = undefined\n): Element[] {\n if (typeof ele === 'string') {\n ele = document.querySelectorAll(ele);\n }\n\n const resultSet: Element[] = [].slice.call(ele);\n\n if (callback) {\n return resultSet.map((el) => callback(el) || el);\n }\n\n return resultSet;\n}\n\nexport function getBoundedInstance<T = any, E = Element>(selector: E, name: string, callback?: ((el: E) => any)): T;\nexport function getBoundedInstance<T = any, E extends Element = Element>(\n selector: string | E,\n name: string,\n callback?: ((el: E) => any)\n): T | null;\nexport function getBoundedInstance<T = any, E extends Element = Element>(\n selector: string | E,\n name: string,\n callback: ((el: E) => any) = () => null\n): T | null {\n const element = typeof selector === 'string' ? document.querySelector<E>(selector) : selector;\n\n if (!element) {\n return null;\n }\n\n return defData(element, name, callback);\n}\n\nexport function getBoundedInstanceList<T = any, E extends Element = Element>(\n selector: string | NodeListOf<E>,\n name: string,\n callback: ((el: E) => any) = () => null\n): (T | null)[] {\n const items = typeof selector === 'string' ? document.querySelectorAll<E>(selector) : selector;\n\n return Array.from(items).map((ele: E) => getBoundedInstance(ele, name, callback));\n}\n\nexport function removeBoundedInstance(selector: string | Element, name: string) {\n const element = typeof selector === 'string' ? document.querySelector<Element>(selector) : selector;\n\n if (element) {\n removeData(element, name);\n }\n}\n\nexport function module<T = any, E extends Element = Element>(\n ele: string,\n name: string,\n callback?: ((el: E) => any)\n): (T | null)[];\nexport function module<T = any, E extends Element = Element>(\n ele: NodeListOf<E>,\n name: string,\n callback?: ((el: E) => any)): (T | null)[];\nexport function module<T = any, E extends Element = Element>(\n ele: E,\n name: string,\n callback?: ((el: E) => any)\n): T | null;\nexport function module<T = any, E extends Element = Element>(\n ele: string | Element | NodeListOf<Element>,\n name: string,\n callback?: ((el: E) => any)\n): (T | null)[] | T | null;\nexport function module<T = any, E extends Element = Element>(\n ele: string | Element | NodeListOf<Element>,\n name: string,\n callback: false\n): (T | null)[] | T | null;\nexport function module<T = any, E extends Element = Element>(\n ele: string | E | NodeListOf<E>,\n name: string,\n callback: ((el: E) => any) | false = () => null\n): (T | null)[] | T | null {\n if (callback === false) {\n if (typeof ele === 'string' || ele instanceof Element) {\n removeBoundedInstance(ele, name);\n return null;\n }\n\n Array.from(ele).forEach((el) => removeBoundedInstance(el, name));\n return null;\n }\n\n if (typeof ele === 'string') {\n return getBoundedInstanceList<T, E>(ele, name, callback);\n }\n\n if (ele instanceof HTMLElement) {\n return getBoundedInstance<T, E>(ele, name, callback);\n }\n\n return getBoundedInstanceList<T, E>(ele as NodeListOf<E>, name, callback);\n}\n\nexport function h<T extends keyof HTMLElementTagNameMap>(\n element: T,\n attrs?: Record<string, any>,\n content?: any\n): HTMLElementTagNameMap[T]\nexport function h(element: string, attrs: Record<string, any> = {}, content: any = undefined): HTMLElement {\n const ele = document.createElement(element);\n\n for (let i in attrs) {\n const v = attrs[i];\n\n ele.setAttribute(i, v);\n }\n\n if (content !== null) {\n ele.innerHTML = content;\n }\n\n return ele;\n}\n\nexport function html<T extends Element = HTMLElement>(html: string): T {\n const div = document.createElement('div');\n div.innerHTML = html;\n return div.children[0] as T;\n}\n\n/**\n * Pure JS version of jQuery delegate()\n *\n * @see https://gist.github.com/iagobruno/4db2ed62dc40fa841bb9a5c7de92f5f8\n */\nexport function delegate(\n wrapper: Element | Document | string,\n selector: string,\n eventName: string,\n callback: (e: Event) => void\n): () => void {\n if (typeof selector === 'undefined' || selector === '') {\n throw new Error('The provided selector is empty.');\n }\n\n if (typeof callback === 'undefined' || typeof callback !== 'function') {\n throw new Error('Please specify an callback.');\n }\n\n const delegationSelectorsMap: Record<string, Function[]> = {};\n\n const wrapperElement = selectOne(wrapper as Element | string);\n\n wrapperElement?.addEventListener(eventName, function (event) {\n let element: HTMLElement | null = event.target as HTMLElement;\n let forceBreak = false;\n\n while (element && element !== wrapperElement) {\n for (const selector in delegationSelectorsMap) {\n if (element.matches(selector)) {\n event.stopPropagation = function () {\n forceBreak = true;\n };\n Object.defineProperty(\n event,\n 'currentTarget',\n {\n get() {\n return element;\n }\n }\n );\n\n const callbackList = delegationSelectorsMap[selector];\n\n callbackList.forEach(function (callback) {\n callback(event);\n });\n }\n }\n\n if (forceBreak) {\n break;\n }\n\n element = element.parentElement;\n }\n });\n\n if (!delegationSelectorsMap[selector]) {\n // Add new selector to the list\n delegationSelectorsMap[selector] = [callback];\n } else {\n delegationSelectorsMap[selector].push(callback);\n }\n\n return function unsubscribe() {\n if (!delegationSelectorsMap[selector]) {\n return;\n }\n\n if (delegationSelectorsMap[selector].length >= 2) {\n delegationSelectorsMap[selector] = delegationSelectorsMap[selector].filter(cb => cb !== callback);\n } else {\n delete delegationSelectorsMap[selector];\n }\n };\n}\n\ntype CssSource = string | (() => Promise<{ default: string }>);\n\nexport function injectCssToDocument(doc: Document, ...css: (CssSource | CSSStyleSheet)[]): Promise<CSSStyleSheet[]>;\nexport function injectCssToDocument(...css: (CssSource | CSSStyleSheet)[]): Promise<CSSStyleSheet[]>;\nexport async function injectCssToDocument(\n doc: Document | CssSource | CSSStyleSheet,\n ...css: (CssSource | CSSStyleSheet)[]\n): Promise<CSSStyleSheet[]> {\n if (!(doc instanceof Document)) {\n css.push(doc);\n doc = document;\n }\n\n const promises: Promise<any>[] = [];\n\n for (let cssItem of css) {\n promises.push(\n new Promise((resolve, reject) => {\n if (cssItem instanceof CSSStyleSheet) {\n resolve(cssItem);\n } else if (typeof cssItem === 'string') {\n const style = new CSSStyleSheet();\n\n style.replace(cssItem).then(() => resolve(style)).catch(reject);\n } else if (typeof cssItem === 'function') {\n cssItem().then(({ default: result }) => {\n const style = new CSSStyleSheet();\n\n style.replace(result).then(() => resolve(style)).catch(reject);\n }).catch(reject);\n } else {\n reject(new Error('Invalid CSS source'));\n }\n })\n );\n }\n\n const styles = await Promise.all(promises);\n\n doc.adoptedStyleSheets = [...doc.adoptedStyleSheets, ...styles];\n\n return styles;\n}\n","import { selectOne } from './dom';\n\nexport function animateTo(\n element: HTMLElement,\n styles: Partial<Record<keyof CSSStyleDeclaration, any>>,\n options: number | KeyframeAnimationOptions = {}\n): Animation {\n element = selectOne(element);\n\n const currentStyles = window.getComputedStyle(element);\n const transitions: Record<string, any[]> = {};\n\n for (const name in styles) {\n const value = styles[name];\n\n transitions[name] = Array.isArray(value)\n ? value\n : [\n currentStyles.getPropertyValue(name),\n value\n ];\n }\n\n if (typeof options === 'number') {\n options = { duration: options };\n }\n\n options = Object.assign(\n {\n duration: 400,\n easing: 'linear',\n fill: 'both'\n },\n options\n );\n\n const animation = element.animate(\n transitions,\n options\n );\n\n animation.addEventListener('finish', () => {\n for (const name in styles) {\n const value = styles[name];\n\n element.style.setProperty(\n name,\n Array.isArray(value)\n ? value[value.length - 1]\n : value\n );\n }\n\n animation.cancel();\n });\n\n return animation;\n}\n","export type AlertHandler = (title: string, text?: string, icon?: string, extra?: any) => Promise<void>;\nexport type ConfirmHandler = (title: string, text?: string, icon?: string, extra?: any) => Promise<boolean>;\nexport type NotifyHandler = (title: string, text?: string, type?: string, extra?: any) => Promise<() => any>;\nexport type ClearNotifiesHandler = () => Promise<void>;\n\nexport class AlertAdapter {\n static alert: AlertHandler = async (title: string, text?: string) => {\n if (text) {\n title += ' | ' + text;\n }\n\n return window.alert(title);\n };\n static confirm: ConfirmHandler = async (title: string, text?: string) => {\n return new Promise<boolean>((resolve) => {\n if (text) {\n title += ' | ' + text;\n }\n\n const v = confirm(title);\n\n resolve(v);\n });\n };\n static deleteConfirm: ConfirmHandler = async (title: string, text?: string) => this.confirm(title, text);\n\n static notify: NotifyHandler = async (title: string, text?: string, type: string = 'log') => {\n if (text) {\n title += ' | ' + text;\n }\n\n if (type === 'error') {\n console.error(title);\n } else if (type === 'warn') {\n console.warn(title);\n } else {\n console.log(title);\n }\n\n return async () => {\n // Noop\n };\n }\n\n static clearNotifies: ClearNotifiesHandler = async () => {\n // Noop\n }\n\n static confirmText: () => string = () => 'OK';\n static cancelText: () => string = () => 'Cancel';\n static deleteText: () => string = () => 'Delete';\n}\n\n","import { AlertAdapter } from './alert-adapter';\n\nexport async function simpleAlert(\n title: string,\n text: string = '',\n icon: string = 'info',\n extra?: any\n) {\n return AlertAdapter.alert(title, text, icon, extra);\n}\n\nexport async function simpleConfirm(\n title: string,\n text: string = '',\n icon: string = 'info',\n extra?: any,\n) {\n return AlertAdapter.confirm(title, text, icon, extra);\n}\n\nexport async function deleteConfirm(\n title: string,\n text: string = '',\n icon: string = 'info',\n extra?: any,\n) {\n return AlertAdapter.deleteConfirm(title, text, icon, extra);\n}\n\nexport async function simpleNotify(\n title: string,\n text: string = '',\n type: string = 'info',\n extra?: any\n) {\n return AlertAdapter.notify(title, text, type, extra);\n}\n\nexport async function clearNotifies() {\n return AlertAdapter.clearNotifies();\n}\n","\nexport function getGlobalThis() {\n return globalThis;\n}\n\nexport function isBrowser() {\n return typeof window !== 'undefined';\n}\n\nexport function isNode() {\n return typeof window === 'undefined';\n}\n","import { isNode } from './env';\n\nexport function base64UrlEncode(string: string): string {\n return btoa(String(string))\n .replace(/\\+/, '-')\n .replace(new RegExp('\\\\/'), '_')\n .replace(/=+$/, '');\n}\n\nexport function base64UrlDecode(string: string): string {\n return atob(\n String(string)\n .replace(/-/, '+')\n .replace(/_/, '/')\n );\n}\n\nexport function uid(prefix: string = '', timebase: boolean = false): string {\n if (timebase) {\n const start = performance?.timeOrigin\n ? Math.round(performance.timeOrigin)\n : performance.timing.navigationStart;\n\n const time = (start * 100000) + (performance.now() * 100);\n\n return prefix + time.toString(12) + (randomBytesString(4));\n }\n\n return prefix + randomBytesString(12);\n}\n\nexport function tid(prefix: string = ''): string {\n return uid(prefix, true);\n}\n\nexport function randomBytesString(size: number = 12): string {\n if (!isNode() && !globalThis.crypto) {\n return String(Math.floor(Math.random() * (size ** 10)));\n }\n\n return Array.from(randomBytes(size))\n .map(x => x.toString(16).padStart(2, '0'))\n .join('');\n}\n\nexport function randomBytes(size: number = 12): Uint8Array {\n const arr = new Uint8Array(size);\n globalThis.crypto.getRandomValues(arr);\n return arr;\n}\n\nexport const STR_SEED_BASE32 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\nexport const STR_SEED_BASE32HEX = '0123456789ABCDEFGHIJKLMNOPQRSTUV';\nexport const STR_SEED_BASE36 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\nexport const STR_SEED_BASE58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nexport const STR_SEED_BASE64SAFE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nexport const STR_SEED_BASE62 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\nexport function randomString(length: number, characters: string = STR_SEED_BASE62): string {\n let result = '';\n const charactersLength = characters.length;\n\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n}\n","declare type WithResolversReturn<T> = {\n promise: Promise<T>;\n resolve: (value: T | PromiseLike<T>) => void;\n reject: (reason?: any) => void;\n}\n\nexport function promiseWithResolvers<T = void>(): WithResolversReturn<T> {\n let resolve: (value: T | PromiseLike<T>) => void;\n let reject: (reason?: any) => void;\n\n const promise = new Promise<T>((rs, rj) => {\n resolve = rs;\n reject = rj;\n });\n\n // @ts-ignore\n return { promise, resolve, reject };\n}\n","export class TaskQueue {\n items: (() => Promise<any>)[] = [];\n\n currentRunning = 0;\n\n running = false;\n\n observers: {\n handler: Function;\n once: boolean;\n }[] = [];\n\n constructor(public maxRunning = 1) {\n //\n }\n\n push<T extends ((...args: any[]) => any)>(callback: T): Promise<Awaited<ReturnType<T>>> {\n const p = new Promise<Awaited<ReturnType<T>>>((resolve, reject) => {\n this.items.push(() => {\n return Promise.resolve(callback()).then(resolve).catch(reject);\n });\n });\n\n this.run();\n\n return p;\n }\n\n run(): void {\n if (!this.running) {\n this.running = true;\n }\n\n this.pop();\n }\n\n async pop() {\n const callback = this.items.shift();\n\n // If empty, stop running.\n if (!callback) {\n this.running = false;\n return Promise.resolve();\n }\n\n // If current running full, set back to queue and leave.\n if (this.currentRunning >= this.maxRunning) {\n this.items.unshift(callback);\n return Promise.resolve();\n }\n\n this.currentRunning++;\n\n this.notice();\n\n try {\n return await callback();\n } catch (e) {\n throw e;\n } finally {\n this.endPop();\n }\n }\n\n endPop() {\n this.currentRunning--;\n this.notice();\n this.pop();\n }\n\n clear() {\n this.items = [];\n\n this.notice();\n\n return this;\n }\n\n isEmpty(): boolean {\n return this.items.length === 0;\n }\n\n get length(): number {\n return this.items.length;\n }\n\n peek() {\n return this.items;\n }\n\n observe(handler: ObserverFunction, options: { once?: boolean } = {}): () => void {\n this.observers.push({\n handler,\n once: options.once || false,\n });\n\n return () => {\n this.off(handler);\n };\n }\n\n once(handler: ObserverFunction, options: { once?: boolean } = {}): () => void {\n options.once = true;\n\n return this.observe(handler, options);\n }\n\n onEnd(callback: ObserverFunction, options: { once?: boolean } = {}) {\n return this.observe((queue, length, running) => {\n if (length === 0 && running === 0) {\n callback(queue, length, running);\n }\n }, options);\n }\n\n notice() {\n this.observers.forEach((observer) => {\n observer.handler(this, this.length, this.currentRunning);\n });\n\n this.observers = this.observers.filter((observer) => !observer.once);\n\n return this;\n }\n\n off(callback?: Function) {\n if (callback == null) {\n this.observers = [];\n return this;\n }\n\n this.observers = this.observers.filter((observer) => observer.handler !== callback);\n return this;\n }\n}\n\ndeclare type ObserverFunction = (queue: TaskQueue, length: number, running: number) => void\n\nexport function queue(maxRunning: number = 1) {\n return new TaskQueue(maxRunning);\n}\n","declare type StackHandler<T> = (stack: Stack<T>, length: number) => void;\n\ndeclare type StackValue<V> = V | true;\n\nexport class Stack<T = any> {\n observers: { handler: StackHandler<T>, once: boolean }[] = [];\n\n constructor(protected store: StackValue<T>[] = []) {\n //\n }\n\n push(value?: T): number {\n const r = this.store.push(value ?? true);\n\n this.notice();\n\n return r;\n }\n\n pop(): T | true | undefined {\n const r = this.store.pop();\n\n this.notice();\n\n return r;\n }\n\n clear(): this {\n this.store = [];\n\n this.notice();\n\n return this;\n }\n\n isEmpty(): boolean {\n return this.store.length === 0;\n }\n\n get length() {\n return this.store.length;\n }\n\n peek(): StackValue<T>[] {\n return this.store;\n }\n\n observe(handler: (stack: Stack, length: number) => void): () => void {\n this.observers.push({\n handler,\n once: false\n });\n\n return () => {\n this.off(handler);\n };\n }\n\n once(handler: StackHandler<T>): () => void {\n this.observers.push({\n handler,\n once: true\n });\n\n return () => {\n this.off(handler);\n };\n }\n\n notice(): this {\n this.observers.forEach((observer) => {\n observer.handler(this, this.length);\n });\n\n this.observers = this.observers.filter((observer) => observer.once !== true);\n\n return this;\n }\n\n off(callback?: StackHandler<T>): this {\n this.observers = this.observers.filter((observer) => observer.handler !== callback);\n return this;\n }\n}\n\nexport function stack<T = any>(store: any[] = []) {\n return new Stack<T>(store);\n}\n","export function sleep(time: number) {\n return new Promise((resolve) => {\n setTimeout(resolve, time);\n });\n}\n\nexport function nextTick(callback = () => {}) {\n return Promise.resolve().then(callback);\n}\n","import { uid, tid, randomBytes, randomBytesString } from '@lyrasoft/ts-toolkit/generic';\n\nexport function base64UrlEncode(string: string): string {\n return btoa(String(string))\n .replace(/\\+/, '-')\n .replace(new RegExp('\\\\/'), '_')\n .replace(/=+$/, '');\n}\n\n/**\n * Base64 URL decode\n */\nexport function base64UrlDecode(string: string): string {\n return atob(\n String(string)\n .replace(/-/, '+')\n .replace(/_/, '/')\n );\n}\n\nexport { uid, tid, randomBytes, randomBytesString };\n\nlet globalSerial = 1;\n\nexport function serial(): number {\n return globalSerial++;\n}\n","export function watchAttributes<T extends HTMLElement>(el: T, callback?: AttributeMutationCallback<T>) {\n return new AttributeMutationObserver<T>(el, callback);\n}\n\nexport type AttributeMutationCallback<T extends HTMLElement = HTMLElement> = (el: T, name: string, value: any, oldValue: any) => void;\nexport type AttributeWatcher<T extends HTMLElement = HTMLElement> = (el: T, value: any, oldValue: any) => void;\n\nexport class AttributeMutationObserver<T extends HTMLElement> {\n observer: MutationObserver;\n watches: Record<string, (AttributeWatcher<T>)[]> = {};\n\n constructor(protected element: T, public callback?: (el: T, name: string, value: any, oldValue: any) => void) {\n this.element = element;\n\n this.observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n const attrName = mutation.attributeName!;\n const target = mutation.target as T;\n const value = target.getAttribute(attrName);\n\n this.callback?.(\n target,\n attrName,\n value,\n mutation.oldValue\n );\n\n if (this.watches[attrName]) {\n for (const watch of this.watches[attrName]) {\n watch(target, value, mutation.oldValue);\n }\n }\n }\n }\n });\n\n this.observe();\n }\n\n watch(name: string, callback: AttributeWatcher<T>): () => void {\n this.watches[name] ??= [];\n this.watches[name].push(callback);\n\n return () => {\n this.watches[name] = this.watches[name].filter(fn => fn !== callback);\n };\n }\n\n observe() {\n this.observer.observe(this.element, {\n attributes: true,\n attributeOldValue: true,\n });\n }\n\n disconnect() {\n this.observer.disconnect();\n }\n}\n\n\n","import { data } from '../data';\nimport { sleep } from '@lyrasoft/ts-toolkit/generic';\n\nexport { sleep };\n\nexport function forceArray<T>(item: T | T[]): T[] {\n if (Array.isArray(item)) {\n return item;\n } else {\n return [item];\n }\n}\n\nexport function debounce<T extends Function = Function>(handler: T, wait = 1): T {\n let timer: ReturnType<typeof setTimeout> | number, result: any;\n return function (this: any, ...args: any[]) {\n clearTimeout(timer);\n timer = setTimeout(() => result = handler.call(this, ...args), wait);\n return result;\n } as any as T;\n}\n\nexport function throttle<T extends Function = Function>(handler: T, wait: number = 1): T {\n let timer: ReturnType<typeof setTimeout> | number | undefined, result: any;\n return function (this: any, ...args: any[]) {\n if (!timer) {\n return result = handler.call(this, ...args);\n }\n\n clearTimeout(timer);\n timer = setTimeout(() => timer = undefined, wait);\n return result;\n } as any as T;\n}\n\nexport function isDebug() {\n return Boolean(data('windwalker.debug'));\n}\n\nexport function nextTick(callback?: () => any): Promise<any> {\n return Promise.resolve().then(callback ?? (() => null));\n}\n\nexport function wait<T extends readonly unknown[]>(\n ...promisee: { [K in keyof T]: PromiseLike<T[K]> | T[K] }\n): Promise<Awaited<T>> {\n return Promise.all(promisee) as Promise<Awaited<T>>;\n}\n\nexport function isError<E = Error>(e: any): e is E {\n return e instanceof Error;\n}\n","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","import { data } from '../data';\nimport { isDebug } from './/helper';\nimport { Dictionary } from '../types';\nimport { vsprintf } from 'sprintf-js';\n\nlet lang: UnicornLang;\n\nexport function useLang() {\n return lang ??= new UnicornLang();\n}\n\nexport function trans(id: string, ...args: any[]) {\n return useLang().trans(id, ...args);\n}\n\nexport function __(id: string, ...args: any[]) {\n return trans(id, ...args);\n}\n\nexport default class UnicornLang {\n /**\n * Translate a string.\n */\n trans(id: string, ...args: any[]): string {\n const key = this.normalize(id);\n\n let translated = this.get(key) || '';\n\n translated = this.replace(translated, args);\n\n return translated !== '' ? translated : this.wrapDebug(id, false);\n }\n\n protected replace(str: string, args: any[]): string {\n let replacements: Dictionary<any> = {};\n let values: any[] = [];\n\n for (const arg of args) {\n if (typeof arg === 'object') {\n replacements = { ...replacements, ...arg };\n } else {\n values.push(arg);\n }\n }\n\n if (values.length) {\n str = vsprintf(str, values);\n }\n\n if (Object.values(replacements).length) {\n for (const key in replacements) {\n let value = replacements[key];\n\n if (typeof value === 'function') {\n value = value();\n }\n\n str = str.replace(new RegExp(':' + key, 'g'), String(value));\n }\n }\n\n return str;\n }\n\n /**\n * Find text.\n */\n get(id: string): string | null {\n const strings = this.getStrings();\n\n if (strings[id]) {\n return strings[id];\n }\n\n return null;\n }\n\n /**\n * Has language key.\n */\n has(key: string): boolean {\n const strings = this.getStrings();\n\n return strings[key] !== undefined;\n }\n\n /**\n * Add language key.\n */\n add(key: string, value: string): this {\n const strings = this.getStrings();\n\n strings[this.normalize(key)] = value;\n\n data('unicorn.languages', strings);\n\n return this;\n }\n\n /**\n * Replace all symbols to dot(.).\n */\n protected normalize(text: string): string {\n return text.replace(/[^A-Z0-9]+/ig, '.');\n }\n\n protected wrapDebug(text: string, success: boolean): string {\n if (isDebug()) {\n if (success) {\n return '**' + text + '**';\n }\n\n return '??' + text + '??';\n }\n\n return text;\n }\n\n getStrings(): Record<string, string> {\n return data('unicorn.languages') || {};\n }\n}\n","import { Dictionary } from '../types';\nimport { injectCssToDocument } from './';\n\ntype Source = string | (() => Promise<{ default: string }>);\n\nexport async function useScriptImport(src: Source, attrs: Record<string, string> = {}): Promise<void> {\n if (typeof src === 'function') {\n src = (await src()).default;\n }\n\n const script = document.createElement('script');\n script.src = resolveUrl(src);\n\n for (const key in attrs) {\n script.setAttribute(key, attrs[key]);\n }\n\n return new Promise((resolve, reject) => {\n script.onload = () => {\n resolve();\n document.body.removeChild(script);\n };\n script.onerror = (e) => {\n reject(e);\n document.body.removeChild(script);\n };\n\n document.body.appendChild(script);\n });\n}\n\nexport function doImport<T = any>(src: string): Promise<T> {\n return import(/* @vite-ignore */src);\n}\n\nexport async function useImport(...src: any[]): Promise<any>;\nexport async function useImport<T extends any[]>(...src: string[]): Promise<T>;\nexport async function useImport<T = any>(src: string): Promise<{ default: T }>;\nexport async function useImport<D = any, C = any>(src: string): Promise<{ default: D } & Dictionary<C>>;\nexport async function useImport(...src: any[]): Promise<any> {\n if (src.length === 1) {\n return doImport(src[0]);\n }\n\n const promises: Promise<any>[] = [];\n\n src.forEach((link) => {\n promises.push(\n link instanceof Promise ? link : doImport(link)\n );\n });\n\n return Promise.all(promises);\n}\n\nexport async function useSeriesImport(...src: any[]): Promise<any>;\nexport async function useSeriesImport<T extends any[]>(...src: string[]): Promise<T>;\nexport async function useSeriesImport<T = any>(src: string): Promise<{ default: T }>;\nexport async function useSeriesImport<D = any, C = any>(src: string): Promise<{ default: D } & Dictionary<C>>;\nexport async function useSeriesImport(...src: any[]): Promise<any> {\n const modules: any[] = [];\n\n for (const source of src) {\n if (Array.isArray(source)) {\n const m = await useImport(...source);\n modules.push(m);\n\n continue;\n }\n\n const m = await useImport(source);\n\n modules.push(m);\n }\n\n return modules;\n}\n\nexport async function useCssIncludes(...hrefs: Source[]): Promise<void[]> {\n const promises = hrefs.map((href) => {\n return new Promise<void>((resolve, reject) => {\n resolveSource(href).then((href) => {\n href = resolveUrl(href);\n\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.onload = () => resolve();\n link.onerror = (e) => reject(e);\n\n document.head.appendChild(link);\n });\n });\n });\n\n return Promise.all(promises);\n}\n\nconst importedSheets: Record<string, Promise<{ default: CSSStyleSheet }>> = {};\n\nexport async function useCssImport(...hrefs: Source[]): Promise<CSSStyleSheet[]> {\n // Todo: Use `{ assert: { type: \"css\" }` after all browsers support it.\n const modules = await Promise.all(\n hrefs.map((href) => {\n return new Promise<{ default: CSSStyleSheet }>((resolve) => {\n resolveSource(href).then((href) => {\n href = resolveUrl(href);\n\n if (!importedSheets[href]) {\n importedSheets[href] = simulateCssImport(href);\n }\n\n resolve(importedSheets[href]);\n });\n });\n })\n );\n const styles = modules.map(module => module.default);\n\n return injectCssToDocument(...styles);\n}\n\nasync function simulateCssImport(href: string) {\n const response = await fetch(href);\n if (!response.ok) {\n throw new Error(`Failed to load CSS: ${href}`);\n }\n const cssText = await response.text();\n\n const sheet = new CSSStyleSheet();\n await sheet.replace(cssText);\n return { default: sheet };\n}\n\nlet importMap: Record<string, string>;\n\nfunction parseImportMap() {\n const importMapScript = document.querySelector('script[type=\"importmap\"]');\n if (importMapScript) {\n try {\n return JSON.parse(importMapScript.textContent || '{}').imports || {};\n } catch (e) {\n console.error('Failed to parse import map:', e);\n }\n }\n return {};\n}\n\nfunction resolveUrl(specifier: string) {\n importMap ??= parseImportMap();\n\n for (const [prefix, target] of Object.entries(importMap)) {\n if (specifier === prefix) {\n return target;\n }\n }\n\n for (const [prefix, target] of Object.entries(importMap)) {\n if (specifier.startsWith(prefix)) {\n return specifier.replace(prefix, target);\n }\n }\n return specifier;\n}\n\nasync function resolveSource(src: Source): Promise<string> {\n if (typeof src === 'function') {\n return (await src()).default;\n }\n\n return src;\n}\n","import type { Tooltip } from 'bootstrap';\nimport { ButtonRadioOptions } from '../bootstrap/button-radio';\nimport type { KeepTabOptions } from '../bootstrap/keep-tab';\nimport type { UIBootstrap5 } from '../module/ui-bootstrap5';\nimport { useUITheme } from '../service';\n\nexport async function useUIBootstrap5(install = false, pushToGlobal = false): Promise<UIBootstrap5> {\n const { UIBootstrap5 } = await import('../module/ui-bootstrap5');\n\n const theme = UIBootstrap5.get();\n\n if (install) {\n useUITheme(theme);\n\n if (pushToGlobal) {\n theme.pushBootstrapToGlobal();\n }\n }\n\n return theme;\n}\n\nexport async function useBs5Tooltip(\n selector: NodeListOf<Element> | Element | string = '[data-bs-toggle=\"tooltip\"]',\n config: Partial<Tooltip.Options> = {}\n): Promise<Tooltip[]> {\n const bs5 = await useUIBootstrap5();\n\n return bs5.tooltip(selector, config);\n}\n\nexport const useBs5KeepTab: typeof UIBootstrap5.prototype.keepTab = async (\n selector?: string | HTMLElement,\n options: KeepTabOptions = {}\n): Promise<any> => {\n const bs5 = await useUIBootstrap5();\n\n return bs5.keepTab(selector, options);\n};\n\nexport const useBs5ButtonRadio: typeof UIBootstrap5.prototype.buttonRadio = async (\n selector?: string | HTMLElement,\n options: ButtonRadioOptions = {}\n): Promise<any> => {\n const bs5 = await useUIBootstrap5();\n\n return bs5.buttonRadio(selector, options);\n};\n\n\n","import { Modal } from 'bootstrap';\nimport { html } from '../service';\nimport { useUIBootstrap5 } from './useUIBootstrap5';\n\nexport interface BsModalAlertOptions {\n header?: string | HTMLElement | (() => HTMLElement | Promise<HTMLElement>);\n title?: string;\n text?: string;\n icon?: string | HTMLElement | (() => HTMLElement | Promise<HTMLElement>);\n content?: string | HTMLElement | (() => HTMLElement | Promise<HTMLElement>);\n size?: 'sm' | 'lg' | 'xl' | 'xxl';\n relatedTarget?: HTMLElement;\n buttons?: BsModalButton[];\n}\n\nexport type BsModalButton = {\n text?: string | ((button: HTMLElement) => void);\n class?: string;\n attrs?: Record<string, string>;\n styles?: Record<string, string>;\n dismiss?: boolean;\n value?: any;\n href?: string;\n target?: string;\n onClick?: (value?: any, e?: MouseEvent) => any;\n} | string | HTMLElement | (() => HTMLElement | Promise<HTMLElement>);\n\nexport interface BsModalAlertInstance {\n show(title: BsModalAlertOptions): Promise<any>;\n\n show(title: string, text?: string, icon?: string, options?: BsModalAlertOptions): Promise<any>;\n\n show(title: BsModalAlertOptions | string, text?: string, icon?: string, options?: BsModalAlertOptions): Promise<any>;\n\n hide: () => void;\n toggle: (relatedTarget?: HTMLElement) => void;\n dispose: () => void;\n destroy: () => void;\n instance: Modal;\n el: HTMLElement;\n}\n\nconst defaultOptions = {\n buttons: [\n 'OK'\n ],\n};\n\nexport async function useBsModalAlert(\n options: Partial<Modal.Options>\n): Promise<BsModalAlertInstance>\nexport async function useBsModalAlert(\n id?: string | HTMLElement,\n options?: Partial<Modal.Options>\n): Promise<BsModalAlertInstance>;\nexport async function useBsModalAlert(\n id?: string | HTMLElement | Partial<Modal.Options>,\n options?: Partial<Modal.Options>\n): Promise<BsModalAlertInstance> {\n await useUIBootstrap5();\n\n let modalElement: HTMLElement | null | undefined = undefined;\n\n if (typeof id !== 'string' && !(id instanceof HTMLElement)) {\n options = id;\n id = 'uni-modal-alert';\n modalElement = document.getElementById(id);\n } else {\n modalElement = typeof id === 'string' ? document.getElementById(id) : id;\n }\n\n if (!modalElement) {\n modalElement = html<HTMLDivElement>(`<div id=\"${id}\" class=\"uni-modal-alert modal fade\" tabindex=\"-1\" role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-body text-center p-4\"></div>\n <div class=\"modal-footer\"></div>\n </div>\n </div>\n</div>`);\n\n document.body.appendChild(modalElement);\n }\n\n const modal = Modal.getOrCreateInstance(modalElement, options);\n\n return {\n show: (\n title: BsModalAlertOptions | string,\n text?: string,\n icon?: string,\n options?: BsModalAlertOptions\n ): Promise<any> => {\n if (typeof title === 'string') {\n options = options || {};\n options.title = title;\n options.text = text;\n options.icon = icon;\n } else {\n options = title;\n }\n\n return new Promise((resolve) => {\n prepareModalElement(modalElement, resolve, options);\n\n modal.show(options?.relatedTarget);\n });\n },\n hide: () => {\n modal.hide();\n },\n dispose: () => {\n modal.dispose();\n },\n toggle: (relatedTarget?: HTMLElement) => {\n modal.toggle(relatedTarget);\n },\n destroy: () => {\n modal.dispose();\n modalElement.remove();\n },\n instance: modal,\n el: modalElement,\n };\n}\n\nasync function prepareModalElement(\n modalElement: HTMLElement,\n handler: (value?: any) => any,\n options?: BsModalAlertOptions\n) {\n options = Object.assign({}, defaultOptions, options || {});\n\n let header = options.header;\n const content = options.content;\n\n modalElement.querySelector('.modal-header')?.remove();\n modalElement.querySelector('.modal-body')!.innerHTML = '';\n modalElement.querySelector('.modal-footer')!.innerHTML = '';\n\n const dialog = modalElement.querySelector('.modal-dialog');\n\n dialog?.classList.remove('modal-sm', 'modal-lg', 'modal-xl', 'modal-xxl');\n\n if (header) {\n if (typeof header === 'string') {\n header = `<div class=\"modal-header\">\n <h5 class=\"modal-title\">${header}</h5>\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n </div>`;\n }\n\n header = await anyToElement(header);\n\n modalElement.querySelector('.modal-content')!.insertAdjacentElement('afterbegin', header);\n }\n\n if (content) {\n let contentElement = await anyToElement(content);\n\n modalElement.querySelector('.modal-body')!.appendChild(contentElement);\n } else {\n const title = options.title;\n const text = options.text;\n let icon = options.icon;\n\n if (icon) {\n if (typeof icon === 'string') {\n icon = `<div class=\"uni-modal-alert__icon text-center mb-4\"><span class=\"${icon}\" style=\"font-size: 48px;\"></span></div>`;\n }\n\n icon = await anyToElement(icon);\n\n modalElement.querySelector('.modal-body')!.appendChild(icon);\n }\n\n if (title) {\n const titleEl = html(`<h4 class=\"uni-modal-alert__title\">${title}</h4>`);\n\n modalElement.querySelector('.modal-body')!.appendChild(titleEl);\n }\n\n if (text) {\n const textEl = html(`<div class=\"uni-modal-alert__text\">${text}</div>`);\n\n modalElement.querySelector('.modal-body')!.appendChild(textEl);\n }\n }\n\n const buttons = options.buttons!;\n\n for (const i in buttons) {\n const button = buttons[i];\n const isConfirm = buttons.length === 1 || (buttons.length === 2 && Number(i) === 1);\n\n const buttonElement = createButton(\n button,\n handler,\n isConfirm\n );\n\n modalElement.querySelector('.modal-footer')!.appendChild(await buttonElement);\n }\n\n if (options.size) {\n modalElement.querySelector('.modal-dialog')!.classList.add(`modal-${options.size}`);\n }\n\n return modalElement;\n}\n\nasync function anyToElement(content: string | HTMLElement | (() => (HTMLElement | Promise<HTMLElement>))) {\n if (typeof content === 'function') {\n return content();\n }\n\n return typeof content === 'string' ? html(content) : content;\n}\n\nasync function createButton(\n buttonOption: BsModalButton,\n handler: (value?: any) => any,\n isConfirm?: boolean): Promise<HTMLElement> {\n if (typeof buttonOption === 'function') {\n return await buttonOption();\n }\n\n if (typeof buttonOption === 'string') {\n buttonOption = {\n text: buttonOption,\n value: isConfirm ?? false,\n class: isConfirm ? 'btn btn-primary is-confirm' : 'btn btn-outline-secondary',\n styles: isConfirm ? { width: '150px' } : {},\n dismiss: true,\n };\n }\n\n // if not HTMLElement\n let button: HTMLElement;\n\n if (buttonOption instanceof HTMLElement) {\n button = buttonOption;\n } else {\n const {\n text,\n class: className = 'btn btn-secondary',\n attrs = {},\n styles = {},\n dismiss = true,\n value,\n href,\n target,\n onClick\n } = buttonOption;\n\n const tag = href ? 'a' : 'button';\n\n const el = document.createElement(tag);\n\n if (el instanceof HTMLAnchorElement) {\n el.href = href!;\n el.target = target || '_self';\n }\n\n if (el instanceof HTMLButtonElement) {\n el.type = 'button';\n }\n\n el.setAttribute('class', className);\n\n for (let attr in attrs) {\n el.setAttribute(attr, attrs[attr]);\n }\n\n for (let style in styles) {\n (el.style as any)[style] = styles[style];\n }\n\n if (dismiss) {\n el.setAttribute('data-bs-dismiss', 'modal');\n }\n\n if (typeof text === 'string') {\n el.textContent = text;\n } else if (typeof text === 'function') {\n text(el);\n }\n\n el.addEventListener('click', (e) => {\n onClick?.(value, e as MouseEvent);\n handler(value);\n });\n\n button = el;\n }\n\n return button;\n}\n\n","import type { CheckboxesMultiSelect } from '../module/checkboxes-multi-select';\nimport type { Nullable } from '../types';\n\nexport async function useCheckboxesMultiSelect(): Promise<any>;\n\nexport async function useCheckboxesMultiSelect(\n selector?: Nullable<string | HTMLElement>,\n options?: Record<string, any>\n): Promise<CheckboxesMultiSelect>;\n\nexport async function useCheckboxesMultiSelect(\n selector?: Nullable<string | HTMLElement>,\n options: Record<string, any> = {}\n): Promise<any> {\n const m = await import('../module/checkboxes-multi-select');\n\n if (selector) {\n m.CheckboxesMultiSelect.handle(selector, options);\n }\n\n return m;\n}\n","import { CascadeSelectModule } from '../module/field-cascade-select';\n\nexport async function useFieldCascadeSelect(): Promise<CascadeSelectModule> {\n const module = await import('../module/field-cascade-select');\n\n await module.ready;\n\n return module;\n}\n","import { FileDragModule } from '../module/field-file-drag';\n\nexport async function useFieldFileDrag(): Promise<FileDragModule> {\n const module = await import('../module/field-file-drag');\n\n await module.ready;\n\n return module;\n}\n","export function useFieldFlatpickr(): Promise<any> {\n return import('../module/field-flatpickr');\n}\n","import type { ModalSelectModule } from '../module/field-modal-select';\n\nexport function useFieldModalSelect(): Promise<ModalSelectModule> {\n // Modal select has no exports now\n return import('../module/field-modal-select');\n}\n","export function useFieldModalTree(): Promise<any> {\n return import('../module/field-modal-tree');\n}\n","import { RepeatableModule } from '../module/field-repeatable';\n\nexport async function useFieldRepeatable(): Promise<RepeatableModule> {\n const module = await import('../module/field-repeatable');\n\n await module.ready;\n\n return module;\n}\n","import { SingleImageDragModule } from '../module/field-single-image-drag';\n\nexport async function useFieldSingleImageDrag(): Promise<SingleImageDragModule> {\n const module = await import('../module/field-single-image-drag');\n\n await module.ready;\n\n return module;\n}\n","import type { UnicornFormElement } from '../module/form';\nimport { module, selectOne } from '../service';\n\nlet formElement: typeof UnicornFormElement;\n\ntype FormProxy = {\n submit: (...args: Parameters<UnicornFormElement['submit']>) => Promise<ReturnType<UnicornFormElement['submit']> | undefined>;\n get: (...args: Parameters<UnicornFormElement['get']>) => Promise<ReturnType<UnicornFormElement['get']> | undefined>;\n post: (...args: Parameters<UnicornFormElement['post']>) => Promise<ReturnType<UnicornFormElement['post']> | undefined>;\n put: (...args: Parameters<UnicornFormElement['put']>) => Promise<ReturnType<UnicornFormElement['put']> | undefined>;\n patch: (...args: Parameters<UnicornFormElement['patch']>) => Promise<ReturnType<UnicornFormElement['patch']> | undefined>;\n delete: (...args: Parameters<UnicornFormElement['delete']>) => Promise<ReturnType<UnicornFormElement['delete']> | undefined>;\n};\n\nexport function useFormAsync(): FormProxy & Promise<UnicornFormElement>;\nexport function useFormAsync(\n ele?: string | Element,\n options?: Record<string, any>): FormProxy & Promise<UnicornFormElement | null>;\nexport function useFormAsync(\n ele?: string | Element,\n options: Record<string, any> = {}\n): FormProxy & Promise<UnicornFormElement | null> {\n const promise = import('../module/form').then(({ UnicornFormElement }) => {\n formElement ??= UnicornFormElement;\n\n return useForm(ele, options);\n });\n\n const proxy = new Proxy({} as FormProxy, {\n get(target, prop) {\n return (...args: any[]) => {\n if (prop === 'then' || prop === 'catch') {\n return (promise as any)[prop].apply(promise, args);\n }\n\n return promise.then((form) => {\n const p = (form as any)[prop];\n\n if (typeof p === 'function') {\n return p.apply(form, args);\n }\n\n return p;\n });\n };\n },\n });\n\n return proxy as FormProxy & Promise<UnicornFormElement | null>;\n}\n\nexport function useForm(): UnicornFormElement;\nexport function useForm(ele?: string | Element, options?: Record<string, any>): UnicornFormElement | null;\nexport function useForm(ele?: string | Element, options: Record<string, any> = {}): UnicornFormElement | null {\n if (!formElement) {\n throw new Error('Form module is not loaded. Please use useFormAsync() to load the module before using useForm().');\n }\n\n if (ele == null) {\n return new formElement(undefined, undefined, options);\n }\n\n let selector: string | undefined = undefined;\n let el: HTMLFormElement | undefined = undefined;\n\n if (typeof ele === 'string') {\n selector = ele;\n el = selectOne<HTMLFormElement>(ele) ?? undefined;\n } else {\n el = ele as HTMLFormElement;\n }\n\n if (!el) {\n return new formElement(selector, el, options);\n }\n\n return module(\n el,\n 'unicorn.form',\n () => new formElement(selector, el, options)\n );\n}\n\nexport async function useFormComponent(ele?: string | Element, options: Record<string, any> = {}) {\n const form = await useFormAsync(ele, options);\n\n await form?.initComponent();\n\n return form;\n}\n\nexport interface FormSubmitOptions {\n form?: string | Element;\n method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n url?: string;\n data?: Record<string, any>;\n}\n\nexport async function useFormSubmit(options: FormSubmitOptions = {}) {\n const form = (await useFormAsync(options.form)) as UnicornFormElement;\n\n // fun type should be method of form\n const func = (options.method?.toLowerCase() || 'post') as 'get' | 'post' | 'put' | 'delete' | 'patch';\n\n return form[func](options.url, options.data);\n}\n","import type { UnicornGridElement } from '../module/grid';\nimport { useForm, useFormAsync } from './useForm';\nimport { selectOne, module } from '../service';\n\nlet gridElement: typeof UnicornGridElement;\n\nexport async function useGridAsync(\n ele?: string | HTMLElement,\n options: Record<string, any> | undefined = {}\n): Promise<UnicornGridElement | null> {\n await useFormAsync();\n\n const { UnicornGridElement } = await import('../module/grid');\n\n gridElement ??= UnicornGridElement;\n\n if (!ele) {\n return null;\n }\n\n return useGrid(ele, options);\n}\n\nexport function useGrid(\n ele: string | HTMLElement,\n options: Record<string, any> | undefined = {}\n): UnicornGridElement | null {\n const selector = typeof ele === 'string' ? ele : '';\n const element = selectOne(ele);\n\n if (!element) {\n throw new Error('Element is empty');\n }\n\n const form = useForm(selector || element);\n\n if (!form) {\n throw new Error('UnicornGrid is depends on UnicornForm');\n }\n\n return module(\n element,\n 'grid.plugin',\n () => new gridElement(selector, element, form, options)\n );\n}\n\nexport async function useGridComponent(\n ele: string | HTMLElement,\n options: Record<string, any> | undefined = {}\n): Promise<UnicornGridElement | null> {\n const grid = await useGridAsync(ele, options);\n\n await grid?.initComponent();\n\n return grid;\n}\n","import type { UnicornHttpClient } from '../module/http-client';\nimport type { AxiosInstance, CreateAxiosDefaults } from 'axios';\nexport type { ApiReturn, UnicornHttpClient } from '../module/http-client';\n\ntype UnicornHttpClientProxy = {\n request: UnicornHttpClient['request'];\n get: UnicornHttpClient['get'];\n post: UnicornHttpClient['post'];\n put: UnicornHttpClient['put'];\n patch: UnicornHttpClient['patch'];\n delete: UnicornHttpClient['delete'];\n head: UnicornHttpClient['head'];\n options: UnicornHttpClient['options'];\n http: Promise<UnicornHttpClient>;\n};\n\nexport function useHttpClient(config?: CreateAxiosDefaults | AxiosInstance): UnicornHttpClientProxy & Promise<UnicornHttpClient> {\n const promise = import('../module/http-client').then(({ createHttpClient }) => {\n return createHttpClient(config as CreateAxiosDefaults | undefined);\n });\n\n const data: UnicornHttpClientProxy = {\n request: (options) => {\n return promise.then((client) => client.request(options));\n },\n get: (url, options) => {\n return promise.then((client) => client.get(url, options));\n },\n post: (url, data, options) => {\n return promise.then((client) => client.post(url, data, options));\n },\n put: (url, data, options) => {\n return promise.then((client) => client.put(url, data, options));\n },\n patch: (url, data, options) => {\n return promise.then((client) => client.patch(url, data, options));\n },\n delete: (url, data, options) => {\n return promise.then((client) => client.delete(url, data, options));\n },\n head: (url, options) => {\n return promise.then((client) => client.head(url, options));\n },\n options: (url, options) => {\n return promise.then((client) => client.options(url, options));\n },\n http: promise,\n };\n\n Object.assign(data, {\n then: promise.then.bind(promise),\n catch: promise.catch.bind(promise),\n });\n\n return data as UnicornHttpClientProxy & Promise<UnicornHttpClient>;\n}\n","import { IFrameModalModule } from '../module/iframe-modal';\nexport type { IFrameModalElement } from '../module/iframe-modal';\n\nexport async function useIframeModal(): Promise<IFrameModalModule> {\n const module = await import('../module/iframe-modal');\n\n await module.ready;\n\n return module;\n}\n","import type { ListDependent, ListDependentModule, ListDependentOptions } from '../module/list-dependent';\nimport { Nullable } from '../types';\n\nexport async function useListDependent(): Promise<ListDependentModule>;\nexport async function useListDependent(\n element: string | HTMLSelectElement,\n dependent?: Nullable<string | HTMLSelectElement>,\n options?: Partial<ListDependentOptions>\n): Promise<ListDependent>;\nexport async function useListDependent(\n element?: Nullable<string | HTMLSelectElement>,\n dependent?: Nullable<string | HTMLSelectElement>,\n options: Partial<ListDependentOptions> = {}\n): Promise<any> {\n const module = await import('../module/list-dependent');\n\n await module.ready;\n\n if (element) {\n const { ListDependent } = module;\n\n return ListDependent.handle(element, dependent ?? undefined, options);\n }\n\n return module;\n}\n","import { Dictionary } from '../types';\nimport { TaskQueue, queue } from '@lyrasoft/ts-toolkit/generic';\n\nconst queues: Dictionary<TaskQueue> = {};\n\nexport function useQueue(name: string = 'default', maxRunning = 1): TaskQueue {\n return queues[name] ??= createQueue(maxRunning);\n}\n\nexport function createQueue(maxRunning = 1): TaskQueue {\n return queue(maxRunning);\n}\n\n","import {\n S3MultipartUploader,\n S3MultipartUploaderModule,\n S3MultipartUploaderOptions\n} from '../module/s3-multipart-uploader';\nimport type { S3Uploader, S3UploaderGlobalOptions, S3UploaderModule } from '../module/s3-uploader';\n\nexport async function useS3Uploader(): Promise<S3UploaderModule>;\nexport async function useS3Uploader(name: string, options?: Partial<S3UploaderGlobalOptions>): Promise<S3Uploader>;\nexport async function useS3Uploader(name?: string, options: Partial<S3UploaderGlobalOptions> = {}): Promise<any> {\n const module = await import('../module/s3-uploader');\n\n if (!name) {\n return module;\n }\n\n const { get } = module;\n\n return get(name, options);\n}\n\nexport async function useS3MultipartUploader(): Promise<S3MultipartUploaderModule>;\nexport async function useS3MultipartUploader(options: Partial<S3MultipartUploaderOptions>): Promise<S3MultipartUploader>;\nexport async function useS3MultipartUploader(options?: Partial<S3MultipartUploaderOptions>): Promise<any> {\n const module = await import('../module/s3-multipart-uploader');\n\n if (options != null) {\n return new module.S3MultipartUploader(options);\n }\n\n return module;\n}\n","import { ShowOnModule } from '../module/show-on';\n\nexport async function useShowOn(): Promise<ShowOnModule> {\n const module = await import('../module/show-on');\n\n await module.ready;\n\n return module;\n}\n","\nimport { Dictionary } from '../types';\nimport { Stack, stack } from '@lyrasoft/ts-toolkit/generic';\n\nconst stacks: Dictionary<Stack> = {};\n\nexport function useStack<T = any>(name: string = 'default', store: any[] = []): Stack<T> {\n return stacks[name] ??= createStack<T>(store);\n}\n\nexport function createStack<T = any>(store: any[] = []): Stack<T> {\n return stack<T>(store);\n}\n","import { module, useCssImport, useCssIncludes, useImport, wait } from '../service';\nimport type { Nullable } from '../types';\nimport { mergeDeep } from '../utilities';\n\n/**\n * @see https://tom-select.js.org/\n */\nexport async function useTomSelect(\n selector?: Nullable<string | HTMLElement | NodeListOf<HTMLElement>>,\n options: Record<string, any> = {},\n theme: string = 'bootstrap5'\n) {\n const [m] = await wait(\n useImport('@vendor/tom-select/dist/js/tom-select.complete.min.js'),\n useCssImport(`@vendor/tom-select/dist/css/tom-select.${theme}.min.css`)\n );\n\n if (selector) {\n module<any, HTMLSelectElement>(\n selector,\n 'tom.select',\n (ele) => {\n options = mergeDeep({\n allowEmptyOption: true,\n maxOptions: null,\n plugins: {\n caret_position: {},\n clear_button: {},\n }\n }, options);\n\n if ((ele as HTMLSelectElement).multiple) {\n options.plugins.remove_button = {};\n } else {\n options.plugins.dropdown_input = {};\n }\n\n // Auto select first if options changed.\n // @see https://github.com/orchidjs/tom-select/issues/362\n class UnicornTomSelect extends TomSelect {\n syncOptionsWithoutKeepSelected() {\n const oldValue = ele.value;\n\n this.clear();\n this.clearOptions();\n this.sync();\n\n if (ele.value !== oldValue) {\n this.setValue(\n ele.querySelector<HTMLOptionElement>(`option[value=\"${oldValue}\"]`)?.value\n ?? ele.querySelector<HTMLOptionElement>('option')?.value\n ?? '',\n true\n );\n }\n }\n }\n\n // @ts-ignore\n const t = new UnicornTomSelect(ele as TomInput, options);\n\n ele.addEventListener('list:updated', () => {\n t.syncOptionsWithoutKeepSelected();\n });\n\n return t;\n }\n );\n }\n\n return m;\n}\n","import type { TinymceController, TinymceModule } from '../module/tinymce';\nimport type { MaybePromise } from '../types';\nimport type { TinyMCE } from 'tinymce';\n\nexport async function useTinymce(): Promise<TinymceModule>\nexport async function useTinymce(\n selector?: string,\n options?: Record<string, any>\n): Promise<TinymceController>;\nexport async function useTinymce(\n selector?: string,\n options: Record<string, any> = {}\n): Promise<any> {\n const module = await import('../module/tinymce');\n\n if (selector) {\n return module.get(selector, options);\n }\n\n return module;\n}\n\nexport async function useTinymceHook(\n handler: ((tinymce: TinyMCE) => MaybePromise<any>)\n): Promise<void> {\n const { addHook } = await import('../module/tinymce');\n\n return addHook(handler);\n}\n","import type { default as WebDirective, WebDirectiveHandler, WebDirectiveOptions } from 'web-directive';\nimport { Dictionary } from '../types';\n\nlet instances: Dictionary<WebDirective> = {};\n\nexport async function useWebDirective(\n name: string,\n options: false\n): Promise<void>;\nexport async function useWebDirective(\n name: string,\n options?: Partial<WebDirectiveOptions>\n): Promise<WebDirective>;\nexport async function useWebDirective(\n name: string = 'unicorn',\n options: Partial<WebDirectiveOptions> | false = {}\n): Promise<WebDirective | void> {\n if (options === false) {\n delete instances[name];\n return;\n }\n\n return instances[name] ??= await createWebDirective(Object.assign({}, options, { prefix: 'uni-' }));\n}\n\nexport async function useUniDirective<T extends Element = HTMLElement, M extends Record<string, boolean> = Record<string, boolean>>(\n name: string,\n handler: WebDirectiveHandler<T, M>,\n wdInstance: WebDirective | string = 'unicorn'\n): Promise<void> {\n const wd = typeof wdInstance === 'string' ? await useWebDirective(wdInstance) : wdInstance;\n\n wd.register<T, M>(name, handler);\n}\n\nasync function createWebDirective(options: Partial<WebDirectiveOptions> = {}): Promise<WebDirective> {\n const WebDirective = (await import('web-directive')).default;\n\n const wd = new WebDirective(options);\n wd.listen();\n\n return wd;\n}\n","import type {\n UnicornFieldValidation,\n UnicornFormValidation,\n ValidationHandler,\n ValidationModule,\n ValidatorOptions,\n} from '../module/validation';\nimport { getBoundedInstance } from '../service';\n\nexport type {\n ValidationHandler,\n ValidationModule,\n Validator,\n ValidatorOptions,\n ValidatorNoticeFunction,\n FieldValidationOptions,\n FormValidationOptions\n} from '../module/validation';\n\nexport async function useFormValidation(): Promise<ValidationModule>;\nexport async function useFormValidation(selector: string | Element): Promise<UnicornFormValidation | null>;\nexport async function useFormValidation(selector?: string | Element): Promise<any> {\n const module = await import('../module/validation');\n\n await module.ready;\n\n if (!selector) {\n return module;\n }\n\n return useFormValidationInstance(selector);\n}\n\nexport function useFormValidationInstance(selector: string | Element): UnicornFormValidation | null {\n return getBoundedInstance<UnicornFormValidation>(selector, 'form.validation');\n}\n\nexport function useFieldValidationInstance(selector: string | Element): UnicornFieldValidation | null {\n return getBoundedInstance<UnicornFieldValidation>(selector, 'field.validation');\n}\n\nexport async function addGlobalValidator<T extends any, E extends HTMLElement, P = Record<string, any>>(\n name: string,\n validator: ValidationHandler<T, E, P>,\n options: ValidatorOptions<E, P> = {}\n): Promise<void> {\n const { UnicornFormValidation } = await useFormValidation();\n\n UnicornFormValidation.addGlobalValidator<T, E, P>(name, validator, options);\n}\n","import {\n AlertAdapter,\n deleteConfirm,\n simpleAlert,\n simpleConfirm,\n simpleNotify,\n clearNotifies,\n promiseWithResolvers\n} from '@lyrasoft/ts-toolkit/generic';\nimport type { Alpine as AlpineGlobal } from 'alpinejs';\nimport type { default as SpectrumGlobal } from 'spectrum-vanilla';\nimport type { SpectrumOptions } from 'spectrum-vanilla/dist/types/types';\nimport type { default as TomSelectGlobal } from 'tom-select';\nimport { useStack } from '../composable';\nimport { data, removeData } from '../data';\nimport type { Constructor, MaybePromise, Nullable, UIThemeInterface } from '../types';\nimport { animateTo } from './animate';\nimport { html, module, selectAll, selectOne } from './dom';\nimport { nextTick } from './helper';\nimport { useCssImport, useImport } from './loader';\n\nlet ui: UnicornUI;\n\nAlertAdapter.alert = (title: string, text = '', type = 'info'): Promise<void> => {\n if (text) {\n title += ' | ' + text;\n }\n\n window.alert(title);\n\n return Promise.resolve();\n};\n\nAlertAdapter.confirm = (message: string, text = '', type = 'info'): Promise<boolean> => {\n message = message || 'Are you sure?';\n\n if (text) {\n message += ' | ' + text;\n }\n\n return new Promise((resolve) => {\n resolve(window.confirm(message));\n });\n};\n\nAlertAdapter.notify = async (title: string, text?: string, type: string = 'log'): Promise<() => any> => {\n if (text) {\n title += ' | ' + text;\n }\n\n return ui.theme?.renderMessage(title, type) ?? (() => null);\n};\n\nAlertAdapter.clearNotifies = async (): Promise<void> => {\n ui.theme?.clearMessages();\n};\n\nAlertAdapter.confirmText = () => 'OK';\nAlertAdapter.cancelText = () => 'Cancel';\nAlertAdapter.deleteText = () => 'Delete';\n\nexport { simpleAlert, simpleConfirm, deleteConfirm, simpleNotify, clearNotifies };\n\nexport interface AlertAdapterConfig {\n alert?: typeof AlertAdapter['alert'];\n confirm?: typeof AlertAdapter['confirm'];\n deleteConfirm?: typeof AlertAdapter['deleteConfirm'];\n confirmText?: typeof AlertAdapter['confirmText'];\n cancelText?: typeof AlertAdapter['cancelText'];\n deleteText?: typeof AlertAdapter['deleteText'];\n notify?: typeof AlertAdapter['notify'];\n clearNotifies?: typeof AlertAdapter['clearNotifies'];\n}\n\nexport function useAlertAdapter(config?: AlertAdapterConfig): typeof AlertAdapter {\n if (config) {\n Object.assign(AlertAdapter, config);\n }\n\n return AlertAdapter;\n}\n\nexport function useUI(instance?: UnicornUI): UnicornUI {\n if (instance) {\n ui = instance;\n }\n\n return ui ??= new UnicornUI();\n}\n\nexport function useUITheme<T extends UIThemeInterface>(theme?: T | Constructor<T>): UIThemeInterface {\n const ui = useUI();\n\n if (ui.theme && !theme) {\n return ui.theme;\n }\n\n if (typeof theme === 'function') {\n theme = new theme();\n }\n\n ui.installTheme(theme);\n\n return ui.theme!;\n}\n\nexport class UnicornUI {\n theme?: UIThemeInterface;\n\n static get defaultOptions() {\n return {\n messageSelector: '.message-wrap',\n };\n }\n\n installTheme(theme: any) {\n this.theme = theme;\n }\n\n // confirm(message: string): Promise<boolean> {\n // message = message || 'Are you sure?';\n //\n // return new Promise((resolve) => {\n // resolve(window.confirm(message));\n // });\n // }\n //\n // alert(title: string, text = '', type = 'info'): Promise<boolean> {\n // if (text) {\n // title += ' | ' + text;\n // }\n //\n // window.alert(title);\n //\n // return Promise.resolve(true);\n // }\n}\n\nconst prepares: AlpinePrepareCallback[] = [];\ntype AlpinePrepareCallback = (Alpine: AlpineGlobal) => MaybePromise<any>;\nconst { promise: alpineLoaded, resolve: alpineResolve } = promiseWithResolvers<AlpineGlobal>();\n\nexport async function loadAlpine(callback?: Nullable<AlpinePrepareCallback>): Promise<AlpineGlobal> {\n if (callback && !window.Alpine) {\n prepares.push(callback);\n }\n\n const { default: Alpine }: { default: AlpineGlobal } = await useImport('@alpinejs');\n\n if (!window.Alpine) {\n await Promise.all(prepares.map((callback) => Promise.resolve(callback(Alpine))));\n\n Alpine.start();\n\n window.Alpine = Alpine;\n\n alpineResolve(Alpine);\n } else if (callback) {\n await callback(Alpine);\n }\n\n return Alpine;\n}\n\nexport async function initAlpineComponent(directive: string) {\n const Alpine = await alpineLoaded;\n\n await nextTick();\n\n selectAll<HTMLElement>(`[${directive}]`, (el) => {\n const code = el.getAttribute(directive) || '';\n el.removeAttribute(directive);\n\n // @see https://github.com/alpinejs/alpine/issues/359#issuecomment-973688464\n Alpine.mutateDom(() => {\n el.setAttribute('x-data', code);\n });\n\n Alpine.initTree(el);\n });\n}\n\n/**\n * Before Alpine init\n */\nexport async function prepareAlpine(callback: AlpinePrepareCallback) {\n if (window.Alpine) {\n await callback(window.Alpine);\n } else {\n prepares.push(callback);\n }\n}\n\nexport async function prepareAlpineDefer(callback: AlpinePrepareCallback) {\n const Alpine = await alpineLoaded;\n\n await callback(window.Alpine);\n}\n\n/**\n * Render Messages.\n */\nexport function renderMessage(messages: string | string[], type: string = 'info') {\n return ui.theme?.renderMessage(messages, type);\n}\n\n/**\n * Clear messages.\n */\nexport function clearMessages() {\n ui.theme?.clearMessages();\n}\n\nexport async function mark(selector?: string | HTMLElement, keyword: string = '', options: Record<string, any> = {}) {\n const modules = await useImport('@vendor/mark.js/dist/mark.min.js');\n\n if (selector != null) {\n const instance = new Mark(selector);\n instance.mark(keyword, options);\n }\n\n return modules;\n}\n\nexport async function slideUp(target: string | HTMLElement, duration: number = 300): Promise<Animation | void> {\n const ele = selectOne(target);\n\n if (!ele) {\n return Promise.resolve();\n }\n\n ele.style.overflow = 'hidden';\n\n const animation = animateTo(\n ele,\n { height: 0, paddingTop: 0, paddingBottom: 0 },\n { duration, easing: 'ease-out' }\n );\n\n data(ele, 'animation.sliding.up', true);\n\n const r = await animation.finished;\n\n if (!data(ele, 'animation.sliding.down')) {\n ele.style.display = 'none';\n }\n\n removeData(ele, 'animation.sliding.up');\n\n return r;\n}\n\nexport function slideDown(\n target: string | HTMLElement,\n duration: number = 300,\n display: string = 'block'): Promise<Animation | void> {\n const ele = selectOne(target);\n\n if (!ele) {\n return Promise.resolve();\n }\n\n data(ele, 'animation.sliding.down', true);\n\n ele.style.display = display;\n ele.style.overflow = 'hidden';\n\n// Get height\n let maxHeight = 0;\n for (const child of Array.from(ele.children) as HTMLElement[]) {\n maxHeight = Math.max(child.offsetHeight, maxHeight);\n }\n\n const animation = animateTo(\n ele,\n {\n height: [\n 0,\n maxHeight + 'px'\n ]\n },\n { duration, easing: 'ease-out' }\n );\n\n animation.addEventListener('finish', () => {\n ele.style.height = '';\n\n if (!data(ele, 'animation.sliding.up')) {\n ele.style.overflow = 'visible';\n }\n\n removeData(ele, 'animation.sliding.down');\n });\n\n return animation.finished;\n}\n\n/**\n * slideToggle\n */\nexport function slideToggle(\n target: string | HTMLElement,\n duration: number = 500,\n display: string = 'block'): Promise<Animation | void> {\n const ele = selectOne(target);\n\n if (!ele) {\n return Promise.resolve();\n }\n\n if (window.getComputedStyle(ele).display === 'none') {\n return slideDown(ele, duration, display);\n } else {\n return slideUp(ele, duration);\n }\n}\n\nexport async function fadeOut(selector: string | HTMLElement, duration: number = 500): Promise<Animation | void> {\n const el = selectOne(selector);\n\n if (!el) {\n return;\n }\n\n const animation = animateTo(el, { opacity: 0 }, { duration, easing: 'ease-out' });\n\n const p = await animation.finished;\n el.style.display = 'none';\n\n return p;\n};\n\nexport async function fadeIn(\n selector: string | HTMLElement,\n duration: number = 500,\n display: string = 'block'\n): Promise<Animation | void> {\n const el = selectOne(selector);\n\n if (!el) {\n return;\n }\n\n el.style.display = '';\n\n if (window.getComputedStyle(el).display !== display) {\n el.style.display = display;\n }\n\n const animation = animateTo(el, { opacity: 1 }, { duration, easing: 'ease-out' });\n\n return animation.finished;\n};\n\nexport async function highlight(\n selector: string | HTMLElement,\n color: string = '#ffff99',\n duration: number = 600\n): Promise<Animation | void> {\n const ele = selectOne(selector);\n\n if (!ele) {\n return;\n }\n\n duration /= 2;\n const bg = window.getComputedStyle(ele).backgroundColor;\n\n const animation = animateTo(ele, { backgroundColor: color }, { duration });\n\n await animation.finished;\n\n return animateTo(ele, { backgroundColor: bg }, { duration });\n}\n\n/**\n * Color Picker.\n */\nexport async function useColorPicker(\n selector?: Nullable<string | HTMLElement | NodeListOf<HTMLElement>>,\n options: Partial<SpectrumOptions> = {}\n): Promise<any> {\n if (options?.theme === 'dark') {\n useCssImport('@spectrum/spectrum-dark.min.css');\n } else if (!options?.theme) {\n useCssImport('@spectrum/spectrum.min.css');\n }\n\n const m = await useImport('@spectrum');\n\n // Locale\n if (typeof options.locale === 'string') {\n let ls: any = options.locale.split('-').map((l) => l.toLowerCase());\n\n if (ls[0] === ls[1]) {\n ls = [ls];\n }\n\n ls = ls.join('-');\n try {\n await useImport(`@spectrum/i18n/${ls}.js`);\n } catch (e) {\n console.warn(`Unable to load Spectrum locale \"${ls}\" (${options.locale})`);\n }\n }\n\n if (selector) {\n return module<any, HTMLElement>(selector, 'spectrum', (ele) => Spectrum.getInstance(ele, options));\n }\n\n return m;\n}\n\nexport function useDisableOnSubmit(\n formSelector: string | HTMLFormElement = '#admin-form',\n buttonSelector: string = '',\n options: Record<string, any> = {}\n) {\n // Todo: Use object to handle it\n buttonSelector = buttonSelector || [\n '#admin-toolbar button',\n '#admin-toolbar a',\n formSelector + ' .disable-on-submit',\n formSelector + ' .js-dos',\n formSelector + ' [data-dos]',\n ].join(',');\n\n const iconSelector = options.iconSelector || [\n '[class*=\"fa-\"]',\n '[data-spin]',\n '[data-spinner]',\n ].join(',');\n\n const event = options.event || 'submit';\n const spinnerClass = options.spinnerClass || 'spinner-border spinner-border-sm';\n const loadingClass = options.loadingCass || 'is-loading';\n\n selectAll<HTMLElement>(buttonSelector, (button) => {\n button.addEventListener('click', (e) => {\n button.dataset.clicked = '1';\n\n setTimeout(() => {\n delete button.dataset.clicked;\n }, 1500);\n });\n });\n\n const form = selectOne<HTMLFormElement>(formSelector);\n form?.addEventListener(event, (e: SubmitEvent) => {\n setTimeout(() => {\n if (!form.checkValidity()) {\n return;\n }\n\n selectAll<HTMLElement>(buttonSelector, (button) => {\n button.style.pointerEvents = 'none';\n button.setAttribute('disabled', 'disabled');\n button.classList.add('disabled');\n\n if (button.dataset.clicked) {\n let icon = button.querySelector(iconSelector);\n button.classList.add(loadingClass);\n\n if (icon) {\n const i = html('<i></i>');\n icon.parentNode.replaceChild(i, icon);\n\n i.setAttribute('class', spinnerClass);\n // icon.styles.width = '1em';\n // icon.styles.height = '1em';\n // icon.styles.borderWith = '.15em';\n }\n }\n });\n }, 0);\n });\n}\n\nexport function useDisableIfStackNotEmpty(buttonSelector: string = '[data-task=save]',\n stackName: string = 'uploading') {\n const stack = useStack(stackName);\n\n stack.observe((stack, length) => {\n for (const button of selectAll<HTMLElement>(buttonSelector)) {\n if (length > 0) {\n button.setAttribute('disabled', 'disabled');\n button.classList.add('disabled');\n } else {\n button.removeAttribute('disabled');\n button.classList.remove('disabled');\n }\n }\n });\n}\n\n/**\n * Keep alive.\n */\nexport function useKeepAlive(url: string, time: number = 60000): () => void {\n const aliveHandle = window.setInterval(() => fetch(url), time);\n\n return () => {\n clearInterval(aliveHandle);\n };\n}\n\n/**\n * Vue component field.\n */\nexport async function useVueComponentField(\n selector?: Nullable<string | HTMLElement>,\n value?: any,\n options: Record<string, any> = {}\n): Promise<any> {\n const m = await useImport('@unicorn/field/vue-component-field.js');\n\n if (selector) {\n m.VueComponentField.init(selector, value, options);\n }\n\n return m;\n}\n\ndeclare global {\n var Alpine: AlpineGlobal;\n var TomSelect: typeof TomSelectGlobal;\n var Spectrum: typeof SpectrumGlobal;\n var Mark: any;\n}\n","import { data } from '../data';\n\ntype UriTypes = 'full' | 'path' | 'root' | 'current' | 'route' | 'script';\ntype AssetTypes = 'root' | 'path';\n\nexport function useSystemUri(): UnicornSystemUri;\nexport function useSystemUri(type: UriTypes): string;\nexport function useSystemUri(type?: UriTypes, path?: string): UnicornSystemUri | string {\n const uri = UnicornSystemUri.get();\n\n if (type) {\n return uri[type](path);\n }\n\n return uri;\n}\n\nexport function useAssetUri(): UnicornAssetUri;\nexport function useAssetUri(type?: AssetTypes, path?: string): string;\nexport function useAssetUri(type?: AssetTypes, path?: string): UnicornAssetUri | string {\n const asset = UnicornAssetUri.get();\n\n if (type) {\n return asset[type](path);\n }\n\n return asset;\n}\n\nfunction uri(type: string) {\n return data('unicorn.uri')[type];\n}\n\nfunction asset(type: string) {\n return uri('asset')[type];\n}\n\nexport function addUriBase(uri: string, type = 'path') {\n if (uri.substring(0, 2) === '/\\/' || uri.substring(0, 4) === 'http') {\n return uri;\n }\n\n return asset(type) + '/' + uri;\n}\n\nexport class UnicornSystemUri extends URL {\n static instance: UnicornSystemUri;\n\n static get() {\n return this.instance ??= new this(uri('full'));\n }\n\n path(path: string = ''): string {\n return uri('path') + path;\n }\n\n root(path: string = ''): string {\n return uri('root') + path;\n }\n\n current(): string {\n return uri('current') || '';\n }\n\n full(): string {\n return uri('full') || '';\n }\n\n route(): string {\n return uri('route') || '';\n }\n\n script(): string {\n return uri('script') || '';\n }\n\n routeWithQuery() {\n const route = this.route();\n const query = this.searchParams.toString();\n\n return query ? `${route}?${query}` : route;\n }\n\n routeAndQuery() {\n const route = this.route();\n const query = this.searchParams.toString();\n\n return [route, query];\n }\n}\n\nexport class UnicornAssetUri {\n static instance: UnicornAssetUri;\n\n static get() {\n return this.instance ??= new this();\n }\n\n path(path: string = ''): string {\n return asset('path') + path;\n }\n\n root(path: string = ''): string {\n return asset('root') + path;\n }\n}\n","export function encode(obj, pfx) {\n\tvar k, i, tmp, str='';\n\n\tfor (k in obj) {\n\t\tif ((tmp = obj[k]) !== void 0) {\n\t\t\tif (Array.isArray(tmp)) {\n\t\t\t\tfor (i=0; i < tmp.length; i++) {\n\t\t\t\t\tstr && (str += '&');\n\t\t\t\t\tstr += encodeURIComponent(k) + '=' + encodeURIComponent(tmp[i]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstr && (str += '&');\n\t\t\t\tstr += encodeURIComponent(k) + '=' + encodeURIComponent(tmp);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (pfx || '') + str;\n}\n\nfunction toValue(mix) {\n\tif (!mix) return '';\n\tvar str = decodeURIComponent(mix);\n\tif (str === 'false') return false;\n\tif (str === 'true') return true;\n\treturn (+str * 0 === 0) ? (+str) : str;\n}\n\nexport function decode(str) {\n\tvar tmp, k, out={}, arr=str.split('&');\n\n\twhile (tmp = arr.shift()) {\n\t\ttmp = tmp.split('=');\n\t\tk = tmp.shift();\n\t\tif (out[k] !== void 0) {\n\t\t\tout[k] = [].concat(out[k], toValue(tmp.shift()));\n\t\t} else {\n\t\t\tout[k] = toValue(tmp.shift());\n\t\t}\n\t}\n\n\treturn out;\n}\n","\nimport { data } from '../data';\nimport { decode, encode } from 'qss';\n\n/**\n * Add a route.\n */\nexport function addRoute(route: string, url: string) {\n const routes = data('unicorn.routes') || {};\n routes[route] = url;\n\n data('unicorn.routes', routes);\n}\n\n/**\n * Get route.\n */\nexport function route(route: string, query?: Record<string, any>): string {\n const source = route;\n const extract = extractRoute(source);\n route = extract.route;\n let path = extract.path;\n const routes = data('unicorn.routes') || {};\n\n let url = routes[route];\n\n if (url == null) {\n if (!route.startsWith('@')) {\n route = '@' + route;\n } else {\n route = route.substring(1);\n }\n }\n\n url = routes[route];\n\n if (url == null) {\n throw new Error(`Route: \"${source}\" not found`);\n }\n\n // Merge query\n if (path) {\n const { route: u1, path: u1q } = extractRoute(url, '?');\n const { route: u2, path: u2q } = extractRoute(path, '?');\n\n url = u1 + '/' + u2;\n\n if (u1q || u2q) {\n const q = [ u1q, u2q ].filter(u => u).join('&');\n url += '?' + q;\n }\n }\n\n return addQuery(url, query);\n}\n\nfunction extractRoute(route: string, sep: string = '/'): { path: string; route: string } {\n if (route.indexOf(sep) === -1) {\n return { route, path: '' }\n }\n\n const segments = route.split(sep);\n\n route = segments.shift() || '';\n const path = segments.join(sep);\n\n return { route, path };\n}\n\nexport function hasRoute(route: string): boolean {\n return undefined !== data('unicorn.routes')[route];\n}\n\nexport function addQuery(url: string, query?: Record<string, any>): string {\n if (query == null) {\n return url;\n }\n\n for (let k in query) {\n const v = query[k];\n\n const placeholder = `{${k}}`;\n\n if (url.indexOf(placeholder) !== -1) {\n url = url.replace(\n new RegExp(`${placeholder}`, 'g'),\n v\n );\n delete query[k];\n }\n\n const encodedPlaceholder = encodeURIComponent(`{${k}}`);\n\n if (url.indexOf(encodedPlaceholder) !== -1) {\n url = url.replace(\n new RegExp(`${encodedPlaceholder}`, 'g'),\n v\n );\n delete query[k];\n }\n }\n\n if (Object.keys(query).length === 0) {\n return url;\n }\n\n const queryString = encode(query);\n\n return url + (/\\?/.test(url) ? `&${queryString}` : `?${queryString}`);\n}\n\nexport function parseQuery<T = Record<string, any>>(queryString: string): T {\n return decode(queryString) as T;\n}\n\nexport function buildQuery(query: Record<string, any>): string {\n return encode(query);\n}\n","import { selectAll } from '../service';\n\nexport function removeCloak() {\n if (globalThis.document == null) {\n return;\n }\n\n selectAll('[uni-cloak]', (el) => el.removeAttribute('uni-cloak'));\n}\n","import { getData, removeData as rmdata, setData } from './utilities';\n\nexport function data(name: string, data?: any): any;\nexport function data<T = void, R = [T] extends [void] ? any : T | undefined>(name: string): R;\nexport function data<T = void, R = [T] extends [void] ? any : T | undefined>(ele: Element, name: string): R;\nexport function data(ele: Element, name: string, value: any): any;\nexport function data(ele: Element | string, name?: any, value?: any) {\n if (!(ele instanceof HTMLElement)) {\n value = name;\n name = ele;\n ele = document as any as Element;\n }\n\n if (name === undefined) {\n return getData(ele);\n }\n\n if (value === undefined) {\n return getData(ele, name);\n }\n\n setData(ele, name, value);\n}\n\nexport function removeData(name: string): any;\nexport function removeData(ele: Element, name: string): any;\nexport function removeData(ele: Element|string, name: any = undefined) {\n if (!(ele instanceof HTMLElement)) {\n name = ele;\n ele = document as any as Element;\n }\n\n rmdata(ele, name);\n}\n","export abstract class EventMixin implements EventAwareInterface {\n _listeners: Record<string, EventHandler[]> = {};\n\n on<T extends any[]>(event: string, handler: EventHandler<T>): this;\n on(event: string | string[], handler: EventHandler): this;\n on(event: string | string[], handler: EventHandler): this {\n if (Array.isArray(event)) {\n for (const e of event) {\n this.on(e, handler);\n }\n return this;\n }\n\n this._listeners[event] ??= [];\n\n this._listeners[event].push(handler);\n\n return this;\n }\n\n once<T extends any[]>(event: string, handler: EventHandler<T>): this;\n once(event: string | string[], handler: EventHandler): this;\n once(event: string | string[], handler: EventHandler): this {\n handler.once = true;\n return this.on(event, handler);\n }\n\n off(event: string, handler?: EventHandler): this {\n if (handler) {\n this._listeners[event] = this.listeners(event).filter((listener) => listener !== handler);\n return this;\n }\n\n delete this._listeners[event];\n\n return this;\n }\n\n trigger<T extends any[]>(event: string, ...args: T): this;\n trigger(event: string[], ...args: any[]): this;\n trigger(event: string | string[], ...args: any[]): this {\n if (Array.isArray(event)) {\n for (const e of event) {\n this.trigger(e);\n }\n return this;\n }\n\n for (const listener of this.listeners(event)) {\n listener(...args);\n }\n\n // Remove once\n this._listeners[event] = this.listeners(event).filter((listener) => listener?.once !== true);\n\n return this;\n }\n\n listeners(event: string): EventHandler[] {\n return this._listeners[event] === undefined ? [] : this._listeners[event];\n }\n}\n\n// export class EventBus extends Mixin(EventMixin) {\n// }\n\nexport type EventHandler<T extends any[] = any[]> = ((...event: T) => void) & { once?: boolean };\n\nexport interface EventAwareInterface {\n on<T extends any[]>(event: string, handler: EventHandler<T>): this;\n on(event: string | string[], handler: EventHandler): this;\n\n once<T extends any[]>(event: string, handler: EventHandler<T>): this;\n once(event: string | string[], handler: EventHandler): this;\n\n off(event: string, handler?: EventHandler): this;\n\n trigger<T extends any[]>(event: string, ...args: T): this;\n trigger(event: string[], ...args: any[]): this;\n\n listeners(event: string): EventHandler[];\n}\n","\nimport { Mixin } from 'ts-mixer';\nimport { data } from './data';\nimport { EventAwareInterface, EventMixin } from './events';\nimport { domready } from './service';\nimport { Constructor, UnicornPlugin } from './types';\n\nexport type InjectionKey<T = any> = string | symbol | Constructor<T>;\n\nexport interface UnicornApp extends EventAwareInterface {}\n\nexport class UnicornApp extends Mixin(EventMixin) implements EventAwareInterface {\n registry = new Map();\n plugins = new Map();\n // _listeners = {};\n waits: Promise<any>[] = [];\n options: Record<string, any>;\n defaultOptions: Record<string, any> = {};\n domready = domready;\n data = data;\n\n constructor(options = {}) {\n super();\n this.options = Object.assign({}, this.defaultOptions, options);\n\n // Wait dom ready\n if (typeof document !== 'undefined') {\n this.wait((resolve: Function) => {\n document.addEventListener('DOMContentLoaded', () => resolve());\n });\n\n // Ready\n document.addEventListener('DOMContentLoaded', () => {\n this.completed().then(() => this.trigger('loaded'));\n });\n }\n }\n\n use(plugin: UnicornPlugin, options: Record<string, any> = {}) {\n if (Array.isArray(plugin)) {\n plugin.forEach(p => this.use(p));\n return this;\n }\n\n // if (plugin.is === undefined) {\n // throw new Error(`Plugin: ${plugin.name} must instance of : ${Plugin.name}`);\n // }\n\n plugin?.install?.(this, options);\n\n this.trigger('plugin.installed', plugin);\n\n this.plugins.set(plugin, plugin);\n\n return this;\n }\n\n detach(plugin: any) {\n if (plugin.uninstall) {\n plugin.uninstall(this);\n }\n\n this.trigger('plugin.uninstalled', plugin);\n\n return this;\n }\n\n inject<T>(id: InjectionKey<T>): T;\n inject<T>(id: InjectionKey<T>, def: T): T;\n inject<T>(id: InjectionKey<T>, def?: T): T;\n inject<T>(id: InjectionKey<T>, def?: T): T | undefined {\n if (!this.registry.has(id)) {\n if (def !== undefined) {\n return def;\n }\n\n throw new Error(`Injectable: \"${(id as any).name ?? id}\" not found.`);\n }\n\n return this.registry.get(id);\n }\n\n provide<T>(id: InjectionKey<T>, value: any) {\n this.registry.set(id, value);\n\n return this;\n }\n\n // trigger(event, ...args) {\n // return this.tap(super.trigger(event, ...args), () => {\n // if (this.data('windwalker.debug')) {\n // console.debug(`[Unicorn Event] ${event}`, args, this.listeners(event));\n // }\n // });\n // }\n\n wait(callback: Function): Promise<any> {\n const p = new Promise((resolve, reject) => {\n const promise = callback(resolve, reject);\n\n if (promise && 'then' in promise) {\n promise.then(resolve).catch(reject);\n }\n });\n\n this.waits.push(p);\n\n return p;\n }\n\n completed(): Promise<any[]> {\n const promise = Promise.all(this.waits);\n\n this.waits = [];\n\n return promise;\n }\n\n macro(name: string, prop: any) {\n if ((this as any)[name]) {\n throw new Error(`Macro: ${name} already exists.`);\n }\n\n (this as any)[name] = prop;\n\n return this;\n }\n}\n","// @ts-nocheck\n// @see https://github.com/javan/form-request-submit-polyfill\nexport function formRequestSubmit(prototype) {\n if (typeof prototype.requestSubmit == 'function') {\n return;\n }\n\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement('input');\n submitter.type = 'submit';\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, 'parameter 1 is not of type \\'HTMLElement\\'');\n submitter.type == 'submit' || raise(TypeError, 'The specified element is not a submit button');\n submitter.form == form || raise(DOMException, 'The specified element is not owned by this form element', 'NotFoundError');\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor('Failed to execute \\'requestSubmit\\' on \\'HTMLFormElement\\': ' + message + '.', name);\n }\n}\n","\nimport { formRequestSubmit } from './form-request-submit';\n\nexport function polyfill() {\n // If in browser\n if (typeof window !== 'undefined') {\n formRequestSubmit(HTMLFormElement.prototype);\n }\n}\n","import { MultiUploaderModule } from '../module/field-multi-uploader';\n\nexport async function useFieldMultiUploader(): Promise<MultiUploaderModule> {\n const module = await import('../module/field-multi-uploader');\n\n await module.ready;\n\n return module;\n}\n","import type { UnicornApp } from '../app';\nimport {\n useBs5ButtonRadio, useBs5KeepTab,\n useBs5Tooltip,\n useFieldCascadeSelect,\n useFieldFileDrag,\n useFieldFlatpickr,\n useFieldModalSelect, useFieldModalTree,\n useFieldRepeatable,\n useFieldSingleImageDrag,\n useIframeModal, useListDependent, useS3Uploader,\n useShowOn, useTomSelect,\n} from '../composable';\nimport { useFieldMultiUploader } from '../composable/useFieldMultiUploader';\nimport { useTinymce } from '../composable/useTinymce';\nimport { useUnicorn } from '../unicorn';\n\ndeclare module '../app' {\n export interface UnicornApp {\n /** @deprecated Only for code generator use. */\n $ui: typeof methods;\n }\n}\n\n// @ts-ignore\ndeclare module '@windwalker-io/unicorn-next' {\n export interface UnicornApp {\n /** @deprecated Only for code generator use. */\n $ui: typeof methods;\n }\n}\n\nexport function useUnicornPhpAdapter(app?: UnicornApp) {\n app ??= useUnicorn();\n\n app.use(UnicornPhpAdapter);\n\n return app.$ui;\n}\n\nconst methods = {\n repeatable: useFieldRepeatable,\n flatpickr: useFieldFlatpickr,\n fileDrag: useFieldFileDrag,\n modalField: useFieldModalSelect,\n cascadeSelect: useFieldCascadeSelect,\n sid: useFieldSingleImageDrag,\n tinymce: {\n init: useTinymce\n },\n s3Uploader: useS3Uploader,\n iframeModal: useIframeModal,\n initShowOn: useShowOn,\n modalTree: useFieldModalTree,\n multiUploader: useFieldMultiUploader,\n tomSelect: useTomSelect,\n listDependent: useListDependent,\n bootstrap: {\n tooltip: useBs5Tooltip,\n buttonRadio: useBs5ButtonRadio,\n keepTab: useBs5KeepTab,\n }\n};\n\nexport class UnicornPhpAdapter {\n static install(app: UnicornApp) {\n if (app.$ui) {\n app.$ui = { ...app.$ui, ...methods };\n } else {\n app.$ui = methods;\n }\n }\n}\n","import { InjectionKey, UnicornApp } from './app';\nimport { polyfill } from './polyfill';\nimport { Dictionary } from './types';\nimport { removeCloak } from './utilities';\n\nexport * from './data';\nexport * from './events';\nexport * from './service';\nexport * from './composable';\nexport * from './plugin';\n\nexport type { UnicornApp };\n\nlet app: UnicornApp;\n\nexport function createUnicorn(): UnicornApp {\n polyfill();\n removeCloak();\n\n return app = new UnicornApp();\n}\n\nexport function createUnicornWithPlugins(): UnicornApp {\n const app = createUnicorn();\n\n // app.use(UnicornUI);\n\n // app.use(UnicornDom);\n\n return app;\n}\n\nexport function useUnicorn(instance?: UnicornApp): UnicornApp {\n if (instance) {\n app = instance;\n }\n\n return app ??= createUnicorn();\n}\n\nexport const useInject: typeof UnicornApp.prototype.inject = <T = any>(id: InjectionKey<T>, def?: T): T => {\n return useUnicorn().inject<T>(id, def);\n}\n\nexport function pushUnicornToGlobal(app?: UnicornApp) {\n // @ts-ignore\n window.u = app ?? useUnicorn();\n}\n\nexport function useMacro<T extends Dictionary>(name: T): T;\nexport function useMacro<N extends string, T extends any>(\n name: N,\n prop: T\n): { [K in N]: T };\nexport function useMacro(name: string | Dictionary, prop?: any): any {\n const app = useUnicorn();\n\n if (typeof name === 'string') {\n app.macro(name, prop!);\n } else {\n for (const k in name) {\n app.macro(k, name[k]!);\n }\n }\n\n return app;\n}\n\nexport async function useLegacy(app?: UnicornApp) {\n app ??= useUnicorn();\n\n pushUnicornToGlobal(app);\n\n const { useLegacyMethods } = await import('./legacy/legacy');\n\n await useLegacyMethods(app);\n\n return app;\n}\n"],"names":["protoChain","decorators","removeData","module","html","selector","callback","queue","wait","sprintf","exports","vsprintf","m","href","options","data","ui","stack","uri","asset","route","rmdata","app"],"mappings":"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","x_google_ignoreList":[0,5,6,7,8,9,10,11,12,16,44]}
package/dist/index.d.ts CHANGED
@@ -1599,13 +1599,6 @@ declare global {
1599
1599
  }
1600
1600
 
1601
1601
 
1602
- declare global {
1603
- export interface Window {
1604
- bootstrap: typeof bootstrap;
1605
- }
1606
- }
1607
-
1608
-
1609
1602
  declare global {
1610
1603
  var tinymce: TinyMCE;
1611
1604
  }
@@ -1620,3 +1613,10 @@ declare module 'axios' {
1620
1613
  interface CreateAxiosDefaults {
1621
1614
  }
1622
1615
  }
1616
+
1617
+
1618
+ declare global {
1619
+ export interface Window {
1620
+ bootstrap: typeof bootstrap;
1621
+ }
1622
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@windwalker-io/unicorn-next",
3
- "version": "0.1.17",
3
+ "version": "0.1.18",
4
4
  "description": "Unicorn framework js library",
5
5
  "type": "module",
6
6
  "typings": "dist/index.d.ts",
@@ -29,24 +29,23 @@ export function useFormAsync(
29
29
  const proxy = new Proxy({} as FormProxy, {
30
30
  get(target, prop) {
31
31
  return (...args: any[]) => {
32
+ if (prop === 'then' || prop === 'catch') {
33
+ return (promise as any)[prop].apply(promise, args);
34
+ }
35
+
32
36
  return promise.then((form) => {
33
- const func = (form as any)[prop];
37
+ const p = (form as any)[prop];
34
38
 
35
- if (typeof func === 'function') {
36
- return func.apply(form, args);
39
+ if (typeof p === 'function') {
40
+ return p.apply(form, args);
37
41
  }
38
42
 
39
- throw new Error(`Method ${String(prop)} does not exist on form.`);
43
+ return p;
40
44
  });
41
45
  };
42
46
  },
43
47
  });
44
48
 
45
- Object.assign(proxy, {
46
- then: promise.then.bind(promise),
47
- catch: promise.catch.bind(promise),
48
- });
49
-
50
49
  return proxy as FormProxy & Promise<UnicornFormElement | null>;
51
50
  }
52
51
 
@@ -206,7 +206,7 @@ export function delegate(
206
206
 
207
207
  const delegationSelectorsMap: Record<string, Function[]> = {};
208
208
 
209
- const wrapperElement = selectOne(wrapper);
209
+ const wrapperElement = selectOne(wrapper as Element | string);
210
210
 
211
211
  wrapperElement?.addEventListener(eventName, function (event) {
212
212
  let element: HTMLElement | null = event.target as HTMLElement;