solid-tom-ui 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/components/carousel/carousel.d.ts.map +1 -1
  2. package/dist/components/carousel/carousel.js.map +1 -1
  3. package/dist/components/context-menu/context-menu.js.map +1 -1
  4. package/dist/components/context-menu/context-menu.store.d.ts.map +1 -1
  5. package/dist/components/context-menu/context-menu.store.js.map +1 -1
  6. package/dist/components/context-menu/context-menu.types.d.ts.map +1 -1
  7. package/dist/components/divider/divider.d.ts.map +1 -1
  8. package/dist/components/divider/divider.js.map +1 -1
  9. package/dist/components/divider/divider.types.d.ts.map +1 -1
  10. package/dist/components/divider/index.d.ts +1 -1
  11. package/dist/components/divider/index.d.ts.map +1 -1
  12. package/dist/components/drawer/drawer.types.d.ts.map +1 -1
  13. package/dist/components/dropdown/dropdown.store.js.map +1 -1
  14. package/dist/components/mansory/mansory.d.ts.map +1 -1
  15. package/dist/components/mansory/mansory.js.map +1 -1
  16. package/dist/components/mansory/mansory.types.d.ts.map +1 -1
  17. package/dist/components/modal/modal.d.ts.map +1 -1
  18. package/dist/components/modal/modal.js.map +1 -1
  19. package/dist/components/modal/modalContext.d.ts.map +1 -1
  20. package/dist/components/modal/modalContext.js.map +1 -1
  21. package/dist/components/progress-bar/progress-bar.d.ts.map +1 -1
  22. package/dist/components/progress-bar/progress-bar.js.map +1 -1
  23. package/dist/components/qr-code/qr-code.d.ts.map +1 -1
  24. package/dist/components/qr-code/qr-code.js.map +1 -1
  25. package/dist/components/select-zone/select-zone.js.map +1 -1
  26. package/dist/components/splitter/splitter.d.ts.map +1 -1
  27. package/dist/components/splitter/splitter.js.map +1 -1
  28. package/dist/components/timeline/timeline.d.ts.map +1 -1
  29. package/dist/components/timeline/timeline.js.map +1 -1
  30. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  31. package/dist/components/tooltip/tooltip.js.map +1 -1
  32. package/dist/components/upload/upload.d.ts.map +1 -1
  33. package/dist/components/upload/upload.js.map +1 -1
  34. package/dist/components/upload/upload.types.d.ts.map +1 -1
  35. package/dist/components/z-index/z-index.d.ts.map +1 -1
  36. package/dist/components/z-index/z-index.js.map +1 -1
  37. package/dist/solid-ui.css +1 -1
  38. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","names":["cn","getColor","acquire","OFFSET","release","ZIndex","ZIndexType","cva","VariantProps","Component","createSignal","createUniqueId","JSX","Match","mergeProps","onCleanup","onMount","Show","Switch","TooltipPortalProps","TooltipProps","tooltipVariants","variants","color","neutral","primary","secondary","accent","info","success","warning","error","position","top","bottom","right","left","TooltipVariantsProps","ActiveEntry","node","HTMLDivElement","registryKey","offset","bubbleHovered","activeMap","Map","customContentRegistry","Element","refCount","observer","IntersectionObserver","calcStyle","r","DOMRect","Record","OFFSET_PX","width","transform","height","showTooltip","id","triggerEl","HTMLElement","content","customContent","colorClass","extraClass","customZIndex","has","getBoundingClientRect","style","document","createElement","className","Object","assign","pointerEvents","zIndexOffset","zIndex","undefined","acquired","TOOLTIP","String","textContent","appendChild","cloneNode","entry","set","addEventListener","onBubbleEnter","onBubbleLeave","removeTooltipIfIdle","body","sentinelActiveSet","Set","get","remove","delete","removeTooltip","getOrCreateObserver","entries","el","target","dataset","tip","pos","Number","isIntersecting","add","closest","threshold","Tooltip","p","_$createComponent","when","hidden","fallback","_$memo","children","TooltipDefaultMain","type","TooltipPortalMain","const","sentinelRef","customContentRef","class","firstElementChild","observe","cleanupTooltipRegistration","unobserve","disconnect","_el$","_tmpl$","_el$2","firstChild","_$use","tt","_ref$","_$insert","_c$","_el$3","_tmpl$2","_ref$2","_$effect","_p$","_v$","root","_v$2","e","_$className","t","_$setAttribute","portalBubbleStyle","setPortalBubbleStyle","CSSProperties","TooltipEntry","setHovered","v","updateCoords","ContainerState","count","containerMap","WeakMap","ListenerPair","over","Event","out","listenerMap","makeMouseOver","state","getAttribute","makeMouseOut","related","MouseEvent","relatedTarget","contains","attachToContainer","passive","detachFromContainer","pair","removeEventListener","calcPortalStyle","isHovered","setIsHovered","onTriggerMount","setAttribute","handle","cancelled","doCleanup","register","getElementById","containerId","s","removeAttribute","queueMicrotask","cancelAndDetachTrigger","_el$4","_tmpl$3","_$spread","_$mergeProps","open","blockScroll","customValue"],"sources":["../../../src/components/tooltip/tooltip.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\nimport { getColor } from '@/utils/helper';\nimport { acquire, OFFSET, release, ZIndex, ZIndexType } from '@components/z-index';\nimport { cva, VariantProps } from 'class-variance-authority';\nimport {\n Component,\n createSignal,\n createUniqueId,\n JSX,\n Match,\n mergeProps,\n onCleanup,\n onMount,\n Show,\n Switch,\n} from 'solid-js';\nimport type { TooltipPortalProps, TooltipProps } from './tooltip.types';\n\n// ─── CVA variants (dùng cho TooltipPortal) ────────────────────────────────\n\nconst tooltipVariants = cva('', {\n variants: {\n color: {\n neutral: 'tooltip-neutral',\n primary: 'tooltip-primary',\n secondary: 'tooltip-secondary',\n accent: 'tooltip-accent',\n info: 'tooltip-info',\n success: 'tooltip-success',\n warning: 'tooltip-warning',\n error: 'tooltip-error',\n },\n position: {\n top: 'tooltip-top',\n bottom: 'tooltip-bottom',\n right: 'tooltip-right',\n left: 'tooltip-left',\n },\n },\n});\nexport type TooltipVariantsProps = VariantProps<typeof tooltipVariants>;\n\n// ═══════════════════════════════════════════════════════════════════════════\n// TOOLTIP — IO-based (không bị clip bởi overflow)\n// ═══════════════════════════════════════════════════════════════════════════\n\n// --- Global scope (IO mechanism) ---\ntype ActiveEntry = {\n node: HTMLDivElement;\n registryKey: string;\n offset: number;\n /** true khi chuột đang ở trên bubble — giữ tooltip không bị remove */\n bubbleHovered: boolean;\n /** position của trigger để tính bridge */\n position: 'top' | 'bottom' | 'left' | 'right';\n};\n\nconst activeMap = new Map<string, ActiveEntry>();\n\n/** Registry cho customContent: id → rendered DOM node */\nconst customContentRegistry = new Map<string, Element>();\n\nlet refCount = 0;\nlet observer: IntersectionObserver | null = null;\n\nfunction calcStyle(\n r: DOMRect,\n position: 'top' | 'bottom' | 'left' | 'right',\n): Record<string, string> {\n const OFFSET_PX = 8;\n if (position === 'top') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.top - OFFSET_PX}px`,\n transform: 'translateX(-50%) translateY(-100%)',\n };\n } else if (position === 'bottom') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.bottom + OFFSET_PX}px`,\n transform: 'translateX(-50%)',\n };\n } else if (position === 'left') {\n return {\n left: `${r.left - OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateX(-100%) translateY(-50%)',\n };\n } else {\n return {\n left: `${r.right + OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateY(-50%)',\n };\n }\n}\n\nfunction showTooltip(\n id: string,\n triggerEl: HTMLElement,\n content: string | undefined,\n customContent: Element | undefined,\n position: 'top' | 'bottom' | 'left' | 'right',\n colorClass: string,\n extraClass: string | undefined,\n customZIndex: number | undefined,\n) {\n if (activeMap.has(id)) return;\n\n const r = triggerEl.getBoundingClientRect();\n const style = calcStyle(r, position);\n\n const node = document.createElement('div');\n node.className = cn('too06', colorClass, extraClass);\n\n Object.assign(node.style, { position: 'fixed', pointerEvents: 'auto' }, style);\n\n let registryKey: string;\n let zIndexOffset: number;\n let zIndex: number;\n\n if (customZIndex !== undefined) {\n zIndex = customZIndex;\n registryKey = '';\n zIndexOffset = -1;\n } else {\n const acquired = acquire(ZIndexType.TOOLTIP, OFFSET[ZIndexType.TOOLTIP]);\n zIndex = acquired.zIndex;\n registryKey = acquired.registryKey;\n zIndexOffset = acquired.offset;\n }\n\n node.style.zIndex = String(zIndex);\n\n if (content) {\n node.textContent = content;\n } else if (customContent) {\n node.appendChild(customContent.cloneNode(true));\n }\n\n const entry: ActiveEntry = { node, registryKey, offset: zIndexOffset, bubbleHovered: false, position };\n activeMap.set(id, entry);\n\n node.addEventListener('mouseenter', function onBubbleEnter() {\n entry.bubbleHovered = true;\n });\n node.addEventListener('mouseleave', function onBubbleLeave() {\n entry.bubbleHovered = false;\n // Nếu sentinel đã không còn visible (chuột đã rời trigger), xóa tooltip\n removeTooltipIfIdle(id);\n });\n\n document.body.appendChild(node);\n}\n\n/** sentinelActive = true khi IO đang thấy sentinel (chuột trên trigger/bridge) */\nconst sentinelActiveSet = new Set<string>();\n\nfunction removeTooltipIfIdle(id: string) {\n const entry = activeMap.get(id);\n if (!entry) return;\n // Chỉ remove nếu cả sentinel lẫn bubble đều không có hover\n if (sentinelActiveSet.has(id) || entry.bubbleHovered) return;\n entry.node.remove();\n if (entry.offset >= 0) {\n release(entry.registryKey, entry.offset);\n }\n activeMap.delete(id);\n}\n\nfunction removeTooltip(id: string) {\n sentinelActiveSet.delete(id);\n removeTooltipIfIdle(id);\n}\n\n/**\n * Trick kết hợp CSS: sentinel element 1×1px ẩn bên trong wrapper.\n * Khi `:hover` CSS làm sentinel hiển thị (`display: block`), IntersectionObserver\n * phát hiện nó intersect viewport và gọi `showTooltip()`.\n * Không dùng JS event listener trên trigger — zero overhead.\n */\nfunction getOrCreateObserver(): IntersectionObserver {\n if (!observer) {\n observer = new IntersectionObserver(\n entries => {\n for (const entry of entries) {\n const el = entry.target as HTMLElement;\n const id = el.dataset.id ?? '';\n const content = el.dataset.tip;\n const pos = (el.dataset.position ?? 'top') as 'top' | 'bottom' | 'left' | 'right';\n const colorClass = el.dataset.colorClass ?? '';\n const extraClass = el.dataset.extraClass;\n const customZIndex = el.dataset.customZIndex\n ? Number(el.dataset.customZIndex)\n : undefined;\n\n if (entry.isIntersecting) {\n sentinelActiveSet.add(id);\n const triggerEl = el.closest('[data-tt]') as HTMLElement | null;\n if (!triggerEl) continue;\n const customContent = customContentRegistry.get(id);\n showTooltip(\n id,\n triggerEl,\n content,\n customContent,\n pos,\n colorClass,\n extraClass,\n customZIndex,\n );\n } else {\n removeTooltip(id);\n }\n }\n },\n { threshold: 0 },\n );\n }\n return observer;\n}\n\n// ─── Tooltip — unified entry point ──────────────────────────────────────────\n\nexport const Tooltip: Component<TooltipProps> = p => {\n return (\n <Show when={!p.hidden} fallback={<>{p.children}</>}>\n <Switch fallback={<TooltipDefaultMain {...p} />}>\n <Match when={p.type === 'portal' || 'containerId' in p}>\n <TooltipPortalMain {...(p as TooltipPortalProps)} />\n </Match>\n </Switch>\n </Show>\n );\n};\n\n// ─── Default (IO-based) impl ─────────────────────────────────────────────────\n\nconst TooltipDefaultMain: Component<TooltipProps> = p => {\n p = mergeProps(\n {\n position: 'top' as const,\n color: 'neutral' as const,\n },\n p,\n );\n const id = createUniqueId();\n let sentinelRef!: HTMLDivElement;\n let customContentRef!: HTMLDivElement;\n\n onMount(() => {\n refCount++;\n sentinelRef.dataset.id = id;\n sentinelRef.dataset.tip = p.content ?? '';\n sentinelRef.dataset.position = p.position;\n sentinelRef.dataset.colorClass = getColor(p.color);\n if (p.class?.content) sentinelRef.dataset.extraClass = p.class.content;\n if (p.zIndex !== undefined) sentinelRef.dataset.customZIndex = String(p.zIndex);\n if (p.customContent && customContentRef?.firstElementChild) {\n customContentRegistry.set(id, customContentRef.firstElementChild);\n }\n getOrCreateObserver().observe(sentinelRef);\n });\n\n onCleanup(function cleanupTooltipRegistration() {\n observer?.unobserve(sentinelRef);\n removeTooltip(id);\n customContentRegistry.delete(id);\n refCount--;\n if (refCount === 0 && observer) {\n observer.disconnect();\n observer = null;\n }\n });\n\n return (\n <div\n ref={el => (el.dataset.tt = '')}\n class={cn('too07', p.class?.root)}\n data-pos={p.position ?? 'top'}\n >\n <div ref={sentinelRef} class=\"too08\" />\n {p.children as JSX.Element}\n {p.customContent && (\n <div ref={customContentRef} class=\"hidden\">\n {p.customContent}\n </div>\n )}\n </div>\n );\n};\n\n// ═══════════════════════════════════════════════════════════════════════════\n// TOOLTIP PORTAL — Event-delegation mode\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * SINGLETON PORTAL BUBBLE — Thiết kế có chủ đích.\n * Signal ở module scope vì toàn bộ hệ thống tooltip portal chỉ có\n * DUY NHẤT 1 bubble tồn tại trong DOM tại bất kỳ thời điểm nào.\n */\nconst [portalBubbleStyle, setPortalBubbleStyle] = createSignal<\n import('solid-js').JSX.CSSProperties\n>({});\n\ntype TooltipEntry = {\n setHovered: (v: boolean) => void;\n updateCoords: () => void;\n};\n\ntype ContainerState = {\n count: number;\n entries: Map<string, TooltipEntry>;\n};\n\nconst containerMap = new WeakMap<Element, ContainerState>();\n\ntype ListenerPair = { over: (e: Event) => void; out: (e: Event) => void };\nconst listenerMap = new WeakMap<Element, ListenerPair>();\n\nfunction makeMouseOver(state: ContainerState) {\n return (e: Event) => {\n const el = (e.target as Element).closest('[tt]');\n if (!el) return;\n const tt = el.getAttribute('tt')!;\n const entry = state.entries.get(tt);\n if (entry) {\n entry.updateCoords();\n entry.setHovered(true);\n }\n };\n}\n\nfunction makeMouseOut(state: ContainerState) {\n return (e: Event) => {\n const el = (e.target as Element).closest('[tt]');\n if (!el) return;\n const tt = el.getAttribute('tt')!;\n const related = (e as MouseEvent).relatedTarget as Element | null;\n if (related && el.contains(related)) return;\n const entry = state.entries.get(tt);\n if (entry) entry.setHovered(false);\n };\n}\n\nfunction attachToContainer(root: Element, state: ContainerState) {\n const over = makeMouseOver(state);\n const out = makeMouseOut(state);\n listenerMap.set(root, { over, out });\n root.addEventListener('mouseover', over, { passive: true });\n root.addEventListener('mouseout', out, { passive: true });\n}\n\nfunction detachFromContainer(root: Element) {\n const pair = listenerMap.get(root);\n if (!pair) return;\n root.removeEventListener('mouseover', pair.over);\n root.removeEventListener('mouseout', pair.out);\n listenerMap.delete(root);\n}\n\nfunction calcPortalStyle(\n el: HTMLElement,\n position: 'top' | 'bottom' | 'left' | 'right',\n): import('solid-js').JSX.CSSProperties {\n const r = el.getBoundingClientRect();\n const OFFSET_PX = 8;\n\n if (position === 'top') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.top - OFFSET_PX}px`,\n transform: 'translateX(-50%) translateY(-100%)',\n };\n } else if (position === 'bottom') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.bottom + OFFSET_PX}px`,\n transform: 'translateX(-50%)',\n };\n } else if (position === 'left') {\n return {\n left: `${r.left - OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateX(-100%) translateY(-50%)',\n };\n } else {\n return {\n left: `${r.right + OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateY(-50%)',\n };\n }\n}\n\nconst TooltipPortalMain: Component<TooltipPortalProps> = p => {\n const id = createUniqueId();\n p = mergeProps(\n {\n position: 'top' as const,\n color: 'neutral' as const,\n },\n p,\n );\n\n const [isHovered, setIsHovered] = createSignal(false);\n\n const onTriggerMount = (el: HTMLDivElement) => {\n const position = p.position ?? 'top';\n const updateCoords = () => setPortalBubbleStyle(calcPortalStyle(el, position));\n el.setAttribute('tt', id);\n\n const handle = { cancelled: false, doCleanup: undefined as (() => void) | undefined };\n\n const register = () => {\n if (handle.cancelled) return;\n\n const root = document.getElementById(p.containerId);\n if (!root) return;\n\n let state = containerMap.get(root);\n if (!state) {\n state = { count: 0, entries: new Map() };\n containerMap.set(root, state);\n }\n state.entries.set(id, { setHovered: setIsHovered, updateCoords });\n state.count += 1;\n if (state.count === 1) attachToContainer(root, state);\n\n handle.doCleanup = () => {\n const s = containerMap.get(root);\n if (!s) return;\n s.entries.delete(id);\n s.count -= 1;\n el.removeAttribute('tt');\n if (s.count === 0) {\n detachFromContainer(root);\n containerMap.delete(root);\n }\n };\n };\n\n queueMicrotask(register);\n onCleanup(function cancelAndDetachTrigger() {\n handle.cancelled = true;\n handle.doCleanup?.();\n });\n };\n\n return (\n <div\n ref={onTriggerMount}\n class={cn(\n 'too01',\n tooltipVariants({ color: p.color, position: p.position }),\n getColor(p.color),\n 'too04',\n p.class?.root,\n )}\n {...(p.content && !p.customContent && { ['data-tip']: p.content })}\n >\n <Switch>\n <Match when={p.content}>\n <ZIndex\n type={ZIndexType.TOOLTIP}\n open={isHovered()}\n position={portalBubbleStyle()}\n class={cn('too05', getColor(p.color), p.class?.content)}\n blockScroll={false}\n customValue={p.zIndex}\n >\n {p.content}\n </ZIndex>\n </Match>\n <Match when={p.customContent}>\n <ZIndex\n type={ZIndexType.TOOLTIP}\n open={isHovered()}\n position={portalBubbleStyle()}\n class={cn('too05', p.class?.content)}\n customValue={p.zIndex}\n >\n {p.customContent}\n </ZIndex>\n </Match>\n </Switch>\n {p.children as JSX.Element}\n </div>\n );\n};\n"],"mappings":"qrBAoBMqB,EAAkBd,EAAI,GAAI,CAC9Be,SAAU,CACRC,MAAO,CACLC,QAAS,kBACTC,QAAS,kBACTC,UAAW,oBACXC,OAAQ,iBACRC,KAAM,eACNC,QAAS,kBACTC,QAAS,kBACTC,MAAO,gBACR,CACDC,SAAU,CACRC,IAAK,cACLC,OAAQ,iBACRC,MAAO,gBACPC,KAAM,eACR,CACF,CACD,CAAC,CAkBIQ,EAAY,IAAIC,IAGhBC,EAAwB,IAAID,IAE9BG,EAAW,EACXC,EAAwC,KAE5C,SAASE,EACPC,EACApB,EACwB,CAqBtB,OAnBEA,IAAa,MACR,CACLI,KAAM,GAAGgB,EAAEhB,KAAOgB,EAAEI,MAAQ,EAAC,IAC7BvB,IAAK,GAAGmB,EAAEnB,IAAMsB,EAAS,IACzBE,UAAW,qCACZ,CACQzB,IAAa,SACf,CACLI,KAAM,GAAGgB,EAAEhB,KAAOgB,EAAEI,MAAQ,EAAC,IAC7BvB,IAAK,GAAGmB,EAAElB,OAASqB,EAAS,IAC5BE,UAAW,mBACZ,CACQzB,IAAa,OACf,CACLI,KAAM,GAAGgB,EAAEhB,KAAOmB,EAAS,IAC3BtB,IAAK,GAAGmB,EAAEnB,IAAMmB,EAAEM,OAAS,EAAC,IAC5BD,UAAW,qCACZ,CAEM,CACLrB,KAAM,GAAGgB,EAAEjB,MAAQoB,EAAS,IAC5BtB,IAAK,GAAGmB,EAAEnB,IAAMmB,EAAEM,OAAS,EAAC,IAC5BD,UAAW,mBACZ,CAIL,SAASE,EACPC,EACAC,EACAE,EACAC,EACAhC,EACAiC,EACAC,EACAC,EACA,CACA,GAAIvB,EAAUwB,IAAIR,EAAG,CAAE,OAGvB,IAAMU,EAAQnB,EADJU,EAAUQ,uBAAuB,CAChBrC,EAAS,CAE9BO,EAAOgC,SAASC,cAAc,MAAM,CAC1CjC,EAAKkC,UAAYzE,EAAG,QAASiE,EAAYC,EAAW,CAEpDQ,OAAOC,OAAOpC,EAAK+B,MAAO,CAAEtC,SAAU,QAAS4C,cAAe,OAAQ,CAAEN,EAAM,CAE9E,IAAI7B,EACAoC,EACAC,EAEJ,GAAIX,IAAiBY,IAAAA,GACnBD,EAASX,EACT1B,EAAc,GACdoC,EAAe,OACV,CACL,IAAMG,EAAW9E,EAAQI,EAAW2E,QAAS9E,EAAOG,EAAW2E,SAAS,CACxEH,EAASE,EAASF,OAClBrC,EAAcuC,EAASvC,YACvBoC,EAAeG,EAAStC,OAG1BH,EAAK+B,MAAMQ,OAASI,OAAOJ,EAAO,CAE9Bf,EACFxB,EAAK4C,YAAcpB,EACVC,GACTzB,EAAK6C,YAAYpB,EAAcqB,UAAU,GAAK,CAAC,CAGjD,IAAMC,EAAqB,CAAE/C,OAAME,cAAaC,OAAQmC,EAAclC,cAAe,GAAOX,WAAU,CACtGY,EAAU2C,IAAI3B,EAAI0B,EAAM,CAExB/C,EAAKiD,iBAAiB,aAAc,UAAyB,CAC3DF,EAAM3C,cAAgB,IACtB,CACFJ,EAAKiD,iBAAiB,aAAc,UAAyB,CAC3DF,EAAM3C,cAAgB,GAEtBgD,EAAoB/B,EAAG,EACvB,CAEFW,SAASqB,KAAKR,YAAY7C,EAAK,CAIjC,IAAMsD,EAAoB,IAAIC,IAE9B,SAASH,EAAoB/B,EAAY,CACvC,IAAM0B,EAAQ1C,EAAUmD,IAAInC,EAAG,CAC1B0B,IAEDO,EAAkBzB,IAAIR,EAAG,EAAI0B,EAAM3C,gBACvC2C,EAAM/C,KAAKyD,QAAQ,CACfV,EAAM5C,QAAU,GAClBtC,EAAQkF,EAAM7C,YAAa6C,EAAM5C,OAAO,CAE1CE,EAAUqD,OAAOrC,EAAG,GAGtB,SAASsC,EAActC,EAAY,CACjCiC,EAAkBI,OAAOrC,EAAG,CAC5B+B,EAAoB/B,EAAG,CASzB,SAASuC,GAA4C,CAsCnD,MArCA,CACElD,IAAW,IAAIC,qBACbkD,GAAW,CACT,IAAK,IAAMd,KAASc,EAAS,CAC3B,IAAMC,EAAKf,EAAMgB,OACX1C,EAAKyC,EAAGE,QAAQ3C,IAAM,GACtBG,EAAUsC,EAAGE,QAAQC,IACrBC,EAAOJ,EAAGE,QAAQvE,UAAY,MAC9BiC,EAAaoC,EAAGE,QAAQtC,YAAc,GACtCC,EAAamC,EAAGE,QAAQrC,WACxBC,EAAekC,EAAGE,QAAQpC,aAC5BuC,OAAOL,EAAGE,QAAQpC,aAAa,CAC/BY,IAAAA,GAEJ,GAAIO,EAAMqB,eAAgB,CACxBd,EAAkBe,IAAIhD,EAAG,CACzB,IAAMC,EAAYwC,EAAGQ,QAAQ,YAAY,CACzC,GAAI,CAAChD,EAAW,SAEhBF,EACEC,EACAC,EACAE,EAJoBjB,EAAsBiD,IAAInC,EAAG,CAMjD6C,EACAxC,EACAC,EACAC,EACD,MAED+B,EAActC,EAAG,GAIvB,CAAEkD,UAAW,EACf,CAAC,CAEI7D,EAKT,IAAa8D,EAAmCC,GAC9CC,EACGhG,EAAI,CAAA,IAACiG,MAAI,CAAA,MAAE,CAACF,EAAEG,QAAM,IAAEC,UAAQ,CAAA,OAAAC,MAAKL,EAAEM,SAAQ,EAAA,IAAAA,UAAA,CAAA,OAAAL,EAC3C/F,EAAM,CAAA,IAACkG,UAAQ,CAAA,OAAAH,EAAGM,EAAuBP,EAAC,EAAA,IAAAM,UAAA,CAAA,OAAAL,EACxCpG,EAAK,CAAA,IAACqG,MAAI,CAAA,OAAEF,EAAEQ,OAAS,UAAY,gBAAiBR,GAAC,IAAAM,UAAA,CAAA,OAAAL,EACnDQ,EAAuBT,EAAuB,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CASnDO,EAA8CP,GAAK,CACvDA,EAAIlG,EACF,CACEkB,SAAU,MACVT,MAAO,UACR,CACDyF,EACD,CACD,IAAMpD,EAAKjD,GAAgB,CACvBgH,EACAC,EA2BJ,OAzBA5G,MAAc,CACZgC,IACA2E,EAAYpB,QAAQ3C,GAAKA,EACzB+D,EAAYpB,QAAQC,IAAMQ,EAAEjD,SAAW,GACvC4D,EAAYpB,QAAQvE,SAAWgF,EAAEhF,SACjC2F,EAAYpB,QAAQtC,WAAahE,EAAS+G,EAAEzF,MAAM,CAC9CyF,EAAEa,OAAO9D,UAAS4D,EAAYpB,QAAQrC,WAAa8C,EAAEa,MAAM9D,SAC3DiD,EAAElC,SAAWC,IAAAA,KAAW4C,EAAYpB,QAAQpC,aAAee,OAAO8B,EAAElC,OAAO,EAC3EkC,EAAEhD,eAAiB4D,GAAkBE,mBACvChF,EAAsByC,IAAI3B,EAAIgE,EAAiBE,kBAAkB,CAEnE3B,GAAqB,CAAC4B,QAAQJ,EAAY,EAC1C,CAEF5G,EAAU,UAAsC,CAC9CkC,GAAUgF,UAAUN,EAAY,CAChCzB,EAActC,EAAG,CACjBd,EAAsBmD,OAAOrC,EAAG,CAChCZ,IACIA,IAAa,GAAKC,IACpBA,EAASiF,YAAY,CACrBjF,EAAW,OAEb,MAEF,CAAA,IAAAkF,EAAAC,GAAA,CAAAC,EAAAF,EAAAG,WAAAC,EAESlC,GAAOA,EAAGE,QAAQiC,GAAK,GAAGL,EAAA,CAAA,IAAAM,EAIrBd,EAFmB,OAER,OAAAc,GAAA,WAAAF,EAAAE,EAAAJ,EAAA,CAAXV,EAAWU,EAAAK,EAAAP,MACpBnB,EAAEM,SAAuB,KAAA,CAAAoB,EAAAP,OAAA,CAAA,IAAAQ,EAAAtB,MAAA,CAAA,CACzBL,EAAEhD,cAAa,CAAA,UAAf2E,GAAA,OAAA,CAAA,IAAAC,EAAAC,GAAA,CAAAC,EACWlB,EACQ,OADQ,OAAAkB,GAAA,WAAAP,EAAAO,EAAAF,EAAA,CAAhBhB,EAAgBgB,EAAAF,EAAAE,MACvB5B,EAAEhD,cAAa,CAAA4E,KAEnB,IAAA,CAAA,KAAA,CAAAG,EAAAC,GAAA,CAAA,IAAAC,EATMjJ,EAAG,QAASgH,EAAEa,OAAOqB,KAAK,CAAAC,EACvBnC,EAAEhF,UAAY,MAAK,OAAAiH,IAAAD,EAAAI,GAAAC,EAAAlB,EAAAa,EAAAI,EAAAH,EAAA,CAAAE,IAAAH,EAAAM,GAAAC,EAAApB,EAAA,WAAAa,EAAAM,EAAAH,EAAA,CAAAH,GAAA,CAAAI,EAAArE,IAAAA,GAAAuE,EAAAvE,IAAAA,GAAA,CAAA,CAAAoD,KAAA,EAsB7B,CAACqB,EAAmBC,GAAwB/I,EAEhD,EAAE,CAAC,CAYCuJ,EAAe,IAAIC,QAGnBK,EAAc,IAAIL,QAExB,SAASM,EAAcC,EAAuB,CAC5C,MAAQrB,IAAa,CACnB,IAAM/C,EAAM+C,EAAE9C,OAAmBO,QAAQ,OAAO,CAChD,GAAI,CAACR,EAAI,OACT,IAAMmC,EAAKnC,EAAGqE,aAAa,KAAK,CAC1BpF,EAAQmF,EAAMrE,QAAQL,IAAIyC,EAAG,CAC/BlD,IACFA,EAAMwE,cAAc,CACpBxE,EAAMsE,WAAW,GAAK,GAK5B,SAASe,EAAaF,EAAuB,CAC3C,MAAQrB,IAAa,CACnB,IAAM/C,EAAM+C,EAAE9C,OAAmBO,QAAQ,OAAO,CAChD,GAAI,CAACR,EAAI,OACT,IAAMmC,EAAKnC,EAAGqE,aAAa,KAAK,CAC1BE,EAAWxB,EAAiB0B,cAClC,GAAIF,GAAWvE,EAAG0E,SAASH,EAAQ,CAAE,OACrC,IAAMtF,EAAQmF,EAAMrE,QAAQL,IAAIyC,EAAG,CAC/BlD,GAAOA,EAAMsE,WAAW,GAAM,EAItC,SAASoB,EAAkB9B,EAAeuB,EAAuB,CAC/D,IAAML,EAAOI,EAAcC,EAAM,CAC3BH,EAAMK,EAAaF,EAAM,CAC/BF,EAAYhF,IAAI2D,EAAM,CAAEkB,OAAME,MAAK,CAAC,CACpCpB,EAAK1D,iBAAiB,YAAa4E,EAAM,CAAEa,QAAS,GAAM,CAAC,CAC3D/B,EAAK1D,iBAAiB,WAAY8E,EAAK,CAAEW,QAAS,GAAM,CAAC,CAG3D,SAASC,EAAoBhC,EAAe,CAC1C,IAAMiC,EAAOZ,EAAYxE,IAAImD,EAAK,CAC7BiC,IACLjC,EAAKkC,oBAAoB,YAAaD,EAAKf,KAAK,CAChDlB,EAAKkC,oBAAoB,WAAYD,EAAKb,IAAI,CAC9CC,EAAYtE,OAAOiD,EAAK,EAG1B,SAASmC,EACPhF,EACArE,EACsC,CACtC,IAAMoB,EAAIiD,EAAGhC,uBAAuB,CAsBlC,OAnBErC,IAAa,MACR,CACLI,KAAM,GAAGgB,EAAEhB,KAAOgB,EAAEI,MAAQ,EAAC,IAC7BvB,IAAK,GAAGmB,EAAEnB,IAAMsB,EAAS,IACzBE,UAAW,qCACZ,CACQzB,IAAa,SACf,CACLI,KAAM,GAAGgB,EAAEhB,KAAOgB,EAAEI,MAAQ,EAAC,IAC7BvB,IAAK,GAAGmB,EAAElB,OAASqB,EAAS,IAC5BE,UAAW,mBACZ,CACQzB,IAAa,OACf,CACLI,KAAM,GAAGgB,EAAEhB,KAAOmB,EAAS,IAC3BtB,IAAK,GAAGmB,EAAEnB,IAAMmB,EAAEM,OAAS,EAAC,IAC5BD,UAAW,qCACZ,CAEM,CACLrB,KAAM,GAAGgB,EAAEjB,MAAQoB,EAAS,IAC5BtB,IAAK,GAAGmB,EAAEnB,IAAMmB,EAAEM,OAAS,EAAC,IAC5BD,UAAW,mBACZ,CAIL,IAAMgE,EAAmDT,GAAK,CAC5D,IAAMpD,EAAKjD,GAAgB,CAC3BqG,EAAIlG,EACF,CACEkB,SAAU,MACVT,MAAO,UACR,CACDyF,EACD,CAED,GAAM,CAACsE,EAAWC,GAAgB7K,EAAa,GAAM,CAE/C8K,EAAkBnF,GAAuB,CAC7C,IAAMrE,EAAWgF,EAAEhF,UAAY,MACzB8H,MAAqBL,EAAqB4B,EAAgBhF,EAAIrE,EAAS,CAAC,CAC9EqE,EAAGoF,aAAa,KAAM7H,EAAG,CAEzB,IAAM8H,EAAS,CAAEC,UAAW,GAAOC,UAAW7G,IAAAA,GAAuC,CA8BrFmH,mBA5BuB,CACrB,GAAIR,EAAOC,UAAW,OAEtB,IAAMzC,EAAO3E,SAASuH,eAAe9E,EAAE+E,YAAY,CACnD,GAAI,CAAC7C,EAAM,OAEX,IAAIuB,EAAQR,EAAalE,IAAImD,EAAK,CAC7BuB,IACHA,EAAQ,CAAET,MAAO,EAAG5D,QAAS,IAAIvD,IAAO,CACxCoH,EAAa1E,IAAI2D,EAAMuB,EAAM,EAE/BA,EAAMrE,QAAQb,IAAI3B,EAAI,CAAEgG,WAAY2B,EAAczB,eAAc,CAAC,CACjEW,EAAMT,OAAS,EACXS,EAAMT,QAAU,GAAGgB,EAAkB9B,EAAMuB,EAAM,CAErDiB,EAAOE,cAAkB,CACvB,IAAMI,EAAI/B,EAAalE,IAAImD,EAAK,CAC3B8C,IACLA,EAAE5F,QAAQH,OAAOrC,EAAG,CACpBoI,IAAEhC,MACF3D,EAAG4F,gBAAgB,KAAK,CACpBD,EAAEhC,QAAU,IACdkB,EAAoBhC,EAAK,CACzBe,EAAahE,OAAOiD,EAAK,KAKP,CACxBnI,EAAU,UAAkC,CAC1C2K,EAAOC,UAAY,GACnBD,EAAOE,aAAa,EACpB,EAGJ,WAAA,CAAA,IAAAQ,EAAAC,GAAA,CAqC8B,OArC9B9D,EAESiD,EAAcY,EAAA,CAAAE,EAAAF,EAAAG,EAAA,CAAA,IAAA,OAAA,CAAA,OACZvM,EACL,QACAqB,EAAgB,CAAEE,MAAOyF,EAAEzF,MAAOS,SAAUgF,EAAEhF,SAAU,CAAC,CACzD/B,EAAS+G,EAAEzF,MAAM,CACjB,QACAyF,EAAEa,OAAOqB,KACV,EAAA,KACIlC,EAAEjD,SAAW,CAACiD,EAAEhD,eAAiB,CAAG,WAAagD,EAAEjD,QAAS,CAAA,CAAA,GAAA,GAAA,CAAA2E,EAAA0D,EAAAnF,EAEhE/F,EAAM,CAAA,IAAAoG,UAAA,CAAA,MAAA,CAAAL,EACJpG,EAAK,CAAA,IAACqG,MAAI,CAAA,OAAEF,EAAEjD,SAAO,IAAAuD,UAAA,CAAA,OAAAL,EACnB5G,EAAM,CAAA,IACLmH,MAAI,CAAA,OAAElH,EAAW2E,SAAO,IACxBuH,MAAI,CAAA,OAAElB,GAAW,EAAA,IACjBtJ,UAAQ,CAAA,OAAEwH,GAAmB,EAAA,IAAA,OAAA,CAAA,OACtBxJ,EAAG,QAASC,EAAS+G,EAAEzF,MAAM,CAAEyF,EAAEa,OAAO9D,QAAQ,EACvD0I,YAAa,GAAK,IAClBC,aAAW,CAAA,OAAE1F,EAAElC,QAAM,IAAAwC,UAAA,CAAA,OAEpBN,EAAEjD,SAAO,CAAA,EAAA,CAAA,CAAAkD,EAGbpG,EAAK,CAAA,IAACqG,MAAI,CAAA,OAAEF,EAAEhD,eAAa,IAAAsD,UAAA,CAAA,OAAAL,EACzB5G,EAAM,CAAA,IACLmH,MAAI,CAAA,OAAElH,EAAW2E,SAAO,IACxBuH,MAAI,CAAA,OAAElB,GAAW,EAAA,IACjBtJ,UAAQ,CAAA,OAAEwH,GAAmB,EAAA,IAAA,OAAA,CAAA,OACtBxJ,EAAG,QAASgH,EAAEa,OAAO9D,QAAQ,EAAA,IACpC2I,aAAW,CAAA,OAAE1F,EAAElC,QAAM,IAAAwC,UAAA,CAAA,OAEpBN,EAAEhD,eAAa,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,KAAA,CAAA0E,EAAA0D,MAIrBpF,EAAEM,SAAuB,KAAA,CAAA8E,KAAA"}
