@vertexvis/html-templates 1.0.0-testing.3 → 1.0.0-testing.5
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.
|
@@ -313,4 +313,4 @@ exports.TextNodeBinding = TextNodeBinding;
|
|
|
313
313
|
exports.append = append;
|
|
314
314
|
exports.generateBindings = generateBindings;
|
|
315
315
|
exports.generateInstanceFromTemplate = generateInstanceFromTemplate;
|
|
316
|
-
//# sourceMappingURL=bundle.cjs.
|
|
316
|
+
//# sourceMappingURL=bundle.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.cjs","sources":["../../../node_modules/lower-case/dist.es2015/index.js","../../../node_modules/no-case/dist.es2015/index.js","../../../node_modules/pascal-case/dist.es2015/index.js","../../../node_modules/camel-case/dist.es2015/index.js","../src/binding.ts","../src/element-pool.ts","../src/templates.ts"],"sourcesContent":["/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nvar SUPPORTED_LOCALE = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str, locale) {\n var lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang)\n return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));\n return lowerCase(str);\n}\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str) {\n return str.toLowerCase();\n}\n//# sourceMappingURL=index.js.map","import { lowerCase } from \"lower-case\";\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { noCase } from \"no-case\";\nexport function pascalCaseTransform(input, index) {\n var firstChar = input.charAt(0);\n var lowerChars = input.substr(1).toLowerCase();\n if (index > 0 && firstChar >= \"0\" && firstChar <= \"9\") {\n return \"_\" + firstChar + lowerChars;\n }\n return \"\" + firstChar.toUpperCase() + lowerChars;\n}\nexport function pascalCaseTransformMerge(input) {\n return input.charAt(0).toUpperCase() + input.slice(1).toLowerCase();\n}\nexport function pascalCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \"\", transform: pascalCaseTransform }, options));\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { pascalCase, pascalCaseTransform, pascalCaseTransformMerge, } from \"pascal-case\";\nexport function camelCaseTransform(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\nexport function camelCaseTransformMerge(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransformMerge(input);\n}\nexport function camelCase(input, options) {\n if (options === void 0) { options = {}; }\n return pascalCase(input, __assign({ transform: camelCaseTransform }, options));\n}\n//# sourceMappingURL=index.js.map","import { Disposable } from '@vertexvis/utils';\nimport { camelCase } from 'camel-case';\n\nconst bindingRegEx = /{{(.+)}}/;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BindingDataMap = Record<string, any>;\n\nexport interface Binding {\n bind<T extends BindingDataMap>(data: T): void;\n}\n\nexport class CollectionBinding implements Binding {\n public constructor(private bindings: Binding[]) {}\n\n public bind<T extends BindingDataMap>(data: T): void {\n this.bindings.forEach((binding) => binding.bind(data));\n }\n}\n\nexport abstract class NodeBinding<N extends Node> implements Binding {\n protected constructor(\n protected node: N,\n protected expr: string\n ) {}\n\n public abstract bind<T extends BindingDataMap>(data: T): void;\n}\n\nexport class TextNodeBinding extends NodeBinding<Node> {\n public constructor(node: Node, expr: string) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newContent = replaceBindingString(data, this.expr);\n if (newContent !== this.node.textContent) {\n this.node.textContent = newContent;\n }\n }\n}\n\nexport class AttributeBinding extends NodeBinding<Element> {\n public constructor(\n node: Element,\n expr: string,\n private readonly attr: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newValue = replaceBindingString(data, this.expr);\n const oldValue = this.node.getAttribute(this.attr);\n if (oldValue !== newValue) {\n this.node.setAttribute(this.attr, newValue);\n }\n }\n}\n\nexport class PropertyBinding extends NodeBinding<Element> {\n public constructor(\n node: Element,\n expr: string,\n private prop: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newValue = replaceBinding(data, this.expr);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const oldValue = (this.node as any)[this.prop];\n if (oldValue !== newValue) {\n (this.node as any)[this.prop] = newValue;\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n}\n\nexport class EventHandlerBinding extends NodeBinding<Element> {\n private disposable?: Disposable;\n\n public constructor(\n node: Element,\n expr: string,\n private eventName: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const path = extractBindingPath(this.expr);\n if (path != null) {\n this.disposable?.dispose();\n\n const listener = getBindableValue(data, path, true);\n this.node.addEventListener(this.eventName, listener);\n\n this.disposable = {\n dispose: () => {\n this.node.removeEventListener(this.eventName, listener);\n },\n };\n }\n }\n}\n\nexport function generateBindings(node: Node): Binding[] {\n const bindings: Binding[] = [];\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as HTMLElement;\n const bindableAttributes = getBindableAttributes(el);\n\n bindableAttributes.forEach((attr) => {\n if (attr.name.startsWith('event:')) {\n const eventName = camelCase(attr.name.replace('event:', ''));\n bindings.push(new EventHandlerBinding(el, attr.value, eventName));\n } else if (attr.name.startsWith('attr:')) {\n bindings.push(\n new AttributeBinding(el, attr.value, attr.name.replace('attr:', ''))\n );\n } else if (attr.name.startsWith('prop:')) {\n const propName = camelCase(attr.name.replace('prop:', ''));\n bindings.push(new PropertyBinding(el, attr.value, propName));\n }\n });\n } else if (\n node.nodeType === Node.TEXT_NODE &&\n node.textContent != null &&\n bindingRegEx.test(node.textContent)\n ) {\n bindings.push(new TextNodeBinding(node, node.textContent));\n }\n\n for (let i = 0; i < node.childNodes.length; i++) {\n bindings.push(...generateBindings(node.childNodes[i]));\n }\n\n return bindings;\n}\n\nfunction getBindableAttributes(element: Element): Attr[] {\n return Array.from(element.attributes).filter((attr) =>\n bindingRegEx.test(attr.value)\n );\n}\n\nfunction extractBindingPath(expr: string): string | undefined {\n const result = bindingRegEx.exec(expr);\n return result != null ? result[1] : undefined;\n}\n\nfunction replaceBindingString(data: BindingDataMap, expr: string): string {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return expr.replace(`{{${path}}}`, value?.toString());\n } else {\n return expr;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction replaceBinding(data: BindingDataMap, expr: string): any {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return value;\n } else {\n return expr;\n }\n}\n\nfunction getBindableValue(\n data: BindingDataMap,\n path: string,\n isHead = false\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const [head, ...tail] = path.split('.');\n if (isHead && tail.length === 0) {\n return data;\n } else if (isHead && tail.length > 0) {\n return getBindableValue(data, tail.join('.'), false);\n } else {\n const value = data[head];\n if (tail.length > 0) {\n return getBindableValue(value, tail.join('.'), false);\n } else {\n return value;\n }\n }\n}\n","import { Binding, BindingDataMap } from './binding';\nimport { InstancedTemplate } from './templates';\n\nexport type ElementFactory = () => InstancedTemplate<HTMLElement>;\n\nexport class ElementPool {\n private readonly elements: HTMLElement[];\n private instanceMap = new Map<HTMLElement, InstancedTemplate<HTMLElement>>();\n\n public constructor(\n private container: Element,\n private elementFactory: ElementFactory\n ) {\n this.elements = [];\n }\n\n public swapHeadToTail(count: number): HTMLElement[] {\n const sliced = this.elements.splice(0, count);\n this.elements.splice(this.elements.length, 0, ...sliced);\n return this.elements.concat();\n }\n\n public swapTailToHead(count: number): HTMLElement[] {\n const sliced = this.elements.splice(-count, count);\n this.elements.splice(0, 0, ...sliced);\n return this.elements.concat();\n }\n\n public updateElements(count: number): HTMLElement[] {\n const diff = count - this.elements.length;\n\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n this.createElement();\n }\n } else {\n for (let i = 0; i < -diff; i++) {\n this.deleteElement();\n }\n }\n\n return this.elements.concat();\n }\n\n public updateData<D extends BindingDataMap>(f: (index: number) => D): void {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n const data = f(i);\n instance?.bindings.bind(data);\n });\n }\n\n public updateElementFactory(elementFactory: ElementFactory): void {\n this.elementFactory = elementFactory;\n this.updateElements(0);\n }\n\n public iterateElements(\n f: (element: HTMLElement, binding: Binding, index: number) => void\n ): void {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n f(el, instance!.bindings, i);\n });\n }\n\n private createElement(): InstancedTemplate<HTMLElement> {\n const instance = this.elementFactory();\n this.elements.push(instance.element);\n this.instanceMap.set(instance.element, instance);\n this.container.append(instance.element);\n return instance;\n }\n\n private deleteElement(): void {\n const element = this.elements.pop();\n if (element != null) {\n this.instanceMap.delete(element);\n element.remove();\n }\n }\n}\n","import { BindingDataMap, CollectionBinding, generateBindings } from './binding';\n\nexport interface InstancedTemplate<E extends Element> {\n element: E;\n bindings: CollectionBinding;\n}\n\nexport function append<E extends Element, D extends BindingDataMap>(\n container: Element,\n element: E,\n data: D\n): InstancedTemplate<E> {\n const bindings = new CollectionBinding(generateBindings(element));\n bindings.bind(data);\n container.appendChild(element);\n const created = container.lastElementChild as E;\n if (created != null) {\n return { element: created, bindings };\n } else {\n throw new Error('Failed to append element');\n }\n}\n\nexport function generateInstanceFromTemplate(\n template: HTMLTemplateElement\n): InstancedTemplate<HTMLElement> {\n const fragment = template.content.cloneNode(true) as HTMLElement;\n const element = fragment.firstElementChild as HTMLElement;\n const bindings = new CollectionBinding(generateBindings(fragment));\n return { element, bindings };\n}\n"],"names":["__assign"],"mappings":";;;;;;AAAA;AACA;AACA;AAuCA;AACA;AACA;AACO,SAAS,SAAS,CAAC,GAAG,EAAE;AAC/B,IAAI,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC7B;;AC7CA;AACA,IAAI,oBAAoB,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AAC1E;AACA,IAAI,oBAAoB,GAAG,cAAc,CAAC;AAC1C;AACA;AACA;AACO,SAAS,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;AACvC,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE;AAC7C,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,oBAAoB,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,oBAAoB,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AAC/S,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACnF,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;AACxC,QAAQ,KAAK,EAAE,CAAC;AAChB,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI;AAC1C,QAAQ,GAAG,EAAE,CAAC;AACd;AACA,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/E,CAAC;AACD;AACA;AACA;AACA,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;AACnC,IAAI,IAAI,EAAE,YAAY,MAAM;AAC5B,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxC,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACvF;;AC3BO,SAAS,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE;AAClD,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACnD,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,EAAE;AAC3D,QAAQ,OAAO,GAAG,GAAG,SAAS,GAAG,UAAU,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC;AACrD,CAAC;AAIM,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3C,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE;AAC7C,IAAI,OAAO,MAAM,CAAC,KAAK,EAAEA,cAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/F;;ACdO,SAAS,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,KAAK,KAAK,CAAC;AACnB,QAAQ,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACnC,IAAI,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AAMM,SAAS,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;AAC1C,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE;AAC7C,IAAI,OAAO,UAAU,CAAC,KAAK,EAAEA,cAAQ,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACnF;;ACZA,MAAM,YAAY,GAAG,UAAU,CAAC;MASnB,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CAA2B,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KAAI;AAE3C,IAAA,IAAI,CAA2B,IAAO,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACxD;AACF,CAAA;MAEqB,WAAW,CAAA;IAC/B,WACY,CAAA,IAAO,EACP,IAAY,EAAA;QADZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAG;QACP,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KACpB;AAGL,CAAA;AAEK,MAAO,eAAgB,SAAQ,WAAiB,CAAA;IACpD,WAAmB,CAAA,IAAU,EAAE,IAAY,EAAA;AACzC,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACnB;AAEM,IAAA,IAAI,CAA2B,IAAO,EAAA;QAC3C,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;SACpC;KACF;AACF,CAAA;AAEK,MAAO,gBAAiB,SAAQ,WAAoB,CAAA;AACxD,IAAA,WAAA,CACE,IAAa,EACb,IAAY,EACK,IAAY,EAAA;AAE7B,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAFD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KAG9B;AAEM,IAAA,IAAI,CAA2B,IAAO,EAAA;QAC3C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC7C;KACF;AACF,CAAA;AAEK,MAAO,eAAgB,SAAQ,WAAoB,CAAA;AACvD,IAAA,WAAA,CACE,IAAa,EACb,IAAY,EACJ,IAAY,EAAA;AAEpB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAFV,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KAGrB;AAEM,IAAA,IAAI,CAA2B,IAAO,EAAA;QAC3C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;QAEjD,MAAM,QAAQ,GAAI,IAAI,CAAC,IAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACxB,IAAI,CAAC,IAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;SAC1C;;KAEF;AACF,CAAA;AAEK,MAAO,mBAAoB,SAAQ,WAAoB,CAAA;AAG3D,IAAA,WAAA,CACE,IAAa,EACb,IAAY,EACJ,SAAiB,EAAA;AAEzB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAFV,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;KAG1B;AAEM,IAAA,IAAI,CAA2B,IAAO,EAAA;;QAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAC;YAE3B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAErD,IAAI,CAAC,UAAU,GAAG;gBAChB,OAAO,EAAE,MAAK;oBACZ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;iBACzD;aACF,CAAC;SACH;KACF;AACF,CAAA;AAEK,SAAU,gBAAgB,CAAC,IAAU,EAAA;IACzC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;QACvC,MAAM,EAAE,GAAG,IAAmB,CAAC;AAC/B,QAAA,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;AAErD,QAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAClC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAClC,gBAAA,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;aACnE;iBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACxC,QAAQ,CAAC,IAAI,CACX,IAAI,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CACrE,CAAC;aACH;iBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACxC,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC9D;AACH,SAAC,CAAC,CAAC;KACJ;AAAM,SAAA,IACL,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,WAAW,IAAI,IAAI;QACxB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EACnC;AACA,QAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KAC5D;AAED,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;AAED,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAgB,EAAA;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAChD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAA;IACtC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,IAAA,OAAO,MAAM,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAChD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAoB,EAAE,IAAY,EAAA;AAC9D,IAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACtC,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAA,EAAA,EAAK,IAAI,CAAI,EAAA,CAAA,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,QAAQ,EAAE,CAAC,CAAC;KACvD;SAAM;AACL,QAAA,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED;AACA,SAAS,cAAc,CAAC,IAAoB,EAAE,IAAY,EAAA;AACxD,IAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACtC,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,QAAA,OAAO,KAAK,CAAC;KACd;SAAM;AACL,QAAA,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAoB,EACpB,IAAY,EACZ,MAAM,GAAG,KAAK;AACd;;AAEA,IAAA,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,QAAA,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;KACtD;SAAM;AACL,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,OAAO,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SACvD;aAAM;AACL,YAAA,OAAO,KAAK,CAAC;SACd;KACF;AACH;;MC7La,WAAW,CAAA;IAItB,WACU,CAAA,SAAkB,EAClB,cAA8B,EAAA;QAD9B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAS;QAClB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAJhC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAA+C,CAAC;AAM3E,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAEM,IAAA,cAAc,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KAC/B;AAEM,IAAA,cAAc,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KAC/B;AAEM,IAAA,cAAc,CAAC,KAAa,EAAA;QACjC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAE1C,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;SACF;aAAM;AACL,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;SACF;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KAC/B;AAEM,IAAA,UAAU,CAA2B,CAAuB,EAAA;QACjE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1C,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,oBAAoB,CAAC,cAA8B,EAAA;AACxD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KACxB;AAEM,IAAA,eAAe,CACpB,CAAkE,EAAA;QAElE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;YAG1C,CAAC,CAAC,EAAE,EAAE,QAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;KACJ;IAEO,aAAa,GAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxC,QAAA,OAAO,QAAQ,CAAC;KACjB;IAEO,aAAa,GAAA;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACpC,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,MAAM,EAAE,CAAC;SAClB;KACF;AACF;;SC5Ee,MAAM,CACpB,SAAkB,EAClB,OAAU,EACV,IAAO,EAAA;IAEP,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,IAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,IAAA,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAqB,CAAC;AAChD,IAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,QAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;KACvC;SAAM;AACL,QAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC7C;AACH,CAAC;AAEK,SAAU,4BAA4B,CAC1C,QAA6B,EAAA;IAE7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;AACjE,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAgC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnE,IAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B;;;;;;;;;;;;;"}
|
|
@@ -300,4 +300,4 @@ function generateInstanceFromTemplate(template) {
|
|
|
300
300
|
}
|
|
301
301
|
|
|
302
302
|
export { AttributeBinding, CollectionBinding, ElementPool, EventHandlerBinding, NodeBinding, PropertyBinding, TextNodeBinding, append, generateBindings, generateInstanceFromTemplate };
|
|
303
|
-
//# sourceMappingURL=bundle.
|
|
303
|
+
//# sourceMappingURL=bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","sources":["../../../node_modules/lower-case/dist.es2015/index.js","../../../node_modules/no-case/dist.es2015/index.js","../../../node_modules/pascal-case/dist.es2015/index.js","../../../node_modules/camel-case/dist.es2015/index.js","../src/binding.ts","../src/element-pool.ts","../src/templates.ts"],"sourcesContent":["/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nvar SUPPORTED_LOCALE = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str, locale) {\n var lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang)\n return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));\n return lowerCase(str);\n}\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str) {\n return str.toLowerCase();\n}\n//# sourceMappingURL=index.js.map","import { lowerCase } from \"lower-case\";\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { noCase } from \"no-case\";\nexport function pascalCaseTransform(input, index) {\n var firstChar = input.charAt(0);\n var lowerChars = input.substr(1).toLowerCase();\n if (index > 0 && firstChar >= \"0\" && firstChar <= \"9\") {\n return \"_\" + firstChar + lowerChars;\n }\n return \"\" + firstChar.toUpperCase() + lowerChars;\n}\nexport function pascalCaseTransformMerge(input) {\n return input.charAt(0).toUpperCase() + input.slice(1).toLowerCase();\n}\nexport function pascalCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \"\", transform: pascalCaseTransform }, options));\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { pascalCase, pascalCaseTransform, pascalCaseTransformMerge, } from \"pascal-case\";\nexport function camelCaseTransform(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\nexport function camelCaseTransformMerge(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransformMerge(input);\n}\nexport function camelCase(input, options) {\n if (options === void 0) { options = {}; }\n return pascalCase(input, __assign({ transform: camelCaseTransform }, options));\n}\n//# sourceMappingURL=index.js.map","import { Disposable } from '@vertexvis/utils';\nimport { camelCase } from 'camel-case';\n\nconst bindingRegEx = /{{(.+)}}/;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BindingDataMap = Record<string, any>;\n\nexport interface Binding {\n bind<T extends BindingDataMap>(data: T): void;\n}\n\nexport class CollectionBinding implements Binding {\n public constructor(private bindings: Binding[]) {}\n\n public bind<T extends BindingDataMap>(data: T): void {\n this.bindings.forEach((binding) => binding.bind(data));\n }\n}\n\nexport abstract class NodeBinding<N extends Node> implements Binding {\n protected constructor(\n protected node: N,\n protected expr: string\n ) {}\n\n public abstract bind<T extends BindingDataMap>(data: T): void;\n}\n\nexport class TextNodeBinding extends NodeBinding<Node> {\n public constructor(node: Node, expr: string) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newContent = replaceBindingString(data, this.expr);\n if (newContent !== this.node.textContent) {\n this.node.textContent = newContent;\n }\n }\n}\n\nexport class AttributeBinding extends NodeBinding<Element> {\n public constructor(\n node: Element,\n expr: string,\n private readonly attr: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newValue = replaceBindingString(data, this.expr);\n const oldValue = this.node.getAttribute(this.attr);\n if (oldValue !== newValue) {\n this.node.setAttribute(this.attr, newValue);\n }\n }\n}\n\nexport class PropertyBinding extends NodeBinding<Element> {\n public constructor(\n node: Element,\n expr: string,\n private prop: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newValue = replaceBinding(data, this.expr);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const oldValue = (this.node as any)[this.prop];\n if (oldValue !== newValue) {\n (this.node as any)[this.prop] = newValue;\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n}\n\nexport class EventHandlerBinding extends NodeBinding<Element> {\n private disposable?: Disposable;\n\n public constructor(\n node: Element,\n expr: string,\n private eventName: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const path = extractBindingPath(this.expr);\n if (path != null) {\n this.disposable?.dispose();\n\n const listener = getBindableValue(data, path, true);\n this.node.addEventListener(this.eventName, listener);\n\n this.disposable = {\n dispose: () => {\n this.node.removeEventListener(this.eventName, listener);\n },\n };\n }\n }\n}\n\nexport function generateBindings(node: Node): Binding[] {\n const bindings: Binding[] = [];\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as HTMLElement;\n const bindableAttributes = getBindableAttributes(el);\n\n bindableAttributes.forEach((attr) => {\n if (attr.name.startsWith('event:')) {\n const eventName = camelCase(attr.name.replace('event:', ''));\n bindings.push(new EventHandlerBinding(el, attr.value, eventName));\n } else if (attr.name.startsWith('attr:')) {\n bindings.push(\n new AttributeBinding(el, attr.value, attr.name.replace('attr:', ''))\n );\n } else if (attr.name.startsWith('prop:')) {\n const propName = camelCase(attr.name.replace('prop:', ''));\n bindings.push(new PropertyBinding(el, attr.value, propName));\n }\n });\n } else if (\n node.nodeType === Node.TEXT_NODE &&\n node.textContent != null &&\n bindingRegEx.test(node.textContent)\n ) {\n bindings.push(new TextNodeBinding(node, node.textContent));\n }\n\n for (let i = 0; i < node.childNodes.length; i++) {\n bindings.push(...generateBindings(node.childNodes[i]));\n }\n\n return bindings;\n}\n\nfunction getBindableAttributes(element: Element): Attr[] {\n return Array.from(element.attributes).filter((attr) =>\n bindingRegEx.test(attr.value)\n );\n}\n\nfunction extractBindingPath(expr: string): string | undefined {\n const result = bindingRegEx.exec(expr);\n return result != null ? result[1] : undefined;\n}\n\nfunction replaceBindingString(data: BindingDataMap, expr: string): string {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return expr.replace(`{{${path}}}`, value?.toString());\n } else {\n return expr;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction replaceBinding(data: BindingDataMap, expr: string): any {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return value;\n } else {\n return expr;\n }\n}\n\nfunction getBindableValue(\n data: BindingDataMap,\n path: string,\n isHead = false\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const [head, ...tail] = path.split('.');\n if (isHead && tail.length === 0) {\n return data;\n } else if (isHead && tail.length > 0) {\n return getBindableValue(data, tail.join('.'), false);\n } else {\n const value = data[head];\n if (tail.length > 0) {\n return getBindableValue(value, tail.join('.'), false);\n } else {\n return value;\n }\n }\n}\n","import { Binding, BindingDataMap } from './binding';\nimport { InstancedTemplate } from './templates';\n\nexport type ElementFactory = () => InstancedTemplate<HTMLElement>;\n\nexport class ElementPool {\n private readonly elements: HTMLElement[];\n private instanceMap = new Map<HTMLElement, InstancedTemplate<HTMLElement>>();\n\n public constructor(\n private container: Element,\n private elementFactory: ElementFactory\n ) {\n this.elements = [];\n }\n\n public swapHeadToTail(count: number): HTMLElement[] {\n const sliced = this.elements.splice(0, count);\n this.elements.splice(this.elements.length, 0, ...sliced);\n return this.elements.concat();\n }\n\n public swapTailToHead(count: number): HTMLElement[] {\n const sliced = this.elements.splice(-count, count);\n this.elements.splice(0, 0, ...sliced);\n return this.elements.concat();\n }\n\n public updateElements(count: number): HTMLElement[] {\n const diff = count - this.elements.length;\n\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n this.createElement();\n }\n } else {\n for (let i = 0; i < -diff; i++) {\n this.deleteElement();\n }\n }\n\n return this.elements.concat();\n }\n\n public updateData<D extends BindingDataMap>(f: (index: number) => D): void {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n const data = f(i);\n instance?.bindings.bind(data);\n });\n }\n\n public updateElementFactory(elementFactory: ElementFactory): void {\n this.elementFactory = elementFactory;\n this.updateElements(0);\n }\n\n public iterateElements(\n f: (element: HTMLElement, binding: Binding, index: number) => void\n ): void {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n f(el, instance!.bindings, i);\n });\n }\n\n private createElement(): InstancedTemplate<HTMLElement> {\n const instance = this.elementFactory();\n this.elements.push(instance.element);\n this.instanceMap.set(instance.element, instance);\n this.container.append(instance.element);\n return instance;\n }\n\n private deleteElement(): void {\n const element = this.elements.pop();\n if (element != null) {\n this.instanceMap.delete(element);\n element.remove();\n }\n }\n}\n","import { BindingDataMap, CollectionBinding, generateBindings } from './binding';\n\nexport interface InstancedTemplate<E extends Element> {\n element: E;\n bindings: CollectionBinding;\n}\n\nexport function append<E extends Element, D extends BindingDataMap>(\n container: Element,\n element: E,\n data: D\n): InstancedTemplate<E> {\n const bindings = new CollectionBinding(generateBindings(element));\n bindings.bind(data);\n container.appendChild(element);\n const created = container.lastElementChild as E;\n if (created != null) {\n return { element: created, bindings };\n } else {\n throw new Error('Failed to append element');\n }\n}\n\nexport function generateInstanceFromTemplate(\n template: HTMLTemplateElement\n): InstancedTemplate<HTMLElement> {\n const fragment = template.content.cloneNode(true) as HTMLElement;\n const element = fragment.firstElementChild as HTMLElement;\n const bindings = new CollectionBinding(generateBindings(fragment));\n return { element, bindings };\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vertexvis/html-templates",
|
|
3
|
-
"version": "1.0.0-testing.
|
|
3
|
+
"version": "1.0.0-testing.5",
|
|
4
4
|
"description": "HTML templating library for Viewer SDK.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Vertex Developers <support@vertexvis.com> (https://developer.vertexvis.com)",
|
|
@@ -12,9 +12,18 @@
|
|
|
12
12
|
"bugs": {
|
|
13
13
|
"url": "https://github.com/Vertexvis/vertex-web-sdk/issues"
|
|
14
14
|
},
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "./dist/bundle.cjs",
|
|
17
|
+
"module": "./dist/bundle.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"exports": {
|
|
20
|
+
".": {
|
|
21
|
+
"types": "./dist/index.d.ts",
|
|
22
|
+
"import": "./dist/bundle.js",
|
|
23
|
+
"require": "./dist/bundle.cjs",
|
|
24
|
+
"default": "./dist/bundle.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
18
27
|
"publishConfig": {
|
|
19
28
|
"registry": "https://registry.npmjs.org",
|
|
20
29
|
"access": "public"
|
|
@@ -36,14 +45,14 @@
|
|
|
36
45
|
"test:coverage": "yarn test --coverage"
|
|
37
46
|
},
|
|
38
47
|
"dependencies": {
|
|
39
|
-
"@vertexvis/utils": "1.0.0-testing.
|
|
48
|
+
"@vertexvis/utils": "1.0.0-testing.5"
|
|
40
49
|
},
|
|
41
50
|
"devDependencies": {
|
|
42
51
|
"@types/jest": "^29.5.14",
|
|
43
52
|
"@types/uuid": "^8.3.4",
|
|
44
53
|
"@vertexvis/eslint-config-vertexvis-typescript": "^0.5.0",
|
|
45
54
|
"@vertexvis/jest-config-vertexvis": "^0.5.4",
|
|
46
|
-
"@vertexwebsdk/build": "1.0.0-testing.
|
|
55
|
+
"@vertexwebsdk/build": "1.0.0-testing.5",
|
|
47
56
|
"eslint": "^8.57.1",
|
|
48
57
|
"jest": "^29.5.14",
|
|
49
58
|
"jest-cli": "^29.5.14",
|
|
@@ -56,5 +65,5 @@
|
|
|
56
65
|
"peerDependencies": {
|
|
57
66
|
"tslib": ">=2.4.0"
|
|
58
67
|
},
|
|
59
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "a3800248a7642a91abff0f4e6a5fd53b2f05d05a"
|
|
60
69
|
}
|
package/dist/bundle.cjs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.cjs.js","sources":["../../../node_modules/lower-case/dist.es2015/index.js","../../../node_modules/no-case/dist.es2015/index.js","../../../node_modules/pascal-case/dist.es2015/index.js","../../../node_modules/camel-case/dist.es2015/index.js","../src/binding.ts","../src/element-pool.ts","../src/templates.ts"],"sourcesContent":["/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nvar SUPPORTED_LOCALE = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str, locale) {\n var lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang)\n return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));\n return lowerCase(str);\n}\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str) {\n return str.toLowerCase();\n}\n//# sourceMappingURL=index.js.map","import { lowerCase } from \"lower-case\";\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { noCase } from \"no-case\";\nexport function pascalCaseTransform(input, index) {\n var firstChar = input.charAt(0);\n var lowerChars = input.substr(1).toLowerCase();\n if (index > 0 && firstChar >= \"0\" && firstChar <= \"9\") {\n return \"_\" + firstChar + lowerChars;\n }\n return \"\" + firstChar.toUpperCase() + lowerChars;\n}\nexport function pascalCaseTransformMerge(input) {\n return input.charAt(0).toUpperCase() + input.slice(1).toLowerCase();\n}\nexport function pascalCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \"\", transform: pascalCaseTransform }, options));\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { pascalCase, pascalCaseTransform, pascalCaseTransformMerge, } from \"pascal-case\";\nexport function camelCaseTransform(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\nexport function camelCaseTransformMerge(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransformMerge(input);\n}\nexport function camelCase(input, options) {\n if (options === void 0) { options = {}; }\n return pascalCase(input, __assign({ transform: camelCaseTransform }, options));\n}\n//# sourceMappingURL=index.js.map","import { Disposable } from '@vertexvis/utils';\nimport { camelCase } from 'camel-case';\n\nconst bindingRegEx = /{{(.+)}}/;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BindingDataMap = Record<string, any>;\n\nexport interface Binding {\n bind<T extends BindingDataMap>(data: T): void;\n}\n\nexport class CollectionBinding implements Binding {\n public constructor(private bindings: Binding[]) {}\n\n public bind<T extends BindingDataMap>(data: T): void {\n this.bindings.forEach((binding) => binding.bind(data));\n }\n}\n\nexport abstract class NodeBinding<N extends Node> implements Binding {\n protected constructor(\n protected node: N,\n protected expr: string\n ) {}\n\n public abstract bind<T extends BindingDataMap>(data: T): void;\n}\n\nexport class TextNodeBinding extends NodeBinding<Node> {\n public constructor(node: Node, expr: string) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newContent = replaceBindingString(data, this.expr);\n if (newContent !== this.node.textContent) {\n this.node.textContent = newContent;\n }\n }\n}\n\nexport class AttributeBinding extends NodeBinding<Element> {\n public constructor(\n node: Element,\n expr: string,\n private readonly attr: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newValue = replaceBindingString(data, this.expr);\n const oldValue = this.node.getAttribute(this.attr);\n if (oldValue !== newValue) {\n this.node.setAttribute(this.attr, newValue);\n }\n }\n}\n\nexport class PropertyBinding extends NodeBinding<Element> {\n public constructor(\n node: Element,\n expr: string,\n private prop: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newValue = replaceBinding(data, this.expr);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const oldValue = (this.node as any)[this.prop];\n if (oldValue !== newValue) {\n (this.node as any)[this.prop] = newValue;\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n}\n\nexport class EventHandlerBinding extends NodeBinding<Element> {\n private disposable?: Disposable;\n\n public constructor(\n node: Element,\n expr: string,\n private eventName: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const path = extractBindingPath(this.expr);\n if (path != null) {\n this.disposable?.dispose();\n\n const listener = getBindableValue(data, path, true);\n this.node.addEventListener(this.eventName, listener);\n\n this.disposable = {\n dispose: () => {\n this.node.removeEventListener(this.eventName, listener);\n },\n };\n }\n }\n}\n\nexport function generateBindings(node: Node): Binding[] {\n const bindings: Binding[] = [];\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as HTMLElement;\n const bindableAttributes = getBindableAttributes(el);\n\n bindableAttributes.forEach((attr) => {\n if (attr.name.startsWith('event:')) {\n const eventName = camelCase(attr.name.replace('event:', ''));\n bindings.push(new EventHandlerBinding(el, attr.value, eventName));\n } else if (attr.name.startsWith('attr:')) {\n bindings.push(\n new AttributeBinding(el, attr.value, attr.name.replace('attr:', ''))\n );\n } else if (attr.name.startsWith('prop:')) {\n const propName = camelCase(attr.name.replace('prop:', ''));\n bindings.push(new PropertyBinding(el, attr.value, propName));\n }\n });\n } else if (\n node.nodeType === Node.TEXT_NODE &&\n node.textContent != null &&\n bindingRegEx.test(node.textContent)\n ) {\n bindings.push(new TextNodeBinding(node, node.textContent));\n }\n\n for (let i = 0; i < node.childNodes.length; i++) {\n bindings.push(...generateBindings(node.childNodes[i]));\n }\n\n return bindings;\n}\n\nfunction getBindableAttributes(element: Element): Attr[] {\n return Array.from(element.attributes).filter((attr) =>\n bindingRegEx.test(attr.value)\n );\n}\n\nfunction extractBindingPath(expr: string): string | undefined {\n const result = bindingRegEx.exec(expr);\n return result != null ? result[1] : undefined;\n}\n\nfunction replaceBindingString(data: BindingDataMap, expr: string): string {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return expr.replace(`{{${path}}}`, value?.toString());\n } else {\n return expr;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction replaceBinding(data: BindingDataMap, expr: string): any {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return value;\n } else {\n return expr;\n }\n}\n\nfunction getBindableValue(\n data: BindingDataMap,\n path: string,\n isHead = false\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const [head, ...tail] = path.split('.');\n if (isHead && tail.length === 0) {\n return data;\n } else if (isHead && tail.length > 0) {\n return getBindableValue(data, tail.join('.'), false);\n } else {\n const value = data[head];\n if (tail.length > 0) {\n return getBindableValue(value, tail.join('.'), false);\n } else {\n return value;\n }\n }\n}\n","import { Binding, BindingDataMap } from './binding';\nimport { InstancedTemplate } from './templates';\n\nexport type ElementFactory = () => InstancedTemplate<HTMLElement>;\n\nexport class ElementPool {\n private readonly elements: HTMLElement[];\n private instanceMap = new Map<HTMLElement, InstancedTemplate<HTMLElement>>();\n\n public constructor(\n private container: Element,\n private elementFactory: ElementFactory\n ) {\n this.elements = [];\n }\n\n public swapHeadToTail(count: number): HTMLElement[] {\n const sliced = this.elements.splice(0, count);\n this.elements.splice(this.elements.length, 0, ...sliced);\n return this.elements.concat();\n }\n\n public swapTailToHead(count: number): HTMLElement[] {\n const sliced = this.elements.splice(-count, count);\n this.elements.splice(0, 0, ...sliced);\n return this.elements.concat();\n }\n\n public updateElements(count: number): HTMLElement[] {\n const diff = count - this.elements.length;\n\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n this.createElement();\n }\n } else {\n for (let i = 0; i < -diff; i++) {\n this.deleteElement();\n }\n }\n\n return this.elements.concat();\n }\n\n public updateData<D extends BindingDataMap>(f: (index: number) => D): void {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n const data = f(i);\n instance?.bindings.bind(data);\n });\n }\n\n public updateElementFactory(elementFactory: ElementFactory): void {\n this.elementFactory = elementFactory;\n this.updateElements(0);\n }\n\n public iterateElements(\n f: (element: HTMLElement, binding: Binding, index: number) => void\n ): void {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n f(el, instance!.bindings, i);\n });\n }\n\n private createElement(): InstancedTemplate<HTMLElement> {\n const instance = this.elementFactory();\n this.elements.push(instance.element);\n this.instanceMap.set(instance.element, instance);\n this.container.append(instance.element);\n return instance;\n }\n\n private deleteElement(): void {\n const element = this.elements.pop();\n if (element != null) {\n this.instanceMap.delete(element);\n element.remove();\n }\n }\n}\n","import { BindingDataMap, CollectionBinding, generateBindings } from './binding';\n\nexport interface InstancedTemplate<E extends Element> {\n element: E;\n bindings: CollectionBinding;\n}\n\nexport function append<E extends Element, D extends BindingDataMap>(\n container: Element,\n element: E,\n data: D\n): InstancedTemplate<E> {\n const bindings = new CollectionBinding(generateBindings(element));\n bindings.bind(data);\n container.appendChild(element);\n const created = container.lastElementChild as E;\n if (created != null) {\n return { element: created, bindings };\n } else {\n throw new Error('Failed to append element');\n }\n}\n\nexport function generateInstanceFromTemplate(\n template: HTMLTemplateElement\n): InstancedTemplate<HTMLElement> {\n const fragment = template.content.cloneNode(true) as HTMLElement;\n const element = fragment.firstElementChild as HTMLElement;\n const bindings = new CollectionBinding(generateBindings(fragment));\n return { element, bindings };\n}\n"],"names":["__assign"],"mappings":";;;;;;AAAA;AACA;AACA;AAuCA;AACA;AACA;AACO,SAAS,SAAS,CAAC,GAAG,EAAE;AAC/B,IAAI,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC7B;;AC7CA;AACA,IAAI,oBAAoB,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AAC1E;AACA,IAAI,oBAAoB,GAAG,cAAc,CAAC;AAC1C;AACA;AACA;AACO,SAAS,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE;AACvC,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE;AAC7C,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,oBAAoB,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,oBAAoB,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AAC/S,IAAI,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AACnF,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AAClB,IAAI,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;AACxC,QAAQ,KAAK,EAAE,CAAC;AAChB,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI;AAC1C,QAAQ,GAAG,EAAE,CAAC;AACd;AACA,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/E,CAAC;AACD;AACA;AACA;AACA,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE;AACnC,IAAI,IAAI,EAAE,YAAY,MAAM;AAC5B,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACxC,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACvF;;AC3BO,SAAS,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE;AAClD,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACnD,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,EAAE;AAC3D,QAAQ,OAAO,GAAG,GAAG,SAAS,GAAG,UAAU,CAAC;AAC5C,KAAK;AACL,IAAI,OAAO,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC;AACrD,CAAC;AAIM,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3C,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE;AAC7C,IAAI,OAAO,MAAM,CAAC,KAAK,EAAEA,cAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/F;;ACdO,SAAS,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE;AACjD,IAAI,IAAI,KAAK,KAAK,CAAC;AACnB,QAAQ,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;AACnC,IAAI,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AAMM,SAAS,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE;AAC1C,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,EAAE;AAC7C,IAAI,OAAO,UAAU,CAAC,KAAK,EAAEA,cAAQ,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACnF;;ACZA,MAAM,YAAY,GAAG,UAAU,CAAC;MASnB,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CAA2B,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;KAAI;AAE3C,IAAA,IAAI,CAA2B,IAAO,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACxD;AACF,CAAA;MAEqB,WAAW,CAAA;IAC/B,WACY,CAAA,IAAO,EACP,IAAY,EAAA;QADZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAG;QACP,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KACpB;AAGL,CAAA;AAEK,MAAO,eAAgB,SAAQ,WAAiB,CAAA;IACpD,WAAmB,CAAA,IAAU,EAAE,IAAY,EAAA;AACzC,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACnB;AAEM,IAAA,IAAI,CAA2B,IAAO,EAAA;QAC3C,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;SACpC;KACF;AACF,CAAA;AAEK,MAAO,gBAAiB,SAAQ,WAAoB,CAAA;AACxD,IAAA,WAAA,CACE,IAAa,EACb,IAAY,EACK,IAAY,EAAA;AAE7B,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAFD,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KAG9B;AAEM,IAAA,IAAI,CAA2B,IAAO,EAAA;QAC3C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SAC7C;KACF;AACF,CAAA;AAEK,MAAO,eAAgB,SAAQ,WAAoB,CAAA;AACvD,IAAA,WAAA,CACE,IAAa,EACb,IAAY,EACJ,IAAY,EAAA;AAEpB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAFV,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KAGrB;AAEM,IAAA,IAAI,CAA2B,IAAO,EAAA;QAC3C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;QAEjD,MAAM,QAAQ,GAAI,IAAI,CAAC,IAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACxB,IAAI,CAAC,IAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;SAC1C;;KAEF;AACF,CAAA;AAEK,MAAO,mBAAoB,SAAQ,WAAoB,CAAA;AAG3D,IAAA,WAAA,CACE,IAAa,EACb,IAAY,EACJ,SAAiB,EAAA;AAEzB,QAAA,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAFV,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;KAG1B;AAEM,IAAA,IAAI,CAA2B,IAAO,EAAA;;QAC3C,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,UAAU,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,EAAE,CAAC;YAE3B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAErD,IAAI,CAAC,UAAU,GAAG;gBAChB,OAAO,EAAE,MAAK;oBACZ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;iBACzD;aACF,CAAC;SACH;KACF;AACF,CAAA;AAEK,SAAU,gBAAgB,CAAC,IAAU,EAAA;IACzC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE;QACvC,MAAM,EAAE,GAAG,IAAmB,CAAC;AAC/B,QAAA,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;AAErD,QAAA,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAClC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAClC,gBAAA,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7D,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;aACnE;iBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACxC,QAAQ,CAAC,IAAI,CACX,IAAI,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CACrE,CAAC;aACH;iBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACxC,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;aAC9D;AACH,SAAC,CAAC,CAAC;KACJ;AAAM,SAAA,IACL,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,WAAW,IAAI,IAAI;QACxB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EACnC;AACA,QAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KAC5D;AAED,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;AAED,IAAA,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAgB,EAAA;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAChD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAC9B,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAA;IACtC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,IAAA,OAAO,MAAM,IAAI,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAChD,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAoB,EAAE,IAAY,EAAA;AAC9D,IAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACtC,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAA,EAAA,EAAK,IAAI,CAAI,EAAA,CAAA,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,QAAQ,EAAE,CAAC,CAAC;KACvD;SAAM;AACL,QAAA,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED;AACA,SAAS,cAAc,CAAC,IAAoB,EAAE,IAAY,EAAA;AACxD,IAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACtC,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,QAAA,OAAO,KAAK,CAAC;KACd;SAAM;AACL,QAAA,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAoB,EACpB,IAAY,EACZ,MAAM,GAAG,KAAK;AACd;;AAEA,IAAA,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,QAAA,OAAO,IAAI,CAAC;KACb;SAAM,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;KACtD;SAAM;AACL,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,OAAO,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;SACvD;aAAM;AACL,YAAA,OAAO,KAAK,CAAC;SACd;KACF;AACH;;MC7La,WAAW,CAAA;IAItB,WACU,CAAA,SAAkB,EAClB,cAA8B,EAAA;QAD9B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAS;QAClB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAJhC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAA+C,CAAC;AAM3E,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AAEM,IAAA,cAAc,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KAC/B;AAEM,IAAA,cAAc,CAAC,KAAa,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KAC/B;AAEM,IAAA,cAAc,CAAC,KAAa,EAAA;QACjC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAE1C,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;SACF;aAAM;AACL,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;SACF;AAED,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;KAC/B;AAEM,IAAA,UAAU,CAA2B,CAAuB,EAAA;QACjE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1C,YAAA,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,oBAAoB,CAAC,cAA8B,EAAA;AACxD,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KACxB;AAEM,IAAA,eAAe,CACpB,CAAkE,EAAA;QAElE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;YAG1C,CAAC,CAAC,EAAE,EAAE,QAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;KACJ;IAEO,aAAa,GAAA;AACnB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxC,QAAA,OAAO,QAAQ,CAAC;KACjB;IAEO,aAAa,GAAA;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACpC,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,MAAM,EAAE,CAAC;SAClB;KACF;AACF;;SC5Ee,MAAM,CACpB,SAAkB,EAClB,OAAU,EACV,IAAO,EAAA;IAEP,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,IAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,IAAA,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,MAAM,OAAO,GAAG,SAAS,CAAC,gBAAqB,CAAC;AAChD,IAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,QAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;KACvC;SAAM;AACL,QAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC7C;AACH,CAAC;AAEK,SAAU,4BAA4B,CAC1C,QAA6B,EAAA;IAE7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;AACjE,IAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAgC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnE,IAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B;;;;;;;;;;;;;"}
|
package/dist/bundle.esm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.esm.js","sources":["../../../node_modules/lower-case/dist.es2015/index.js","../../../node_modules/no-case/dist.es2015/index.js","../../../node_modules/pascal-case/dist.es2015/index.js","../../../node_modules/camel-case/dist.es2015/index.js","../src/binding.ts","../src/element-pool.ts","../src/templates.ts"],"sourcesContent":["/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nvar SUPPORTED_LOCALE = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str, locale) {\n var lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang)\n return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));\n return lowerCase(str);\n}\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str) {\n return str.toLowerCase();\n}\n//# sourceMappingURL=index.js.map","import { lowerCase } from \"lower-case\";\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { noCase } from \"no-case\";\nexport function pascalCaseTransform(input, index) {\n var firstChar = input.charAt(0);\n var lowerChars = input.substr(1).toLowerCase();\n if (index > 0 && firstChar >= \"0\" && firstChar <= \"9\") {\n return \"_\" + firstChar + lowerChars;\n }\n return \"\" + firstChar.toUpperCase() + lowerChars;\n}\nexport function pascalCaseTransformMerge(input) {\n return input.charAt(0).toUpperCase() + input.slice(1).toLowerCase();\n}\nexport function pascalCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \"\", transform: pascalCaseTransform }, options));\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { pascalCase, pascalCaseTransform, pascalCaseTransformMerge, } from \"pascal-case\";\nexport function camelCaseTransform(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\nexport function camelCaseTransformMerge(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransformMerge(input);\n}\nexport function camelCase(input, options) {\n if (options === void 0) { options = {}; }\n return pascalCase(input, __assign({ transform: camelCaseTransform }, options));\n}\n//# sourceMappingURL=index.js.map","import { Disposable } from '@vertexvis/utils';\nimport { camelCase } from 'camel-case';\n\nconst bindingRegEx = /{{(.+)}}/;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BindingDataMap = Record<string, any>;\n\nexport interface Binding {\n bind<T extends BindingDataMap>(data: T): void;\n}\n\nexport class CollectionBinding implements Binding {\n public constructor(private bindings: Binding[]) {}\n\n public bind<T extends BindingDataMap>(data: T): void {\n this.bindings.forEach((binding) => binding.bind(data));\n }\n}\n\nexport abstract class NodeBinding<N extends Node> implements Binding {\n protected constructor(\n protected node: N,\n protected expr: string\n ) {}\n\n public abstract bind<T extends BindingDataMap>(data: T): void;\n}\n\nexport class TextNodeBinding extends NodeBinding<Node> {\n public constructor(node: Node, expr: string) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newContent = replaceBindingString(data, this.expr);\n if (newContent !== this.node.textContent) {\n this.node.textContent = newContent;\n }\n }\n}\n\nexport class AttributeBinding extends NodeBinding<Element> {\n public constructor(\n node: Element,\n expr: string,\n private readonly attr: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newValue = replaceBindingString(data, this.expr);\n const oldValue = this.node.getAttribute(this.attr);\n if (oldValue !== newValue) {\n this.node.setAttribute(this.attr, newValue);\n }\n }\n}\n\nexport class PropertyBinding extends NodeBinding<Element> {\n public constructor(\n node: Element,\n expr: string,\n private prop: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const newValue = replaceBinding(data, this.expr);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const oldValue = (this.node as any)[this.prop];\n if (oldValue !== newValue) {\n (this.node as any)[this.prop] = newValue;\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n}\n\nexport class EventHandlerBinding extends NodeBinding<Element> {\n private disposable?: Disposable;\n\n public constructor(\n node: Element,\n expr: string,\n private eventName: string\n ) {\n super(node, expr);\n }\n\n public bind<T extends BindingDataMap>(data: T): void {\n const path = extractBindingPath(this.expr);\n if (path != null) {\n this.disposable?.dispose();\n\n const listener = getBindableValue(data, path, true);\n this.node.addEventListener(this.eventName, listener);\n\n this.disposable = {\n dispose: () => {\n this.node.removeEventListener(this.eventName, listener);\n },\n };\n }\n }\n}\n\nexport function generateBindings(node: Node): Binding[] {\n const bindings: Binding[] = [];\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node as HTMLElement;\n const bindableAttributes = getBindableAttributes(el);\n\n bindableAttributes.forEach((attr) => {\n if (attr.name.startsWith('event:')) {\n const eventName = camelCase(attr.name.replace('event:', ''));\n bindings.push(new EventHandlerBinding(el, attr.value, eventName));\n } else if (attr.name.startsWith('attr:')) {\n bindings.push(\n new AttributeBinding(el, attr.value, attr.name.replace('attr:', ''))\n );\n } else if (attr.name.startsWith('prop:')) {\n const propName = camelCase(attr.name.replace('prop:', ''));\n bindings.push(new PropertyBinding(el, attr.value, propName));\n }\n });\n } else if (\n node.nodeType === Node.TEXT_NODE &&\n node.textContent != null &&\n bindingRegEx.test(node.textContent)\n ) {\n bindings.push(new TextNodeBinding(node, node.textContent));\n }\n\n for (let i = 0; i < node.childNodes.length; i++) {\n bindings.push(...generateBindings(node.childNodes[i]));\n }\n\n return bindings;\n}\n\nfunction getBindableAttributes(element: Element): Attr[] {\n return Array.from(element.attributes).filter((attr) =>\n bindingRegEx.test(attr.value)\n );\n}\n\nfunction extractBindingPath(expr: string): string | undefined {\n const result = bindingRegEx.exec(expr);\n return result != null ? result[1] : undefined;\n}\n\nfunction replaceBindingString(data: BindingDataMap, expr: string): string {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return expr.replace(`{{${path}}}`, value?.toString());\n } else {\n return expr;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction replaceBinding(data: BindingDataMap, expr: string): any {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return value;\n } else {\n return expr;\n }\n}\n\nfunction getBindableValue(\n data: BindingDataMap,\n path: string,\n isHead = false\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n const [head, ...tail] = path.split('.');\n if (isHead && tail.length === 0) {\n return data;\n } else if (isHead && tail.length > 0) {\n return getBindableValue(data, tail.join('.'), false);\n } else {\n const value = data[head];\n if (tail.length > 0) {\n return getBindableValue(value, tail.join('.'), false);\n } else {\n return value;\n }\n }\n}\n","import { Binding, BindingDataMap } from './binding';\nimport { InstancedTemplate } from './templates';\n\nexport type ElementFactory = () => InstancedTemplate<HTMLElement>;\n\nexport class ElementPool {\n private readonly elements: HTMLElement[];\n private instanceMap = new Map<HTMLElement, InstancedTemplate<HTMLElement>>();\n\n public constructor(\n private container: Element,\n private elementFactory: ElementFactory\n ) {\n this.elements = [];\n }\n\n public swapHeadToTail(count: number): HTMLElement[] {\n const sliced = this.elements.splice(0, count);\n this.elements.splice(this.elements.length, 0, ...sliced);\n return this.elements.concat();\n }\n\n public swapTailToHead(count: number): HTMLElement[] {\n const sliced = this.elements.splice(-count, count);\n this.elements.splice(0, 0, ...sliced);\n return this.elements.concat();\n }\n\n public updateElements(count: number): HTMLElement[] {\n const diff = count - this.elements.length;\n\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n this.createElement();\n }\n } else {\n for (let i = 0; i < -diff; i++) {\n this.deleteElement();\n }\n }\n\n return this.elements.concat();\n }\n\n public updateData<D extends BindingDataMap>(f: (index: number) => D): void {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n const data = f(i);\n instance?.bindings.bind(data);\n });\n }\n\n public updateElementFactory(elementFactory: ElementFactory): void {\n this.elementFactory = elementFactory;\n this.updateElements(0);\n }\n\n public iterateElements(\n f: (element: HTMLElement, binding: Binding, index: number) => void\n ): void {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n f(el, instance!.bindings, i);\n });\n }\n\n private createElement(): InstancedTemplate<HTMLElement> {\n const instance = this.elementFactory();\n this.elements.push(instance.element);\n this.instanceMap.set(instance.element, instance);\n this.container.append(instance.element);\n return instance;\n }\n\n private deleteElement(): void {\n const element = this.elements.pop();\n if (element != null) {\n this.instanceMap.delete(element);\n element.remove();\n }\n }\n}\n","import { BindingDataMap, CollectionBinding, generateBindings } from './binding';\n\nexport interface InstancedTemplate<E extends Element> {\n element: E;\n bindings: CollectionBinding;\n}\n\nexport function append<E extends Element, D extends BindingDataMap>(\n container: Element,\n element: E,\n data: D\n): InstancedTemplate<E> {\n const bindings = new CollectionBinding(generateBindings(element));\n bindings.bind(data);\n container.appendChild(element);\n const created = container.lastElementChild as E;\n if (created != null) {\n return { element: created, bindings };\n } else {\n throw new Error('Failed to append element');\n }\n}\n\nexport function generateInstanceFromTemplate(\n template: HTMLTemplateElement\n): InstancedTemplate<HTMLElement> {\n const fragment = template.content.cloneNode(true) as HTMLElement;\n const element = fragment.firstElementChild as HTMLElement;\n const bindings = new CollectionBinding(generateBindings(fragment));\n return { element, bindings };\n}\n"],"names":[],"mappings":"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"}
|