lyco 1.4.0 → 1.4.1

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":"index.cjs.js","names":["capacity: number","index: number","value: T","metrics: BlockMetrics","length: number","host: ReactiveControllerHost","initialConfig: VirtualizerConfig<T>","initialRenderItem: (item: T, index: number) => TemplateResult<1>","offset: number","items: ItemsSource<T>","start: number","end: number","chunkIndex: number","style: StyleInfo","size: number","item: T","newConfig: VirtualizerConfig<T>","newRenderItem: (item: T, index: number) => TemplateResult<1>","items: TemplateResult[]","host: ReactiveControllerHost | null","config: VirtualizerConfig<T>","renderItemOrUndefined?: (item: T, index: number) => TemplateResult<1>","actualRenderItem: (item: T, index: number) => TemplateResult<1>","containerStyle: StyleInfo","contentStyle: StyleInfo","renderItem: (item: T, index: number) => TemplateResult<1>","props?: { fadeBg?: string; zIndex?: number; on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tspace?: string | number;\n\t\tcenter?: boolean;\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","props?: FlexProps","children?: renderFnType","children: renderFnType","strings: TemplateStringsArray","props?: { on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: { columns?: number; gap?: string | number; on?: OnEvent }","children?: renderFnOrArrayType","props?: { gap?: string | number; on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: { span?: number; on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: { gap?: string | number; on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: { space?: string | number; center?: boolean; on?: OnEvent }","children?: renderFnOrArrayType","props?: WaterFlowProps","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tfirstHeight?: string; // 第一个面板固定高度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tfirstWidth?: string; // 第一个面板固定宽度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tdirection?: \"vertical\" | \"horizontal\";\n\t\theight?: string;\n\t\twidth?: string;\n\t\tcustomCss?: string;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tsidebarWidth?: string; // 侧边栏宽度,比如 \"240px\"\n\t\tsidebarPosition?: \"left\" | \"right\";\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","props: SwiperProps","slides?: TemplateResult<1>[] | (() => TemplateResult<1>[])","_slides: TemplateResult<1>[]","index: number","scrollOffset: number","distance: number","e: TouchEvent","e: WheelEvent","container: HTMLElement | null","autoplayInterval: ReturnType<typeof setInterval>","cleanupFns: (() => void)[]","props?: SwitchInputProps","e: Event","props?: AbsoluteBoxProps","children?: renderFnType","props?: AcrylicBarProps","children?: renderFnOrArrayType","children: TemplateResult","props: AspectRatioProps","children?: renderFnOrArrayType","props: {\n\t\tminItemWidth: string;\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: { size?: string; overlap?: string; on?: OnEvent }","children?: renderFnOrArrayType","avatar: TemplateResult","idx?: number","props?: BadgeProps","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t}","initRef?: RefOrCallback<HTMLCanvasElement>","el: Element | undefined","props?: CardProps","children?: renderFnOrArrayType","props?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: ComboboxProps","inputElement: HTMLInputElement | null","optionsElement: HTMLElement | null","option: ComboboxOption","ev: MouseEvent","e: MouseEvent","e: Event","props?: ContainerProps","children?: renderFnOrArrayType","props?: {\n\torientation?: \"horizontal\" | \"vertical\";\n\tthickness?: string;\n\tcolor?: string;\n\tmargin?: string;\n\ton?: OnEvent;\n}","props?: FooterLayoutProps","children?: renderFnType","strings: TemplateStringsArray","item: T","render?: (item: T[number], index: number) => TemplateResult<1>","render: (item: T[number], index: number) => TemplateResult<1>","props: GridBreakpointProps","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tbackgroundImage?: string;\n\t\theight?: string;\n\t\toverlayColor?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","props?: HiddenProps","children?: renderFnType","strings: TemplateStringsArray","items: T","render: (item: T[number], index: number) => TemplateResult","threshold: number","animationOptions: {\n\t\tanimationClass?: string;\n\t\tanimation?: (element: HTMLElement) => void;\n\t\tcssProperties?: Record<string, string>;\n\t\tduration?: number;\n\t\tdelay?: number;\n\t}","renderedStates: boolean[]","children?: renderFnOrArrayType","props?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t}","props?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","children: Temp","_idx?: number","isArray?: boolean","_isFunc?: boolean","children: Temp | Temp[]","props?: {\n\t\tbackground?: string;\n\t\tzIndex?: number;\n\t\tfullScreen?: boolean;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","props?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: ProgressProps","props?: {\n\twidth?: string;\n\theight?: string;\n\ton?: OnEvent;\n}","props?: {\n\ttype?: \"rect\" | \"circle\";\n\twidth?: string;\n\theight?: string;\n\tborderRadius?: string;\n\tanimation?: boolean;\n\tanimationType?: \"shimmer\" | \"pulse\";\n\tbgColor?: string;\n\thighlightColor?: string;\n\tcount?: number;\n\tspacing?: string;\n\tdirection?: \"horizontal\" | \"vertical\";\n\tdelay?: number; // 延迟显示,单位 ms\n\tautoHide?: boolean; // 是否在完成后自动隐藏\n\tduration?: number; // 自动隐藏持续时间,单位 ms\n\ton?: OnEvent;\n}","blocks: TemplateResult[]","root: HTMLElement","props?: { on?: OnEvent }","props?: SpinnerProps","props?: StickyProps","children?: renderFnType","strings: TemplateStringsArray","props?: TableProps","children?: renderFnType","strings: TemplateStringsArray","props: WithTooltipProps","children?: renderFnType","showTimeout: number","hideTimeout: number","el: HTMLElement","tooltipEl: HTMLElement","props?: WrapProps","children?: renderFnOrArrayType","props?: ZStackProps","children?: renderFnOrArrayType","open: boolean","container: HTMLDivElement","content: HTMLDivElement","props?: DialogProps","children?: renderFnOrArrayType","dialogEl: HTMLElement | null","moveTarget: HTMLElement | null","dialog: HTMLElement","e: MouseEvent","containerRef: HTMLDivElement | null","contentRef: HTMLDivElement | null","props?: DialogActionsProps","children?: renderFnOrArrayType","props?: DialogButtonProps","children?: renderFnType","props?: DialogContentProps","children?: renderFnOrArrayType","props?: DialogTitleProps","children?: renderFnType","slot: renderFnOrArrayType","self: HTMLElement","slot: () => Temp | Temp[]"],"sources":["../src/components/Virtualizer.labs.ts","../src/components/LightboxContainer.ts","../src/components/Column.ts","../src/components/Flex.ts","../src/components/FlowItem.ts","../src/components/Grid.ts","../src/components/GridCol.ts","../src/components/GridItem.ts","../src/components/GridRow.ts","../src/components/Row.ts","../src/components/WaterFlow.ts","../src/components/ColumnSplit.ts","../src/components/RowSplit.ts","../src/components/ScrollBar.ts","../src/components/SideBarContainer.ts","../src/components/Swiper.ts","../src/theme/md3.ts","../src/components/SwitchInput.ts","../src/components/AbsoluteBox.ts","../src/components/AcrylicBar.ts","../src/components/AspectRatio.ts","../src/components/AutoFitGrid.ts","../src/components/AvatarStack.ts","../src/components/Badge.ts","../src/components/Canvas.ts","../src/components/Card.ts","../src/components/Center.ts","../src/components/Combobox.ts","../src/components/Container.ts","../src/components/Divider.ts","../src/components/FooterLayout.ts","../src/components/ForEach.ts","../src/components/GridBreakpoint.ts","../src/components/HeroSection.ts","../src/components/Hidden.ts","../src/components/LazyForEach.ts","../src/components/List.ts","../src/components/ListGroup.ts","../src/components/Overlay.ts","../src/components/PositionContainer.ts","../src/components/Progress.ts","../src/components/SizedBox.ts","../src/components/SkeletonLoader.ts","../src/components/Spacer.ts","../src/components/Spinner.ts","../src/components/Sticky.ts","../src/components/Table.ts","../src/components/Tooltip.ts","../src/components/Wrap.ts","../src/components/ZStack.ts","../src/components/Dialog/Dialog.ts","../src/components/Dialog/DialogActions.ts","../src/components/Dialog/DialogButton.ts","../src/components/Dialog/DialogContent.ts","../src/components/Dialog/DialogTitle.ts","../src/components/mod.ts"],"sourcesContent":["import {\n\thtml,\n\tnothing,\n\tReactiveController,\n\tReactiveControllerHost,\n\tTemplateResult,\n} from \"lit\";\nimport { createRef, ref, Ref } from \"lit/directives/ref.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\n// Add style type definition\ntype StyleInfo = { [key: string]: string | number | null | undefined };\n\n// Type assertion for SSR\nconst isSSR = typeof window === \"undefined\";\n\n// 修改生成器类型定义,确保类型兼容性\nexport type ItemsSource<T> = T[];\n\nexport interface VirtualizerConfig<T> {\n\titems: ItemsSource<T>;\n\tkeyFunction?: (index: number) => string | number;\n\titemSize?: number | ((index: number) => number);\n\tlayout?: \"vertical\" | \"horizontal\";\n\tpadding?: number;\n\tpreloadCount?: number;\n\tcacheSize?: number;\n\trenderItem?: (item: T, index: number) => TemplateResult<1>;\n\tpageSize?: number;\n\tfetchMoreThreshold?: number;\n\tonLoadMore?: () => Promise<void>; // 添加分页加载回调\n}\n\nconst BLOCK_SIZE = 100;\n\ninterface BlockMetrics {\n\tstart: number;\n\tend: number;\n\ttotal: number;\n}\n\nclass CircularBuffer<T> {\n\tprivate buffer: Array<T | undefined>;\n\tprivate readonly _capacity: number;\n\n\tconstructor(capacity: number) {\n\t\tthis._capacity = capacity;\n\t\tthis.buffer = new Array(capacity);\n\t}\n\n\tset(index: number, value: T): void {\n\t\tthis.buffer[index % this._capacity] = value;\n\t}\n\n\tget(index: number): T | undefined {\n\t\treturn this.buffer[index % this._capacity];\n\t}\n\n\tclear(): void {\n\t\tthis.buffer.fill(undefined);\n\t}\n\n\tget capacity(): number {\n\t\treturn this._capacity;\n\t}\n}\n\nclass BlockStore {\n\tdata: Float64Array = new Float64Array();\n\n\tset(index: number, metrics: BlockMetrics) {\n\t\tconst i = index * 3;\n\t\tthis.data[i] = metrics.start;\n\t\tthis.data[i + 1] = metrics.end;\n\t\tthis.data[i + 2] = metrics.total;\n\t}\n\n\tget(index: number): BlockMetrics {\n\t\tconst i = index * 3;\n\t\tif (i < 0 || i + 2 >= this.data.length) {\n\t\t\treturn { start: 0, end: 0, total: 0 };\n\t\t}\n\t\treturn {\n\t\t\tstart: this.data[i],\n\t\t\tend: this.data[i + 1],\n\t\t\ttotal: this.data[i + 2],\n\t\t};\n\t}\n\n\tinitialize(length: number) {\n\t\tthis.data = new Float64Array(Math.ceil(length / BLOCK_SIZE) * 3);\n\t\tthis.data.fill(0);\n\t}\n}\n\n// --- VirtualizerController ---\nexport class VirtualizerController<T> implements ReactiveController {\n\thost: ReactiveControllerHost;\n\n\tprivate _items: T[] = [];\n\tprivate _itemSize: number | ((index: number) => number) = 50;\n\tprivate _layout: \"vertical\" | \"horizontal\" = \"vertical\";\n\tprivate _preloadCount: number = 5;\n\tprivate _cacheSize: number = 200;\n\tprivate _renderItem: (item: T, index: number) => TemplateResult<1> = () =>\n\t\thtml``;\n\n\tprivate _containerRef: Ref<HTMLElement> = createRef();\n\n\tprivate _firstVisible: number = 0;\n\tprivate _lastVisible: number = 0;\n\n\tprivate _positionCache: Float64Array = new Float64Array();\n\tprivate _sizeCache: Float32Array = new Float32Array();\n\tprivate _cacheInitialized: boolean = false;\n\tprivate _totalContentSize: number = 0;\n\n\tprivate _templateBuffer: CircularBuffer<TemplateResult>;\n\tprivate _blockStore: BlockStore = new BlockStore();\n\n\tprivate _recycledNodes: HTMLElement[] = [];\n\tprivate readonly RECYCLE_POOL_SIZE = 20;\n\tprivate _intersectionObserver?: IntersectionObserver;\n\tprivate _mutationObserver?: MutationObserver;\n\tprivate _idleCallbackId?: number;\n\tprivate _preRenderChunkSize = 5;\n\n\tprivate readonly CHUNK_SIZE = 1000; // 每个分块的大小\n\tprivate _chunks: Map<number, T[]> = new Map();\n\tprivate _resizeObserver?: ResizeObserver;\n\tprivate _visibleChunkIndexes: Set<number> = new Set();\n\tprivate _loadedChunks: Set<number> = new Set();\n\tprivate _estimatedItemHeight: number = 0;\n\n\tprivate _isLoading = false;\n\tprivate _hasMore = false;\n\n\tprivate _pageSize: number = 50;\n\tprivate _fetchMoreThreshold: number = 0.8;\n\n\tprivate _onLoadMore?: () => Promise<void>;\n\n\tconstructor(\n\t\thost: ReactiveControllerHost,\n\t\tinitialConfig: VirtualizerConfig<T>,\n\t\tinitialRenderItem: (item: T, index: number) => TemplateResult<1>\n\t) {\n\t\tthis.host = host;\n\t\thost.addController(this);\n\n\t\tthis.updateConfig(initialConfig, initialRenderItem);\n\t\tthis._templateBuffer = new CircularBuffer(this._cacheSize);\n\n\t\tthis._pageSize = initialConfig.pageSize ?? 50;\n\t\tthis._fetchMoreThreshold = initialConfig.fetchMoreThreshold ?? 0.8;\n\n\t\tif (!isSSR) {\n\t\t\tthis._setupObservers();\n\t\t\tthis._setupResizeObserver();\n\t\t\tthis._initializeChunks();\n\t\t}\n\t}\n\n\tprivate _initializeItems(items: ItemsSource<T>): void {\n\t\tthis._items = [...items];\n\t\tthis._calculateMetrics();\n\t\tthis._initializeChunks();\n\t\tthis.host.requestUpdate();\n\t}\n\n\tprivate _updateMetricsForRange(start: number, end: number): void {\n\t\t// 扩展数组缓存如果需要\n\t\tif (end > this._positionCache.length) {\n\t\t\tconst newPositionCache = new Float64Array(Math.max(end * 1.5, 1000));\n\t\t\tnewPositionCache.set(this._positionCache);\n\t\t\tthis._positionCache = newPositionCache;\n\n\t\t\tconst newSizeCache = new Float32Array(Math.max(end * 1.5, 1000));\n\t\t\tnewSizeCache.set(this._sizeCache);\n\t\t\tthis._sizeCache = newSizeCache;\n\t\t}\n\n\t\tlet offset =\n\t\t\tstart === 0\n\t\t\t\t? 0\n\t\t\t\t: this._positionCache[start - 1] + this._sizeCache[start - 1];\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tconst size = this._getItemSize(i);\n\t\t\tthis._positionCache[i] = offset;\n\t\t\tthis._sizeCache[i] = size;\n\t\t\toffset += size;\n\t\t}\n\n\t\tthis._totalContentSize = offset;\n\t\tthis._updateChunkMetrics();\n\t}\n\n\tprivate _setupObservers(): void {\n\t\t// 监视可见性变化\n\t\tthis._intersectionObserver = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\t\tthis._preRenderChunk();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ rootMargin: \"50%\" }\n\t\t);\n\n\t\t// 监视DOM变化以回收节点\n\t\tthis._mutationObserver = new MutationObserver((mutations) => {\n\t\t\tmutations.forEach((mutation) => {\n\t\t\t\tmutation.removedNodes.forEach((node) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode instanceof HTMLElement &&\n\t\t\t\t\t\tthis._recycledNodes.length < this.RECYCLE_POOL_SIZE\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis._recycledNodes.push(node);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate _setupResizeObserver(): void {\n\t\tthis._resizeObserver = new ResizeObserver((entries) => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (entry.target instanceof HTMLElement) {\n\t\t\t\t\tconst height = entry.contentRect.height;\n\t\t\t\t\tif (height > 0) {\n\t\t\t\t\t\tthis._estimatedItemHeight = height;\n\t\t\t\t\t\tthis._updateChunkMetrics();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _initializeChunks(): void {\n\t\tthis._chunks.clear();\n\t\tconst totalChunks = Math.ceil(this._items.length / this.CHUNK_SIZE);\n\n\t\t// 只初始化元数据,不实际加载数据\n\t\tfor (let i = 0; i < totalChunks; i++) {\n\t\t\tconst start = i * this.CHUNK_SIZE;\n\t\t\tconst end = Math.min(start + this.CHUNK_SIZE, this._items.length);\n\t\t\tthis._chunks.set(i, this._items.slice(start, end));\n\t\t}\n\t}\n\n\tprivate _updateChunkMetrics(): void {\n\t\tif (!this._containerRef.value) return;\n\n\t\tconst viewportHeight = this._containerRef.value.clientHeight;\n\t\tconst estimatedTotalHeight = this._items.length * this._estimatedItemHeight;\n\n\t\t// 更新块的位置信息\n\t\tthis._blockStore.initialize(\n\t\t\tMath.ceil(this._items.length / this.CHUNK_SIZE)\n\t\t);\n\n\t\tlet offset = 0;\n\t\tfor (let i = 0; i < this._chunks.size; i++) {\n\t\t\tconst chunkSize = Math.min(\n\t\t\t\tthis.CHUNK_SIZE,\n\t\t\t\tthis._items.length - i * this.CHUNK_SIZE\n\t\t\t);\n\t\t\tconst chunkHeight = chunkSize * this._estimatedItemHeight;\n\n\t\t\tthis._blockStore.set(i, {\n\t\t\t\tstart: offset,\n\t\t\t\tend: offset + chunkHeight,\n\t\t\t\ttotal: chunkHeight,\n\t\t\t});\n\n\t\t\toffset += chunkHeight;\n\t\t}\n\n\t\tthis._totalContentSize = estimatedTotalHeight;\n\t\tthis._calculateVisibleChunks();\n\t}\n\n\tprivate _calculateVisibleChunks(): void {\n\t\tif (!this._containerRef.value) return;\n\n\t\tconst scrollTop = this._containerRef.value.scrollTop;\n\t\tconst viewportHeight = this._containerRef.value.clientHeight;\n\n\t\t// 计算可见块的索引范围\n\t\tconst startChunkIndex = Math.floor(\n\t\t\tscrollTop / (this.CHUNK_SIZE * this._estimatedItemHeight)\n\t\t);\n\t\tconst endChunkIndex = Math.ceil(\n\t\t\t(scrollTop + viewportHeight) /\n\t\t\t\t(this.CHUNK_SIZE * this._estimatedItemHeight)\n\t\t);\n\n\t\t// 更新可见块集合\n\t\tthis._visibleChunkIndexes.clear();\n\t\tfor (let i = startChunkIndex; i <= endChunkIndex; i++) {\n\t\t\tif (this._chunks.has(i)) {\n\t\t\t\tthis._visibleChunkIndexes.add(i);\n\t\t\t}\n\t\t}\n\n\t\t// 预加载相邻块\n\t\tthis._preloadAdjacentChunks(startChunkIndex - 1, endChunkIndex + 1);\n\t}\n\n\tprivate _preloadAdjacentChunks(start: number, end: number): void {\n\t\tfor (let i = start; i <= end; i++) {\n\t\t\tif (i >= 0 && i < this._chunks.size && !this._loadedChunks.has(i)) {\n\t\t\t\trequestIdleCallback(() => {\n\t\t\t\t\tthis._loadChunk(i);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _loadChunk(index: number): void {\n\t\tif (this._loadedChunks.has(index)) return;\n\n\t\tconst start = index * this.CHUNK_SIZE;\n\t\tconst end = Math.min(start + this.CHUNK_SIZE, this._items.length);\n\t\tconst items = this._items.slice(start, end);\n\n\t\tthis._chunks.set(index, items);\n\t\tthis._loadedChunks.add(index);\n\t\tthis._calculateMetricsForChunk(index);\n\t}\n\n\tprivate _calculateMetricsForChunk(chunkIndex: number): void {\n\t\tconst start = chunkIndex * this.CHUNK_SIZE;\n\t\tconst items = this._chunks.get(chunkIndex) || [];\n\n\t\tlet offset = start * this._estimatedItemHeight;\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\tconst index = start + i;\n\t\t\tthis._positionCache[index] = offset;\n\t\t\tthis._sizeCache[index] = this._estimatedItemHeight;\n\t\t\toffset += this._estimatedItemHeight;\n\t\t}\n\t}\n\n\tprivate _preRenderChunk(): void {\n\t\tif (this._idleCallbackId) {\n\t\t\tcancelIdleCallback(this._idleCallbackId);\n\t\t}\n\n\t\tthis._idleCallbackId = requestIdleCallback((deadline) => {\n\t\t\tlet index = this._lastVisible + 1;\n\t\t\tlet count = 0;\n\n\t\t\twhile (\n\t\t\t\tdeadline.timeRemaining() > 0 &&\n\t\t\t\tcount < this._preRenderChunkSize &&\n\t\t\t\tindex < this._items.length\n\t\t\t) {\n\t\t\t\tthis._prerenderItem(index);\n\t\t\t\tindex++;\n\t\t\t\tcount++;\n\t\t\t}\n\n\t\t\tif (index < this._items.length) {\n\t\t\t\tthis._preRenderChunk();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _prerenderItem(index: number): void {\n\t\tconst cacheKey = index % this._cacheSize;\n\t\tif (!this._templateBuffer.get(cacheKey)) {\n\t\t\tconst itemOffset = this._positionCache[index];\n\t\t\tconst itemHeightWidth = this._sizeCache[index];\n\n\t\t\tif (itemOffset !== undefined && itemHeightWidth !== undefined) {\n\t\t\t\tconst style: StyleInfo = this._getItemStyle(\n\t\t\t\t\titemOffset,\n\t\t\t\t\titemHeightWidth\n\t\t\t\t);\n\t\t\t\tconst result = this._createItemTemplate(\n\t\t\t\t\tthis._items[index],\n\t\t\t\t\tindex,\n\t\t\t\t\tstyle\n\t\t\t\t);\n\t\t\t\tthis._templateBuffer.set(cacheKey, result);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getItemStyle(offset: number, size: number): StyleInfo {\n\t\tconst isVertical = this._layout === \"vertical\";\n\t\treturn {\n\t\t\tposition: \"absolute\",\n\t\t\t[isVertical ? \"top\" : \"left\"]: `${offset}px`,\n\t\t\t[isVertical ? \"height\" : \"width\"]: `${size}px`,\n\t\t\twidth: isVertical ? \"100%\" : \"auto\",\n\t\t\theight: isVertical ? \"auto\" : \"100%\",\n\t\t\twillChange: \"transform\",\n\t\t\tcontain: \"content\",\n\t\t\tbackfaceVisibility: \"hidden\",\n\t\t\tWebkitFontSmoothing: \"subpixel-antialiased\",\n\t\t};\n\t}\n\n\tprivate _createItemTemplate(\n\t\titem: T,\n\t\tindex: number,\n\t\tstyle: StyleInfo\n\t): TemplateResult<1> {\n\t\tlet recycledNode = this._recycledNodes.pop();\n\t\tconst key = `item-${index}`;\n\n\t\treturn html`\n\t\t\t${recycledNode\n\t\t\t\t? html`<div\n\t\t\t\t\t\t.key=${key}\n\t\t\t\t\t\tstyle=${styleMap(style)}\n\t\t\t\t\t\tdata-index=${index}\n\t\t\t\t\t\t.recycled=${recycledNode}\n\t\t\t\t >\n\t\t\t\t\t\t${this._renderItem(item, index)}\n\t\t\t\t </div>`\n\t\t\t\t: html`<div .key=${key} style=${styleMap(style)} data-index=${index}>\n\t\t\t\t\t\t${this._renderItem(item, index)}\n\t\t\t\t </div>`}\n\t\t`;\n\t}\n\n\thostConnected() {\n\t\tif (!isSSR) {\n\t\t\tthis.host.updateComplete.then(() => {\n\t\t\t\tif (this._containerRef.value) {\n\t\t\t\t\tthis._containerRef.value.addEventListener(\n\t\t\t\t\t\t\"scroll\",\n\t\t\t\t\t\tthis._scheduleUpdate\n\t\t\t\t\t);\n\t\t\t\t\tthis._calculateMetrics();\n\t\t\t\t\tthis._updateVisibleRange();\n\t\t\t\t\tthis.host.requestUpdate();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (!isSSR && this._containerRef.value) {\n\t\t\tthis._intersectionObserver?.observe(this._containerRef.value);\n\t\t\tthis._mutationObserver?.observe(this._containerRef.value, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t\tattributes: true,\n\t\t\t});\n\t\t\tthis._resizeObserver?.observe(this._containerRef.value);\n\t\t}\n\t}\n\n\thostDisconnected() {\n\t\tif (!isSSR && this._containerRef.value) {\n\t\t\tthis._containerRef.value.removeEventListener(\n\t\t\t\t\"scroll\",\n\t\t\t\tthis._scheduleUpdate\n\t\t\t);\n\t\t}\n\n\t\tthis._intersectionObserver?.disconnect();\n\t\tthis._mutationObserver?.disconnect();\n\t\tthis._resizeObserver?.disconnect();\n\t\tif (this._idleCallbackId) {\n\t\t\tcancelIdleCallback(this._idleCallbackId);\n\t\t}\n\t}\n\n\thostUpdated() {\n\t\tif (\n\t\t\t!isSSR &&\n\t\t\t!this._cacheInitialized &&\n\t\t\tthis._containerRef.value &&\n\t\t\tthis._items.length > 0\n\t\t) {\n\t\t\tthis._calculateMetrics();\n\t\t\tthis._updateVisibleRange();\n\t\t\tthis.host.requestUpdate();\n\t\t}\n\t}\n\n\tpublic async updateConfig(\n\t\tnewConfig: VirtualizerConfig<T>,\n\t\tnewRenderItem: (item: T, index: number) => TemplateResult<1>\n\t): Promise<void> {\n\t\tconst oldItemSize = this._itemSize;\n\t\tconst oldCacheSize = this._cacheSize;\n\n\t\tthis._itemSize = newConfig.itemSize ?? 50;\n\t\tthis._layout = newConfig.layout ?? \"vertical\";\n\t\tthis._preloadCount = newConfig.preloadCount ?? 5;\n\t\tthis._cacheSize = newConfig.cacheSize ?? 200;\n\t\tthis._renderItem = newRenderItem;\n\t\tthis._onLoadMore = newConfig.onLoadMore;\n\n\t\t// 处理 items 的更新\n\t\tif (\"items\" in newConfig) {\n\t\t\tthis._initializeItems(newConfig.items);\n\t\t}\n\n\t\tthis._pageSize = newConfig.pageSize ?? this._pageSize;\n\t\tthis._fetchMoreThreshold =\n\t\t\tnewConfig.fetchMoreThreshold ?? this._fetchMoreThreshold;\n\n\t\tif (oldCacheSize !== this._cacheSize) {\n\t\t\tthis._templateBuffer = new CircularBuffer(this._cacheSize);\n\t\t}\n\n\t\tif (oldItemSize !== this._itemSize) {\n\t\t\tthis._calculateMetrics();\n\t\t\tthis._initializeChunks();\n\t\t}\n\n\t\tif (!isSSR) {\n\t\t\tthis._updateVisibleRange();\n\t\t}\n\t\tthis.host.requestUpdate();\n\t}\n\n\tprivate async _checkAndLoadMore(): Promise<void> {\n\t\tif (!this._onLoadMore || this._isLoading || !this._containerRef.value)\n\t\t\treturn;\n\n\t\t// 获取最后一个可见元素的索引\n\t\tconst lastVisibleIndex = this._lastVisible;\n\n\t\t// 计算页大小\n\t\tconst pageSize = this._pageSize || 1000;\n\n\t\t// 检查最后一个可见元素是否是当前页的最后一个元素\n\t\t// 使用Math.floor确保在页的边界上正确触发\n\t\tconst isLastItemOfPage = (lastVisibleIndex + 1) % pageSize === 0;\n\n\t\tif (isLastItemOfPage) {\n\t\t\tconsole.log(\"Reached end of page, loading more...\", {\n\t\t\t\tlastVisibleIndex,\n\t\t\t\tpageSize,\n\t\t\t\ttotalItems: this._items.length,\n\t\t\t});\n\n\t\t\tthis._isLoading = true;\n\t\t\ttry {\n\t\t\t\tawait this._onLoadMore();\n\t\t\t} finally {\n\t\t\t\tthis._isLoading = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getItemSize = (index: number): number => {\n\t\treturn typeof this._itemSize === \"function\"\n\t\t\t? this._itemSize(index)\n\t\t\t: this._itemSize;\n\t};\n\n\tprivate _calculateMetrics = (): void => {\n\t\tif (this._items.length === 0) {\n\t\t\tthis._positionCache = new Float64Array();\n\t\t\tthis._sizeCache = new Float32Array();\n\t\t\tthis._blockStore.initialize(0);\n\t\t\tthis._totalContentSize = 0;\n\t\t\tthis._cacheInitialized = true;\n\t\t\tthis._templateBuffer.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._positionCache = new Float64Array(this._items.length);\n\t\tthis._sizeCache = new Float32Array(this._items.length);\n\t\tthis._blockStore.initialize(this._items.length);\n\n\t\tlet offset = 0;\n\t\tlet currentBlockStart = 0;\n\t\tlet currentBlockTotal = 0;\n\n\t\tfor (let i = 0; i < this._items.length; i++) {\n\t\t\tconst size = this._getItemSize(i);\n\t\t\tthis._positionCache[i] = offset;\n\t\t\tthis._sizeCache[i] = size;\n\n\t\t\tcurrentBlockTotal += size;\n\n\t\t\tif ((i + 1) % BLOCK_SIZE === 0 || i === this._items.length - 1) {\n\t\t\t\tconst blockIndex = Math.floor(i / BLOCK_SIZE);\n\t\t\t\tthis._blockStore.set(blockIndex, {\n\t\t\t\t\tstart: currentBlockStart,\n\t\t\t\t\tend: offset + size,\n\t\t\t\t\ttotal: currentBlockTotal,\n\t\t\t\t});\n\t\t\t\tcurrentBlockStart = offset + size;\n\t\t\t\tcurrentBlockTotal = 0;\n\t\t\t}\n\n\t\t\toffset += size;\n\t\t}\n\t\tthis._totalContentSize = offset;\n\t\tthis._cacheInitialized = true;\n\t\tthis._templateBuffer.clear();\n\t};\n\n\tprivate _findItemIndexByOffset = (offset: number): number => {\n\t\tif (!this._cacheInitialized || this._items.length === 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet low = 0;\n\t\tlet high = this._items.length - 1;\n\t\tlet resultIndex = 0;\n\n\t\twhile (low <= high) {\n\t\t\tconst mid = Math.floor((low + high) / 2);\n\t\t\tif (this._positionCache[mid] <= offset) {\n\t\t\t\tresultIndex = mid;\n\t\t\t\tlow = mid + 1;\n\t\t\t} else {\n\t\t\t\thigh = mid - 1;\n\t\t\t}\n\t\t}\n\t\treturn resultIndex;\n\t};\n\n\tprivate _updateVisibleRange = (): void => {\n\t\tif (!this._containerRef.value) return;\n\n\t\tconst isVertical = this._layout === \"vertical\";\n\t\tconst scrollPosition = isVertical\n\t\t\t? this._containerRef.value.scrollTop\n\t\t\t: this._containerRef.value.scrollLeft;\n\n\t\tconst viewportSize = isVertical\n\t\t\t? this._containerRef.value.clientHeight\n\t\t\t: this._containerRef.value.clientWidth;\n\n\t\tthis._firstVisible = Math.floor(scrollPosition / this._estimatedItemHeight);\n\t\tthis._lastVisible = Math.ceil(\n\t\t\t(scrollPosition + viewportSize) / this._estimatedItemHeight\n\t\t);\n\n\t\t// 检查是否需要加载更多数据\n\t\tthis._checkAndLoadMore();\n\n\t\tthis.host.requestUpdate();\n\t};\n\n\tpublic getRenderedItems(): TemplateResult[] {\n\t\tif (!this._renderItem) return [];\n\n\t\tconst items: TemplateResult[] = [];\n\t\tconst renderSet = new Set<number>();\n\n\t\t// 只渲染可见块中的项\n\t\tfor (const chunkIndex of this._visibleChunkIndexes) {\n\t\t\tconst chunk = this._chunks.get(chunkIndex);\n\t\t\tif (!chunk) continue;\n\n\t\t\tconst start = chunkIndex * this.CHUNK_SIZE;\n\t\t\tchunk.forEach((_item, offset) => {\n\t\t\t\tconst index = start + offset;\n\t\t\t\tif (index >= this._firstVisible && index <= this._lastVisible) {\n\t\t\t\t\trenderSet.add(index);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// 按顺序渲染可见项\n\t\tArray.from(renderSet)\n\t\t\t.sort((a, b) => a - b)\n\t\t\t.forEach((index) => {\n\t\t\t\tconst style = this._getItemStyle(\n\t\t\t\t\tthis._positionCache[index] || index * this._estimatedItemHeight,\n\t\t\t\t\tthis._sizeCache[index] || this._estimatedItemHeight\n\t\t\t\t);\n\t\t\t\titems.push(this._createItemTemplate(this._items[index], index, style));\n\t\t\t});\n\n\t\treturn items;\n\t}\n\n\tprivate _ticking = false;\n\tprivate _lastUpdate = 0;\n\tprivate readonly FRAME_BUDGET = 16;\n\n\tprivate _scheduleUpdate = async (): Promise<void> => {\n\t\tif (this._ticking) return;\n\n\t\tconst now = performance.now();\n\t\tconst timeSinceLastUpdate = now - this._lastUpdate;\n\n\t\tif (timeSinceLastUpdate >= this.FRAME_BUDGET) {\n\t\t\tthis._ticking = true;\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis._updateVisibleRange();\n\t\t\t\tthis._ticking = false;\n\t\t\t\tthis._lastUpdate = performance.now();\n\t\t\t});\n\t\t}\n\t};\n\n\tpublic getContainerRef(): Ref<HTMLElement> {\n\t\treturn this._containerRef;\n\t}\n\n\tpublic getTotalContentSize(): number {\n\t\treturn this._totalContentSize;\n\t}\n\n\tpublic getLayout(): \"vertical\" | \"horizontal\" {\n\t\treturn this._layout;\n\t}\n}\n\n// Global WeakMap to store controllers, associated with their host element.\n// This is essential for the functional component to retrieve the correct controller.\nconst virtualizerControllers = new WeakMap<\n\tReactiveControllerHost,\n\tVirtualizerController<any>\n>();\n\n// 改进宿主检测机制\nconst getCurrentHost = (): ReactiveControllerHost | null => {\n\tif (isSSR) return null;\n\n\ttry {\n\t\t// 尝试从 Lit 内部获取当前渲染上下文\n\t\tconst renderingElement = document.currentScript as any;\n\t\tif (renderingElement && \"_$litElement$\" in renderingElement) {\n\t\t\treturn renderingElement._$litElement$ as ReactiveControllerHost;\n\t\t}\n\t\t// 尝试从自定义元素获取\n\t\tif (customElements && window.customElements) {\n\t\t\tconst current = document.querySelector(\"virtualizer-example\");\n\t\t\tif (current && \"_$litElement$\" in current) {\n\t\t\t\treturn (current as any)._$litElement$ as ReactiveControllerHost;\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.warn(\"Failed to get Lit host:\", e);\n\t}\n\treturn null;\n};\n\n// 类型保护函数\nfunction isValidHost(\n\thost: ReactiveControllerHost | null\n): host is ReactiveControllerHost {\n\treturn host !== null && typeof host.addController === \"function\";\n}\n\n// --- The Functional Virtualizer Component (with Currying) ---\n\n// Overload 1: For curried usage (Virtualizer(config)(renderItem))\nexport function Virtualizer<T>(\n\tconfig: Omit<VirtualizerConfig<T>, \"renderItem\">\n): (\n\trenderItem: (item: T, index: number) => TemplateResult<1> // renderItem is required in the second call\n) => TemplateResult<1>;\n\nexport function Virtualizer<T>(config: VirtualizerConfig<T>): TemplateResult<1>;\n\n// Overload 2: For direct usage (Virtualizer(config, renderItem))\nexport function Virtualizer<T>(\n\tconfig: VirtualizerConfig<T>,\n\trenderItem: (item: T, index: number) => TemplateResult<1>\n): TemplateResult<1>;\n\n// Implementation of the overloaded function\nexport function Virtualizer<T>(\n\tconfig: VirtualizerConfig<T>,\n\trenderItemOrUndefined?: (item: T, index: number) => TemplateResult<1>\n):\n\t| TemplateResult<1>\n\t| ((\n\t\t\trenderItem: (item: T, index: number) => TemplateResult<1>\n\t ) => TemplateResult<1>) {\n\t// 获取宿主并验证\n\tconst host = getCurrentHost() as ReactiveControllerHost;\n\n\t// 修改降级渲染模式的实现\n\tif (!isValidHost(host)) {\n\t\tconsole.warn(\"Virtualizer: Running in fallback mode\");\n\t\tconst actualRenderItem =\n\t\t\trenderItemOrUndefined ||\n\t\t\tconfig.renderItem ||\n\t\t\t((item: T) => html`${String(item)}`);\n\n\t\tconst items = config.items;\n\n\t\t// 降级渲染模板\n\t\treturn html`\n\t\t\t<div style=\"overflow: auto; height: 100%; position: relative;\">\n\t\t\t\t<div style=\"position: relative;\">\n\t\t\t\t\t${items.map((item: T, index: number) =>\n\t\t\t\t\t\tactualRenderItem(item, index)\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t// 获取或创建控制器\n\tlet controller = virtualizerControllers.get(host);\n\tif (!controller) {\n\t\tconst initialRenderItem =\n\t\t\trenderItemOrUndefined ||\n\t\t\tconfig.renderItem ||\n\t\t\t((item: T) => html`${item}`);\n\t\tcontroller = new VirtualizerController(host, config, initialRenderItem);\n\t\tvirtualizerControllers.set(host, controller);\n\t}\n\n\t// This is the function that will actually render the virtualizer template\n\tconst renderVirtualizerTemplate = (\n\t\tactualRenderItem: (item: T, index: number) => TemplateResult<1>\n\t): TemplateResult<1> => {\n\t\t// Update controller's config with the latest values (including the passed renderItem)\n\t\tcontroller.updateConfig(config, actualRenderItem);\n\n\t\tconst containerStyle: StyleInfo = {\n\t\t\tposition: \"relative\",\n\t\t\toverflow: isSSR ? \"visible\" : \"auto\",\n\t\t\t[controller.getLayout() === \"vertical\" ? \"height\" : \"width\"]: \"100%\",\n\t\t\t[controller.getLayout() === \"vertical\" ? \"minHeight\" : \"minWidth\"]: \"1px\",\n\t\t};\n\n\t\tconst contentStyle: StyleInfo = {\n\t\t\tposition: \"relative\",\n\t\t\t[controller.getLayout() === \"vertical\"\n\t\t\t\t? \"height\"\n\t\t\t\t: \"width\"]: `${controller.getTotalContentSize()}px`,\n\t\t\ttransform:\n\t\t\t\tcontroller.getLayout() === \"vertical\"\n\t\t\t\t\t? \"translateY(0)\"\n\t\t\t\t\t: \"translateX(0)\",\n\t\t};\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref(controller.getContainerRef())}\n\t\t\t\tstyle=${styleMap(containerStyle)}\n\t\t\t\t@scroll=${isSSR ? nothing : () => controller.host.requestUpdate()}\n\t\t\t>\n\t\t\t\t<div style=${styleMap(contentStyle)}>\n\t\t\t\t\t${controller.getRenderedItems()}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t};\n\n\t// --- Handle the two overloaded function signatures ---\n\tif (renderItemOrUndefined === undefined) {\n\t\tif (\"renderItem\" in config) {\n\t\t\treturn renderVirtualizerTemplate(config.renderItem as any);\n\t\t} else {\n\t\t\treturn (renderItem: (item: T, index: number) => TemplateResult<1>) => {\n\t\t\t\treturn renderVirtualizerTemplate(renderItem);\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn renderVirtualizerTemplate(renderItemOrUndefined);\n\t}\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function LightboxContainer(props?: {\n\tfadeBg?: string;\n\tzIndex?: number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function LightboxContainer(\n\tprops?: { fadeBg?: string; zIndex?: number; on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function LightboxContainer(\n\tprops?: { fadeBg?: string; zIndex?: number; on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tLightboxContainer(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tLightboxContainer(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst bg = props?.fadeBg ?? \"rgba(0,0,0,0.7)\";\n\tconst z = props?.zIndex ?? 2000;\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: fixed;\n top: 0; left: 0; right: 0; bottom: 0;\n background: ${bg};\n z-index: ${z};\n display: flex;\n justify-content: center;\n align-items: center;\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function Column(props?: {\n\tspace?: string | number;\n\tcenter?: boolean;\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Column(\n\tprops?: {\n\t\tspace?: string | number;\n\t\tcenter?: boolean;\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Column(\n\tprops?: {\n\t\tspace?: string | number;\n\t\tcenter?: boolean;\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tconst binder = createEventBinder(props?.on ?? {});\n\tif (children === undefined) {\n\t\treturn (children) => Column(props, children ?? [html``]);\n\t}\n\treturn html`\n\t\t<div\n\t\t\t.class=\"${props?.className}\"\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: column;\n\t ${props?.center ? \"align-items: center;\" : \"\"}\n ${props?.space ? `gap: ${props.space};` : \"\"}\n ${props?.style ?? \"\"}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tTemp,\n\tWithHtml,\n} from \"../core\";\n\ninterface FlexProps {\n\tdirection?: \"row\" | \"column\";\n\tjustify?: string;\n\talign?: string;\n\tgap?: string | number;\n\ton?: OnEvent;\n}\n\nexport function Flex(props?: FlexProps): WithHtml<renderFnType>;\n\nexport function Flex(props?: FlexProps, children?: renderFnType): Temp;\n\nexport function Flex(\n\tprops?: FlexProps,\n\tchildren?: renderFnType\n): Temp | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children: renderFnType) => Flex(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tFlex(props, html(strings, ...values));\n\t\treturn _ as WithHtml<renderFnType>;\n\t}\n\tconst dir = props?.direction ?? \"row\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: ${dir};\n ${props?.justify ? `justify-content: ${props.justify};` : \"\"}\n ${props?.align ? `align-items: ${props.align};` : \"\"}\n ${props?.gap ? `gap: ${props.gap};` : \"\"}\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function FlowItem(props?: { on?: OnEvent }): WithHtml<renderFnType>;\nexport function FlowItem(\n\tprops?: { on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function FlowItem(\n\tprops?: { on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => FlowItem(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tFlowItem(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"break-inside: avoid; margin-bottom: 16px;\"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function Grid(props?: {\n\tcolumns?: number;\n\tgap?: string | number;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Grid(\n\tprops?: { columns?: number; gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Grid(\n\tprops?: { columns?: number; gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => Grid(props, children ?? [html``]);\n\t}\n\tconst cols = props?.columns ?? 1;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: grid;\n grid-template-columns: repeat(${cols}, 1fr);\n ${props?.gap ? `gap: ${props.gap};` : \"\"}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tTemp,\n\tWithHtml,\n} from \"../core\";\n\nexport function GridCol(props?: {\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function GridCol(\n\tprops?: { gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnType\n): Temp;\n\nexport function GridCol(\n\tprops?: { gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnType\n): Temp | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => GridCol(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tGridCol(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst now = getComponentCount(\"GridCol\");\n\tconst _className =\n\t\tgetRandomClassName(\"GridCol::grid-col\") + \"-lyco-now-\" + now;\n\tconst gapStyle = props?.gap ? `column-gap: ${props.gap};` : \"\";\n\tconst css = `\n .${_className} {\n display: grid;\n grid-auto-flow: column;\n ${gapStyle}\n }\n `;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"GridCol\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function GridItem(props?: {\n\tspan?: number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function GridItem(\n\tprops?: { span?: number; on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function GridItem(\n\tprops?: { span?: number; on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => GridItem(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tGridItem(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"${props?.span ? `grid-column: span ${props.span};` : \"\"}\"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tTemp,\n\tWithHtml,\n} from \"../core\";\n\nexport function GridRow(props?: {\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function GridRow(\n\tprops?: { gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnType\n): Temp;\n\nexport function GridRow(\n\tprops?: { gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnType\n): Temp | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => GridRow(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tGridRow(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst now = getComponentCount(\"GridRow\");\n\tconst _className =\n\t\tgetRandomClassName(\"GridRow::grid-row\") + \"-lyco-now-\" + now;\n\tconst gapStyle = props?.gap ? `row-gap: ${props.gap};` : \"\";\n\tconst css = `\n .${_className} {\n display: grid;\n grid-auto-flow: row;\n ${gapStyle}\n }\n `;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"GridRow\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function Row(props?: {\n\tspace?: string | number;\n\tcenter?: boolean;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Row(\n\tprops?: { space?: string | number; center?: boolean; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Row(\n\tprops?: { space?: string | number; center?: boolean; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) => Row(props, children ?? [html``]);\n\t}\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: row;\n\t\t${props?.center ? \"align-items: center;\" : \"\"}\n ${props?.space ? `gap: ${props.space};` : \"\"}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport interface WaterFlowProps {\n\tcolumnCount?: number;\n\tgap?: string | number;\n\ton?: OnEvent;\n}\n\nexport function WaterFlow(props?: WaterFlowProps): WithHtml<renderFnType>;\n\nexport function WaterFlow(\n\tprops?: WaterFlowProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function WaterFlow(\n\tprops?: WaterFlowProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\t// 如果只传了 props,不传 children,则返回一个接收 children 的函数\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tWaterFlow(props, children ?? html``) as TemplateResult<1>;\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tWaterFlow(props, html(strings, ...values)) as TemplateResult<1>;\n\t\treturn _;\n\t}\n\n\t// 解构 props,并设置默认值\n\tconst count = props?.columnCount ?? 3;\n\tconst gapValue = props?.gap ?? \"16px\";\n\tconst now = getComponentCount(\"WaterFlow\");\n\t// 生成一个随机 className,方便后续扩展样式或避免样式冲突\n\tconst _className =\n\t\tgetRandomClassName(\"WaterFlow::waterflow\") + `-lyco-now-${now}`;\n\n\tconst css = `\n\t/* 使用 CSS 类来控制多列布局 */\n\t.${_className} {\n\t\tcolumn-count: ${count};\n\t\tcolumn-gap: ${typeof gapValue === \"number\" ? `${gapValue}px` : gapValue};\n\t}\n\t/* 子元素如果是块级元素,需要让它们适应多列流式布局 */\n\t.${_className} > * {\n\t\tdisplay: inline-block;\n\t\twidth: 100%;\n\t}\n\t`;\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn LycoComponent(\n\t\t\"WaterFlow\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function ColumnSplit(props?: {\n\tfirstHeight?: string; // 第一个面板固定高度或百分比\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function ColumnSplit(\n\tprops?: {\n\t\tfirstHeight?: string; // 第个面板固定高度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function ColumnSplit(\n\tprops?: {\n\t\tfirstHeight?: string; // 第一个面板固定高度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tColumnSplit(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tColumnSplit(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst gap = props?.gap ?? \"0px\";\n\tconst firstH = props?.firstHeight ?? \"50%\";\n\n\tlet topNode = html``;\n\tlet bottomNode = html``;\n\n\tif (typeof children === \"function\") {\n\t\t// @ts-ignore\n\t\tconst arr = (children as any).call?.(null) ?? [];\n\t\ttopNode = arr[0] ?? html``;\n\t\tbottomNode = arr[1] ?? html``;\n\t} else {\n\t\ttopNode = renderFn(children) as any;\n\t}\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n gap: ${gap};\n \"\n\t\t>\n\t\t\t<div style=\"flex: 0 0 ${firstH}; overflow: auto;\">${topNode}</div>\n\t\t\t<div style=\"flex: 1 1 auto; overflow: auto;\">${bottomNode}</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function RowSplit(props?: {\n\tfirstWidth?: string; // 第一个面板固定宽度或百分比\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function RowSplit(\n\tprops?: {\n\t\tfirstWidth?: string; // 第一个面板固定宽度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function RowSplit(\n\tprops?: {\n\t\tfirstWidth?: string; // 第一个面板固定宽度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => RowSplit(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tRowSplit(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst gap = props?.gap ?? \"0px\";\n\tconst firstW = props?.firstWidth ?? \"50%\";\n\n\tlet leftNode = html``;\n\tlet rightNode = html``;\n\n\tif (typeof children === \"function\") {\n\t\t// @ts-ignore\n\t\tconst arr = (children as any).call?.(null) ?? [];\n\t\tleftNode = arr[0] ?? html``;\n\t\trightNode = arr[1] ?? html``;\n\t} else {\n\t\tleftNode = renderFn(children) as any;\n\t}\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: row;\n width: 100%;\n height: 100%;\n gap: ${gap};\n \"\n\t\t>\n\t\t\t<div style=\"flex: 0 0 ${firstW}; overflow: auto;\">${leftNode}</div>\n\t\t\t<div style=\"flex: 1 1 auto; overflow: auto;\">${rightNode}</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function ScrollBar(props?: {\n\tdirection?: \"vertical\" | \"horizontal\";\n\theight?: string;\n\twidth?: string;\n\tcustomCss?: string;\n\tclassName?: string;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function ScrollBar(\n\tprops?: {\n\t\tdirection?: \"vertical\" | \"horizontal\";\n\t\theight?: string;\n\t\twidth?: string;\n\t\tcustomCss?: string;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function ScrollBar(\n\tprops?: {\n\t\tdirection?: \"vertical\" | \"horizontal\";\n\t\theight?: string;\n\t\twidth?: string;\n\t\tcustomCss?: string;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => ScrollBar(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tScrollBar(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst dir = props?.direction ?? \"vertical\";\n\tconst h = props?.height ?? \"100%\";\n\tconst w = props?.width ?? \"100%\";\n\tconst extraCss = props?.customCss ?? \"\";\n\tconst now = getComponentCount(\"ScrollBar\");\n\tconst _className =\n\t\tprops?.className ??\n\t\tgetRandomClassName(\"ScrollBar::scrollbar-container\") + \"-lyco-now-\" + now;\n\tconst overflowStyle =\n\t\tdir === \"horizontal\"\n\t\t\t? \"overflow-x: auto; overflow-y: hidden\"\n\t\t\t: \"overflow-y: auto; overflow-x: hidden\";\n\n\tconst css = `\n\t.${_className} {\n\t ${overflowStyle};\n\t width: ${w};\n\t height: ${h};\n\t}\n\t.${_className}::-webkit-scrollbar {\n\t width: 8px;\n\t height: 8px;\n\t}\n\t.${_className}::-webkit-scrollbar-thumb {\n\t background-color: rgba(0, 0, 0, 0.2);\n\t border-radius: 4px;\n\t}\n\t.${_className}::-webkit-scrollbar-track {\n\t background: rgba(0, 0, 0, 0.05);\n\t}\n\t${extraCss}\n\t`;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"ScrollBar\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function SideBarContainer(props?: {\n\tsidebarWidth?: string; // 侧边栏宽度,比如 \"240px\"\n\tsidebarPosition?: \"left\" | \"right\";\n\tgap?: string | number;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function SideBarContainer(\n\tprops?: {\n\t\tsidebarWidth?: string; // 侧边栏宽度,比如 \"240px\"\n\t\tsidebarPosition?: \"left\" | \"right\";\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function SideBarContainer(\n\tprops?: {\n\t\tsidebarWidth?: string; // 侧边栏宽度,比如 \"240px\"\n\t\tsidebarPosition?: \"left\" | \"right\";\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) =>\n\t\t\tSideBarContainer(props, children ?? [html``]);\n\t}\n\tconst width = props?.sidebarWidth ?? \"240px\";\n\tconst pos = props?.sidebarPosition ?? \"left\";\n\tconst gap = props?.gap ?? \"0px\";\n\n\tlet sidebarContent = html``;\n\tlet mainContent = html``;\n\n\tif (typeof children === \"function\") {\n\t\t// @ts-ignore\n\t\tconst arr = (children as any).call?.(null) ?? [];\n\t\tsidebarContent = arr[0] ?? html``;\n\t\tmainContent = arr[1] ?? html``;\n\t} else {\n\t\tmainContent = renderFnOrArray(children) as any;\n\t}\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: ${pos === \"left\" ? \"row\" : \"row-reverse\"};\n width: 100%;\n height: 100%;\n gap: ${gap};\n \"\n\t\t>\n\t\t\t<div style=\"flex: 0 0 ${width}; overflow: auto;\">${sidebarContent}</div>\n\t\t\t<div style=\"flex: 1 1 auto; overflow: auto;\">${mainContent}</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\n\ntype ScrollDirection = \"x\" | \"y\" | \"both\";\ntype ScrollBehavior = \"auto\" | \"smooth\";\ntype Alignment = \"start\" | \"center\" | \"end\" | \"none\";\ntype NavigationButtonPosition = \"inside\" | \"outside\" | \"none\";\ntype PaginationType = \"dots\" | \"bullets\" | \"fraction\" | \"progressbar\" | \"none\";\n\nexport interface SwiperProps {\n\tgap?: string | number;\n\tsnapType?: \"mandatory\" | \"proximity\";\n\theight?: string;\n\twidth?: string;\n\tclassName?: string;\n\tdirection?: ScrollDirection;\n\tscrollBehavior?: ScrollBehavior;\n\talign?: Alignment;\n\tshowNavigation?: boolean;\n\tnavigationPosition?: NavigationButtonPosition;\n\tshowPagination?: boolean;\n\tpaginationType?: PaginationType;\n\tautoPlay?: boolean;\n\tinterval?: number;\n\tloop?: boolean;\n\ttouchEnabled?: boolean;\n\tmouseWheel?: boolean;\n\tonSlideChange?: (index: number) => void;\n\ton?: OnEvent;\n}\n\n// 支持柯里化调用\nexport function Swiper(\n\tprops?: SwiperProps\n): (\n\tslides?: TemplateResult<1>[] | (() => TemplateResult<1>[])\n) => TemplateResult<1>;\n\nexport function Swiper(\n\tprops?: SwiperProps,\n\tslides?: TemplateResult<1>[] | (() => TemplateResult<1>[])\n): TemplateResult<1>;\n\nexport function Swiper(\n\tprops: SwiperProps = {},\n\tslides?: TemplateResult<1>[] | (() => TemplateResult<1>[])\n):\n\t| ((\n\t\t\tslides?: TemplateResult<1>[] | (() => TemplateResult<1>[])\n\t ) => TemplateResult<1>)\n\t| TemplateResult {\n\t// 如果没有传 slides,就返回一个“部分应用”的函数\n\tif (slides === undefined) {\n\t\treturn (slides?: TemplateResult<1>[] | (() => TemplateResult<1>[])) =>\n\t\t\tSwiper(props, slides ?? [html``]);\n\t}\n\n\tconst now = getComponentCount(\"Swiper\");\n\t// 解构 props,并设置默认值\n\tconst {\n\t\tgap = \"8px\",\n\t\tsnapType = \"mandatory\",\n\t\theight = \"auto\",\n\t\twidth = \"100%\",\n\t\tclassName = getRandomClassName(\"Swiper::swiper\") + `-lyco-now-${now}`,\n\t\tdirection = \"x\",\n\t\tscrollBehavior = \"smooth\",\n\t\talign = \"start\",\n\t\tshowNavigation = true,\n\t\tnavigationPosition = \"inside\",\n\t\tshowPagination = true,\n\t\tpaginationType = \"dots\",\n\t\tautoPlay = false,\n\t\tinterval = 3000,\n\t\tloop = false,\n\t\ttouchEnabled = true,\n\t\tmouseWheel = false,\n\t\tonSlideChange,\n\t\ton,\n\t} = props;\n\n\tconst _className = className;\n\tconst _containerClassName = _className + \"-container\";\n\tconst _slideClassName = _className + \"-slide\";\n\tconst _navigationClassName = _className + \"-navigation\";\n\tconst _paginationClassName = _className + \"-pagination\";\n\n\t// 将 slides 规范成数组\n\tlet _slides: TemplateResult<1>[];\n\tif (!slides) _slides = [];\n\telse if (typeof slides === \"function\") _slides = slides();\n\telse _slides = slides;\n\n\tconst slideCount = _slides.length;\n\n\t// 内部状态:当前索引\n\tconst [currentSlide, setCurrentSlide] = (() => {\n\t\tconst state = { value: 0 };\n\t\treturn [\n\t\t\t() => state.value,\n\t\t\t(index: number) => {\n\t\t\t\tconst newIndex = Math.max(0, Math.min(index, slideCount - 1));\n\t\t\t\tif (state.value !== newIndex) {\n\t\t\t\t\tstate.value = newIndex;\n\t\t\t\t\tonSlideChange?.(newIndex);\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t})();\n\n\t// 滚动到指定 slide\n\tconst scrollToSlide = (index: number) => {\n\t\tconst container =\n\t\t\ttypeof document !== \"undefined\"\n\t\t\t\t? (document.querySelector(\n\t\t\t\t\t\t`.${_containerClassName}`\n\t\t\t\t ) as HTMLElement | null)\n\t\t\t\t: null;\n\t\tif (!container) return;\n\n\t\tconst slides = container.querySelectorAll(`.${_slideClassName}`);\n\t\tif (index < 0 || index >= slides.length) return;\n\n\t\tconst slide = slides[index] as HTMLElement;\n\t\tconst slideRect = slide.getBoundingClientRect();\n\t\tconst containerRect = container.getBoundingClientRect();\n\n\t\tlet scrollOffset: number;\n\t\tif (direction === \"x\") {\n\t\t\tscrollOffset = slide.offsetLeft - container.offsetLeft;\n\t\t\tif (align === \"center\") {\n\t\t\t\tscrollOffset -= (containerRect.width - slideRect.width) / 2;\n\t\t\t} else if (align === \"end\") {\n\t\t\t\tscrollOffset -= containerRect.width - slideRect.width;\n\t\t\t}\n\t\t\tcontainer.scrollTo({ left: scrollOffset, behavior: scrollBehavior });\n\t\t} else {\n\t\t\tscrollOffset = slide.offsetTop - container.offsetTop;\n\t\t\tif (align === \"center\") {\n\t\t\t\tscrollOffset -= (containerRect.height - slideRect.height) / 2;\n\t\t\t} else if (align === \"end\") {\n\t\t\t\tscrollOffset -= containerRect.height - slideRect.height;\n\t\t\t}\n\t\t\tcontainer.scrollTo({ top: scrollOffset, behavior: scrollBehavior });\n\t\t}\n\n\t\tsetCurrentSlide(index);\n\t};\n\n\t// 下一页/上一页\n\tconst nextSlide = () => {\n\t\tconst nextIndex =\n\t\t\tcurrentSlide() + 1 >= slideCount\n\t\t\t\t? loop\n\t\t\t\t\t? 0\n\t\t\t\t\t: currentSlide()\n\t\t\t\t: currentSlide() + 1;\n\t\tscrollToSlide(nextIndex);\n\t};\n\tconst prevSlide = () => {\n\t\tconst prevIndex =\n\t\t\tcurrentSlide() - 1 < 0\n\t\t\t\t? loop\n\t\t\t\t\t? slideCount - 1\n\t\t\t\t\t: currentSlide()\n\t\t\t\t: currentSlide() - 1;\n\t\tscrollToSlide(prevIndex);\n\t};\n\n\t// 监听滚动:找出最接近中心的 slide\n\tconst handleScroll = () => {\n\t\tconst container =\n\t\t\ttypeof document !== \"undefined\"\n\t\t\t\t? (document.querySelector(\n\t\t\t\t\t\t`.${_containerClassName}`\n\t\t\t\t ) as HTMLElement | null)\n\t\t\t\t: null;\n\t\tif (!container) return;\n\n\t\tconst slides = container.querySelectorAll(`.${_slideClassName}`);\n\t\tlet closestIndex = 0;\n\t\tlet minDistance = Infinity;\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst slideRect = slide.getBoundingClientRect();\n\t\t\tconst containerRect = container.getBoundingClientRect();\n\n\t\t\tlet distance: number;\n\t\t\tif (direction === \"x\") {\n\t\t\t\tconst centerOffset =\n\t\t\t\t\tslideRect.left +\n\t\t\t\t\tslideRect.width / 2 -\n\t\t\t\t\t(containerRect.left + containerRect.width / 2);\n\t\t\t\tdistance = Math.abs(centerOffset);\n\t\t\t} else {\n\t\t\t\tconst centerOffset =\n\t\t\t\t\tslideRect.top +\n\t\t\t\t\tslideRect.height / 2 -\n\t\t\t\t\t(containerRect.top + containerRect.height / 2);\n\t\t\t\tdistance = Math.abs(centerOffset);\n\t\t\t}\n\n\t\t\tif (distance < minDistance) {\n\t\t\t\tminDistance = distance;\n\t\t\t\tclosestIndex = index;\n\t\t\t}\n\t\t});\n\n\t\tsetCurrentSlide(closestIndex);\n\t};\n\n\t// Touch 事件\n\tconst handleTouchStart = (e: TouchEvent) => {\n\t\tif (!touchEnabled) return;\n\t\tconst touch = e.touches[0];\n\t\tconst container = e.currentTarget as HTMLElement;\n\t\tcontainer.dataset.touchStartX = touch.clientX.toString();\n\t\tcontainer.dataset.touchStartY = touch.clientY.toString();\n\t};\n\n\tconst handleTouchMove = (e: TouchEvent) => {\n\t\tif (!touchEnabled) return;\n\t\tconst touch = e.touches[0];\n\t\tconst container = e.currentTarget as HTMLElement;\n\t\tconst startX = parseFloat(container.dataset.touchStartX || \"0\");\n\t\tconst startY = parseFloat(container.dataset.touchStartY || \"0\");\n\t\tconst diffX = touch.clientX - startX;\n\t\tconst diffY = touch.clientY - startY;\n\n\t\tif (Math.abs(diffX) > Math.abs(diffY) || direction === \"x\") {\n\t\t\te.preventDefault();\n\t\t}\n\t};\n\n\tconst handleTouchEnd = (e: TouchEvent) => {\n\t\tif (!touchEnabled) return;\n\t\tconst container = e.currentTarget as HTMLElement;\n\t\tconst startX = parseFloat(container.dataset.touchStartX || \"0\");\n\t\tconst startY = parseFloat(container.dataset.touchStartY || \"0\");\n\t\tif (!startX && !startY) return;\n\n\t\tconst touch = e.changedTouches[0];\n\t\tconst diffX = touch.clientX - startX;\n\t\tconst diffY = touch.clientY - startY;\n\n\t\tconst isSwipe = Math.max(Math.abs(diffX), Math.abs(diffY)) > 30;\n\t\tif (isSwipe) {\n\t\t\tif (direction === \"x\") {\n\t\t\t\tdiffX > 0 ? prevSlide() : nextSlide();\n\t\t\t} else {\n\t\t\t\tdiffY > 0 ? prevSlide() : nextSlide();\n\t\t\t}\n\t\t}\n\n\t\tdelete container.dataset.touchStartX;\n\t\tdelete container.dataset.touchStartY;\n\t};\n\n\t// 鼠标滚轮\n\tconst handleWheel = (e: WheelEvent) => {\n\t\tif (!mouseWheel) return;\n\t\te.preventDefault();\n\t\te.deltaY > 0 ? nextSlide() : prevSlide();\n\t};\n\n\t// 自动播放\n\tconst setupAutoPlay = (container: HTMLElement | null) => {\n\t\tif (!autoPlay || !container) return;\n\n\t\tlet autoplayInterval: ReturnType<typeof setInterval>;\n\n\t\tconst startAutoPlay = () => {\n\t\t\tautoplayInterval = setInterval(nextSlide, interval);\n\t\t};\n\t\tconst stopAutoPlay = () => {\n\t\t\tclearInterval(autoplayInterval);\n\t\t};\n\n\t\tcontainer.addEventListener(\"mouseenter\", stopAutoPlay);\n\t\tcontainer.addEventListener(\"mouseleave\", startAutoPlay);\n\n\t\tstartAutoPlay();\n\n\t\treturn () => {\n\t\t\tclearInterval(autoplayInterval);\n\t\t\tcontainer.removeEventListener(\"mouseenter\", stopAutoPlay);\n\t\t\tcontainer.removeEventListener(\"mouseleave\", startAutoPlay);\n\t\t};\n\t};\n\n\t// 只在客户端执行副作用:绑定各类事件、启动自动播放、初始化滚动\n\tconst runSideEffects = () => {\n\t\tconst container =\n\t\t\ttypeof document !== \"undefined\"\n\t\t\t\t? (document.querySelector(\n\t\t\t\t\t\t`.${_containerClassName}`\n\t\t\t\t ) as HTMLElement | null)\n\t\t\t\t: null;\n\t\tif (!container) return;\n\n\t\tconst cleanupFns: (() => void)[] = [];\n\n\t\tcontainer.addEventListener(\"scroll\", handleScroll);\n\t\tcleanupFns.push(() =>\n\t\t\tcontainer.removeEventListener(\"scroll\", handleScroll)\n\t\t);\n\n\t\tif (touchEnabled) {\n\t\t\tcontainer.addEventListener(\"touchstart\", handleTouchStart);\n\t\t\tcontainer.addEventListener(\"touchmove\", handleTouchMove, {\n\t\t\t\tpassive: false,\n\t\t\t});\n\t\t\tcontainer.addEventListener(\"touchend\", handleTouchEnd);\n\t\t\tcleanupFns.push(() =>\n\t\t\t\tcontainer.removeEventListener(\"touchstart\", handleTouchStart)\n\t\t\t);\n\t\t\tcleanupFns.push(() =>\n\t\t\t\tcontainer.removeEventListener(\"touchmove\", handleTouchMove)\n\t\t\t);\n\t\t\tcleanupFns.push(() =>\n\t\t\t\tcontainer.removeEventListener(\"touchend\", handleTouchEnd)\n\t\t\t);\n\t\t}\n\n\t\tif (mouseWheel) {\n\t\t\tcontainer.addEventListener(\"wheel\", handleWheel, { passive: false });\n\t\t\tcleanupFns.push(() =>\n\t\t\t\tcontainer.removeEventListener(\"wheel\", handleWheel)\n\t\t\t);\n\t\t}\n\n\t\tconst cleanupAutoPlay = setupAutoPlay(container);\n\t\tif (cleanupAutoPlay) cleanupFns.push(cleanupAutoPlay);\n\n\t\tscrollToSlide(0);\n\n\t\t// 如果你想在未来某个时机清理所有事件,可以调用:\n\t\t// cleanupFns.forEach(fn => fn());\n\t\treturn () => cleanupFns.forEach((fn) => fn());\n\t};\n\n\t// **SSR 优化**:只有在浏览器环境下才调度 runSideEffects\n\tif (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n\t\tsetTimeout(runSideEffects, 0);\n\t}\n\n\t// 生成分页 dots\n\tconst paginationDots = html`\n\t\t<div class=\"${_paginationClassName}\">\n\t\t\t${Array.from(\n\t\t\t\t{ length: slideCount },\n\t\t\t\t(_, i) => html`\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"${i === currentSlide() ? \"active\" : \"\"}\"\n\t\t\t\t\t\t@click=${() => scrollToSlide(i)}\n\t\t\t\t\t></button>\n\t\t\t\t`\n\t\t\t)}\n\t\t</div>\n\t`;\n\n\t// 生成分页 fraction\n\tconst paginationFraction = html`\n\t\t<div class=\"${_paginationClassName} fraction\">\n\t\t\t<span class=\"current\">${currentSlide() + 1}</span>\n\t\t\t<span class=\"separator\">/</span>\n\t\t\t<span class=\"total\">${slideCount}</span>\n\t\t</div>\n\t`;\n\n\t// 生成分页 progressbar\n\tconst paginationProgress = html`\n\t\t<div class=\"${_paginationClassName} progressbar\">\n\t\t\t<div\n\t\t\t\tclass=\"progress\"\n\t\t\t\tstyle=\"width: ${slideCount > 1\n\t\t\t\t\t? (currentSlide() / (slideCount - 1)) * 100\n\t\t\t\t\t: 0}%\"\n\t\t\t></div>\n\t\t</div>\n\t`;\n\n\t// 生成导航按钮\n\tconst navigationButtons = html`\n\t\t<div class=\"${_navigationClassName}\">\n\t\t\t<button class=\"prev\" @click=${prevSlide}>◀</button>\n\t\t\t<button class=\"next\" @click=${nextSlide}>▶</button>\n\t\t</div>\n\t`;\n\tconst css = `\n\t.${_className} {\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\twidth: ${width};\n\t\theight: ${height};\n\t}\n\n\t.${_containerClassName} {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow: auto;\n\t\tscroll-snap-type: ${direction + \" \" + snapType};\n\t\t-webkit-overflow-scrolling: touch;\n\t\tscroll-behavior: ${scrollBehavior};\n\t\tgap: ${gap};\n\t\tdisplay: flex;\n\t\tflex-direction: ${direction === \"x\" ? \"row\" : \"column\"};\n\t}\n\n\t.${_slideClassName} {\n\t\tscroll-snap-align: ${align};\n\t\tflex-shrink: 0;\n\t}\n\n\t.${_navigationClassName} {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 0;\n\t\tright: 0;\n\t\ttransform: translateY(-50%);\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpointer-events: none;\n\t\tpadding: ${navigationPosition === \"outside\" ? \"0 1rem\" : \"0 0.5rem\"};\n\t}\n\n\t.${_navigationClassName} button {\n\t\twidth: 2.5rem;\n\t\theight: 2.5rem;\n\t\tborder-radius: 50%;\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\tcolor: white;\n\t\tborder: none;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tcursor: pointer;\n\t\tpointer-events: auto;\n\t\ttransition: background-color 0.3s;\n\t}\n\n\t.${_navigationClassName} button:hover {\n\t\tbackground-color: rgba(0, 0, 0, 0.8);\n\t}\n\n\t.${_paginationClassName} {\n\t\tposition: absolute;\n\t\tbottom: 1rem;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0.5rem;\n\t\talign-items: center;\n\t}\n\t.${_paginationClassName} button {\n\t\twidth: 0.75rem;\n\t\theight: 0.75rem;\n\t\tborder-radius: 50%;\n\t\tbackground-color: rgba(255, 255, 255, 0.5);\n\t\tborder: none;\n\t\tcursor: pointer;\n\t\ttransition: background-color 0.3s, transform 0.3s;\n\t}\n\t.${_paginationClassName} button.active {\n\t\tbackground-color: white;\n\t\ttransform: scale(1.2);\n\t}\n\n\t.${_paginationClassName}.fraction {\n\t\tposition: absolute;\n\t\tbottom: 1rem;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tcolor: white;\n\t\tfont-size: 1rem;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 0.25rem;\n\t}\n\n\t.${_paginationClassName}.progressbar {\n\t\tposition: absolute;\n\t\tbottom: 0.5rem;\n\t\tleft: 0;\n\t\tright: 0;\n\t\theight: 0.25rem;\n\t\tbackground-color: rgba(255, 255, 255, 0.2);\n\t}\n\t.${_paginationClassName}.progressbar .progress {\n\t\theight: 100%;\n\t\tbackground-color: white;\n\t\ttransition: width 0.3s;\n\t}\n\t`;\n\n\tconst binder = createEventBinder(on ?? {});\n\n\t// 最终返回的模板\n\treturn LycoComponent(\n\t\t\"Swiper\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t<div class=\"${_containerClassName}\">\n\t\t\t\t\t${_slides.map(\n\t\t\t\t\t\t(slide, index) => html`\n\t\t\t\t\t\t\t<div class=\"${_slideClassName} --slide-${index}\" key=${index}>\n\t\t\t\t\t\t\t\t${slide}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t${showNavigation ? navigationButtons : null}\n\t\t\t\t${showPagination && paginationType === \"dots\" ? paginationDots : null}\n\t\t\t\t${showPagination && paginationType === \"fraction\"\n\t\t\t\t\t? paginationFraction\n\t\t\t\t\t: null}\n\t\t\t\t${showPagination && paginationType === \"progressbar\"\n\t\t\t\t\t? paginationProgress\n\t\t\t\t\t: null}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","export const MD3 = {\n\t// 圆角设置\n\tborderRadius: {\n\t\tsmall: \"4px\",\n\t\tmedium: \"8px\",\n\t\tlarge: \"16px\",\n\t\tfull: \"9999px\",\n\t},\n\n\t// 阴影层级\n\televation: {\n\t\tlevel1: \"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.14)\",\n\t\tlevel2: \"0 3px 6px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.12)\",\n\t\tlevel3: \"0 10px 20px rgba(0,0,0,0.15), 0 3px 6px rgba(0,0,0,0.10)\",\n\t\tlevel4: \"0 15px 25px rgba(0,0,0,0.15), 0 5px 10px rgba(0,0,0,0.05)\",\n\t\tlevel5: \"0 20px 40px rgba(0,0,0,0.2)\",\n\t},\n\n\t// 动画过渡\n\tanimation: {\n\t\tstandard: \"0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n\t\temphasized: \"0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\n\t\tdecelerated: \"0.4s cubic-bezier(0, 0, 0.2, 1)\",\n\t},\n\n\t// 调色板\n\tcolors: {\n\t\tprimary: \"#6750A4\",\n\t\tonPrimary: \"#FFFFFF\",\n\t\tprimaryContainer: \"#EADDFF\",\n\t\tonPrimaryContainer: \"#21005E\",\n\n\t\tsecondary: \"#625B71\",\n\t\tonSecondary: \"#FFFFFF\",\n\t\tsecondaryContainer: \"#E8DEF8\",\n\t\tonSecondaryContainer: \"#1E192B\",\n\n\t\tsurface: \"#FEF7FF\",\n\t\tonSurface: \"#1C1B1F\",\n\t\tsurfaceVariant: \"#E7E0EB\",\n\t\tonSurfaceVariant: \"#49454E\",\n\n\t\terror: \"#B00020\",\n\t},\n} as const;\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\nimport { MD3 } from \"../theme/md3\";\n\nexport interface SwitchInputProps {\n\tchecked?: boolean;\n\tdisabled?: boolean;\n\tsize?: \"small\" | \"medium\" | \"large\";\n\tcolor?: string;\n\tonChange?: (checked: boolean) => void;\n\tclassName?: string;\n\ton?: OnEvent;\n}\n\nexport function SwitchInput(props?: SwitchInputProps): TemplateResult<1> {\n\tconst {\n\t\tchecked = false,\n\t\tdisabled = false,\n\t\tsize = \"medium\",\n\t\tcolor = MD3.colors.primary,\n\t\tonChange,\n\t\tclassName = \"\",\n\t\ton = {},\n\t} = props ?? {};\n\n\tconst now = getComponentCount(\"SwitchInput\");\n\tconst _className =\n\t\tgetRandomClassName(\"SwitchInput::switch\") + `-lyco-now-${now}`;\n\n\t// 计算尺寸\n\tconst sizeMap = {\n\t\tsmall: { width: 32, height: 16, thumbSize: 12 },\n\t\tmedium: { width: 44, height: 24, thumbSize: 18 },\n\t\tlarge: { width: 56, height: 32, thumbSize: 24 },\n\t};\n\tconst { width, height, thumbSize } = sizeMap[size];\n\n\tconst css = `\n .${_className} {\n display: inline-block;\n position: relative;\n width: ${width}px;\n height: ${height}px;\n cursor: ${disabled ? \"not-allowed\" : \"pointer\"};\n }\n\n .${_className} input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n\n .${_className} .slider {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${\n\t\t\t\tdisabled ? MD3.colors.surfaceVariant : MD3.colors.onSurfaceVariant\n\t\t\t};\n transition: ${MD3.animation.standard};\n border-radius: ${height}px;\n opacity: ${disabled ? 0.38 : 0.5};\n }\n\n .${_className} .slider:before {\n position: absolute;\n content: \"\";\n height: ${thumbSize}px;\n width: ${thumbSize}px;\n left: ${(height - thumbSize) / 2}px;\n bottom: ${(height - thumbSize) / 2}px;\n background-color: ${MD3.colors.surface};\n transition: ${MD3.animation.emphasized};\n border-radius: 50%;\n box-shadow: ${MD3.elevation.level1};\n }\n\n .${_className} input:checked + .slider {\n background-color: ${disabled ? MD3.colors.surfaceVariant : color};\n opacity: ${disabled ? 0.38 : 1};\n }\n\n .${_className} input:checked + .slider:before {\n transform: translateX(${width - height}px);\n background-color: ${MD3.colors.onPrimary};\n }\n\n .${_className}:hover .slider:before {\n box-shadow: ${disabled ? MD3.elevation.level1 : MD3.elevation.level2};\n }\n\n .${_className}:active .slider:before {\n box-shadow: ${disabled ? MD3.elevation.level1 : MD3.elevation.level3};\n width: ${thumbSize * 1.2}px;\n }\n `;\n\n\tconst binder = createEventBinder(on);\n\n\treturn LycoComponent(\n\t\t\"SwitchInput\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<label\n\t\t\t\tclass=\"${_className} ${className}\"\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t?checked=${checked}\n\t\t\t\t\t?disabled=${disabled}\n\t\t\t\t\t@change=${(e: Event) => {\n\t\t\t\t\t\tif (!disabled && onChange) {\n\t\t\t\t\t\t\tonChange((e.target as HTMLInputElement).checked);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<span class=\"slider\"></span>\n\t\t\t</label>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnOrCurry,\n\trenderFnType,\n} from \"../core\";\n\ntype AbsoluteBoxProps = {\n\ttop?: string;\n\tright?: string;\n\tbottom?: string;\n\tleft?: string;\n\twidth?: string;\n\theight?: string;\n\tzIndex?: number;\n\tstyle?: string;\n\tclassName?: string;\n\ton?: OnEvent;\n};\n\nexport function AbsoluteBox(\n\tprops?: AbsoluteBoxProps\n): (children?: renderFnType) => TemplateResult<1>;\n\nexport function AbsoluteBox(\n\tprops?: AbsoluteBoxProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function AbsoluteBox(props?: AbsoluteBoxProps, children?: renderFnType) {\n\tconst t = props?.top ? `top: ${props.top};` : \"\";\n\tconst r = props?.right ? `right: ${props.right};` : \"\";\n\tconst b = props?.bottom ? `bottom: ${props.bottom};` : \"\";\n\tconst l = props?.left ? `left: ${props.left};` : \"\";\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst z =\n\t\ttypeof props?.zIndex === \"number\" ? `z-index: ${props.zIndex};` : \"\";\n\tconst style = props?.style ? props.style : \"\";\n\tconst className = props?.className ? props.className : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst render = (children?: renderFnType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${className}\"\n\t\t\t\tstyle=\"\n position: absolute;\n ${t} ${r} ${b} ${l}\n ${w} ${h}\n ${z}\n\t ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`;\n\t};\n\treturn renderFnOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface AcrylicBarProps {\n\twidth?: string; // 宽度,如 \"300px\" 或 \"50%\"\n\theight?: string; // 高度,如 \"auto\" 或 \"200px\"\n\ttop?: string; // 距离顶部距离,默认 \"20%\"\n\tbottom?: string; // 距离底部距离,默认 \"auto\"\n\tleft?: string; // 距离左侧距离,默认 \"50%\"\n\tright?: string; // 距离右侧距离,默认 \"auto\"\n\tbackground?: string; // 背景色,支持透明度,默认 \"rgba(255,255,255,0.3)\"\n\tblur?: string; // 模糊半径,默认 \"10px\"\n\tborderRadius?: string; // 圆角,默认 \"12px\"\n\tpadding?: string; // 内边距,默认 \"16px\"\n\tzIndex?: number; // z-index,默认 1000\n\ton?: OnEvent;\n}\n\nexport function AcrylicBar(\n\tprops?: AcrylicBarProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function AcrylicBar(\n\tprops?: AcrylicBarProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function AcrylicBar(\n\tprops?: AcrylicBarProps,\n\tchildren?: renderFnOrArrayType\n) {\n\tconst w = props?.width ?? \"300px\";\n\tconst h = props?.height ?? \"auto\";\n\tconst top = props?.top ?? \"20%\";\n\tconst bottom = props?.bottom ?? \"auto\";\n\tconst left = props?.left ?? \"50%\";\n\tconst right = props?.right ?? \"auto\";\n\t// 如果 left 被设置为非 \"auto\",则让组件水平居中\n\tconst translateX = left !== \"auto\" ? \"transform: translateX(-50%);\" : \"\";\n\tconst bg = props?.background ?? \"rgba(255, 255, 255, 0.3)\";\n\tconst blur = props?.blur ?? \"10px\";\n\tconst br = props?.borderRadius ?? \"12px\";\n\tconst pd = props?.padding ?? \"16px\";\n\tconst z = props?.zIndex ?? 1000;\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst render = (children: TemplateResult) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tstyle=\"\n position: fixed;\n top: ${top};\n bottom: ${bottom};\n left: ${left};\n right: ${right};\n ${translateX}\n width: ${w};\n height: ${h};\n background: ${bg};\n backdrop-filter: blur(${blur});\n -webkit-backdrop-filter: blur(${blur});\n border-radius: ${br};\n padding: ${pd};\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);\n z-index: ${z};\n display: flex;\n flex-direction: column;\n \"\n\t\t\t>\n\t\t\t\t${children}\n\t\t\t</div>\n\t\t`;\n\t};\n\treturn renderFnOrArrayOrCurry(children, undefined, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface AspectRatioProps {\n\tratio: number; // 宽高比,例如 16/9、4/3\n\tmaxWidth?: string;\n\tbackground?: string;\n\toverflow?: string;\n\ton?: OnEvent;\n}\n\nexport function AspectRatio(\n\tprops: AspectRatioProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function AspectRatio(\n\tprops: AspectRatioProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function AspectRatio(\n\tprops: AspectRatioProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => AspectRatio(props, children ?? [html``]);\n\t}\n\tconst paddingTop = `${100 / props.ratio}%`;\n\tconst mw = props.maxWidth ? `max-width: ${props.maxWidth};` : \"\";\n\tconst bg = props.background ? `background: ${props.background};` : \"\";\n\tconst ov = props.overflow ?? \"hidden\";\n\tconst binder = createEventBinder(props.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: relative;\n width: 100%;\n ${mw}\n ${bg}\n overflow: ${ov};\n \"\n\t\t>\n\t\t\t<div style=\"width: 100%; padding-top: ${paddingTop};\"></div>\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n \"\n\t\t\t>\n\t\t\t\t${renderFnOrArray(children)}\n\t\t\t</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function AutoFitGrid(props: {\n\tminItemWidth: string;\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function AutoFitGrid(\n\tprops: {\n\t\tminItemWidth: string;\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function AutoFitGrid(\n\tprops: {\n\t\tminItemWidth: string;\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => AutoFitGrid(props, children);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tAutoFitGrid(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst now = getComponentCount(\"AutoFitGrid\");\n\tconst _className =\n\t\tgetRandomClassName(\"AutoFitGrid::auto-fit-grid\") + \"-lyco-now-\" + now; // 生成随机类名\n\tconst gap = props?.gap ?? \"16px\";\n\tconst css = `\n .${_className} {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(${props.minItemWidth}, 1fr));\n gap: ${gap};\n }\n `;\n\tconst binder = createEventBinder(props.on ?? {});\n\treturn LycoComponent(\n\t\t\"AutoFitGrid\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\tclass=\"${_className}\"\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function AvatarStack(props?: {\n\tsize?: string;\n\toverlap?: string;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function AvatarStack(\n\tprops?: { size?: string; overlap?: string; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function AvatarStack(\n\tprops?: { size?: string; overlap?: string; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) =>\n\t\t\tAvatarStack(props, children ?? [html``]);\n\t}\n\tconst sz = props?.size ?? \"32px\";\n\tconst ov = props?.overlap ?? \"-8px\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst injectBox = (avatar: TemplateResult, idx?: number) => html`\n\t\t<div\n\t\t\tstyle=\"\n width: ${sz};\n height: ${sz};\n border-radius: 50%;\n overflow: hidden;\n border: 2px solid #fff;\n margin-left: ${idx === 0 ? \"0\" : ov};\n box-sizing: content-box;\n \"\n\t\t>\n\t\t\t${avatar}\n\t\t</div>\n\t`;\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"display: flex; align-items: center;\"\n\t\t>\n\t\t\t${renderFnOrArray(children, injectBox)}\n\t\t</div>\n\t`;\n}\n","// Badge.ts\nimport { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\ninterface BadgeProps {\n\tcontent?: string | number;\n\tposition?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n\tsize?: string;\n\tbackground?: string;\n\tcolor?: string;\n\ton?: OnEvent;\n}\n\nexport function Badge(props?: BadgeProps): WithHtml<renderFnType>;\n\nexport function Badge(\n\tprops?: BadgeProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function Badge(\n\tprops?: BadgeProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Badge(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tBadge(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst pos = props?.position ?? \"top-right\";\n\tconst size = props?.size ?? \"16px\";\n\tconst bg = props?.background ?? \"red\";\n\tconst col = props?.color ?? \"#fff\";\n\t// 计算定位\n\tconst [top, right, bottom, left] = [\n\t\tpos.includes(\"top\") ? \"0\" : \"auto\",\n\t\tpos.includes(\"right\") ? \"0\" : \"auto\",\n\t\tpos.includes(\"bottom\") ? \"0\" : \"auto\",\n\t\tpos.includes(\"left\") ? \"0\" : \"auto\",\n\t];\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div style=\"position: relative; display: inline-block;\">\n\t\t\t${renderFn(children)}\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tstyle=\"\n position: absolute;\n top: ${top};\n right: ${right};\n bottom: ${bottom};\n left: ${left};\n width: ${size};\n height: ${size};\n background: ${bg};\n color: ${col};\n font-size: calc(${size} * 0.6);\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n transform: translate(${left === \"0\"\n\t\t\t\t\t? \"-50%\"\n\t\t\t\t\t: left === \"auto\"\n\t\t\t\t\t? \"0\"\n\t\t\t\t\t: \"0\"}, ${top === \"0\" ? \"-50%\" : top === \"auto\" ? \"0\" : \"0\"});\n \"\n\t\t\t>\n\t\t\t\t${props?.content ?? \"\"}\n\t\t\t</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { createRef, ref, RefOrCallback } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\nexport function Canvas(props?: {\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n}): (initRef?: RefOrCallback<HTMLCanvasElement>) => TemplateResult<1>;\n\nexport function Canvas(\n\tprops?: {\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t},\n\tinitRef?: RefOrCallback<HTMLCanvasElement>\n): TemplateResult<1>;\n\nexport function Canvas(\n\tprops?: {\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t},\n\tinitRef?: RefOrCallback<HTMLCanvasElement>\n):\n\t| ((initRef?: RefOrCallback<HTMLCanvasElement>) => TemplateResult<1>)\n\t| TemplateResult<1> {\n\tif (!initRef) {\n\t\treturn (initRef?: RefOrCallback<HTMLCanvasElement>) =>\n\t\t\tCanvas(props, initRef ?? createRef()) as TemplateResult<1>;\n\t}\n\t// 绑定事件\n\tconst binder = createEventBinder(props?.on ?? {});\n\t// 合并外部引用与事件绑定引用\n\tconst combinedRef = (el: Element | undefined) => {\n\t\tif (el) {\n\t\t\tbinder.bind(el);\n\t\t\ttypeof initRef === \"function\"\n\t\t\t\t? initRef(el as HTMLCanvasElement)\n\t\t\t\t: (initRef = { value: el as HTMLCanvasElement });\n\t\t} else {\n\t\t\tbinder.unbindAll();\n\t\t}\n\t};\n\n\treturn html`\n\t\t<canvas\n\t\t\t${ref(combinedRef)}\n\t\t\t.class=${props?.className}\n\t\t\tstyle=${props?.style ?? \"\"}\n\t\t></canvas>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface CardProps {\n\tpadding?: string;\n\tborderRadius?: string;\n\tshadow?: string;\n\tbackground?: string;\n\ton?: OnEvent;\n}\n\nexport function Card(\n\tprops?: CardProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Card(\n\tprops?: CardProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Card(\n\tprops?: CardProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => Card(props, children ?? [html``]);\n\t}\n\tconst pd = props?.padding ?? \"16px\";\n\tconst br = props?.borderRadius ?? \"8px\";\n\tconst sd = props?.shadow ?? \"0 2px 8px rgba(0,0,0,0.1)\";\n\tconst bg = props?.background ?? \"#fff\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n background: ${bg};\n border-radius: ${br};\n box-shadow: ${sd};\n padding: ${pd};\n box-sizing: border-box;\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\nexport function Center(props?: {\n\twidth?: string;\n\theight?: string;\n\tbackground?: string;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function Center(\n\tprops?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function Center(\n\tprops?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Center(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tCenter(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst bg = props?.background ? `background: ${props.background};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n justify-content: center;\n align-items: center;\n ${w} ${h} ${bg}\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\nimport { MD3 } from \"../theme/md3\";\n\nexport interface ComboboxOption {\n\tvalue: string;\n\tlabel: string;\n}\n\nexport interface ComboboxProps {\n\tvalue?: string;\n\toptions: ComboboxOption[];\n\tplaceholder?: string;\n\tdisabled?: boolean;\n\terror?: boolean;\n\tclassName?: string;\n\tstyle?: string;\n\tmaxHeight?: string;\n\tonChange?: (value: string) => void;\n\tonInput?: (value: string) => void;\n\tonFocus?: () => void;\n\tonBlur?: () => void;\n\ton?: OnEvent;\n\toptionRender?: (option: ComboboxOption) => TemplateResult<1>;\n}\n\nexport function Combobox(props?: ComboboxProps): TemplateResult<1> {\n\tconst {\n\t\tvalue = \"\",\n\t\toptions = [],\n\t\tplaceholder = \"\",\n\t\tdisabled = false,\n\t\terror = false,\n\t\tclassName = \"\",\n\t\tstyle = \"\",\n\t\tmaxHeight = \"300px\",\n\t\tonChange,\n\t\tonInput,\n\t\tonFocus,\n\t\tonBlur,\n\t\ton = {},\n\t\toptionRender,\n\t} = props ?? {};\n\n\tconst now = getComponentCount(\"Combobox\");\n\tconst _className =\n\t\tgetRandomClassName(\"Combobox::combobox\") + `-lyco-now-${now}`;\n\tlet isOpen = false;\n\tlet inputElement: HTMLInputElement | null = null;\n\n\tconst css = `\n .${_className} {\n position: relative;\n width: 100%;\n }\n\n .${_className} input {\n width: 100%;\n padding: 12px 16px;\n font-size: 16px;\n border: 1px solid ${error ? MD3.colors.error : MD3.colors.surfaceVariant};\n border-radius: ${MD3.borderRadius.small};\n color: ${MD3.colors.onSurface};\n transition: all ${MD3.animation.standard};\n outline: none;\n box-sizing: border-box;\n }\n\n .${_className} input:focus {\n border-color: ${MD3.colors.primary};\n box-shadow: 0 0 0 2px ${MD3.colors.primaryContainer};\n }\n\n .${_className} input:disabled {\n background: ${MD3.colors.surfaceVariant};\n color: ${MD3.colors.onSurfaceVariant};\n cursor: not-allowed;\n }\n\n .${_className} .options {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n max-height: ${maxHeight};\n overflow-y: auto;\n border: 1px solid ${MD3.colors.surfaceVariant};\n border-radius: ${MD3.borderRadius.small};\n box-shadow: ${MD3.elevation.level2};\n z-index: 1000;\n display: none;\n }\n\n .${_className} .options.open {\n display: block;\n }\n\n .${_className} .option {\n padding: 12px 16px;\n cursor: pointer;\n transition: background ${MD3.animation.standard};\n }\n\n .${_className} .option:hover {\n background: ${MD3.colors.primaryContainer};\n }\n\n .${_className} .option.selected {\n background: ${MD3.colors.primaryContainer};\n color: ${MD3.colors.onPrimaryContainer};\n }\n `;\n\n\tconst binder = createEventBinder(on);\n\tlet optionsElement: HTMLElement | null = null;\n\n\tconst toggleOptions = () => {\n\t\tif (isOpen) {\n\t\t\toptionsElement?.classList.remove(\"open\");\n\t\t} else {\n\t\t\toptionsElement?.classList.add(\"open\");\n\t\t}\n\t\tisOpen = !isOpen;\n\t};\n\n\tconst handleOptionClick = (option: ComboboxOption, ev: MouseEvent) => {\n\t\tif (inputElement) {\n\t\t\tinputElement.value = option.value;\n\t\t\tconst t = ev.currentTarget as HTMLElement;\n\t\t\t// 先删除其他的 selected\n\t\t\tArray.from(optionsElement?.querySelectorAll(\".selected\") ?? []).forEach(\n\t\t\t\t(t) => t.classList.remove(\"selected\")\n\t\t\t);\n\t\t\t!t.classList.contains(\"selected\") && t.classList.add(\"selected\");\n\t\t\tonChange?.(option.value);\n\t\t}\n\t\ttoggleOptions();\n\t};\n\n\tconst handleClickOutside = (e: MouseEvent) => {\n\t\tconst target = e.target as HTMLElement;\n\t\tif (!target.closest(`.${_className}`)) {\n\t\t\tisOpen = false;\n\t\t\toptionsElement?.classList.remove(\"open\");\n\t\t}\n\t};\n\n\tif (typeof window !== \"undefined\") {\n\t\tdocument.addEventListener(\"click\", handleClickOutside);\n\t}\n\n\treturn LycoComponent(\n\t\t\"Combobox\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div class=\"${_className} ${className}\" style=\"${style}\">\n\t\t\t\t<input\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\tinputElement = el as HTMLInputElement;\n\t\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t.value=${value}\n\t\t\t\t\tplaceholder=${placeholder}\n\t\t\t\t\t?disabled=${disabled}\n\t\t\t\t\t@focus=${() => {\n\t\t\t\t\t\tonFocus?.();\n\t\t\t\t\t\ttoggleOptions();\n\t\t\t\t\t}}\n\t\t\t\t\t@input=${(e: Event) => {\n\t\t\t\t\t\tconst target = e.target as HTMLInputElement;\n\t\t\t\t\t\tonInput?.(target.value);\n\t\t\t\t\t}}\n\t\t\t\t\t@change=${(e: Event) => {\n\t\t\t\t\t\tconst target = e.target as HTMLInputElement;\n\t\t\t\t\t\tonChange?.(target.value);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) optionsElement = el as HTMLElement;\n\t\t\t\t\t})}\n\t\t\t\t\tclass=\"options\"\n\t\t\t\t>\n\t\t\t\t\t${options.map(\n\t\t\t\t\t\t(option) => html`\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"option ${option.value === (inputElement?.value ?? value)\n\t\t\t\t\t\t\t\t\t? \"selected\"\n\t\t\t\t\t\t\t\t\t: \"\"}\"\n\t\t\t\t\t\t\t\t@click=${(ev: MouseEvent) => handleOptionClick(option, ev)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t${optionRender ? optionRender(option) : option.label}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport type ContainerProps = {\n\tmaxWidth?: string;\n\tpadding?: string;\n\tbackground?: string;\n\tfullHeight?: boolean;\n\ton?: OnEvent;\n};\n\nexport function Container(\n\tprops?: ContainerProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Container(\n\tprops?: ContainerProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Container(\n\tprops?: ContainerProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => Container(props, children ?? [html``]);\n\t}\n\tconst mw = props?.maxWidth ?? \"1024px\";\n\tconst pad = props?.padding ?? \"0 16px\";\n\tconst bg = props?.background ? `background: ${props.background};` : \"\";\n\tconst h = props?.fullHeight ? \"height: 100%;\" : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n width: 100%;\n max-width: ${mw};\n margin-left: auto;\n margin-right: auto;\n padding: ${pad};\n ${bg}\n ${h}\n box-sizing: border-box;\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\nexport function Divider(props?: {\n\torientation?: \"horizontal\" | \"vertical\";\n\tthickness?: string;\n\tcolor?: string;\n\tmargin?: string;\n\ton?: OnEvent;\n}) {\n\tconst ori = props?.orientation ?? \"horizontal\";\n\tconst thickness = props?.thickness ?? \"1px\";\n\tconst color = props?.color ?? \"#e0e0e0\";\n\tconst margin = props?.margin ?? (ori === \"horizontal\" ? \"8px 0\" : \"0 8px\");\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\tconst style =\n\t\tori === \"horizontal\"\n\t\t\t? `width: 100%; height: ${thickness}; background: ${color}; margin: ${margin};`\n\t\t\t: `width: ${thickness}; height: 100%; background: ${color}; margin: ${margin};`;\n\n\treturn html`<div\n\t\t${ref((el) => {\n\t\t\tif (el) {\n\t\t\t\tbinder.bind(el);\n\t\t\t} else {\n\t\t\t\tbinder.unbindAll();\n\t\t\t}\n\t\t})}\n\t\tstyle=\"${style}\"\n\t></div>`;\n}\n","// FooterLayout.ts\nimport { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tTemp,\n\tWithHtml,\n} from \"../core\";\n\ninterface FooterLayoutProps {\n\tcolumns?: number;\n\tgap?: string;\n\tbackground?: string;\n\tpadding?: string;\n\ton?: OnEvent;\n}\n\nexport function FooterLayout(props?: FooterLayoutProps): WithHtml<renderFnType>;\n\nexport function FooterLayout(\n\tprops?: FooterLayoutProps,\n\tchildren?: renderFnType\n): Temp;\n\nexport function FooterLayout(\n\tprops?: FooterLayoutProps,\n\tchildren?: renderFnType\n): WithHtml<renderFnType> | Temp {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tFooterLayout(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tFooterLayout(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst cols = props?.columns ?? 4;\n\tconst gap = props?.gap ?? \"24px\";\n\tconst bg = props?.background ?? \"#f8f8f8\";\n\tconst pad = props?.padding ?? \"40px 16px\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n width: 100%;\n background: ${bg};\n padding: ${pad};\n box-sizing: border-box;\n \"\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle=\"\n display: grid;\n grid-template-columns: repeat(${cols}, 1fr);\n gap: ${gap};\n \"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t\t<div style=\"text-align: center; margin-top: 24px; color: #666;\">\n\t\t\t\t© ${new Date().getFullYear()} Your Company. All rights reserved.\n\t\t\t</div>\n\t\t</div>\n\t`;\n}\n","import { TemplateResult } from \"lit\";\n\nexport function ForEach<T extends any[]>(\n\titem: T\n): (\n\trender: (item: T[number], index: number) => TemplateResult<1>\n) => TemplateResult<1>[];\n\nexport function ForEach<T extends any[]>(\n\titem: T,\n\trender: (item: T[number], index: number) => TemplateResult<1>\n): TemplateResult<1>[];\n\nexport function ForEach<T extends any[]>(\n\titem: T,\n\trender?: (item: T[number], index: number) => TemplateResult<1>\n):\n\t| TemplateResult<1>[]\n\t| ((\n\t\t\trender: (item: T[number], index: number) => TemplateResult<1>\n\t ) => TemplateResult<1>[]) {\n\tif (render) {\n\t\treturn item.map((value, index) => render(value, index));\n\t} else {\n\t\treturn (render: (item: T[number], index: number) => TemplateResult<1>) =>\n\t\t\titem.map((value, index) => render(value, index));\n\t}\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport type GridBreakpointProps = {\n\tbreakpoints: Record<string, number>;\n\tdefaultColumns?: number;\n\tgap?: string;\n\tclassName?: string;\n\ton?: OnEvent;\n};\n\nexport function GridBreakpoint(\n\tprops: GridBreakpointProps\n): WithHtml<renderFnType>;\n\nexport function GridBreakpoint(\n\tprops: GridBreakpointProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function GridBreakpoint(\n\tprops: GridBreakpointProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tGridBreakpoint(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tGridBreakpoint(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst defCols = props.defaultColumns ?? 1;\n\tconst gap = props.gap ?? \"16px\";\n\tconst now = getComponentCount(\"GridBreakpoint\");\n\tconst _className =\n\t\tprops.className ??\n\t\tgetRandomClassName(\"GridBreakpoint::grid-breakpoint\") + \"-lyco-now-\" + now;\n\t// 生成媒体查询 CSS\n\tconst mqCss = Object.entries(props.breakpoints)\n\t\t.map(\n\t\t\t([query, cols]) =>\n\t\t\t\t\"@media\" +\n\t\t\t\tquery +\n\t\t\t\t\"{\\n\" +\n\t\t\t\t_className +\n\t\t\t\t\"{ grid-template-columns: repeat(\" +\n\t\t\t\tcols +\n\t\t\t\t\", 1fr); }\\n\" +\n\t\t\t\t\"}\"\n\t\t)\n\t\t.join(\"\\n\");\n\tconst css = `\n\t.${_className} {\n\t display: grid;\n\t grid-template-columns: repeat(${defCols}, 1fr);\n\t gap: ${gap};\n\t}\n\t${mqCss}`;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"GridBreakpoint\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function HeroSection(props?: {\n\tbackgroundImage?: string;\n\theight?: string;\n\toverlayColor?: string;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function HeroSection(\n\tprops?: {\n\t\tbackgroundImage?: string;\n\t\theight?: string;\n\t\toverlayColor?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function HeroSection(\n\tprops?: {\n\t\tbackgroundImage?: string;\n\t\theight?: string;\n\t\toverlayColor?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => HeroSection(props, children ?? [html``]);\n\t}\n\n\tconst bgImage = props?.backgroundImage\n\t\t? `background-image: url('${props.backgroundImage}');`\n\t\t: \"\";\n\tconst height = props?.height ?? \"400px\";\n\tconst overlay = props?.overlayColor ?? \"rgba(0, 0, 0, 0.3)\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: relative;\n width: 100%;\n height: ${height};\n ${bgImage}\n background-size: cover;\n background-position: center;\n \"\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: absolute;\n top: 0; left: 0; right: 0; bottom: 0;\n background: ${overlay};\n \"\n\t\t\t></div>\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: relative;\n z-index: 1;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n color: #fff;\n text-align: center;\n padding: 0 16px;\n box-sizing: border-box;\n \"\n\t\t\t>\n\t\t\t\t${renderFnOrArray(children)}\n\t\t\t</div>\n\t\t</div>\n\t`;\n}\n","// Hidden.ts\nimport { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport type HiddenProps = {\n\tbreakpoint?: string;\n\tmode?: \"hide\" | \"show\";\n\tclassName?: string;\n\ton?: OnEvent;\n};\n\nexport function Hidden(props?: HiddenProps): WithHtml<renderFnType>;\n\nexport function Hidden(\n\tprops?: HiddenProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function Hidden(\n\tprops?: HiddenProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Hidden(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tHidden(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst bp = props?.breakpoint ?? \"(max-width: 600px)\";\n\tconst mode = props?.mode ?? \"hide\";\n\tconst now = getComponentCount(\"Hidden\");\n\tconst _className =\n\t\tprops?.className ??\n\t\tgetRandomClassName(\"Hidden::hidden-container\") + \"-lyco-now-\" + now;\n\tconst styleContent =\n\t\tmode === \"hide\"\n\t\t\t? `@media ${bp} { .${_className} { display: none !important; } }`\n\t\t\t: `@media ${bp} { .${_className} { display: block !important; } }\n @media not ${bp} { .${_className} { display: none !important; } }`;\n\tconst css = `\n\t.${_className} {\n\t display: block;\n\t}\n\t${styleContent}`;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"Hidden\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, render as litRender, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { AnimationAPI } from \"../core\"; // Assuming AnimationAPI is correctly implemented\n\nexport function LazyForEach<T extends any[]>(\n\titems: T,\n\trender: (item: T[number], index: number) => TemplateResult,\n\tthreshold: number = 0.1,\n\tanimationOptions: {\n\t\tanimationClass?: string;\n\t\tanimation?: (element: HTMLElement) => void;\n\t\tcssProperties?: Record<string, string>;\n\t\tduration?: number;\n\t\tdelay?: number;\n\t} = {}\n): TemplateResult[] {\n\tconst renderedStates: boolean[] = new Array(items.length).fill(false);\n\n\t// 定义一个占位符大小(例如50vh和100vw),提升性能\n\tconst placeholderHeight = `${threshold * 100}vh`;\n\tconst placeholderWidth = \"100vw\";\n\n\tconst observedElements = items.map((item, index) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((element) => {\n\t\t\t\t\tif (element && !renderedStates[index]) {\n\t\t\t\t\t\t// 延迟创建IntersectionObserver实例,避免过早的资源消耗\n\t\t\t\t\t\tconst observer = new IntersectionObserver(\n\t\t\t\t\t\t\t(entries, observerInstance) => {\n\t\t\t\t\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\t\t\t\t\tif (entry.isIntersecting && !renderedStates[index]) {\n\t\t\t\t\t\t\t\t\t\tconst el = entry.target as HTMLElement;\n\t\t\t\t\t\t\t\t\t\trenderedStates[index] = true;\n\n\t\t\t\t\t\t\t\t\t\t// 渲染内容\n\t\t\t\t\t\t\t\t\t\tlitRender(render(item, index), el);\n\n\t\t\t\t\t\t\t\t\t\t// 应用动画\n\t\t\t\t\t\t\t\t\t\tAnimationAPI.applyAnimation(el, animationOptions);\n\n\t\t\t\t\t\t\t\t\t\t// 清理占位符\n\t\t\t\t\t\t\t\t\t\tconst placeholder = el.querySelector(\"[data-fallback]\");\n\t\t\t\t\t\t\t\t\t\tif (placeholder) {\n\t\t\t\t\t\t\t\t\t\t\tplaceholder.remove(); // 移除占位符\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// 停止观察\n\t\t\t\t\t\t\t\t\t\tobserverInstance.unobserve(el);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\troot: null,\n\t\t\t\t\t\t\t\trootMargin: `0px`,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// 只有在第一次观察时,才开始观察元素\n\t\t\t\t\t\tobserver.observe(element);\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tdata-index=\"${index}\"\n\t\t\t\tstyle=\"transition: transform ${animationOptions.duration || \"1s\"} ease;\"\n\t\t\t>\n\t\t\t\t<!-- 占位元素 -->\n\t\t\t\t<div\n\t\t\t\t\tdata-fallback\n\t\t\t\t\tstyle=\"height: ${placeholderHeight}; width: ${placeholderWidth};\"\n\t\t\t\t></div>\n\t\t\t</div>\n\t\t`;\n\t});\n\n\treturn observedElements;\n}\n","// 假设以下代码存放在 Lyco/src/components/List.ts 文件中\nimport { html, TemplateResult } from \"lit\";\nimport {\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\n// ListItem 组件\nexport function ListItem(children?: renderFnOrArrayType): TemplateResult<1> {\n\treturn html` <li>${renderFnOrArray(children)}</li> `;\n}\n\n// List 组件\nexport function List(props?: {\n\tbordered?: boolean;\n\tstriped?: boolean;\n\thover?: boolean;\n\tclassName?: string;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function List(\n\tprops?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function List(\n\tprops?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t},\n\tchildren?: renderFnOrArrayType\n): ((children?: renderFnOrArrayType) => TemplateResult<1>) | TemplateResult<1> {\n\tconst bordered = props?.bordered\n\t\t? `border: 1px solid #ddd; border-radius: 4px`\n\t\t: \"\";\n\tconst striped = props?.striped\n\t\t? `li:nth-child(even) { background: #f9f9f9; }`\n\t\t: \"\";\n\tconst hover = props?.hover\n\t\t? `li:hover { background: #f1f1f1; cursor: pointer; }`\n\t\t: \"\";\n\tconst now = getComponentCount(\"List\");\n\tconst _className =\n\t\tprops?.className ?? getRandomClassName(\"List::list\") + `-lyco-now-${now}`;\n\n\tconst css = `\n ul.${_className} {\n\t list-style: none;\n\t margin: 0;\n\t padding: 0;\n\t ${bordered};\n\t}\n\tul.${_className} li {\n\t padding: 12px 16px;\n\t ${props?.bordered ? \"border-bottom: 1px solid #ddd\" : \"\"};\n\t}\n\tul.${_className} li:last-child {\n\t ${props?.bordered ? \"border-bottom: none\" : \"\"};\n\t}\n\t${striped}\n\t${hover}\n `.toString();\n\tconst render = (children?: renderFnOrArrayType) =>\n\t\tLycoComponent(\n\t\t\t\"List\",\n\t\t\thtml`\n\t\t\t\t<style>\n\t\t\t\t\t${css}\n\t\t\t\t</style>\n\t\t\t\t<ul class=\"${_className}\">\n\t\t\t\t\t${renderFnOrArray(children)}\n\t\t\t\t</ul>\n\t\t\t`\n\t\t);\n\n\treturn children === undefined ? render : render(children);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n\tTemp,\n} from \"../core\";\n\nexport function ListGroup(props?: {\n\tbordered?: boolean;\n\tstriped?: boolean;\n\thover?: boolean;\n\tclassName?: string;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function ListGroup(\n\tprops?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function ListGroup(\n\tprops?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n) {\n\tconst bordered = props?.bordered\n\t\t? `border: 1px solid #ddd; border-radius: 4px`\n\t\t: \"\";\n\tconst striped = props?.striped\n\t\t? `li:nth-child(even) { background: #f9f9f9; }`\n\t\t: \"\";\n\tconst hover = props?.hover\n\t\t? `li:hover { background: #f1f1f1; cursor: pointer; }`\n\t\t: \"\";\n\tconst now = getComponentCount(\"ListGroup\");\n\tconst _className =\n\t\tprops?.className ??\n\t\tgetRandomClassName(\"ListGroup::list-group\") + \"-lyco-now-\" + now;\n\tconst injectRender = (\n\t\tchildren: Temp,\n\t\t_idx?: number,\n\t\tisArray?: boolean,\n\t\t_isFunc?: boolean\n\t) => {\n\t\tif (!isArray) {\n\t\t\treturn children;\n\t\t} else {\n\t\t\treturn html` <li>${children}</li> `;\n\t\t}\n\t};\n\tconst css = `\n\tul.${_className} {\n\t list-style: none;\n\t margin: 0;\n\t padding: 0;\n\t ${bordered};\n\t}\n\tul.${_className} li {\n\t padding: 12px 16px;\n\t ${props?.bordered ? \"border-bottom: 1px solid #ddd\" : \"\"};\n\t}\n\tul.${_className} li:last-child {\n\t ${props?.bordered ? \"border-bottom: none\" : \"\"};\n\t}\n\t${striped}\n\t${hover}\n\t`;\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst render = (children: Temp | Temp[]) =>\n\t\tLycoComponent(\n\t\t\t\"ListGroup\",\n\t\t\thtml`\n\t\t\t\t<style>\n\t\t\t\t\t${css}\n\t\t\t\t</style>\n\t\t\t\t<ul\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t\tclass=\"${_className}\"\n\t\t\t\t>\n\t\t\t\t\t${renderFnOrArray(children, injectRender)}\n\t\t\t\t</ul>\n\t\t\t`\n\t\t);\n\n\treturn renderFnOrArrayOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function Overlay(props?: {\n\tbackground?: string;\n\tzIndex?: number;\n\tfullScreen?: boolean;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Overlay(\n\tprops?: {\n\t\tbackground?: string;\n\t\tzIndex?: number;\n\t\tfullScreen?: boolean;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Overlay(\n\tprops?: {\n\t\tbackground?: string;\n\t\tzIndex?: number;\n\t\tfullScreen?: boolean;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) =>\n\t\t\tOverlay(props, children ?? [html``]);\n\t}\n\tconst bg = props?.background ?? \"rgba(0, 0, 0, 0.5)\";\n\tconst z = props?.zIndex ?? 1000;\n\tconst full = props?.fullScreen !== false;\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: ${full ? \"fixed\" : \"absolute\"};\n top: 0; left: 0; right: 0; bottom: 0;\n background: ${bg};\n z-index: ${z};\n display: flex;\n justify-content: center;\n align-items: center;\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function PositionContainer(props?: {\n\twidth?: string;\n\theight?: string;\n\tbackground?: string;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function PositionContainer(\n\tprops?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function PositionContainer(\n\tprops?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tPositionContainer(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tPositionContainer(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst bg = props?.background ? `background: ${props.background};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: relative;\n ${w} ${h} ${bg}\n overflow: hidden;\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { css, html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\ntype ProgressProps = {\n\tvalue?: number; // 主进度 (0-100)\n\tbufferValue?: number; // 缓冲/次要进度 (0-100)\n\tcolor?: string; // 主进度条颜色\n\tsecondaryColor?: string; // 缓冲进度颜色\n\tbackgroundColor?: string; // 整体背景颜色\n\theight?: string; // 进度条高度\n\tradius?: string; // 圆角\n\tshowLabel?: boolean; // 是否显示进度标签\n\tlabelPosition?: \"inside\" | \"outside\";\n\tlabelColor?: string;\n\tlabelFontSize?: string;\n\tstriped?: boolean; // 是否条纹化\n\tanimated?: boolean; // 条纹动画\n\tpaused?: boolean; // 是否暂停动画\n\ttransitionDuration?: string;\n\tprefixIcon?: TemplateResult<1>; // 前置图标\n\tsuffixIcon?: TemplateResult<1>; // 后置图标\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n};\n\nexport function Progress(props?: ProgressProps): TemplateResult<1> {\n\tconst value = Math.min(100, Math.max(0, props?.value ?? 0));\n\tconst buffer = Math.min(100, Math.max(0, props?.bufferValue ?? 0));\n\tconst color = props?.color ?? \"#1976d2\";\n\tconst secondaryColor = props?.secondaryColor ?? \"#90caf9\";\n\tconst backgroundColor = props?.backgroundColor ?? \"#e0e0e0\";\n\tconst height = props?.height ?? \"4px\";\n\tconst radius = props?.radius ?? \"4px\";\n\tconst showLabel = props?.showLabel ?? false;\n\tconst labelPosition = props?.labelPosition ?? \"inside\";\n\tconst labelColor = props?.labelColor ?? (value > 50 ? \"white\" : color);\n\tconst labelFontSize = props?.labelFontSize ?? \"12px\";\n\tconst striped = props?.striped ?? false;\n\tconst animated = props?.animated ?? false;\n\tconst paused = props?.paused ?? false;\n\tconst duration = props?.transitionDuration ?? \"0.3s\";\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\tconst stripes = striped\n\t\t? `background-image: linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n animation: progress-stripes 1s linear infinite;\n animation-play-state: ${paused ? \"paused\" : \"running\"};`\n\t\t: \"\";\n\treturn html`\n\t\t<style>\n\t\t\t${css`\n\t\t\t\t@keyframes progress-stripes {\n\t\t\t\t\tfrom {\n\t\t\t\t\t\tbackground-position: 1rem 0;\n\t\t\t\t\t}\n\t\t\t\t\tto {\n\t\t\t\t\t\tbackground-position: 0 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`.cssText}\n\t\t</style>\n\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) binder.bind(el);\n\t\t\t\telse binder.unbindAll();\n\t\t\t})}\n\t\t\tclass=\"lyco-progress ${className}\"\n\t\t\trole=\"progressbar\"\n\t\t\taria-valuemin=\"0\"\n\t\t\taria-valuemax=\"100\"\n\t\t\taria-valuenow=\"${value}\"\n\t\t\tstyle=\"\n width: 100%;\n background: ${backgroundColor};\n border-radius: ${radius};\n height: ${height};\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n ${style}\n \"\n\t\t>\n\t\t\t${props?.prefixIcon}\n\t\t\t<!-- 缓冲进度 -->\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: absolute;\n width: ${buffer}%;\n height: 100%;\n background: ${secondaryColor};\n transition: width ${duration} ease;\n \"\n\t\t\t></div>\n\t\t\t<!-- 主进度 -->\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: absolute;\n width: ${value}%;\n height: 100%;\n background: ${color};\n border-radius: ${radius};\n transition: width ${duration} ease;\n ${stripes}\n \"\n\t\t\t></div>\n\n\t\t\t<!-- 文本标签 -->\n\t\t\t${showLabel\n\t\t\t\t? html`\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle=\"\n position: ${labelPosition === \"inside\"\n\t\t\t\t\t\t\t\t? \"absolute\"\n\t\t\t\t\t\t\t\t: \"relative\"};\n ${labelPosition === \"inside\"\n\t\t\t\t\t\t\t\t? \"right: 8px; top: 50%; transform: translateY(-50%);\"\n\t\t\t\t\t\t\t\t: \"margin-left: auto; margin-right: 4px;\"}\n font-size: ${labelFontSize};\n color: ${labelColor};\n z-index: 1;\n \"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${value}%\n\t\t\t\t\t\t</div>\n\t\t\t\t `\n\t\t\t\t: \"\"}\n\t\t\t${props?.suffixIcon}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\nexport function SizedBox(props?: {\n\twidth?: string;\n\theight?: string;\n\ton?: OnEvent;\n}) {\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`<div\n\t\t${ref((el) => {\n\t\t\tif (el) {\n\t\t\t\tbinder.bind(el);\n\t\t\t} else {\n\t\t\t\tbinder.unbindAll();\n\t\t\t}\n\t\t})}\n\t\tstyle=\"${w} ${h}\"\n\t></div>`;\n}\n","// SkeletonLoader.ts\nimport { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\n\nexport function SkeletonLoader(props?: {\n\ttype?: \"rect\" | \"circle\";\n\twidth?: string;\n\theight?: string;\n\tborderRadius?: string;\n\tanimation?: boolean;\n\tanimationType?: \"shimmer\" | \"pulse\";\n\tbgColor?: string;\n\thighlightColor?: string;\n\tcount?: number;\n\tspacing?: string;\n\tdirection?: \"horizontal\" | \"vertical\";\n\tdelay?: number; // 延迟显示,单位 ms\n\tautoHide?: boolean; // 是否在完成后自动隐藏\n\tduration?: number; // 自动隐藏持续时间,单位 ms\n\ton?: OnEvent;\n}) {\n\tconst {\n\t\ttype = \"rect\",\n\t\twidth = \"100%\",\n\t\theight = \"16px\",\n\t\tborderRadius = \"4px\",\n\t\tanimation = true,\n\t\tanimationType = \"shimmer\",\n\t\tbgColor = \"#eee\",\n\t\thighlightColor = \"#ddd\",\n\t\tcount = 1,\n\t\tspacing = \"8px\",\n\t\tdirection = \"vertical\",\n\t\tdelay = 0,\n\t\tautoHide = false,\n\t\tduration = 2000,\n\t\ton = {},\n\t} = props ?? {};\n\n\tconst now = getComponentCount(\"SkeletonLoader\");\n\tconst baseClass =\n\t\tgetRandomClassName(\"SkeletonLoader::skeleton\") + \"-lyco-now-\" + now;\n\tconst binder = createEventBinder(on);\n\n\t// 样式和动画\n\tconst shapeStyle =\n\t\ttype === \"circle\"\n\t\t\t? `border-radius:50%;width:${width};height:${width}`\n\t\t\t: `border-radius:${borderRadius};width:${width};height:${height}`;\n\n\tlet keyframes = \"\";\n\tlet animCss = \"\";\n\n\tif (animation) {\n\t\tif (animationType === \"shimmer\") {\n\t\t\tkeyframes = `@keyframes ${baseClass}-shimmer { 0% { background-color: ${bgColor}; } 50% { background-color: ${highlightColor}; } 100% { background-color: ${bgColor}; } }`;\n\t\t\tanimCss = `animation:${baseClass}-shimmer 1.2s infinite ease-in-out;`;\n\t\t} else {\n\t\t\tkeyframes = `@keyframes ${baseClass}-pulse { 0% { opacity:1; } 50% { opacity:0.4; } 100% { opacity:1; } }`;\n\t\t\tanimCss = `animation:${baseClass}-pulse 1.2s infinite ease-in-out;`;\n\t\t}\n\t}\n\n\t// 容器布局\n\tconst containerStyle =\n\t\tdirection === \"horizontal\"\n\t\t\t? `display:flex;flex-direction:row;gap:${spacing}`\n\t\t\t: `display:flex;flex-direction:column;gap:${spacing}`;\n\n\t// 渲染骨架块\n\tconst blocks: TemplateResult[] = [];\n\tfor (let i = 0; i < count; i++) {\n\t\tblocks.push(html`\n\t\t\t<div\n\t\t\t\tclass=\"${baseClass}\"\n\t\t\t\tstyle=\"${shapeStyle};background-color:${bgColor};${animCss};opacity:0;transition:opacity 0.3s\"\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (!el) return;\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t})}\n\t\t\t></div>\n\t\t`);\n\t}\n\n\t// 定时逻辑\n\tfunction applyLifecycle(root: HTMLElement) {\n\t\tconst items = Array.from(\n\t\t\troot.querySelectorAll(`.${baseClass}`)\n\t\t) as HTMLElement[];\n\t\t// 延迟显示\n\t\tsetTimeout(() => {\n\t\t\titems.forEach((el) => (el.style.opacity = \"1\"));\n\t\t\t// 自动隐藏\n\t\t\tif (autoHide) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\titems.forEach((el) => (el.style.opacity = \"0\"));\n\t\t\t\t}, duration);\n\t\t\t}\n\t\t}, delay);\n\t}\n\n\treturn LycoComponent(\n\t\t\"SkeletonLoader\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${keyframes}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\tstyle=\"${containerStyle}\"\n\t\t\t\t${ref((el) => el && applyLifecycle(el as HTMLElement))}\n\t\t\t>\n\t\t\t\t${blocks}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\nexport function Spacer(props?: { on?: OnEvent }) {\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`<div\n\t\t${ref((el) => {\n\t\t\tif (el) {\n\t\t\t\tbinder.bind(el);\n\t\t\t} else {\n\t\t\t\tbinder.unbindAll();\n\t\t\t}\n\t\t})}\n\t\tstyle=\"flex: 1 1 auto;\"\n\t></div>`;\n}\n","import { css, html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\nimport { MD3 } from \"../theme/md3\";\n\ntype SpinnerProps = {\n\tsize?: string; // 尺寸,默认 \"24px\"\n\tcolor?: string; // 颜色,默认 \"currentColor\"\n\tthickness?: string; // 线条粗细,默认 \"2px\"\n\tspeed?: string; // 动画速度,默认 \"0.8s\"\n\tclassName?: string;\n\tstyle?: string;\n\topacity?: number; // 透明度\n\tstartAngle?: number; // 起始角度\n\teasing?: string; // 缓动函数\n\treverse?: boolean; // 反向旋转\n\ton?: OnEvent;\n\tchildren?: TemplateResult | string;\n\n\t// 新增高级样式支持\n\tsvgMode?: boolean; // 使用 SVG 渲染\n\tstrokeLinecap?: \"butt\" | \"round\" | \"square\"; // 线帽样式\n\tstrokeDasharray?: string; // 虚线样式\n};\n\nexport function Spinner(props?: SpinnerProps): TemplateResult<1> {\n\tconst {\n\t\tsize = \"24px\",\n\t\tcolor = MD3.colors.primary,\n\t\tthickness = \"2px\",\n\t\tspeed = \"1.2s\",\n\t\tclassName = \"\",\n\t\topacity = 1,\n\t\tstartAngle = 0,\n\t\teasing = \"linear\",\n\t\treverse = false,\n\t\tstyle = \"\",\n\t\ton = {},\n\t\tchildren,\n\t\tsvgMode = false,\n\t\tstrokeLinecap = \"butt\",\n\t\tstrokeDasharray = \"\",\n\t} = props ?? {};\n\n\tconst binder = createEventBinder(on);\n\tconst id = getComponentCount(\"Spinner\");\n\tref;\n\t// 普通 DIV 渲染\n\tconst divSpinner = html`\n\t\t<div\n\t\t\tclass=\"${className}\"\n\t\t\tstyle=\"display: inline-flex; align-items: center; justify-content: center; width: ${size}; height: ${size}; ${style}\"\n\t\t\t${ref()}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle=\"\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\tborder: ${thickness} solid ${color};\n\t\t\t\t\tborder-right-color: transparent;\n\t\t\t\t\tborder-radius: 50%;\n\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\topacity: ${opacity};\n\t\t\t\t\tanimation: lyco-spin-${id} ${speed} ${easing} infinite ${reverse\n\t\t\t\t\t? \"reverse\"\n\t\t\t\t\t: \"normal\"};\n\t\t\t\t\"\n\t\t\t></div>\n\t\t</div>\n\t\t<style>\n\t\t\t${css`\n\t\t\t\t@keyframes lyco-spin-${id} {\n\t\t\t\t\tfrom {\n\t\t\t\t\t\ttransform: rotate(${startAngle}deg);\n\t\t\t\t\t}\n\t\t\t\t\tto {\n\t\t\t\t\t\ttransform: rotate(${startAngle + 360}deg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`.cssText}\n\t\t</style>\n\t`;\n\n\t// SVG 渲染\n\tconst svgSpinner = html`\n\t\t<div\n\t\t\tclass=\"${className}\"\n\t\t\tstyle=\"display: inline-flex; align-items: center; justify-content: center; width: ${size}; height: ${size}; ${style}\"\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t>\n\t\t\t<svg\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"100%\"\n\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\tstyle=\"opacity: ${opacity}; overflow: visible; filter: drop-shadow(${MD3\n\t\t\t\t\t.elevation.level1});\"\n\t\t\t>\n\t\t\t\t<circle\n\t\t\t\t\tcx=\"50\"\n\t\t\t\t\tcy=\"50\"\n\t\t\t\t\tr=\"45\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"${color}\"\n\t\t\t\t\tstyle=\"\n\t\t\t\t\tstroke-width: ${thickness};\n\t\t\t\t\tstroke-linecap: ${strokeLinecap};\n\t\t\t\t\tstroke-dasharray: ${strokeDasharray};\n\t\t\t\t\ttransform-origin: 50% 50%;\n\t\t\t\t\tanimation: lyco-svg-spin-${id} ${speed} ${easing} infinite ${reverse\n\t\t\t\t\t\t? \"reverse\"\n\t\t\t\t\t\t: \"normal\"};\n\t\t\t\t\"\n\t\t\t\t></circle>\n\t\t\t</svg>\n\t\t</div>\n\t\t<style>\n\t\t\t${css`\n\t\t\t\t@keyframes lyco-svg-spin-${id} {\n\t\t\t\t\tfrom {\n\t\t\t\t\t\ttransform: rotate(${startAngle}deg);\n\t\t\t\t\t}\n\t\t\t\t\tto {\n\t\t\t\t\t\ttransform: rotate(${startAngle + 360}deg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`.cssText}\n\t\t</style>\n\t`;\n\n\treturn LycoComponent(\"Spinner\", svgMode ? svgSpinner : divSpinner);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\ninterface StickyProps {\n\ttop?: string;\n\tbottom?: string;\n\tzIndex?: number;\n\ton?: OnEvent;\n}\n\nexport function Sticky(props?: StickyProps): WithHtml<renderFnType>;\n\nexport function Sticky(\n\tprops?: StickyProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\nexport function Sticky(\n\tprops?: StickyProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Sticky(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tSticky(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst top = props?.top ? `top: ${props.top};` : \"\";\n\tconst bottom = props?.bottom ? `bottom: ${props.bottom};` : \"\";\n\tconst z =\n\t\ttypeof props?.zIndex === \"number\" ? `z-index: ${props.zIndex};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: sticky;\n ${top} ${bottom}\n ${z}\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\nimport { MD3 } from \"../theme/md3\";\n\nexport interface TableProps {\n\tstriped?: boolean;\n\thover?: boolean;\n\tbordered?: boolean;\n\tclassName?: string;\n\ton?: OnEvent;\n}\n\nexport function Table(props?: TableProps): WithHtml<renderFnType>;\n\nexport function Table(\n\tprops?: TableProps,\n\tchildren?: renderFnType // TemplateResult | (() => TemplateResult)\n): TemplateResult<1>;\n\nexport function Table(\n\tprops?: TableProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\t// 如果第二个参数 children 没传,则返回一个只接收 children 的函数\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Table(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tTable(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst now = getComponentCount(\"Table\");\n\n\t// 到这里说明 props 和 children 都已经传齐\n\tconst _className =\n\t\tprops?.className ?? getRandomClassName(\"Table::table\") + `-lyco-now-${now}`;\n\tconst striped = props?.striped\n\t\t? `\n .${_className} tr:nth-child(even) { \n background: ${MD3.colors.surface};\n }\n `\n\t\t: \"\";\n\tconst hover = props?.hover\n\t\t? `\n .${_className} tr:hover { \n background: ${MD3.colors.primaryContainer};\n cursor: pointer;\n }\n `\n\t\t: \"\";\n\tconst bordered = props?.bordered\n\t\t? `\n .${_className}, .${_className} th, .${_className} td { \n border: 1px solid ${MD3.colors.surfaceVariant}; \n }\n `\n\t\t: \"\";\n\n\tconst css = `\n\t.${_className} table {\n\t width: 100%;\n\t border-collapse: separate;\n\t border-spacing: 0;\n\t border-radius: ${MD3.borderRadius.medium};\n\t overflow: hidden;\n\t box-shadow: ${MD3.elevation.level1};\n\t}\n\t.${_className} th,\n\t.${_className} td {\n\t padding: 16px;\n\t text-align: left;\n\t transition: background ${MD3.animation.standard};\n\t}\n\t.${_className} th {\n\t background: ${MD3.colors.surfaceVariant};\n\t color: ${MD3.colors.onSurfaceVariant};\n\t font-weight: 500;\n\t}\n\t.${_className} td {\n\t border-bottom: 1px solid ${MD3.colors.surfaceVariant}; \n\t}\n\t${striped}\n\t${hover}\n\t${bordered}\n\t`;\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn LycoComponent(\n\t\t\"Table\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t<table>\n\t\t\t\t\t${renderFn(children)}\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnOrCurry,\n\trenderFnType,\n} from \"../core\";\n\nexport enum WithTooltipPlacement {\n\tTop = \"top\",\n\tBottom = \"bottom\",\n\tLeft = \"left\",\n\tRight = \"right\",\n}\n\nexport type Offset = number | { x: number; y: number };\nexport type TooltipTheme = \"light\" | \"dark\" | \"custom\";\n\nexport interface WithTooltipProps {\n\t/** 文本或模板内容 */\n\tcontent: string | TemplateResult<1>;\n\t/** 触发延迟: 显示/隐藏分别的 ms 延迟 */\n\tdelay?: { show: number; hide: number };\n\t/** 指定显示位置 */\n\tplacement?: WithTooltipPlacement;\n\t/** 偏移值,支持数字或 {x, y} */\n\toffset?: Offset;\n\t/** 是否在点击时隐藏 */\n\thideOnClick?: boolean;\n\t/** 当鼠标移入 tooltip 内容时,保持可见 */\n\tinteractive?: boolean;\n\t/** 最大宽度 */\n\tmaxWidth?: string;\n\t/** 自定义主题,自定义时可以通过 CSS 覆盖 .lyco-tooltip--custom */\n\ttheme?: TooltipTheme;\n\t/** 自定义 z-index */\n\tzIndex?: number;\n\t/** 附加类名 */\n\tclassName?: string;\n\t/** 行内样式 */\n\tstyle?: string;\n\t/** 事件绑定 */\n\ton?: OnEvent;\n\t/** 显示回调 */\n\tonShow?: () => void;\n\t/** 隐藏回调 */\n\tonHide?: () => void;\n}\n\nexport function WithTooltip(\n\tprops: WithTooltipProps\n): (children?: renderFnType) => TemplateResult;\nexport function WithTooltip(\n\tprops: WithTooltipProps,\n\tchildren?: renderFnType\n): TemplateResult;\nexport function WithTooltip(\n\tprops: WithTooltipProps,\n\tchildren?: renderFnType\n): TemplateResult | ((children?: renderFnType) => TemplateResult) {\n\tconst {\n\t\tcontent,\n\t\tplacement = WithTooltipPlacement.Top,\n\t\tdelay = { show: 200, hide: 100 },\n\t\toffset = 8,\n\t\thideOnClick = false,\n\t\tinteractive = false,\n\t\tmaxWidth = \"200px\",\n\t\ttheme = \"dark\",\n\t\tclassName = \"\",\n\t\tstyle = \"\",\n\t\tzIndex = 1000,\n\t\ton = {},\n\t\tonShow,\n\t\tonHide,\n\t} = props;\n\n\tconst binder = createEventBinder(on);\n\tlet showTimeout: number;\n\tlet hideTimeout: number;\n\n\tfunction scheduleShow(el: HTMLElement) {\n\t\tclearTimeout(hideTimeout);\n\t\tshowTimeout = window.setTimeout(() => {\n\t\t\ttooltipEl.style.visibility = \"visible\";\n\t\t\ttooltipEl.style.opacity = \"1\";\n\t\t\tonShow?.();\n\t\t}, delay.show);\n\t}\n\n\tfunction scheduleHide() {\n\t\tclearTimeout(showTimeout);\n\t\thideTimeout = window.setTimeout(() => {\n\t\t\ttooltipEl.style.visibility = \"hidden\";\n\t\t\ttooltipEl.style.opacity = \"0\";\n\t\t\tonHide?.();\n\t\t}, delay.hide);\n\t}\n\n\tlet tooltipEl: HTMLElement;\n\tconst render = (children?: renderFnType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t\ttooltipEl = el.querySelector(\n\t\t\t\t\t\t\t\".lyco-tooltip-content\"\n\t\t\t\t\t\t) as HTMLElement;\n\n\t\t\t\t\t\tel.addEventListener(\"mouseenter\", () =>\n\t\t\t\t\t\t\tscheduleShow(el as HTMLElement)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tel.addEventListener(\"mouseleave\", () => scheduleHide());\n\t\t\t\t\t\tif (hideOnClick) el.addEventListener(\"click\", () => scheduleHide());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"lyco-tooltip lyco-tooltip--${theme} ${className}\"\n\t\t\t\tstyle=\"position: relative; display: inline-block; ${style}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t\t<div\n\t\t\t\t\tclass=\"lyco-tooltip-content\"\n\t\t\t\t\tstyle=\"\n position: absolute;\n max-width: ${maxWidth};\n ${placement === WithTooltipPlacement.Top\n\t\t\t\t\t\t? \"bottom: 100%; left: 50%; transform: translateX(-50%)\"\n\t\t\t\t\t\t: \"\"}\n ${placement === WithTooltipPlacement.Bottom\n\t\t\t\t\t\t? \"top: 100%; left: 50%; transform: translateX(-50%)\"\n\t\t\t\t\t\t: \"\"}\n ${placement === WithTooltipPlacement.Left\n\t\t\t\t\t\t? \"right: 100%; top: 50%; transform: translateY(-50%)\"\n\t\t\t\t\t\t: \"\"}\n ${placement === WithTooltipPlacement.Right\n\t\t\t\t\t\t? \"left: 100%; top: 50%; transform: translateY(-50%)\"\n\t\t\t\t\t\t: \"\"}\n padding: 4px 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n background: ${theme === \"light\"\n\t\t\t\t\t\t? \"white; color: black\"\n\t\t\t\t\t\t: \"rgba(0,0,0,0.8); color: white\"};\n border-radius: 4px;\n font-size: 12px;\n white-space: normal;\n width: ${placement === WithTooltipPlacement.Left ||\n\t\t\t\t\tplacement === WithTooltipPlacement.Right\n\t\t\t\t\t\t? maxWidth\n\t\t\t\t\t\t: \"auto\"};\n visibility: hidden;\n opacity: 0;\n transition: opacity ${delay.show}ms;\n z-index: ${zIndex};\n margin: ${typeof offset === \"number\"\n\t\t\t\t\t\t? placement === WithTooltipPlacement.Top ||\n\t\t\t\t\t\t placement === WithTooltipPlacement.Bottom\n\t\t\t\t\t\t\t? `${offset}px 0`\n\t\t\t\t\t\t\t: `0 ${offset}px`\n\t\t\t\t\t\t: `${offset.y}px ${offset.x}px`};\n ${interactive ? \"pointer-events: auto\" : \"pointer-events: none\"};\n \"\n\t\t\t\t>\n\t\t\t\t\t${content}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t};\n\n\treturn renderFnOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface WrapProps {\n\tdirection?: \"row\" | \"column\";\n\tgap?: string | number;\n\talign?: string;\n\tjustify?: string;\n\t// 新增 on 属性\n\ton?: OnEvent;\n}\n\nexport function Wrap(\n\tprops?: WrapProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Wrap(\n\tprops?: WrapProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Wrap(\n\tprops?: WrapProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tconst dir = props?.direction ?? \"row\";\n\t// 创建事件绑定器\n\tconst binder = createEventBinder(props?.on ?? {});\n\tif (children === undefined) {\n\t\treturn (children) => Wrap(props, children ?? html``);\n\t}\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: ${dir};\n flex-wrap: wrap;\n ${props?.gap ? `gap: ${props.gap};` : \"\"}\n ${props?.align ? `align-items: ${props.align};` : \"\"}\n ${props?.justify ? `justify-content: ${props.justify};` : \"\"}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface ZStackProps {\n\twidth?: string;\n\theight?: string;\n\tbackground?: string;\n\talign?: \"top-left\" | \"top-right\" | \"center\" | \"bottom-left\" | \"bottom-right\";\n\ton?: OnEvent;\n}\n\nexport function ZStack(\n\tprops?: ZStackProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function ZStack(\n\tprops?: ZStackProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function ZStack(\n\tprops?: ZStackProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst bg = props?.background ? `background: ${props.background};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) =>\n\t\t\tZStack(props, children ?? [html``]);\n\t}\n\n\tlet justify = \"flex-start\";\n\tlet alignItems = \"flex-start\";\n\tswitch (props?.align) {\n\t\tcase \"top-right\":\n\t\t\tjustify = \"flex-end\";\n\t\t\talignItems = \"flex-start\";\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tjustify = \"center\";\n\t\t\talignItems = \"center\";\n\t\t\tbreak;\n\t\tcase \"bottom-left\":\n\t\t\tjustify = \"flex-start\";\n\t\t\talignItems = \"flex-end\";\n\t\t\tbreak;\n\t\tcase \"bottom-right\":\n\t\t\tjustify = \"flex-end\";\n\t\t\talignItems = \"flex-end\";\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// \"top-left\"\n\t\t\tjustify = \"flex-start\";\n\t\t\talignItems = \"flex-start\";\n\t}\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: relative;\n display: flex;\n justify-content: ${justify};\n align-items: ${alignItems};\n ${w} ${h} ${bg}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref, Ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n} from \"../../core\";\nimport { MD3 } from \"../../theme/md3\";\n\nexport enum DialogPlacement {\n\tCenter = \"center\",\n\tLeft = \"left\",\n\tRight = \"right\",\n\tTop = \"top\",\n\tBottom = \"bottom\",\n\tTopStart = \"top-start\",\n\tTopEnd = \"top-end\",\n\tBottomStart = \"bottom-start\",\n\tBottomEnd = \"bottom-end\",\n\tLeftStart = \"left-start\",\n\tLeftEnd = \"left-end\",\n\tRightStart = \"right-start\",\n\tRightEnd = \"right-end\",\n}\n\nconst isSSR = typeof window === \"undefined\";\nconst hasNativeDialog = !isSSR && \"HTMLDialogElement\" in window;\n\ntype DialogProps = {\n\topen?: boolean;\n\tonClose?: () => void;\n\tproxyRef?: Ref<IDialogLike>;\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n\tmovable?: Ref<HTMLElement> | \"self\" | false;\n\tmask?: boolean; // 新增:是否启用遮罩层\n\tplacement?: DialogPlacement; // 新增:对话框位置\n};\n\nconst getFallbackStyles = (open: boolean) => `\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: ${open ? \"flex\" : \"none\"};\n align-items: center;\n justify-content: center;\n z-index: 1000;\n background: rgba(0,0,0,0.3);\n`;\n\n// 创建一个简化的接口,只包含我们需要的方法\ninterface IDialogLike {\n\tshow(): void;\n\tshowModal(): void;\n\tclose(): void;\n\topen: boolean;\n\tstyle: CSSStyleDeclaration;\n\tgetBoundingClientRect(): DOMRect;\n}\n\n// 修改 DialogLike 类实现\nclass DialogLike implements IDialogLike {\n\tprivate element: HTMLDivElement;\n\tprivate contentElement: HTMLDivElement;\n\tprivate isOpen: boolean = false;\n\n\tconstructor(container: HTMLDivElement, content: HTMLDivElement) {\n\t\tthis.element = container;\n\t\tthis.contentElement = content;\n\t}\n\n\tshow() {\n\t\tthis.element.style.display = \"flex\";\n\t\tthis.isOpen = true;\n\t}\n\n\tshowModal() {\n\t\tthis.show();\n\t}\n\n\tclose() {\n\t\tthis.element.style.display = \"none\";\n\t\tthis.isOpen = false;\n\t\tthis.element.dispatchEvent(new Event(\"close\"));\n\t}\n\n\tget open() {\n\t\treturn this.isOpen;\n\t}\n\n\t// 实现移动相关方法\n\tgetBoundingClientRect() {\n\t\treturn this.contentElement.getBoundingClientRect();\n\t}\n\n\t// 样式相关\n\tget style() {\n\t\treturn this.contentElement.style;\n\t}\n\n\t// 其他必需的 HTMLDialogElement 接口实现...\n\treturnValue: string = \"\";\n}\n\nexport function Dialog(\n\tprops?: DialogProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\nexport function Dialog(\n\tprops?: DialogProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\nexport function Dialog(props?: DialogProps, children?: renderFnOrArrayType) {\n\tconst open = props?.open ?? false;\n\tconst onClose = props?.onClose;\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ? props?.on : {});\n\tconst movable = props?.movable ?? false;\n\tconst placement = props?.placement ?? DialogPlacement.Center;\n\tlet proxyRef = props?.proxyRef ?? {\n\t\tvalue: null as IDialogLike | null,\n\t};\n\tlet dialogEl: HTMLElement | null = null;\n\tlet isDragging = false;\n\tlet offset = { x: 0, y: 0 };\n\tlet moveTarget: HTMLElement | null = null;\n\tlet mask = props?.mask ?? true;\n\tconst now = getComponentCount(\"Dialog\");\n\tconst _className = getRandomClassName(\"Dialog::dialog\") + \"-lyco-now-\" + now;\n\tfunction getMoveTarget(dialog: HTMLElement): HTMLElement | null {\n\t\tif (!movable) return null;\n\t\tif (movable === \"self\") return dialog;\n\t\tif (movable && \"value\" in movable) return movable.value as HTMLElement;\n\t\treturn null;\n\t}\n\n\tfunction getCenteredPosition(): string {\n\t\tif (typeof window === \"undefined\") return \"\";\n\n\t\tconst width = 300; // dialog宽度估值(或你可以动态获取)\n\t\tconst height = 150; // dialog高度估值\n\t\tconst left = (window.innerWidth - width) / 2;\n\t\tconst top = (window.innerHeight - height) / 2;\n\n\t\treturn `left: ${left}px; top: ${top}px;`;\n\t}\n\n\t// 获取位置样式\n\tfunction getPlacementStyle() {\n\t\tswitch (placement) {\n\t\t\tcase \"left\":\n\t\t\t\treturn \"left: 32px; top: 50%;\";\n\t\t\tcase \"right\":\n\t\t\t\treturn \"right: 32px; top: 50%;\";\n\t\t\tcase \"top\":\n\t\t\t\treturn \"top: 32px; left: 50%;\";\n\t\t\tcase \"bottom\":\n\t\t\t\treturn \"bottom: 32px; left: 50%;\";\n\t\t\tcase \"top-start\":\n\t\t\t\treturn \"top: 32px; left: 32px;\";\n\t\t\tcase \"top-end\":\n\t\t\t\treturn \"top: 32px; right: 32px;\";\n\t\t\tcase \"bottom-start\":\n\t\t\t\treturn \"bottom: 32px; left: 32px;\";\n\t\t\tcase \"bottom-end\":\n\t\t\t\treturn \"bottom: 32px; right: 32px;\";\n\t\t\tcase \"left-start\":\n\t\t\t\treturn \"left: 32px; top: 32px;\";\n\t\t\tcase \"left-end\":\n\t\t\t\treturn \"left: 32px; bottom: 32px;\";\n\t\t\tcase \"right-start\":\n\t\t\t\treturn \"right: 32px; top: 32px;\";\n\t\t\tcase \"right-end\":\n\t\t\t\treturn \"right: 32px; bottom: 32px;\";\n\t\t\tdefault:\n\t\t\t\t// 默认居中:这里也不使用 transform,而是你自己计算 left/top 设置进去\n\t\t\t\treturn getCenteredPosition();\n\t\t}\n\t}\n\n\t// 获取百分比\n\tfunction getTranslate() {\n\t\tswitch (placement) {\n\t\t\tcase \"top-start\":\n\t\t\tcase \"top-end\":\n\t\t\tcase \"bottom-start\":\n\t\t\tcase \"bottom-end\":\n\t\t\tcase \"left-start\":\n\t\t\tcase \"left-end\":\n\t\t\tcase \"right-start\":\n\t\t\tcase \"right-end\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: 0,\n\t\t\t\t\ttyp: 0,\n\t\t\t\t};\n\t\t\tcase \"left\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: 0,\n\t\t\t\t\ttyp: -50,\n\t\t\t\t};\n\t\t\tcase \"right\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: 0,\n\t\t\t\t\ttyp: -50,\n\t\t\t\t};\n\t\t\tcase \"top\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: -50,\n\t\t\t\t\ttyp: 0,\n\t\t\t\t};\n\t\t\tcase \"bottom\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: -50,\n\t\t\t\t\ttyp: 0,\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\ttxp: -50,\n\t\t\t\t\ttyp: -50,\n\t\t\t\t};\n\t\t}\n\t}\n\n\t// 处理鼠标按下事件\n\tfunction handleMouseDown(e: MouseEvent, dialog: HTMLElement) {\n\t\tif (e.button !== 0) return;\n\t\tmoveTarget = getMoveTarget(dialog);\n\t\tif (!moveTarget || !moveTarget.contains(e.target as Node)) return;\n\t\tdialogEl = dialog;\n\n\t\t// ✨ 移除 transform,防止偏移叠加\n\t\tdialogEl.style.transform = \"none\";\n\t\te.preventDefault();\n\t\tmoveTarget.style.cursor = \"grabbing\";\n\n\t\tconst rect = dialog.getBoundingClientRect();\n\t\tconst { txp, typ } = getTranslate();\n\n\t\toffset = {\n\t\t\tx: e.clientX - (rect.left + (txp / 100) * rect.width),\n\t\t\ty: e.clientY - (rect.top + (typ / 100) * rect.height),\n\t\t};\n\n\t\tisDragging = true;\n\t\tdocument.addEventListener(\"mousemove\", handleMouseMove);\n\t\tdocument.addEventListener(\"mouseup\", handleMouseUp);\n\t}\n\n\tfunction handleMouseMove(e: MouseEvent) {\n\t\tif (!isDragging || !moveTarget || !dialogEl) return;\n\t\tconst rect = dialogEl.getBoundingClientRect();\n\t\tconst { txp, typ } = getTranslate();\n\n\t\tconst newLeft = e.clientX - offset.x - (txp / 100) * rect.width;\n\t\tconst newTop = e.clientY - offset.y - (typ / 100) * rect.height;\n\n\t\tdialogEl.style.left = `${newLeft}px`;\n\t\tdialogEl.style.top = `${newTop}px`;\n\t}\n\n\tfunction handleMouseUp() {\n\t\tisDragging = false;\n\t\tmoveTarget = null;\n\t\tdialogEl = null;\n\t\tdocument.removeEventListener(\"mousemove\", handleMouseMove);\n\t\tdocument.removeEventListener(\"mouseup\", handleMouseUp);\n\t}\n\t// 获取背景样式\n\tfunction getBackdropStyle() {\n\t\tconst bgColor = mask ? \"rgba(0,0,0,0.5)\" : \"transparent\";\n\t\treturn `\n ${_className}::-webkit-backdrop,\n ${_className}::backdrop {\n background: ${bgColor};\n transition: opacity ${MD3.animation.standard};\n }\n `;\n\t}\n\n\t// 渲染回退方案\n\tfunction renderFallback(children?: renderFnOrArrayType) {\n\t\tlet containerRef: HTMLDivElement | null = null;\n\t\tlet contentRef: HTMLDivElement | null = null;\n\n\t\treturn LycoComponent(\n\t\t\t\"Dialog\",\n\t\t\thtml`\n\t\t\t\t<div\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\tcontainerRef = el as HTMLDivElement;\n\t\t\t\t\t\t\tif (contentRef) {\n\t\t\t\t\t\t\t\tconst dialogLike = new DialogLike(containerRef, contentRef);\n\t\t\t\t\t\t\t\t(proxyRef as any).value = dialogLike;\n\t\t\t\t\t\t\t\tbinder.bind(containerRef);\n\n\t\t\t\t\t\t\t\t// 初始状态设置\n\t\t\t\t\t\t\t\tif (open) {\n\t\t\t\t\t\t\t\t\tdialogLike.showModal();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdialogLike.close();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t\t@click=${(e: MouseEvent) => {\n\t\t\t\t\t\tif (e.target === e.currentTarget) {\n\t\t\t\t\t\t\tonClose?.();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tstyle=${getFallbackStyles(open)}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\t\tcontentRef = el as HTMLDivElement;\n\t\t\t\t\t\t\t\tif (containerRef) {\n\t\t\t\t\t\t\t\t\tconst dialogLike = new DialogLike(containerRef, contentRef);\n\t\t\t\t\t\t\t\t\t(proxyRef as any).value = dialogLike;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tclass=\"${_className} ${className}\"\n\t\t\t\t\t\tstyle=\"\n padding: 0;\n border: none;\n background: ${MD3.colors.surface};\n border-radius: ${MD3.borderRadius.large};\n min-width: 300px;\n ${getPlacementStyle()}\n ${typeof movable !== \"boolean\" ? \"cursor: default;\" : \"\"}\n ${style}\n \"\n\t\t\t\t\t>\n\t\t\t\t\t\t${renderFnOrArray(children)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`\n\t\t);\n\t}\n\n\t// 渲染主函数\n\tfunction renderMain(children?: renderFnOrArrayType) {\n\t\t// 在 SSR 环境或不支持 dialog 的环境使用降级方案\n\t\tif (isSSR || !hasNativeDialog) {\n\t\t\treturn renderFallback(children);\n\t\t}\n\n\t\treturn LycoComponent(\n\t\t\t\"Dialog\",\n\t\t\thtml`\n\t\t\t\t<dialog\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\t(proxyRef as any).value = el as HTMLDialogElement;\n\t\t\t\t\t\t\tconst _el = el as HTMLDialogElement;\n\t\t\t\t\t\t\tbinder.bind(_el);\n\t\t\t\t\t\t\t// 使用 requestAnimationFrame 确保元素已经被添加到 DOM 中\n\t\t\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tif (open) {\n\t\t\t\t\t\t\t\t\t\t_el.showModal();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t_el.close();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Dialog operation failed:\", e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t\t@close=${onClose}\n\t\t\t\t\t@mousedown=${(e: MouseEvent) =>\n\t\t\t\t\t\thandleMouseDown(e, e.currentTarget as HTMLElement)}\n\t\t\t\t\tstyle=\"\n padding: 0;\n border: none;\n background: ${MD3.colors.surface};\n border-radius: ${MD3.borderRadius.large};\n min-width: 300px;\n margin: 0;\n position: fixed;\n box-shadow: ${MD3.elevation.level3};\n transition: transform ${MD3.animation.emphasized};\n ${getPlacementStyle()}\n ${typeof movable !== \"boolean\" ? \"cursor: default;\" : \"\"}\n ${style}\n \"\n\t\t\t\t>\n\t\t\t\t\t${renderFnOrArray(children)}\n\t\t\t\t</dialog>\n\t\t\t\t<style>\n\t\t\t\t\t${getBackdropStyle()}\n\t\t\t\t</style>\n\t\t\t`\n\t\t);\n\t}\n\n\treturn renderFnOrArrayOrCurry(children, renderMain);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n} from \"../../core\";\n\ntype DialogActionsProps = {\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n};\n\nexport function DialogActions(\n\tprops?: DialogActionsProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\nexport function DialogActions(\n\tprops?: DialogActionsProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\nexport function DialogActions(\n\tprops?: DialogActionsProps,\n\tchildren?: renderFnOrArrayType\n) {\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\tconst render = (children?: renderFnOrArrayType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"lyco-dialog-actions ${className}\"\n\t\t\t\tstyle=\"\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 8px 24px;\n ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFnOrArray(children)}\n\t\t\t</div>\n\t\t`;\n\t};\n\n\treturn renderFnOrArrayOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnOrCurry,\n\trenderFnType,\n} from \"../../core\";\n\ntype DialogButtonProps = {\n\tvariant?: \"text\" | \"contained\";\n\tcolor?: \"primary\" | \"secondary\" | \"default\";\n\tonClick?: (el: MouseEvent) => void;\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n};\n\nexport function DialogButton(\n\tprops?: DialogButtonProps\n): (children?: renderFnType) => TemplateResult<1>;\nexport function DialogButton(\n\tprops?: DialogButtonProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\nexport function DialogButton(\n\tprops?: DialogButtonProps,\n\tchildren?: renderFnType\n) {\n\tconst variant = props?.variant ?? \"text\";\n\tconst color = props?.color ?? \"default\";\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder({\n\t\tclick: (props?.onClick\n\t\t\t? (e) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tprops.onClick?.(e);\n\t\t\t }\n\t\t\t: undefined) as OnEvent[\"click\"],\n\t\t...props?.on,\n\t});\n\n\tconst render = (children?: renderFnType) => {\n\t\treturn html`\n\t\t\t<button\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"lyco-dialog-button ${variant} ${color} ${className}\"\n\t\t\t\tstyle=\"\n padding: 6px 16px;\n font-size: 14px;\n border-radius: 4px;\n cursor: pointer;\n border: none;\n outline: none;\n margin: 0 4px;\n ${variant === \"contained\"\n\t\t\t\t\t? \"background: #1976d2; color: white;\"\n\t\t\t\t\t: \"background: transparent;\"}\n ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</button>\n\t\t`;\n\t};\n\n\treturn renderFnOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n} from \"../../core\";\n\ntype DialogContentProps = {\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n};\n\nexport function DialogContent(\n\tprops?: DialogContentProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\nexport function DialogContent(\n\tprops?: DialogContentProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\nexport function DialogContent(\n\tprops?: DialogContentProps,\n\tchildren?: renderFnOrArrayType\n) {\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\tconst render = (children?: renderFnOrArrayType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"lyco-dialog-content ${className}\"\n\t\t\t\tstyle=\"\n background: white;\n border-radius: 4px;\n padding: 20px;\n min-width: 300px;\n position: relative;\n ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFnOrArray(children)}\n\t\t\t</div>\n\t\t`;\n\t};\n\n\treturn renderFnOrArrayOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref, type Ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnOrCurry,\n\trenderFnType,\n} from \"../../core\";\n\ntype DialogTitleProps = {\n\tclassName?: string;\n\tstyle?: string;\n\tproxyRef?: Ref<Element>;\n\ton?: OnEvent;\n};\n\nexport function DialogTitle(\n\tprops?: DialogTitleProps\n): (children?: renderFnType) => TemplateResult<1>;\nexport function DialogTitle(\n\tprops?: DialogTitleProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\nexport function DialogTitle(props?: DialogTitleProps, children?: renderFnType) {\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst proxyRef = props?.proxyRef ?? {\n\t\tvalue: null,\n\t};\n\tconst render = (children?: renderFnType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tproxyRef.value = el;\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"lyco-dialog-title ${className}\"\n\t\t\t\tstyle=\"\n padding: 16px 24px;\n font-size: 20px;\n font-weight: 500;\n line-height: 1.6;\n letter-spacing: 0.0075em;\n ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`;\n\t};\n\n\treturn renderFnOrCurry(children, render);\n}\n","import {\n\tgetComponentCount,\n\tLycoComponent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n\tTemp,\n} from \"../core\";\n\nexport {\n\tVirtualizer,\n\tVirtualizerController,\n\ttype ItemsSource,\n\ttype VirtualizerConfig,\n} from \"./Virtualizer.labs\";\n\nexport { LightboxContainer } from \"./LightboxContainer\";\n\nexport { Column } from \"./Column\";\nexport { Flex } from \"./Flex\";\nexport { FlowItem } from \"./FlowItem\";\nexport { Grid } from \"./Grid\";\nexport { GridCol } from \"./GridCol\";\nexport { GridItem } from \"./GridItem\";\nexport { GridRow } from \"./GridRow\";\nexport { Row } from \"./Row\";\nexport { WaterFlow } from \"./WaterFlow\";\n\nexport { ColumnSplit } from \"./ColumnSplit\";\nexport { RowSplit } from \"./RowSplit\";\nexport { ScrollBar } from \"./ScrollBar\";\nexport { SideBarContainer } from \"./SideBarContainer\";\nexport { Swiper } from \"./Swiper\";\nexport { SwitchInput } from \"./SwitchInput\";\n\nexport { AbsoluteBox } from \"./AbsoluteBox\";\nexport { AcrylicBar } from \"./AcrylicBar\";\nexport { AspectRatio } from \"./AspectRatio\";\nexport { AutoFitGrid } from \"./AutoFitGrid\";\nexport { AvatarStack } from \"./AvatarStack\";\nexport { Badge } from \"./Badge\";\nexport { Canvas } from \"./Canvas\";\nexport { Card } from \"./Card\";\nexport { Center } from \"./Center\";\nexport { Combobox } from \"./Combobox\";\nexport { Container } from \"./Container\";\nexport { Divider } from \"./Divider\";\nexport { FooterLayout } from \"./FooterLayout\";\nexport { ForEach } from \"./ForEach\";\nexport { GridBreakpoint } from \"./GridBreakpoint\";\nexport { HeroSection } from \"./HeroSection\";\nexport { Hidden } from \"./Hidden\";\nexport { LazyForEach } from \"./LazyForEach\";\nexport { List, ListItem } from \"./List\";\nexport { ListGroup } from \"./ListGroup\";\nexport { Overlay } from \"./Overlay\";\nexport { PositionContainer } from \"./PositionContainer\";\nexport { Progress } from \"./Progress\";\nexport { SizedBox } from \"./SizedBox\";\nexport { SkeletonLoader } from \"./SkeletonLoader\";\nexport { Spacer } from \"./Spacer\";\nexport { Spinner } from \"./Spinner\";\nexport { Sticky } from \"./Sticky\";\nexport { Table } from \"./Table\";\nexport { WithTooltip } from \"./Tooltip\";\nexport { Wrap } from \"./Wrap\";\nexport { ZStack } from \"./ZStack\";\n// 弹窗组件\nexport * from \"./Dialog\";\n\nexport function $Html(slot: renderFnOrArrayType) {\n\treturn renderFnOrArray(slot);\n}\n\nexport function $Once(self: HTMLElement, slot: () => Temp | Temp[]) {\n\tconst now = \"__LYCO_ONCE_\" + getComponentCount(\"$Once\");\n\tif ((self as any)[now]) {\n\t\treturn (self as any)[now];\n\t} else {\n\t\tconst result = LycoComponent(\"$Once\", slot());\n\t\t(self as any)[now] = result;\n\t\treturn (self as any)[now];\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","names":["capacity: number","index: number","value: T","metrics: BlockMetrics","length: number","host: ReactiveControllerHost","initialConfig: VirtualizerConfig<T>","initialRenderItem: (item: T, index: number) => TemplateResult<1>","offset: number","items: ItemsSource<T>","start: number","end: number","chunkIndex: number","style: StyleInfo","size: number","item: T","newConfig: VirtualizerConfig<T>","newRenderItem: (item: T, index: number) => TemplateResult<1>","items: TemplateResult[]","host: ReactiveControllerHost | null","config: VirtualizerConfig<T>","renderItemOrUndefined?: (item: T, index: number) => TemplateResult<1>","actualRenderItem: (item: T, index: number) => TemplateResult<1>","containerStyle: StyleInfo","contentStyle: StyleInfo","renderItem: (item: T, index: number) => TemplateResult<1>","props?: { fadeBg?: string; zIndex?: number; on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tspace?: string | number;\n\t\tcenter?: boolean;\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","props?: FlexProps","children?: renderFnType","children: renderFnType","strings: TemplateStringsArray","props?: { on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: { columns?: number; gap?: string | number; on?: OnEvent }","children?: renderFnOrArrayType","props?: { gap?: string | number; on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: { span?: number; on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: { gap?: string | number; on?: OnEvent }","children?: renderFnType","strings: TemplateStringsArray","props?: { space?: string | number; center?: boolean; on?: OnEvent }","children?: renderFnOrArrayType","props?: WaterFlowProps","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tfirstHeight?: string; // 第一个面板固定高度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tfirstWidth?: string; // 第一个面板固定宽度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tdirection?: \"vertical\" | \"horizontal\";\n\t\theight?: string;\n\t\twidth?: string;\n\t\tcustomCss?: string;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tsidebarWidth?: string; // 侧边栏宽度,比如 \"240px\"\n\t\tsidebarPosition?: \"left\" | \"right\";\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","props: SwiperProps","slides?: TemplateResult<1>[] | (() => TemplateResult<1>[])","_slides: TemplateResult<1>[]","index: number","scrollOffset: number","distance: number","e: TouchEvent","e: WheelEvent","container: HTMLElement | null","autoplayInterval: ReturnType<typeof setInterval>","cleanupFns: (() => void)[]","props?: SwitchInputProps","e: Event","props?: AbsoluteBoxProps","children?: renderFnType","props?: AcrylicBarProps","children?: renderFnOrArrayType","children: TemplateResult","props: AspectRatioProps","children?: renderFnOrArrayType","props: {\n\t\tminItemWidth: string;\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: { size?: string; overlap?: string; on?: OnEvent }","children?: renderFnOrArrayType","avatar: TemplateResult","idx?: number","props?: BadgeProps","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t}","initRef?: RefOrCallback<HTMLCanvasElement>","el: Element | undefined","props?: CardProps","children?: renderFnOrArrayType","props?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: ComboboxProps","inputElement: HTMLInputElement | null","optionsElement: HTMLElement | null","option: ComboboxOption","ev: MouseEvent","e: MouseEvent","e: Event","props?: ContainerProps","children?: renderFnOrArrayType","props?: {\n\torientation?: \"horizontal\" | \"vertical\";\n\tthickness?: string;\n\tcolor?: string;\n\tmargin?: string;\n\ton?: OnEvent;\n}","props?: FooterLayoutProps","children?: renderFnType","strings: TemplateStringsArray","item: T","render?: (item: T[number], index: number) => TemplateResult<1>","render: (item: T[number], index: number) => TemplateResult<1>","props: GridBreakpointProps","children?: renderFnType","strings: TemplateStringsArray","props?: {\n\t\tbackgroundImage?: string;\n\t\theight?: string;\n\t\toverlayColor?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","props?: HiddenProps","children?: renderFnType","strings: TemplateStringsArray","items: T","render: (item: T[number], index: number) => TemplateResult","threshold: number","animationOptions: {\n\t\tanimationClass?: string;\n\t\tanimation?: (element: HTMLElement) => void;\n\t\tcssProperties?: Record<string, string>;\n\t\tduration?: number;\n\t\tdelay?: number;\n\t}","renderedStates: boolean[]","children?: renderFnOrArrayType","props?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t}","props?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","children: Temp","_idx?: number","isArray?: boolean","_isFunc?: boolean","children: Temp | Temp[]","props?: {\n\t\tbackground?: string;\n\t\tzIndex?: number;\n\t\tfullScreen?: boolean;\n\t\ton?: OnEvent;\n\t}","children?: renderFnOrArrayType","props?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t}","children?: renderFnType","strings: TemplateStringsArray","props?: ProgressProps","props?: {\n\twidth?: string;\n\theight?: string;\n\ton?: OnEvent;\n}","props?: {\n\ttype?: \"rect\" | \"circle\";\n\twidth?: string;\n\theight?: string;\n\tborderRadius?: string;\n\tanimation?: boolean;\n\tanimationType?: \"shimmer\" | \"pulse\";\n\tbgColor?: string;\n\thighlightColor?: string;\n\tcount?: number;\n\tspacing?: string;\n\tdirection?: \"horizontal\" | \"vertical\";\n\tdelay?: number; // 延迟显示,单位 ms\n\tautoHide?: boolean; // 是否在完成后自动隐藏\n\tduration?: number; // 自动隐藏持续时间,单位 ms\n\ton?: OnEvent;\n}","blocks: TemplateResult[]","root: HTMLElement","props?: { on?: OnEvent }","props?: SpinnerProps","props?: StickyProps","children?: renderFnType","strings: TemplateStringsArray","props?: TableProps","children?: renderFnType","strings: TemplateStringsArray","props: WithTooltipProps","children?: renderFnType","showTimeout: number","hideTimeout: number","el: HTMLElement","tooltipEl: HTMLElement","props?: WrapProps","children?: renderFnOrArrayType","props?: ZStackProps","children?: renderFnOrArrayType","open: boolean","container: HTMLDivElement","content: HTMLDivElement","props?: DialogProps","children?: renderFnOrArrayType","dialogEl: HTMLElement | null","moveTarget: HTMLElement | null","dialog: HTMLElement","e: MouseEvent","containerRef: HTMLDivElement | null","contentRef: HTMLDivElement | null","props?: DialogActionsProps","children?: renderFnOrArrayType","props?: DialogButtonProps","children?: renderFnType","props?: DialogContentProps","children?: renderFnOrArrayType","props?: DialogTitleProps","children?: renderFnType","slot: renderFnOrArrayType","self: HTMLElement","slot: () => Temp | Temp[]","slotKey?: string"],"sources":["../src/components/Virtualizer.labs.ts","../src/components/LightboxContainer.ts","../src/components/Column.ts","../src/components/Flex.ts","../src/components/FlowItem.ts","../src/components/Grid.ts","../src/components/GridCol.ts","../src/components/GridItem.ts","../src/components/GridRow.ts","../src/components/Row.ts","../src/components/WaterFlow.ts","../src/components/ColumnSplit.ts","../src/components/RowSplit.ts","../src/components/ScrollBar.ts","../src/components/SideBarContainer.ts","../src/components/Swiper.ts","../src/theme/md3.ts","../src/components/SwitchInput.ts","../src/components/AbsoluteBox.ts","../src/components/AcrylicBar.ts","../src/components/AspectRatio.ts","../src/components/AutoFitGrid.ts","../src/components/AvatarStack.ts","../src/components/Badge.ts","../src/components/Canvas.ts","../src/components/Card.ts","../src/components/Center.ts","../src/components/Combobox.ts","../src/components/Container.ts","../src/components/Divider.ts","../src/components/FooterLayout.ts","../src/components/ForEach.ts","../src/components/GridBreakpoint.ts","../src/components/HeroSection.ts","../src/components/Hidden.ts","../src/components/LazyForEach.ts","../src/components/List.ts","../src/components/ListGroup.ts","../src/components/Overlay.ts","../src/components/PositionContainer.ts","../src/components/Progress.ts","../src/components/SizedBox.ts","../src/components/SkeletonLoader.ts","../src/components/Spacer.ts","../src/components/Spinner.ts","../src/components/Sticky.ts","../src/components/Table.ts","../src/components/Tooltip.ts","../src/components/Wrap.ts","../src/components/ZStack.ts","../src/components/Dialog/Dialog.ts","../src/components/Dialog/DialogActions.ts","../src/components/Dialog/DialogButton.ts","../src/components/Dialog/DialogContent.ts","../src/components/Dialog/DialogTitle.ts","../src/components/mod.ts"],"sourcesContent":["import {\n\thtml,\n\tnothing,\n\tReactiveController,\n\tReactiveControllerHost,\n\tTemplateResult,\n} from \"lit\";\nimport { createRef, ref, Ref } from \"lit/directives/ref.js\";\nimport { styleMap } from \"lit/directives/style-map.js\";\n\n// Add style type definition\ntype StyleInfo = { [key: string]: string | number | null | undefined };\n\n// Type assertion for SSR\nconst isSSR = typeof window === \"undefined\";\n\n// 修改生成器类型定义,确保类型兼容性\nexport type ItemsSource<T> = T[];\n\nexport interface VirtualizerConfig<T> {\n\titems: ItemsSource<T>;\n\tkeyFunction?: (index: number) => string | number;\n\titemSize?: number | ((index: number) => number);\n\tlayout?: \"vertical\" | \"horizontal\";\n\tpadding?: number;\n\tpreloadCount?: number;\n\tcacheSize?: number;\n\trenderItem?: (item: T, index: number) => TemplateResult<1>;\n\tpageSize?: number;\n\tfetchMoreThreshold?: number;\n\tonLoadMore?: () => Promise<void>; // 添加分页加载回调\n}\n\nconst BLOCK_SIZE = 100;\n\ninterface BlockMetrics {\n\tstart: number;\n\tend: number;\n\ttotal: number;\n}\n\nclass CircularBuffer<T> {\n\tprivate buffer: Array<T | undefined>;\n\tprivate readonly _capacity: number;\n\n\tconstructor(capacity: number) {\n\t\tthis._capacity = capacity;\n\t\tthis.buffer = new Array(capacity);\n\t}\n\n\tset(index: number, value: T): void {\n\t\tthis.buffer[index % this._capacity] = value;\n\t}\n\n\tget(index: number): T | undefined {\n\t\treturn this.buffer[index % this._capacity];\n\t}\n\n\tclear(): void {\n\t\tthis.buffer.fill(undefined);\n\t}\n\n\tget capacity(): number {\n\t\treturn this._capacity;\n\t}\n}\n\nclass BlockStore {\n\tdata: Float64Array = new Float64Array();\n\n\tset(index: number, metrics: BlockMetrics) {\n\t\tconst i = index * 3;\n\t\tthis.data[i] = metrics.start;\n\t\tthis.data[i + 1] = metrics.end;\n\t\tthis.data[i + 2] = metrics.total;\n\t}\n\n\tget(index: number): BlockMetrics {\n\t\tconst i = index * 3;\n\t\tif (i < 0 || i + 2 >= this.data.length) {\n\t\t\treturn { start: 0, end: 0, total: 0 };\n\t\t}\n\t\treturn {\n\t\t\tstart: this.data[i],\n\t\t\tend: this.data[i + 1],\n\t\t\ttotal: this.data[i + 2],\n\t\t};\n\t}\n\n\tinitialize(length: number) {\n\t\tthis.data = new Float64Array(Math.ceil(length / BLOCK_SIZE) * 3);\n\t\tthis.data.fill(0);\n\t}\n}\n\n// --- VirtualizerController ---\nexport class VirtualizerController<T> implements ReactiveController {\n\thost: ReactiveControllerHost;\n\n\tprivate _items: T[] = [];\n\tprivate _itemSize: number | ((index: number) => number) = 50;\n\tprivate _layout: \"vertical\" | \"horizontal\" = \"vertical\";\n\tprivate _preloadCount: number = 5;\n\tprivate _cacheSize: number = 200;\n\tprivate _renderItem: (item: T, index: number) => TemplateResult<1> = () =>\n\t\thtml``;\n\n\tprivate _containerRef: Ref<HTMLElement> = createRef();\n\n\tprivate _firstVisible: number = 0;\n\tprivate _lastVisible: number = 0;\n\n\tprivate _positionCache: Float64Array = new Float64Array();\n\tprivate _sizeCache: Float32Array = new Float32Array();\n\tprivate _cacheInitialized: boolean = false;\n\tprivate _totalContentSize: number = 0;\n\n\tprivate _templateBuffer: CircularBuffer<TemplateResult>;\n\tprivate _blockStore: BlockStore = new BlockStore();\n\n\tprivate _recycledNodes: HTMLElement[] = [];\n\tprivate readonly RECYCLE_POOL_SIZE = 20;\n\tprivate _intersectionObserver?: IntersectionObserver;\n\tprivate _mutationObserver?: MutationObserver;\n\tprivate _idleCallbackId?: number;\n\tprivate _preRenderChunkSize = 5;\n\n\tprivate readonly CHUNK_SIZE = 1000; // 每个分块的大小\n\tprivate _chunks: Map<number, T[]> = new Map();\n\tprivate _resizeObserver?: ResizeObserver;\n\tprivate _visibleChunkIndexes: Set<number> = new Set();\n\tprivate _loadedChunks: Set<number> = new Set();\n\tprivate _estimatedItemHeight: number = 0;\n\n\tprivate _isLoading = false;\n\tprivate _hasMore = false;\n\n\tprivate _pageSize: number = 50;\n\tprivate _fetchMoreThreshold: number = 0.8;\n\n\tprivate _onLoadMore?: () => Promise<void>;\n\n\tconstructor(\n\t\thost: ReactiveControllerHost,\n\t\tinitialConfig: VirtualizerConfig<T>,\n\t\tinitialRenderItem: (item: T, index: number) => TemplateResult<1>\n\t) {\n\t\tthis.host = host;\n\t\thost.addController(this);\n\n\t\tthis.updateConfig(initialConfig, initialRenderItem);\n\t\tthis._templateBuffer = new CircularBuffer(this._cacheSize);\n\n\t\tthis._pageSize = initialConfig.pageSize ?? 50;\n\t\tthis._fetchMoreThreshold = initialConfig.fetchMoreThreshold ?? 0.8;\n\n\t\tif (!isSSR) {\n\t\t\tthis._setupObservers();\n\t\t\tthis._setupResizeObserver();\n\t\t\tthis._initializeChunks();\n\t\t}\n\t}\n\n\tprivate _initializeItems(items: ItemsSource<T>): void {\n\t\tthis._items = [...items];\n\t\tthis._calculateMetrics();\n\t\tthis._initializeChunks();\n\t\tthis.host.requestUpdate();\n\t}\n\n\tprivate _updateMetricsForRange(start: number, end: number): void {\n\t\t// 扩展数组缓存如果需要\n\t\tif (end > this._positionCache.length) {\n\t\t\tconst newPositionCache = new Float64Array(Math.max(end * 1.5, 1000));\n\t\t\tnewPositionCache.set(this._positionCache);\n\t\t\tthis._positionCache = newPositionCache;\n\n\t\t\tconst newSizeCache = new Float32Array(Math.max(end * 1.5, 1000));\n\t\t\tnewSizeCache.set(this._sizeCache);\n\t\t\tthis._sizeCache = newSizeCache;\n\t\t}\n\n\t\tlet offset =\n\t\t\tstart === 0\n\t\t\t\t? 0\n\t\t\t\t: this._positionCache[start - 1] + this._sizeCache[start - 1];\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tconst size = this._getItemSize(i);\n\t\t\tthis._positionCache[i] = offset;\n\t\t\tthis._sizeCache[i] = size;\n\t\t\toffset += size;\n\t\t}\n\n\t\tthis._totalContentSize = offset;\n\t\tthis._updateChunkMetrics();\n\t}\n\n\tprivate _setupObservers(): void {\n\t\t// 监视可见性变化\n\t\tthis._intersectionObserver = new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\tif (entry.isIntersecting) {\n\t\t\t\t\t\tthis._preRenderChunk();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ rootMargin: \"50%\" }\n\t\t);\n\n\t\t// 监视DOM变化以回收节点\n\t\tthis._mutationObserver = new MutationObserver((mutations) => {\n\t\t\tmutations.forEach((mutation) => {\n\t\t\t\tmutation.removedNodes.forEach((node) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode instanceof HTMLElement &&\n\t\t\t\t\t\tthis._recycledNodes.length < this.RECYCLE_POOL_SIZE\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis._recycledNodes.push(node);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate _setupResizeObserver(): void {\n\t\tthis._resizeObserver = new ResizeObserver((entries) => {\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (entry.target instanceof HTMLElement) {\n\t\t\t\t\tconst height = entry.contentRect.height;\n\t\t\t\t\tif (height > 0) {\n\t\t\t\t\t\tthis._estimatedItemHeight = height;\n\t\t\t\t\t\tthis._updateChunkMetrics();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _initializeChunks(): void {\n\t\tthis._chunks.clear();\n\t\tconst totalChunks = Math.ceil(this._items.length / this.CHUNK_SIZE);\n\n\t\t// 只初始化元数据,不实际加载数据\n\t\tfor (let i = 0; i < totalChunks; i++) {\n\t\t\tconst start = i * this.CHUNK_SIZE;\n\t\t\tconst end = Math.min(start + this.CHUNK_SIZE, this._items.length);\n\t\t\tthis._chunks.set(i, this._items.slice(start, end));\n\t\t}\n\t}\n\n\tprivate _updateChunkMetrics(): void {\n\t\tif (!this._containerRef.value) return;\n\n\t\tconst viewportHeight = this._containerRef.value.clientHeight;\n\t\tconst estimatedTotalHeight = this._items.length * this._estimatedItemHeight;\n\n\t\t// 更新块的位置信息\n\t\tthis._blockStore.initialize(\n\t\t\tMath.ceil(this._items.length / this.CHUNK_SIZE)\n\t\t);\n\n\t\tlet offset = 0;\n\t\tfor (let i = 0; i < this._chunks.size; i++) {\n\t\t\tconst chunkSize = Math.min(\n\t\t\t\tthis.CHUNK_SIZE,\n\t\t\t\tthis._items.length - i * this.CHUNK_SIZE\n\t\t\t);\n\t\t\tconst chunkHeight = chunkSize * this._estimatedItemHeight;\n\n\t\t\tthis._blockStore.set(i, {\n\t\t\t\tstart: offset,\n\t\t\t\tend: offset + chunkHeight,\n\t\t\t\ttotal: chunkHeight,\n\t\t\t});\n\n\t\t\toffset += chunkHeight;\n\t\t}\n\n\t\tthis._totalContentSize = estimatedTotalHeight;\n\t\tthis._calculateVisibleChunks();\n\t}\n\n\tprivate _calculateVisibleChunks(): void {\n\t\tif (!this._containerRef.value) return;\n\n\t\tconst scrollTop = this._containerRef.value.scrollTop;\n\t\tconst viewportHeight = this._containerRef.value.clientHeight;\n\n\t\t// 计算可见块的索引范围\n\t\tconst startChunkIndex = Math.floor(\n\t\t\tscrollTop / (this.CHUNK_SIZE * this._estimatedItemHeight)\n\t\t);\n\t\tconst endChunkIndex = Math.ceil(\n\t\t\t(scrollTop + viewportHeight) /\n\t\t\t\t(this.CHUNK_SIZE * this._estimatedItemHeight)\n\t\t);\n\n\t\t// 更新可见块集合\n\t\tthis._visibleChunkIndexes.clear();\n\t\tfor (let i = startChunkIndex; i <= endChunkIndex; i++) {\n\t\t\tif (this._chunks.has(i)) {\n\t\t\t\tthis._visibleChunkIndexes.add(i);\n\t\t\t}\n\t\t}\n\n\t\t// 预加载相邻块\n\t\tthis._preloadAdjacentChunks(startChunkIndex - 1, endChunkIndex + 1);\n\t}\n\n\tprivate _preloadAdjacentChunks(start: number, end: number): void {\n\t\tfor (let i = start; i <= end; i++) {\n\t\t\tif (i >= 0 && i < this._chunks.size && !this._loadedChunks.has(i)) {\n\t\t\t\trequestIdleCallback(() => {\n\t\t\t\t\tthis._loadChunk(i);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _loadChunk(index: number): void {\n\t\tif (this._loadedChunks.has(index)) return;\n\n\t\tconst start = index * this.CHUNK_SIZE;\n\t\tconst end = Math.min(start + this.CHUNK_SIZE, this._items.length);\n\t\tconst items = this._items.slice(start, end);\n\n\t\tthis._chunks.set(index, items);\n\t\tthis._loadedChunks.add(index);\n\t\tthis._calculateMetricsForChunk(index);\n\t}\n\n\tprivate _calculateMetricsForChunk(chunkIndex: number): void {\n\t\tconst start = chunkIndex * this.CHUNK_SIZE;\n\t\tconst items = this._chunks.get(chunkIndex) || [];\n\n\t\tlet offset = start * this._estimatedItemHeight;\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\tconst index = start + i;\n\t\t\tthis._positionCache[index] = offset;\n\t\t\tthis._sizeCache[index] = this._estimatedItemHeight;\n\t\t\toffset += this._estimatedItemHeight;\n\t\t}\n\t}\n\n\tprivate _preRenderChunk(): void {\n\t\tif (this._idleCallbackId) {\n\t\t\tcancelIdleCallback(this._idleCallbackId);\n\t\t}\n\n\t\tthis._idleCallbackId = requestIdleCallback((deadline) => {\n\t\t\tlet index = this._lastVisible + 1;\n\t\t\tlet count = 0;\n\n\t\t\twhile (\n\t\t\t\tdeadline.timeRemaining() > 0 &&\n\t\t\t\tcount < this._preRenderChunkSize &&\n\t\t\t\tindex < this._items.length\n\t\t\t) {\n\t\t\t\tthis._prerenderItem(index);\n\t\t\t\tindex++;\n\t\t\t\tcount++;\n\t\t\t}\n\n\t\t\tif (index < this._items.length) {\n\t\t\t\tthis._preRenderChunk();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _prerenderItem(index: number): void {\n\t\tconst cacheKey = index % this._cacheSize;\n\t\tif (!this._templateBuffer.get(cacheKey)) {\n\t\t\tconst itemOffset = this._positionCache[index];\n\t\t\tconst itemHeightWidth = this._sizeCache[index];\n\n\t\t\tif (itemOffset !== undefined && itemHeightWidth !== undefined) {\n\t\t\t\tconst style: StyleInfo = this._getItemStyle(\n\t\t\t\t\titemOffset,\n\t\t\t\t\titemHeightWidth\n\t\t\t\t);\n\t\t\t\tconst result = this._createItemTemplate(\n\t\t\t\t\tthis._items[index],\n\t\t\t\t\tindex,\n\t\t\t\t\tstyle\n\t\t\t\t);\n\t\t\t\tthis._templateBuffer.set(cacheKey, result);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getItemStyle(offset: number, size: number): StyleInfo {\n\t\tconst isVertical = this._layout === \"vertical\";\n\t\treturn {\n\t\t\tposition: \"absolute\",\n\t\t\t[isVertical ? \"top\" : \"left\"]: `${offset}px`,\n\t\t\t[isVertical ? \"height\" : \"width\"]: `${size}px`,\n\t\t\twidth: isVertical ? \"100%\" : \"auto\",\n\t\t\theight: isVertical ? \"auto\" : \"100%\",\n\t\t\twillChange: \"transform\",\n\t\t\tcontain: \"content\",\n\t\t\tbackfaceVisibility: \"hidden\",\n\t\t\tWebkitFontSmoothing: \"subpixel-antialiased\",\n\t\t};\n\t}\n\n\tprivate _createItemTemplate(\n\t\titem: T,\n\t\tindex: number,\n\t\tstyle: StyleInfo\n\t): TemplateResult<1> {\n\t\tlet recycledNode = this._recycledNodes.pop();\n\t\tconst key = `item-${index}`;\n\n\t\treturn html`\n\t\t\t${recycledNode\n\t\t\t\t? html`<div\n\t\t\t\t\t\t.key=${key}\n\t\t\t\t\t\tstyle=${styleMap(style)}\n\t\t\t\t\t\tdata-index=${index}\n\t\t\t\t\t\t.recycled=${recycledNode}\n\t\t\t\t >\n\t\t\t\t\t\t${this._renderItem(item, index)}\n\t\t\t\t </div>`\n\t\t\t\t: html`<div .key=${key} style=${styleMap(style)} data-index=${index}>\n\t\t\t\t\t\t${this._renderItem(item, index)}\n\t\t\t\t </div>`}\n\t\t`;\n\t}\n\n\thostConnected() {\n\t\tif (!isSSR) {\n\t\t\tthis.host.updateComplete.then(() => {\n\t\t\t\tif (this._containerRef.value) {\n\t\t\t\t\tthis._containerRef.value.addEventListener(\n\t\t\t\t\t\t\"scroll\",\n\t\t\t\t\t\tthis._scheduleUpdate\n\t\t\t\t\t);\n\t\t\t\t\tthis._calculateMetrics();\n\t\t\t\t\tthis._updateVisibleRange();\n\t\t\t\t\tthis.host.requestUpdate();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (!isSSR && this._containerRef.value) {\n\t\t\tthis._intersectionObserver?.observe(this._containerRef.value);\n\t\t\tthis._mutationObserver?.observe(this._containerRef.value, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t\tattributes: true,\n\t\t\t});\n\t\t\tthis._resizeObserver?.observe(this._containerRef.value);\n\t\t}\n\t}\n\n\thostDisconnected() {\n\t\tif (!isSSR && this._containerRef.value) {\n\t\t\tthis._containerRef.value.removeEventListener(\n\t\t\t\t\"scroll\",\n\t\t\t\tthis._scheduleUpdate\n\t\t\t);\n\t\t}\n\n\t\tthis._intersectionObserver?.disconnect();\n\t\tthis._mutationObserver?.disconnect();\n\t\tthis._resizeObserver?.disconnect();\n\t\tif (this._idleCallbackId) {\n\t\t\tcancelIdleCallback(this._idleCallbackId);\n\t\t}\n\t}\n\n\thostUpdated() {\n\t\tif (\n\t\t\t!isSSR &&\n\t\t\t!this._cacheInitialized &&\n\t\t\tthis._containerRef.value &&\n\t\t\tthis._items.length > 0\n\t\t) {\n\t\t\tthis._calculateMetrics();\n\t\t\tthis._updateVisibleRange();\n\t\t\tthis.host.requestUpdate();\n\t\t}\n\t}\n\n\tpublic async updateConfig(\n\t\tnewConfig: VirtualizerConfig<T>,\n\t\tnewRenderItem: (item: T, index: number) => TemplateResult<1>\n\t): Promise<void> {\n\t\tconst oldItemSize = this._itemSize;\n\t\tconst oldCacheSize = this._cacheSize;\n\n\t\tthis._itemSize = newConfig.itemSize ?? 50;\n\t\tthis._layout = newConfig.layout ?? \"vertical\";\n\t\tthis._preloadCount = newConfig.preloadCount ?? 5;\n\t\tthis._cacheSize = newConfig.cacheSize ?? 200;\n\t\tthis._renderItem = newRenderItem;\n\t\tthis._onLoadMore = newConfig.onLoadMore;\n\n\t\t// 处理 items 的更新\n\t\tif (\"items\" in newConfig) {\n\t\t\tthis._initializeItems(newConfig.items);\n\t\t}\n\n\t\tthis._pageSize = newConfig.pageSize ?? this._pageSize;\n\t\tthis._fetchMoreThreshold =\n\t\t\tnewConfig.fetchMoreThreshold ?? this._fetchMoreThreshold;\n\n\t\tif (oldCacheSize !== this._cacheSize) {\n\t\t\tthis._templateBuffer = new CircularBuffer(this._cacheSize);\n\t\t}\n\n\t\tif (oldItemSize !== this._itemSize) {\n\t\t\tthis._calculateMetrics();\n\t\t\tthis._initializeChunks();\n\t\t}\n\n\t\tif (!isSSR) {\n\t\t\tthis._updateVisibleRange();\n\t\t}\n\t\tthis.host.requestUpdate();\n\t}\n\n\tprivate async _checkAndLoadMore(): Promise<void> {\n\t\tif (!this._onLoadMore || this._isLoading || !this._containerRef.value)\n\t\t\treturn;\n\n\t\t// 获取最后一个可见元素的索引\n\t\tconst lastVisibleIndex = this._lastVisible;\n\n\t\t// 计算页大小\n\t\tconst pageSize = this._pageSize || 1000;\n\n\t\t// 检查最后一个可见元素是否是当前页的最后一个元素\n\t\t// 使用Math.floor确保在页的边界上正确触发\n\t\tconst isLastItemOfPage = (lastVisibleIndex + 1) % pageSize === 0;\n\n\t\tif (isLastItemOfPage) {\n\t\t\tconsole.log(\"Reached end of page, loading more...\", {\n\t\t\t\tlastVisibleIndex,\n\t\t\t\tpageSize,\n\t\t\t\ttotalItems: this._items.length,\n\t\t\t});\n\n\t\t\tthis._isLoading = true;\n\t\t\ttry {\n\t\t\t\tawait this._onLoadMore();\n\t\t\t} finally {\n\t\t\t\tthis._isLoading = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getItemSize = (index: number): number => {\n\t\treturn typeof this._itemSize === \"function\"\n\t\t\t? this._itemSize(index)\n\t\t\t: this._itemSize;\n\t};\n\n\tprivate _calculateMetrics = (): void => {\n\t\tif (this._items.length === 0) {\n\t\t\tthis._positionCache = new Float64Array();\n\t\t\tthis._sizeCache = new Float32Array();\n\t\t\tthis._blockStore.initialize(0);\n\t\t\tthis._totalContentSize = 0;\n\t\t\tthis._cacheInitialized = true;\n\t\t\tthis._templateBuffer.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._positionCache = new Float64Array(this._items.length);\n\t\tthis._sizeCache = new Float32Array(this._items.length);\n\t\tthis._blockStore.initialize(this._items.length);\n\n\t\tlet offset = 0;\n\t\tlet currentBlockStart = 0;\n\t\tlet currentBlockTotal = 0;\n\n\t\tfor (let i = 0; i < this._items.length; i++) {\n\t\t\tconst size = this._getItemSize(i);\n\t\t\tthis._positionCache[i] = offset;\n\t\t\tthis._sizeCache[i] = size;\n\n\t\t\tcurrentBlockTotal += size;\n\n\t\t\tif ((i + 1) % BLOCK_SIZE === 0 || i === this._items.length - 1) {\n\t\t\t\tconst blockIndex = Math.floor(i / BLOCK_SIZE);\n\t\t\t\tthis._blockStore.set(blockIndex, {\n\t\t\t\t\tstart: currentBlockStart,\n\t\t\t\t\tend: offset + size,\n\t\t\t\t\ttotal: currentBlockTotal,\n\t\t\t\t});\n\t\t\t\tcurrentBlockStart = offset + size;\n\t\t\t\tcurrentBlockTotal = 0;\n\t\t\t}\n\n\t\t\toffset += size;\n\t\t}\n\t\tthis._totalContentSize = offset;\n\t\tthis._cacheInitialized = true;\n\t\tthis._templateBuffer.clear();\n\t};\n\n\tprivate _findItemIndexByOffset = (offset: number): number => {\n\t\tif (!this._cacheInitialized || this._items.length === 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet low = 0;\n\t\tlet high = this._items.length - 1;\n\t\tlet resultIndex = 0;\n\n\t\twhile (low <= high) {\n\t\t\tconst mid = Math.floor((low + high) / 2);\n\t\t\tif (this._positionCache[mid] <= offset) {\n\t\t\t\tresultIndex = mid;\n\t\t\t\tlow = mid + 1;\n\t\t\t} else {\n\t\t\t\thigh = mid - 1;\n\t\t\t}\n\t\t}\n\t\treturn resultIndex;\n\t};\n\n\tprivate _updateVisibleRange = (): void => {\n\t\tif (!this._containerRef.value) return;\n\n\t\tconst isVertical = this._layout === \"vertical\";\n\t\tconst scrollPosition = isVertical\n\t\t\t? this._containerRef.value.scrollTop\n\t\t\t: this._containerRef.value.scrollLeft;\n\n\t\tconst viewportSize = isVertical\n\t\t\t? this._containerRef.value.clientHeight\n\t\t\t: this._containerRef.value.clientWidth;\n\n\t\tthis._firstVisible = Math.floor(scrollPosition / this._estimatedItemHeight);\n\t\tthis._lastVisible = Math.ceil(\n\t\t\t(scrollPosition + viewportSize) / this._estimatedItemHeight\n\t\t);\n\n\t\t// 检查是否需要加载更多数据\n\t\tthis._checkAndLoadMore();\n\n\t\tthis.host.requestUpdate();\n\t};\n\n\tpublic getRenderedItems(): TemplateResult[] {\n\t\tif (!this._renderItem) return [];\n\n\t\tconst items: TemplateResult[] = [];\n\t\tconst renderSet = new Set<number>();\n\n\t\t// 只渲染可见块中的项\n\t\tfor (const chunkIndex of this._visibleChunkIndexes) {\n\t\t\tconst chunk = this._chunks.get(chunkIndex);\n\t\t\tif (!chunk) continue;\n\n\t\t\tconst start = chunkIndex * this.CHUNK_SIZE;\n\t\t\tchunk.forEach((_item, offset) => {\n\t\t\t\tconst index = start + offset;\n\t\t\t\tif (index >= this._firstVisible && index <= this._lastVisible) {\n\t\t\t\t\trenderSet.add(index);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// 按顺序渲染可见项\n\t\tArray.from(renderSet)\n\t\t\t.sort((a, b) => a - b)\n\t\t\t.forEach((index) => {\n\t\t\t\tconst style = this._getItemStyle(\n\t\t\t\t\tthis._positionCache[index] || index * this._estimatedItemHeight,\n\t\t\t\t\tthis._sizeCache[index] || this._estimatedItemHeight\n\t\t\t\t);\n\t\t\t\titems.push(this._createItemTemplate(this._items[index], index, style));\n\t\t\t});\n\n\t\treturn items;\n\t}\n\n\tprivate _ticking = false;\n\tprivate _lastUpdate = 0;\n\tprivate readonly FRAME_BUDGET = 16;\n\n\tprivate _scheduleUpdate = async (): Promise<void> => {\n\t\tif (this._ticking) return;\n\n\t\tconst now = performance.now();\n\t\tconst timeSinceLastUpdate = now - this._lastUpdate;\n\n\t\tif (timeSinceLastUpdate >= this.FRAME_BUDGET) {\n\t\t\tthis._ticking = true;\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis._updateVisibleRange();\n\t\t\t\tthis._ticking = false;\n\t\t\t\tthis._lastUpdate = performance.now();\n\t\t\t});\n\t\t}\n\t};\n\n\tpublic getContainerRef(): Ref<HTMLElement> {\n\t\treturn this._containerRef;\n\t}\n\n\tpublic getTotalContentSize(): number {\n\t\treturn this._totalContentSize;\n\t}\n\n\tpublic getLayout(): \"vertical\" | \"horizontal\" {\n\t\treturn this._layout;\n\t}\n}\n\n// Global WeakMap to store controllers, associated with their host element.\n// This is essential for the functional component to retrieve the correct controller.\nconst virtualizerControllers = new WeakMap<\n\tReactiveControllerHost,\n\tVirtualizerController<any>\n>();\n\n// 改进宿主检测机制\nconst getCurrentHost = (): ReactiveControllerHost | null => {\n\tif (isSSR) return null;\n\n\ttry {\n\t\t// 尝试从 Lit 内部获取当前渲染上下文\n\t\tconst renderingElement = document.currentScript as any;\n\t\tif (renderingElement && \"_$litElement$\" in renderingElement) {\n\t\t\treturn renderingElement._$litElement$ as ReactiveControllerHost;\n\t\t}\n\t\t// 尝试从自定义元素获取\n\t\tif (customElements && window.customElements) {\n\t\t\tconst current = document.querySelector(\"virtualizer-example\");\n\t\t\tif (current && \"_$litElement$\" in current) {\n\t\t\t\treturn (current as any)._$litElement$ as ReactiveControllerHost;\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tconsole.warn(\"Failed to get Lit host:\", e);\n\t}\n\treturn null;\n};\n\n// 类型保护函数\nfunction isValidHost(\n\thost: ReactiveControllerHost | null\n): host is ReactiveControllerHost {\n\treturn host !== null && typeof host.addController === \"function\";\n}\n\n// --- The Functional Virtualizer Component (with Currying) ---\n\n// Overload 1: For curried usage (Virtualizer(config)(renderItem))\nexport function Virtualizer<T>(\n\tconfig: Omit<VirtualizerConfig<T>, \"renderItem\">\n): (\n\trenderItem: (item: T, index: number) => TemplateResult<1> // renderItem is required in the second call\n) => TemplateResult<1>;\n\nexport function Virtualizer<T>(config: VirtualizerConfig<T>): TemplateResult<1>;\n\n// Overload 2: For direct usage (Virtualizer(config, renderItem))\nexport function Virtualizer<T>(\n\tconfig: VirtualizerConfig<T>,\n\trenderItem: (item: T, index: number) => TemplateResult<1>\n): TemplateResult<1>;\n\n// Implementation of the overloaded function\nexport function Virtualizer<T>(\n\tconfig: VirtualizerConfig<T>,\n\trenderItemOrUndefined?: (item: T, index: number) => TemplateResult<1>\n):\n\t| TemplateResult<1>\n\t| ((\n\t\t\trenderItem: (item: T, index: number) => TemplateResult<1>\n\t ) => TemplateResult<1>) {\n\t// 获取宿主并验证\n\tconst host = getCurrentHost() as ReactiveControllerHost;\n\n\t// 修改降级渲染模式的实现\n\tif (!isValidHost(host)) {\n\t\tconsole.warn(\"Virtualizer: Running in fallback mode\");\n\t\tconst actualRenderItem =\n\t\t\trenderItemOrUndefined ||\n\t\t\tconfig.renderItem ||\n\t\t\t((item: T) => html`${String(item)}`);\n\n\t\tconst items = config.items;\n\n\t\t// 降级渲染模板\n\t\treturn html`\n\t\t\t<div style=\"overflow: auto; height: 100%; position: relative;\">\n\t\t\t\t<div style=\"position: relative;\">\n\t\t\t\t\t${items.map((item: T, index: number) =>\n\t\t\t\t\t\tactualRenderItem(item, index)\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t}\n\n\t// 获取或创建控制器\n\tlet controller = virtualizerControllers.get(host);\n\tif (!controller) {\n\t\tconst initialRenderItem =\n\t\t\trenderItemOrUndefined ||\n\t\t\tconfig.renderItem ||\n\t\t\t((item: T) => html`${item}`);\n\t\tcontroller = new VirtualizerController(host, config, initialRenderItem);\n\t\tvirtualizerControllers.set(host, controller);\n\t}\n\n\t// This is the function that will actually render the virtualizer template\n\tconst renderVirtualizerTemplate = (\n\t\tactualRenderItem: (item: T, index: number) => TemplateResult<1>\n\t): TemplateResult<1> => {\n\t\t// Update controller's config with the latest values (including the passed renderItem)\n\t\tcontroller.updateConfig(config, actualRenderItem);\n\n\t\tconst containerStyle: StyleInfo = {\n\t\t\tposition: \"relative\",\n\t\t\toverflow: isSSR ? \"visible\" : \"auto\",\n\t\t\t[controller.getLayout() === \"vertical\" ? \"height\" : \"width\"]: \"100%\",\n\t\t\t[controller.getLayout() === \"vertical\" ? \"minHeight\" : \"minWidth\"]: \"1px\",\n\t\t};\n\n\t\tconst contentStyle: StyleInfo = {\n\t\t\tposition: \"relative\",\n\t\t\t[controller.getLayout() === \"vertical\"\n\t\t\t\t? \"height\"\n\t\t\t\t: \"width\"]: `${controller.getTotalContentSize()}px`,\n\t\t\ttransform:\n\t\t\t\tcontroller.getLayout() === \"vertical\"\n\t\t\t\t\t? \"translateY(0)\"\n\t\t\t\t\t: \"translateX(0)\",\n\t\t};\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref(controller.getContainerRef())}\n\t\t\t\tstyle=${styleMap(containerStyle)}\n\t\t\t\t@scroll=${isSSR ? nothing : () => controller.host.requestUpdate()}\n\t\t\t>\n\t\t\t\t<div style=${styleMap(contentStyle)}>\n\t\t\t\t\t${controller.getRenderedItems()}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t};\n\n\t// --- Handle the two overloaded function signatures ---\n\tif (renderItemOrUndefined === undefined) {\n\t\tif (\"renderItem\" in config) {\n\t\t\treturn renderVirtualizerTemplate(config.renderItem as any);\n\t\t} else {\n\t\t\treturn (renderItem: (item: T, index: number) => TemplateResult<1>) => {\n\t\t\t\treturn renderVirtualizerTemplate(renderItem);\n\t\t\t};\n\t\t}\n\t} else {\n\t\treturn renderVirtualizerTemplate(renderItemOrUndefined);\n\t}\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function LightboxContainer(props?: {\n\tfadeBg?: string;\n\tzIndex?: number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function LightboxContainer(\n\tprops?: { fadeBg?: string; zIndex?: number; on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function LightboxContainer(\n\tprops?: { fadeBg?: string; zIndex?: number; on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tLightboxContainer(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tLightboxContainer(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst bg = props?.fadeBg ?? \"rgba(0,0,0,0.7)\";\n\tconst z = props?.zIndex ?? 2000;\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: fixed;\n top: 0; left: 0; right: 0; bottom: 0;\n background: ${bg};\n z-index: ${z};\n display: flex;\n justify-content: center;\n align-items: center;\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function Column(props?: {\n\tspace?: string | number;\n\tcenter?: boolean;\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Column(\n\tprops?: {\n\t\tspace?: string | number;\n\t\tcenter?: boolean;\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Column(\n\tprops?: {\n\t\tspace?: string | number;\n\t\tcenter?: boolean;\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tconst binder = createEventBinder(props?.on ?? {});\n\tif (children === undefined) {\n\t\treturn (children) => Column(props, children ?? [html``]);\n\t}\n\treturn html`\n\t\t<div\n\t\t\t.class=\"${props?.className}\"\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: column;\n\t ${props?.center ? \"align-items: center;\" : \"\"}\n ${props?.space ? `gap: ${props.space};` : \"\"}\n ${props?.style ?? \"\"}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tTemp,\n\tWithHtml,\n} from \"../core\";\n\ninterface FlexProps {\n\tdirection?: \"row\" | \"column\";\n\tjustify?: string;\n\talign?: string;\n\tgap?: string | number;\n\ton?: OnEvent;\n}\n\nexport function Flex(props?: FlexProps): WithHtml<renderFnType>;\n\nexport function Flex(props?: FlexProps, children?: renderFnType): Temp;\n\nexport function Flex(\n\tprops?: FlexProps,\n\tchildren?: renderFnType\n): Temp | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children: renderFnType) => Flex(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tFlex(props, html(strings, ...values));\n\t\treturn _ as WithHtml<renderFnType>;\n\t}\n\tconst dir = props?.direction ?? \"row\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: ${dir};\n ${props?.justify ? `justify-content: ${props.justify};` : \"\"}\n ${props?.align ? `align-items: ${props.align};` : \"\"}\n ${props?.gap ? `gap: ${props.gap};` : \"\"}\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function FlowItem(props?: { on?: OnEvent }): WithHtml<renderFnType>;\nexport function FlowItem(\n\tprops?: { on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function FlowItem(\n\tprops?: { on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => FlowItem(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tFlowItem(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"break-inside: avoid; margin-bottom: 16px;\"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function Grid(props?: {\n\tcolumns?: number;\n\tgap?: string | number;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Grid(\n\tprops?: { columns?: number; gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Grid(\n\tprops?: { columns?: number; gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => Grid(props, children ?? [html``]);\n\t}\n\tconst cols = props?.columns ?? 1;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: grid;\n grid-template-columns: repeat(${cols}, 1fr);\n ${props?.gap ? `gap: ${props.gap};` : \"\"}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tTemp,\n\tWithHtml,\n} from \"../core\";\n\nexport function GridCol(props?: {\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function GridCol(\n\tprops?: { gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnType\n): Temp;\n\nexport function GridCol(\n\tprops?: { gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnType\n): Temp | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => GridCol(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tGridCol(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst now = getComponentCount(\"GridCol\");\n\tconst _className =\n\t\tgetRandomClassName(\"GridCol::grid-col\") + \"-lyco-now-\" + now;\n\tconst gapStyle = props?.gap ? `column-gap: ${props.gap};` : \"\";\n\tconst css = `\n .${_className} {\n display: grid;\n grid-auto-flow: column;\n ${gapStyle}\n }\n `;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"GridCol\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function GridItem(props?: {\n\tspan?: number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function GridItem(\n\tprops?: { span?: number; on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function GridItem(\n\tprops?: { span?: number; on?: OnEvent },\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => GridItem(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tGridItem(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"${props?.span ? `grid-column: span ${props.span};` : \"\"}\"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tTemp,\n\tWithHtml,\n} from \"../core\";\n\nexport function GridRow(props?: {\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function GridRow(\n\tprops?: { gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnType\n): Temp;\n\nexport function GridRow(\n\tprops?: { gap?: string | number; on?: OnEvent },\n\tchildren?: renderFnType\n): Temp | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => GridRow(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tGridRow(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst now = getComponentCount(\"GridRow\");\n\tconst _className =\n\t\tgetRandomClassName(\"GridRow::grid-row\") + \"-lyco-now-\" + now;\n\tconst gapStyle = props?.gap ? `row-gap: ${props.gap};` : \"\";\n\tconst css = `\n .${_className} {\n display: grid;\n grid-auto-flow: row;\n ${gapStyle}\n }\n `;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"GridRow\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function Row(props?: {\n\tspace?: string | number;\n\tcenter?: boolean;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Row(\n\tprops?: { space?: string | number; center?: boolean; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Row(\n\tprops?: { space?: string | number; center?: boolean; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) => Row(props, children ?? [html``]);\n\t}\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: row;\n\t\t${props?.center ? \"align-items: center;\" : \"\"}\n ${props?.space ? `gap: ${props.space};` : \"\"}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport interface WaterFlowProps {\n\tcolumnCount?: number;\n\tgap?: string | number;\n\ton?: OnEvent;\n}\n\nexport function WaterFlow(props?: WaterFlowProps): WithHtml<renderFnType>;\n\nexport function WaterFlow(\n\tprops?: WaterFlowProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function WaterFlow(\n\tprops?: WaterFlowProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\t// 如果只传了 props,不传 children,则返回一个接收 children 的函数\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tWaterFlow(props, children ?? html``) as TemplateResult<1>;\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tWaterFlow(props, html(strings, ...values)) as TemplateResult<1>;\n\t\treturn _;\n\t}\n\n\t// 解构 props,并设置默认值\n\tconst count = props?.columnCount ?? 3;\n\tconst gapValue = props?.gap ?? \"16px\";\n\tconst now = getComponentCount(\"WaterFlow\");\n\t// 生成一个随机 className,方便后续扩展样式或避免样式冲突\n\tconst _className =\n\t\tgetRandomClassName(\"WaterFlow::waterflow\") + `-lyco-now-${now}`;\n\n\tconst css = `\n\t/* 使用 CSS 类来控制多列布局 */\n\t.${_className} {\n\t\tcolumn-count: ${count};\n\t\tcolumn-gap: ${typeof gapValue === \"number\" ? `${gapValue}px` : gapValue};\n\t}\n\t/* 子元素如果是块级元素,需要让它们适应多列流式布局 */\n\t.${_className} > * {\n\t\tdisplay: inline-block;\n\t\twidth: 100%;\n\t}\n\t`;\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn LycoComponent(\n\t\t\"WaterFlow\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function ColumnSplit(props?: {\n\tfirstHeight?: string; // 第一个面板固定高度或百分比\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function ColumnSplit(\n\tprops?: {\n\t\tfirstHeight?: string; // 第个面板固定高度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function ColumnSplit(\n\tprops?: {\n\t\tfirstHeight?: string; // 第一个面板固定高度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tColumnSplit(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tColumnSplit(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst gap = props?.gap ?? \"0px\";\n\tconst firstH = props?.firstHeight ?? \"50%\";\n\n\tlet topNode = html``;\n\tlet bottomNode = html``;\n\n\tif (typeof children === \"function\") {\n\t\t// @ts-ignore\n\t\tconst arr = (children as any).call?.(null) ?? [];\n\t\ttopNode = arr[0] ?? html``;\n\t\tbottomNode = arr[1] ?? html``;\n\t} else {\n\t\ttopNode = renderFn(children) as any;\n\t}\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n gap: ${gap};\n \"\n\t\t>\n\t\t\t<div style=\"flex: 0 0 ${firstH}; overflow: auto;\">${topNode}</div>\n\t\t\t<div style=\"flex: 1 1 auto; overflow: auto;\">${bottomNode}</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function RowSplit(props?: {\n\tfirstWidth?: string; // 第一个面板固定宽度或百分比\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function RowSplit(\n\tprops?: {\n\t\tfirstWidth?: string; // 第一个面板固定宽度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function RowSplit(\n\tprops?: {\n\t\tfirstWidth?: string; // 第一个面板固定宽度或百分比\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => RowSplit(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tRowSplit(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst gap = props?.gap ?? \"0px\";\n\tconst firstW = props?.firstWidth ?? \"50%\";\n\n\tlet leftNode = html``;\n\tlet rightNode = html``;\n\n\tif (typeof children === \"function\") {\n\t\t// @ts-ignore\n\t\tconst arr = (children as any).call?.(null) ?? [];\n\t\tleftNode = arr[0] ?? html``;\n\t\trightNode = arr[1] ?? html``;\n\t} else {\n\t\tleftNode = renderFn(children) as any;\n\t}\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: row;\n width: 100%;\n height: 100%;\n gap: ${gap};\n \"\n\t\t>\n\t\t\t<div style=\"flex: 0 0 ${firstW}; overflow: auto;\">${leftNode}</div>\n\t\t\t<div style=\"flex: 1 1 auto; overflow: auto;\">${rightNode}</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function ScrollBar(props?: {\n\tdirection?: \"vertical\" | \"horizontal\";\n\theight?: string;\n\twidth?: string;\n\tcustomCss?: string;\n\tclassName?: string;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function ScrollBar(\n\tprops?: {\n\t\tdirection?: \"vertical\" | \"horizontal\";\n\t\theight?: string;\n\t\twidth?: string;\n\t\tcustomCss?: string;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function ScrollBar(\n\tprops?: {\n\t\tdirection?: \"vertical\" | \"horizontal\";\n\t\theight?: string;\n\t\twidth?: string;\n\t\tcustomCss?: string;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => ScrollBar(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tScrollBar(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst dir = props?.direction ?? \"vertical\";\n\tconst h = props?.height ?? \"100%\";\n\tconst w = props?.width ?? \"100%\";\n\tconst extraCss = props?.customCss ?? \"\";\n\tconst now = getComponentCount(\"ScrollBar\");\n\tconst _className =\n\t\tprops?.className ??\n\t\tgetRandomClassName(\"ScrollBar::scrollbar-container\") + \"-lyco-now-\" + now;\n\tconst overflowStyle =\n\t\tdir === \"horizontal\"\n\t\t\t? \"overflow-x: auto; overflow-y: hidden\"\n\t\t\t: \"overflow-y: auto; overflow-x: hidden\";\n\n\tconst css = `\n\t.${_className} {\n\t ${overflowStyle};\n\t width: ${w};\n\t height: ${h};\n\t}\n\t.${_className}::-webkit-scrollbar {\n\t width: 8px;\n\t height: 8px;\n\t}\n\t.${_className}::-webkit-scrollbar-thumb {\n\t background-color: rgba(0, 0, 0, 0.2);\n\t border-radius: 4px;\n\t}\n\t.${_className}::-webkit-scrollbar-track {\n\t background: rgba(0, 0, 0, 0.05);\n\t}\n\t${extraCss}\n\t`;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"ScrollBar\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function SideBarContainer(props?: {\n\tsidebarWidth?: string; // 侧边栏宽度,比如 \"240px\"\n\tsidebarPosition?: \"left\" | \"right\";\n\tgap?: string | number;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function SideBarContainer(\n\tprops?: {\n\t\tsidebarWidth?: string; // 侧边栏宽度,比如 \"240px\"\n\t\tsidebarPosition?: \"left\" | \"right\";\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function SideBarContainer(\n\tprops?: {\n\t\tsidebarWidth?: string; // 侧边栏宽度,比如 \"240px\"\n\t\tsidebarPosition?: \"left\" | \"right\";\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) =>\n\t\t\tSideBarContainer(props, children ?? [html``]);\n\t}\n\tconst width = props?.sidebarWidth ?? \"240px\";\n\tconst pos = props?.sidebarPosition ?? \"left\";\n\tconst gap = props?.gap ?? \"0px\";\n\n\tlet sidebarContent = html``;\n\tlet mainContent = html``;\n\n\tif (typeof children === \"function\") {\n\t\t// @ts-ignore\n\t\tconst arr = (children as any).call?.(null) ?? [];\n\t\tsidebarContent = arr[0] ?? html``;\n\t\tmainContent = arr[1] ?? html``;\n\t} else {\n\t\tmainContent = renderFnOrArray(children) as any;\n\t}\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: ${pos === \"left\" ? \"row\" : \"row-reverse\"};\n width: 100%;\n height: 100%;\n gap: ${gap};\n \"\n\t\t>\n\t\t\t<div style=\"flex: 0 0 ${width}; overflow: auto;\">${sidebarContent}</div>\n\t\t\t<div style=\"flex: 1 1 auto; overflow: auto;\">${mainContent}</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\n\ntype ScrollDirection = \"x\" | \"y\" | \"both\";\ntype ScrollBehavior = \"auto\" | \"smooth\";\ntype Alignment = \"start\" | \"center\" | \"end\" | \"none\";\ntype NavigationButtonPosition = \"inside\" | \"outside\" | \"none\";\ntype PaginationType = \"dots\" | \"bullets\" | \"fraction\" | \"progressbar\" | \"none\";\n\nexport interface SwiperProps {\n\tgap?: string | number;\n\tsnapType?: \"mandatory\" | \"proximity\";\n\theight?: string;\n\twidth?: string;\n\tclassName?: string;\n\tdirection?: ScrollDirection;\n\tscrollBehavior?: ScrollBehavior;\n\talign?: Alignment;\n\tshowNavigation?: boolean;\n\tnavigationPosition?: NavigationButtonPosition;\n\tshowPagination?: boolean;\n\tpaginationType?: PaginationType;\n\tautoPlay?: boolean;\n\tinterval?: number;\n\tloop?: boolean;\n\ttouchEnabled?: boolean;\n\tmouseWheel?: boolean;\n\tonSlideChange?: (index: number) => void;\n\ton?: OnEvent;\n}\n\n// 支持柯里化调用\nexport function Swiper(\n\tprops?: SwiperProps\n): (\n\tslides?: TemplateResult<1>[] | (() => TemplateResult<1>[])\n) => TemplateResult<1>;\n\nexport function Swiper(\n\tprops?: SwiperProps,\n\tslides?: TemplateResult<1>[] | (() => TemplateResult<1>[])\n): TemplateResult<1>;\n\nexport function Swiper(\n\tprops: SwiperProps = {},\n\tslides?: TemplateResult<1>[] | (() => TemplateResult<1>[])\n):\n\t| ((\n\t\t\tslides?: TemplateResult<1>[] | (() => TemplateResult<1>[])\n\t ) => TemplateResult<1>)\n\t| TemplateResult {\n\t// 如果没有传 slides,就返回一个“部分应用”的函数\n\tif (slides === undefined) {\n\t\treturn (slides?: TemplateResult<1>[] | (() => TemplateResult<1>[])) =>\n\t\t\tSwiper(props, slides ?? [html``]);\n\t}\n\n\tconst now = getComponentCount(\"Swiper\");\n\t// 解构 props,并设置默认值\n\tconst {\n\t\tgap = \"8px\",\n\t\tsnapType = \"mandatory\",\n\t\theight = \"auto\",\n\t\twidth = \"100%\",\n\t\tclassName = getRandomClassName(\"Swiper::swiper\") + `-lyco-now-${now}`,\n\t\tdirection = \"x\",\n\t\tscrollBehavior = \"smooth\",\n\t\talign = \"start\",\n\t\tshowNavigation = true,\n\t\tnavigationPosition = \"inside\",\n\t\tshowPagination = true,\n\t\tpaginationType = \"dots\",\n\t\tautoPlay = false,\n\t\tinterval = 3000,\n\t\tloop = false,\n\t\ttouchEnabled = true,\n\t\tmouseWheel = false,\n\t\tonSlideChange,\n\t\ton,\n\t} = props;\n\n\tconst _className = className;\n\tconst _containerClassName = _className + \"-container\";\n\tconst _slideClassName = _className + \"-slide\";\n\tconst _navigationClassName = _className + \"-navigation\";\n\tconst _paginationClassName = _className + \"-pagination\";\n\n\t// 将 slides 规范成数组\n\tlet _slides: TemplateResult<1>[];\n\tif (!slides) _slides = [];\n\telse if (typeof slides === \"function\") _slides = slides();\n\telse _slides = slides;\n\n\tconst slideCount = _slides.length;\n\n\t// 内部状态:当前索引\n\tconst [currentSlide, setCurrentSlide] = (() => {\n\t\tconst state = { value: 0 };\n\t\treturn [\n\t\t\t() => state.value,\n\t\t\t(index: number) => {\n\t\t\t\tconst newIndex = Math.max(0, Math.min(index, slideCount - 1));\n\t\t\t\tif (state.value !== newIndex) {\n\t\t\t\t\tstate.value = newIndex;\n\t\t\t\t\tonSlideChange?.(newIndex);\n\t\t\t\t}\n\t\t\t},\n\t\t];\n\t})();\n\n\t// 滚动到指定 slide\n\tconst scrollToSlide = (index: number) => {\n\t\tconst container =\n\t\t\ttypeof document !== \"undefined\"\n\t\t\t\t? (document.querySelector(\n\t\t\t\t\t\t`.${_containerClassName}`\n\t\t\t\t ) as HTMLElement | null)\n\t\t\t\t: null;\n\t\tif (!container) return;\n\n\t\tconst slides = container.querySelectorAll(`.${_slideClassName}`);\n\t\tif (index < 0 || index >= slides.length) return;\n\n\t\tconst slide = slides[index] as HTMLElement;\n\t\tconst slideRect = slide.getBoundingClientRect();\n\t\tconst containerRect = container.getBoundingClientRect();\n\n\t\tlet scrollOffset: number;\n\t\tif (direction === \"x\") {\n\t\t\tscrollOffset = slide.offsetLeft - container.offsetLeft;\n\t\t\tif (align === \"center\") {\n\t\t\t\tscrollOffset -= (containerRect.width - slideRect.width) / 2;\n\t\t\t} else if (align === \"end\") {\n\t\t\t\tscrollOffset -= containerRect.width - slideRect.width;\n\t\t\t}\n\t\t\tcontainer.scrollTo({ left: scrollOffset, behavior: scrollBehavior });\n\t\t} else {\n\t\t\tscrollOffset = slide.offsetTop - container.offsetTop;\n\t\t\tif (align === \"center\") {\n\t\t\t\tscrollOffset -= (containerRect.height - slideRect.height) / 2;\n\t\t\t} else if (align === \"end\") {\n\t\t\t\tscrollOffset -= containerRect.height - slideRect.height;\n\t\t\t}\n\t\t\tcontainer.scrollTo({ top: scrollOffset, behavior: scrollBehavior });\n\t\t}\n\n\t\tsetCurrentSlide(index);\n\t};\n\n\t// 下一页/上一页\n\tconst nextSlide = () => {\n\t\tconst nextIndex =\n\t\t\tcurrentSlide() + 1 >= slideCount\n\t\t\t\t? loop\n\t\t\t\t\t? 0\n\t\t\t\t\t: currentSlide()\n\t\t\t\t: currentSlide() + 1;\n\t\tscrollToSlide(nextIndex);\n\t};\n\tconst prevSlide = () => {\n\t\tconst prevIndex =\n\t\t\tcurrentSlide() - 1 < 0\n\t\t\t\t? loop\n\t\t\t\t\t? slideCount - 1\n\t\t\t\t\t: currentSlide()\n\t\t\t\t: currentSlide() - 1;\n\t\tscrollToSlide(prevIndex);\n\t};\n\n\t// 监听滚动:找出最接近中心的 slide\n\tconst handleScroll = () => {\n\t\tconst container =\n\t\t\ttypeof document !== \"undefined\"\n\t\t\t\t? (document.querySelector(\n\t\t\t\t\t\t`.${_containerClassName}`\n\t\t\t\t ) as HTMLElement | null)\n\t\t\t\t: null;\n\t\tif (!container) return;\n\n\t\tconst slides = container.querySelectorAll(`.${_slideClassName}`);\n\t\tlet closestIndex = 0;\n\t\tlet minDistance = Infinity;\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst slideRect = slide.getBoundingClientRect();\n\t\t\tconst containerRect = container.getBoundingClientRect();\n\n\t\t\tlet distance: number;\n\t\t\tif (direction === \"x\") {\n\t\t\t\tconst centerOffset =\n\t\t\t\t\tslideRect.left +\n\t\t\t\t\tslideRect.width / 2 -\n\t\t\t\t\t(containerRect.left + containerRect.width / 2);\n\t\t\t\tdistance = Math.abs(centerOffset);\n\t\t\t} else {\n\t\t\t\tconst centerOffset =\n\t\t\t\t\tslideRect.top +\n\t\t\t\t\tslideRect.height / 2 -\n\t\t\t\t\t(containerRect.top + containerRect.height / 2);\n\t\t\t\tdistance = Math.abs(centerOffset);\n\t\t\t}\n\n\t\t\tif (distance < minDistance) {\n\t\t\t\tminDistance = distance;\n\t\t\t\tclosestIndex = index;\n\t\t\t}\n\t\t});\n\n\t\tsetCurrentSlide(closestIndex);\n\t};\n\n\t// Touch 事件\n\tconst handleTouchStart = (e: TouchEvent) => {\n\t\tif (!touchEnabled) return;\n\t\tconst touch = e.touches[0];\n\t\tconst container = e.currentTarget as HTMLElement;\n\t\tcontainer.dataset.touchStartX = touch.clientX.toString();\n\t\tcontainer.dataset.touchStartY = touch.clientY.toString();\n\t};\n\n\tconst handleTouchMove = (e: TouchEvent) => {\n\t\tif (!touchEnabled) return;\n\t\tconst touch = e.touches[0];\n\t\tconst container = e.currentTarget as HTMLElement;\n\t\tconst startX = parseFloat(container.dataset.touchStartX || \"0\");\n\t\tconst startY = parseFloat(container.dataset.touchStartY || \"0\");\n\t\tconst diffX = touch.clientX - startX;\n\t\tconst diffY = touch.clientY - startY;\n\n\t\tif (Math.abs(diffX) > Math.abs(diffY) || direction === \"x\") {\n\t\t\te.preventDefault();\n\t\t}\n\t};\n\n\tconst handleTouchEnd = (e: TouchEvent) => {\n\t\tif (!touchEnabled) return;\n\t\tconst container = e.currentTarget as HTMLElement;\n\t\tconst startX = parseFloat(container.dataset.touchStartX || \"0\");\n\t\tconst startY = parseFloat(container.dataset.touchStartY || \"0\");\n\t\tif (!startX && !startY) return;\n\n\t\tconst touch = e.changedTouches[0];\n\t\tconst diffX = touch.clientX - startX;\n\t\tconst diffY = touch.clientY - startY;\n\n\t\tconst isSwipe = Math.max(Math.abs(diffX), Math.abs(diffY)) > 30;\n\t\tif (isSwipe) {\n\t\t\tif (direction === \"x\") {\n\t\t\t\tdiffX > 0 ? prevSlide() : nextSlide();\n\t\t\t} else {\n\t\t\t\tdiffY > 0 ? prevSlide() : nextSlide();\n\t\t\t}\n\t\t}\n\n\t\tdelete container.dataset.touchStartX;\n\t\tdelete container.dataset.touchStartY;\n\t};\n\n\t// 鼠标滚轮\n\tconst handleWheel = (e: WheelEvent) => {\n\t\tif (!mouseWheel) return;\n\t\te.preventDefault();\n\t\te.deltaY > 0 ? nextSlide() : prevSlide();\n\t};\n\n\t// 自动播放\n\tconst setupAutoPlay = (container: HTMLElement | null) => {\n\t\tif (!autoPlay || !container) return;\n\n\t\tlet autoplayInterval: ReturnType<typeof setInterval>;\n\n\t\tconst startAutoPlay = () => {\n\t\t\tautoplayInterval = setInterval(nextSlide, interval);\n\t\t};\n\t\tconst stopAutoPlay = () => {\n\t\t\tclearInterval(autoplayInterval);\n\t\t};\n\n\t\tcontainer.addEventListener(\"mouseenter\", stopAutoPlay);\n\t\tcontainer.addEventListener(\"mouseleave\", startAutoPlay);\n\n\t\tstartAutoPlay();\n\n\t\treturn () => {\n\t\t\tclearInterval(autoplayInterval);\n\t\t\tcontainer.removeEventListener(\"mouseenter\", stopAutoPlay);\n\t\t\tcontainer.removeEventListener(\"mouseleave\", startAutoPlay);\n\t\t};\n\t};\n\n\t// 只在客户端执行副作用:绑定各类事件、启动自动播放、初始化滚动\n\tconst runSideEffects = () => {\n\t\tconst container =\n\t\t\ttypeof document !== \"undefined\"\n\t\t\t\t? (document.querySelector(\n\t\t\t\t\t\t`.${_containerClassName}`\n\t\t\t\t ) as HTMLElement | null)\n\t\t\t\t: null;\n\t\tif (!container) return;\n\n\t\tconst cleanupFns: (() => void)[] = [];\n\n\t\tcontainer.addEventListener(\"scroll\", handleScroll);\n\t\tcleanupFns.push(() =>\n\t\t\tcontainer.removeEventListener(\"scroll\", handleScroll)\n\t\t);\n\n\t\tif (touchEnabled) {\n\t\t\tcontainer.addEventListener(\"touchstart\", handleTouchStart);\n\t\t\tcontainer.addEventListener(\"touchmove\", handleTouchMove, {\n\t\t\t\tpassive: false,\n\t\t\t});\n\t\t\tcontainer.addEventListener(\"touchend\", handleTouchEnd);\n\t\t\tcleanupFns.push(() =>\n\t\t\t\tcontainer.removeEventListener(\"touchstart\", handleTouchStart)\n\t\t\t);\n\t\t\tcleanupFns.push(() =>\n\t\t\t\tcontainer.removeEventListener(\"touchmove\", handleTouchMove)\n\t\t\t);\n\t\t\tcleanupFns.push(() =>\n\t\t\t\tcontainer.removeEventListener(\"touchend\", handleTouchEnd)\n\t\t\t);\n\t\t}\n\n\t\tif (mouseWheel) {\n\t\t\tcontainer.addEventListener(\"wheel\", handleWheel, { passive: false });\n\t\t\tcleanupFns.push(() =>\n\t\t\t\tcontainer.removeEventListener(\"wheel\", handleWheel)\n\t\t\t);\n\t\t}\n\n\t\tconst cleanupAutoPlay = setupAutoPlay(container);\n\t\tif (cleanupAutoPlay) cleanupFns.push(cleanupAutoPlay);\n\n\t\tscrollToSlide(0);\n\n\t\t// 如果你想在未来某个时机清理所有事件,可以调用:\n\t\t// cleanupFns.forEach(fn => fn());\n\t\treturn () => cleanupFns.forEach((fn) => fn());\n\t};\n\n\t// **SSR 优化**:只有在浏览器环境下才调度 runSideEffects\n\tif (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n\t\tsetTimeout(runSideEffects, 0);\n\t}\n\n\t// 生成分页 dots\n\tconst paginationDots = html`\n\t\t<div class=\"${_paginationClassName}\">\n\t\t\t${Array.from(\n\t\t\t\t{ length: slideCount },\n\t\t\t\t(_, i) => html`\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"${i === currentSlide() ? \"active\" : \"\"}\"\n\t\t\t\t\t\t@click=${() => scrollToSlide(i)}\n\t\t\t\t\t></button>\n\t\t\t\t`\n\t\t\t)}\n\t\t</div>\n\t`;\n\n\t// 生成分页 fraction\n\tconst paginationFraction = html`\n\t\t<div class=\"${_paginationClassName} fraction\">\n\t\t\t<span class=\"current\">${currentSlide() + 1}</span>\n\t\t\t<span class=\"separator\">/</span>\n\t\t\t<span class=\"total\">${slideCount}</span>\n\t\t</div>\n\t`;\n\n\t// 生成分页 progressbar\n\tconst paginationProgress = html`\n\t\t<div class=\"${_paginationClassName} progressbar\">\n\t\t\t<div\n\t\t\t\tclass=\"progress\"\n\t\t\t\tstyle=\"width: ${slideCount > 1\n\t\t\t\t\t? (currentSlide() / (slideCount - 1)) * 100\n\t\t\t\t\t: 0}%\"\n\t\t\t></div>\n\t\t</div>\n\t`;\n\n\t// 生成导航按钮\n\tconst navigationButtons = html`\n\t\t<div class=\"${_navigationClassName}\">\n\t\t\t<button class=\"prev\" @click=${prevSlide}>◀</button>\n\t\t\t<button class=\"next\" @click=${nextSlide}>▶</button>\n\t\t</div>\n\t`;\n\tconst css = `\n\t.${_className} {\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\twidth: ${width};\n\t\theight: ${height};\n\t}\n\n\t.${_containerClassName} {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow: auto;\n\t\tscroll-snap-type: ${direction + \" \" + snapType};\n\t\t-webkit-overflow-scrolling: touch;\n\t\tscroll-behavior: ${scrollBehavior};\n\t\tgap: ${gap};\n\t\tdisplay: flex;\n\t\tflex-direction: ${direction === \"x\" ? \"row\" : \"column\"};\n\t}\n\n\t.${_slideClassName} {\n\t\tscroll-snap-align: ${align};\n\t\tflex-shrink: 0;\n\t}\n\n\t.${_navigationClassName} {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 0;\n\t\tright: 0;\n\t\ttransform: translateY(-50%);\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpointer-events: none;\n\t\tpadding: ${navigationPosition === \"outside\" ? \"0 1rem\" : \"0 0.5rem\"};\n\t}\n\n\t.${_navigationClassName} button {\n\t\twidth: 2.5rem;\n\t\theight: 2.5rem;\n\t\tborder-radius: 50%;\n\t\tbackground-color: rgba(0, 0, 0, 0.5);\n\t\tcolor: white;\n\t\tborder: none;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tcursor: pointer;\n\t\tpointer-events: auto;\n\t\ttransition: background-color 0.3s;\n\t}\n\n\t.${_navigationClassName} button:hover {\n\t\tbackground-color: rgba(0, 0, 0, 0.8);\n\t}\n\n\t.${_paginationClassName} {\n\t\tposition: absolute;\n\t\tbottom: 1rem;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\tgap: 0.5rem;\n\t\talign-items: center;\n\t}\n\t.${_paginationClassName} button {\n\t\twidth: 0.75rem;\n\t\theight: 0.75rem;\n\t\tborder-radius: 50%;\n\t\tbackground-color: rgba(255, 255, 255, 0.5);\n\t\tborder: none;\n\t\tcursor: pointer;\n\t\ttransition: background-color 0.3s, transform 0.3s;\n\t}\n\t.${_paginationClassName} button.active {\n\t\tbackground-color: white;\n\t\ttransform: scale(1.2);\n\t}\n\n\t.${_paginationClassName}.fraction {\n\t\tposition: absolute;\n\t\tbottom: 1rem;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\tcolor: white;\n\t\tfont-size: 1rem;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 0.25rem;\n\t}\n\n\t.${_paginationClassName}.progressbar {\n\t\tposition: absolute;\n\t\tbottom: 0.5rem;\n\t\tleft: 0;\n\t\tright: 0;\n\t\theight: 0.25rem;\n\t\tbackground-color: rgba(255, 255, 255, 0.2);\n\t}\n\t.${_paginationClassName}.progressbar .progress {\n\t\theight: 100%;\n\t\tbackground-color: white;\n\t\ttransition: width 0.3s;\n\t}\n\t`;\n\n\tconst binder = createEventBinder(on ?? {});\n\n\t// 最终返回的模板\n\treturn LycoComponent(\n\t\t\"Swiper\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t<div class=\"${_containerClassName}\">\n\t\t\t\t\t${_slides.map(\n\t\t\t\t\t\t(slide, index) => html`\n\t\t\t\t\t\t\t<div class=\"${_slideClassName} --slide-${index}\" key=${index}>\n\t\t\t\t\t\t\t\t${slide}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\n\t\t\t\t${showNavigation ? navigationButtons : null}\n\t\t\t\t${showPagination && paginationType === \"dots\" ? paginationDots : null}\n\t\t\t\t${showPagination && paginationType === \"fraction\"\n\t\t\t\t\t? paginationFraction\n\t\t\t\t\t: null}\n\t\t\t\t${showPagination && paginationType === \"progressbar\"\n\t\t\t\t\t? paginationProgress\n\t\t\t\t\t: null}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","export const MD3 = {\n\t// 圆角设置\n\tborderRadius: {\n\t\tsmall: \"4px\",\n\t\tmedium: \"8px\",\n\t\tlarge: \"16px\",\n\t\tfull: \"9999px\",\n\t},\n\n\t// 阴影层级\n\televation: {\n\t\tlevel1: \"0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.14)\",\n\t\tlevel2: \"0 3px 6px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.12)\",\n\t\tlevel3: \"0 10px 20px rgba(0,0,0,0.15), 0 3px 6px rgba(0,0,0,0.10)\",\n\t\tlevel4: \"0 15px 25px rgba(0,0,0,0.15), 0 5px 10px rgba(0,0,0,0.05)\",\n\t\tlevel5: \"0 20px 40px rgba(0,0,0,0.2)\",\n\t},\n\n\t// 动画过渡\n\tanimation: {\n\t\tstandard: \"0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n\t\temphasized: \"0.3s cubic-bezier(0.4, 0, 0.2, 1)\",\n\t\tdecelerated: \"0.4s cubic-bezier(0, 0, 0.2, 1)\",\n\t},\n\n\t// 调色板\n\tcolors: {\n\t\tprimary: \"#6750A4\",\n\t\tonPrimary: \"#FFFFFF\",\n\t\tprimaryContainer: \"#EADDFF\",\n\t\tonPrimaryContainer: \"#21005E\",\n\n\t\tsecondary: \"#625B71\",\n\t\tonSecondary: \"#FFFFFF\",\n\t\tsecondaryContainer: \"#E8DEF8\",\n\t\tonSecondaryContainer: \"#1E192B\",\n\n\t\tsurface: \"#FEF7FF\",\n\t\tonSurface: \"#1C1B1F\",\n\t\tsurfaceVariant: \"#E7E0EB\",\n\t\tonSurfaceVariant: \"#49454E\",\n\n\t\terror: \"#B00020\",\n\t},\n} as const;\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\nimport { MD3 } from \"../theme/md3\";\n\nexport interface SwitchInputProps {\n\tchecked?: boolean;\n\tdisabled?: boolean;\n\tsize?: \"small\" | \"medium\" | \"large\";\n\tcolor?: string;\n\tonChange?: (checked: boolean) => void;\n\tclassName?: string;\n\ton?: OnEvent;\n}\n\nexport function SwitchInput(props?: SwitchInputProps): TemplateResult<1> {\n\tconst {\n\t\tchecked = false,\n\t\tdisabled = false,\n\t\tsize = \"medium\",\n\t\tcolor = MD3.colors.primary,\n\t\tonChange,\n\t\tclassName = \"\",\n\t\ton = {},\n\t} = props ?? {};\n\n\tconst now = getComponentCount(\"SwitchInput\");\n\tconst _className =\n\t\tgetRandomClassName(\"SwitchInput::switch\") + `-lyco-now-${now}`;\n\n\t// 计算尺寸\n\tconst sizeMap = {\n\t\tsmall: { width: 32, height: 16, thumbSize: 12 },\n\t\tmedium: { width: 44, height: 24, thumbSize: 18 },\n\t\tlarge: { width: 56, height: 32, thumbSize: 24 },\n\t};\n\tconst { width, height, thumbSize } = sizeMap[size];\n\n\tconst css = `\n .${_className} {\n display: inline-block;\n position: relative;\n width: ${width}px;\n height: ${height}px;\n cursor: ${disabled ? \"not-allowed\" : \"pointer\"};\n }\n\n .${_className} input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n\n .${_className} .slider {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: ${\n\t\t\t\tdisabled ? MD3.colors.surfaceVariant : MD3.colors.onSurfaceVariant\n\t\t\t};\n transition: ${MD3.animation.standard};\n border-radius: ${height}px;\n opacity: ${disabled ? 0.38 : 0.5};\n }\n\n .${_className} .slider:before {\n position: absolute;\n content: \"\";\n height: ${thumbSize}px;\n width: ${thumbSize}px;\n left: ${(height - thumbSize) / 2}px;\n bottom: ${(height - thumbSize) / 2}px;\n background-color: ${MD3.colors.surface};\n transition: ${MD3.animation.emphasized};\n border-radius: 50%;\n box-shadow: ${MD3.elevation.level1};\n }\n\n .${_className} input:checked + .slider {\n background-color: ${disabled ? MD3.colors.surfaceVariant : color};\n opacity: ${disabled ? 0.38 : 1};\n }\n\n .${_className} input:checked + .slider:before {\n transform: translateX(${width - height}px);\n background-color: ${MD3.colors.onPrimary};\n }\n\n .${_className}:hover .slider:before {\n box-shadow: ${disabled ? MD3.elevation.level1 : MD3.elevation.level2};\n }\n\n .${_className}:active .slider:before {\n box-shadow: ${disabled ? MD3.elevation.level1 : MD3.elevation.level3};\n width: ${thumbSize * 1.2}px;\n }\n `;\n\n\tconst binder = createEventBinder(on);\n\n\treturn LycoComponent(\n\t\t\"SwitchInput\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<label\n\t\t\t\tclass=\"${_className} ${className}\"\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t?checked=${checked}\n\t\t\t\t\t?disabled=${disabled}\n\t\t\t\t\t@change=${(e: Event) => {\n\t\t\t\t\t\tif (!disabled && onChange) {\n\t\t\t\t\t\t\tonChange((e.target as HTMLInputElement).checked);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<span class=\"slider\"></span>\n\t\t\t</label>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnOrCurry,\n\trenderFnType,\n} from \"../core\";\n\ntype AbsoluteBoxProps = {\n\ttop?: string;\n\tright?: string;\n\tbottom?: string;\n\tleft?: string;\n\twidth?: string;\n\theight?: string;\n\tzIndex?: number;\n\tstyle?: string;\n\tclassName?: string;\n\ton?: OnEvent;\n};\n\nexport function AbsoluteBox(\n\tprops?: AbsoluteBoxProps\n): (children?: renderFnType) => TemplateResult<1>;\n\nexport function AbsoluteBox(\n\tprops?: AbsoluteBoxProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function AbsoluteBox(props?: AbsoluteBoxProps, children?: renderFnType) {\n\tconst t = props?.top ? `top: ${props.top};` : \"\";\n\tconst r = props?.right ? `right: ${props.right};` : \"\";\n\tconst b = props?.bottom ? `bottom: ${props.bottom};` : \"\";\n\tconst l = props?.left ? `left: ${props.left};` : \"\";\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst z =\n\t\ttypeof props?.zIndex === \"number\" ? `z-index: ${props.zIndex};` : \"\";\n\tconst style = props?.style ? props.style : \"\";\n\tconst className = props?.className ? props.className : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst render = (children?: renderFnType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${className}\"\n\t\t\t\tstyle=\"\n position: absolute;\n ${t} ${r} ${b} ${l}\n ${w} ${h}\n ${z}\n\t ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`;\n\t};\n\treturn renderFnOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface AcrylicBarProps {\n\twidth?: string; // 宽度,如 \"300px\" 或 \"50%\"\n\theight?: string; // 高度,如 \"auto\" 或 \"200px\"\n\ttop?: string; // 距离顶部距离,默认 \"20%\"\n\tbottom?: string; // 距离底部距离,默认 \"auto\"\n\tleft?: string; // 距离左侧距离,默认 \"50%\"\n\tright?: string; // 距离右侧距离,默认 \"auto\"\n\tbackground?: string; // 背景色,支持透明度,默认 \"rgba(255,255,255,0.3)\"\n\tblur?: string; // 模糊半径,默认 \"10px\"\n\tborderRadius?: string; // 圆角,默认 \"12px\"\n\tpadding?: string; // 内边距,默认 \"16px\"\n\tzIndex?: number; // z-index,默认 1000\n\ton?: OnEvent;\n}\n\nexport function AcrylicBar(\n\tprops?: AcrylicBarProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function AcrylicBar(\n\tprops?: AcrylicBarProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function AcrylicBar(\n\tprops?: AcrylicBarProps,\n\tchildren?: renderFnOrArrayType\n) {\n\tconst w = props?.width ?? \"300px\";\n\tconst h = props?.height ?? \"auto\";\n\tconst top = props?.top ?? \"20%\";\n\tconst bottom = props?.bottom ?? \"auto\";\n\tconst left = props?.left ?? \"50%\";\n\tconst right = props?.right ?? \"auto\";\n\t// 如果 left 被设置为非 \"auto\",则让组件水平居中\n\tconst translateX = left !== \"auto\" ? \"transform: translateX(-50%);\" : \"\";\n\tconst bg = props?.background ?? \"rgba(255, 255, 255, 0.3)\";\n\tconst blur = props?.blur ?? \"10px\";\n\tconst br = props?.borderRadius ?? \"12px\";\n\tconst pd = props?.padding ?? \"16px\";\n\tconst z = props?.zIndex ?? 1000;\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst render = (children: TemplateResult) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tstyle=\"\n position: fixed;\n top: ${top};\n bottom: ${bottom};\n left: ${left};\n right: ${right};\n ${translateX}\n width: ${w};\n height: ${h};\n background: ${bg};\n backdrop-filter: blur(${blur});\n -webkit-backdrop-filter: blur(${blur});\n border-radius: ${br};\n padding: ${pd};\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);\n z-index: ${z};\n display: flex;\n flex-direction: column;\n \"\n\t\t\t>\n\t\t\t\t${children}\n\t\t\t</div>\n\t\t`;\n\t};\n\treturn renderFnOrArrayOrCurry(children, undefined, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface AspectRatioProps {\n\tratio: number; // 宽高比,例如 16/9、4/3\n\tmaxWidth?: string;\n\tbackground?: string;\n\toverflow?: string;\n\ton?: OnEvent;\n}\n\nexport function AspectRatio(\n\tprops: AspectRatioProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function AspectRatio(\n\tprops: AspectRatioProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function AspectRatio(\n\tprops: AspectRatioProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => AspectRatio(props, children ?? [html``]);\n\t}\n\tconst paddingTop = `${100 / props.ratio}%`;\n\tconst mw = props.maxWidth ? `max-width: ${props.maxWidth};` : \"\";\n\tconst bg = props.background ? `background: ${props.background};` : \"\";\n\tconst ov = props.overflow ?? \"hidden\";\n\tconst binder = createEventBinder(props.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: relative;\n width: 100%;\n ${mw}\n ${bg}\n overflow: ${ov};\n \"\n\t\t>\n\t\t\t<div style=\"width: 100%; padding-top: ${paddingTop};\"></div>\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n \"\n\t\t\t>\n\t\t\t\t${renderFnOrArray(children)}\n\t\t\t</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function AutoFitGrid(props: {\n\tminItemWidth: string;\n\tgap?: string | number;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function AutoFitGrid(\n\tprops: {\n\t\tminItemWidth: string;\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function AutoFitGrid(\n\tprops: {\n\t\tminItemWidth: string;\n\t\tgap?: string | number;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => AutoFitGrid(props, children);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tAutoFitGrid(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst now = getComponentCount(\"AutoFitGrid\");\n\tconst _className =\n\t\tgetRandomClassName(\"AutoFitGrid::auto-fit-grid\") + \"-lyco-now-\" + now; // 生成随机类名\n\tconst gap = props?.gap ?? \"16px\";\n\tconst css = `\n .${_className} {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(${props.minItemWidth}, 1fr));\n gap: ${gap};\n }\n `;\n\tconst binder = createEventBinder(props.on ?? {});\n\treturn LycoComponent(\n\t\t\"AutoFitGrid\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\tclass=\"${_className}\"\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function AvatarStack(props?: {\n\tsize?: string;\n\toverlap?: string;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function AvatarStack(\n\tprops?: { size?: string; overlap?: string; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function AvatarStack(\n\tprops?: { size?: string; overlap?: string; on?: OnEvent },\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) =>\n\t\t\tAvatarStack(props, children ?? [html``]);\n\t}\n\tconst sz = props?.size ?? \"32px\";\n\tconst ov = props?.overlap ?? \"-8px\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst injectBox = (avatar: TemplateResult, idx?: number) => html`\n\t\t<div\n\t\t\tstyle=\"\n width: ${sz};\n height: ${sz};\n border-radius: 50%;\n overflow: hidden;\n border: 2px solid #fff;\n margin-left: ${idx === 0 ? \"0\" : ov};\n box-sizing: content-box;\n \"\n\t\t>\n\t\t\t${avatar}\n\t\t</div>\n\t`;\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"display: flex; align-items: center;\"\n\t\t>\n\t\t\t${renderFnOrArray(children, injectBox)}\n\t\t</div>\n\t`;\n}\n","// Badge.ts\nimport { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\ninterface BadgeProps {\n\tcontent?: string | number;\n\tposition?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\";\n\tsize?: string;\n\tbackground?: string;\n\tcolor?: string;\n\ton?: OnEvent;\n}\n\nexport function Badge(props?: BadgeProps): WithHtml<renderFnType>;\n\nexport function Badge(\n\tprops?: BadgeProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function Badge(\n\tprops?: BadgeProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Badge(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tBadge(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst pos = props?.position ?? \"top-right\";\n\tconst size = props?.size ?? \"16px\";\n\tconst bg = props?.background ?? \"red\";\n\tconst col = props?.color ?? \"#fff\";\n\t// 计算定位\n\tconst [top, right, bottom, left] = [\n\t\tpos.includes(\"top\") ? \"0\" : \"auto\",\n\t\tpos.includes(\"right\") ? \"0\" : \"auto\",\n\t\tpos.includes(\"bottom\") ? \"0\" : \"auto\",\n\t\tpos.includes(\"left\") ? \"0\" : \"auto\",\n\t];\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div style=\"position: relative; display: inline-block;\">\n\t\t\t${renderFn(children)}\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tstyle=\"\n position: absolute;\n top: ${top};\n right: ${right};\n bottom: ${bottom};\n left: ${left};\n width: ${size};\n height: ${size};\n background: ${bg};\n color: ${col};\n font-size: calc(${size} * 0.6);\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n transform: translate(${left === \"0\"\n\t\t\t\t\t? \"-50%\"\n\t\t\t\t\t: left === \"auto\"\n\t\t\t\t\t? \"0\"\n\t\t\t\t\t: \"0\"}, ${top === \"0\" ? \"-50%\" : top === \"auto\" ? \"0\" : \"0\"});\n \"\n\t\t\t>\n\t\t\t\t${props?.content ?? \"\"}\n\t\t\t</div>\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { createRef, ref, RefOrCallback } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\nexport function Canvas(props?: {\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n}): (initRef?: RefOrCallback<HTMLCanvasElement>) => TemplateResult<1>;\n\nexport function Canvas(\n\tprops?: {\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t},\n\tinitRef?: RefOrCallback<HTMLCanvasElement>\n): TemplateResult<1>;\n\nexport function Canvas(\n\tprops?: {\n\t\tclassName?: string;\n\t\tstyle?: string;\n\t\ton?: OnEvent;\n\t},\n\tinitRef?: RefOrCallback<HTMLCanvasElement>\n):\n\t| ((initRef?: RefOrCallback<HTMLCanvasElement>) => TemplateResult<1>)\n\t| TemplateResult<1> {\n\tif (!initRef) {\n\t\treturn (initRef?: RefOrCallback<HTMLCanvasElement>) =>\n\t\t\tCanvas(props, initRef ?? createRef()) as TemplateResult<1>;\n\t}\n\t// 绑定事件\n\tconst binder = createEventBinder(props?.on ?? {});\n\t// 合并外部引用与事件绑定引用\n\tconst combinedRef = (el: Element | undefined) => {\n\t\tif (el) {\n\t\t\tbinder.bind(el);\n\t\t\ttypeof initRef === \"function\"\n\t\t\t\t? initRef(el as HTMLCanvasElement)\n\t\t\t\t: (initRef = { value: el as HTMLCanvasElement });\n\t\t} else {\n\t\t\tbinder.unbindAll();\n\t\t}\n\t};\n\n\treturn html`\n\t\t<canvas\n\t\t\t${ref(combinedRef)}\n\t\t\t.class=${props?.className}\n\t\t\tstyle=${props?.style ?? \"\"}\n\t\t></canvas>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface CardProps {\n\tpadding?: string;\n\tborderRadius?: string;\n\tshadow?: string;\n\tbackground?: string;\n\ton?: OnEvent;\n}\n\nexport function Card(\n\tprops?: CardProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Card(\n\tprops?: CardProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Card(\n\tprops?: CardProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => Card(props, children ?? [html``]);\n\t}\n\tconst pd = props?.padding ?? \"16px\";\n\tconst br = props?.borderRadius ?? \"8px\";\n\tconst sd = props?.shadow ?? \"0 2px 8px rgba(0,0,0,0.1)\";\n\tconst bg = props?.background ?? \"#fff\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n background: ${bg};\n border-radius: ${br};\n box-shadow: ${sd};\n padding: ${pd};\n box-sizing: border-box;\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\nexport function Center(props?: {\n\twidth?: string;\n\theight?: string;\n\tbackground?: string;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function Center(\n\tprops?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function Center(\n\tprops?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Center(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tCenter(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst bg = props?.background ? `background: ${props.background};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n justify-content: center;\n align-items: center;\n ${w} ${h} ${bg}\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\nimport { MD3 } from \"../theme/md3\";\n\nexport interface ComboboxOption {\n\tvalue: string;\n\tlabel: string;\n}\n\nexport interface ComboboxProps {\n\tvalue?: string;\n\toptions: ComboboxOption[];\n\tplaceholder?: string;\n\tdisabled?: boolean;\n\terror?: boolean;\n\tclassName?: string;\n\tstyle?: string;\n\tmaxHeight?: string;\n\tonChange?: (value: string) => void;\n\tonInput?: (value: string) => void;\n\tonFocus?: () => void;\n\tonBlur?: () => void;\n\ton?: OnEvent;\n\toptionRender?: (option: ComboboxOption) => TemplateResult<1>;\n}\n\nexport function Combobox(props?: ComboboxProps): TemplateResult<1> {\n\tconst {\n\t\tvalue = \"\",\n\t\toptions = [],\n\t\tplaceholder = \"\",\n\t\tdisabled = false,\n\t\terror = false,\n\t\tclassName = \"\",\n\t\tstyle = \"\",\n\t\tmaxHeight = \"300px\",\n\t\tonChange,\n\t\tonInput,\n\t\tonFocus,\n\t\tonBlur,\n\t\ton = {},\n\t\toptionRender,\n\t} = props ?? {};\n\n\tconst now = getComponentCount(\"Combobox\");\n\tconst _className =\n\t\tgetRandomClassName(\"Combobox::combobox\") + `-lyco-now-${now}`;\n\tlet isOpen = false;\n\tlet inputElement: HTMLInputElement | null = null;\n\n\tconst css = `\n .${_className} {\n position: relative;\n width: 100%;\n }\n\n .${_className} input {\n width: 100%;\n padding: 12px 16px;\n font-size: 16px;\n border: 1px solid ${error ? MD3.colors.error : MD3.colors.surfaceVariant};\n border-radius: ${MD3.borderRadius.small};\n color: ${MD3.colors.onSurface};\n transition: all ${MD3.animation.standard};\n outline: none;\n box-sizing: border-box;\n }\n\n .${_className} input:focus {\n border-color: ${MD3.colors.primary};\n box-shadow: 0 0 0 2px ${MD3.colors.primaryContainer};\n }\n\n .${_className} input:disabled {\n background: ${MD3.colors.surfaceVariant};\n color: ${MD3.colors.onSurfaceVariant};\n cursor: not-allowed;\n }\n\n .${_className} .options {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n max-height: ${maxHeight};\n overflow-y: auto;\n border: 1px solid ${MD3.colors.surfaceVariant};\n border-radius: ${MD3.borderRadius.small};\n box-shadow: ${MD3.elevation.level2};\n z-index: 1000;\n display: none;\n }\n\n .${_className} .options.open {\n display: block;\n }\n\n .${_className} .option {\n padding: 12px 16px;\n cursor: pointer;\n transition: background ${MD3.animation.standard};\n }\n\n .${_className} .option:hover {\n background: ${MD3.colors.primaryContainer};\n }\n\n .${_className} .option.selected {\n background: ${MD3.colors.primaryContainer};\n color: ${MD3.colors.onPrimaryContainer};\n }\n `;\n\n\tconst binder = createEventBinder(on);\n\tlet optionsElement: HTMLElement | null = null;\n\n\tconst toggleOptions = () => {\n\t\tif (isOpen) {\n\t\t\toptionsElement?.classList.remove(\"open\");\n\t\t} else {\n\t\t\toptionsElement?.classList.add(\"open\");\n\t\t}\n\t\tisOpen = !isOpen;\n\t};\n\n\tconst handleOptionClick = (option: ComboboxOption, ev: MouseEvent) => {\n\t\tif (inputElement) {\n\t\t\tinputElement.value = option.value;\n\t\t\tconst t = ev.currentTarget as HTMLElement;\n\t\t\t// 先删除其他的 selected\n\t\t\tArray.from(optionsElement?.querySelectorAll(\".selected\") ?? []).forEach(\n\t\t\t\t(t) => t.classList.remove(\"selected\")\n\t\t\t);\n\t\t\t!t.classList.contains(\"selected\") && t.classList.add(\"selected\");\n\t\t\tonChange?.(option.value);\n\t\t}\n\t\ttoggleOptions();\n\t};\n\n\tconst handleClickOutside = (e: MouseEvent) => {\n\t\tconst target = e.target as HTMLElement;\n\t\tif (!target.closest(`.${_className}`)) {\n\t\t\tisOpen = false;\n\t\t\toptionsElement?.classList.remove(\"open\");\n\t\t}\n\t};\n\n\tif (typeof window !== \"undefined\") {\n\t\tdocument.addEventListener(\"click\", handleClickOutside);\n\t}\n\n\treturn LycoComponent(\n\t\t\"Combobox\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div class=\"${_className} ${className}\" style=\"${style}\">\n\t\t\t\t<input\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\tinputElement = el as HTMLInputElement;\n\t\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t.value=${value}\n\t\t\t\t\tplaceholder=${placeholder}\n\t\t\t\t\t?disabled=${disabled}\n\t\t\t\t\t@focus=${() => {\n\t\t\t\t\t\tonFocus?.();\n\t\t\t\t\t\ttoggleOptions();\n\t\t\t\t\t}}\n\t\t\t\t\t@input=${(e: Event) => {\n\t\t\t\t\t\tconst target = e.target as HTMLInputElement;\n\t\t\t\t\t\tonInput?.(target.value);\n\t\t\t\t\t}}\n\t\t\t\t\t@change=${(e: Event) => {\n\t\t\t\t\t\tconst target = e.target as HTMLInputElement;\n\t\t\t\t\t\tonChange?.(target.value);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<div\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) optionsElement = el as HTMLElement;\n\t\t\t\t\t})}\n\t\t\t\t\tclass=\"options\"\n\t\t\t\t>\n\t\t\t\t\t${options.map(\n\t\t\t\t\t\t(option) => html`\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"option ${option.value === (inputElement?.value ?? value)\n\t\t\t\t\t\t\t\t\t? \"selected\"\n\t\t\t\t\t\t\t\t\t: \"\"}\"\n\t\t\t\t\t\t\t\t@click=${(ev: MouseEvent) => handleOptionClick(option, ev)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t${optionRender ? optionRender(option) : option.label}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport type ContainerProps = {\n\tmaxWidth?: string;\n\tpadding?: string;\n\tbackground?: string;\n\tfullHeight?: boolean;\n\ton?: OnEvent;\n};\n\nexport function Container(\n\tprops?: ContainerProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Container(\n\tprops?: ContainerProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Container(\n\tprops?: ContainerProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => Container(props, children ?? [html``]);\n\t}\n\tconst mw = props?.maxWidth ?? \"1024px\";\n\tconst pad = props?.padding ?? \"0 16px\";\n\tconst bg = props?.background ? `background: ${props.background};` : \"\";\n\tconst h = props?.fullHeight ? \"height: 100%;\" : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n width: 100%;\n max-width: ${mw};\n margin-left: auto;\n margin-right: auto;\n padding: ${pad};\n ${bg}\n ${h}\n box-sizing: border-box;\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\nexport function Divider(props?: {\n\torientation?: \"horizontal\" | \"vertical\";\n\tthickness?: string;\n\tcolor?: string;\n\tmargin?: string;\n\ton?: OnEvent;\n}) {\n\tconst ori = props?.orientation ?? \"horizontal\";\n\tconst thickness = props?.thickness ?? \"1px\";\n\tconst color = props?.color ?? \"#e0e0e0\";\n\tconst margin = props?.margin ?? (ori === \"horizontal\" ? \"8px 0\" : \"0 8px\");\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\tconst style =\n\t\tori === \"horizontal\"\n\t\t\t? `width: 100%; height: ${thickness}; background: ${color}; margin: ${margin};`\n\t\t\t: `width: ${thickness}; height: 100%; background: ${color}; margin: ${margin};`;\n\n\treturn html`<div\n\t\t${ref((el) => {\n\t\t\tif (el) {\n\t\t\t\tbinder.bind(el);\n\t\t\t} else {\n\t\t\t\tbinder.unbindAll();\n\t\t\t}\n\t\t})}\n\t\tstyle=\"${style}\"\n\t></div>`;\n}\n","// FooterLayout.ts\nimport { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tTemp,\n\tWithHtml,\n} from \"../core\";\n\ninterface FooterLayoutProps {\n\tcolumns?: number;\n\tgap?: string;\n\tbackground?: string;\n\tpadding?: string;\n\ton?: OnEvent;\n}\n\nexport function FooterLayout(props?: FooterLayoutProps): WithHtml<renderFnType>;\n\nexport function FooterLayout(\n\tprops?: FooterLayoutProps,\n\tchildren?: renderFnType\n): Temp;\n\nexport function FooterLayout(\n\tprops?: FooterLayoutProps,\n\tchildren?: renderFnType\n): WithHtml<renderFnType> | Temp {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tFooterLayout(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tFooterLayout(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst cols = props?.columns ?? 4;\n\tconst gap = props?.gap ?? \"24px\";\n\tconst bg = props?.background ?? \"#f8f8f8\";\n\tconst pad = props?.padding ?? \"40px 16px\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n width: 100%;\n background: ${bg};\n padding: ${pad};\n box-sizing: border-box;\n \"\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle=\"\n display: grid;\n grid-template-columns: repeat(${cols}, 1fr);\n gap: ${gap};\n \"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t\t<div style=\"text-align: center; margin-top: 24px; color: #666;\">\n\t\t\t\t© ${new Date().getFullYear()} Your Company. All rights reserved.\n\t\t\t</div>\n\t\t</div>\n\t`;\n}\n","import { TemplateResult } from \"lit\";\n\nexport function ForEach<T extends any[]>(\n\titem: T\n): (\n\trender: (item: T[number], index: number) => TemplateResult<1>\n) => TemplateResult<1>[];\n\nexport function ForEach<T extends any[]>(\n\titem: T,\n\trender: (item: T[number], index: number) => TemplateResult<1>\n): TemplateResult<1>[];\n\nexport function ForEach<T extends any[]>(\n\titem: T,\n\trender?: (item: T[number], index: number) => TemplateResult<1>\n):\n\t| TemplateResult<1>[]\n\t| ((\n\t\t\trender: (item: T[number], index: number) => TemplateResult<1>\n\t ) => TemplateResult<1>[]) {\n\tif (render) {\n\t\treturn item.map((value, index) => render(value, index));\n\t} else {\n\t\treturn (render: (item: T[number], index: number) => TemplateResult<1>) =>\n\t\t\titem.map((value, index) => render(value, index));\n\t}\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport type GridBreakpointProps = {\n\tbreakpoints: Record<string, number>;\n\tdefaultColumns?: number;\n\tgap?: string;\n\tclassName?: string;\n\ton?: OnEvent;\n};\n\nexport function GridBreakpoint(\n\tprops: GridBreakpointProps\n): WithHtml<renderFnType>;\n\nexport function GridBreakpoint(\n\tprops: GridBreakpointProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function GridBreakpoint(\n\tprops: GridBreakpointProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tGridBreakpoint(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tGridBreakpoint(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst defCols = props.defaultColumns ?? 1;\n\tconst gap = props.gap ?? \"16px\";\n\tconst now = getComponentCount(\"GridBreakpoint\");\n\tconst _className =\n\t\tprops.className ??\n\t\tgetRandomClassName(\"GridBreakpoint::grid-breakpoint\") + \"-lyco-now-\" + now;\n\t// 生成媒体查询 CSS\n\tconst mqCss = Object.entries(props.breakpoints)\n\t\t.map(\n\t\t\t([query, cols]) =>\n\t\t\t\t\"@media\" +\n\t\t\t\tquery +\n\t\t\t\t\"{\\n\" +\n\t\t\t\t_className +\n\t\t\t\t\"{ grid-template-columns: repeat(\" +\n\t\t\t\tcols +\n\t\t\t\t\", 1fr); }\\n\" +\n\t\t\t\t\"}\"\n\t\t)\n\t\t.join(\"\\n\");\n\tconst css = `\n\t.${_className} {\n\t display: grid;\n\t grid-template-columns: repeat(${defCols}, 1fr);\n\t gap: ${gap};\n\t}\n\t${mqCss}`;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"GridBreakpoint\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function HeroSection(props?: {\n\tbackgroundImage?: string;\n\theight?: string;\n\toverlayColor?: string;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function HeroSection(\n\tprops?: {\n\t\tbackgroundImage?: string;\n\t\theight?: string;\n\t\toverlayColor?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function HeroSection(\n\tprops?: {\n\t\tbackgroundImage?: string;\n\t\theight?: string;\n\t\toverlayColor?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children) => HeroSection(props, children ?? [html``]);\n\t}\n\n\tconst bgImage = props?.backgroundImage\n\t\t? `background-image: url('${props.backgroundImage}');`\n\t\t: \"\";\n\tconst height = props?.height ?? \"400px\";\n\tconst overlay = props?.overlayColor ?? \"rgba(0, 0, 0, 0.3)\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: relative;\n width: 100%;\n height: ${height};\n ${bgImage}\n background-size: cover;\n background-position: center;\n \"\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: absolute;\n top: 0; left: 0; right: 0; bottom: 0;\n background: ${overlay};\n \"\n\t\t\t></div>\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: relative;\n z-index: 1;\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n color: #fff;\n text-align: center;\n padding: 0 16px;\n box-sizing: border-box;\n \"\n\t\t\t>\n\t\t\t\t${renderFnOrArray(children)}\n\t\t\t</div>\n\t\t</div>\n\t`;\n}\n","// Hidden.ts\nimport { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport type HiddenProps = {\n\tbreakpoint?: string;\n\tmode?: \"hide\" | \"show\";\n\tclassName?: string;\n\ton?: OnEvent;\n};\n\nexport function Hidden(props?: HiddenProps): WithHtml<renderFnType>;\n\nexport function Hidden(\n\tprops?: HiddenProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function Hidden(\n\tprops?: HiddenProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Hidden(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tHidden(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\tconst bp = props?.breakpoint ?? \"(max-width: 600px)\";\n\tconst mode = props?.mode ?? \"hide\";\n\tconst now = getComponentCount(\"Hidden\");\n\tconst _className =\n\t\tprops?.className ??\n\t\tgetRandomClassName(\"Hidden::hidden-container\") + \"-lyco-now-\" + now;\n\tconst styleContent =\n\t\tmode === \"hide\"\n\t\t\t? `@media ${bp} { .${_className} { display: none !important; } }`\n\t\t\t: `@media ${bp} { .${_className} { display: block !important; } }\n @media not ${bp} { .${_className} { display: none !important; } }`;\n\tconst css = `\n\t.${_className} {\n\t display: block;\n\t}\n\t${styleContent}`;\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn LycoComponent(\n\t\t\"Hidden\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, render as litRender, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { AnimationAPI } from \"../core\"; // Assuming AnimationAPI is correctly implemented\n\nexport function LazyForEach<T extends any[]>(\n\titems: T,\n\trender: (item: T[number], index: number) => TemplateResult,\n\tthreshold: number = 0.1,\n\tanimationOptions: {\n\t\tanimationClass?: string;\n\t\tanimation?: (element: HTMLElement) => void;\n\t\tcssProperties?: Record<string, string>;\n\t\tduration?: number;\n\t\tdelay?: number;\n\t} = {}\n): TemplateResult[] {\n\tconst renderedStates: boolean[] = new Array(items.length).fill(false);\n\n\t// 定义一个占位符大小(例如50vh和100vw),提升性能\n\tconst placeholderHeight = `${threshold * 100}vh`;\n\tconst placeholderWidth = \"100vw\";\n\n\tconst observedElements = items.map((item, index) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((element) => {\n\t\t\t\t\tif (element && !renderedStates[index]) {\n\t\t\t\t\t\t// 延迟创建IntersectionObserver实例,避免过早的资源消耗\n\t\t\t\t\t\tconst observer = new IntersectionObserver(\n\t\t\t\t\t\t\t(entries, observerInstance) => {\n\t\t\t\t\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\t\t\t\t\tif (entry.isIntersecting && !renderedStates[index]) {\n\t\t\t\t\t\t\t\t\t\tconst el = entry.target as HTMLElement;\n\t\t\t\t\t\t\t\t\t\trenderedStates[index] = true;\n\n\t\t\t\t\t\t\t\t\t\t// 渲染内容\n\t\t\t\t\t\t\t\t\t\tlitRender(render(item, index), el);\n\n\t\t\t\t\t\t\t\t\t\t// 应用动画\n\t\t\t\t\t\t\t\t\t\tAnimationAPI.applyAnimation(el, animationOptions);\n\n\t\t\t\t\t\t\t\t\t\t// 清理占位符\n\t\t\t\t\t\t\t\t\t\tconst placeholder = el.querySelector(\"[data-fallback]\");\n\t\t\t\t\t\t\t\t\t\tif (placeholder) {\n\t\t\t\t\t\t\t\t\t\t\tplaceholder.remove(); // 移除占位符\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// 停止观察\n\t\t\t\t\t\t\t\t\t\tobserverInstance.unobserve(el);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\troot: null,\n\t\t\t\t\t\t\t\trootMargin: `0px`,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// 只有在第一次观察时,才开始观察元素\n\t\t\t\t\t\tobserver.observe(element);\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tdata-index=\"${index}\"\n\t\t\t\tstyle=\"transition: transform ${animationOptions.duration || \"1s\"} ease;\"\n\t\t\t>\n\t\t\t\t<!-- 占位元素 -->\n\t\t\t\t<div\n\t\t\t\t\tdata-fallback\n\t\t\t\t\tstyle=\"height: ${placeholderHeight}; width: ${placeholderWidth};\"\n\t\t\t\t></div>\n\t\t\t</div>\n\t\t`;\n\t});\n\n\treturn observedElements;\n}\n","// 假设以下代码存放在 Lyco/src/components/List.ts 文件中\nimport { html, TemplateResult } from \"lit\";\nimport {\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\n// ListItem 组件\nexport function ListItem(children?: renderFnOrArrayType): TemplateResult<1> {\n\treturn html` <li>${renderFnOrArray(children)}</li> `;\n}\n\n// List 组件\nexport function List(props?: {\n\tbordered?: boolean;\n\tstriped?: boolean;\n\thover?: boolean;\n\tclassName?: string;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function List(\n\tprops?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function List(\n\tprops?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t},\n\tchildren?: renderFnOrArrayType\n): ((children?: renderFnOrArrayType) => TemplateResult<1>) | TemplateResult<1> {\n\tconst bordered = props?.bordered\n\t\t? `border: 1px solid #ddd; border-radius: 4px`\n\t\t: \"\";\n\tconst striped = props?.striped\n\t\t? `li:nth-child(even) { background: #f9f9f9; }`\n\t\t: \"\";\n\tconst hover = props?.hover\n\t\t? `li:hover { background: #f1f1f1; cursor: pointer; }`\n\t\t: \"\";\n\tconst now = getComponentCount(\"List\");\n\tconst _className =\n\t\tprops?.className ?? getRandomClassName(\"List::list\") + `-lyco-now-${now}`;\n\n\tconst css = `\n ul.${_className} {\n\t list-style: none;\n\t margin: 0;\n\t padding: 0;\n\t ${bordered};\n\t}\n\tul.${_className} li {\n\t padding: 12px 16px;\n\t ${props?.bordered ? \"border-bottom: 1px solid #ddd\" : \"\"};\n\t}\n\tul.${_className} li:last-child {\n\t ${props?.bordered ? \"border-bottom: none\" : \"\"};\n\t}\n\t${striped}\n\t${hover}\n `.toString();\n\tconst render = (children?: renderFnOrArrayType) =>\n\t\tLycoComponent(\n\t\t\t\"List\",\n\t\t\thtml`\n\t\t\t\t<style>\n\t\t\t\t\t${css}\n\t\t\t\t</style>\n\t\t\t\t<ul class=\"${_className}\">\n\t\t\t\t\t${renderFnOrArray(children)}\n\t\t\t\t</ul>\n\t\t\t`\n\t\t);\n\n\treturn children === undefined ? render : render(children);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n\tTemp,\n} from \"../core\";\n\nexport function ListGroup(props?: {\n\tbordered?: boolean;\n\tstriped?: boolean;\n\thover?: boolean;\n\tclassName?: string;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function ListGroup(\n\tprops?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function ListGroup(\n\tprops?: {\n\t\tbordered?: boolean;\n\t\tstriped?: boolean;\n\t\thover?: boolean;\n\t\tclassName?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n) {\n\tconst bordered = props?.bordered\n\t\t? `border: 1px solid #ddd; border-radius: 4px`\n\t\t: \"\";\n\tconst striped = props?.striped\n\t\t? `li:nth-child(even) { background: #f9f9f9; }`\n\t\t: \"\";\n\tconst hover = props?.hover\n\t\t? `li:hover { background: #f1f1f1; cursor: pointer; }`\n\t\t: \"\";\n\tconst now = getComponentCount(\"ListGroup\");\n\tconst _className =\n\t\tprops?.className ??\n\t\tgetRandomClassName(\"ListGroup::list-group\") + \"-lyco-now-\" + now;\n\tconst injectRender = (\n\t\tchildren: Temp,\n\t\t_idx?: number,\n\t\tisArray?: boolean,\n\t\t_isFunc?: boolean\n\t) => {\n\t\tif (!isArray) {\n\t\t\treturn children;\n\t\t} else {\n\t\t\treturn html` <li>${children}</li> `;\n\t\t}\n\t};\n\tconst css = `\n\tul.${_className} {\n\t list-style: none;\n\t margin: 0;\n\t padding: 0;\n\t ${bordered};\n\t}\n\tul.${_className} li {\n\t padding: 12px 16px;\n\t ${props?.bordered ? \"border-bottom: 1px solid #ddd\" : \"\"};\n\t}\n\tul.${_className} li:last-child {\n\t ${props?.bordered ? \"border-bottom: none\" : \"\"};\n\t}\n\t${striped}\n\t${hover}\n\t`;\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst render = (children: Temp | Temp[]) =>\n\t\tLycoComponent(\n\t\t\t\"ListGroup\",\n\t\t\thtml`\n\t\t\t\t<style>\n\t\t\t\t\t${css}\n\t\t\t\t</style>\n\t\t\t\t<ul\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t\tclass=\"${_className}\"\n\t\t\t\t>\n\t\t\t\t\t${renderFnOrArray(children, injectRender)}\n\t\t\t\t</ul>\n\t\t\t`\n\t\t);\n\n\treturn renderFnOrArrayOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\nexport function Overlay(props?: {\n\tbackground?: string;\n\tzIndex?: number;\n\tfullScreen?: boolean;\n\ton?: OnEvent;\n}): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Overlay(\n\tprops?: {\n\t\tbackground?: string;\n\t\tzIndex?: number;\n\t\tfullScreen?: boolean;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Overlay(\n\tprops?: {\n\t\tbackground?: string;\n\t\tzIndex?: number;\n\t\tfullScreen?: boolean;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) =>\n\t\t\tOverlay(props, children ?? [html``]);\n\t}\n\tconst bg = props?.background ?? \"rgba(0, 0, 0, 0.5)\";\n\tconst z = props?.zIndex ?? 1000;\n\tconst full = props?.fullScreen !== false;\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: ${full ? \"fixed\" : \"absolute\"};\n top: 0; left: 0; right: 0; bottom: 0;\n background: ${bg};\n z-index: ${z};\n display: flex;\n justify-content: center;\n align-items: center;\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\nexport function PositionContainer(props?: {\n\twidth?: string;\n\theight?: string;\n\tbackground?: string;\n\ton?: OnEvent;\n}): WithHtml<renderFnType>;\n\nexport function PositionContainer(\n\tprops?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1>;\n\nexport function PositionContainer(\n\tprops?: {\n\t\twidth?: string;\n\t\theight?: string;\n\t\tbackground?: string;\n\t\ton?: OnEvent;\n\t},\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) =>\n\t\t\tPositionContainer(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tPositionContainer(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst bg = props?.background ? `background: ${props.background};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: relative;\n ${w} ${h} ${bg}\n overflow: hidden;\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { css, html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\ntype ProgressProps = {\n\tvalue?: number; // 主进度 (0-100)\n\tbufferValue?: number; // 缓冲/次要进度 (0-100)\n\tcolor?: string; // 主进度条颜色\n\tsecondaryColor?: string; // 缓冲进度颜色\n\tbackgroundColor?: string; // 整体背景颜色\n\theight?: string; // 进度条高度\n\tradius?: string; // 圆角\n\tshowLabel?: boolean; // 是否显示进度标签\n\tlabelPosition?: \"inside\" | \"outside\";\n\tlabelColor?: string;\n\tlabelFontSize?: string;\n\tstriped?: boolean; // 是否条纹化\n\tanimated?: boolean; // 条纹动画\n\tpaused?: boolean; // 是否暂停动画\n\ttransitionDuration?: string;\n\tprefixIcon?: TemplateResult<1>; // 前置图标\n\tsuffixIcon?: TemplateResult<1>; // 后置图标\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n};\n\nexport function Progress(props?: ProgressProps): TemplateResult<1> {\n\tconst value = Math.min(100, Math.max(0, props?.value ?? 0));\n\tconst buffer = Math.min(100, Math.max(0, props?.bufferValue ?? 0));\n\tconst color = props?.color ?? \"#1976d2\";\n\tconst secondaryColor = props?.secondaryColor ?? \"#90caf9\";\n\tconst backgroundColor = props?.backgroundColor ?? \"#e0e0e0\";\n\tconst height = props?.height ?? \"4px\";\n\tconst radius = props?.radius ?? \"4px\";\n\tconst showLabel = props?.showLabel ?? false;\n\tconst labelPosition = props?.labelPosition ?? \"inside\";\n\tconst labelColor = props?.labelColor ?? (value > 50 ? \"white\" : color);\n\tconst labelFontSize = props?.labelFontSize ?? \"12px\";\n\tconst striped = props?.striped ?? false;\n\tconst animated = props?.animated ?? false;\n\tconst paused = props?.paused ?? false;\n\tconst duration = props?.transitionDuration ?? \"0.3s\";\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\tconst stripes = striped\n\t\t? `background-image: linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);\n background-size: 1rem 1rem;\n animation: progress-stripes 1s linear infinite;\n animation-play-state: ${paused ? \"paused\" : \"running\"};`\n\t\t: \"\";\n\treturn html`\n\t\t<style>\n\t\t\t${css`\n\t\t\t\t@keyframes progress-stripes {\n\t\t\t\t\tfrom {\n\t\t\t\t\t\tbackground-position: 1rem 0;\n\t\t\t\t\t}\n\t\t\t\t\tto {\n\t\t\t\t\t\tbackground-position: 0 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`.cssText}\n\t\t</style>\n\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) binder.bind(el);\n\t\t\t\telse binder.unbindAll();\n\t\t\t})}\n\t\t\tclass=\"lyco-progress ${className}\"\n\t\t\trole=\"progressbar\"\n\t\t\taria-valuemin=\"0\"\n\t\t\taria-valuemax=\"100\"\n\t\t\taria-valuenow=\"${value}\"\n\t\t\tstyle=\"\n width: 100%;\n background: ${backgroundColor};\n border-radius: ${radius};\n height: ${height};\n position: relative;\n overflow: hidden;\n display: flex;\n align-items: center;\n ${style}\n \"\n\t\t>\n\t\t\t${props?.prefixIcon}\n\t\t\t<!-- 缓冲进度 -->\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: absolute;\n width: ${buffer}%;\n height: 100%;\n background: ${secondaryColor};\n transition: width ${duration} ease;\n \"\n\t\t\t></div>\n\t\t\t<!-- 主进度 -->\n\t\t\t<div\n\t\t\t\tstyle=\"\n position: absolute;\n width: ${value}%;\n height: 100%;\n background: ${color};\n border-radius: ${radius};\n transition: width ${duration} ease;\n ${stripes}\n \"\n\t\t\t></div>\n\n\t\t\t<!-- 文本标签 -->\n\t\t\t${showLabel\n\t\t\t\t? html`\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tstyle=\"\n position: ${labelPosition === \"inside\"\n\t\t\t\t\t\t\t\t? \"absolute\"\n\t\t\t\t\t\t\t\t: \"relative\"};\n ${labelPosition === \"inside\"\n\t\t\t\t\t\t\t\t? \"right: 8px; top: 50%; transform: translateY(-50%);\"\n\t\t\t\t\t\t\t\t: \"margin-left: auto; margin-right: 4px;\"}\n font-size: ${labelFontSize};\n color: ${labelColor};\n z-index: 1;\n \"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t${value}%\n\t\t\t\t\t\t</div>\n\t\t\t\t `\n\t\t\t\t: \"\"}\n\t\t\t${props?.suffixIcon}\n\t\t</div>\n\t`;\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\nexport function SizedBox(props?: {\n\twidth?: string;\n\theight?: string;\n\ton?: OnEvent;\n}) {\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`<div\n\t\t${ref((el) => {\n\t\t\tif (el) {\n\t\t\t\tbinder.bind(el);\n\t\t\t} else {\n\t\t\t\tbinder.unbindAll();\n\t\t\t}\n\t\t})}\n\t\tstyle=\"${w} ${h}\"\n\t></div>`;\n}\n","// SkeletonLoader.ts\nimport { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\n\nexport function SkeletonLoader(props?: {\n\ttype?: \"rect\" | \"circle\";\n\twidth?: string;\n\theight?: string;\n\tborderRadius?: string;\n\tanimation?: boolean;\n\tanimationType?: \"shimmer\" | \"pulse\";\n\tbgColor?: string;\n\thighlightColor?: string;\n\tcount?: number;\n\tspacing?: string;\n\tdirection?: \"horizontal\" | \"vertical\";\n\tdelay?: number; // 延迟显示,单位 ms\n\tautoHide?: boolean; // 是否在完成后自动隐藏\n\tduration?: number; // 自动隐藏持续时间,单位 ms\n\ton?: OnEvent;\n}) {\n\tconst {\n\t\ttype = \"rect\",\n\t\twidth = \"100%\",\n\t\theight = \"16px\",\n\t\tborderRadius = \"4px\",\n\t\tanimation = true,\n\t\tanimationType = \"shimmer\",\n\t\tbgColor = \"#eee\",\n\t\thighlightColor = \"#ddd\",\n\t\tcount = 1,\n\t\tspacing = \"8px\",\n\t\tdirection = \"vertical\",\n\t\tdelay = 0,\n\t\tautoHide = false,\n\t\tduration = 2000,\n\t\ton = {},\n\t} = props ?? {};\n\n\tconst now = getComponentCount(\"SkeletonLoader\");\n\tconst baseClass =\n\t\tgetRandomClassName(\"SkeletonLoader::skeleton\") + \"-lyco-now-\" + now;\n\tconst binder = createEventBinder(on);\n\n\t// 样式和动画\n\tconst shapeStyle =\n\t\ttype === \"circle\"\n\t\t\t? `border-radius:50%;width:${width};height:${width}`\n\t\t\t: `border-radius:${borderRadius};width:${width};height:${height}`;\n\n\tlet keyframes = \"\";\n\tlet animCss = \"\";\n\n\tif (animation) {\n\t\tif (animationType === \"shimmer\") {\n\t\t\tkeyframes = `@keyframes ${baseClass}-shimmer { 0% { background-color: ${bgColor}; } 50% { background-color: ${highlightColor}; } 100% { background-color: ${bgColor}; } }`;\n\t\t\tanimCss = `animation:${baseClass}-shimmer 1.2s infinite ease-in-out;`;\n\t\t} else {\n\t\t\tkeyframes = `@keyframes ${baseClass}-pulse { 0% { opacity:1; } 50% { opacity:0.4; } 100% { opacity:1; } }`;\n\t\t\tanimCss = `animation:${baseClass}-pulse 1.2s infinite ease-in-out;`;\n\t\t}\n\t}\n\n\t// 容器布局\n\tconst containerStyle =\n\t\tdirection === \"horizontal\"\n\t\t\t? `display:flex;flex-direction:row;gap:${spacing}`\n\t\t\t: `display:flex;flex-direction:column;gap:${spacing}`;\n\n\t// 渲染骨架块\n\tconst blocks: TemplateResult[] = [];\n\tfor (let i = 0; i < count; i++) {\n\t\tblocks.push(html`\n\t\t\t<div\n\t\t\t\tclass=\"${baseClass}\"\n\t\t\t\tstyle=\"${shapeStyle};background-color:${bgColor};${animCss};opacity:0;transition:opacity 0.3s\"\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (!el) return;\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t})}\n\t\t\t></div>\n\t\t`);\n\t}\n\n\t// 定时逻辑\n\tfunction applyLifecycle(root: HTMLElement) {\n\t\tconst items = Array.from(\n\t\t\troot.querySelectorAll(`.${baseClass}`)\n\t\t) as HTMLElement[];\n\t\t// 延迟显示\n\t\tsetTimeout(() => {\n\t\t\titems.forEach((el) => (el.style.opacity = \"1\"));\n\t\t\t// 自动隐藏\n\t\t\tif (autoHide) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\titems.forEach((el) => (el.style.opacity = \"0\"));\n\t\t\t\t}, duration);\n\t\t\t}\n\t\t}, delay);\n\t}\n\n\treturn LycoComponent(\n\t\t\"SkeletonLoader\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${keyframes}\n\t\t\t</style>\n\t\t\t<div\n\t\t\t\tstyle=\"${containerStyle}\"\n\t\t\t\t${ref((el) => el && applyLifecycle(el as HTMLElement))}\n\t\t\t>\n\t\t\t\t${blocks}\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { createEventBinder, OnEvent } from \"../core\";\n\nexport function Spacer(props?: { on?: OnEvent }) {\n\tconst binder = createEventBinder(props?.on ?? {});\n\treturn html`<div\n\t\t${ref((el) => {\n\t\t\tif (el) {\n\t\t\t\tbinder.bind(el);\n\t\t\t} else {\n\t\t\t\tbinder.unbindAll();\n\t\t\t}\n\t\t})}\n\t\tstyle=\"flex: 1 1 auto;\"\n\t></div>`;\n}\n","import { css, html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tLycoComponent,\n\tOnEvent,\n} from \"../core\";\nimport { MD3 } from \"../theme/md3\";\n\ntype SpinnerProps = {\n\tsize?: string; // 尺寸,默认 \"24px\"\n\tcolor?: string; // 颜色,默认 \"currentColor\"\n\tthickness?: string; // 线条粗细,默认 \"2px\"\n\tspeed?: string; // 动画速度,默认 \"0.8s\"\n\tclassName?: string;\n\tstyle?: string;\n\topacity?: number; // 透明度\n\tstartAngle?: number; // 起始角度\n\teasing?: string; // 缓动函数\n\treverse?: boolean; // 反向旋转\n\ton?: OnEvent;\n\tchildren?: TemplateResult | string;\n\n\t// 新增高级样式支持\n\tsvgMode?: boolean; // 使用 SVG 渲染\n\tstrokeLinecap?: \"butt\" | \"round\" | \"square\"; // 线帽样式\n\tstrokeDasharray?: string; // 虚线样式\n};\n\nexport function Spinner(props?: SpinnerProps): TemplateResult<1> {\n\tconst {\n\t\tsize = \"24px\",\n\t\tcolor = MD3.colors.primary,\n\t\tthickness = \"2px\",\n\t\tspeed = \"1.2s\",\n\t\tclassName = \"\",\n\t\topacity = 1,\n\t\tstartAngle = 0,\n\t\teasing = \"linear\",\n\t\treverse = false,\n\t\tstyle = \"\",\n\t\ton = {},\n\t\tchildren,\n\t\tsvgMode = false,\n\t\tstrokeLinecap = \"butt\",\n\t\tstrokeDasharray = \"\",\n\t} = props ?? {};\n\n\tconst binder = createEventBinder(on);\n\tconst id = getComponentCount(\"Spinner\");\n\tref;\n\t// 普通 DIV 渲染\n\tconst divSpinner = html`\n\t\t<div\n\t\t\tclass=\"${className}\"\n\t\t\tstyle=\"display: inline-flex; align-items: center; justify-content: center; width: ${size}; height: ${size}; ${style}\"\n\t\t\t${ref()}\n\t\t>\n\t\t\t<div\n\t\t\t\tstyle=\"\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\theight: 100%;\n\t\t\t\t\tborder: ${thickness} solid ${color};\n\t\t\t\t\tborder-right-color: transparent;\n\t\t\t\t\tborder-radius: 50%;\n\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\topacity: ${opacity};\n\t\t\t\t\tanimation: lyco-spin-${id} ${speed} ${easing} infinite ${reverse\n\t\t\t\t\t? \"reverse\"\n\t\t\t\t\t: \"normal\"};\n\t\t\t\t\"\n\t\t\t></div>\n\t\t</div>\n\t\t<style>\n\t\t\t${css`\n\t\t\t\t@keyframes lyco-spin-${id} {\n\t\t\t\t\tfrom {\n\t\t\t\t\t\ttransform: rotate(${startAngle}deg);\n\t\t\t\t\t}\n\t\t\t\t\tto {\n\t\t\t\t\t\ttransform: rotate(${startAngle + 360}deg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`.cssText}\n\t\t</style>\n\t`;\n\n\t// SVG 渲染\n\tconst svgSpinner = html`\n\t\t<div\n\t\t\tclass=\"${className}\"\n\t\t\tstyle=\"display: inline-flex; align-items: center; justify-content: center; width: ${size}; height: ${size}; ${style}\"\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t>\n\t\t\t<svg\n\t\t\t\twidth=\"100%\"\n\t\t\t\theight=\"100%\"\n\t\t\t\tviewBox=\"0 0 100 100\"\n\t\t\t\tstyle=\"opacity: ${opacity}; overflow: visible; filter: drop-shadow(${MD3\n\t\t\t\t\t.elevation.level1});\"\n\t\t\t>\n\t\t\t\t<circle\n\t\t\t\t\tcx=\"50\"\n\t\t\t\t\tcy=\"50\"\n\t\t\t\t\tr=\"45\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"${color}\"\n\t\t\t\t\tstyle=\"\n\t\t\t\t\tstroke-width: ${thickness};\n\t\t\t\t\tstroke-linecap: ${strokeLinecap};\n\t\t\t\t\tstroke-dasharray: ${strokeDasharray};\n\t\t\t\t\ttransform-origin: 50% 50%;\n\t\t\t\t\tanimation: lyco-svg-spin-${id} ${speed} ${easing} infinite ${reverse\n\t\t\t\t\t\t? \"reverse\"\n\t\t\t\t\t\t: \"normal\"};\n\t\t\t\t\"\n\t\t\t\t></circle>\n\t\t\t</svg>\n\t\t</div>\n\t\t<style>\n\t\t\t${css`\n\t\t\t\t@keyframes lyco-svg-spin-${id} {\n\t\t\t\t\tfrom {\n\t\t\t\t\t\ttransform: rotate(${startAngle}deg);\n\t\t\t\t\t}\n\t\t\t\t\tto {\n\t\t\t\t\t\ttransform: rotate(${startAngle + 360}deg);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`.cssText}\n\t\t</style>\n\t`;\n\n\treturn LycoComponent(\"Spinner\", svgMode ? svgSpinner : divSpinner);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\n\ninterface StickyProps {\n\ttop?: string;\n\tbottom?: string;\n\tzIndex?: number;\n\ton?: OnEvent;\n}\n\nexport function Sticky(props?: StickyProps): WithHtml<renderFnType>;\n\nexport function Sticky(\n\tprops?: StickyProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\nexport function Sticky(\n\tprops?: StickyProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Sticky(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tSticky(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst top = props?.top ? `top: ${props.top};` : \"\";\n\tconst bottom = props?.bottom ? `bottom: ${props.bottom};` : \"\";\n\tconst z =\n\t\ttypeof props?.zIndex === \"number\" ? `z-index: ${props.zIndex};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: sticky;\n ${top} ${bottom}\n ${z}\n \"\n\t\t>\n\t\t\t${renderFn(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFn,\n\trenderFnType,\n\tWithHtml,\n} from \"../core\";\nimport { MD3 } from \"../theme/md3\";\n\nexport interface TableProps {\n\tstriped?: boolean;\n\thover?: boolean;\n\tbordered?: boolean;\n\tclassName?: string;\n\ton?: OnEvent;\n}\n\nexport function Table(props?: TableProps): WithHtml<renderFnType>;\n\nexport function Table(\n\tprops?: TableProps,\n\tchildren?: renderFnType // TemplateResult | (() => TemplateResult)\n): TemplateResult<1>;\n\nexport function Table(\n\tprops?: TableProps,\n\tchildren?: renderFnType\n): TemplateResult<1> | WithHtml<renderFnType> {\n\t// 如果第二个参数 children 没传,则返回一个只接收 children 的函数\n\tif (children === undefined) {\n\t\tconst _ = (children?: renderFnType) => Table(props, children ?? html``);\n\t\t_.html = (strings: TemplateStringsArray, ...values: unknown[]) =>\n\t\t\tTable(props, html(strings, ...values));\n\t\treturn _;\n\t}\n\n\tconst now = getComponentCount(\"Table\");\n\n\t// 到这里说明 props 和 children 都已经传齐\n\tconst _className =\n\t\tprops?.className ?? getRandomClassName(\"Table::table\") + `-lyco-now-${now}`;\n\tconst striped = props?.striped\n\t\t? `\n .${_className} tr:nth-child(even) { \n background: ${MD3.colors.surface};\n }\n `\n\t\t: \"\";\n\tconst hover = props?.hover\n\t\t? `\n .${_className} tr:hover { \n background: ${MD3.colors.primaryContainer};\n cursor: pointer;\n }\n `\n\t\t: \"\";\n\tconst bordered = props?.bordered\n\t\t? `\n .${_className}, .${_className} th, .${_className} td { \n border: 1px solid ${MD3.colors.surfaceVariant}; \n }\n `\n\t\t: \"\";\n\n\tconst css = `\n\t.${_className} table {\n\t width: 100%;\n\t border-collapse: separate;\n\t border-spacing: 0;\n\t border-radius: ${MD3.borderRadius.medium};\n\t overflow: hidden;\n\t box-shadow: ${MD3.elevation.level1};\n\t}\n\t.${_className} th,\n\t.${_className} td {\n\t padding: 16px;\n\t text-align: left;\n\t transition: background ${MD3.animation.standard};\n\t}\n\t.${_className} th {\n\t background: ${MD3.colors.surfaceVariant};\n\t color: ${MD3.colors.onSurfaceVariant};\n\t font-weight: 500;\n\t}\n\t.${_className} td {\n\t border-bottom: 1px solid ${MD3.colors.surfaceVariant}; \n\t}\n\t${striped}\n\t${hover}\n\t${bordered}\n\t`;\n\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\treturn LycoComponent(\n\t\t\"Table\",\n\t\thtml`\n\t\t\t<style>\n\t\t\t\t${css}\n\t\t\t</style>\n\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"${_className}\"\n\t\t\t>\n\t\t\t\t<table>\n\t\t\t\t\t${renderFn(children)}\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t`\n\t);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnOrCurry,\n\trenderFnType,\n} from \"../core\";\n\nexport enum WithTooltipPlacement {\n\tTop = \"top\",\n\tBottom = \"bottom\",\n\tLeft = \"left\",\n\tRight = \"right\",\n}\n\nexport type Offset = number | { x: number; y: number };\nexport type TooltipTheme = \"light\" | \"dark\" | \"custom\";\n\nexport interface WithTooltipProps {\n\t/** 文本或模板内容 */\n\tcontent: string | TemplateResult<1>;\n\t/** 触发延迟: 显示/隐藏分别的 ms 延迟 */\n\tdelay?: { show: number; hide: number };\n\t/** 指定显示位置 */\n\tplacement?: WithTooltipPlacement;\n\t/** 偏移值,支持数字或 {x, y} */\n\toffset?: Offset;\n\t/** 是否在点击时隐藏 */\n\thideOnClick?: boolean;\n\t/** 当鼠标移入 tooltip 内容时,保持可见 */\n\tinteractive?: boolean;\n\t/** 最大宽度 */\n\tmaxWidth?: string;\n\t/** 自定义主题,自定义时可以通过 CSS 覆盖 .lyco-tooltip--custom */\n\ttheme?: TooltipTheme;\n\t/** 自定义 z-index */\n\tzIndex?: number;\n\t/** 附加类名 */\n\tclassName?: string;\n\t/** 行内样式 */\n\tstyle?: string;\n\t/** 事件绑定 */\n\ton?: OnEvent;\n\t/** 显示回调 */\n\tonShow?: () => void;\n\t/** 隐藏回调 */\n\tonHide?: () => void;\n}\n\nexport function WithTooltip(\n\tprops: WithTooltipProps\n): (children?: renderFnType) => TemplateResult;\nexport function WithTooltip(\n\tprops: WithTooltipProps,\n\tchildren?: renderFnType\n): TemplateResult;\nexport function WithTooltip(\n\tprops: WithTooltipProps,\n\tchildren?: renderFnType\n): TemplateResult | ((children?: renderFnType) => TemplateResult) {\n\tconst {\n\t\tcontent,\n\t\tplacement = WithTooltipPlacement.Top,\n\t\tdelay = { show: 200, hide: 100 },\n\t\toffset = 8,\n\t\thideOnClick = false,\n\t\tinteractive = false,\n\t\tmaxWidth = \"200px\",\n\t\ttheme = \"dark\",\n\t\tclassName = \"\",\n\t\tstyle = \"\",\n\t\tzIndex = 1000,\n\t\ton = {},\n\t\tonShow,\n\t\tonHide,\n\t} = props;\n\n\tconst binder = createEventBinder(on);\n\tlet showTimeout: number;\n\tlet hideTimeout: number;\n\n\tfunction scheduleShow(el: HTMLElement) {\n\t\tclearTimeout(hideTimeout);\n\t\tshowTimeout = window.setTimeout(() => {\n\t\t\ttooltipEl.style.visibility = \"visible\";\n\t\t\ttooltipEl.style.opacity = \"1\";\n\t\t\tonShow?.();\n\t\t}, delay.show);\n\t}\n\n\tfunction scheduleHide() {\n\t\tclearTimeout(showTimeout);\n\t\thideTimeout = window.setTimeout(() => {\n\t\t\ttooltipEl.style.visibility = \"hidden\";\n\t\t\ttooltipEl.style.opacity = \"0\";\n\t\t\tonHide?.();\n\t\t}, delay.hide);\n\t}\n\n\tlet tooltipEl: HTMLElement;\n\tconst render = (children?: renderFnType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t\ttooltipEl = el.querySelector(\n\t\t\t\t\t\t\t\".lyco-tooltip-content\"\n\t\t\t\t\t\t) as HTMLElement;\n\n\t\t\t\t\t\tel.addEventListener(\"mouseenter\", () =>\n\t\t\t\t\t\t\tscheduleShow(el as HTMLElement)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tel.addEventListener(\"mouseleave\", () => scheduleHide());\n\t\t\t\t\t\tif (hideOnClick) el.addEventListener(\"click\", () => scheduleHide());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"lyco-tooltip lyco-tooltip--${theme} ${className}\"\n\t\t\t\tstyle=\"position: relative; display: inline-block; ${style}\"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t\t<div\n\t\t\t\t\tclass=\"lyco-tooltip-content\"\n\t\t\t\t\tstyle=\"\n position: absolute;\n max-width: ${maxWidth};\n ${placement === WithTooltipPlacement.Top\n\t\t\t\t\t\t? \"bottom: 100%; left: 50%; transform: translateX(-50%)\"\n\t\t\t\t\t\t: \"\"}\n ${placement === WithTooltipPlacement.Bottom\n\t\t\t\t\t\t? \"top: 100%; left: 50%; transform: translateX(-50%)\"\n\t\t\t\t\t\t: \"\"}\n ${placement === WithTooltipPlacement.Left\n\t\t\t\t\t\t? \"right: 100%; top: 50%; transform: translateY(-50%)\"\n\t\t\t\t\t\t: \"\"}\n ${placement === WithTooltipPlacement.Right\n\t\t\t\t\t\t? \"left: 100%; top: 50%; transform: translateY(-50%)\"\n\t\t\t\t\t\t: \"\"}\n padding: 4px 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n background: ${theme === \"light\"\n\t\t\t\t\t\t? \"white; color: black\"\n\t\t\t\t\t\t: \"rgba(0,0,0,0.8); color: white\"};\n border-radius: 4px;\n font-size: 12px;\n white-space: normal;\n width: ${placement === WithTooltipPlacement.Left ||\n\t\t\t\t\tplacement === WithTooltipPlacement.Right\n\t\t\t\t\t\t? maxWidth\n\t\t\t\t\t\t: \"auto\"};\n visibility: hidden;\n opacity: 0;\n transition: opacity ${delay.show}ms;\n z-index: ${zIndex};\n margin: ${typeof offset === \"number\"\n\t\t\t\t\t\t? placement === WithTooltipPlacement.Top ||\n\t\t\t\t\t\t placement === WithTooltipPlacement.Bottom\n\t\t\t\t\t\t\t? `${offset}px 0`\n\t\t\t\t\t\t\t: `0 ${offset}px`\n\t\t\t\t\t\t: `${offset.y}px ${offset.x}px`};\n ${interactive ? \"pointer-events: auto\" : \"pointer-events: none\"};\n \"\n\t\t\t\t>\n\t\t\t\t\t${content}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`;\n\t};\n\n\treturn renderFnOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface WrapProps {\n\tdirection?: \"row\" | \"column\";\n\tgap?: string | number;\n\talign?: string;\n\tjustify?: string;\n\t// 新增 on 属性\n\ton?: OnEvent;\n}\n\nexport function Wrap(\n\tprops?: WrapProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function Wrap(\n\tprops?: WrapProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function Wrap(\n\tprops?: WrapProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tconst dir = props?.direction ?? \"row\";\n\t// 创建事件绑定器\n\tconst binder = createEventBinder(props?.on ?? {});\n\tif (children === undefined) {\n\t\treturn (children) => Wrap(props, children ?? html``);\n\t}\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n display: flex;\n flex-direction: ${dir};\n flex-wrap: wrap;\n ${props?.gap ? `gap: ${props.gap};` : \"\"}\n ${props?.align ? `align-items: ${props.align};` : \"\"}\n ${props?.justify ? `justify-content: ${props.justify};` : \"\"}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayType,\n} from \"../core\";\n\ninterface ZStackProps {\n\twidth?: string;\n\theight?: string;\n\tbackground?: string;\n\talign?: \"top-left\" | \"top-right\" | \"center\" | \"bottom-left\" | \"bottom-right\";\n\ton?: OnEvent;\n}\n\nexport function ZStack(\n\tprops?: ZStackProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\n\nexport function ZStack(\n\tprops?: ZStackProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\n\nexport function ZStack(\n\tprops?: ZStackProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1> | ((children?: renderFnOrArrayType) => TemplateResult<1>) {\n\tconst w = props?.width ? `width: ${props.width};` : \"\";\n\tconst h = props?.height ? `height: ${props.height};` : \"\";\n\tconst bg = props?.background ? `background: ${props.background};` : \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\tif (children === undefined) {\n\t\treturn (children?: renderFnOrArrayType) =>\n\t\t\tZStack(props, children ?? [html``]);\n\t}\n\n\tlet justify = \"flex-start\";\n\tlet alignItems = \"flex-start\";\n\tswitch (props?.align) {\n\t\tcase \"top-right\":\n\t\t\tjustify = \"flex-end\";\n\t\t\talignItems = \"flex-start\";\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tjustify = \"center\";\n\t\t\talignItems = \"center\";\n\t\t\tbreak;\n\t\tcase \"bottom-left\":\n\t\t\tjustify = \"flex-start\";\n\t\t\talignItems = \"flex-end\";\n\t\t\tbreak;\n\t\tcase \"bottom-right\":\n\t\t\tjustify = \"flex-end\";\n\t\t\talignItems = \"flex-end\";\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// \"top-left\"\n\t\t\tjustify = \"flex-start\";\n\t\t\talignItems = \"flex-start\";\n\t}\n\n\treturn html`\n\t\t<div\n\t\t\t${ref((el) => {\n\t\t\t\tif (el) {\n\t\t\t\t\tbinder.bind(el);\n\t\t\t\t} else {\n\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t}\n\t\t\t})}\n\t\t\tstyle=\"\n position: relative;\n display: flex;\n justify-content: ${justify};\n align-items: ${alignItems};\n ${w} ${h} ${bg}\n \"\n\t\t>\n\t\t\t${renderFnOrArray(children)}\n\t\t</div>\n\t`;\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref, Ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tgetComponentCount,\n\tgetRandomClassName,\n\tLycoComponent,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n} from \"../../core\";\nimport { MD3 } from \"../../theme/md3\";\n\nexport enum DialogPlacement {\n\tCenter = \"center\",\n\tLeft = \"left\",\n\tRight = \"right\",\n\tTop = \"top\",\n\tBottom = \"bottom\",\n\tTopStart = \"top-start\",\n\tTopEnd = \"top-end\",\n\tBottomStart = \"bottom-start\",\n\tBottomEnd = \"bottom-end\",\n\tLeftStart = \"left-start\",\n\tLeftEnd = \"left-end\",\n\tRightStart = \"right-start\",\n\tRightEnd = \"right-end\",\n}\n\nconst isSSR = typeof window === \"undefined\";\nconst hasNativeDialog = !isSSR && \"HTMLDialogElement\" in window;\n\ntype DialogProps = {\n\topen?: boolean;\n\tonClose?: () => void;\n\tproxyRef?: Ref<IDialogLike>;\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n\tmovable?: Ref<HTMLElement> | \"self\" | false;\n\tmask?: boolean; // 新增:是否启用遮罩层\n\tplacement?: DialogPlacement; // 新增:对话框位置\n};\n\nconst getFallbackStyles = (open: boolean) => `\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: ${open ? \"flex\" : \"none\"};\n align-items: center;\n justify-content: center;\n z-index: 1000;\n background: rgba(0,0,0,0.3);\n`;\n\n// 创建一个简化的接口,只包含我们需要的方法\ninterface IDialogLike {\n\tshow(): void;\n\tshowModal(): void;\n\tclose(): void;\n\topen: boolean;\n\tstyle: CSSStyleDeclaration;\n\tgetBoundingClientRect(): DOMRect;\n}\n\n// 修改 DialogLike 类实现\nclass DialogLike implements IDialogLike {\n\tprivate element: HTMLDivElement;\n\tprivate contentElement: HTMLDivElement;\n\tprivate isOpen: boolean = false;\n\n\tconstructor(container: HTMLDivElement, content: HTMLDivElement) {\n\t\tthis.element = container;\n\t\tthis.contentElement = content;\n\t}\n\n\tshow() {\n\t\tthis.element.style.display = \"flex\";\n\t\tthis.isOpen = true;\n\t}\n\n\tshowModal() {\n\t\tthis.show();\n\t}\n\n\tclose() {\n\t\tthis.element.style.display = \"none\";\n\t\tthis.isOpen = false;\n\t\tthis.element.dispatchEvent(new Event(\"close\"));\n\t}\n\n\tget open() {\n\t\treturn this.isOpen;\n\t}\n\n\t// 实现移动相关方法\n\tgetBoundingClientRect() {\n\t\treturn this.contentElement.getBoundingClientRect();\n\t}\n\n\t// 样式相关\n\tget style() {\n\t\treturn this.contentElement.style;\n\t}\n\n\t// 其他必需的 HTMLDialogElement 接口实现...\n\treturnValue: string = \"\";\n}\n\nexport function Dialog(\n\tprops?: DialogProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\nexport function Dialog(\n\tprops?: DialogProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\nexport function Dialog(props?: DialogProps, children?: renderFnOrArrayType) {\n\tconst open = props?.open ?? false;\n\tconst onClose = props?.onClose;\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ? props?.on : {});\n\tconst movable = props?.movable ?? false;\n\tconst placement = props?.placement ?? DialogPlacement.Center;\n\tlet proxyRef = props?.proxyRef ?? {\n\t\tvalue: null as IDialogLike | null,\n\t};\n\tlet dialogEl: HTMLElement | null = null;\n\tlet isDragging = false;\n\tlet offset = { x: 0, y: 0 };\n\tlet moveTarget: HTMLElement | null = null;\n\tlet mask = props?.mask ?? true;\n\tconst now = getComponentCount(\"Dialog\");\n\tconst _className = getRandomClassName(\"Dialog::dialog\") + \"-lyco-now-\" + now;\n\tfunction getMoveTarget(dialog: HTMLElement): HTMLElement | null {\n\t\tif (!movable) return null;\n\t\tif (movable === \"self\") return dialog;\n\t\tif (movable && \"value\" in movable) return movable.value as HTMLElement;\n\t\treturn null;\n\t}\n\n\tfunction getCenteredPosition(): string {\n\t\tif (typeof window === \"undefined\") return \"\";\n\n\t\tconst width = 300; // dialog宽度估值(或你可以动态获取)\n\t\tconst height = 150; // dialog高度估值\n\t\tconst left = (window.innerWidth - width) / 2;\n\t\tconst top = (window.innerHeight - height) / 2;\n\n\t\treturn `left: ${left}px; top: ${top}px;`;\n\t}\n\n\t// 获取位置样式\n\tfunction getPlacementStyle() {\n\t\tswitch (placement) {\n\t\t\tcase \"left\":\n\t\t\t\treturn \"left: 32px; top: 50%;\";\n\t\t\tcase \"right\":\n\t\t\t\treturn \"right: 32px; top: 50%;\";\n\t\t\tcase \"top\":\n\t\t\t\treturn \"top: 32px; left: 50%;\";\n\t\t\tcase \"bottom\":\n\t\t\t\treturn \"bottom: 32px; left: 50%;\";\n\t\t\tcase \"top-start\":\n\t\t\t\treturn \"top: 32px; left: 32px;\";\n\t\t\tcase \"top-end\":\n\t\t\t\treturn \"top: 32px; right: 32px;\";\n\t\t\tcase \"bottom-start\":\n\t\t\t\treturn \"bottom: 32px; left: 32px;\";\n\t\t\tcase \"bottom-end\":\n\t\t\t\treturn \"bottom: 32px; right: 32px;\";\n\t\t\tcase \"left-start\":\n\t\t\t\treturn \"left: 32px; top: 32px;\";\n\t\t\tcase \"left-end\":\n\t\t\t\treturn \"left: 32px; bottom: 32px;\";\n\t\t\tcase \"right-start\":\n\t\t\t\treturn \"right: 32px; top: 32px;\";\n\t\t\tcase \"right-end\":\n\t\t\t\treturn \"right: 32px; bottom: 32px;\";\n\t\t\tdefault:\n\t\t\t\t// 默认居中:这里也不使用 transform,而是你自己计算 left/top 设置进去\n\t\t\t\treturn getCenteredPosition();\n\t\t}\n\t}\n\n\t// 获取百分比\n\tfunction getTranslate() {\n\t\tswitch (placement) {\n\t\t\tcase \"top-start\":\n\t\t\tcase \"top-end\":\n\t\t\tcase \"bottom-start\":\n\t\t\tcase \"bottom-end\":\n\t\t\tcase \"left-start\":\n\t\t\tcase \"left-end\":\n\t\t\tcase \"right-start\":\n\t\t\tcase \"right-end\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: 0,\n\t\t\t\t\ttyp: 0,\n\t\t\t\t};\n\t\t\tcase \"left\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: 0,\n\t\t\t\t\ttyp: -50,\n\t\t\t\t};\n\t\t\tcase \"right\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: 0,\n\t\t\t\t\ttyp: -50,\n\t\t\t\t};\n\t\t\tcase \"top\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: -50,\n\t\t\t\t\ttyp: 0,\n\t\t\t\t};\n\t\t\tcase \"bottom\":\n\t\t\t\treturn {\n\t\t\t\t\ttxp: -50,\n\t\t\t\t\ttyp: 0,\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\ttxp: -50,\n\t\t\t\t\ttyp: -50,\n\t\t\t\t};\n\t\t}\n\t}\n\n\t// 处理鼠标按下事件\n\tfunction handleMouseDown(e: MouseEvent, dialog: HTMLElement) {\n\t\tif (e.button !== 0) return;\n\t\tmoveTarget = getMoveTarget(dialog);\n\t\tif (!moveTarget || !moveTarget.contains(e.target as Node)) return;\n\t\tdialogEl = dialog;\n\n\t\t// ✨ 移除 transform,防止偏移叠加\n\t\tdialogEl.style.transform = \"none\";\n\t\te.preventDefault();\n\t\tmoveTarget.style.cursor = \"grabbing\";\n\n\t\tconst rect = dialog.getBoundingClientRect();\n\t\tconst { txp, typ } = getTranslate();\n\n\t\toffset = {\n\t\t\tx: e.clientX - (rect.left + (txp / 100) * rect.width),\n\t\t\ty: e.clientY - (rect.top + (typ / 100) * rect.height),\n\t\t};\n\n\t\tisDragging = true;\n\t\tdocument.addEventListener(\"mousemove\", handleMouseMove);\n\t\tdocument.addEventListener(\"mouseup\", handleMouseUp);\n\t}\n\n\tfunction handleMouseMove(e: MouseEvent) {\n\t\tif (!isDragging || !moveTarget || !dialogEl) return;\n\t\tconst rect = dialogEl.getBoundingClientRect();\n\t\tconst { txp, typ } = getTranslate();\n\n\t\tconst newLeft = e.clientX - offset.x - (txp / 100) * rect.width;\n\t\tconst newTop = e.clientY - offset.y - (typ / 100) * rect.height;\n\n\t\tdialogEl.style.left = `${newLeft}px`;\n\t\tdialogEl.style.top = `${newTop}px`;\n\t}\n\n\tfunction handleMouseUp() {\n\t\tisDragging = false;\n\t\tmoveTarget = null;\n\t\tdialogEl = null;\n\t\tdocument.removeEventListener(\"mousemove\", handleMouseMove);\n\t\tdocument.removeEventListener(\"mouseup\", handleMouseUp);\n\t}\n\t// 获取背景样式\n\tfunction getBackdropStyle() {\n\t\tconst bgColor = mask ? \"rgba(0,0,0,0.5)\" : \"transparent\";\n\t\treturn `\n ${_className}::-webkit-backdrop,\n ${_className}::backdrop {\n background: ${bgColor};\n transition: opacity ${MD3.animation.standard};\n }\n `;\n\t}\n\n\t// 渲染回退方案\n\tfunction renderFallback(children?: renderFnOrArrayType) {\n\t\tlet containerRef: HTMLDivElement | null = null;\n\t\tlet contentRef: HTMLDivElement | null = null;\n\n\t\treturn LycoComponent(\n\t\t\t\"Dialog\",\n\t\t\thtml`\n\t\t\t\t<div\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\tcontainerRef = el as HTMLDivElement;\n\t\t\t\t\t\t\tif (contentRef) {\n\t\t\t\t\t\t\t\tconst dialogLike = new DialogLike(containerRef, contentRef);\n\t\t\t\t\t\t\t\t(proxyRef as any).value = dialogLike;\n\t\t\t\t\t\t\t\tbinder.bind(containerRef);\n\n\t\t\t\t\t\t\t\t// 初始状态设置\n\t\t\t\t\t\t\t\tif (open) {\n\t\t\t\t\t\t\t\t\tdialogLike.showModal();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdialogLike.close();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t\t@click=${(e: MouseEvent) => {\n\t\t\t\t\t\tif (e.target === e.currentTarget) {\n\t\t\t\t\t\t\tonClose?.();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tstyle=${getFallbackStyles(open)}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\t\tcontentRef = el as HTMLDivElement;\n\t\t\t\t\t\t\t\tif (containerRef) {\n\t\t\t\t\t\t\t\t\tconst dialogLike = new DialogLike(containerRef, contentRef);\n\t\t\t\t\t\t\t\t\t(proxyRef as any).value = dialogLike;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tclass=\"${_className} ${className}\"\n\t\t\t\t\t\tstyle=\"\n padding: 0;\n border: none;\n background: ${MD3.colors.surface};\n border-radius: ${MD3.borderRadius.large};\n min-width: 300px;\n ${getPlacementStyle()}\n ${typeof movable !== \"boolean\" ? \"cursor: default;\" : \"\"}\n ${style}\n \"\n\t\t\t\t\t>\n\t\t\t\t\t\t${renderFnOrArray(children)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t`\n\t\t);\n\t}\n\n\t// 渲染主函数\n\tfunction renderMain(children?: renderFnOrArrayType) {\n\t\t// 在 SSR 环境或不支持 dialog 的环境使用降级方案\n\t\tif (isSSR || !hasNativeDialog) {\n\t\t\treturn renderFallback(children);\n\t\t}\n\n\t\treturn LycoComponent(\n\t\t\t\"Dialog\",\n\t\t\thtml`\n\t\t\t\t<dialog\n\t\t\t\t\t${ref((el) => {\n\t\t\t\t\t\tif (el) {\n\t\t\t\t\t\t\t(proxyRef as any).value = el as HTMLDialogElement;\n\t\t\t\t\t\t\tconst _el = el as HTMLDialogElement;\n\t\t\t\t\t\t\tbinder.bind(_el);\n\t\t\t\t\t\t\t// 使用 requestAnimationFrame 确保元素已经被添加到 DOM 中\n\t\t\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tif (open) {\n\t\t\t\t\t\t\t\t\t\t_el.showModal();\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t_el.close();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\tconsole.warn(\"Dialog operation failed:\", e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t\t@close=${onClose}\n\t\t\t\t\t@mousedown=${(e: MouseEvent) =>\n\t\t\t\t\t\thandleMouseDown(e, e.currentTarget as HTMLElement)}\n\t\t\t\t\tstyle=\"\n padding: 0;\n border: none;\n background: ${MD3.colors.surface};\n border-radius: ${MD3.borderRadius.large};\n min-width: 300px;\n margin: 0;\n position: fixed;\n box-shadow: ${MD3.elevation.level3};\n transition: transform ${MD3.animation.emphasized};\n ${getPlacementStyle()}\n ${typeof movable !== \"boolean\" ? \"cursor: default;\" : \"\"}\n ${style}\n \"\n\t\t\t\t>\n\t\t\t\t\t${renderFnOrArray(children)}\n\t\t\t\t</dialog>\n\t\t\t\t<style>\n\t\t\t\t\t${getBackdropStyle()}\n\t\t\t\t</style>\n\t\t\t`\n\t\t);\n\t}\n\n\treturn renderFnOrArrayOrCurry(children, renderMain);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n} from \"../../core\";\n\ntype DialogActionsProps = {\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n};\n\nexport function DialogActions(\n\tprops?: DialogActionsProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\nexport function DialogActions(\n\tprops?: DialogActionsProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\nexport function DialogActions(\n\tprops?: DialogActionsProps,\n\tchildren?: renderFnOrArrayType\n) {\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\tconst render = (children?: renderFnOrArrayType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"lyco-dialog-actions ${className}\"\n\t\t\t\tstyle=\"\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 8px 24px;\n ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFnOrArray(children)}\n\t\t\t</div>\n\t\t`;\n\t};\n\n\treturn renderFnOrArrayOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnOrCurry,\n\trenderFnType,\n} from \"../../core\";\n\ntype DialogButtonProps = {\n\tvariant?: \"text\" | \"contained\";\n\tcolor?: \"primary\" | \"secondary\" | \"default\";\n\tonClick?: (el: MouseEvent) => void;\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n};\n\nexport function DialogButton(\n\tprops?: DialogButtonProps\n): (children?: renderFnType) => TemplateResult<1>;\nexport function DialogButton(\n\tprops?: DialogButtonProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\nexport function DialogButton(\n\tprops?: DialogButtonProps,\n\tchildren?: renderFnType\n) {\n\tconst variant = props?.variant ?? \"text\";\n\tconst color = props?.color ?? \"default\";\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder({\n\t\tclick: (props?.onClick\n\t\t\t? (e) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tprops.onClick?.(e);\n\t\t\t }\n\t\t\t: undefined) as OnEvent[\"click\"],\n\t\t...props?.on,\n\t});\n\n\tconst render = (children?: renderFnType) => {\n\t\treturn html`\n\t\t\t<button\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"lyco-dialog-button ${variant} ${color} ${className}\"\n\t\t\t\tstyle=\"\n padding: 6px 16px;\n font-size: 14px;\n border-radius: 4px;\n cursor: pointer;\n border: none;\n outline: none;\n margin: 0 4px;\n ${variant === \"contained\"\n\t\t\t\t\t? \"background: #1976d2; color: white;\"\n\t\t\t\t\t: \"background: transparent;\"}\n ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</button>\n\t\t`;\n\t};\n\n\treturn renderFnOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFnOrArray,\n\trenderFnOrArrayOrCurry,\n\trenderFnOrArrayType,\n} from \"../../core\";\n\ntype DialogContentProps = {\n\tclassName?: string;\n\tstyle?: string;\n\ton?: OnEvent;\n};\n\nexport function DialogContent(\n\tprops?: DialogContentProps\n): (children?: renderFnOrArrayType) => TemplateResult<1>;\nexport function DialogContent(\n\tprops?: DialogContentProps,\n\tchildren?: renderFnOrArrayType\n): TemplateResult<1>;\nexport function DialogContent(\n\tprops?: DialogContentProps,\n\tchildren?: renderFnOrArrayType\n) {\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\n\tconst render = (children?: renderFnOrArrayType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"lyco-dialog-content ${className}\"\n\t\t\t\tstyle=\"\n background: white;\n border-radius: 4px;\n padding: 20px;\n min-width: 300px;\n position: relative;\n ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFnOrArray(children)}\n\t\t\t</div>\n\t\t`;\n\t};\n\n\treturn renderFnOrArrayOrCurry(children, render);\n}\n","import { html, TemplateResult } from \"lit\";\nimport { ref, type Ref } from \"lit/directives/ref.js\";\nimport {\n\tcreateEventBinder,\n\tOnEvent,\n\trenderFn,\n\trenderFnOrCurry,\n\trenderFnType,\n} from \"../../core\";\n\ntype DialogTitleProps = {\n\tclassName?: string;\n\tstyle?: string;\n\tproxyRef?: Ref<Element>;\n\ton?: OnEvent;\n};\n\nexport function DialogTitle(\n\tprops?: DialogTitleProps\n): (children?: renderFnType) => TemplateResult<1>;\nexport function DialogTitle(\n\tprops?: DialogTitleProps,\n\tchildren?: renderFnType\n): TemplateResult<1>;\nexport function DialogTitle(props?: DialogTitleProps, children?: renderFnType) {\n\tconst className = props?.className ?? \"\";\n\tconst style = props?.style ?? \"\";\n\tconst binder = createEventBinder(props?.on ?? {});\n\tconst proxyRef = props?.proxyRef ?? {\n\t\tvalue: null,\n\t};\n\tconst render = (children?: renderFnType) => {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\t${ref((el) => {\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tproxyRef.value = el;\n\t\t\t\t\t\tbinder.bind(el);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbinder.unbindAll();\n\t\t\t\t\t}\n\t\t\t\t})}\n\t\t\t\tclass=\"lyco-dialog-title ${className}\"\n\t\t\t\tstyle=\"\n padding: 16px 24px;\n font-size: 20px;\n font-weight: 500;\n line-height: 1.6;\n letter-spacing: 0.0075em;\n ${style}\n \"\n\t\t\t>\n\t\t\t\t${renderFn(children)}\n\t\t\t</div>\n\t\t`;\n\t};\n\n\treturn renderFnOrCurry(children, render);\n}\n","import { renderFnOrArray, renderFnOrArrayType, Temp } from \"../core\";\n\nexport {\n\tVirtualizer,\n\tVirtualizerController,\n\ttype ItemsSource,\n\ttype VirtualizerConfig,\n} from \"./Virtualizer.labs\";\n\nexport { LightboxContainer } from \"./LightboxContainer\";\n\nexport { Column } from \"./Column\";\nexport { Flex } from \"./Flex\";\nexport { FlowItem } from \"./FlowItem\";\nexport { Grid } from \"./Grid\";\nexport { GridCol } from \"./GridCol\";\nexport { GridItem } from \"./GridItem\";\nexport { GridRow } from \"./GridRow\";\nexport { Row } from \"./Row\";\nexport { WaterFlow } from \"./WaterFlow\";\n\nexport { ColumnSplit } from \"./ColumnSplit\";\nexport { RowSplit } from \"./RowSplit\";\nexport { ScrollBar } from \"./ScrollBar\";\nexport { SideBarContainer } from \"./SideBarContainer\";\nexport { Swiper } from \"./Swiper\";\nexport { SwitchInput } from \"./SwitchInput\";\n\nexport { AbsoluteBox } from \"./AbsoluteBox\";\nexport { AcrylicBar } from \"./AcrylicBar\";\nexport { AspectRatio } from \"./AspectRatio\";\nexport { AutoFitGrid } from \"./AutoFitGrid\";\nexport { AvatarStack } from \"./AvatarStack\";\nexport { Badge } from \"./Badge\";\nexport { Canvas } from \"./Canvas\";\nexport { Card } from \"./Card\";\nexport { Center } from \"./Center\";\nexport { Combobox } from \"./Combobox\";\nexport { Container } from \"./Container\";\nexport { Divider } from \"./Divider\";\nexport { FooterLayout } from \"./FooterLayout\";\nexport { ForEach } from \"./ForEach\";\nexport { GridBreakpoint } from \"./GridBreakpoint\";\nexport { HeroSection } from \"./HeroSection\";\nexport { Hidden } from \"./Hidden\";\nexport { LazyForEach } from \"./LazyForEach\";\nexport { List, ListItem } from \"./List\";\nexport { ListGroup } from \"./ListGroup\";\nexport { Overlay } from \"./Overlay\";\nexport { PositionContainer } from \"./PositionContainer\";\nexport { Progress } from \"./Progress\";\nexport { SizedBox } from \"./SizedBox\";\nexport { SkeletonLoader } from \"./SkeletonLoader\";\nexport { Spacer } from \"./Spacer\";\nexport { Spinner } from \"./Spinner\";\nexport { Sticky } from \"./Sticky\";\nexport { Table } from \"./Table\";\nexport { WithTooltip } from \"./Tooltip\";\nexport { Wrap } from \"./Wrap\";\nexport { ZStack } from \"./ZStack\";\n// 弹窗组件\nexport * from \"./Dialog\";\n\nexport function $Html(slot: renderFnOrArrayType) {\n\treturn renderFnOrArray(slot);\n}\n\nexport function $Once(\n\tself: HTMLElement,\n\tslot: () => Temp | Temp[],\n\tslotKey?: string\n): Temp {\n\tconst _self = self as any;\n\n\t// Use the provided slotKey or generate one based on the stringified slot function\n\tconst key = slotKey || `__LYCO_ONCE_CACHE_${slot.toString()}__`;\n\n\tif (!_self[key]) {\n\t\t_self[key] = slot();\n\t\treturn _self[key];\n\t} else {\n\t\treturn _self[key];\n\t}\n}\n"],"mappings":"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"}