1
+ {"version":3,"file":"tooltip.js","names":["cn","getColor","acquire","OFFSET","release","ZIndex","ZIndexType","cva","VariantProps","Component","createSignal","createUniqueId","JSX","Match","mergeProps","onCleanup","onMount","Show","Switch","TooltipPortalProps","TooltipProps","tooltipVariants","variants","color","neutral","primary","secondary","accent","info","success","warning","error","position","top","bottom","right","left","TooltipVariantsProps","ActiveEntry","node","HTMLDivElement","registryKey","offset","bubbleHovered","activeMap","Map","customContentRegistry","Element","refCount","observer","IntersectionObserver","calcStyle","r","DOMRect","Record","OFFSET_PX","width","transform","height","showTooltip","id","triggerEl","HTMLElement","content","customContent","colorClass","extraClass","customZIndex","has","getBoundingClientRect","style","document","createElement","className","Object","assign","pointerEvents","zIndexOffset","zIndex","undefined","acquired","TOOLTIP","String","textContent","appendChild","cloneNode","entry","set","addEventListener","onBubbleEnter","onBubbleLeave","removeTooltipIfIdle","body","sentinelActiveSet","Set","get","remove","delete","removeTooltip","getOrCreateObserver","entries","el","target","dataset","tip","pos","Number","isIntersecting","add","closest","threshold","Tooltip","p","_$createComponent","when","hidden","fallback","_$memo","children","TooltipDefaultMain","type","TooltipPortalMain","const","sentinelRef","customContentRef","class","firstElementChild","observe","cleanupTooltipRegistration","unobserve","disconnect","_el$","_tmpl$","_el$2","firstChild","_$use","tt","_ref$","_$insert","_c$","_el$3","_tmpl$2","_ref$2","_$effect","_p$","_v$","root","_v$2","e","_$className","t","_$setAttribute","portalBubbleStyle","setPortalBubbleStyle","CSSProperties","TooltipEntry","setHovered","v","updateCoords","ContainerState","count","containerMap","WeakMap","ListenerPair","over","Event","out","listenerMap","makeMouseOver","state","getAttribute","makeMouseOut","related","MouseEvent","relatedTarget","contains","attachToContainer","passive","detachFromContainer","pair","removeEventListener","calcPortalStyle","isHovered","setIsHovered","onTriggerMount","setAttribute","handle","cancelled","doCleanup","register","getElementById","containerId","s","removeAttribute","queueMicrotask","cancelAndDetachTrigger","_el$4","_tmpl$3","_$spread","_$mergeProps","open","blockScroll","customValue"],"sources":["../../../src/components/tooltip/tooltip.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\nimport { getColor } from '@/utils/helper';\nimport { acquire, OFFSET, release, ZIndex, ZIndexType } from '@components/z-index';\nimport { cva, VariantProps } from 'class-variance-authority';\nimport {\n Component,\n createSignal,\n createUniqueId,\n JSX,\n Match,\n mergeProps,\n onCleanup,\n onMount,\n Show,\n Switch,\n} from 'solid-js';\nimport type { TooltipPortalProps, TooltipProps } from './tooltip.types';\n\n// ─── CVA variants (dùng cho TooltipPortal) ────────────────────────────────\n\nconst tooltipVariants = cva('', {\n variants: {\n color: {\n neutral: 'tooltip-neutral',\n primary: 'tooltip-primary',\n secondary: 'tooltip-secondary',\n accent: 'tooltip-accent',\n info: 'tooltip-info',\n success: 'tooltip-success',\n warning: 'tooltip-warning',\n error: 'tooltip-error',\n },\n position: {\n top: 'tooltip-top',\n bottom: 'tooltip-bottom',\n right: 'tooltip-right',\n left: 'tooltip-left',\n },\n },\n});\nexport type TooltipVariantsProps = VariantProps<typeof tooltipVariants>;\n\n// ═══════════════════════════════════════════════════════════════════════════\n// TOOLTIP — IO-based (không bị clip bởi overflow)\n// ═══════════════════════════════════════════════════════════════════════════\n\n// --- Global scope (IO mechanism) ---\ntype ActiveEntry = {\n node: HTMLDivElement;\n registryKey: string;\n offset: number;\n /** true khi chuột đang ở trên bubble — giữ tooltip không bị remove */\n bubbleHovered: boolean;\n /** position của trigger để tính bridge */\n position: 'top' | 'bottom' | 'left' | 'right';\n};\n\nconst activeMap = new Map<string, ActiveEntry>();\n\n/** Registry cho customContent: id → rendered DOM node */\nconst customContentRegistry = new Map<string, Element>();\n\nlet refCount = 0;\nlet observer: IntersectionObserver | null = null;\n\nfunction calcStyle(\n r: DOMRect,\n position: 'top' | 'bottom' | 'left' | 'right',\n): Record<string, string> {\n const OFFSET_PX = 8;\n if (position === 'top') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.top - OFFSET_PX}px`,\n transform: 'translateX(-50%) translateY(-100%)',\n };\n } else if (position === 'bottom') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.bottom + OFFSET_PX}px`,\n transform: 'translateX(-50%)',\n };\n } else if (position === 'left') {\n return {\n left: `${r.left - OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateX(-100%) translateY(-50%)',\n };\n } else {\n return {\n left: `${r.right + OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateY(-50%)',\n };\n }\n}\n\nfunction showTooltip(\n id: string,\n triggerEl: HTMLElement,\n content: string | undefined,\n customContent: Element | undefined,\n position: 'top' | 'bottom' | 'left' | 'right',\n colorClass: string,\n extraClass: string | undefined,\n customZIndex: number | undefined,\n) {\n if (activeMap.has(id)) return;\n\n const r = triggerEl.getBoundingClientRect();\n const style = calcStyle(r, position);\n\n const node = document.createElement('div');\n node.className = cn('too06', colorClass, extraClass);\n\n Object.assign(node.style, { position: 'fixed', pointerEvents: 'auto' }, style);\n\n let registryKey: string;\n let zIndexOffset: number;\n let zIndex: number;\n\n if (customZIndex !== undefined) {\n zIndex = customZIndex;\n registryKey = '';\n zIndexOffset = -1;\n } else {\n const acquired = acquire(ZIndexType.TOOLTIP, OFFSET[ZIndexType.TOOLTIP]);\n zIndex = acquired.zIndex;\n registryKey = acquired.registryKey;\n zIndexOffset = acquired.offset;\n }\n\n node.style.zIndex = String(zIndex);\n\n if (content) {\n node.textContent = content;\n } else if (customContent) {\n node.appendChild(customContent.cloneNode(true));\n }\n\n const entry: ActiveEntry = {\n node,\n registryKey,\n offset: zIndexOffset,\n bubbleHovered: false,\n position,\n };\n activeMap.set(id, entry);\n\n node.addEventListener('mouseenter', function onBubbleEnter() {\n entry.bubbleHovered = true;\n });\n node.addEventListener('mouseleave', function onBubbleLeave() {\n entry.bubbleHovered = false;\n // Nếu sentinel đã không còn visible (chuột đã rời trigger), xóa tooltip\n removeTooltipIfIdle(id);\n });\n\n document.body.appendChild(node);\n}\n\n/** sentinelActive = true khi IO đang thấy sentinel (chuột trên trigger/bridge) */\nconst sentinelActiveSet = new Set<string>();\n\nfunction removeTooltipIfIdle(id: string) {\n const entry = activeMap.get(id);\n if (!entry) return;\n // Chỉ remove nếu cả sentinel lẫn bubble đều không có hover\n if (sentinelActiveSet.has(id) || entry.bubbleHovered) return;\n entry.node.remove();\n if (entry.offset >= 0) {\n release(entry.registryKey, entry.offset);\n }\n activeMap.delete(id);\n}\n\nfunction removeTooltip(id: string) {\n sentinelActiveSet.delete(id);\n removeTooltipIfIdle(id);\n}\n\n/**\n * Trick kết hợp CSS: sentinel element 1×1px ẩn bên trong wrapper.\n * Khi `:hover` CSS làm sentinel hiển thị (`display: block`), IntersectionObserver\n * phát hiện nó intersect viewport và gọi `showTooltip()`.\n * Không dùng JS event listener trên trigger — zero overhead.\n */\nfunction getOrCreateObserver(): IntersectionObserver {\n if (!observer) {\n observer = new IntersectionObserver(\n entries => {\n for (const entry of entries) {\n const el = entry.target as HTMLElement;\n const id = el.dataset.id ?? '';\n const content = el.dataset.tip;\n const pos = (el.dataset.position ?? 'top') as 'top' | 'bottom' | 'left' | 'right';\n const colorClass = el.dataset.colorClass ?? '';\n const extraClass = el.dataset.extraClass;\n const customZIndex = el.dataset.customZIndex\n ? Number(el.dataset.customZIndex)\n : undefined;\n\n if (entry.isIntersecting) {\n sentinelActiveSet.add(id);\n const triggerEl = el.closest('[data-tt]') as HTMLElement | null;\n if (!triggerEl) continue;\n const customContent = customContentRegistry.get(id);\n showTooltip(\n id,\n triggerEl,\n content,\n customContent,\n pos,\n colorClass,\n extraClass,\n customZIndex,\n );\n } else {\n removeTooltip(id);\n }\n }\n },\n { threshold: 0 },\n );\n }\n return observer;\n}\n\n// ─── Tooltip — unified entry point ──────────────────────────────────────────\n\nexport const Tooltip: Component<TooltipProps> = p => {\n return (\n <Show when={!p.hidden} fallback={<>{p.children}</>}>\n <Switch fallback={<TooltipDefaultMain {...p} />}>\n <Match when={p.type === 'portal' || 'containerId' in p}>\n <TooltipPortalMain {...(p as TooltipPortalProps)} />\n </Match>\n </Switch>\n </Show>\n );\n};\n\n// ─── Default (IO-based) impl ─────────────────────────────────────────────────\n\nconst TooltipDefaultMain: Component<TooltipProps> = p => {\n p = mergeProps(\n {\n position: 'top' as const,\n color: 'neutral' as const,\n },\n p,\n );\n const id = createUniqueId();\n let sentinelRef!: HTMLDivElement;\n let customContentRef!: HTMLDivElement;\n\n onMount(() => {\n refCount++;\n sentinelRef.dataset.id = id;\n sentinelRef.dataset.tip = p.content ?? '';\n sentinelRef.dataset.position = p.position;\n sentinelRef.dataset.colorClass = getColor(p.color);\n if (p.class?.content) sentinelRef.dataset.extraClass = p.class.content;\n if (p.zIndex !== undefined) sentinelRef.dataset.customZIndex = String(p.zIndex);\n if (p.customContent && customContentRef?.firstElementChild) {\n customContentRegistry.set(id, customContentRef.firstElementChild);\n }\n getOrCreateObserver().observe(sentinelRef);\n });\n\n onCleanup(function cleanupTooltipRegistration() {\n observer?.unobserve(sentinelRef);\n removeTooltip(id);\n customContentRegistry.delete(id);\n refCount--;\n if (refCount === 0 && observer) {\n observer.disconnect();\n observer = null;\n }\n });\n\n return (\n <div\n ref={el => (el.dataset.tt = '')}\n class={cn('too07', p.class?.root)}\n data-pos={p.position ?? 'top'}\n >\n <div ref={sentinelRef} class=\"too08\" />\n {p.children as JSX.Element}\n {p.customContent && (\n <div ref={customContentRef} class=\"hidden\">\n {p.customContent}\n </div>\n )}\n </div>\n );\n};\n\n// ═══════════════════════════════════════════════════════════════════════════\n// TOOLTIP PORTAL — Event-delegation mode\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * SINGLETON PORTAL BUBBLE — Thiết kế có chủ đích.\n * Signal ở module scope vì toàn bộ hệ thống tooltip portal chỉ có\n * DUY NHẤT 1 bubble tồn tại trong DOM tại bất kỳ thời điểm nào.\n */\nconst [portalBubbleStyle, setPortalBubbleStyle] = createSignal<\n import('solid-js').JSX.CSSProperties\n>({});\n\ntype TooltipEntry = {\n setHovered: (v: boolean) => void;\n updateCoords: () => void;\n};\n\ntype ContainerState = {\n count: number;\n entries: Map<string, TooltipEntry>;\n};\n\nconst containerMap = new WeakMap<Element, ContainerState>();\n\ntype ListenerPair = { over: (e: Event) => void; out: (e: Event) => void };\nconst listenerMap = new WeakMap<Element, ListenerPair>();\n\nfunction makeMouseOver(state: ContainerState) {\n return (e: Event) => {\n const el = (e.target as Element).closest('[tt]');\n if (!el) return;\n const tt = el.getAttribute('tt')!;\n const entry = state.entries.get(tt);\n if (entry) {\n entry.updateCoords();\n entry.setHovered(true);\n }\n };\n}\n\nfunction makeMouseOut(state: ContainerState) {\n return (e: Event) => {\n const el = (e.target as Element).closest('[tt]');\n if (!el) return;\n const tt = el.getAttribute('tt')!;\n const related = (e as MouseEvent).relatedTarget as Element | null;\n if (related && el.contains(related)) return;\n const entry = state.entries.get(tt);\n if (entry) entry.setHovered(false);\n };\n}\n\nfunction attachToContainer(root: Element, state: ContainerState) {\n const over = makeMouseOver(state);\n const out = makeMouseOut(state);\n listenerMap.set(root, { over, out });\n root.addEventListener('mouseover', over, { passive: true });\n root.addEventListener('mouseout', out, { passive: true });\n}\n\nfunction detachFromContainer(root: Element) {\n const pair = listenerMap.get(root);\n if (!pair) return;\n root.removeEventListener('mouseover', pair.over);\n root.removeEventListener('mouseout', pair.out);\n listenerMap.delete(root);\n}\n\nfunction calcPortalStyle(\n el: HTMLElement,\n position: 'top' | 'bottom' | 'left' | 'right',\n): import('solid-js').JSX.CSSProperties {\n const r = el.getBoundingClientRect();\n const OFFSET_PX = 8;\n\n if (position === 'top') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.top - OFFSET_PX}px`,\n transform: 'translateX(-50%) translateY(-100%)',\n };\n } else if (position === 'bottom') {\n return {\n left: `${r.left + r.width / 2}px`,\n top: `${r.bottom + OFFSET_PX}px`,\n transform: 'translateX(-50%)',\n };\n } else if (position === 'left') {\n return {\n left: `${r.left - OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateX(-100%) translateY(-50%)',\n };\n } else {\n return {\n left: `${r.right + OFFSET_PX}px`,\n top: `${r.top + r.height / 2}px`,\n transform: 'translateY(-50%)',\n };\n }\n}\n\nconst TooltipPortalMain: Component<TooltipPortalProps> = p => {\n const id = createUniqueId();\n p = mergeProps(\n {\n position: 'top' as const,\n color: 'neutral' as const,\n },\n p,\n );\n\n const [isHovered, setIsHovered] = createSignal(false);\n\n const onTriggerMount = (el: HTMLDivElement) => {\n const position = p.position ?? 'top';\n const updateCoords = () => setPortalBubbleStyle(calcPortalStyle(el, position));\n el.setAttribute('tt', id);\n\n const handle = { cancelled: false, doCleanup: undefined as (() => void) | undefined };\n\n const register = () => {\n if (handle.cancelled) return;\n\n const root = document.getElementById(p.containerId);\n if (!root) return;\n\n let state = containerMap.get(root);\n if (!state) {\n state = { count: 0, entries: new Map() };\n containerMap.set(root, state);\n }\n state.entries.set(id, { setHovered: setIsHovered, updateCoords });\n state.count += 1;\n if (state.count === 1) attachToContainer(root, state);\n\n handle.doCleanup = () => {\n const s = containerMap.get(root);\n if (!s) return;\n s.entries.delete(id);\n s.count -= 1;\n el.removeAttribute('tt');\n if (s.count === 0) {\n detachFromContainer(root);\n containerMap.delete(root);\n }\n };\n };\n\n queueMicrotask(register);\n onCleanup(function cancelAndDetachTrigger() {\n handle.cancelled = true;\n handle.doCleanup?.();\n });\n };\n\n return (\n <div\n ref={onTriggerMount}\n class={cn(\n 'too01',\n tooltipVariants({ color: p.color, position: p.position }),\n getColor(p.color),\n 'too04',\n p.class?.root,\n )}\n {...(p.content && !p.customContent && { ['data-tip']: p.content })}\n >\n <Switch>\n <Match when={p.content}>\n <ZIndex\n type={ZIndexType.TOOLTIP}\n open={isHovered()}\n position={portalBubbleStyle()}\n class={cn('too05', getColor(p.color), p.class?.content)}\n blockScroll={false}\n customValue={p.zIndex}\n >\n {p.content}\n </ZIndex>\n </Match>\n <Match when={p.customContent}>\n <ZIndex\n type={ZIndexType.TOOLTIP}\n open={isHovered()}\n position={portalBubbleStyle()}\n class={cn('too05', p.class?.content)}\n customValue={p.zIndex}\n >\n {p.customContent}\n </ZIndex>\n </Match>\n </Switch>\n {p.children as JSX.Element}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/components/upload/upload.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAGL,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AA+3BxB,eAAO,MAAM,MAAM,EAAiB,eAAe,CAAC"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/components/upload/upload.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAGL,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AA23BxB,eAAO,MAAM,MAAM,EAAiB,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","names":["cn","ImagePreview","Spinner","CircleCheck","CircleX","CloudUpload","Eye","File","FileImage","FileText","Film","Music","Trash2","X","ZoomIn","Accessor","createSignal","createUniqueId","For","Match","mergeProps","Show","Switch","Tooltip","UploadBaseProps","UploadClassConfig","UploadComponent","UploadDraggerProps","UploadFile","UploadProps","UploadRequestOption","cls","config","key","extra","wrapperCls","base","wrapper","getFileIconColor","type","startsWith","includes","getFileIconBg","getFileIconNode","size","_$createComponent","getFileBadge","name","label","colorClass","ext","split","pop","toUpperCase","slice","formatFileSize","bytes","toFixed","isImageFile","defaultRequest","options","cancelled","current","tick","increment","Math","random","min","onProgress","round","setTimeout","onSuccess","ProgressEntry","v","useUpload","props","fileList","setFileList","progressMap","Map","cancelMap","imgMap","HTMLImageElement","getProgress","uid","get","cancelAndClean","thumbUrl","delete","img","onload","src","URL","revokeObjectURL","processFiles","rawFiles","FileList","files","Array","from","maxCount","maxFileSize","maxTotalSize","currentList","file","onError","message","newTotal","length","currentTotal","reduce","sum","f","batchTotal","forEach","createObjectURL","undefined","percent","setPercent","set","newFile","status","originFile","Image","list","map","dimensions","width","naturalWidth","height","naturalHeight","prev","nextList","multiple","onChange","requestFn","customRequest","cancel","next","const","done","find","error","Error","failed","value","snapshot","idx","findIndex","removeFile","removed","filter","clearAll","ProgressBar","trackClass","fillClass","_el$","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","_v$2","_v$3","e","_$className","t","a","_$setStyleProperty","CardProgressOverlay","_el$3","_tmpl$2","_el$4","_el$5","_el$6","nextSibling","_el$7","_$insert","PictureThumbLoading","_tmpl$3","TextFileList","onRemove","onClearAll","showClearAll","classConfig","showTooltip","listId","_el$9","_tmpl$5","_el$13","_$setAttribute","when","_$memo","children","_el$0","_tmpl$4","_el$1","_el$10","_el$11","_el$12","_$addEventListener","_v$4","_v$5","_v$6","each","badge","_el$14","_tmpl$6","FileUploadItem","isUploading","_el$15","_tmpl$8","_el$16","_el$17","_el$19","_el$20","content","hidden","root","_el$18","_tmpl$7","$$click","_v$7","_v$8","_v$9","_v$0","o","PictureFileList","preview","setPreview","_el$21","_tmpl$9","_el$27","_el$22","_el$23","_el$24","_el$25","_el$26","_v$1","_v$10","_v$11","_el$28","_tmpl$14","_el$29","_el$32","_el$33","_el$34","_el$39","_el$43","_el$45","fallback","_el$46","_tmpl$15","_el$47","_v$20","_v$21","_el$30","_tmpl$0","_v$12","_v$13","_el$31","_tmpl$1","_el$35","_tmpl$10","_el$36","_el$38","_el$37","_el$40","_tmpl$11","_el$41","_tmpl$12","_el$44","_tmpl$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","i","n","imageName","onClose","PictureCardFileList","onAdd","showAddButton","_el$48","_el$49","_el$50","_el$51","_el$52","_v$22","_v$23","_v$24","_el$53","_tmpl$17","_el$56","_el$61","_el$57","_v$25","_v$26","_v$27","_el$58","_tmpl$18","_el$60","_el$59","_el$54","_tmpl$16","_el$55","UploadBase","p","listType","showUploadList","inputRef","HTMLInputElement","triggerInput","click","handleInputChange","Event","input","currentTarget","effectiveShowClearAll","_el$62","_tmpl$20","_el$63","_ref$","_$use","_$spread","_$mergeProps","accept","directory","webkitdirectory","class","_el$64","_tmpl$19","_el$65","errorMessage","_el$66","UploadDragger","hint","isDragging","setIsDragging","handleDragOver","DragEvent","preventDefault","handleDragLeave","handleDrop","dataTransfer","_el$67","_el$68","_ref$2","_el$69","_el$70","addEventListener","icon","strokeWidth","_el$72","_tmpl$21","_el$73","_tmpl$22","_v$28","_v$29","_el$71","Upload","Dragger","_$delegateEvents"],"sources":["../../../src/components/upload/upload.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\nimport { ImagePreview } from '@components/image-preview';\nimport { Spinner } from '@components/loading/loading';\nimport CircleCheck from 'lucide-solid/icons/circle-check';\nimport CircleX from 'lucide-solid/icons/circle-x';\nimport CloudUpload from 'lucide-solid/icons/cloud-upload';\nimport Eye from 'lucide-solid/icons/eye';\nimport File from 'lucide-solid/icons/file';\nimport FileImage from 'lucide-solid/icons/file-image';\nimport FileText from 'lucide-solid/icons/file-text';\nimport Film from 'lucide-solid/icons/film';\nimport Music from 'lucide-solid/icons/music';\nimport Trash2 from 'lucide-solid/icons/trash-2';\nimport X from 'lucide-solid/icons/x';\nimport ZoomIn from 'lucide-solid/icons/zoom-in';\nimport {\n Accessor,\n createSignal,\n createUniqueId,\n For,\n Match,\n mergeProps,\n Show,\n Switch,\n} from 'solid-js';\nimport { Tooltip } from '../tooltip';\nimport {\n UploadBaseProps,\n UploadClassConfig,\n UploadComponent,\n UploadDraggerProps,\n UploadFile,\n UploadProps,\n UploadRequestOption,\n} from './upload.types';\n\nfunction cls(\n config: string | UploadClassConfig | undefined,\n key: keyof UploadClassConfig,\n extra?: string,\n): string {\n if (!config) return extra ?? '';\n if (typeof config === 'string') return extra ?? '';\n return cn(config[key], extra);\n}\n\nfunction wrapperCls(config: string | UploadClassConfig | undefined, base: string): string {\n if (!config) return base;\n if (typeof config === 'string') return cn(base, config);\n return cn(base, config.wrapper);\n}\n\nfunction getFileIconColor(type: string): string {\n if (type.startsWith('image/')) return 'text-violet-500';\n if (type.startsWith('video/')) return 'text-rose-500';\n if (type.startsWith('audio/')) return 'text-amber-500';\n if (type === 'application/pdf') return 'text-red-500';\n if (type.includes('text') || type.includes('document')) return 'text-blue-500';\n if (type.includes('spreadsheet') || type.includes('excel')) return 'text-emerald-500';\n return 'text-base-content/40';\n}\n\nfunction getFileIconBg(type: string): string {\n if (type.startsWith('image/')) return 'bg-violet-500/10';\n if (type.startsWith('video/')) return 'bg-rose-500/10';\n if (type.startsWith('audio/')) return 'bg-amber-500/10';\n if (type === 'application/pdf') return 'bg-red-500/10';\n if (type.includes('text') || type.includes('document')) return 'bg-blue-500/10';\n if (type.includes('spreadsheet') || type.includes('excel')) return 'bg-emerald-500/10';\n return 'bg-base-content/5';\n}\n\nfunction getFileIconNode(type: string, size = 16) {\n if (type.startsWith('image/')) return <FileImage size={size} />;\n if (type.startsWith('video/')) return <Film size={size} />;\n if (type.startsWith('audio/')) return <Music size={size} />;\n if (type === 'application/pdf' || type.includes('text')) return <FileText size={size} />;\n return <File size={size} />;\n}\n\nfunction getFileBadge(type: string, name: string): { label: string; colorClass: string } {\n if (type === 'application/pdf') return { label: 'PDF', colorClass: 'bg-red-500' };\n if (type.startsWith('image/')) {\n const ext = name.split('.').pop()?.toUpperCase().slice(0, 3) ?? 'IMG';\n return { label: ext, colorClass: 'bg-violet-500' };\n }\n if (type.startsWith('video/')) return { label: 'VID', colorClass: 'bg-rose-500' };\n if (type.startsWith('audio/')) return { label: 'AUD', colorClass: 'bg-amber-500' };\n if (type.includes('spreadsheet') || type.includes('excel'))\n return { label: 'XLS', colorClass: 'bg-emerald-500' };\n if (type.includes('document') || type.includes('word'))\n return { label: 'DOC', colorClass: 'bg-blue-500' };\n if (type.includes('text')) return { label: 'TXT', colorClass: 'bg-blue-500' };\n\n const ext = name.split('.').pop()?.toUpperCase().slice(0, 4) ?? 'FILE';\n return { label: ext, colorClass: 'bg-slate-400' };\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction isImageFile(type: string): boolean {\n return type.startsWith('image/');\n}\n\nfunction defaultRequest(options: UploadRequestOption): () => void {\n let cancelled = false;\n let current = 0;\n\n const tick = () => {\n if (cancelled) return;\n\n const increment = Math.random() * 10 + 8;\n current = Math.min(current + increment, 95);\n options.onProgress(Math.round(current));\n\n if (current < 95) {\n setTimeout(tick, 100 + Math.random() * 80);\n } else {\n\n setTimeout(\n () => {\n if (cancelled) return;\n options.onProgress(100);\n options.onSuccess();\n },\n 400 + Math.random() * 300,\n );\n }\n };\n\n setTimeout(tick, 50);\n\n return () => {\n cancelled = true;\n };\n}\n\ntype ProgressEntry = [Accessor<number>, (v: number) => void];\n\nfunction useUpload(props: UploadBaseProps) {\n const [fileList, setFileList] = createSignal<UploadFile[]>([]);\n const progressMap = new Map<string, ProgressEntry>();\n\n const cancelMap = new Map<string, () => void>();\n\n const imgMap = new Map<string, HTMLImageElement>();\n\n const getProgress = (uid: string): Accessor<number> => {\n return progressMap.get(uid)?.[0] ?? (() => 0);\n };\n\n const cancelAndClean = (uid: string, thumbUrl?: string) => {\n cancelMap.get(uid)?.();\n cancelMap.delete(uid);\n progressMap.delete(uid);\n\n const img = imgMap.get(uid);\n if (img) {\n img.onload = null;\n img.src = '';\n imgMap.delete(uid);\n }\n if (thumbUrl) URL.revokeObjectURL(thumbUrl);\n };\n\n const processFiles = (rawFiles: FileList | File[]) => {\n const files = Array.from(rawFiles);\n const maxCount = props.maxCount;\n const maxFileSize = props.maxFileSize;\n const maxTotalSize = props.maxTotalSize;\n\n const currentList = fileList();\n\n for (const file of files) {\n\n if (maxFileSize && file.size > maxFileSize) {\n props.onError?.({\n type: 'maxFileSize',\n file,\n message: `\"${file.name}\" vượt quá dung lượng cho phép (${formatFileSize(maxFileSize)})`,\n });\n return;\n }\n }\n\n if (maxCount) {\n const newTotal = currentList.length + files.length;\n if (newTotal > maxCount) {\n props.onError?.({\n type: 'maxCount',\n file: files[0],\n message: `Đã đạt số lượng file tối đa (${maxCount})`,\n });\n return;\n }\n }\n\n if (maxTotalSize) {\n const currentTotal = currentList.reduce((sum, f) => sum + f.size, 0);\n const batchTotal = files.reduce((sum, f) => sum + f.size, 0);\n if (currentTotal + batchTotal > maxTotalSize) {\n props.onError?.({\n type: 'maxTotalSize',\n file: files[0],\n message: `Tổng dung lượng vượt quá giới hạn (${formatFileSize(maxTotalSize)})`,\n });\n return;\n }\n }\n\n files.forEach(file => {\n const uid = createUniqueId();\n const thumbUrl = isImageFile(file.type) ? URL.createObjectURL(file) : undefined;\n\n const [percent, setPercent] = createSignal(0);\n progressMap.set(uid, [percent, setPercent]);\n\n const newFile: UploadFile = {\n uid,\n name: file.name,\n size: file.size,\n type: file.type,\n status: 'uploading',\n originFile: file,\n thumbUrl,\n };\n\n if (thumbUrl) {\n const img = new Image();\n imgMap.set(uid, img);\n img.onload = () => {\n imgMap.delete(uid);\n setFileList(list =>\n list.map(f =>\n f.uid === uid\n ? { ...f, dimensions: { width: img.naturalWidth, height: img.naturalHeight } }\n : f,\n ),\n );\n };\n img.src = thumbUrl;\n }\n\n setFileList(prev => {\n const nextList = props.multiple === false ? [newFile] : [...prev, newFile];\n props.onChange?.({ file: newFile, fileList: nextList });\n return nextList;\n });\n\n const requestFn = props.customRequest ?? defaultRequest;\n const cancel = requestFn({\n file,\n onSuccess: () => {\n setPercent(100);\n setFileList(list => {\n const next = list.map(f => (f.uid === uid ? { ...f, status: 'done' as const } : f));\n const done = next.find(f => f.uid === uid);\n if (done) props.onChange?.({ file: done, fileList: next });\n return next;\n });\n cancelMap.delete(uid);\n progressMap.delete(uid);\n },\n onError: (error: Error) => {\n setFileList(list => {\n const next = list.map(f => (f.uid === uid ? { ...f, status: 'error' as const } : f));\n const failed = next.find(f => f.uid === uid);\n if (failed) props.onChange?.({ file: { ...failed, error }, fileList: next });\n return next;\n });\n cancelMap.delete(uid);\n progressMap.delete(uid);\n },\n onProgress: value => {\n\n setPercent(value);\n\n const snapshot = fileList();\n const idx = snapshot.findIndex(f => f.uid === uid);\n if (idx !== -1)\n props.onChange?.({\n file: { ...snapshot[idx], percent: value },\n fileList: snapshot,\n });\n },\n });\n\n if (typeof cancel === 'function') cancelMap.set(uid, cancel);\n });\n };\n\n const removeFile = (uid: string) => {\n setFileList(prev => {\n const removed = prev.find(f => f.uid === uid);\n\n cancelAndClean(uid, removed?.thumbUrl);\n const next = prev.filter(f => f.uid !== uid);\n if (removed) props.onChange?.({ file: { ...removed, status: 'removed' }, fileList: next });\n return next;\n });\n };\n\n const clearAll = () => {\n setFileList(prev => {\n prev.forEach(f => cancelAndClean(f.uid, f.thumbUrl));\n return [];\n });\n };\n\n return { fileList, processFiles, removeFile, clearAll, getProgress };\n}\n\nfunction ProgressBar(props: {\n percent: Accessor<number>;\n trackClass?: string;\n fillClass?: string;\n}) {\n return (\n <div class={cn('up26', props.trackClass)}>\n <div class={cn('up27', props.fillClass)} style={{ width: `${props.percent()}%` }} />\n </div>\n );\n}\n\nfunction CardProgressOverlay(props: { percent: Accessor<number> }) {\n return (\n <div class=\"up62\">\n <div class=\"up63\">\n <span class=\"loading loading-spinner loading-sm text-white\" />\n <span class=\"up64\">{props.percent()}%</span>\n </div>\n </div>\n );\n}\n\nfunction PictureThumbLoading() {\n return (\n <div class=\"up51\">\n <span class=\"loading loading-spinner loading-xs text-white\" />\n </div>\n );\n}\n\nfunction TextFileList(props: {\n files: UploadFile[];\n onRemove: (uid: string) => void;\n onClearAll: () => void;\n showClearAll: boolean;\n classConfig?: string | UploadClassConfig;\n showTooltip?: boolean;\n}) {\n const listId = createUniqueId();\n return (\n <div id={listId} class={cn('up06', cls(props.classConfig, 'textList'))}>\n <Show when={props.showClearAll && props.files.length > 1}>\n <div class={cn('up44', cls(props.classConfig, 'listHeader'))}>\n <span class={cn('up45', cls(props.classConfig, 'listCount'))}>\n {props.files.length} files\n </span>\n <button\n class={cn('up46', cls(props.classConfig, 'clearBtn'))}\n onClick={props.onClearAll}\n title=\"Remove all\"\n >\n <Trash2 size={12} />\n Clear all\n </button>\n </div>\n </Show>\n <ul class=\"flex flex-col gap-2\">\n <For each={props.files}>\n {file => {\n const badge = getFileBadge(file.type, file.name);\n return (\n <li>\n <FileUploadItem\n file={file}\n badge={badge}\n onRemove={props.onRemove}\n classConfig={props.classConfig}\n showTooltip={props.showTooltip}\n />\n </li>\n );\n }}\n </For>\n </ul>\n </div>\n );\n}\n\nfunction FileUploadItem(props: {\n file: UploadFile;\n badge: { label: string; colorClass: string };\n onRemove: (uid: string) => void;\n classConfig?: string | UploadClassConfig;\n showTooltip?: boolean;\n}) {\n const isUploading = () => props.file.status === 'uploading';\n\n return (\n <div class={cn('up07', cls(props.classConfig, 'textItem'))}>\n <div class=\"flex min-w-0 flex-1 items-center gap-2\">\n <div class={cn('up08', props.badge.colorClass, cls(props.classConfig, 'textBadge'))}>\n {props.badge.label}\n </div>\n <Tooltip\n content={props.file.name}\n hidden={!props.showTooltip}\n class={{ root: 'up09' }}\n type=\"default\"\n >\n <span class={cn('up09', cls(props.classConfig, 'textName'))}>{props.file.name}</span>\n </Tooltip>\n <div class={cn('up10', cls(props.classConfig, 'textSize'))}>\n {formatFileSize(props.file.size)}\n </div>\n\n <Switch>\n <Match when={isUploading()}>\n <Spinner class=\"size-5\" />\n </Match>\n <Match when={props.file.status === 'done'}>\n <CircleCheck size={16} class=\"text-success\" />\n </Match>\n <Match when={props.file.status === 'error'}>\n <CircleX size={16} class=\"text-error\" />\n </Match>\n </Switch>\n\n <button\n class={cn('up57', cls(props.classConfig, 'removeBtn'))}\n onClick={() => props.onRemove(props.file.uid)}\n title=\"Remove\"\n >\n <X size={16} />\n </button>\n </div>\n </div>\n );\n}\n\nfunction PictureFileList(props: {\n files: UploadFile[];\n onRemove: (uid: string) => void;\n onClearAll: () => void;\n showClearAll: boolean;\n getProgress: (uid: string) => Accessor<number>;\n classConfig?: string | UploadClassConfig;\n}) {\n const [preview, setPreview] = createSignal<UploadFile | null>(null);\n\n return (\n <>\n <div class={cn('up47', cls(props.classConfig, 'pictureList'))}>\n <Show when={props.showClearAll && props.files.length > 1}>\n <div class={cn('up44', cls(props.classConfig, 'listHeader'))}>\n <span class={cn('up45', cls(props.classConfig, 'listCount'))}>\n {props.files.length} files\n </span>\n <button\n class={cn('up46', cls(props.classConfig, 'clearBtn'))}\n onClick={props.onClearAll}\n title=\"Remove all\"\n >\n <Trash2 size={12} />\n Clear all\n </button>\n </div>\n </Show>\n <ul class=\"up48\">\n <For each={props.files}>\n {file => (\n <li\n class={cn(\n 'up49',\n file.status === 'uploading' && 'up49a',\n file.status === 'error' && 'up49b',\n cls(props.classConfig, 'pictureItem'),\n )}\n >\n\n <div class={cn('up50', cls(props.classConfig, 'pictureThumb'))}>\n <Show\n when={file.thumbUrl}\n fallback={\n <div\n class={cn(\n 'up53',\n getFileIconBg(file.type),\n cls(props.classConfig, 'pictureIcon'),\n )}\n >\n <span class={getFileIconColor(file.type)}>\n {getFileIconNode(file.type, 20)}\n </span>\n </div>\n }\n >\n <img src={file.thumbUrl} alt={file.name} />\n\n <Show when={file.status === 'uploading'}>\n <PictureThumbLoading />\n </Show>\n\n <Show when={file.status === 'done'}>\n <button class=\"up52\" onClick={() => setPreview(file)} title=\"Preview\">\n <ZoomIn size={14} />\n </button>\n </Show>\n </Show>\n </div>\n\n <div class={cn('up54', cls(props.classConfig, 'pictureInfo'))}>\n <div class=\"up36\">\n <span class=\"up21\" title={file.name}>\n {file.name}\n </span>\n <Show when={file.dimensions}>\n <span class=\"up37\">\n {file.dimensions!.width} × {file.dimensions!.height} px\n </span>\n </Show>\n <span class=\"up39\">{formatFileSize(file.size)}</span>\n </div>\n\n <Show when={file.status === 'uploading'}>\n <ProgressBar\n percent={props.getProgress(file.uid)}\n trackClass={cls(props.classConfig, 'progressTrack')}\n fillClass={cls(props.classConfig, 'progressFill')}\n />\n </Show>\n\n <Show when={file.status === 'done'}>\n <span class=\"up24\">\n <CircleCheck size={11} />\n Uploaded\n </span>\n </Show>\n\n <Show when={file.status === 'error'}>\n <span class=\"up23\">Upload failed</span>\n </Show>\n </div>\n\n <div class={cn('up55', cls(props.classConfig, 'pictureActions'))}>\n <Show when={file.status === 'done' && file.thumbUrl}>\n <button\n class={cn('up56', cls(props.classConfig, 'actionBtn'))}\n onClick={() => setPreview(file)}\n title=\"Preview\"\n >\n <Eye size={14} />\n </button>\n </Show>\n <button\n class={cn('up57', cls(props.classConfig, 'removeBtn'))}\n onClick={() => props.onRemove(file.uid)}\n title=\"Remove\"\n >\n <X size={14} class=\"shrink-0\" />\n </button>\n </div>\n </li>\n )}\n </For>\n </ul>\n </div>\n\n <Show when={preview()}>\n <ImagePreview\n src={preview()!.thumbUrl!}\n imageName={preview()!.name}\n size={formatFileSize(preview()!.size)}\n onClose={() => setPreview(null)}\n />\n </Show>\n </>\n );\n}\n\nfunction PictureCardFileList(props: {\n files: UploadFile[];\n onRemove: (uid: string) => void;\n onAdd: () => void;\n onClearAll: () => void;\n showAddButton: boolean;\n showClearAll: boolean;\n getProgress: (uid: string) => Accessor<number>;\n classConfig?: string | UploadClassConfig;\n}) {\n const [preview, setPreview] = createSignal<UploadFile | null>(null);\n\n return (\n <>\n <Show when={props.showClearAll && props.files.length > 1}>\n <div class={cn('up44', cls(props.classConfig, 'listHeader'))}>\n <span class={cn('up45', cls(props.classConfig, 'listCount'))}>\n {props.files.length} files\n </span>\n <button\n class={cn('up46', cls(props.classConfig, 'clearBtn'))}\n onClick={props.onClearAll}\n title=\"Remove all\"\n >\n <Trash2 size={12} />\n Clear all\n </button>\n </div>\n </Show>\n <div class={cn('up58', cls(props.classConfig, 'cardGrid'))}>\n <For each={props.files}>\n {file => (\n <div\n class={cn('up59', file.status === 'error' && 'up59a', cls(props.classConfig, 'card'))}\n >\n <Show\n when={file.thumbUrl}\n fallback={\n <div class={cn('up61', cls(props.classConfig, 'cardIcon'))}>\n {getFileIconNode(file.type, 24)}\n </div>\n }\n >\n <img\n src={file.thumbUrl}\n alt={file.name}\n class={cn('up60', cls(props.classConfig, 'cardImg'))}\n />\n </Show>\n\n <Show when={file.status === 'uploading'}>\n <CardProgressOverlay percent={props.getProgress(file.uid)} />\n </Show>\n\n <Show when={file.status !== 'uploading'}>\n <div class=\"up65\">\n <Show when={file.thumbUrl}>\n <button\n class={cn('up66', cls(props.classConfig, 'actionBtn'))}\n onClick={() => setPreview(file)}\n title=\"Preview\"\n >\n <Eye size={13} />\n </button>\n </Show>\n <button\n class={cn('up67', cls(props.classConfig, 'removeBtn'))}\n onClick={() => props.onRemove(file.uid)}\n title=\"Remove\"\n >\n <Trash2 size={13} />\n </button>\n </div>\n </Show>\n </div>\n )}\n </For>\n <Show when={props.showAddButton}>\n <button\n class={cn('up68', cls(props.classConfig, 'cardAdd'))}\n onClick={props.onAdd}\n title=\"Upload file\"\n >\n <CloudUpload size={20} class=\"opacity-40\" />\n <span class=\"up69\">Upload</span>\n </button>\n </Show>\n </div>\n\n <Show when={preview()}>\n <ImagePreview\n src={preview()!.thumbUrl!}\n imageName={preview()!.name}\n size={formatFileSize(preview()!.size)}\n onClose={() => setPreview(null)}\n />\n </Show>\n </>\n );\n}\n\nfunction UploadBase(p: UploadProps) {\n p = mergeProps(\n {\n multiple: true,\n listType: 'text' as const,\n showUploadList: true,\n showTooltip: false,\n },\n p,\n );\n\n let inputRef!: HTMLInputElement;\n const { fileList, processFiles, removeFile, clearAll, getProgress } = useUpload(p);\n\n const triggerInput = () => inputRef.click();\n\n const handleInputChange = (e: Event) => {\n const input = e.currentTarget as HTMLInputElement;\n if (input.files?.length) processFiles(input.files);\n input.value = '';\n };\n\n const showAddButton = () => {\n if (!p.multiple && fileList().length >= 1) return false;\n if (p.maxCount && fileList().length >= p.maxCount) return false;\n return true;\n };\n\n const effectiveShowClearAll = () => p.showClearAll ?? p.multiple !== false;\n\n return (\n <div class={wrapperCls(p.class, 'up01')}>\n <input\n ref={inputRef}\n type=\"file\"\n class=\"hidden\"\n multiple={p.multiple}\n accept={p.accept}\n {...(p.directory ? { webkitdirectory: '' } : {})}\n onChange={handleInputChange}\n />\n\n <Switch>\n <Match when={p.listType === 'picture-card'}>\n <Show when={p.showUploadList}>\n <PictureCardFileList\n files={fileList()}\n onRemove={removeFile}\n onAdd={triggerInput}\n onClearAll={clearAll}\n showAddButton={showAddButton()}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Show>\n <Show when={!p.showUploadList}>\n <div onClick={triggerInput} class=\"w-fit cursor-pointer\">\n {p.children}\n </div>\n </Show>\n </Match>\n <Match when={p.listType !== 'picture-card'}>\n <div\n onClick={showAddButton() ? triggerInput : undefined}\n class={showAddButton() ? 'w-fit cursor-pointer' : ''}\n >\n {p.children}\n </div>\n <Show when={p.showUploadList && fileList().length > 0}>\n <Switch>\n <Match when={p.listType === 'picture'}>\n <PictureFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Match>\n <Match when={p.listType === 'text'}>\n <TextFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n classConfig={p.class}\n showTooltip={p.showTooltip}\n />\n </Match>\n </Switch>\n </Show>\n </Match>\n </Switch>\n\n <Show when={p.errorMessage}>\n <div class={cn('up76', cls(p.class, 'errorMessage'))}>{p.errorMessage}</div>\n </Show>\n </div>\n );\n}\n\nfunction UploadDragger(p: UploadDraggerProps) {\n p = mergeProps(\n {\n multiple: true,\n listType: 'text' as const,\n showUploadList: true,\n hint: 'Support for a single or bulk upload',\n showTooltip: false,\n },\n p,\n );\n\n let inputRef!: HTMLInputElement;\n const [isDragging, setIsDragging] = createSignal(false);\n const { fileList, processFiles, removeFile, clearAll, getProgress } = useUpload(p);\n const effectiveShowClearAll = () => p.showClearAll ?? p.multiple !== false;\n\n const triggerInput = () => inputRef.click();\n\n const handleInputChange = (e: Event) => {\n const input = e.currentTarget as HTMLInputElement;\n if (input.files?.length) processFiles(input.files);\n input.value = '';\n };\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n };\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n const files = e.dataTransfer?.files;\n if (files?.length) processFiles(files);\n };\n\n const showAddButton = () => {\n if (!p.multiple && fileList().length >= 1) return false;\n if (p.maxCount && fileList().length >= p.maxCount) return false;\n return true;\n };\n\n return (\n <div class={wrapperCls(p.class, 'up01')}>\n <input\n ref={inputRef}\n type=\"file\"\n class=\"hidden\"\n multiple={p.multiple}\n accept={p.accept}\n {...(p.directory ? { webkitdirectory: '' } : {})}\n onChange={handleInputChange}\n />\n\n <Show when={p.listType === 'picture-card'}>\n <Show when={p.showUploadList}>\n <PictureCardFileList\n files={fileList()}\n onRemove={removeFile}\n onAdd={triggerInput}\n onClearAll={clearAll}\n showAddButton={showAddButton()}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Show>\n </Show>\n\n <Show when={p.listType !== 'picture-card'}>\n <Show when={showAddButton()}>\n <div\n class={cn('up02', isDragging() && 'up02a', cls(p.class, 'dragger'))}\n onClick={triggerInput}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <div class={cn('up03', cls(p.class, 'draggerIcon'))}>\n <Show when={p.icon} fallback={<CloudUpload size={48} strokeWidth={1.5} />}>\n {p.icon}\n </Show>\n </div>\n <Show\n when={p.children}\n fallback={\n <>\n <p class={cn('up04', cls(p.class, 'draggerTitle'))}>\n Click or drag file to this area to upload\n </p>\n <p class={cn('up05', cls(p.class, 'draggerHint'))}>{p.hint}</p>\n </>\n }\n >\n {p.children}\n </Show>\n </div>\n </Show>\n\n <Show when={p.showUploadList && fileList().length > 0}>\n <Switch>\n <Match when={p.listType === 'picture'}>\n <PictureFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Match>\n <Match when={p.listType === 'text'}>\n <TextFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n classConfig={p.class}\n showTooltip={p.showTooltip}\n />\n </Match>\n </Switch>\n </Show>\n </Show>\n\n <Show when={p.errorMessage}>\n <div class={cn('up76', cls(p.class, 'errorMessage'))}>{p.errorMessage}</div>\n </Show>\n </div>\n );\n}\n\nexport const Upload = UploadBase as UploadComponent;\nUpload.Dragger = UploadDragger;"],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","names":["cn","ImagePreview","Spinner","CircleCheck","CircleX","CloudUpload","Eye","File","FileImage","FileText","Film","Music","Trash2","X","ZoomIn","Accessor","createSignal","createUniqueId","For","Match","mergeProps","Show","Switch","Tooltip","UploadBaseProps","UploadClassConfig","UploadComponent","UploadDraggerProps","UploadFile","UploadProps","UploadRequestOption","cls","config","key","extra","wrapperCls","base","wrapper","getFileIconColor","type","startsWith","includes","getFileIconBg","getFileIconNode","size","_$createComponent","getFileBadge","name","label","colorClass","ext","split","pop","toUpperCase","slice","formatFileSize","bytes","toFixed","isImageFile","defaultRequest","options","cancelled","current","tick","increment","Math","random","min","onProgress","round","setTimeout","onSuccess","ProgressEntry","v","useUpload","props","fileList","setFileList","progressMap","Map","cancelMap","imgMap","HTMLImageElement","getProgress","uid","get","cancelAndClean","thumbUrl","delete","img","onload","src","URL","revokeObjectURL","processFiles","rawFiles","FileList","files","Array","from","maxCount","maxFileSize","maxTotalSize","currentList","file","onError","message","newTotal","length","currentTotal","reduce","sum","f","batchTotal","forEach","createObjectURL","undefined","percent","setPercent","set","newFile","status","originFile","Image","list","map","dimensions","width","naturalWidth","height","naturalHeight","prev","nextList","multiple","onChange","requestFn","customRequest","cancel","next","const","done","find","error","Error","failed","value","snapshot","idx","findIndex","removeFile","removed","filter","clearAll","ProgressBar","trackClass","fillClass","_el$","_tmpl$","_el$2","firstChild","_$effect","_p$","_v$","_v$2","_v$3","e","_$className","t","a","_$setStyleProperty","CardProgressOverlay","_el$3","_tmpl$2","_el$4","_el$5","_el$6","nextSibling","_el$7","_$insert","PictureThumbLoading","_tmpl$3","TextFileList","onRemove","onClearAll","showClearAll","classConfig","showTooltip","listId","_el$9","_tmpl$5","_el$13","_$setAttribute","when","_$memo","children","_el$0","_tmpl$4","_el$1","_el$10","_el$11","_el$12","_$addEventListener","_v$4","_v$5","_v$6","each","badge","_el$14","_tmpl$6","FileUploadItem","isUploading","_el$15","_tmpl$8","_el$16","_el$17","_el$19","_el$20","content","hidden","root","_el$18","_tmpl$7","$$click","_v$7","_v$8","_v$9","_v$0","o","PictureFileList","preview","setPreview","_el$21","_tmpl$9","_el$27","_el$22","_el$23","_el$24","_el$25","_el$26","_v$1","_v$10","_v$11","_el$28","_tmpl$14","_el$29","_el$32","_el$33","_el$34","_el$39","_el$43","_el$45","fallback","_el$46","_tmpl$15","_el$47","_v$20","_v$21","_el$30","_tmpl$0","_v$12","_v$13","_el$31","_tmpl$1","_el$35","_tmpl$10","_el$36","_el$38","_el$37","_el$40","_tmpl$11","_el$41","_tmpl$12","_el$44","_tmpl$13","_v$14","_v$15","_v$16","_v$17","_v$18","_v$19","i","n","imageName","onClose","PictureCardFileList","onAdd","showAddButton","_el$48","_el$49","_el$50","_el$51","_el$52","_v$22","_v$23","_v$24","_el$53","_tmpl$17","_el$56","_el$61","_el$57","_v$25","_v$26","_v$27","_el$58","_tmpl$18","_el$60","_el$59","_el$54","_tmpl$16","_el$55","UploadBase","p","listType","showUploadList","inputRef","HTMLInputElement","triggerInput","click","handleInputChange","Event","input","currentTarget","effectiveShowClearAll","_el$62","_tmpl$20","_el$63","_ref$","_$use","_$spread","_$mergeProps","accept","directory","webkitdirectory","class","_el$64","_tmpl$19","_el$65","errorMessage","_el$66","UploadDragger","hint","isDragging","setIsDragging","handleDragOver","DragEvent","preventDefault","handleDragLeave","handleDrop","dataTransfer","_el$67","_el$68","_ref$2","_el$69","_el$70","addEventListener","icon","strokeWidth","_el$72","_tmpl$21","_el$73","_tmpl$22","_v$28","_v$29","_el$71","Upload","Dragger","_$delegateEvents"],"sources":["../../../src/components/upload/upload.tsx"],"sourcesContent":["import { cn } from '@/utils/cn';\nimport { ImagePreview } from '@components/image-preview';\nimport { Spinner } from '@components/loading/loading';\nimport CircleCheck from 'lucide-solid/icons/circle-check';\nimport CircleX from 'lucide-solid/icons/circle-x';\nimport CloudUpload from 'lucide-solid/icons/cloud-upload';\nimport Eye from 'lucide-solid/icons/eye';\nimport File from 'lucide-solid/icons/file';\nimport FileImage from 'lucide-solid/icons/file-image';\nimport FileText from 'lucide-solid/icons/file-text';\nimport Film from 'lucide-solid/icons/film';\nimport Music from 'lucide-solid/icons/music';\nimport Trash2 from 'lucide-solid/icons/trash-2';\nimport X from 'lucide-solid/icons/x';\nimport ZoomIn from 'lucide-solid/icons/zoom-in';\nimport {\n Accessor,\n createSignal,\n createUniqueId,\n For,\n Match,\n mergeProps,\n Show,\n Switch,\n} from 'solid-js';\nimport { Tooltip } from '../tooltip';\nimport {\n UploadBaseProps,\n UploadClassConfig,\n UploadComponent,\n UploadDraggerProps,\n UploadFile,\n UploadProps,\n UploadRequestOption,\n} from './upload.types';\n\nfunction cls(\n config: string | UploadClassConfig | undefined,\n key: keyof UploadClassConfig,\n extra?: string,\n): string {\n if (!config) return extra ?? '';\n if (typeof config === 'string') return extra ?? '';\n return cn(config[key], extra);\n}\n\nfunction wrapperCls(config: string | UploadClassConfig | undefined, base: string): string {\n if (!config) return base;\n if (typeof config === 'string') return cn(base, config);\n return cn(base, config.wrapper);\n}\n\nfunction getFileIconColor(type: string): string {\n if (type.startsWith('image/')) return 'text-violet-500';\n if (type.startsWith('video/')) return 'text-rose-500';\n if (type.startsWith('audio/')) return 'text-amber-500';\n if (type === 'application/pdf') return 'text-red-500';\n if (type.includes('text') || type.includes('document')) return 'text-blue-500';\n if (type.includes('spreadsheet') || type.includes('excel')) return 'text-emerald-500';\n return 'text-base-content/40';\n}\n\nfunction getFileIconBg(type: string): string {\n if (type.startsWith('image/')) return 'bg-violet-500/10';\n if (type.startsWith('video/')) return 'bg-rose-500/10';\n if (type.startsWith('audio/')) return 'bg-amber-500/10';\n if (type === 'application/pdf') return 'bg-red-500/10';\n if (type.includes('text') || type.includes('document')) return 'bg-blue-500/10';\n if (type.includes('spreadsheet') || type.includes('excel')) return 'bg-emerald-500/10';\n return 'bg-base-content/5';\n}\n\nfunction getFileIconNode(type: string, size = 16) {\n if (type.startsWith('image/')) return <FileImage size={size} />;\n if (type.startsWith('video/')) return <Film size={size} />;\n if (type.startsWith('audio/')) return <Music size={size} />;\n if (type === 'application/pdf' || type.includes('text')) return <FileText size={size} />;\n return <File size={size} />;\n}\n\nfunction getFileBadge(type: string, name: string): { label: string; colorClass: string } {\n if (type === 'application/pdf') return { label: 'PDF', colorClass: 'bg-red-500' };\n if (type.startsWith('image/')) {\n const ext = name.split('.').pop()?.toUpperCase().slice(0, 3) ?? 'IMG';\n return { label: ext, colorClass: 'bg-violet-500' };\n }\n if (type.startsWith('video/')) return { label: 'VID', colorClass: 'bg-rose-500' };\n if (type.startsWith('audio/')) return { label: 'AUD', colorClass: 'bg-amber-500' };\n if (type.includes('spreadsheet') || type.includes('excel'))\n return { label: 'XLS', colorClass: 'bg-emerald-500' };\n if (type.includes('document') || type.includes('word'))\n return { label: 'DOC', colorClass: 'bg-blue-500' };\n if (type.includes('text')) return { label: 'TXT', colorClass: 'bg-blue-500' };\n\n const ext = name.split('.').pop()?.toUpperCase().slice(0, 4) ?? 'FILE';\n return { label: ext, colorClass: 'bg-slate-400' };\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction isImageFile(type: string): boolean {\n return type.startsWith('image/');\n}\n\nfunction defaultRequest(options: UploadRequestOption): () => void {\n let cancelled = false;\n let current = 0;\n\n const tick = () => {\n if (cancelled) return;\n\n const increment = Math.random() * 10 + 8;\n current = Math.min(current + increment, 95);\n options.onProgress(Math.round(current));\n\n if (current < 95) {\n setTimeout(tick, 100 + Math.random() * 80);\n } else {\n setTimeout(\n () => {\n if (cancelled) return;\n options.onProgress(100);\n options.onSuccess();\n },\n 400 + Math.random() * 300,\n );\n }\n };\n\n setTimeout(tick, 50);\n\n return () => {\n cancelled = true;\n };\n}\n\ntype ProgressEntry = [Accessor<number>, (v: number) => void];\n\nfunction useUpload(props: UploadBaseProps) {\n const [fileList, setFileList] = createSignal<UploadFile[]>([]);\n const progressMap = new Map<string, ProgressEntry>();\n\n const cancelMap = new Map<string, () => void>();\n\n const imgMap = new Map<string, HTMLImageElement>();\n\n const getProgress = (uid: string): Accessor<number> => {\n return progressMap.get(uid)?.[0] ?? (() => 0);\n };\n\n const cancelAndClean = (uid: string, thumbUrl?: string) => {\n cancelMap.get(uid)?.();\n cancelMap.delete(uid);\n progressMap.delete(uid);\n\n const img = imgMap.get(uid);\n if (img) {\n img.onload = null;\n img.src = '';\n imgMap.delete(uid);\n }\n if (thumbUrl) URL.revokeObjectURL(thumbUrl);\n };\n\n const processFiles = (rawFiles: FileList | File[]) => {\n const files = Array.from(rawFiles);\n const maxCount = props.maxCount;\n const maxFileSize = props.maxFileSize;\n const maxTotalSize = props.maxTotalSize;\n\n const currentList = fileList();\n\n for (const file of files) {\n if (maxFileSize && file.size > maxFileSize) {\n props.onError?.({\n type: 'maxFileSize',\n file,\n message: `\"${file.name}\" vượt quá dung lượng cho phép (${formatFileSize(maxFileSize)})`,\n });\n return;\n }\n }\n\n if (maxCount) {\n const newTotal = currentList.length + files.length;\n if (newTotal > maxCount) {\n props.onError?.({\n type: 'maxCount',\n file: files[0],\n message: `Đã đạt số lượng file tối đa (${maxCount})`,\n });\n return;\n }\n }\n\n if (maxTotalSize) {\n const currentTotal = currentList.reduce((sum, f) => sum + f.size, 0);\n const batchTotal = files.reduce((sum, f) => sum + f.size, 0);\n if (currentTotal + batchTotal > maxTotalSize) {\n props.onError?.({\n type: 'maxTotalSize',\n file: files[0],\n message: `Tổng dung lượng vượt quá giới hạn (${formatFileSize(maxTotalSize)})`,\n });\n return;\n }\n }\n\n files.forEach(file => {\n const uid = createUniqueId();\n const thumbUrl = isImageFile(file.type) ? URL.createObjectURL(file) : undefined;\n\n const [percent, setPercent] = createSignal(0);\n progressMap.set(uid, [percent, setPercent]);\n\n const newFile: UploadFile = {\n uid,\n name: file.name,\n size: file.size,\n type: file.type,\n status: 'uploading',\n originFile: file,\n thumbUrl,\n };\n\n if (thumbUrl) {\n const img = new Image();\n imgMap.set(uid, img);\n img.onload = () => {\n imgMap.delete(uid);\n setFileList(list =>\n list.map(f =>\n f.uid === uid\n ? { ...f, dimensions: { width: img.naturalWidth, height: img.naturalHeight } }\n : f,\n ),\n );\n };\n img.src = thumbUrl;\n }\n\n setFileList(prev => {\n const nextList = props.multiple === false ? [newFile] : [...prev, newFile];\n props.onChange?.({ file: newFile, fileList: nextList });\n return nextList;\n });\n\n const requestFn = props.customRequest ?? defaultRequest;\n const cancel = requestFn({\n file,\n onSuccess: () => {\n setPercent(100);\n setFileList(list => {\n const next = list.map(f => (f.uid === uid ? { ...f, status: 'done' as const } : f));\n const done = next.find(f => f.uid === uid);\n if (done) props.onChange?.({ file: done, fileList: next });\n return next;\n });\n cancelMap.delete(uid);\n progressMap.delete(uid);\n },\n onError: (error: Error) => {\n setFileList(list => {\n const next = list.map(f => (f.uid === uid ? { ...f, status: 'error' as const } : f));\n const failed = next.find(f => f.uid === uid);\n if (failed) props.onChange?.({ file: { ...failed, error }, fileList: next });\n return next;\n });\n cancelMap.delete(uid);\n progressMap.delete(uid);\n },\n onProgress: value => {\n setPercent(value);\n\n const snapshot = fileList();\n const idx = snapshot.findIndex(f => f.uid === uid);\n if (idx !== -1)\n props.onChange?.({\n file: { ...snapshot[idx], percent: value },\n fileList: snapshot,\n });\n },\n });\n\n if (typeof cancel === 'function') cancelMap.set(uid, cancel);\n });\n };\n\n const removeFile = (uid: string) => {\n setFileList(prev => {\n const removed = prev.find(f => f.uid === uid);\n\n cancelAndClean(uid, removed?.thumbUrl);\n const next = prev.filter(f => f.uid !== uid);\n if (removed) props.onChange?.({ file: { ...removed, status: 'removed' }, fileList: next });\n return next;\n });\n };\n\n const clearAll = () => {\n setFileList(prev => {\n prev.forEach(f => cancelAndClean(f.uid, f.thumbUrl));\n return [];\n });\n };\n\n return { fileList, processFiles, removeFile, clearAll, getProgress };\n}\n\nfunction ProgressBar(props: {\n percent: Accessor<number>;\n trackClass?: string;\n fillClass?: string;\n}) {\n return (\n <div class={cn('up26', props.trackClass)}>\n <div class={cn('up27', props.fillClass)} style={{ width: `${props.percent()}%` }} />\n </div>\n );\n}\n\nfunction CardProgressOverlay(props: { percent: Accessor<number> }) {\n return (\n <div class=\"up62\">\n <div class=\"up63\">\n <span class=\"loading loading-spinner loading-sm text-white\" />\n <span class=\"up64\">{props.percent()}%</span>\n </div>\n </div>\n );\n}\n\nfunction PictureThumbLoading() {\n return (\n <div class=\"up51\">\n <span class=\"loading loading-spinner loading-xs text-white\" />\n </div>\n );\n}\n\nfunction TextFileList(props: {\n files: UploadFile[];\n onRemove: (uid: string) => void;\n onClearAll: () => void;\n showClearAll: boolean;\n classConfig?: string | UploadClassConfig;\n showTooltip?: boolean;\n}) {\n const listId = createUniqueId();\n return (\n <div id={listId} class={cn('up06', cls(props.classConfig, 'textList'))}>\n <Show when={props.showClearAll && props.files.length > 1}>\n <div class={cn('up44', cls(props.classConfig, 'listHeader'))}>\n <span class={cn('up45', cls(props.classConfig, 'listCount'))}>\n {props.files.length} files\n </span>\n <button\n class={cn('up46', cls(props.classConfig, 'clearBtn'))}\n onClick={props.onClearAll}\n title=\"Remove all\"\n >\n <Trash2 size={12} />\n Clear all\n </button>\n </div>\n </Show>\n <ul class=\"flex flex-col gap-2\">\n <For each={props.files}>\n {file => {\n const badge = getFileBadge(file.type, file.name);\n return (\n <li>\n <FileUploadItem\n file={file}\n badge={badge}\n onRemove={props.onRemove}\n classConfig={props.classConfig}\n showTooltip={props.showTooltip}\n />\n </li>\n );\n }}\n </For>\n </ul>\n </div>\n );\n}\n\nfunction FileUploadItem(props: {\n file: UploadFile;\n badge: { label: string; colorClass: string };\n onRemove: (uid: string) => void;\n classConfig?: string | UploadClassConfig;\n showTooltip?: boolean;\n}) {\n const isUploading = () => props.file.status === 'uploading';\n\n return (\n <div class={cn('up07', cls(props.classConfig, 'textItem'))}>\n <div class=\"flex min-w-0 flex-1 items-center gap-2\">\n <div class={cn('up08', props.badge.colorClass, cls(props.classConfig, 'textBadge'))}>\n {props.badge.label}\n </div>\n <Tooltip\n content={props.file.name}\n hidden={!props.showTooltip}\n class={{ root: 'up09' }}\n type=\"default\"\n >\n <span class={cn('up09', cls(props.classConfig, 'textName'))}>{props.file.name}</span>\n </Tooltip>\n <div class={cn('up10', cls(props.classConfig, 'textSize'))}>\n {formatFileSize(props.file.size)}\n </div>\n\n <Switch>\n <Match when={isUploading()}>\n <Spinner class=\"size-5\" />\n </Match>\n <Match when={props.file.status === 'done'}>\n <CircleCheck size={16} class=\"text-success\" />\n </Match>\n <Match when={props.file.status === 'error'}>\n <CircleX size={16} class=\"text-error\" />\n </Match>\n </Switch>\n\n <button\n class={cn('up57', cls(props.classConfig, 'removeBtn'))}\n onClick={() => props.onRemove(props.file.uid)}\n title=\"Remove\"\n >\n <X size={16} />\n </button>\n </div>\n </div>\n );\n}\n\nfunction PictureFileList(props: {\n files: UploadFile[];\n onRemove: (uid: string) => void;\n onClearAll: () => void;\n showClearAll: boolean;\n getProgress: (uid: string) => Accessor<number>;\n classConfig?: string | UploadClassConfig;\n}) {\n const [preview, setPreview] = createSignal<UploadFile | null>(null);\n\n return (\n <>\n <div class={cn('up47', cls(props.classConfig, 'pictureList'))}>\n <Show when={props.showClearAll && props.files.length > 1}>\n <div class={cn('up44', cls(props.classConfig, 'listHeader'))}>\n <span class={cn('up45', cls(props.classConfig, 'listCount'))}>\n {props.files.length} files\n </span>\n <button\n class={cn('up46', cls(props.classConfig, 'clearBtn'))}\n onClick={props.onClearAll}\n title=\"Remove all\"\n >\n <Trash2 size={12} />\n Clear all\n </button>\n </div>\n </Show>\n <ul class=\"up48\">\n <For each={props.files}>\n {file => (\n <li\n class={cn(\n 'up49',\n file.status === 'uploading' && 'up49a',\n file.status === 'error' && 'up49b',\n cls(props.classConfig, 'pictureItem'),\n )}\n >\n <div class={cn('up50', cls(props.classConfig, 'pictureThumb'))}>\n <Show\n when={file.thumbUrl}\n fallback={\n <div\n class={cn(\n 'up53',\n getFileIconBg(file.type),\n cls(props.classConfig, 'pictureIcon'),\n )}\n >\n <span class={getFileIconColor(file.type)}>\n {getFileIconNode(file.type, 20)}\n </span>\n </div>\n }\n >\n <img src={file.thumbUrl} alt={file.name} />\n\n <Show when={file.status === 'uploading'}>\n <PictureThumbLoading />\n </Show>\n\n <Show when={file.status === 'done'}>\n <button class=\"up52\" onClick={() => setPreview(file)} title=\"Preview\">\n <ZoomIn size={14} />\n </button>\n </Show>\n </Show>\n </div>\n\n <div class={cn('up54', cls(props.classConfig, 'pictureInfo'))}>\n <div class=\"up36\">\n <span class=\"up21\" title={file.name}>\n {file.name}\n </span>\n <Show when={file.dimensions}>\n <span class=\"up37\">\n {file.dimensions!.width} × {file.dimensions!.height} px\n </span>\n </Show>\n <span class=\"up39\">{formatFileSize(file.size)}</span>\n </div>\n\n <Show when={file.status === 'uploading'}>\n <ProgressBar\n percent={props.getProgress(file.uid)}\n trackClass={cls(props.classConfig, 'progressTrack')}\n fillClass={cls(props.classConfig, 'progressFill')}\n />\n </Show>\n\n <Show when={file.status === 'done'}>\n <span class=\"up24\">\n <CircleCheck size={11} />\n Uploaded\n </span>\n </Show>\n\n <Show when={file.status === 'error'}>\n <span class=\"up23\">Upload failed</span>\n </Show>\n </div>\n\n <div class={cn('up55', cls(props.classConfig, 'pictureActions'))}>\n <Show when={file.status === 'done' && file.thumbUrl}>\n <button\n class={cn('up56', cls(props.classConfig, 'actionBtn'))}\n onClick={() => setPreview(file)}\n title=\"Preview\"\n >\n <Eye size={14} />\n </button>\n </Show>\n <button\n class={cn('up57', cls(props.classConfig, 'removeBtn'))}\n onClick={() => props.onRemove(file.uid)}\n title=\"Remove\"\n >\n <X size={14} class=\"shrink-0\" />\n </button>\n </div>\n </li>\n )}\n </For>\n </ul>\n </div>\n\n <Show when={preview()}>\n <ImagePreview\n src={preview()!.thumbUrl!}\n imageName={preview()!.name}\n size={formatFileSize(preview()!.size)}\n onClose={() => setPreview(null)}\n />\n </Show>\n </>\n );\n}\n\nfunction PictureCardFileList(props: {\n files: UploadFile[];\n onRemove: (uid: string) => void;\n onAdd: () => void;\n onClearAll: () => void;\n showAddButton: boolean;\n showClearAll: boolean;\n getProgress: (uid: string) => Accessor<number>;\n classConfig?: string | UploadClassConfig;\n}) {\n const [preview, setPreview] = createSignal<UploadFile | null>(null);\n\n return (\n <>\n <Show when={props.showClearAll && props.files.length > 1}>\n <div class={cn('up44', cls(props.classConfig, 'listHeader'))}>\n <span class={cn('up45', cls(props.classConfig, 'listCount'))}>\n {props.files.length} files\n </span>\n <button\n class={cn('up46', cls(props.classConfig, 'clearBtn'))}\n onClick={props.onClearAll}\n title=\"Remove all\"\n >\n <Trash2 size={12} />\n Clear all\n </button>\n </div>\n </Show>\n <div class={cn('up58', cls(props.classConfig, 'cardGrid'))}>\n <For each={props.files}>\n {file => (\n <div\n class={cn('up59', file.status === 'error' && 'up59a', cls(props.classConfig, 'card'))}\n >\n <Show\n when={file.thumbUrl}\n fallback={\n <div class={cn('up61', cls(props.classConfig, 'cardIcon'))}>\n {getFileIconNode(file.type, 24)}\n </div>\n }\n >\n <img\n src={file.thumbUrl}\n alt={file.name}\n class={cn('up60', cls(props.classConfig, 'cardImg'))}\n />\n </Show>\n\n <Show when={file.status === 'uploading'}>\n <CardProgressOverlay percent={props.getProgress(file.uid)} />\n </Show>\n\n <Show when={file.status !== 'uploading'}>\n <div class=\"up65\">\n <Show when={file.thumbUrl}>\n <button\n class={cn('up66', cls(props.classConfig, 'actionBtn'))}\n onClick={() => setPreview(file)}\n title=\"Preview\"\n >\n <Eye size={13} />\n </button>\n </Show>\n <button\n class={cn('up67', cls(props.classConfig, 'removeBtn'))}\n onClick={() => props.onRemove(file.uid)}\n title=\"Remove\"\n >\n <Trash2 size={13} />\n </button>\n </div>\n </Show>\n </div>\n )}\n </For>\n <Show when={props.showAddButton}>\n <button\n class={cn('up68', cls(props.classConfig, 'cardAdd'))}\n onClick={props.onAdd}\n title=\"Upload file\"\n >\n <CloudUpload size={20} class=\"opacity-40\" />\n <span class=\"up69\">Upload</span>\n </button>\n </Show>\n </div>\n\n <Show when={preview()}>\n <ImagePreview\n src={preview()!.thumbUrl!}\n imageName={preview()!.name}\n size={formatFileSize(preview()!.size)}\n onClose={() => setPreview(null)}\n />\n </Show>\n </>\n );\n}\n\nfunction UploadBase(p: UploadProps) {\n p = mergeProps(\n {\n multiple: true,\n listType: 'text' as const,\n showUploadList: true,\n showTooltip: false,\n },\n p,\n );\n\n let inputRef!: HTMLInputElement;\n const { fileList, processFiles, removeFile, clearAll, getProgress } = useUpload(p);\n\n const triggerInput = () => inputRef.click();\n\n const handleInputChange = (e: Event) => {\n const input = e.currentTarget as HTMLInputElement;\n if (input.files?.length) processFiles(input.files);\n input.value = '';\n };\n\n const showAddButton = () => {\n if (!p.multiple && fileList().length >= 1) return false;\n if (p.maxCount && fileList().length >= p.maxCount) return false;\n return true;\n };\n\n const effectiveShowClearAll = () => p.showClearAll ?? p.multiple !== false;\n\n return (\n <div class={wrapperCls(p.class, 'up01')}>\n <input\n ref={inputRef}\n type=\"file\"\n class=\"hidden\"\n multiple={p.multiple}\n accept={p.accept}\n {...(p.directory ? { webkitdirectory: '' } : {})}\n onChange={handleInputChange}\n />\n\n <Switch>\n <Match when={p.listType === 'picture-card'}>\n <Show when={p.showUploadList}>\n <PictureCardFileList\n files={fileList()}\n onRemove={removeFile}\n onAdd={triggerInput}\n onClearAll={clearAll}\n showAddButton={showAddButton()}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Show>\n <Show when={!p.showUploadList}>\n <div onClick={triggerInput} class=\"w-fit cursor-pointer\">\n {p.children}\n </div>\n </Show>\n </Match>\n <Match when={p.listType !== 'picture-card'}>\n <div\n onClick={showAddButton() ? triggerInput : undefined}\n class={showAddButton() ? 'w-fit cursor-pointer' : ''}\n >\n {p.children}\n </div>\n <Show when={p.showUploadList && fileList().length > 0}>\n <Switch>\n <Match when={p.listType === 'picture'}>\n <PictureFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Match>\n <Match when={p.listType === 'text'}>\n <TextFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n classConfig={p.class}\n showTooltip={p.showTooltip}\n />\n </Match>\n </Switch>\n </Show>\n </Match>\n </Switch>\n\n <Show when={p.errorMessage}>\n <div class={cn('up76', cls(p.class, 'errorMessage'))}>{p.errorMessage}</div>\n </Show>\n </div>\n );\n}\n\nfunction UploadDragger(p: UploadDraggerProps) {\n p = mergeProps(\n {\n multiple: true,\n listType: 'text' as const,\n showUploadList: true,\n hint: 'Support for a single or bulk upload',\n showTooltip: false,\n },\n p,\n );\n\n let inputRef!: HTMLInputElement;\n const [isDragging, setIsDragging] = createSignal(false);\n const { fileList, processFiles, removeFile, clearAll, getProgress } = useUpload(p);\n const effectiveShowClearAll = () => p.showClearAll ?? p.multiple !== false;\n\n const triggerInput = () => inputRef.click();\n\n const handleInputChange = (e: Event) => {\n const input = e.currentTarget as HTMLInputElement;\n if (input.files?.length) processFiles(input.files);\n input.value = '';\n };\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault();\n setIsDragging(true);\n };\n\n const handleDragLeave = (e: DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n };\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault();\n setIsDragging(false);\n const files = e.dataTransfer?.files;\n if (files?.length) processFiles(files);\n };\n\n const showAddButton = () => {\n if (!p.multiple && fileList().length >= 1) return false;\n if (p.maxCount && fileList().length >= p.maxCount) return false;\n return true;\n };\n\n return (\n <div class={wrapperCls(p.class, 'up01')}>\n <input\n ref={inputRef}\n type=\"file\"\n class=\"hidden\"\n multiple={p.multiple}\n accept={p.accept}\n {...(p.directory ? { webkitdirectory: '' } : {})}\n onChange={handleInputChange}\n />\n\n <Show when={p.listType === 'picture-card'}>\n <Show when={p.showUploadList}>\n <PictureCardFileList\n files={fileList()}\n onRemove={removeFile}\n onAdd={triggerInput}\n onClearAll={clearAll}\n showAddButton={showAddButton()}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Show>\n </Show>\n\n <Show when={p.listType !== 'picture-card'}>\n <Show when={showAddButton()}>\n <div\n class={cn('up02', isDragging() && 'up02a', cls(p.class, 'dragger'))}\n onClick={triggerInput}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n >\n <div class={cn('up03', cls(p.class, 'draggerIcon'))}>\n <Show when={p.icon} fallback={<CloudUpload size={48} strokeWidth={1.5} />}>\n {p.icon}\n </Show>\n </div>\n <Show\n when={p.children}\n fallback={\n <>\n <p class={cn('up04', cls(p.class, 'draggerTitle'))}>\n Click or drag file to this area to upload\n </p>\n <p class={cn('up05', cls(p.class, 'draggerHint'))}>{p.hint}</p>\n </>\n }\n >\n {p.children}\n </Show>\n </div>\n </Show>\n\n <Show when={p.showUploadList && fileList().length > 0}>\n <Switch>\n <Match when={p.listType === 'picture'}>\n <PictureFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n getProgress={getProgress}\n classConfig={p.class}\n />\n </Match>\n <Match when={p.listType === 'text'}>\n <TextFileList\n files={fileList()}\n onRemove={removeFile}\n onClearAll={clearAll}\n showClearAll={effectiveShowClearAll()}\n classConfig={p.class}\n showTooltip={p.showTooltip}\n />\n </Match>\n </Switch>\n </Show>\n </Show>\n\n <Show when={p.errorMessage}>\n <div class={cn('up76', cls(p.class, 'errorMessage'))}>{p.errorMessage}</div>\n </Show>\n </div>\n );\n}\n\nexport const Upload = UploadBase as UploadComponent;\nUpload.Dragger = UploadDragger;\n"],"mappings":"g4GAoCA,SAAS+B,EACPC,EACAC,EACAC,EACQ,CAGR,MAFI,CAACF,GACD,OAAOA,GAAW,SAAiBE,GAAS,GACzClC,EAAGgC,EAAOC,GAAMC,EAAM,CAG/B,SAASC,EAAWH,EAAgDI,EAAsB,CAGxF,OAFKJ,EACD,OAAOA,GAAW,SAAiBhC,EAAGoC,EAAMJ,EAAO,CAChDhC,EAAGoC,EAAMJ,EAAOK,QAAQ,CAFXD,EAKtB,SAASE,GAAiBC,EAAsB,CAO9C,OANIA,EAAKC,WAAW,SAAS,CAAS,kBAClCD,EAAKC,WAAW,SAAS,CAAS,gBAClCD,EAAKC,WAAW,SAAS,CAAS,iBAClCD,IAAS,kBAA0B,eACnCA,EAAKE,SAAS,OAAO,EAAIF,EAAKE,SAAS,WAAW,CAAS,gBAC3DF,EAAKE,SAAS,cAAc,EAAIF,EAAKE,SAAS,QAAQ,CAAS,mBAC5D,uBAGT,SAASC,GAAcH,EAAsB,CAO3C,OANIA,EAAKC,WAAW,SAAS,CAAS,mBAClCD,EAAKC,WAAW,SAAS,CAAS,iBAClCD,EAAKC,WAAW,SAAS,CAAS,kBAClCD,IAAS,kBAA0B,gBACnCA,EAAKE,SAAS,OAAO,EAAIF,EAAKE,SAAS,WAAW,CAAS,iBAC3DF,EAAKE,SAAS,cAAc,EAAIF,EAAKE,SAAS,QAAQ,CAAS,oBAC5D,oBAGT,SAASE,EAAgBJ,EAAcK,EAAO,GAAI,CAKhD,OAJIL,EAAKC,WAAW,SAAS,CAAEK,EAAQrC,EAAS,CAAOoC,OAAI,CAAA,CACvDL,EAAKC,WAAW,SAAS,CAAEK,EAAQnC,EAAI,CAAOkC,OAAI,CAAA,CAClDL,EAAKC,WAAW,SAAS,CAAEK,EAAQlC,EAAK,CAAOiC,OAAI,CAAA,CACnDL,IAAS,mBAAqBA,EAAKE,SAAS,OAAO,CAAEI,EAAQpC,EAAQ,CAAOmC,OAAI,CAAA,CACpFC,EAAQtC,EAAI,CAAOqC,OAAI,CAAA,CAGzB,SAASE,GAAaP,EAAcQ,EAAqD,CAevF,OAdIR,IAAS,kBAA0B,CAAES,MAAO,MAAOC,WAAY,aAAc,CAC7EV,EAAKC,WAAW,SAAS,CAEpB,CAAEQ,MADGD,EAAKI,MAAM,IAAI,CAACC,KAAK,EAAEC,aAAa,CAACC,MAAM,EAAG,EAAE,EAAI,MAC3CL,WAAY,gBAAiB,CAEhDV,EAAKC,WAAW,SAAS,CAAS,CAAEQ,MAAO,MAAOC,WAAY,cAAe,CAC7EV,EAAKC,WAAW,SAAS,CAAS,CAAEQ,MAAO,MAAOC,WAAY,eAAgB,CAC9EV,EAAKE,SAAS,cAAc,EAAIF,EAAKE,SAAS,QAAQ,CACjD,CAAEO,MAAO,MAAOC,WAAY,iBAAkB,CACnDV,EAAKE,SAAS,WAAW,EAAIF,EAAKE,SAAS,OAAO,CAC7C,CAAEO,MAAO,MAAOC,WAAY,cAAe,CAChDV,EAAKE,SAAS,OAAO,CAAS,CAAEO,MAAO,MAAOC,WAAY,cAAe,CAGtE,CAAED,MADGD,EAAKI,MAAM,IAAI,CAACC,KAAK,EAAEC,aAAa,CAACC,MAAM,EAAG,EAAE,EAAI,OAC3CL,WAAY,eAAgB,CAGnD,SAASM,EAAeC,EAAuB,CAI7C,OAHIA,IAAU,EAAU,MACpBA,EAAQ,KAAa,GAAGA,EAAK,IAC7BA,EAAQ,KAAO,KAAa,IAAIA,EAAQ,MAAMC,QAAQ,EAAE,CAAA,KACrD,IAAID,GAAS,KAAO,OAAOC,QAAQ,EAAE,CAAA,KAG9C,SAASC,GAAYnB,EAAuB,CAC1C,OAAOA,EAAKC,WAAW,SAAS,CAGlC,SAASmB,GAAeC,EAA0C,CAChE,IAAIC,EAAY,GACZC,EAAU,EAERC,MAAa,CACjB,GAAIF,EAAW,OAEf,IAAMG,EAAYC,KAAKC,QAAQ,CAAG,GAAK,EACvCJ,EAAUG,KAAKE,IAAIL,EAAUE,EAAW,GAAG,CAC3CJ,EAAQQ,WAAWH,KAAKI,MAAMP,EAAQ,CAAC,CAEnCA,EAAU,GACZQ,WAAWP,EAAM,IAAME,KAAKC,QAAQ,CAAG,GAAG,CAE1CI,eACQ,CACAT,IACJD,EAAQQ,WAAW,IAAI,CACvBR,EAAQW,WAAW,GAErB,IAAMN,KAAKC,QAAQ,CAAG,IACvB,EAML,OAFAI,WAAWP,EAAM,GAAG,KAEP,CACXF,EAAY,IAMhB,SAASa,EAAUC,EAAwB,CACzC,GAAM,CAACC,EAAUC,GAAe7D,EAA2B,EAAE,CAAC,CACxD8D,EAAc,IAAIC,IAElBC,EAAY,IAAID,IAEhBE,EAAS,IAAIF,IAEbI,EAAeC,GACZN,EAAYO,IAAID,EAAI,GAAG,SAAa,GAGvCE,GAAkBF,EAAaG,IAAsB,CACzDP,EAAUK,IAAID,EAAI,IAAI,CACtBJ,EAAUQ,OAAOJ,EAAI,CACrBN,EAAYU,OAAOJ,EAAI,CAEvB,IAAMK,EAAMR,EAAOI,IAAID,EAAI,CACvBK,IACFA,EAAIC,OAAS,KACbD,EAAIE,IAAM,GACVV,EAAOO,OAAOJ,EAAI,EAEhBG,GAAUK,IAAIC,gBAAgBN,EAAS,EAiJ7C,MAAO,CAAEX,WAAUkB,aA9IGC,GAAgC,CACpD,IAAME,EAAQC,MAAMC,KAAKJ,EAAS,CAC5BK,EAAWzB,EAAMyB,SACjBC,EAAc1B,EAAM0B,YACpBC,EAAe3B,EAAM2B,aAErBC,EAAc3B,GAAU,CAE9B,IAAK,IAAM4B,KAAQP,EACjB,GAAII,GAAeG,EAAK5D,KAAOyD,EAAa,CAC1C1B,EAAM8B,UAAU,CACdlE,KAAM,cACNiE,OACAE,QAAS,IAAIF,EAAKzD,KAAI,kCAAmCQ,EAAe8C,EAAY,CAAA,GACrF,CAAC,CACF,OAIJ,GAAID,GACeG,EAAYK,OAASX,EAAMW,OAC7BR,EAAU,CACvBzB,EAAM8B,UAAU,CACdlE,KAAM,WACNiE,KAAMP,EAAM,GACZS,QAAS,gCAAgCN,EAAQ,GAClD,CAAC,CACF,OAIJ,GAAIE,GACmBC,EAAYO,QAAQC,EAAKC,IAAMD,EAAMC,EAAEpE,KAAM,EAAE,CACjDqD,EAAMa,QAAQC,EAAKC,IAAMD,EAAMC,EAAEpE,KAAM,EAAE,CAC5B0D,EAAc,CAC5C3B,EAAM8B,UAAU,CACdlE,KAAM,eACNiE,KAAMP,EAAM,GACZS,QAAS,sCAAsCnD,EAAe+C,EAAa,CAAA,GAC5E,CAAC,CACF,OAIJL,EAAMiB,QAAQV,GAAQ,CACpB,IAAMpB,EAAMnE,GAAgB,CACtBsE,EAAW7B,GAAY8C,EAAKjE,KAAK,CAAGqD,IAAIuB,gBAAgBX,EAAK,CAAGY,IAAAA,GAEhE,CAACC,EAASC,GAActG,EAAa,EAAE,CAC7C8D,EAAYyC,IAAInC,EAAK,CAACiC,EAASC,EAAW,CAAC,CAE3C,IAAME,EAAsB,CAC1BpC,MACArC,KAAMyD,EAAKzD,KACXH,KAAM4D,EAAK5D,KACXL,KAAMiE,EAAKjE,KACXkF,OAAQ,YACRC,WAAYlB,EACZjB,WACD,CAED,GAAIA,EAAU,CACZ,IAAME,EAAM,IAAIkC,MAChB1C,EAAOsC,IAAInC,EAAKK,EAAI,CACpBA,EAAIC,WAAe,CACjBT,EAAOO,OAAOJ,EAAI,CAClBP,EAAY+C,GACVA,EAAKC,IAAIb,GACPA,EAAE5B,MAAQA,EACN,CAAE,GAAG4B,EAAGc,WAAY,CAAEC,MAAOtC,EAAIuC,aAAcC,OAAQxC,EAAIyC,cAAc,CAAG,CAC5ElB,EAER,CAAC,EAEHvB,EAAIE,IAAMJ,EAGZV,EAAYsD,GAAQ,CAClB,IAAMC,EAAWzD,EAAM0D,WAAa,GAAQ,CAACb,EAAQ,CAAG,CAAC,GAAGW,EAAMX,EAAQ,CAE1E,OADA7C,EAAM2D,WAAW,CAAE9B,KAAMgB,EAAS5C,SAAUwD,EAAU,CAAC,CAChDA,GACP,CAGF,IAAMK,GADY9D,EAAM6D,eAAiB7E,IAChB,CACvB6C,OACAjC,cAAiB,CACf+C,EAAW,IAAI,CACfzC,EAAY+C,GAAQ,CAClB,IAAMc,EAAOd,EAAKC,IAAIb,GAAMA,EAAE5B,MAAQA,EAAM,CAAE,GAAG4B,EAAGS,OAAQ,OAAiB,CAAGT,EAAG,CAC7E4B,EAAOF,EAAKG,KAAK7B,GAAKA,EAAE5B,MAAQA,EAAI,CAE1C,OADIwD,GAAMjE,EAAM2D,WAAW,CAAE9B,KAAMoC,EAAMhE,SAAU8D,EAAM,CAAC,CACnDA,GACP,CACF1D,EAAUQ,OAAOJ,EAAI,CACrBN,EAAYU,OAAOJ,EAAI,EAEzBqB,QAAUqC,GAAiB,CACzBjE,EAAY+C,GAAQ,CAClB,IAAMc,EAAOd,EAAKC,IAAIb,GAAMA,EAAE5B,MAAQA,EAAM,CAAE,GAAG4B,EAAGS,OAAQ,QAAkB,CAAGT,EAAG,CAC9EgC,EAASN,EAAKG,KAAK7B,GAAKA,EAAE5B,MAAQA,EAAI,CAE5C,OADI4D,GAAQrE,EAAM2D,WAAW,CAAE9B,KAAM,CAAE,GAAGwC,EAAQF,QAAO,CAAElE,SAAU8D,EAAM,CAAC,CACrEA,GACP,CACF1D,EAAUQ,OAAOJ,EAAI,CACrBN,EAAYU,OAAOJ,EAAI,EAEzBhB,WAAY6E,GAAS,CACnB3B,EAAW2B,EAAM,CAEjB,IAAMC,EAAWtE,GAAU,CACrBuE,EAAMD,EAASE,UAAUpC,GAAKA,EAAE5B,MAAQA,EAAI,CAC9C+D,IAAQ,IACVxE,EAAM2D,WAAW,CACf9B,KAAM,CAAE,GAAG0C,EAASC,GAAM9B,QAAS4B,EAAO,CAC1CrE,SAAUsE,EACX,CAAC,EAEP,CAAC,CAEE,OAAOT,GAAW,YAAYzD,EAAUuC,IAAInC,EAAKqD,EAAO,EAC5D,EAqB6BY,WAlBbjE,GAAgB,CAClCP,EAAYsD,GAAQ,CAClB,IAAMmB,EAAUnB,EAAKU,KAAK7B,GAAKA,EAAE5B,MAAQA,EAAI,CAE7CE,EAAeF,EAAKkE,GAAS/D,SAAS,CACtC,IAAMmD,EAAOP,EAAKoB,OAAOvC,GAAKA,EAAE5B,MAAQA,EAAI,CAE5C,OADIkE,GAAS3E,EAAM2D,WAAW,CAAE9B,KAAM,CAAE,GAAG8C,EAAS7B,OAAQ,UAAW,CAAE7C,SAAU8D,EAAM,CAAC,CACnFA,GACP,EAUyCc,aAPtB,CACrB3E,EAAYsD,IACVA,EAAKjB,QAAQF,GAAK1B,EAAe0B,EAAE5B,IAAK4B,EAAEzB,SAAS,CAAC,CAC7C,EAAE,EACT,EAGmDJ,cAAa,CAGtE,SAASsE,GAAY9E,EAIlB,CACD,WAAA,CAAA,IAAAiF,EAAAC,GAAA,CAAAC,EAAAF,EAAAG,WAEkF,OAFlFC,EAAAC,GAAA,CAAA,IAAAC,EACclK,EAAG,OAAQ2E,EAAM+E,WAAW,CAAAS,EAC1BnK,EAAG,OAAQ2E,EAAMgF,UAAU,CAAAS,EAAkB,GAAGzF,EAAM0C,SAAS,CAAA,GAAG,OAAA6C,IAAAD,EAAAI,GAAAC,EAAAV,EAAAK,EAAAI,EAAAH,EAAA,CAAAC,IAAAF,EAAAM,GAAAD,EAAAR,EAAAG,EAAAM,EAAAJ,EAAA,CAAAC,IAAAH,EAAAO,GAAAC,GAAAX,EAAA,QAAAG,EAAAO,EAAAJ,EAAA,CAAAH,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAAoD,EAAApD,IAAAA,GAAA,CAAA,CAAAwC,KAAA,CAKpF,SAASc,GAAoB/F,EAAsC,CACjE,WAAA,CAAA,IAAAgG,EAAAC,IAAA,CAAAG,EAAAJ,EAAAZ,WAAAA,WAAAiB,YAAAC,EAAAF,EAAAhB,WAIyC,OAJzCmB,EAAAH,MAI0BpG,EAAM0C,SAAS,CAAA4D,EAAA,CAAAN,KAAA,CAM3C,SAASQ,IAAsB,CAC7B,OAAAC,IAAA,CAOF,SAASC,EAAa1G,EAOnB,CACD,IAAMgH,EAAS1K,GAAgB,CAC/B,WAAA,CAAA,IAAA2K,EAAAC,IAAA,CAAAC,EAAAF,EAAA7B,WACwE,OADxEgC,EAAAH,EAAA,KACWD,EAAM,CAAAT,EAAAU,EAAA/I,EACZxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEC,MAAA,CAAA,CAAAtH,EAAM6G,aAAY,EAAA,EAAI7G,EAAMsB,MAAMW,OAAS,GAAC,IAAAsF,UAAA,CAAA,IAAAC,EAAAC,GAAA,CAAAC,EAAAF,EAAApC,WAAAuC,EAAAD,EAAAtC,WAAAwC,EAAAF,EAAArB,YAAAwB,EAAAD,EAAAxC,WAMG,OANHmB,EAAAmB,MAGjD1H,EAAMsB,MAAMW,OAAM0F,EAAA,CAAAG,EAAAF,EAAA,QAIV5H,EAAM4G,WAAU,GAAA,CAAAL,EAAAqB,EAAA1J,EAGxBjC,EAAM,CAACgC,KAAM,GAAE,CAAA,CAAA4J,EAAA,CAAAxC,EAAAC,GAAA,CAAA,IAAAyC,EATR1M,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,aAAa,CAAC,CAAAkB,EAC7C3M,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,YAAY,CAAC,CAAAmB,EAInD5M,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,WAAW,CAAC,CAAA,OAAAiB,IAAAzC,EAAAI,GAAAC,EAAA6B,EAAAlC,EAAAI,EAAAqC,EAAA,CAAAC,IAAA1C,EAAAM,GAAAD,EAAA+B,EAAApC,EAAAM,EAAAoC,EAAA,CAAAC,IAAA3C,EAAAO,GAAAF,EAAAiC,EAAAtC,EAAAO,EAAAoC,EAAA,CAAA3C,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAAoD,EAAApD,IAAAA,GAAA,CAAA,CAAA+E,GAAA,CAAA,CAAAL,EAAA,CAAAZ,EAAAY,EAAAjJ,EAUxD3B,EAAG,CAAA,IAAC2L,MAAI,CAAA,OAAElI,EAAMsB,OAAKiG,SACnB1F,GAAQ,CACP,IAAMsG,EAAQhK,GAAa0D,EAAKjE,KAAMiE,EAAKzD,KAAK,CAChD,WAAA,CAAA,IAAAgK,EAAAC,IAAA,CAOoC,OAPpC9B,EAAA6B,EAAAlK,EAEKoK,EAAc,CACPzG,OACCsG,QAAK,IACZxB,UAAQ,CAAA,OAAE3G,EAAM2G,UAAQ,IACxBG,aAAW,CAAA,OAAE9G,EAAM8G,aAAW,IAC9BC,aAAW,CAAA,OAAE/G,EAAM+G,aAAW,CAAA,CAAA,CAAAqB,KAAA,EAIrC,CAAA,CAAA,CAAA/C,MAAAM,EAAAsB,EA/BiB5L,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,WAAW,CAAC,CAAA,CAAA,CAAAG,KAAA,CAsC1E,SAASqB,EAAetI,EAMrB,CACD,IAAMuI,MAAoBvI,EAAM6B,KAAKiB,SAAW,YAEhD,WAAA,CAAA,IAAA0F,EAAAC,IAAA,CAAAC,EAAAF,EAAApD,WAAAuD,EAAAD,EAAAtD,WAAAwD,EAAAD,EAAAtC,YAAAwC,EAAAD,EAAAvC,YA+B8D,OA/B9DE,EAAAoC,MAIS3I,EAAMmI,MAAM9J,MAAK,CAAAkI,EAAAmC,EAAAxK,EAEnBtB,EAAO,CAAA,IACNkM,SAAO,CAAA,OAAE9I,EAAM6B,KAAKzD,MAAI,IACxB2K,QAAM,CAAA,MAAE,CAAC/I,EAAM+G,aAAW,MACnB,CAAEiC,KAAM,OAAQ,CACvBpL,KAAI,UAAA,IAAA2J,UAAA,CAAA,IAAA0B,EAAAC,IAAA,CAEuD,OAFvD3C,EAAA0C,MAE0DjJ,EAAM6B,KAAKzD,KAAI,CAAAiH,MAAAM,EAAAsD,EAAhE5N,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,WAAW,CAAC,CAAA,CAAA,CAAAmC,GAAA,CAAA,CAAAL,EAAA,CAAArC,EAAAqC,MAG1DhK,EAAeoB,EAAM6B,KAAK5D,KAAK,CAAA,CAAAsI,EAAAmC,EAAAxK,EAGjCvB,EAAM,CAAA,IAAA4K,UAAA,CAAA,MAAA,CAAArJ,EACJ1B,EAAK,CAAA,IAAC6K,MAAI,CAAA,OAAEkB,GAAa,EAAA,IAAAhB,UAAA,CAAA,OAAArJ,EACvB3C,EAAO,CAAA,MAAA,SAAA,CAAA,EAAA,CAAA,CAAA2C,EAET1B,EAAK,CAAA,IAAC6K,MAAI,CAAA,OAAErH,EAAM6B,KAAKiB,SAAW,QAAM,IAAAyE,UAAA,CAAA,OAAArJ,EACtC1C,EAAW,CAACyC,KAAM,GAAE,MAAA,eAAA,CAAA,EAAA,CAAA,CAAAC,EAEtB1B,EAAK,CAAA,IAAC6K,MAAI,CAAA,OAAErH,EAAM6B,KAAKiB,SAAW,SAAO,IAAAyE,UAAA,CAAA,OAAArJ,EACvCzC,EAAO,CAACwC,KAAM,GAAE,MAAA,aAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA4K,EAAA,CAAAA,EAAAM,YAMJnJ,EAAM2G,SAAS3G,EAAM6B,KAAKpB,IAAI,CAAA8F,EAAAsC,EAAA3K,EAG5ChC,EAAC,CAAC+B,KAAM,GAAE,CAAA,CAAA,CAAAoH,EAAAC,GAAA,CAAA,IAAA8D,EAlCL/N,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,WAAW,CAAC,CAAAuC,EAE1ChO,EAAG,OAAQ2E,EAAMmI,MAAM7J,WAAYlB,EAAI4C,EAAM8G,YAAa,YAAY,CAAC,CAAAwC,EAWvEjO,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,WAAW,CAAC,CAAAyC,EAiBjDlO,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,YAAY,CAAC,CAAA,OAAAsC,IAAA9D,EAAAI,GAAAC,EAAA6C,EAAAlD,EAAAI,EAAA0D,EAAA,CAAAC,IAAA/D,EAAAM,GAAAD,EAAAgD,EAAArD,EAAAM,EAAAyD,EAAA,CAAAC,IAAAhE,EAAAO,GAAAF,EAAAiD,EAAAtD,EAAAO,EAAAyD,EAAA,CAAAC,IAAAjE,EAAAkE,GAAA7D,EAAAkD,EAAAvD,EAAAkE,EAAAD,EAAA,CAAAjE,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAAoD,EAAApD,IAAAA,GAAA+G,EAAA/G,IAAAA,GAAA,CAAA,CAAA+F,KAAA,CAWhE,SAASiB,EAAgBzJ,EAOtB,CACD,GAAM,CAAC0J,EAASC,GAActN,EAAgC,KAAK,CAEnE,MAAA,MAAA,CAAA,IAAAuN,EAAAC,IAAA,CAAAC,EAAAF,EAAAxE,WAEiE,OAFjEmB,EAAAqD,EAAA1L,EAGOxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEC,MAAA,CAAA,CAAAtH,EAAM6G,aAAY,EAAA,EAAI7G,EAAMsB,MAAMW,OAAS,GAAC,IAAAsF,UAAA,CAAA,IAAAwC,EAAAtC,GAAA,CAAAuC,EAAAD,EAAA3E,WAAA6E,EAAAD,EAAA5E,WAAA8E,EAAAF,EAAA3D,YAAA8D,EAAAD,EAAA9E,WAMG,OANHmB,EAAAyD,MAGjDhK,EAAMsB,MAAMW,OAAMgI,EAAA,CAAAnC,EAAAoC,EAAA,QAIVlK,EAAM4G,WAAU,GAAA,CAAAL,EAAA2D,EAAAhM,EAGxBjC,EAAM,CAACgC,KAAM,GAAE,CAAA,CAAAkM,EAAA,CAAA9E,EAAAC,GAAA,CAAA,IAAA8E,EATR/O,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,aAAa,CAAC,CAAAuD,EAC7ChP,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,YAAY,CAAC,CAAAwD,EAInDjP,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,WAAW,CAAC,CAAA,OAAAsD,IAAA9E,EAAAI,GAAAC,EAAAoE,EAAAzE,EAAAI,EAAA0E,EAAA,CAAAC,IAAA/E,EAAAM,GAAAD,EAAAqE,EAAA1E,EAAAM,EAAAyE,EAAA,CAAAC,IAAAhF,EAAAO,GAAAF,EAAAuE,EAAA5E,EAAAO,EAAAyE,EAAA,CAAAhF,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAAoD,EAAApD,IAAAA,GAAA,CAAA,CAAAsH,GAAA,CAAA,CAAAD,EAAA,CAAAvD,EAAAuD,EAAA5L,EAUxD3B,EAAG,CAAA,IAAC2L,MAAI,CAAA,OAAElI,EAAMsB,OAAKiG,SACnB1F,QAAI,CAAA,IAAA0I,EAAAC,GAAA,CAAAC,EAAAF,EAAAnF,WAAAsF,EAAAD,EAAApE,YAAAsE,EAAAD,EAAAtF,WAAAwF,EAAAD,EAAAvF,WAAAyF,EAAAD,EAAAvE,YAAAyE,EAAAJ,EAAArE,YAAA0E,EAAAD,EAAA1F,WAoFyD,OApFzDmB,EAAAkE,EAAAvM,EAUExB,EAAI,CAAA,IACH2K,MAAI,CAAA,OAAExF,EAAKjB,UAAQ,IACnBoK,UAAQ,CAAA,WAAA,CAAA,IAAAC,EAAAC,GAAA,CAAAC,EAAAF,EAAA7F,WAQoC,OARpCmB,EAAA4E,MASDnN,EAAgB6D,EAAKjE,KAAM,GAAG,CAAA,CAAAyH,EAAAC,GAAA,CAAA,IAAA8F,EAP1B/P,EACL,OACA0C,GAAc8D,EAAKjE,KAAK,CACxBR,EAAI4C,EAAM8G,YAAa,cACzB,CAAC,CAAAuE,EAEY1N,GAAiBkE,EAAKjE,KAAK,CAAA,OAAAwN,IAAA9F,EAAAI,GAAAC,EAAAsF,EAAA3F,EAAAI,EAAA0F,EAAA,CAAAC,IAAA/F,EAAAM,GAAAD,EAAAwF,EAAA7F,EAAAM,EAAAyF,EAAA,CAAA/F,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAA,CAAA,CAAAwI,KAAA,EAAA,IAAA1D,UAAA,CAAA,MAAA,MAAA,CAAA,IAAA+D,EAAAC,GAAA,CAML,OANKlG,EAAAC,GAAA,CAAA,IAAAkG,EAMlC3J,EAAKjB,SAAQ6K,EAAO5J,EAAKzD,KAAI,OAAAoN,IAAAlG,EAAAI,GAAA0B,EAAAkE,EAAA,MAAAhG,EAAAI,EAAA8F,EAAA,CAAAC,IAAAnG,EAAAM,GAAAwB,EAAAkE,EAAA,MAAAhG,EAAAM,EAAA6F,EAAA,CAAAnG,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAA,CAAA,CAAA6I,KAAA,CAAApN,EAEtCxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAExF,EAAKiB,SAAW,aAAW,IAAAyE,UAAA,CAAA,OAAArJ,EACpCsI,GAAmB,EAAA,CAAA,EAAA,CAAA,CAAAtI,EAGrBxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAExF,EAAKiB,SAAW,QAAM,IAAAyE,UAAA,CAAA,IAAAmE,EAAAC,IAAA,CAEd,MAFcD,GAAAvC,YACIQ,EAAW9H,EAAK,CAAA0E,EAAAmF,EAAAxN,EACjD/B,EAAM,CAAC8B,KAAM,GAAE,CAAA,CAAA,CAAAyN,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAAnF,EAAAqE,MASjB/I,EAAKzD,KAAI,CAAAmI,EAAAoE,EAAAzM,EAEXxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAExF,EAAKsB,YAAU,IAAAoE,UAAA,CAAA,IAAAqE,EAAAC,IAAA,CAAAC,EAAAF,EAAAxG,WAAA2G,EAAAD,EAAAzF,YAE4B,OAF5B0F,EAAA1F,YAAAE,EAAAqF,MAEtB/J,EAAKsB,WAAYC,MAAK0I,EAAA,CAAAvF,EAAAqF,MAAK/J,EAAKsB,WAAYG,OAAMyI,EAAA,CAAAH,GAAA,CAAA,CAAAf,EAAA,CAAAtE,EAAAsE,MAGnCjM,EAAeiD,EAAK5D,KAAK,CAAA,CAAAsI,EAAAmE,EAAAxM,EAG9CxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAExF,EAAKiB,SAAW,aAAW,IAAAyE,UAAA,CAAA,OAAArJ,EACpC4G,GAAW,CAAA,IACVpC,SAAO,CAAA,OAAE1C,EAAMQ,YAAYqB,EAAKpB,IAAI,EAAA,IACpCsE,YAAU,CAAA,OAAE3H,EAAI4C,EAAM8G,YAAa,gBAAgB,EAAA,IACnD9B,WAAS,CAAA,OAAE5H,EAAI4C,EAAM8G,YAAa,eAAe,EAAA,CAAA,EAAA,CAAA,CAAA,KAAA,CAAAP,EAAAmE,EAAAxM,EAIpDxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAExF,EAAKiB,SAAW,QAAM,IAAAyE,UAAA,CAAA,IAAA0E,EAAAC,IAAA,CAAAC,EAAAF,EAAA7G,WAET,OAFSmB,EAAA0F,EAAA/N,EAE7B1C,EAAW,CAACyC,KAAM,GAAE,CAAA,CAAAkO,EAAA,CAAAF,GAAA,CAAA,CAAA,KAAA,CAAA1F,EAAAmE,EAAAxM,EAKxBxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAExF,EAAKiB,SAAW,SAAO,IAAAyE,UAAA,CAAA,OAAA6E,IAAA,EAAA,CAAA,CAAA,KAAA,CAAA7F,EAAAuE,EAAA5M,EAMlCxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEC,MAAAzF,EAAKiB,SAAW,OAAM,EAAA,EAAIjB,EAAKjB,UAAQ,IAAA2G,UAAA,CAAA,IAAA8E,EAAAC,GAAA,CAEO,MAFPD,GAAAlD,YAGhCQ,EAAW9H,EAAK,CAAA0E,EAAA8F,EAAAnO,EAG9BvC,EAAG,CAACsC,KAAM,GAAE,CAAA,CAAA,CAAAoH,MAAAM,EAAA0G,EAJNhR,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,YAAY,CAAC,CAAA,CAAA,CAAAuF,GAAA,CAAA,CAAAtB,EAAA,CAAAA,EAAA5B,YASzCnJ,EAAM2G,SAAS9E,EAAKpB,IAAI,CAAA8F,EAAAwE,EAAA7M,EAGtChC,EAAC,CAAC+B,KAAM,GAAE,MAAA,WAAA,CAAA,CAAA,CAAAoH,EAAAC,GAAA,CAAA,IAAAiH,EAtFRlR,EACL,OACAwG,EAAKiB,SAAW,aAAe,QAC/BjB,EAAKiB,SAAW,SAAW,QAC3B1F,EAAI4C,EAAM8G,YAAa,cACzB,CAAC,CAAA0F,EAEWnR,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,eAAe,CAAC,CAAA2F,EA+BlDpR,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,cAAc,CAAC,CAAA4F,EAE/B7K,EAAKzD,KAAIuO,EA+B3BtR,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,iBAAiB,CAAC,CAAA8F,EAWrDvR,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,YAAY,CAAC,CAAA,OAAAyF,IAAAjH,EAAAI,GAAAC,EAAA4E,EAAAjF,EAAAI,EAAA6G,EAAA,CAAAC,IAAAlH,EAAAM,GAAAD,EAAA8E,EAAAnF,EAAAM,EAAA4G,EAAA,CAAAC,IAAAnH,EAAAO,GAAAF,EAAA+E,EAAApF,EAAAO,EAAA4G,EAAA,CAAAC,IAAApH,EAAAkE,GAAApC,EAAAwD,EAAA,QAAAtF,EAAAkE,EAAAkD,EAAA,CAAAC,IAAArH,EAAAuH,GAAAlH,EAAAmF,EAAAxF,EAAAuH,EAAAF,EAAA,CAAAC,IAAAtH,EAAAwH,GAAAnH,EAAAoF,EAAAzF,EAAAwH,EAAAF,EAAA,CAAAtH,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAAoD,EAAApD,IAAAA,GAAA+G,EAAA/G,IAAAA,GAAAoK,EAAApK,IAAAA,GAAAqK,EAAArK,IAAAA,GAAA,CAAA,CAAA8H,KAAA,CAQ7D,CAAA,CAAA,CAAAlF,MAAAM,EAAAiE,EA9GKvO,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,cAAc,CAAC,CAAA,CAAA,CAAA8C,KAAA,CAAA1L,EAmH5DxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEqC,GAAS,EAAA,IAAAnC,UAAA,CAAA,OAAArJ,EAClB5C,EAAY,CAAA,IACX0F,KAAG,CAAA,OAAE0I,GAAS,CAAE9I,UAAS,IACzBmM,WAAS,CAAA,OAAErD,GAAS,CAAEtL,MAAI,IAC1BH,MAAI,CAAA,OAAEW,EAAe8K,GAAS,CAAEzL,KAAK,EACrC+O,YAAerD,EAAW,KAAI,CAAC,CAAA,EAAA,CAAA,CAAA,CAOzC,SAASsD,EAAoBjN,EAS1B,CACD,GAAM,CAAC0J,EAASC,GAActN,EAAgC,KAAK,CAEnE,MAAA,CAAA6B,EAEKxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEC,MAAA,CAAA,CAAAtH,EAAM6G,aAAY,EAAA,EAAI7G,EAAMsB,MAAMW,OAAS,GAAC,IAAAsF,UAAA,CAAA,IAAA6F,EAAA3F,GAAA,CAAA4F,EAAAD,EAAAhI,WAAAkI,EAAAD,EAAAjI,WAAAmI,EAAAF,EAAAhH,YAAAmH,EAAAD,EAAAnI,WAMG,OANHmB,EAAA8G,MAGjDrN,EAAMsB,MAAMW,OAAMqL,EAAA,CAAAxF,EAAAyF,EAAA,QAIVvN,EAAM4G,WAAU,GAAA,CAAAL,EAAAgH,EAAArP,EAGxBjC,EAAM,CAACgC,KAAM,GAAE,CAAA,CAAAuP,EAAA,CAAAnI,EAAAC,GAAA,CAAA,IAAAmI,EATRpS,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,aAAa,CAAC,CAAA4G,EAC7CrS,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,YAAY,CAAC,CAAA6G,EAInDtS,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,WAAW,CAAC,CAAA,OAAA2G,IAAAnI,EAAAI,GAAAC,EAAAyH,EAAA9H,EAAAI,EAAA+H,EAAA,CAAAC,IAAApI,EAAAM,GAAAD,EAAA0H,EAAA/H,EAAAM,EAAA8H,EAAA,CAAAC,IAAArI,EAAAO,GAAAF,EAAA4H,EAAAjI,EAAAO,EAAA8H,EAAA,CAAArI,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAAoD,EAAApD,IAAAA,GAAA,CAAA,CAAA2K,GAAA,CAAA,MAAA,CAAA,IAAAQ,EAAAC,GAAA,CASD,OATCtH,EAAAqH,EAAA1P,EAUxD3B,EAAG,CAAA,IAAC2L,MAAI,CAAA,OAAElI,EAAMsB,OAAKiG,SACnB1F,QAAI,CAAA,IAAAiM,EAAAD,GAAA,CAEoF,OAFpFtH,EAAAuH,EAAA5P,EAIAxB,EAAI,CAAA,IACH2K,MAAI,CAAA,OAAExF,EAAKjB,UAAQ,IACnBoK,UAAQ,CAAA,WAAA,CAAA,IAAA+C,EAAAF,GAAA,CACoD,OADpDtH,EAAAwH,MAEH/P,EAAgB6D,EAAKjE,KAAM,GAAG,CAAA,CAAAyH,MAAAM,EAAAoI,EADrB1S,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,WAAW,CAAC,CAAA,CAAA,CAAAiH,KAAA,EAAA,IAAAxG,UAAA,CAAA,IAAAyG,EAAAzC,GAAA,CAQN,OARMlG,EAAAC,GAAA,CAAA,IAAA2I,EAMrDpM,EAAKjB,SAAQsN,EACbrM,EAAKzD,KAAI+P,EACP9S,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,UAAU,CAAC,CAAA,OAAAmH,IAAA3I,EAAAI,GAAA0B,EAAA4G,EAAA,MAAA1I,EAAAI,EAAAuI,EAAA,CAAAC,IAAA5I,EAAAM,GAAAwB,EAAA4G,EAAA,MAAA1I,EAAAM,EAAAsI,EAAA,CAAAC,IAAA7I,EAAAO,GAAAF,EAAAqI,EAAA1I,EAAAO,EAAAsI,EAAA,CAAA7I,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAAoD,EAAApD,IAAAA,GAAA,CAAA,CAAAuL,GAAA,CAAA,CAAA,KAAA,CAAAzH,EAAAuH,EAAA5P,EAIvDxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAExF,EAAKiB,SAAW,aAAW,IAAAyE,UAAA,CAAA,OAAArJ,EACpC6H,GAAmB,CAAA,IAACrD,SAAO,CAAA,OAAE1C,EAAMQ,YAAYqB,EAAKpB,IAAI,EAAA,CAAA,EAAA,CAAA,CAAA,KAAA,CAAA8F,EAAAuH,EAAA5P,EAG1DxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAExF,EAAKiB,SAAW,aAAW,IAAAyE,UAAA,CAAA,IAAA6G,EAAAC,IAAA,CAAAC,EAAAF,EAAAhJ,WAYqB,OAZrBmB,EAAA6H,EAAAlQ,EAElCxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAExF,EAAKjB,UAAQ,IAAA2G,UAAA,CAAA,IAAAgH,EAAAjC,GAAA,CAEiC,MAFjCiC,GAAApF,YAGNQ,EAAW9H,EAAK,CAAA0E,EAAAgI,EAAArQ,EAG9BvC,EAAG,CAACsC,KAAM,GAAE,CAAA,CAAA,CAAAoH,MAAAM,EAAA4I,EAJNlT,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,YAAY,CAAC,CAAA,CAAA,CAAAyH,GAAA,CAAA,CAAAD,EAAA,CAAAA,EAAAnF,YASzCnJ,EAAM2G,SAAS9E,EAAKpB,IAAI,CAAA8F,EAAA+H,EAAApQ,EAGtCjC,EAAM,CAACgC,KAAM,GAAE,CAAA,CAAA,CAAAoH,MAAAM,EAAA2I,EAJTjT,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,YAAY,CAAC,CAAA,CAAA,CAAAsH,GAAA,CAAA,CAAA,KAAA,CAAA/I,MAAAM,EAAAmI,EAjCrDzS,EAAG,OAAQwG,EAAKiB,SAAW,SAAW,QAAS1F,EAAI4C,EAAM8G,YAAa,OAAO,CAAC,CAAA,CAAA,CAAAgH,KAAA,CA0CxF,CAAA,CAAA,KAAA,CAAAvH,EAAAqH,EAAA1P,EAEFxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAErH,EAAMmN,eAAa,IAAA5F,UAAA,CAAA,IAAAiH,EAAAC,GAAA,CAAAC,EAAAF,EAAApJ,WAEyB,OAFzB0C,EAAA0G,EAAA,QAGlBxO,EAAMkN,MAAK,GAAA,CAAA3G,EAAAiI,EAAAtQ,EAGnBxC,EAAW,CAACuC,KAAM,GAAE,MAAA,aAAA,CAAA,CAAAyQ,EAAA,CAAArJ,MAAAM,EAAA6I,EAJdnT,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,UAAU,CAAC,CAAA,CAAA,CAAA0H,GAAA,CAAA,CAAA,KAAA,CAAAnJ,MAAAM,EAAAiI,EAlD9CvS,EAAG,OAAQ+B,EAAI4C,EAAM8G,YAAa,WAAW,CAAC,CAAA,CAAA,CAAA8G,KAAA,CAAA1P,EA4DzDxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEqC,GAAS,EAAA,IAAAnC,UAAA,CAAA,OAAArJ,EAClB5C,EAAY,CAAA,IACX0F,KAAG,CAAA,OAAE0I,GAAS,CAAE9I,UAAS,IACzBmM,WAAS,CAAA,OAAErD,GAAS,CAAEtL,MAAI,IAC1BH,MAAI,CAAA,OAAEW,EAAe8K,GAAS,CAAEzL,KAAK,EACrC+O,YAAerD,EAAW,KAAI,CAAC,CAAA,EAAA,CAAA,CAAA,CAOzC,SAASgF,GAAWC,EAAgB,CAClCA,EAAInS,EACF,CACEiH,SAAU,GACVmL,SAAU,OACVC,eAAgB,GAChB/H,YAAa,GACd,CACD6H,EACD,CAED,IAAIG,EACE,CAAE9O,WAAUkB,eAAcuD,aAAYG,WAAUrE,eAAgBT,EAAU6O,EAAE,CAE5EK,MAAqBF,EAASG,OAAO,CAErCC,EAAqBzJ,GAAa,CACtC,IAAM2J,EAAQ3J,EAAE4J,cACZD,EAAM/N,OAAOW,QAAQd,EAAakO,EAAM/N,MAAM,CAClD+N,EAAM/K,MAAQ,IAGV6I,MAEJ,EADI,CAACyB,EAAElL,UAAYzD,GAAU,CAACgC,QAAU,GACpC2M,EAAEnN,UAAYxB,GAAU,CAACgC,QAAU2M,EAAEnN,UAIrC8N,MAA8BX,EAAE/H,cAAgB+H,EAAElL,WAAa,GAErE,WAAA,CAAA,IAAA8L,EAAAC,GAAA,CAAAC,EAAAF,EAAApK,WAAAuK,EAGWZ,EAF8B,OAEtB,OAAAY,GAAA,WAAAC,EAAAD,EAAAD,EAAA,CAARX,EAAQW,EAAAG,EAAAH,EAAAI,EAAA,CAAA,IAGbpM,UAAQ,CAAA,OAAEkL,EAAElL,UAAQ,IACpBqM,QAAM,CAAA,OAAEnB,EAAEmB,QAAM,KACXnB,EAAEoB,UAAY,CAAEC,gBAAiB,GAAI,CAAG,EAAE,CAAA,CAAA,SACrCd,EAAiB,CAAA,CAAA,GAAA,GAAA,CAAA5I,EAAAiJ,EAAAtR,EAG5BvB,EAAM,CAAA,IAAA4K,UAAA,CAAA,MAAA,CAAArJ,EACJ1B,EAAK,CAAA,IAAC6K,MAAI,CAAA,OAAEuH,EAAEC,WAAa,gBAAc,IAAAtH,UAAA,CAAA,MAAA,CAAArJ,EACvCxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEuH,EAAEE,gBAAc,IAAAvH,UAAA,CAAA,OAAArJ,EACzB+O,EAAmB,CAAA,IAClB3L,OAAK,CAAA,OAAErB,GAAU,EACjB0G,SAAUjC,EACVwI,MAAO+B,EACPrI,WAAY/B,EAAQ,IACpBsI,eAAa,CAAA,OAAEA,GAAe,EAAA,IAC9BtG,cAAY,CAAA,OAAE0I,GAAuB,EACxB/O,cAAW,IACxBsG,aAAW,CAAA,OAAE8H,EAAEsB,OAAK,CAAA,EAAA,CAAA,CAAAhS,EAGvBxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,MAAE,CAACuH,EAAEE,gBAAc,IAAAvH,UAAA,CAAA,IAAA4I,EAAAC,IAAA,CAEd,MAFcD,GAAAhH,QACb8F,EAAY1I,EAAA4J,MACvBvB,EAAErH,SAAQ,CAAA4I,GAAA,CAAA,CAAA,EAAA,CAAA,CAAAjS,EAIhB1B,EAAK,CAAA,IAAC6K,MAAI,CAAA,OAAEuH,EAAEC,WAAa,gBAAc,IAAAtH,UAAA,CAAA,MAAA,MAAA,CAAA,IAAA8I,EAAAxC,GAAA,CAGc,OAHd/F,EAAAuI,EAAA,QAE7BlD,GAAe,CAAG8B,EAAexM,IAAAA,GAAS,GAAA,CAAA8D,EAAA8J,MAGlDzB,EAAErH,SAAQ,CAAAlC,MAAAM,EAAA0K,EAFJlD,GAAe,CAAG,uBAAyB,GAAE,CAAA,CAAAkD,KAAA,CAAAnS,EAIrDxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEC,MAAA,CAAA,CAAAsH,EAAEE,eAAc,EAAA,EAAI7O,GAAU,CAACgC,OAAS,GAAC,IAAAsF,UAAA,CAAA,OAAArJ,EAClDvB,EAAM,CAAA,IAAA4K,UAAA,CAAA,MAAA,CAAArJ,EACJ1B,EAAK,CAAA,IAAC6K,MAAI,CAAA,OAAEuH,EAAEC,WAAa,WAAS,IAAAtH,UAAA,CAAA,OAAArJ,EAClCuL,EAAe,CAAA,IACdnI,OAAK,CAAA,OAAErB,GAAU,EACjB0G,SAAUjC,EACVkC,WAAY/B,EAAQ,IACpBgC,cAAY,CAAA,OAAE0I,GAAuB,EACxB/O,cAAW,IACxBsG,aAAW,CAAA,OAAE8H,EAAEsB,OAAK,CAAA,EAAA,CAAA,CAAAhS,EAGvB1B,EAAK,CAAA,IAAC6K,MAAI,CAAA,OAAEuH,EAAEC,WAAa,QAAM,IAAAtH,UAAA,CAAA,OAAArJ,EAC/BwI,EAAY,CAAA,IACXpF,OAAK,CAAA,OAAErB,GAAU,EACjB0G,SAAUjC,EACVkC,WAAY/B,EAAQ,IACpBgC,cAAY,CAAA,OAAE0I,GAAuB,EAAA,IACrCzI,aAAW,CAAA,OAAE8H,EAAEsB,OAAK,IACpBnJ,aAAW,CAAA,OAAE6H,EAAE7H,aAAW,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,KAAA,CAAAR,EAAAiJ,EAAAtR,EAQrCxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEuH,EAAE0B,cAAY,IAAA/I,UAAA,CAAA,IAAAgJ,EAAA1C,GAAA,CAC4B,OAD5BtH,EAAAgK,MAC+B3B,EAAE0B,aAAY,CAAAjL,MAAAM,EAAA4K,EAAzDlV,EAAG,OAAQ+B,EAAIwR,EAAEsB,MAAO,eAAe,CAAC,CAAA,CAAA,CAAAK,GAAA,CAAA,CAAA,KAAA,CAAAlL,MAAAM,EAAA6J,EAlE5ChS,EAAWoR,EAAEsB,MAAO,OAAO,CAAA,CAAA,CAAAV,KAAA,CAwE3C,SAASgB,GAAc5B,EAAuB,CAC5CA,EAAInS,EACF,CACEiH,SAAU,GACVmL,SAAU,OACVC,eAAgB,GAChB2B,KAAM,sCACN1J,YAAa,GACd,CACD6H,EACD,CAED,IAAIG,EACE,CAAC2B,EAAYC,GAAiBtU,EAAa,GAAM,CACjD,CAAE4D,WAAUkB,eAAcuD,aAAYG,WAAUrE,eAAgBT,EAAU6O,EAAE,CAC5EW,MAA8BX,EAAE/H,cAAgB+H,EAAElL,WAAa,GAE/DuL,MAAqBF,EAASG,OAAO,CAErCC,EAAqBzJ,GAAa,CACtC,IAAM2J,EAAQ3J,EAAE4J,cACZD,EAAM/N,OAAOW,QAAQd,EAAakO,EAAM/N,MAAM,CAClD+N,EAAM/K,MAAQ,IAGVsM,EAAkBlL,GAAiB,CACvCA,EAAEoL,gBAAgB,CAClBH,EAAc,GAAK,EAGfI,EAAmBrL,GAAiB,CACxCA,EAAEoL,gBAAgB,CAClBH,EAAc,GAAM,EAGhBK,EAActL,GAAiB,CACnCA,EAAEoL,gBAAgB,CAClBH,EAAc,GAAM,CACpB,IAAMrP,EAAQoE,EAAEuL,cAAc3P,MAC1BA,GAAOW,QAAQd,EAAaG,EAAM,EAGlC6L,MAEJ,EADI,CAACyB,EAAElL,UAAYzD,GAAU,CAACgC,QAAU,GACpC2M,EAAEnN,UAAYxB,GAAU,CAACgC,QAAU2M,EAAEnN,UAI3C,WAAA,CAAA,IAAAyP,EAAAzB,GAAA,CAAA0B,EAAAD,EAAA9L,WAAAgM,EAGWrC,EAF8B,OAEtB,OAAAqC,GAAA,WAAAxB,EAAAwB,EAAAD,EAAA,CAARpC,EAAQoC,EAAAtB,EAAAsB,EAAArB,EAAA,CAAA,IAGbpM,UAAQ,CAAA,OAAEkL,EAAElL,UAAQ,IACpBqM,QAAM,CAAA,OAAEnB,EAAEmB,QAAM,KACXnB,EAAEoB,UAAY,CAAEC,gBAAiB,GAAI,CAAG,EAAE,CAAA,CAAA,SACrCd,EAAiB,CAAA,CAAA,GAAA,GAAA,CAAA5I,EAAA2K,EAAAhT,EAG5BxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEuH,EAAEC,WAAa,gBAAc,IAAAtH,UAAA,CAAA,OAAArJ,EACtCxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEuH,EAAEE,gBAAc,IAAAvH,UAAA,CAAA,OAAArJ,EACzB+O,EAAmB,CAAA,IAClB3L,OAAK,CAAA,OAAErB,GAAU,EACjB0G,SAAUjC,EACVwI,MAAO+B,EACPrI,WAAY/B,EAAQ,IACpBsI,eAAa,CAAA,OAAEA,GAAe,EAAA,IAC9BtG,cAAY,CAAA,OAAE0I,GAAuB,EACxB/O,cAAW,IACxBsG,aAAW,CAAA,OAAE8H,EAAEsB,OAAK,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,KAAA,CAAA3J,EAAA2K,EAAAhT,EAKzBxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEuH,EAAEC,WAAa,gBAAc,IAAAtH,UAAA,CAAA,MAAA,CAAArJ,EACtCxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAE8F,GAAe,EAAA,IAAA5F,UAAA,CAAA,IAAA8J,EAAAnM,GAAA,CAAAoM,EAAAD,EAAAjM,WAQ4B,OAR5BiM,EAAAE,iBAAA,OAMfP,EAAU,CAAAK,EAAAE,iBAAA,YADLR,EAAe,CAAAM,EAAAE,iBAAA,WADhBX,EAAc,CAAAS,EAAAlI,QADjB8F,EAAY1I,EAAA+K,EAAApT,EAMlBxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEuH,EAAE4C,MAAI,IAAExG,UAAQ,CAAA,OAAA9M,EAAGxC,EAAW,CAACuC,KAAM,GAAIwT,YAAa,IAAG,CAAA,EAAA,IAAAlK,UAAA,CAAA,OAClEqH,EAAE4C,MAAI,CAAA,CAAA,CAAAjL,EAAA8K,EAAAnT,EAGVxB,EAAI,CAAA,IACH2K,MAAI,CAAA,OAAEuH,EAAErH,UAAQ,IAChByD,UAAQ,CAAA,MAAA,MAAA,CAAA,IAAA0G,EAAAC,IAAA,CAE8C,OAF9CtM,MAAAM,EAAA+L,EAEMrW,EAAG,OAAQ+B,EAAIwR,EAAEsB,MAAO,eAAe,CAAC,CAAA,CAAA,CAAAwB,KAAA,MAAA,CAAA,IAAAE,EAAAC,IAAA,CAGD,OAHCtL,EAAAqL,MAGEhD,EAAE6B,KAAI,CAAApL,MAAAM,EAAAiM,EAAhDvW,EAAG,OAAQ+B,EAAIwR,EAAEsB,MAAO,cAAc,CAAC,CAAA,CAAA,CAAA0B,KAAA,CAAA,EAAA,IAAArK,UAAA,CAAA,OAIpDqH,EAAErH,UAAQ,CAAA,CAAA,KAAA,CAAAlC,EAAAC,GAAA,CAAA,IAAAwM,EAtBNzW,EAAG,OAAQqV,GAAY,EAAI,QAAStT,EAAIwR,EAAEsB,MAAO,UAAU,CAAC,CAAA6B,EAMvD1W,EAAG,OAAQ+B,EAAIwR,EAAEsB,MAAO,cAAc,CAAC,CAAA,OAAA4B,IAAAxM,EAAAI,GAAAC,EAAA0L,EAAA/L,EAAAI,EAAAoM,EAAA,CAAAC,IAAAzM,EAAAM,GAAAD,EAAA2L,EAAAhM,EAAAM,EAAAmM,EAAA,CAAAzM,GAAA,CAAAI,EAAAjD,IAAAA,GAAAmD,EAAAnD,IAAAA,GAAA,CAAA,CAAA4O,GAAA,CAAA,CAAAnT,EAqBtDxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEC,MAAA,CAAA,CAAAsH,EAAEE,eAAc,EAAA,EAAI7O,GAAU,CAACgC,OAAS,GAAC,IAAAsF,UAAA,CAAA,OAAArJ,EAClDvB,EAAM,CAAA,IAAA4K,UAAA,CAAA,MAAA,CAAArJ,EACJ1B,EAAK,CAAA,IAAC6K,MAAI,CAAA,OAAEuH,EAAEC,WAAa,WAAS,IAAAtH,UAAA,CAAA,OAAArJ,EAClCuL,EAAe,CAAA,IACdnI,OAAK,CAAA,OAAErB,GAAU,EACjB0G,SAAUjC,EACVkC,WAAY/B,EAAQ,IACpBgC,cAAY,CAAA,OAAE0I,GAAuB,EACxB/O,cAAW,IACxBsG,aAAW,CAAA,OAAE8H,EAAEsB,OAAK,CAAA,EAAA,CAAA,CAAAhS,EAGvB1B,EAAK,CAAA,IAAC6K,MAAI,CAAA,OAAEuH,EAAEC,WAAa,QAAM,IAAAtH,UAAA,CAAA,OAAArJ,EAC/BwI,EAAY,CAAA,IACXpF,OAAK,CAAA,OAAErB,GAAU,EACjB0G,SAAUjC,EACVkC,WAAY/B,EAAQ,IACpBgC,cAAY,CAAA,OAAE0I,GAAuB,EAAA,IACrCzI,aAAW,CAAA,OAAE8H,EAAEsB,OAAK,IACpBnJ,aAAW,CAAA,OAAE6H,EAAE7H,aAAW,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,KAAA,CAAAR,EAAA2K,EAAAhT,EAOnCxB,EAAI,CAAA,IAAC2K,MAAI,CAAA,OAAEuH,EAAE0B,cAAY,IAAA/I,UAAA,CAAA,IAAAyK,EAAAnE,GAAA,CAC4B,OAD5BtH,EAAAyL,MAC+BpD,EAAE0B,aAAY,CAAAjL,MAAAM,EAAAqM,EAAzD3W,EAAG,OAAQ+B,EAAIwR,EAAEsB,MAAO,eAAe,CAAC,CAAA,CAAA,CAAA8B,GAAA,CAAA,CAAA,KAAA,CAAA3M,MAAAM,EAAAuL,EAnF5C1T,EAAWoR,EAAEsB,MAAO,OAAO,CAAA,CAAA,CAAAgB,KAAA,CAyF3C,IAAae,EAAStD,GACtBsD,EAAOC,QAAU1B,GAAc2B,EAAA,CAAA,QAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"upload.types.d.ts","sourceRoot":"","sources":["../../../src/components/upload/upload.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.types.d.ts","sourceRoot":"","sources":["../../../src/components/upload/upload.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"z-index.d.ts","sourceRoot":"","sources":["../../../src/components/z-index/z-index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2C,eAAe,EAAQ,MAAM,UAAU,CAAC;AAK1F,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEnD,sEAAsE;AACtE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAO7C,CAAC;AAqCF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,CAAC,WAAW,CAoI/C,CAAC"}
1
+ {"version":3,"file":"z-index.d.ts","sourceRoot":"","sources":["../../../src/components/z-index/z-index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2C,eAAe,EAAQ,MAAM,UAAU,CAAC;AAK1F,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEnD,sEAAsE;AACtE,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAO7C,CAAC;AAqCF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,EAAE,eAAe,CAAC,WAAW,CAsI/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"z-index.js","names":["createEffect","mergeProps","on","onCleanup","ParentComponent","Show","Portal","cn","acquire","acquireScrollLock","release","releaseScrollLock","useParentZIndex","ZIndexContext","ZIndexType","ZIndexProps","OFFSET","Record","DROPDOWN","POPOVER","OVERLAY","MODAL","TOOLTIP","TOAST","RELATIVE_OFFSET","Partial","CONTAINER_TYPES","Set","computeEffectiveBase","type","globalBase","parentZIndex","undefined","relativeOffset","ZIndex","props","p","positioning","const","baseIndex","startIndex","Inner","innerProps","zIndex","customValue","onZIndex","blockScroll","releaseScrollLockOnUnmount","effectiveBase","acquired","releaseZIndexAndScrollLock","registryKey","offset","isContainer","has","_$createComponent","children","_el$","_tmpl$","_$insert","Provider","value","_$effect","_p$","_v$","class","_v$2","position","e","_$className","t","_$style","PreRenderInner","releaseZIndex","scrollLockHeld","open","defer","releaseScrollLockIfHeld","_el$2","_v$3","_v$4","display","preRender","when"],"sources":["../../../src/components/z-index/z-index.tsx"],"sourcesContent":["import { createEffect, mergeProps, on, onCleanup, ParentComponent, Show } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { cn } from '@/utils/cn';\nimport { acquire, acquireScrollLock, release, releaseScrollLock } from './z-index.store';\nimport { useParentZIndex, ZIndexContext } from './z-index.context';\nimport { ZIndexType, type ZIndexProps } from './z-index.types';\n\nexport { ZIndexType } from './z-index.types';\nexport type { ZIndexProps } from './z-index.types';\nexport { acquire, release } from './z-index.store';\n\n/** Base z-index for each type group when no parent context exists. */\nexport const OFFSET: Record<ZIndexType, number> = {\n [ZIndexType.DROPDOWN]: 200,\n [ZIndexType.POPOVER]: 200,\n [ZIndexType.OVERLAY]: 500,\n [ZIndexType.MODAL]: 1000,\n [ZIndexType.TOOLTIP]: 1500,\n [ZIndexType.TOAST]: 3000,\n};\n\n/**\n * Relative offset added to the parent container's z-index when a child popup\n * renders inside a container (MODAL or OVERLAY). This ensures correct stacking:\n * e.g., a dropdown inside a modal gets parentZIndex + 50, always above the modal.\n */\nconst RELATIVE_OFFSET: Partial<Record<ZIndexType, number>> = {\n [ZIndexType.DROPDOWN]: 10,\n [ZIndexType.POPOVER]: 20,\n [ZIndexType.TOOLTIP]: 30,\n};\n\n/**\n * Container types that publish their z-index via ZIndexContext so that\n * child popup components can calculate their z-index relative to this parent.\n */\nconst CONTAINER_TYPES = new Set<ZIndexType>([ZIndexType.MODAL, ZIndexType.OVERLAY]);\n\n/**\n * Compute the effective base index for slot allocation.\n *\n * - If a parent container z-index exists AND this type has a relative offset:\n * use `parentZIndex + relativeOffset` (context-aware mode).\n * - Otherwise: use the global `baseIndex` from OFFSET (top-level mode).\n */\nfunction computeEffectiveBase(\n type: string,\n globalBase: number,\n parentZIndex: number | undefined,\n): number {\n if (parentZIndex === undefined) return globalBase;\n const relativeOffset = RELATIVE_OFFSET[type as ZIndexType];\n if (relativeOffset === undefined) return globalBase;\n return parentZIndex + relativeOffset;\n}\n\n/**\n * ZIndex — wrapper component that renders children via Portal with an\n * auto-managed z-index from a centralized global registry.\n *\n * When `open` becomes true, it acquires the next available z-index slot\n * for the given type group. When `open` becomes false (or the component\n * unmounts), the slot is released back to the pool.\n *\n * Container types (MODAL, OVERLAY) additionally publish their z-index via\n * ZIndexContext, allowing nested popup children to auto-offset correctly.\n */\nexport const ZIndex: ParentComponent<ZIndexProps> = props => {\n const p = mergeProps({ positioning: 'fixed' as const }, props);\n\n const baseIndex = (): number => {\n if (p.startIndex !== undefined) return p.startIndex;\n return OFFSET[p.type as ZIndexType] ?? 0;\n };\n\n /**\n * Inner component — only rendered when `open` is true (or always when preRender).\n * This ties acquire/release to the actual Portal mount/unmount lifecycle.\n */\n const Inner: ParentComponent = innerProps => {\n let zIndex: number;\n\n if (p.customValue !== undefined) {\n zIndex = p.customValue;\n p.onZIndex?.(zIndex);\n if (p.blockScroll) acquireScrollLock();\n onCleanup(function releaseScrollLockOnUnmount() {\n if (p.blockScroll) releaseScrollLock();\n });\n } else {\n const parentZIndex = useParentZIndex();\n const effectiveBase = computeEffectiveBase(p.type, baseIndex(), parentZIndex);\n const acquired = acquire(p.type, effectiveBase);\n zIndex = acquired.zIndex;\n p.onZIndex?.(zIndex);\n if (p.blockScroll) acquireScrollLock();\n onCleanup(function releaseZIndexAndScrollLock() {\n release(acquired.registryKey, acquired.offset);\n if (p.blockScroll) releaseScrollLock();\n });\n }\n\n const isContainer = CONTAINER_TYPES.has(p.type as ZIndexType);\n\n // Container types (MODAL, OVERLAY) publish their z-index via ZIndexContext\n // so that nested popups (Dropdown, Tooltip…) can auto-offset correctly.\n // The Provider MUST live INSIDE the Portal so SolidJS's reactive ownership\n // tree propagates the context into the Portal's scope. Wrapping the Portal\n // element from the outside does NOT work because Portal creates its own\n // reactive scope when mounting into document.body.\n return (\n <Portal>\n <div\n class={cn(p.positioning === 'fixed' ? 'fixed' : 'absolute', p.class)}\n style={{ 'z-index': zIndex, ...p.position }}\n >\n {isContainer ? (\n <ZIndexContext.Provider value={zIndex}>{innerProps.children}</ZIndexContext.Provider>\n ) : (\n innerProps.children\n )}\n </div>\n </Portal>\n );\n };\n\n /**\n * PreRenderInner — always mounted in the DOM, but manages z-index/scroll\n * reactively based on `open`. Portal is always rendered; visibility is\n * controlled via CSS display:none when closed.\n */\n const PreRenderInner: ParentComponent = innerProps => {\n let zIndex: number;\n const parentZIndex = useParentZIndex();\n\n if (p.customValue !== undefined) {\n zIndex = p.customValue;\n } else {\n const effectiveBase = computeEffectiveBase(p.type, baseIndex(), parentZIndex);\n const acquired = acquire(p.type, effectiveBase);\n zIndex = acquired.zIndex;\n onCleanup(function releaseZIndex() { release(acquired.registryKey, acquired.offset); });\n }\n\n // Reactively manage scroll lock based on open state.\n // Track whether we've acquired the lock to avoid double-release.\n let scrollLockHeld = false;\n createEffect(\n on(\n () => p.open,\n open => {\n if (open) {\n if (p.blockScroll && !scrollLockHeld) {\n acquireScrollLock();\n scrollLockHeld = true;\n }\n p.onZIndex?.(zIndex);\n } else {\n if (p.blockScroll && scrollLockHeld) {\n releaseScrollLock();\n scrollLockHeld = false;\n }\n }\n },\n { defer: false },\n ),\n );\n onCleanup(function releaseScrollLockIfHeld() {\n if (p.blockScroll && scrollLockHeld) {\n releaseScrollLock();\n scrollLockHeld = false;\n }\n });\n\n const isContainer = CONTAINER_TYPES.has(p.type as ZIndexType);\n\n return (\n <Portal>\n <div\n class={cn(p.positioning === 'fixed' ? 'fixed' : 'absolute', p.class)}\n style={{ 'z-index': zIndex, display: p.open ? undefined : 'none', ...p.position }}\n >\n {isContainer ? (\n <ZIndexContext.Provider value={zIndex}>{innerProps.children}</ZIndexContext.Provider>\n ) : (\n innerProps.children\n )}\n </div>\n </Portal>\n );\n };\n\n return p.preRender ? (\n <PreRenderInner>{p.children}</PreRenderInner>\n ) : (\n <Show when={p.open}>\n <Inner>{p.children}</Inner>\n </Show>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"z-index.js","names":["createEffect","mergeProps","on","onCleanup","ParentComponent","Show","Portal","cn","acquire","acquireScrollLock","release","releaseScrollLock","useParentZIndex","ZIndexContext","ZIndexType","ZIndexProps","OFFSET","Record","DROPDOWN","POPOVER","OVERLAY","MODAL","TOOLTIP","TOAST","RELATIVE_OFFSET","Partial","CONTAINER_TYPES","Set","computeEffectiveBase","type","globalBase","parentZIndex","undefined","relativeOffset","ZIndex","props","p","positioning","const","baseIndex","startIndex","Inner","innerProps","zIndex","customValue","onZIndex","blockScroll","releaseScrollLockOnUnmount","effectiveBase","acquired","releaseZIndexAndScrollLock","registryKey","offset","isContainer","has","_$createComponent","children","_el$","_tmpl$","_$insert","Provider","value","_$effect","_p$","_v$","class","_v$2","position","e","_$className","t","_$style","PreRenderInner","releaseZIndex","scrollLockHeld","open","defer","releaseScrollLockIfHeld","_el$2","_v$3","_v$4","display","preRender","when"],"sources":["../../../src/components/z-index/z-index.tsx"],"sourcesContent":["import { createEffect, mergeProps, on, onCleanup, ParentComponent, Show } from 'solid-js';\nimport { Portal } from 'solid-js/web';\nimport { cn } from '@/utils/cn';\nimport { acquire, acquireScrollLock, release, releaseScrollLock } from './z-index.store';\nimport { useParentZIndex, ZIndexContext } from './z-index.context';\nimport { ZIndexType, type ZIndexProps } from './z-index.types';\n\nexport { ZIndexType } from './z-index.types';\nexport type { ZIndexProps } from './z-index.types';\nexport { acquire, release } from './z-index.store';\n\n/** Base z-index for each type group when no parent context exists. */\nexport const OFFSET: Record<ZIndexType, number> = {\n [ZIndexType.DROPDOWN]: 200,\n [ZIndexType.POPOVER]: 200,\n [ZIndexType.OVERLAY]: 500,\n [ZIndexType.MODAL]: 1000,\n [ZIndexType.TOOLTIP]: 1500,\n [ZIndexType.TOAST]: 3000,\n};\n\n/**\n * Relative offset added to the parent container's z-index when a child popup\n * renders inside a container (MODAL or OVERLAY). This ensures correct stacking:\n * e.g., a dropdown inside a modal gets parentZIndex + 50, always above the modal.\n */\nconst RELATIVE_OFFSET: Partial<Record<ZIndexType, number>> = {\n [ZIndexType.DROPDOWN]: 10,\n [ZIndexType.POPOVER]: 20,\n [ZIndexType.TOOLTIP]: 30,\n};\n\n/**\n * Container types that publish their z-index via ZIndexContext so that\n * child popup components can calculate their z-index relative to this parent.\n */\nconst CONTAINER_TYPES = new Set<ZIndexType>([ZIndexType.MODAL, ZIndexType.OVERLAY]);\n\n/**\n * Compute the effective base index for slot allocation.\n *\n * - If a parent container z-index exists AND this type has a relative offset:\n * use `parentZIndex + relativeOffset` (context-aware mode).\n * - Otherwise: use the global `baseIndex` from OFFSET (top-level mode).\n */\nfunction computeEffectiveBase(\n type: string,\n globalBase: number,\n parentZIndex: number | undefined,\n): number {\n if (parentZIndex === undefined) return globalBase;\n const relativeOffset = RELATIVE_OFFSET[type as ZIndexType];\n if (relativeOffset === undefined) return globalBase;\n return parentZIndex + relativeOffset;\n}\n\n/**\n * ZIndex — wrapper component that renders children via Portal with an\n * auto-managed z-index from a centralized global registry.\n *\n * When `open` becomes true, it acquires the next available z-index slot\n * for the given type group. When `open` becomes false (or the component\n * unmounts), the slot is released back to the pool.\n *\n * Container types (MODAL, OVERLAY) additionally publish their z-index via\n * ZIndexContext, allowing nested popup children to auto-offset correctly.\n */\nexport const ZIndex: ParentComponent<ZIndexProps> = props => {\n const p = mergeProps({ positioning: 'fixed' as const }, props);\n\n const baseIndex = (): number => {\n if (p.startIndex !== undefined) return p.startIndex;\n return OFFSET[p.type as ZIndexType] ?? 0;\n };\n\n /**\n * Inner component — only rendered when `open` is true (or always when preRender).\n * This ties acquire/release to the actual Portal mount/unmount lifecycle.\n */\n const Inner: ParentComponent = innerProps => {\n let zIndex: number;\n\n if (p.customValue !== undefined) {\n zIndex = p.customValue;\n p.onZIndex?.(zIndex);\n if (p.blockScroll) acquireScrollLock();\n onCleanup(function releaseScrollLockOnUnmount() {\n if (p.blockScroll) releaseScrollLock();\n });\n } else {\n const parentZIndex = useParentZIndex();\n const effectiveBase = computeEffectiveBase(p.type, baseIndex(), parentZIndex);\n const acquired = acquire(p.type, effectiveBase);\n zIndex = acquired.zIndex;\n p.onZIndex?.(zIndex);\n if (p.blockScroll) acquireScrollLock();\n onCleanup(function releaseZIndexAndScrollLock() {\n release(acquired.registryKey, acquired.offset);\n if (p.blockScroll) releaseScrollLock();\n });\n }\n\n const isContainer = CONTAINER_TYPES.has(p.type as ZIndexType);\n\n // Container types (MODAL, OVERLAY) publish their z-index via ZIndexContext\n // so that nested popups (Dropdown, Tooltip…) can auto-offset correctly.\n // The Provider MUST live INSIDE the Portal so SolidJS's reactive ownership\n // tree propagates the context into the Portal's scope. Wrapping the Portal\n // element from the outside does NOT work because Portal creates its own\n // reactive scope when mounting into document.body.\n return (\n <Portal>\n <div\n class={cn(p.positioning === 'fixed' ? 'fixed' : 'absolute', p.class)}\n style={{ 'z-index': zIndex, ...p.position }}\n >\n {isContainer ? (\n <ZIndexContext.Provider value={zIndex}>{innerProps.children}</ZIndexContext.Provider>\n ) : (\n innerProps.children\n )}\n </div>\n </Portal>\n );\n };\n\n /**\n * PreRenderInner — always mounted in the DOM, but manages z-index/scroll\n * reactively based on `open`. Portal is always rendered; visibility is\n * controlled via CSS display:none when closed.\n */\n const PreRenderInner: ParentComponent = innerProps => {\n let zIndex: number;\n const parentZIndex = useParentZIndex();\n\n if (p.customValue !== undefined) {\n zIndex = p.customValue;\n } else {\n const effectiveBase = computeEffectiveBase(p.type, baseIndex(), parentZIndex);\n const acquired = acquire(p.type, effectiveBase);\n zIndex = acquired.zIndex;\n onCleanup(function releaseZIndex() {\n release(acquired.registryKey, acquired.offset);\n });\n }\n\n // Reactively manage scroll lock based on open state.\n // Track whether we've acquired the lock to avoid double-release.\n let scrollLockHeld = false;\n createEffect(\n on(\n () => p.open,\n open => {\n if (open) {\n if (p.blockScroll && !scrollLockHeld) {\n acquireScrollLock();\n scrollLockHeld = true;\n }\n p.onZIndex?.(zIndex);\n } else {\n if (p.blockScroll && scrollLockHeld) {\n releaseScrollLock();\n scrollLockHeld = false;\n }\n }\n },\n { defer: false },\n ),\n );\n onCleanup(function releaseScrollLockIfHeld() {\n if (p.blockScroll && scrollLockHeld) {\n releaseScrollLock();\n scrollLockHeld = false;\n }\n });\n\n const isContainer = CONTAINER_TYPES.has(p.type as ZIndexType);\n\n return (\n <Portal>\n <div\n class={cn(p.positioning === 'fixed' ? 'fixed' : 'absolute', p.class)}\n style={{ 'z-index': zIndex, display: p.open ? undefined : 'none', ...p.position }}\n >\n {isContainer ? (\n <ZIndexContext.Provider value={zIndex}>{innerProps.children}</ZIndexContext.Provider>\n ) : (\n innerProps.children\n )}\n </div>\n </Portal>\n );\n };\n\n return p.preRender ? (\n <PreRenderInner>{p.children}</PreRenderInner>\n ) : (\n <Show when={p.open}>\n <Inner>{p.children}</Inner>\n </Show>\n );\n};\n"],"mappings":"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"}