lyco 1.3.8 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"core-BoB7sDMv.js","names":["fn?: renderFnType","fnOrArray?: renderFnOrArrayType","injectBox?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp","prefix?: string","injectBox?: (box: Temp) => Temp","f?: renderFnType","fnOrArray?: renderFnOrArrayType | string | number","injectBox?: (box: Temp | Temp[]) => Temp | Temp[]","injectBox2?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp","f?: any","f?: renderFnOrArrayType | string | number","prefix: string","key: keyof typeof allRandomClassName","componentCount: ComponentCount","name: string","slot: Temp","element: HTMLElement","options: {\n\t\t\tanimationClass?: string;\n\t\t\tanimation?: (element: HTMLElement) => void;\n\t\t\tcssProperties?: Record<string, string>;\n\t\t\tduration?: number;\n\t\t\tdelay?: number;\n\t\t}","on: OnEvent","el: EventTarget","on: Array<[string, EventHandler<any>]>","eventListeners: Map<string, EventListener>","handler: (event: Event) => void","options: boolean | AddEventListenerOptions | undefined","event: Event","e?: Element"],"sources":["../src/core/index.ts"],"sourcesContent":["import { html, TemplateResult } from \"lit\";\n\nconst ___LYCO_NULL___ = Symbol(\"___LYCO_NULL___\");\nexport type Temp = TemplateResult<1> | TemplateResult;\nexport type renderFnType = Temp | (() => Temp);\nexport type renderFnOrArrayType = renderFnType | Array<Temp> | (() => Temp[]);\n\nexport function renderFn(fn?: renderFnType): Temp {\n\treturn fn ? (typeof fn === \"function\" ? fn() : fn) : html``;\n}\n\nexport type WithHtml<K> = ((children?: K) => Temp) & {\n\thtml: (strings: TemplateStringsArray, ...values: unknown[]) => Temp;\n};\n\nexport function renderFnOrArray(\n\tfnOrArray?: renderFnOrArrayType,\n\tinjectBox?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp\n): Temp | Temp[] {\n\tlet _injectBox = injectBox ?? ((box) => box);\n\tif (fnOrArray === undefined) {\n\t\treturn html``;\n\t}\n\tif (Array.isArray(fnOrArray)) {\n\t\treturn fnOrArray.map((htmlTemp, idx) =>\n\t\t\t_injectBox(renderFn(htmlTemp), idx, true, false)\n\t\t);\n\t} else if (typeof fnOrArray !== \"function\") {\n\t\treturn _injectBox(renderFn(fnOrArray), undefined, false, false);\n\t}\n\n\tconst result = fnOrArray();\n\tif (Array.isArray(result)) {\n\t\treturn result.map((htmlTemp, idx) =>\n\t\t\t_injectBox(renderFn(htmlTemp), idx, true, false)\n\t\t);\n\t} else {\n\t\treturn _injectBox(renderFn(result), undefined, false, true);\n\t}\n}\n\nexport function randomClassName(prefix?: string): string {\n\tconst random = Math.random().toString(36).substring(2, 15);\n\treturn prefix ? `lyco-${prefix}-${random}` : `lyco-${random}`;\n}\n\nexport function renderFnOrCurry(\n\tfn?: renderFnType,\n\tinjectBox?: (box: Temp) => Temp\n): Temp | ((fn?: renderFnType) => Temp) {\n\tconst _injectBox = injectBox ?? ((box) => box);\n\tconst curriedFn = (f?: renderFnType) => _injectBox(renderFn(f!));\n\n\treturn fn ? curriedFn(fn) : curriedFn;\n}\n\nexport function renderFnOrArrayOrCurry(\n\tfnOrArray?: renderFnOrArrayType | string | number,\n\tinjectBox?: (box: Temp | Temp[]) => Temp | Temp[],\n\tinjectBox2?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp\n): Temp | Temp[] | ((fnOrArray?: renderFnOrArrayType) => Temp | Temp[]) {\n\tconst typeMap = {\n\t\tstring: (f?: any) => html` ${f} `,\n\t\tnumber: (f?: any) => html` ${f} `,\n\t};\n\tconst _fnOrArray =\n\t\ttypeof fnOrArray in typeMap\n\t\t\t? typeMap[typeof fnOrArray as \"string\" | \"number\"]\n\t\t\t: fnOrArray;\n\tconst _injectBox = injectBox ?? ((box) => box);\n\tconst curriedFn = (f?: renderFnOrArrayType | string | number) =>\n\t\t_injectBox(renderFnOrArray(f as any, injectBox2)!);\n\n\treturn _fnOrArray ? curriedFn(_fnOrArray) : curriedFn;\n}\n\nconst withInit = (\n\tprefix: string\n): {\n\tinit: boolean;\n\tprefix: string;\n\tclassName: string | typeof ___LYCO_NULL___;\n} => ({\n\tinit: false,\n\tprefix,\n\tclassName: ___LYCO_NULL___,\n});\n\nconst allRandomClassName = {\n\t\"GridBreakpoint::grid-breakpoint\": withInit(\"grid-breakpoint\"),\n\t\"Hidden::hidden-container\": withInit(\"hidden-container\"),\n\t\"ListGroup::list-group\": withInit(\"list-group\"),\n\t\"ScrollBar::scrollbar-container\": withInit(\"scrollbar-container\"),\n\t\"SkeletonLoader::skeleton\": withInit(\"skeleton\"),\n\t\"Swiper::swiper\": withInit(\"swiper\"),\n\t\"Table::table\": withInit(\"table\"),\n\t\"WaterFlow::waterflow\": withInit(\"waterflow\"),\n\t\"AutoFitGrid::auto-fit-grid\": withInit(\"auto-fit-grid\"),\n\t\"GridCol::grid-col\": withInit(\"grid-col\"),\n\t\"GridRow::grid-row\": withInit(\"grid-row\"),\n\t\"List::list\": withInit(\"list\"),\n\t\"Dialog::dialog\": withInit(\"dialog\"),\n\t\"SwitchInput::switch\": withInit(\"switch\"),\n\t\"Combobox::combobox\": withInit(\"combobox\"),\n};\n\nexport function getRandomClassName(key: keyof typeof allRandomClassName) {\n\tconst r = allRandomClassName[key];\n\tif (!r.init) {\n\t\tallRandomClassName[key].init = true;\n\t\tallRandomClassName[key].className = randomClassName(r.prefix);\n\t}\n\treturn allRandomClassName[key].className === ___LYCO_NULL___\n\t\t? randomClassName(r.prefix)\n\t\t: allRandomClassName[key].className;\n}\ntype ComponentCountItem = {\n\tvalue: number;\n};\n\ntype ComponentCount = {\n\t[key: string]: ComponentCountItem;\n} & {\n\tall: ComponentCountItem; // 修改为 ComponentCountItem 类型\n};\nexport const componentCount: ComponentCount = {\n\tall: { value: 0 },\n};\n\nexport function getComponentCount(name: string) {\n\tif (!componentCount[name]?.value) {\n\t\tcomponentCount[name] = { value: 0 };\n\t}\n\treturn componentCount[name].value;\n}\n\nexport function LycoComponent(name: string, slot: Temp) {\n\tcomponentCount.all = {\n\t\tvalue: componentCount.all.value + 1,\n\t};\n\tcomponentCount[name] === undefined\n\t\t? (componentCount[name] = { value: 0 })\n\t\t: (componentCount[name].value = componentCount[name].value + 1);\n\t// console.debug(\n\t// \t`LycoComponent: ${name} - ${componentCount[name].value} - ${componentCount.all.value}`\n\t// );\n\treturn html`\n\t\t<!-- ${name} - ${componentCount[name].value} -->\n\t\t${slot}\n\t`;\n}\n\n// 动画API:支持CSS动画类、任意动画库、CSS属性\nexport class AnimationAPI {\n\tstatic applyAnimation(\n\t\telement: HTMLElement,\n\t\toptions: {\n\t\t\tanimationClass?: string;\n\t\t\tanimation?: (element: HTMLElement) => void;\n\t\t\tcssProperties?: Record<string, string>;\n\t\t\tduration?: number;\n\t\t\tdelay?: number;\n\t\t}\n\t) {\n\t\t// Apply CSS animation class\n\t\tif (options.animationClass) {\n\t\t\telement.classList.add(options.animationClass);\n\t\t\tif (options.duration) {\n\t\t\t\telement.style.animationDuration = `${options.duration}s`;\n\t\t\t}\n\t\t\tif (options.delay) {\n\t\t\t\telement.style.animationDelay = `${options.delay}s`;\n\t\t\t}\n\t\t}\n\n\t\t// Use custom animation function (supports any animation library)\n\t\tif (options.animation) {\n\t\t\toptions.animation(element);\n\t\t}\n\n\t\t// Apply direct CSS styles for animation\n\t\tif (\n\t\t\toptions.cssProperties &&\n\t\t\tObject.keys(options.cssProperties).length > 0\n\t\t) {\n\t\t\tObject.keys(options.cssProperties).forEach((key) => {\n\t\t\t\telement.style[key as any] = options.cssProperties![key];\n\t\t\t});\n\t\t\tif (options.duration) {\n\t\t\t\telement.style.transitionDuration = `${options.duration}s`;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype EventHandler<K extends keyof GlobalEventHandlersEventMap> =\n\t| ((event: GlobalEventHandlersEventMap[K]) => void)\n\t| {\n\t\t\thandler: (event: GlobalEventHandlersEventMap[K]) => void;\n\t\t\toptions?: boolean | AddEventListenerOptions;\n\t };\n\nexport type OnEvent = {\n\t[K in keyof GlobalEventHandlersEventMap]?: EventHandler<K>;\n};\n\nexport function withEvents(on: OnEvent) {\n\treturn on;\n}\n\nexport function bindEvents(\n\tel: EventTarget,\n\ton: Array<[string, EventHandler<any>]>,\n\teventListeners: Map<string, EventListener>\n): void {\n\ton.forEach(([name, entry]) => {\n\t\tif (!entry) return; // 添加空值检查\n\n\t\tif (eventListeners.has(name)) {\n\t\t\tel.removeEventListener(name, eventListeners.get(name)!);\n\t\t}\n\n\t\tlet handler: (event: Event) => void;\n\t\tlet options: boolean | AddEventListenerOptions | undefined;\n\n\t\tif (typeof entry === \"function\") {\n\t\t\thandler = entry;\n\t\t\toptions = undefined;\n\t\t} else {\n\t\t\thandler = entry.handler;\n\t\t\toptions = entry.options;\n\t\t}\n\n\t\tif (!handler) return; // 确保 handler 存在\n\n\t\tconst listener = (event: Event) => handler(event);\n\t\tel.addEventListener(name, listener, options);\n\t\teventListeners.set(name, listener);\n\t});\n}\n\nexport function createEventBinder(on: OnEvent) {\n\tconst eventListeners = new Map<string, EventListener>();\n\tconst _on = Object.entries(on);\n\tconst _el = {\n\t\tvalue: null as EventTarget | null,\n\t};\n\tconst self = {\n\t\tbind(el: EventTarget) {\n\t\t\tbindEvents(el, _on, eventListeners);\n\t\t\t_el.value = el;\n\t\t},\n\t\tunbindAll() {\n\t\t\teventListeners.forEach((k, v) => {\n\t\t\t\t_el.value?.removeEventListener(v, k);\n\t\t\t});\n\t\t\teventListeners.clear();\n\t\t\t_el.value = null;\n\t\t},\n\t\tauto: (e?: Element) => {\n\t\t\tif (e) {\n\t\t\t\tself.bind(e);\n\t\t\t} else {\n\t\t\t\tself.unbindAll();\n\t\t\t}\n\t\t},\n\t};\n\treturn self;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"core-BoB7sDMv.js","names":["fn?: renderFnType","fnOrArray?: renderFnOrArrayType","injectBox?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp","prefix?: string","injectBox?: (box: Temp) => Temp","f?: renderFnType","fnOrArray?: renderFnOrArrayType | string | number","injectBox?: (box: Temp | Temp[]) => Temp | Temp[]","injectBox2?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp","f?: any","f?: renderFnOrArrayType | string | number","prefix: string","key: keyof typeof allRandomClassName","componentCount: ComponentCount","name: string","slot: Temp | Temp[]","element: HTMLElement","options: {\n\t\t\tanimationClass?: string;\n\t\t\tanimation?: (element: HTMLElement) => void;\n\t\t\tcssProperties?: Record<string, string>;\n\t\t\tduration?: number;\n\t\t\tdelay?: number;\n\t\t}","on: OnEvent","el: EventTarget","on: Array<[string, EventHandler<any>]>","eventListeners: Map<string, EventListener>","handler: (event: Event) => void","options: boolean | AddEventListenerOptions | undefined","event: Event","e?: Element"],"sources":["../src/core/index.ts"],"sourcesContent":["import { html, TemplateResult } from \"lit\";\n\nconst ___LYCO_NULL___ = Symbol(\"___LYCO_NULL___\");\nexport type Temp = TemplateResult<1> | TemplateResult;\nexport type renderFnType = Temp | (() => Temp);\nexport type renderFnOrArrayType = renderFnType | Array<Temp> | (() => Temp[]);\n\nexport function renderFn(fn?: renderFnType): Temp {\n\treturn fn ? (typeof fn === \"function\" ? fn() : fn) : html``;\n}\n\nexport type WithHtml<K> = ((children?: K) => Temp) & {\n\thtml: (strings: TemplateStringsArray, ...values: unknown[]) => Temp;\n};\n\nexport function renderFnOrArray(\n\tfnOrArray?: renderFnOrArrayType,\n\tinjectBox?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp\n): Temp | Temp[] {\n\tlet _injectBox = injectBox ?? ((box) => box);\n\tif (fnOrArray === undefined) {\n\t\treturn html``;\n\t}\n\tif (Array.isArray(fnOrArray)) {\n\t\treturn fnOrArray.map((htmlTemp, idx) =>\n\t\t\t_injectBox(renderFn(htmlTemp), idx, true, false)\n\t\t);\n\t} else if (typeof fnOrArray !== \"function\") {\n\t\treturn _injectBox(renderFn(fnOrArray), undefined, false, false);\n\t}\n\n\tconst result = fnOrArray();\n\tif (Array.isArray(result)) {\n\t\treturn result.map((htmlTemp, idx) =>\n\t\t\t_injectBox(renderFn(htmlTemp), idx, true, false)\n\t\t);\n\t} else {\n\t\treturn _injectBox(renderFn(result), undefined, false, true);\n\t}\n}\n\nexport function randomClassName(prefix?: string): string {\n\tconst random = Math.random().toString(36).substring(2, 15);\n\treturn prefix ? `lyco-${prefix}-${random}` : `lyco-${random}`;\n}\n\nexport function renderFnOrCurry(\n\tfn?: renderFnType,\n\tinjectBox?: (box: Temp) => Temp\n): Temp | ((fn?: renderFnType) => Temp) {\n\tconst _injectBox = injectBox ?? ((box) => box);\n\tconst curriedFn = (f?: renderFnType) => _injectBox(renderFn(f!));\n\n\treturn fn ? curriedFn(fn) : curriedFn;\n}\n\nexport function renderFnOrArrayOrCurry(\n\tfnOrArray?: renderFnOrArrayType | string | number,\n\tinjectBox?: (box: Temp | Temp[]) => Temp | Temp[],\n\tinjectBox2?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp\n): Temp | Temp[] | ((fnOrArray?: renderFnOrArrayType) => Temp | Temp[]) {\n\tconst typeMap = {\n\t\tstring: (f?: any) => html` ${f} `,\n\t\tnumber: (f?: any) => html` ${f} `,\n\t};\n\tconst _fnOrArray =\n\t\ttypeof fnOrArray in typeMap\n\t\t\t? typeMap[typeof fnOrArray as \"string\" | \"number\"]\n\t\t\t: fnOrArray;\n\tconst _injectBox = injectBox ?? ((box) => box);\n\tconst curriedFn = (f?: renderFnOrArrayType | string | number) =>\n\t\t_injectBox(renderFnOrArray(f as any, injectBox2)!);\n\n\treturn _fnOrArray ? curriedFn(_fnOrArray) : curriedFn;\n}\n\nconst withInit = (\n\tprefix: string\n): {\n\tinit: boolean;\n\tprefix: string;\n\tclassName: string | typeof ___LYCO_NULL___;\n} => ({\n\tinit: false,\n\tprefix,\n\tclassName: ___LYCO_NULL___,\n});\n\nconst allRandomClassName = {\n\t\"GridBreakpoint::grid-breakpoint\": withInit(\"grid-breakpoint\"),\n\t\"Hidden::hidden-container\": withInit(\"hidden-container\"),\n\t\"ListGroup::list-group\": withInit(\"list-group\"),\n\t\"ScrollBar::scrollbar-container\": withInit(\"scrollbar-container\"),\n\t\"SkeletonLoader::skeleton\": withInit(\"skeleton\"),\n\t\"Swiper::swiper\": withInit(\"swiper\"),\n\t\"Table::table\": withInit(\"table\"),\n\t\"WaterFlow::waterflow\": withInit(\"waterflow\"),\n\t\"AutoFitGrid::auto-fit-grid\": withInit(\"auto-fit-grid\"),\n\t\"GridCol::grid-col\": withInit(\"grid-col\"),\n\t\"GridRow::grid-row\": withInit(\"grid-row\"),\n\t\"List::list\": withInit(\"list\"),\n\t\"Dialog::dialog\": withInit(\"dialog\"),\n\t\"SwitchInput::switch\": withInit(\"switch\"),\n\t\"Combobox::combobox\": withInit(\"combobox\"),\n};\n\nexport function getRandomClassName(key: keyof typeof allRandomClassName) {\n\tconst r = allRandomClassName[key];\n\tif (!r.init) {\n\t\tallRandomClassName[key].init = true;\n\t\tallRandomClassName[key].className = randomClassName(r.prefix);\n\t}\n\treturn allRandomClassName[key].className === ___LYCO_NULL___\n\t\t? randomClassName(r.prefix)\n\t\t: allRandomClassName[key].className;\n}\ntype ComponentCountItem = {\n\tvalue: number;\n};\n\ntype ComponentCount = {\n\t[key: string]: ComponentCountItem;\n} & {\n\tall: ComponentCountItem; // 修改为 ComponentCountItem 类型\n};\nexport const componentCount: ComponentCount = {\n\tall: { value: 0 },\n};\n\nexport function getComponentCount(name: string) {\n\tif (!componentCount[name]?.value) {\n\t\tcomponentCount[name] = { value: 0 };\n\t}\n\treturn componentCount[name].value;\n}\n\nexport function LycoComponent(name: string, slot: Temp | Temp[]) {\n\tcomponentCount.all = {\n\t\tvalue: componentCount.all.value + 1,\n\t};\n\tcomponentCount[name] === undefined\n\t\t? (componentCount[name] = { value: 0 })\n\t\t: (componentCount[name].value = componentCount[name].value + 1);\n\t// console.debug(\n\t// \t`LycoComponent: ${name} - ${componentCount[name].value} - ${componentCount.all.value}`\n\t// );\n\treturn html`\n\t\t<!-- ${name} - ${componentCount[name].value} -->\n\t\t${slot}\n\t`;\n}\n\n// 动画API:支持CSS动画类、任意动画库、CSS属性\nexport class AnimationAPI {\n\tstatic applyAnimation(\n\t\telement: HTMLElement,\n\t\toptions: {\n\t\t\tanimationClass?: string;\n\t\t\tanimation?: (element: HTMLElement) => void;\n\t\t\tcssProperties?: Record<string, string>;\n\t\t\tduration?: number;\n\t\t\tdelay?: number;\n\t\t}\n\t) {\n\t\t// Apply CSS animation class\n\t\tif (options.animationClass) {\n\t\t\telement.classList.add(options.animationClass);\n\t\t\tif (options.duration) {\n\t\t\t\telement.style.animationDuration = `${options.duration}s`;\n\t\t\t}\n\t\t\tif (options.delay) {\n\t\t\t\telement.style.animationDelay = `${options.delay}s`;\n\t\t\t}\n\t\t}\n\n\t\t// Use custom animation function (supports any animation library)\n\t\tif (options.animation) {\n\t\t\toptions.animation(element);\n\t\t}\n\n\t\t// Apply direct CSS styles for animation\n\t\tif (\n\t\t\toptions.cssProperties &&\n\t\t\tObject.keys(options.cssProperties).length > 0\n\t\t) {\n\t\t\tObject.keys(options.cssProperties).forEach((key) => {\n\t\t\t\telement.style[key as any] = options.cssProperties![key];\n\t\t\t});\n\t\t\tif (options.duration) {\n\t\t\t\telement.style.transitionDuration = `${options.duration}s`;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype EventHandler<K extends keyof GlobalEventHandlersEventMap> =\n\t| ((event: GlobalEventHandlersEventMap[K]) => void)\n\t| {\n\t\t\thandler: (event: GlobalEventHandlersEventMap[K]) => void;\n\t\t\toptions?: boolean | AddEventListenerOptions;\n\t };\n\nexport type OnEvent = {\n\t[K in keyof GlobalEventHandlersEventMap]?: EventHandler<K>;\n};\n\nexport function withEvents(on: OnEvent) {\n\treturn on;\n}\n\nexport function bindEvents(\n\tel: EventTarget,\n\ton: Array<[string, EventHandler<any>]>,\n\teventListeners: Map<string, EventListener>\n): void {\n\ton.forEach(([name, entry]) => {\n\t\tif (!entry) return; // 添加空值检查\n\n\t\tif (eventListeners.has(name)) {\n\t\t\tel.removeEventListener(name, eventListeners.get(name)!);\n\t\t}\n\n\t\tlet handler: (event: Event) => void;\n\t\tlet options: boolean | AddEventListenerOptions | undefined;\n\n\t\tif (typeof entry === \"function\") {\n\t\t\thandler = entry;\n\t\t\toptions = undefined;\n\t\t} else {\n\t\t\thandler = entry.handler;\n\t\t\toptions = entry.options;\n\t\t}\n\n\t\tif (!handler) return; // 确保 handler 存在\n\n\t\tconst listener = (event: Event) => handler(event);\n\t\tel.addEventListener(name, listener, options);\n\t\teventListeners.set(name, listener);\n\t});\n}\n\nexport function createEventBinder(on: OnEvent) {\n\tconst eventListeners = new Map<string, EventListener>();\n\tconst _on = Object.entries(on);\n\tconst _el = {\n\t\tvalue: null as EventTarget | null,\n\t};\n\tconst self = {\n\t\tbind(el: EventTarget) {\n\t\t\tbindEvents(el, _on, eventListeners);\n\t\t\t_el.value = el;\n\t\t},\n\t\tunbindAll() {\n\t\t\teventListeners.forEach((k, v) => {\n\t\t\t\t_el.value?.removeEventListener(v, k);\n\t\t\t});\n\t\t\teventListeners.clear();\n\t\t\t_el.value = null;\n\t\t},\n\t\tauto: (e?: Element) => {\n\t\t\tif (e) {\n\t\t\t\tself.bind(e);\n\t\t\t} else {\n\t\t\t\tself.unbindAll();\n\t\t\t}\n\t\t},\n\t};\n\treturn self;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"core-bQvrG1od.mjs","names":["fn?: renderFnType","fnOrArray?: renderFnOrArrayType","injectBox?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp","prefix?: string","injectBox?: (box: Temp) => Temp","f?: renderFnType","fnOrArray?: renderFnOrArrayType | string | number","injectBox?: (box: Temp | Temp[]) => Temp | Temp[]","injectBox2?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp","f?: any","f?: renderFnOrArrayType | string | number","prefix: string","key: keyof typeof allRandomClassName","componentCount: ComponentCount","name: string","slot: Temp","element: HTMLElement","options: {\n\t\t\tanimationClass?: string;\n\t\t\tanimation?: (element: HTMLElement) => void;\n\t\t\tcssProperties?: Record<string, string>;\n\t\t\tduration?: number;\n\t\t\tdelay?: number;\n\t\t}","on: OnEvent","el: EventTarget","on: Array<[string, EventHandler<any>]>","eventListeners: Map<string, EventListener>","handler: (event: Event) => void","options: boolean | AddEventListenerOptions | undefined","event: Event","e?: Element"],"sources":["../src/core/index.ts"],"sourcesContent":["import { html, TemplateResult } from \"lit\";\n\nconst ___LYCO_NULL___ = Symbol(\"___LYCO_NULL___\");\nexport type Temp = TemplateResult<1> | TemplateResult;\nexport type renderFnType = Temp | (() => Temp);\nexport type renderFnOrArrayType = renderFnType | Array<Temp> | (() => Temp[]);\n\nexport function renderFn(fn?: renderFnType): Temp {\n\treturn fn ? (typeof fn === \"function\" ? fn() : fn) : html``;\n}\n\nexport type WithHtml<K> = ((children?: K) => Temp) & {\n\thtml: (strings: TemplateStringsArray, ...values: unknown[]) => Temp;\n};\n\nexport function renderFnOrArray(\n\tfnOrArray?: renderFnOrArrayType,\n\tinjectBox?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp\n): Temp | Temp[] {\n\tlet _injectBox = injectBox ?? ((box) => box);\n\tif (fnOrArray === undefined) {\n\t\treturn html``;\n\t}\n\tif (Array.isArray(fnOrArray)) {\n\t\treturn fnOrArray.map((htmlTemp, idx) =>\n\t\t\t_injectBox(renderFn(htmlTemp), idx, true, false)\n\t\t);\n\t} else if (typeof fnOrArray !== \"function\") {\n\t\treturn _injectBox(renderFn(fnOrArray), undefined, false, false);\n\t}\n\n\tconst result = fnOrArray();\n\tif (Array.isArray(result)) {\n\t\treturn result.map((htmlTemp, idx) =>\n\t\t\t_injectBox(renderFn(htmlTemp), idx, true, false)\n\t\t);\n\t} else {\n\t\treturn _injectBox(renderFn(result), undefined, false, true);\n\t}\n}\n\nexport function randomClassName(prefix?: string): string {\n\tconst random = Math.random().toString(36).substring(2, 15);\n\treturn prefix ? `lyco-${prefix}-${random}` : `lyco-${random}`;\n}\n\nexport function renderFnOrCurry(\n\tfn?: renderFnType,\n\tinjectBox?: (box: Temp) => Temp\n): Temp | ((fn?: renderFnType) => Temp) {\n\tconst _injectBox = injectBox ?? ((box) => box);\n\tconst curriedFn = (f?: renderFnType) => _injectBox(renderFn(f!));\n\n\treturn fn ? curriedFn(fn) : curriedFn;\n}\n\nexport function renderFnOrArrayOrCurry(\n\tfnOrArray?: renderFnOrArrayType | string | number,\n\tinjectBox?: (box: Temp | Temp[]) => Temp | Temp[],\n\tinjectBox2?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp\n): Temp | Temp[] | ((fnOrArray?: renderFnOrArrayType) => Temp | Temp[]) {\n\tconst typeMap = {\n\t\tstring: (f?: any) => html` ${f} `,\n\t\tnumber: (f?: any) => html` ${f} `,\n\t};\n\tconst _fnOrArray =\n\t\ttypeof fnOrArray in typeMap\n\t\t\t? typeMap[typeof fnOrArray as \"string\" | \"number\"]\n\t\t\t: fnOrArray;\n\tconst _injectBox = injectBox ?? ((box) => box);\n\tconst curriedFn = (f?: renderFnOrArrayType | string | number) =>\n\t\t_injectBox(renderFnOrArray(f as any, injectBox2)!);\n\n\treturn _fnOrArray ? curriedFn(_fnOrArray) : curriedFn;\n}\n\nconst withInit = (\n\tprefix: string\n): {\n\tinit: boolean;\n\tprefix: string;\n\tclassName: string | typeof ___LYCO_NULL___;\n} => ({\n\tinit: false,\n\tprefix,\n\tclassName: ___LYCO_NULL___,\n});\n\nconst allRandomClassName = {\n\t\"GridBreakpoint::grid-breakpoint\": withInit(\"grid-breakpoint\"),\n\t\"Hidden::hidden-container\": withInit(\"hidden-container\"),\n\t\"ListGroup::list-group\": withInit(\"list-group\"),\n\t\"ScrollBar::scrollbar-container\": withInit(\"scrollbar-container\"),\n\t\"SkeletonLoader::skeleton\": withInit(\"skeleton\"),\n\t\"Swiper::swiper\": withInit(\"swiper\"),\n\t\"Table::table\": withInit(\"table\"),\n\t\"WaterFlow::waterflow\": withInit(\"waterflow\"),\n\t\"AutoFitGrid::auto-fit-grid\": withInit(\"auto-fit-grid\"),\n\t\"GridCol::grid-col\": withInit(\"grid-col\"),\n\t\"GridRow::grid-row\": withInit(\"grid-row\"),\n\t\"List::list\": withInit(\"list\"),\n\t\"Dialog::dialog\": withInit(\"dialog\"),\n\t\"SwitchInput::switch\": withInit(\"switch\"),\n\t\"Combobox::combobox\": withInit(\"combobox\"),\n};\n\nexport function getRandomClassName(key: keyof typeof allRandomClassName) {\n\tconst r = allRandomClassName[key];\n\tif (!r.init) {\n\t\tallRandomClassName[key].init = true;\n\t\tallRandomClassName[key].className = randomClassName(r.prefix);\n\t}\n\treturn allRandomClassName[key].className === ___LYCO_NULL___\n\t\t? randomClassName(r.prefix)\n\t\t: allRandomClassName[key].className;\n}\ntype ComponentCountItem = {\n\tvalue: number;\n};\n\ntype ComponentCount = {\n\t[key: string]: ComponentCountItem;\n} & {\n\tall: ComponentCountItem; // 修改为 ComponentCountItem 类型\n};\nexport const componentCount: ComponentCount = {\n\tall: { value: 0 },\n};\n\nexport function getComponentCount(name: string) {\n\tif (!componentCount[name]?.value) {\n\t\tcomponentCount[name] = { value: 0 };\n\t}\n\treturn componentCount[name].value;\n}\n\nexport function LycoComponent(name: string, slot: Temp) {\n\tcomponentCount.all = {\n\t\tvalue: componentCount.all.value + 1,\n\t};\n\tcomponentCount[name] === undefined\n\t\t? (componentCount[name] = { value: 0 })\n\t\t: (componentCount[name].value = componentCount[name].value + 1);\n\t// console.debug(\n\t// \t`LycoComponent: ${name} - ${componentCount[name].value} - ${componentCount.all.value}`\n\t// );\n\treturn html`\n\t\t<!-- ${name} - ${componentCount[name].value} -->\n\t\t${slot}\n\t`;\n}\n\n// 动画API:支持CSS动画类、任意动画库、CSS属性\nexport class AnimationAPI {\n\tstatic applyAnimation(\n\t\telement: HTMLElement,\n\t\toptions: {\n\t\t\tanimationClass?: string;\n\t\t\tanimation?: (element: HTMLElement) => void;\n\t\t\tcssProperties?: Record<string, string>;\n\t\t\tduration?: number;\n\t\t\tdelay?: number;\n\t\t}\n\t) {\n\t\t// Apply CSS animation class\n\t\tif (options.animationClass) {\n\t\t\telement.classList.add(options.animationClass);\n\t\t\tif (options.duration) {\n\t\t\t\telement.style.animationDuration = `${options.duration}s`;\n\t\t\t}\n\t\t\tif (options.delay) {\n\t\t\t\telement.style.animationDelay = `${options.delay}s`;\n\t\t\t}\n\t\t}\n\n\t\t// Use custom animation function (supports any animation library)\n\t\tif (options.animation) {\n\t\t\toptions.animation(element);\n\t\t}\n\n\t\t// Apply direct CSS styles for animation\n\t\tif (\n\t\t\toptions.cssProperties &&\n\t\t\tObject.keys(options.cssProperties).length > 0\n\t\t) {\n\t\t\tObject.keys(options.cssProperties).forEach((key) => {\n\t\t\t\telement.style[key as any] = options.cssProperties![key];\n\t\t\t});\n\t\t\tif (options.duration) {\n\t\t\t\telement.style.transitionDuration = `${options.duration}s`;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype EventHandler<K extends keyof GlobalEventHandlersEventMap> =\n\t| ((event: GlobalEventHandlersEventMap[K]) => void)\n\t| {\n\t\t\thandler: (event: GlobalEventHandlersEventMap[K]) => void;\n\t\t\toptions?: boolean | AddEventListenerOptions;\n\t };\n\nexport type OnEvent = {\n\t[K in keyof GlobalEventHandlersEventMap]?: EventHandler<K>;\n};\n\nexport function withEvents(on: OnEvent) {\n\treturn on;\n}\n\nexport function bindEvents(\n\tel: EventTarget,\n\ton: Array<[string, EventHandler<any>]>,\n\teventListeners: Map<string, EventListener>\n): void {\n\ton.forEach(([name, entry]) => {\n\t\tif (!entry) return; // 添加空值检查\n\n\t\tif (eventListeners.has(name)) {\n\t\t\tel.removeEventListener(name, eventListeners.get(name)!);\n\t\t}\n\n\t\tlet handler: (event: Event) => void;\n\t\tlet options: boolean | AddEventListenerOptions | undefined;\n\n\t\tif (typeof entry === \"function\") {\n\t\t\thandler = entry;\n\t\t\toptions = undefined;\n\t\t} else {\n\t\t\thandler = entry.handler;\n\t\t\toptions = entry.options;\n\t\t}\n\n\t\tif (!handler) return; // 确保 handler 存在\n\n\t\tconst listener = (event: Event) => handler(event);\n\t\tel.addEventListener(name, listener, options);\n\t\teventListeners.set(name, listener);\n\t});\n}\n\nexport function createEventBinder(on: OnEvent) {\n\tconst eventListeners = new Map<string, EventListener>();\n\tconst _on = Object.entries(on);\n\tconst _el = {\n\t\tvalue: null as EventTarget | null,\n\t};\n\tconst self = {\n\t\tbind(el: EventTarget) {\n\t\t\tbindEvents(el, _on, eventListeners);\n\t\t\t_el.value = el;\n\t\t},\n\t\tunbindAll() {\n\t\t\teventListeners.forEach((k, v) => {\n\t\t\t\t_el.value?.removeEventListener(v, k);\n\t\t\t});\n\t\t\teventListeners.clear();\n\t\t\t_el.value = null;\n\t\t},\n\t\tauto: (e?: Element) => {\n\t\t\tif (e) {\n\t\t\t\tself.bind(e);\n\t\t\t} else {\n\t\t\t\tself.unbindAll();\n\t\t\t}\n\t\t},\n\t};\n\treturn self;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"core-bQvrG1od.mjs","names":["fn?: renderFnType","fnOrArray?: renderFnOrArrayType","injectBox?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp","prefix?: string","injectBox?: (box: Temp) => Temp","f?: renderFnType","fnOrArray?: renderFnOrArrayType | string | number","injectBox?: (box: Temp | Temp[]) => Temp | Temp[]","injectBox2?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp","f?: any","f?: renderFnOrArrayType | string | number","prefix: string","key: keyof typeof allRandomClassName","componentCount: ComponentCount","name: string","slot: Temp | Temp[]","element: HTMLElement","options: {\n\t\t\tanimationClass?: string;\n\t\t\tanimation?: (element: HTMLElement) => void;\n\t\t\tcssProperties?: Record<string, string>;\n\t\t\tduration?: number;\n\t\t\tdelay?: number;\n\t\t}","on: OnEvent","el: EventTarget","on: Array<[string, EventHandler<any>]>","eventListeners: Map<string, EventListener>","handler: (event: Event) => void","options: boolean | AddEventListenerOptions | undefined","event: Event","e?: Element"],"sources":["../src/core/index.ts"],"sourcesContent":["import { html, TemplateResult } from \"lit\";\n\nconst ___LYCO_NULL___ = Symbol(\"___LYCO_NULL___\");\nexport type Temp = TemplateResult<1> | TemplateResult;\nexport type renderFnType = Temp | (() => Temp);\nexport type renderFnOrArrayType = renderFnType | Array<Temp> | (() => Temp[]);\n\nexport function renderFn(fn?: renderFnType): Temp {\n\treturn fn ? (typeof fn === \"function\" ? fn() : fn) : html``;\n}\n\nexport type WithHtml<K> = ((children?: K) => Temp) & {\n\thtml: (strings: TemplateStringsArray, ...values: unknown[]) => Temp;\n};\n\nexport function renderFnOrArray(\n\tfnOrArray?: renderFnOrArrayType,\n\tinjectBox?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp\n): Temp | Temp[] {\n\tlet _injectBox = injectBox ?? ((box) => box);\n\tif (fnOrArray === undefined) {\n\t\treturn html``;\n\t}\n\tif (Array.isArray(fnOrArray)) {\n\t\treturn fnOrArray.map((htmlTemp, idx) =>\n\t\t\t_injectBox(renderFn(htmlTemp), idx, true, false)\n\t\t);\n\t} else if (typeof fnOrArray !== \"function\") {\n\t\treturn _injectBox(renderFn(fnOrArray), undefined, false, false);\n\t}\n\n\tconst result = fnOrArray();\n\tif (Array.isArray(result)) {\n\t\treturn result.map((htmlTemp, idx) =>\n\t\t\t_injectBox(renderFn(htmlTemp), idx, true, false)\n\t\t);\n\t} else {\n\t\treturn _injectBox(renderFn(result), undefined, false, true);\n\t}\n}\n\nexport function randomClassName(prefix?: string): string {\n\tconst random = Math.random().toString(36).substring(2, 15);\n\treturn prefix ? `lyco-${prefix}-${random}` : `lyco-${random}`;\n}\n\nexport function renderFnOrCurry(\n\tfn?: renderFnType,\n\tinjectBox?: (box: Temp) => Temp\n): Temp | ((fn?: renderFnType) => Temp) {\n\tconst _injectBox = injectBox ?? ((box) => box);\n\tconst curriedFn = (f?: renderFnType) => _injectBox(renderFn(f!));\n\n\treturn fn ? curriedFn(fn) : curriedFn;\n}\n\nexport function renderFnOrArrayOrCurry(\n\tfnOrArray?: renderFnOrArrayType | string | number,\n\tinjectBox?: (box: Temp | Temp[]) => Temp | Temp[],\n\tinjectBox2?: (\n\t\tbox: Temp,\n\t\tidx?: number,\n\t\tisArray?: boolean,\n\t\tisFunc?: boolean\n\t) => Temp\n): Temp | Temp[] | ((fnOrArray?: renderFnOrArrayType) => Temp | Temp[]) {\n\tconst typeMap = {\n\t\tstring: (f?: any) => html` ${f} `,\n\t\tnumber: (f?: any) => html` ${f} `,\n\t};\n\tconst _fnOrArray =\n\t\ttypeof fnOrArray in typeMap\n\t\t\t? typeMap[typeof fnOrArray as \"string\" | \"number\"]\n\t\t\t: fnOrArray;\n\tconst _injectBox = injectBox ?? ((box) => box);\n\tconst curriedFn = (f?: renderFnOrArrayType | string | number) =>\n\t\t_injectBox(renderFnOrArray(f as any, injectBox2)!);\n\n\treturn _fnOrArray ? curriedFn(_fnOrArray) : curriedFn;\n}\n\nconst withInit = (\n\tprefix: string\n): {\n\tinit: boolean;\n\tprefix: string;\n\tclassName: string | typeof ___LYCO_NULL___;\n} => ({\n\tinit: false,\n\tprefix,\n\tclassName: ___LYCO_NULL___,\n});\n\nconst allRandomClassName = {\n\t\"GridBreakpoint::grid-breakpoint\": withInit(\"grid-breakpoint\"),\n\t\"Hidden::hidden-container\": withInit(\"hidden-container\"),\n\t\"ListGroup::list-group\": withInit(\"list-group\"),\n\t\"ScrollBar::scrollbar-container\": withInit(\"scrollbar-container\"),\n\t\"SkeletonLoader::skeleton\": withInit(\"skeleton\"),\n\t\"Swiper::swiper\": withInit(\"swiper\"),\n\t\"Table::table\": withInit(\"table\"),\n\t\"WaterFlow::waterflow\": withInit(\"waterflow\"),\n\t\"AutoFitGrid::auto-fit-grid\": withInit(\"auto-fit-grid\"),\n\t\"GridCol::grid-col\": withInit(\"grid-col\"),\n\t\"GridRow::grid-row\": withInit(\"grid-row\"),\n\t\"List::list\": withInit(\"list\"),\n\t\"Dialog::dialog\": withInit(\"dialog\"),\n\t\"SwitchInput::switch\": withInit(\"switch\"),\n\t\"Combobox::combobox\": withInit(\"combobox\"),\n};\n\nexport function getRandomClassName(key: keyof typeof allRandomClassName) {\n\tconst r = allRandomClassName[key];\n\tif (!r.init) {\n\t\tallRandomClassName[key].init = true;\n\t\tallRandomClassName[key].className = randomClassName(r.prefix);\n\t}\n\treturn allRandomClassName[key].className === ___LYCO_NULL___\n\t\t? randomClassName(r.prefix)\n\t\t: allRandomClassName[key].className;\n}\ntype ComponentCountItem = {\n\tvalue: number;\n};\n\ntype ComponentCount = {\n\t[key: string]: ComponentCountItem;\n} & {\n\tall: ComponentCountItem; // 修改为 ComponentCountItem 类型\n};\nexport const componentCount: ComponentCount = {\n\tall: { value: 0 },\n};\n\nexport function getComponentCount(name: string) {\n\tif (!componentCount[name]?.value) {\n\t\tcomponentCount[name] = { value: 0 };\n\t}\n\treturn componentCount[name].value;\n}\n\nexport function LycoComponent(name: string, slot: Temp | Temp[]) {\n\tcomponentCount.all = {\n\t\tvalue: componentCount.all.value + 1,\n\t};\n\tcomponentCount[name] === undefined\n\t\t? (componentCount[name] = { value: 0 })\n\t\t: (componentCount[name].value = componentCount[name].value + 1);\n\t// console.debug(\n\t// \t`LycoComponent: ${name} - ${componentCount[name].value} - ${componentCount.all.value}`\n\t// );\n\treturn html`\n\t\t<!-- ${name} - ${componentCount[name].value} -->\n\t\t${slot}\n\t`;\n}\n\n// 动画API:支持CSS动画类、任意动画库、CSS属性\nexport class AnimationAPI {\n\tstatic applyAnimation(\n\t\telement: HTMLElement,\n\t\toptions: {\n\t\t\tanimationClass?: string;\n\t\t\tanimation?: (element: HTMLElement) => void;\n\t\t\tcssProperties?: Record<string, string>;\n\t\t\tduration?: number;\n\t\t\tdelay?: number;\n\t\t}\n\t) {\n\t\t// Apply CSS animation class\n\t\tif (options.animationClass) {\n\t\t\telement.classList.add(options.animationClass);\n\t\t\tif (options.duration) {\n\t\t\t\telement.style.animationDuration = `${options.duration}s`;\n\t\t\t}\n\t\t\tif (options.delay) {\n\t\t\t\telement.style.animationDelay = `${options.delay}s`;\n\t\t\t}\n\t\t}\n\n\t\t// Use custom animation function (supports any animation library)\n\t\tif (options.animation) {\n\t\t\toptions.animation(element);\n\t\t}\n\n\t\t// Apply direct CSS styles for animation\n\t\tif (\n\t\t\toptions.cssProperties &&\n\t\t\tObject.keys(options.cssProperties).length > 0\n\t\t) {\n\t\t\tObject.keys(options.cssProperties).forEach((key) => {\n\t\t\t\telement.style[key as any] = options.cssProperties![key];\n\t\t\t});\n\t\t\tif (options.duration) {\n\t\t\t\telement.style.transitionDuration = `${options.duration}s`;\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype EventHandler<K extends keyof GlobalEventHandlersEventMap> =\n\t| ((event: GlobalEventHandlersEventMap[K]) => void)\n\t| {\n\t\t\thandler: (event: GlobalEventHandlersEventMap[K]) => void;\n\t\t\toptions?: boolean | AddEventListenerOptions;\n\t };\n\nexport type OnEvent = {\n\t[K in keyof GlobalEventHandlersEventMap]?: EventHandler<K>;\n};\n\nexport function withEvents(on: OnEvent) {\n\treturn on;\n}\n\nexport function bindEvents(\n\tel: EventTarget,\n\ton: Array<[string, EventHandler<any>]>,\n\teventListeners: Map<string, EventListener>\n): void {\n\ton.forEach(([name, entry]) => {\n\t\tif (!entry) return; // 添加空值检查\n\n\t\tif (eventListeners.has(name)) {\n\t\t\tel.removeEventListener(name, eventListeners.get(name)!);\n\t\t}\n\n\t\tlet handler: (event: Event) => void;\n\t\tlet options: boolean | AddEventListenerOptions | undefined;\n\n\t\tif (typeof entry === \"function\") {\n\t\t\thandler = entry;\n\t\t\toptions = undefined;\n\t\t} else {\n\t\t\thandler = entry.handler;\n\t\t\toptions = entry.options;\n\t\t}\n\n\t\tif (!handler) return; // 确保 handler 存在\n\n\t\tconst listener = (event: Event) => handler(event);\n\t\tel.addEventListener(name, listener, options);\n\t\teventListeners.set(name, listener);\n\t});\n}\n\nexport function createEventBinder(on: OnEvent) {\n\tconst eventListeners = new Map<string, EventListener>();\n\tconst _on = Object.entries(on);\n\tconst _el = {\n\t\tvalue: null as EventTarget | null,\n\t};\n\tconst self = {\n\t\tbind(el: EventTarget) {\n\t\t\tbindEvents(el, _on, eventListeners);\n\t\t\t_el.value = el;\n\t\t},\n\t\tunbindAll() {\n\t\t\teventListeners.forEach((k, v) => {\n\t\t\t\t_el.value?.removeEventListener(v, k);\n\t\t\t});\n\t\t\teventListeners.clear();\n\t\t\t_el.value = null;\n\t\t},\n\t\tauto: (e?: Element) => {\n\t\t\tif (e) {\n\t\t\t\tself.bind(e);\n\t\t\t} else {\n\t\t\t\tself.unbindAll();\n\t\t\t}\n\t\t},\n\t};\n\treturn self;\n}\n"],"mappings":"2BAEA,MAAM,EAAkB,OAAO,kBAAkB,CAKjD,SAAgB,EAASA,EAAyB,CACjD,OAAO,SAAa,GAAO,WAAa,GAAI,CAAG,EAAM,EAAK,CAC1D,CAMD,SAAgB,EACfC,EACAC,EAMgB,CAChB,IAAI,EAAa,IAAc,AAAC,GAAQ,GACxC,GAAI,QAAA,GACH,MAAO,GAAK,EAEb,GAAI,MAAM,QAAQ,EAAU,CAC3B,MAAO,GAAU,IAAI,CAAC,EAAU,IAC/B,EAAW,EAAS,EAAS,CAAE,GAAK,GAAM,EAAM,CAChD,WACgB,GAAc,WAC/B,MAAO,GAAW,EAAS,EAAU,KAAA,IAAa,GAAO,EAAM,CAGhE,IAAM,EAAS,GAAW,CAMzB,MALG,OAAM,QAAQ,EAAO,CACjB,EAAO,IAAI,CAAC,EAAU,IAC5B,EAAW,EAAS,EAAS,CAAE,GAAK,GAAM,EAAM,CAChD,CAEM,EAAW,EAAS,EAAO,KAAA,IAAa,GAAO,EAAK,AAE5D,CAED,SAAgB,EAAgBC,EAAyB,CACxD,IAAM,EAAS,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,UAAU,EAAG,GAAG,CAC1D,OAAO,GAAU,OAAO,EAAO,GAAG,EAAO,GAAK,OAAO,EAAO,CAC5D,CAED,SAAgB,EACfH,EACAI,EACuC,CAEvC,IADM,EAAa,IAAc,AAAC,GAAQ,GACpC,EAAY,AAACC,GAAqB,EAAW,EAAS,EAAG,CAAC,CAEhE,OAAO,EAAK,EAAU,EAAG,CAAG,CAC5B,CAED,SAAgB,EACfC,EACAC,EACAC,EAMuE,CAUvE,IATM,EAAU,CACf,OAAQ,AAACC,GAAY,EAAK,GAAG,EAAE,GAC/B,OAAQ,AAACA,GAAY,EAAK,GAAG,EAAE,EAC/B,EACK,SACE,KAAa,EACjB,SAAe,GACf,EACE,EAAa,IAAc,AAAC,GAAQ,GACpC,EAAY,AAACC,GAClB,EAAW,EAAgB,EAAU,EAAW,CAAE,CAEnD,OAAO,EAAa,EAAU,EAAW,CAAG,CAC5C,CAcD,MAZM,EAAW,AAChBC,IAKK,CACL,MAAM,EACN,SACA,UAAW,CACX,GAEK,EAAqB,CAC1B,kCAAmC,EAAS,kBAAkB,CAC9D,2BAA4B,EAAS,mBAAmB,CACxD,wBAAyB,EAAS,aAAa,CAC/C,iCAAkC,EAAS,sBAAsB,CACjE,2BAA4B,EAAS,WAAW,CAChD,iBAAkB,EAAS,SAAS,CACpC,eAAgB,EAAS,QAAQ,CACjC,uBAAwB,EAAS,YAAY,CAC7C,6BAA8B,EAAS,gBAAgB,CACvD,oBAAqB,EAAS,WAAW,CACzC,oBAAqB,EAAS,WAAW,CACzC,aAAc,EAAS,OAAO,CAC9B,iBAAkB,EAAS,SAAS,CACpC,sBAAuB,EAAS,SAAS,CACzC,qBAAsB,EAAS,WAAW,AAC1C,EAED,SAAgB,EAAmBC,EAAsC,CACxE,IAAM,EAAI,EAAmB,GAK7B,OAJK,EAAE,OACN,EAAmB,GAAK,MAAO,EAC/B,EAAmB,GAAK,UAAY,EAAgB,EAAE,OAAO,EAEvD,EAAmB,GAAK,YAAc,EAC1C,EAAgB,EAAE,OAAO,CACzB,EAAmB,GAAK,SAC3B,CAUD,MAAaC,EAAiC,CAC7C,IAAK,CAAE,MAAO,CAAG,CACjB,EAED,SAAgB,EAAkBC,EAAc,OAI/C,OAHA,EAAK,EAAe,KAAO,QAC1B,EAAe,GAAQ,CAAE,MAAO,CAAG,GAE7B,EAAe,GAAM,KAC5B,CAED,SAAgB,EAAcA,EAAcC,EAAqB,CAUhE,OATA,EAAe,IAAM,CACpB,MAAO,EAAe,IAAI,MAAQ,CAClC,EACD,EAAe,SAAA,GACX,EAAe,GAAQ,CAAE,MAAO,CAAG,EACnC,EAAe,GAAM,MAAQ,EAAe,GAAM,MAAQ,EAIvD,EAAK;SACJ,EAAK,KAAK,EAAe,GAAM,MAAM;IAC1C,EAAK;EAER,CAGD,IAAa,EAAb,KAA0B,CACzB,OAAO,eACNC,EACAC,EAOC,CAkBD,AAhBI,EAAQ,iBACX,EAAQ,UAAU,IAAI,EAAQ,eAAe,CACzC,EAAQ,WACX,EAAQ,MAAM,mBAAqB,EAAE,EAAQ,SAAS,IAEnD,EAAQ,QACX,EAAQ,MAAM,gBAAkB,EAAE,EAAQ,MAAM,KAK9C,EAAQ,WACX,EAAQ,UAAU,EAAQ,CAK1B,EAAQ,eACR,OAAO,KAAK,EAAQ,cAAc,CAAC,OAAS,IAE5C,OAAO,KAAK,EAAQ,cAAc,CAAC,QAAQ,AAAC,GAAQ,CACnD,EAAQ,MAAM,GAAc,EAAQ,cAAe,EACnD,EAAC,CACE,EAAQ,WACX,EAAQ,MAAM,oBAAsB,EAAE,EAAQ,SAAS,IAGzD,CACD,EAiBD,SAAgB,EACfE,EACAC,EACAC,EACO,CACP,EAAG,QAAQ,CAAC,CAAC,EAAM,EAAM,GAAK,CAC7B,IAAK,EAAO,OAEZ,AAAI,EAAe,IAAI,EAAK,EAC3B,EAAG,oBAAoB,EAAM,EAAe,IAAI,EAAK,CAAE,CAIxD,IADIC,EACAC,EAUJ,UARW,GAAU,YACpB,EAAU,EACV,MAAA,KAEA,EAAU,EAAM,QAChB,EAAU,EAAM,UAGZ,EAAS,OAEd,IAAM,EAAW,AAACC,GAAiB,EAAQ,EAAM,CAEjD,AADA,EAAG,iBAAiB,EAAM,EAAU,EAAQ,CAC5C,EAAe,IAAI,EAAM,EAAS,AAClC,EAAC,AACF,CAED,SAAgB,EAAkBN,EAAa,CAM9C,IALM,EAAiB,IAAI,IACrB,EAAM,OAAO,QAAQ,EAAG,CACxB,EAAM,CACX,MAAO,IACP,EACK,EAAO,CACZ,KAAKC,EAAiB,CAErB,AADA,EAAW,EAAI,EAAK,EAAe,CACnC,EAAI,MAAQ,CACZ,EACD,WAAY,CAKX,AAJA,EAAe,QAAQ,CAAC,EAAG,IAAM,OAChC,CAAA,EAAA,EAAI,QAAO,oBAAoB,EAAG,EAAE,AACpC,EAAC,CACF,EAAe,OAAO,CACtB,EAAI,MAAQ,IACZ,EACD,KAAM,AAACM,GAAgB,CACtB,AAAI,EACH,EAAK,KAAK,EAAE,CAEZ,EAAK,WAAW,AAEjB,CACD,EACD,OAAO,CACP"}