@xihan-ui/vue 1.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +86 -0
- package/LICENSE +21 -0
- package/README.md +22 -0
- package/dist/backgrounds.d.ts +158 -0
- package/dist/backgrounds.d.ts.map +1 -0
- package/dist/backgrounds.js +193 -0
- package/dist/backgrounds.js.map +1 -0
- package/dist/index.d.ts +11591 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13591 -0
- package/dist/index.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["KEY","ITEM_KEY","renderDefaultTree","KEY","KEY","KEY","KEY","KEY","KEY","KEY","KEY","CELL_KEY","KEY","KEY","KEY","ITEM_KEY","KEY","ITEM_KEY","renderDefaultTree","KEY","KEY","KEY","KEY","ITEM_KEY","GROUP_KEY","renderDefaultTree","KEY","KEY","ITEM_KEY","GROUP_KEY","renderDefaultTree","KEY","KEY","KEY","KEY","KEY","KEY","ITEM_KEY","KEY","KEY","KEY","KEY","ITEM_KEY","KEY","KEY","KEY","KEY","KEY","KEY","KEY","KEY","KEY","ITEM_KEY","GROUP_KEY","renderDefaultTree","KEY","KEY","KEY","KEY","ITEM_KEY","renderDefaultTree","KEY","renderDefaultTree","KEY","ITEM_KEY","renderDefaultTree","KEY","renderDefaultTree","KEY","KEY","KEY","KEY","KEY","KEY","KEY","ITEM_KEY","KEY","KEY","ITEM_KEY","renderDefaultTree","KEY","KEY","KEY","KEY","ITEM_KEY","renderDefaultTree","KEY","KEY","KEY","KEY","KEY","KEY","ITEM_KEY","KEY","COLUMN_KEY","KEY","renderDefaultTree","KEY","ITEM_KEY","KEY","KEY","KEY","KEY","KEY","ITEM_KEY","KEY","KEY","KEY","KEY","KEY","KEY","KEY","KEY","NODE_KEY","reportNodeFocus","KEY","KEY","KEY"],"sources":["../src/components/accordion/context.ts","../src/runtime/normalize-props.ts","../src/runtime/create-vue-runtime.ts","../src/runtime/use-machine.ts","../src/runtime/vue-id.ts","../src/components/accordion/use-accordion.ts","../src/components/accordion/accordion.ts","../src/components/affix/context.ts","../src/components/affix/use-affix.ts","../src/components/affix/affix.ts","../src/components/alert/context.ts","../src/components/alert/use-alert.ts","../src/components/alert/alert.ts","../src/components/anchor/context.ts","../src/components/anchor/use-anchor.ts","../src/components/anchor/anchor.ts","../src/components/avatar-group/context.ts","../src/components/avatar-group/avatar-group.ts","../src/components/avatar/context.ts","../src/components/avatar/use-avatar.ts","../src/components/avatar/avatar.ts","../src/components/back-top/context.ts","../src/components/back-top/use-back-top.ts","../src/components/back-top/back-top.ts","../src/components/badge/badge.ts","../src/components/breadcrumb/context.ts","../src/components/breadcrumb/use-breadcrumb.ts","../src/components/breadcrumb/breadcrumb.ts","../src/components/button.ts","../src/components/button-group/button-group.ts","../src/components/calendar/context.ts","../src/components/calendar/use-calendar.ts","../src/components/calendar/calendar.ts","../src/components/card/context.ts","../src/components/card/card.ts","../src/components/carousel/context.ts","../src/components/carousel/use-carousel.ts","../src/components/carousel/carousel.ts","../src/components/cascader/context.ts","../src/components/cascader/use-cascader.ts","../src/components/cascader/cascader.ts","../src/components/checkbox-group/context.ts","../src/components/checkbox-group/use-checkbox-group.ts","../src/components/checkbox-group/checkbox-group.ts","../src/components/checkbox/use-checkbox.ts","../src/components/checkbox/checkbox.ts","../src/components/clipboard/context.ts","../src/components/clipboard/use-clipboard.ts","../src/components/clipboard/clipboard.ts","../src/components/code-block/code-block.ts","../src/components/collapsible/context.ts","../src/components/collapsible/use-collapsible.ts","../src/components/collapsible/collapsible.ts","../src/components/color-picker/context.ts","../src/components/color-picker/use-color-picker.ts","../src/components/color-picker/color-picker.ts","../src/components/combobox/context.ts","../src/components/combobox/use-combobox.ts","../src/components/combobox/combobox.ts","../src/components/composer/context.ts","../src/components/composer/use-composer.ts","../src/components/composer/composer.ts","../src/components/context-menu/context.ts","../src/components/context-menu/use-context-menu.ts","../src/components/context-menu/context-menu.ts","../src/runtime/slot-content.ts","../src/components/countdown/countdown.ts","../src/components/date-field/context.ts","../src/components/date-field/use-date-field.ts","../src/components/date-field/date-field.ts","../src/components/date-picker/context.ts","../src/components/date-picker/use-date-picker.ts","../src/components/date-picker/date-picker.ts","../src/components/descriptions/context.ts","../src/components/descriptions/descriptions.ts","../src/components/dialog/context.ts","../src/components/dialog/use-dialog.ts","../src/components/dialog/dialog.ts","../src/components/drawer/context.ts","../src/components/drawer/use-drawer.ts","../src/components/drawer/drawer.ts","../src/components/dynamic-input/context.ts","../src/components/dynamic-input/use-dynamic-input.ts","../src/components/dynamic-input/dynamic-input.ts","../src/components/editable/context.ts","../src/components/editable/use-editable.ts","../src/components/editable/editable.ts","../src/components/ellipsis/use-ellipsis.ts","../src/components/ellipsis/ellipsis.ts","../src/components/empty-state/context.ts","../src/components/empty-state/use-empty-state.ts","../src/components/empty-state/empty-state.ts","../src/components/field/context.ts","../src/components/field/use-field.ts","../src/components/field/field.ts","../src/components/file-upload/context.ts","../src/components/file-upload/use-file-upload.ts","../src/components/file-upload/file-upload.ts","../src/components/flex/flex.ts","../src/components/float-button/context.ts","../src/components/float-button/use-float-button.ts","../src/components/float-button/float-button.ts","../src/components/form/context.ts","../src/components/form/use-form.ts","../src/components/form/form.ts","../src/components/gradient-text/gradient-text.ts","../src/components/grid/context.ts","../src/components/grid/grid.ts","../src/components/highlight/highlight.ts","../src/components/hover-card/context.ts","../src/components/hover-card/use-hover-card.ts","../src/components/hover-card/hover-card.ts","../src/components/icon-wrapper/icon-wrapper.ts","../src/components/icon/use-icon.ts","../src/components/icon/icon.ts","../src/components/image/context.ts","../src/components/image/use-image.ts","../src/components/image/image.ts","../src/components/infinite-scroll/context.ts","../src/components/infinite-scroll/use-infinite-scroll.ts","../src/components/infinite-scroll/infinite-scroll.ts","../src/components/layout/context.ts","../src/components/layout/use-layout.ts","../src/components/layout/layout.ts","../src/components/list/context.ts","../src/components/list/list.ts","../src/components/listbox/context.ts","../src/components/listbox/use-listbox.ts","../src/components/listbox/listbox.ts","../src/components/loading-bar/context.ts","../src/components/loading-bar/use-loading-bar.ts","../src/components/loading-bar/loading-bar.ts","../src/components/log/context.ts","../src/components/log/use-log.ts","../src/components/log/log.ts","../src/components/marquee/context.ts","../src/components/marquee/marquee.ts","../src/components/mention/context.ts","../src/components/mention/use-mention.ts","../src/components/mention/mention.ts","../src/components/menu/context.ts","../src/components/menu/use-menu.ts","../src/components/menu/menu.ts","../src/components/menubar/context.ts","../src/components/menubar/use-menubar.ts","../src/components/menubar/menubar.ts","../src/components/navigation-menu/context.ts","../src/components/navigation-menu/use-navigation-menu.ts","../src/components/navigation-menu/navigation-menu.ts","../src/components/number-animation/number-animation.ts","../src/components/number-field/context.ts","../src/components/number-field/use-number-field.ts","../src/components/number-field/number-field.ts","../src/components/page-header/context.ts","../src/components/page-header/page-header.ts","../src/components/pagination/context.ts","../src/components/pagination/use-pagination.ts","../src/components/pagination/pagination.ts","../src/components/pin-input/context.ts","../src/components/pin-input/use-pin-input.ts","../src/components/pin-input/pin-input.ts","../src/components/popconfirm/context.ts","../src/components/popconfirm/use-popconfirm.ts","../src/components/popconfirm/popconfirm.ts","../src/components/popover/context.ts","../src/components/popover/use-popover.ts","../src/components/popover/popover.ts","../src/components/popselect/context.ts","../src/components/popselect/use-popselect.ts","../src/components/popselect/popselect.ts","../src/components/progress/progress.ts","../src/components/qr-code/context.ts","../src/components/qr-code/qr-code.ts","../src/components/radio-group/context.ts","../src/components/radio-group/use-radio-group.ts","../src/components/radio-group/radio-group.ts","../src/components/rating/context.ts","../src/components/rating/use-rating.ts","../src/components/rating/rating.ts","../src/components/result/context.ts","../src/components/result/result.ts","../src/components/scroll-area/context.ts","../src/components/scroll-area/use-scroll-area.ts","../src/components/scroll-area/scroll-area.ts","../src/components/select/context.ts","../src/components/select/use-select.ts","../src/components/select/select.ts","../src/components/separator/separator.ts","../src/components/skeleton/context.ts","../src/components/skeleton/use-skeleton.ts","../src/components/skeleton/skeleton.ts","../src/components/slider/context.ts","../src/components/slider/use-slider.ts","../src/components/slider/slider.ts","../src/components/spinner/context.ts","../src/components/spinner/use-spinner.ts","../src/components/spinner/spinner.ts","../src/components/splitter/context.ts","../src/components/splitter/use-splitter.ts","../src/components/splitter/splitter.ts","../src/components/statistic/context.ts","../src/components/statistic/statistic.ts","../src/components/steps/context.ts","../src/components/steps/use-steps.ts","../src/components/steps/steps.ts","../src/components/switch/use-switch.ts","../src/components/switch/switch.ts","../src/components/table/context.ts","../src/components/table/use-table.ts","../src/components/table/table.ts","../src/components/tabs/context.ts","../src/components/tabs/use-tabs.ts","../src/components/tabs/tabs.ts","../src/components/tags-input/context.ts","../src/components/tags-input/use-tags-input.ts","../src/components/tags-input/tags-input.ts","../src/components/text-field/context.ts","../src/components/text-field/use-text-field.ts","../src/components/text-field/text-field.ts","../src/components/thread/context.ts","../src/components/thread/use-thread.ts","../src/components/thread/thread.ts","../src/components/time-field/context.ts","../src/components/time-field/use-time-field.ts","../src/components/time-field/time-field.ts","../src/components/time-picker/context.ts","../src/components/time-picker/use-time-picker.ts","../src/components/time-picker/time-picker.ts","../src/components/time/time.ts","../src/components/timeline/context.ts","../src/components/timeline/timeline.ts","../src/components/toast/context.ts","../src/components/toaster/context.ts","../src/components/toast/use-toast.ts","../src/components/toast/toast.ts","../src/components/toaster/use-toaster.ts","../src/components/toaster/toaster.ts","../src/components/toggle-group/context.ts","../src/components/toggle-group/use-toggle-group.ts","../src/components/toggle-group/toggle-group.ts","../src/components/toggle/use-toggle.ts","../src/components/toggle/toggle.ts","../src/components/toolbar/context.ts","../src/components/toolbar/use-toolbar.ts","../src/components/toolbar/toolbar.ts","../src/components/tooltip/context.ts","../src/components/tooltip/use-tooltip.ts","../src/components/tooltip/tooltip.ts","../src/components/tour/context.ts","../src/components/tour/use-tour.ts","../src/components/tour/tour.ts","../src/components/transfer/context.ts","../src/components/transfer/use-transfer.ts","../src/components/transfer/transfer.ts","../src/components/tree-select/context.ts","../src/components/tree-select/use-tree-select.ts","../src/components/tree-select/tree-select.ts","../src/components/tree/context.ts","../src/components/tree/use-tree.ts","../src/components/tree/tree.ts","../src/components/typography/context.ts","../src/components/typography/typography.ts","../src/components/virtualizer/use-virtualizer.ts","../src/components/virtualizer/context.ts","../src/components/virtualizer/virtualizer.ts","../src/components/watermark/context.ts","../src/components/watermark/watermark.ts"],"sourcesContent":["import type { AccordionItemProps } from '@xihan-ui/headless'\nimport type { InjectionKey } from 'vue'\nimport type { AccordionContext } from './use-accordion'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AccordionContext> = Symbol('xh-accordion')\n/** 条目身份下传给 header/trigger/content,用 getter 以跟随 value/disabled 变更。 */\nconst ITEM_KEY: InjectionKey<() => AccordionItemProps> = Symbol('xh-accordion-item')\n\nexport function provideAccordion(ctx: AccordionContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAccordionContext(): AccordionContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Accordion 部件必须用在 XhAccordionRoot 内')\n return ctx\n}\n\nexport function provideAccordionItem(item: () => AccordionItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useAccordionItem(): () => AccordionItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Accordion 条目部件必须用在 XhAccordionItem 内')\n return item\n}\n","import { createNormalizer } from '@xihan-ui/kernel'\n\n// 事件名归一为 on + 首字母大写 + 其余小写(onKeyDown → onKeydown),与 WC 适配器对齐\nfunction normalizeEventKey(key: string): string {\n if (key.length > 2 && key.startsWith('on') && key[2]! >= 'A' && key[2]! <= 'Z')\n return `on${key[2]}${key.slice(3).toLowerCase()}`\n return key\n}\n\n// 其余属性原样透传\nexport const vueNormalize = createNormalizer((props) => {\n const out: Record<string, unknown> = {}\n for (const key of Object.keys(props)) out[normalizeEventKey(key)] = props[key]\n return out\n})\n","import type { Bindable, CellParams, Dep, ReactiveRuntime } from '@xihan-ui/machine'\nimport { getCurrentInstance, nextTick, onBeforeUnmount, onMounted, shallowRef, triggerRef, watch } from 'vue'\n\n// 用 Vue 响应式实现 machine 的 ReactiveRuntime\nexport function createVueRuntime(): ReactiveRuntime {\n return {\n name: 'vue',\n isServer: typeof window === 'undefined',\n\n cell<V>(params: () => CellParams<V>): Bindable<V> {\n const p0 = params()\n const initial = (p0.defaultValue ?? p0.value) as V\n const eq = p0.isEqual ?? Object.is\n const inner = shallowRef<V>(initial)\n let lastSeen = initial\n let version = 0\n\n const isControlled = (): boolean => params().value !== undefined\n const read = (): V => (isControlled() ? (params().value as V) : inner.value)\n\n return {\n initial,\n get: read,\n set(next) {\n const prev = read()\n const value = typeof next === 'function' ? (next as (p: V) => V)(prev) : next\n if (!isControlled())\n inner.value = value\n if (!eq(value, prev))\n params().onChange?.(value, prev)\n },\n notify() {\n triggerRef(inner)\n },\n version() {\n const cur = read()\n if (!eq(cur, lastSeen)) {\n lastSeen = cur\n version += 1\n }\n return version\n },\n }\n },\n\n track(deps: Dep[], fn) {\n watch(deps, fn, { flush: 'pre' })\n },\n flush(fn) {\n // 先让出一次微任务,等这次转移把渲染排上队,再等那一轮渲染跑完才回调\n void nextTick(() => nextTick(fn))\n },\n onMount(fn) {\n if (getCurrentInstance())\n onMounted(fn)\n else\n fn()\n },\n onCleanup(fn) {\n if (getCurrentInstance())\n onBeforeUnmount(fn)\n },\n }\n}\n","import type { Scope } from '@xihan-ui/kernel'\nimport type { MachineConfig, MachineSchema, Service } from '@xihan-ui/machine'\nimport type { MaybeRefOrGetter } from 'vue'\nimport { createService } from '@xihan-ui/machine'\nimport { toValue } from 'vue'\nimport { createVueRuntime } from './create-vue-runtime'\n\nexport function useMachine<T extends MachineSchema>(\n machine: MachineConfig<T>,\n userProps: MaybeRefOrGetter<Partial<T['props']>> = {} as never,\n scope?: Scope,\n): Service<T> {\n return createService(machine, {\n // 每次展开成新对象,让 machine 的身份缓存失效\n props: () => ({ ...toValue(userProps) }) as never,\n runtime: createVueRuntime(),\n scope,\n })\n}\n","import type { IdGenerator } from '@xihan-ui/kernel'\nimport { useId } from 'vue'\n\nlet fallbackSeq = 0\n\n// 基于 Vue useId 生成 scope id,须在 setup 期调用\nexport function createVueIdGenerator(): IdGenerator {\n const base = useId() ?? `xh-f${++fallbackSeq}`\n return {\n scopeId: () => base,\n partId: (component, scopeId, part) => `${component}:${scopeId}:${part}`,\n }\n}\n","import type { AccordionApi, AccordionSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { accordionMachine, connectAccordion } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface AccordionContext {\n api: ComputedRef<AccordionApi>\n}\n\nexport function useAccordion(\n props: AccordionSchema['props'],\n onValueChange?: AccordionSchema['props']['onValueChange'],\n): AccordionContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(accordionMachine, () => ({ ...props, onValueChange }), scope)\n const api = computed(() => connectAccordion(service, vueNormalize))\n return { api }\n}\n","import type { AccordionNode, AccordionNodeMeta, AccordionSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideAccordion, provideAccordionItem, useAccordionContext, useAccordionItem } from './context'\nimport { useAccordion } from './use-accordion'\n\ntype AccordionProps = AccordionSchema['props']\n\nexport const XhAccordionRoot = defineComponent({\n name: 'XhAccordionRoot',\n props: {\n collection: { type: Array as PropType<AccordionNode[]>, default: undefined },\n value: { type: Array as PropType<string[]>, default: undefined },\n defaultValue: { type: Array as PropType<string[]>, default: undefined },\n multiple: Boolean,\n collapsible: Boolean,\n orientation: { type: String as PropType<Orientation>, default: undefined },\n // 只改水平轴上左右键的语义,不写进 DOM\n dir: { type: String as PropType<Direction>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸数组\n emits: {\n 'value-change': (_details: PayloadOf<AccordionProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<AccordionProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: AccordionProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useAccordion(props as AccordionProps, notify)\n provideAccordion(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default()\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.content)\n : [],\n )\n },\n})\n\nexport const XhAccordionItem = defineComponent({\n name: 'XhAccordionItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useAccordionContext()\n provideAccordionItem(() => ({ value: props.value, disabled: props.disabled }))\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n// 渲染为 h3,与 connect 给出的 aria-level 对齐\nexport const XhAccordionHeader = defineComponent({\n name: 'XhAccordionHeader',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('h3', ctx.api.value.getHeaderProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionTrigger = defineComponent({\n name: 'XhAccordionTrigger',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('button', ctx.api.value.getTriggerProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionContent = defineComponent({\n name: 'XhAccordionContent',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('div', ctx.api.value.getContentProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAccordionIndicator = defineComponent({\n name: 'XhAccordionIndicator',\n setup(_, { slots }) {\n const ctx = useAccordionContext()\n const item = useAccordionItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 正文默认取 node.content,写 content 插槽即由作者接管。\n */\nfunction renderDefaultTree(\n collection: readonly AccordionNodeMeta[],\n contentSlot?: (node: AccordionNodeMeta) => VNode[],\n): VNode[] {\n return collection.map(node => h(XhAccordionItem, { key: node.value, value: node.value }, () => [\n h(XhAccordionHeader, null, () => [\n h(XhAccordionTrigger, null, () => [\n h('span', null, node.label),\n h(XhAccordionIndicator),\n ]),\n ]),\n h(XhAccordionContent, null, () => contentSlot?.(node) ?? node.content ?? ''),\n ]))\n}\n","import type { InjectionKey } from 'vue'\nimport type { AffixContext } from './use-affix'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AffixContext> = Symbol('xh-affix')\n\nexport function provideAffix(ctx: AffixContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAffixContext(): AffixContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Affix 部件必须用在 XhAffixRoot 内')\n return ctx\n}\n","import type { AffixApi, AffixSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { affixMachine, connectAffix } from '@xihan-ui/headless'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface AffixContext {\n api: ComputedRef<AffixApi>\n service: Service<AffixSchema>\n /** 占位盒节点:判定线与占位尺寸都量它。 */\n rootRef: Ref<HTMLElement | null>\n}\n\n/** getTargetEl 返回滚动容器,null 即整页滚动;量测与监听都在机器的效应里跑,DOM 取值口经 refs 交进去。 */\nexport function useAffix(\n props: AffixSchema['props'],\n onAffixChange?: AffixSchema['props']['onAffixChange'],\n getTargetEl: () => HTMLElement | null = () => null,\n): AffixContext {\n const rootRef = ref<HTMLElement | null>(null)\n const service = useMachine(affixMachine, () => ({ ...props, onAffixChange }))\n\n service.refs.set('getRootEl', () => rootRef.value)\n service.refs.set('getTargetEl', getTargetEl)\n\n const api = computed(() => connectAffix(service, vueNormalize))\n return { api, service, rootRef }\n}\n","import type { AffixSchema } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideAffix, useAffixContext } from './context'\nimport { useAffix } from './use-affix'\n\ntype AffixProps = AffixSchema['props']\n\n/** 根节点是占位盒:content 吸住时脱流,它留在原位撑住那块空间。 */\nexport const XhAffixRoot = defineComponent({\n name: 'XhAffixRoot',\n // 缺省值由机器与 connect 决定,这里一律 default: undefined\n props: {\n offsetTop: { type: Number, default: undefined },\n offsetBottom: { type: Number, default: undefined },\n /** 滚动容器,缺省即整页滚动;经 refs 交给观察器。 */\n target: { type: Object as PropType<HTMLElement | null>, default: undefined },\n },\n emits: {\n 'affix-change': (_details: PayloadOf<AffixProps, 'onAffixChange'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: AffixProps['onAffixChange'] = details => emit('affix-change', details)\n // 传响应式 props 对象本身而非快照,供机器每次读时重新展开\n const ctx = useAffix(props as AffixProps, notify, () => props.target ?? null)\n provideAffix(ctx)\n return () => h('div', {\n ...ctx.api.value.getRootProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.rootRef.value = el as HTMLElement },\n }, slots.default?.({ affixed: ctx.api.value.affixed }))\n },\n})\n\n/** 吸住时脱离常规流钉在可视区边上,落位由机器量好写进内联样式。 */\nexport const XhAffixContent = defineComponent({\n name: 'XhAffixContent',\n setup(_, { slots }) {\n const ctx = useAffixContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { AlertContext } from './use-alert'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AlertContext> = Symbol('xh-alert')\n\nexport function provideAlert(ctx: AlertContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAlertContext(): AlertContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Alert 部件必须用在 XhAlertRoot 内')\n return ctx\n}\n","import type { AlertApi, AlertSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { alertMachine, connectAlert } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface AlertContext {\n api: ComputedRef<AlertApi>\n}\n\nexport function useAlert(\n props: AlertSchema['props'],\n onOpenChange?: AlertSchema['props']['onOpenChange'],\n): AlertContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(alertMachine, () => ({ ...props, onOpenChange }), scope)\n const api = computed(() => connectAlert(service, vueNormalize))\n return { api }\n}\n","import type { AlertSchema, AlertTranslations } from '@xihan-ui/headless'\nimport type { Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideAlert, useAlertContext } from './context'\nimport { useAlert } from './use-alert'\n\ntype AlertProps = AlertSchema['props']\n\nexport const XhAlertRoot = defineComponent({\n name: 'XhAlertRoot',\n props: {\n tone: String as PropType<Tone>,\n // 三态:不传即由 connect 决定缺省,传 false 才真的关掉\n closable: { type: Boolean, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: undefined },\n translations: Object as PropType<Partial<AlertTranslations>>,\n },\n // open-change 携带 { open },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<AlertProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<AlertProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: AlertProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useAlert(props as AlertProps, notify)\n provideAlert(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAlertIcon = defineComponent({\n name: 'XhAlertIcon',\n setup(_, { slots }) {\n const ctx = useAlertContext()\n return () => h('span', ctx.api.value.getIconProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAlertTitle = defineComponent({\n name: 'XhAlertTitle',\n setup(_, { slots }) {\n const ctx = useAlertContext()\n return () => h('div', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAlertDescription = defineComponent({\n name: 'XhAlertDescription',\n setup(_, { slots }) {\n const ctx = useAlertContext()\n return () => h('div', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAlertCloseTrigger = defineComponent({\n name: 'XhAlertCloseTrigger',\n setup(_, { slots }) {\n const ctx = useAlertContext()\n return () => h('button', ctx.api.value.getCloseTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { AnchorContext } from './use-anchor'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AnchorContext> = Symbol('xh-anchor')\n\nexport function provideAnchor(ctx: AnchorContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAnchorContext(): AnchorContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Anchor 部件必须用在 XhAnchorRoot 内')\n return ctx\n}\n","import type { AnchorApi, AnchorSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { anchorMachine, connectAnchor } from '@xihan-ui/headless'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface AnchorContext {\n api: ComputedRef<AnchorApi>\n service: Service<AnchorSchema>\n /** list 节点:链接集合的查询容器,同时是指示条量测的参照系。 */\n listRef: Ref<HTMLElement | null>\n}\n\n/** Anchor 不派生 part id,故不另建 scope;getScrollEl 返回判定线所依附的滚动容器,null 即挂在窗口上。 */\nexport function useAnchor(\n props: AnchorSchema['props'],\n onValueChange?: AnchorSchema['props']['onValueChange'],\n getScrollEl: () => HTMLElement | null = () => null,\n): AnchorContext {\n const listRef = ref<HTMLElement | null>(null)\n const service = useMachine(anchorMachine, () => ({ ...props, onValueChange }))\n\n // 观察器与量测都在机器的 effect 里跑,DOM 侧的取值口经 refs 交进去\n service.refs.set('getListEl', () => listRef.value)\n service.refs.set('getScrollEl', getScrollEl)\n\n const api = computed(() => connectAnchor(service, vueNormalize))\n return { api, service, listRef }\n}\n","import type { AnchorSchema, AnchorTranslations } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideAnchor, useAnchorContext } from './context'\nimport { useAnchor } from './use-anchor'\n\ntype AnchorProps = AnchorSchema['props']\n\n/** 根节点渲染为 nav 地标 */\nexport const XhAnchorRoot = defineComponent({\n name: 'XhAnchorRoot',\n // 缺省值由机器与 connect 决定,这里一律 default: undefined\n props: {\n value: { type: String as PropType<string | null>, default: undefined },\n defaultValue: { type: String as PropType<string | null>, default: undefined },\n targets: { type: Array as PropType<readonly string[]>, default: undefined },\n offset: { type: Number, default: undefined },\n smooth: { type: Boolean, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n translations: { type: Object as PropType<Partial<AnchorTranslations>>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n /** 判定线所依附的滚动容器,缺省挂在窗口上;经 refs 交给观察器。 */\n scrollElement: { type: Object as PropType<HTMLElement | null>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<AnchorProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<AnchorProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: AnchorProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n // 传响应式 props 对象本身而非快照,供机器每次读时重新展开\n const ctx = useAnchor(props as AnchorProps, notify, () => props.scrollElement ?? null)\n provideAnchor(ctx)\n return () => h('nav', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 用 ul 而非 div:目录是一组并列的去处,读屏会念\"列表,共 n 项\";不用 ol,目录没有层级顺序语义。\nexport const XhAnchorList = defineComponent({\n name: 'XhAnchorList',\n setup(_, { slots }) {\n const ctx = useAnchorContext()\n return () => h('ul', {\n ...ctx.api.value.getListProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.listRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhAnchorItem = defineComponent({\n name: 'XhAnchorItem',\n setup(_, { slots }) {\n const ctx = useAnchorContext()\n return () => h('li', ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** href 由 value 派生为 `#id`;smooth 关闭时退化为原生片段跳转 */\nexport const XhAnchorLink = defineComponent({\n name: 'XhAnchorLink',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useAnchorContext()\n return () => h(\n 'a',\n ctx.api.value.getLinkProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/** 指示条容器,位置由机器算好写入内联样式;渲染为 li 以 list 为定位参照系 */\nexport const XhAnchorIndicator = defineComponent({\n name: 'XhAnchorIndicator',\n setup() {\n const ctx = useAnchorContext()\n return () => h('li', ctx.api.value.getIndicatorProps() as Record<string, unknown>)\n },\n})\n","import type { AvatarGroupApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface AvatarGroupContext {\n api: ComputedRef<AvatarGroupApi>\n}\n\nconst KEY: InjectionKey<AvatarGroupContext> = Symbol('xh-avatar-group')\n\nexport function provideAvatarGroup(ctx: AvatarGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarGroupContext(): AvatarGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] AvatarGroup 部件必须用在 XhAvatarGroupRoot 内')\n return ctx\n}\n","import type { AvatarGroupProps } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectAvatarGroup } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideAvatarGroup, useAvatarGroupContext } from './context'\n\nexport const XhAvatarGroupRoot = defineComponent({\n name: 'XhAvatarGroupRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n max: { type: Number, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectAvatarGroup(props as AvatarGroupProps, vueNormalize))\n provideAvatarGroup({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAvatarGroupOverflow = defineComponent({\n name: 'XhAvatarGroupOverflow',\n setup(_, { slots }) {\n const ctx = useAvatarGroupContext()\n // 「+N」的文本由作者写进插槽\n return () => h('span', ctx.api.value.getOverflowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { AvatarContext } from './use-avatar'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<AvatarContext> = Symbol('xh-avatar')\n\nexport function provideAvatar(ctx: AvatarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useAvatarContext(): AvatarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Avatar 部件必须用在 XhAvatarRoot 内')\n return ctx\n}\n","import type { AvatarApi, AvatarSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { avatarMachine, connectAvatar } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface AvatarContext {\n service: Service<AvatarSchema>\n api: ComputedRef<AvatarApi>\n}\n\nexport function useAvatar(\n props: AvatarSchema['props'],\n onStatusChange?: AvatarSchema['props']['onStatusChange'],\n): AvatarContext {\n const service = useMachine(avatarMachine, () => ({ ...props, onStatusChange }))\n const api = computed(() => connectAvatar(service, vueNormalize))\n return { service, api }\n}\n","import type { AvatarSchema } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, ref, watch } from 'vue'\nimport { provideAvatar, useAvatarContext } from './context'\nimport { useAvatar } from './use-avatar'\n\ntype AvatarProps = AvatarSchema['props']\n\nexport const XhAvatarRoot = defineComponent({\n name: 'XhAvatarRoot',\n props: {\n // 缺席即无来源,落回退态\n src: { type: String, default: undefined },\n alt: { type: String, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // status-change 携带 { status }\n emits: {\n 'status-change': (_details: PayloadOf<AvatarProps, 'onStatusChange'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: AvatarProps['onStatusChange'] = details => emit('status-change', details)\n const ctx = useAvatar(props as AvatarProps, notify)\n provideAvatar(ctx)\n return () => h('span', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhAvatarImage = defineComponent({\n name: 'XhAvatarImage',\n setup() {\n const ctx = useAvatarContext()\n const imageEl = ref<HTMLImageElement | null>(null)\n\n // 进入 loading 时为已就绪的图(如注水前就加载完的 SSR 图)补报一次加载完成\n watch(() => ctx.api.value.status, (status) => {\n const { service } = ctx\n if (status !== 'loading' || service.getStatus() !== 'Started')\n return\n const img = imageEl.value\n if (img?.complete && img.naturalWidth > 0 && img.currentSrc === img.src)\n service.send({ type: 'IMAGE.LOAD' })\n }, { immediate: true, flush: 'post' })\n\n // 节点常挂,靠 hidden 显隐\n return () => h('img', {\n ...ctx.api.value.getImageProps() as Record<string, unknown>,\n ref: imageEl,\n })\n },\n})\n\nexport const XhAvatarFallback = defineComponent({\n name: 'XhAvatarFallback',\n setup(_, { slots }) {\n const ctx = useAvatarContext()\n // 节点常挂,靠 hidden 显隐\n return () => h('span', ctx.api.value.getFallbackProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { BackTopContext } from './use-back-top'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<BackTopContext> = Symbol('xh-back-top')\n\nexport function provideBackTop(ctx: BackTopContext): void {\n provide(KEY, ctx)\n}\n\nexport function useBackTopContext(): BackTopContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] BackTop 部件必须用在 XhBackTopRoot 内')\n return ctx\n}\n","import type { BackTopApi, BackTopSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { backTopMachine, connectBackTop } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface BackTopContext {\n api: ComputedRef<BackTopApi>\n service: Service<BackTopSchema>\n}\n\n/** getTargetEl 返回滚动容器,null 即整页滚动;滚动量的观察在机器的效应里跑。 */\nexport function useBackTop(\n props: BackTopSchema['props'],\n onVisibleChange?: BackTopSchema['props']['onVisibleChange'],\n getTargetEl: () => HTMLElement | null = () => null,\n): BackTopContext {\n const service = useMachine(backTopMachine, () => ({ ...props, onVisibleChange }))\n\n service.refs.set('getTargetEl', getTargetEl)\n\n const api = computed(() => connectBackTop(service, vueNormalize))\n return { api, service }\n}\n","import type { BackTopBehavior, BackTopSchema, BackTopTranslations } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideBackTop, useBackTopContext } from './context'\nimport { useBackTop } from './use-back-top'\n\ntype BackTopProps = BackTopSchema['props']\n\n/** 根节点是定位壳:把按钮钉在视口一角,收起时整块让位。 */\nexport const XhBackTopRoot = defineComponent({\n name: 'XhBackTopRoot',\n // 缺省值由机器与 connect 决定,这里一律 default: undefined\n props: {\n visibilityHeight: { type: Number, default: undefined },\n behavior: { type: String as PropType<BackTopBehavior>, default: undefined },\n translations: { type: Object as PropType<Partial<BackTopTranslations>>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n /** 滚动容器,缺省即整页滚动;经 refs 交给观察器。 */\n target: { type: Object as PropType<HTMLElement | null>, default: undefined },\n },\n emits: {\n 'visible-change': (_details: PayloadOf<BackTopProps, 'onVisibleChange'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: BackTopProps['onVisibleChange'] = details => emit('visible-change', details)\n // 传响应式 props 对象本身而非快照,供机器每次读时重新展开\n const ctx = useBackTop(props as BackTopProps, notify, () => props.target ?? null)\n provideBackTop(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n visible: ctx.api.value.visible,\n }))\n },\n})\n\n/** 原生 button:Enter / Space 的激活与 Tab 停靠都由平台提供。 */\nexport const XhBackTopTrigger = defineComponent({\n name: 'XhBackTopTrigger',\n setup(_, { slots }) {\n const ctx = useBackTopContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { BadgeProps, BadgeVariant } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectBadge } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhBadge = defineComponent({\n name: 'XhBadge',\n props: {\n variant: String as PropType<BadgeVariant>,\n tone: String as PropType<Tone>,\n size: String as PropType<Size>,\n },\n setup(props, { slots }) {\n return () => h('span', connectBadge(props as BadgeProps, vueNormalize).getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { BreadcrumbContext } from './use-breadcrumb'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<BreadcrumbContext> = Symbol('xh-breadcrumb')\n\nexport function provideBreadcrumb(ctx: BreadcrumbContext): void {\n provide(KEY, ctx)\n}\n\nexport function useBreadcrumbContext(): BreadcrumbContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Breadcrumb 部件必须用在 XhBreadcrumbRoot 内')\n return ctx\n}\n","import type { BreadcrumbApi, BreadcrumbProps } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectBreadcrumb } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport interface BreadcrumbContext {\n api: ComputedRef<BreadcrumbApi>\n}\n\n// Breadcrumb 无状态机也不派生 part id,props 变了由 computed 重算属性\nexport function useBreadcrumb(props: BreadcrumbProps): BreadcrumbContext {\n const api = computed(() => connectBreadcrumb(props, vueNormalize))\n return { api }\n}\n","import type { BreadcrumbProps, BreadcrumbTranslations } from '@xihan-ui/headless'\nimport type { Direction, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { provideBreadcrumb, useBreadcrumbContext } from './context'\nimport { useBreadcrumb } from './use-breadcrumb'\n\n/** 根节点渲染为 nav 地标 */\nexport const XhBreadcrumbRoot = defineComponent({\n name: 'XhBreadcrumbRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n dir: { type: String as PropType<Direction>, default: undefined },\n translations: { type: Object as PropType<Partial<BreadcrumbTranslations>>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useBreadcrumb(props as BreadcrumbProps)\n provideBreadcrumb(ctx)\n return () => h('nav', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 渲染为 ol,把层级路径表达成有序列表\nexport const XhBreadcrumbList = defineComponent({\n name: 'XhBreadcrumbList',\n setup(_, { slots }) {\n const ctx = useBreadcrumbContext()\n return () => h('ol', ctx.api.value.getListProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhBreadcrumbItem = defineComponent({\n name: 'XhBreadcrumbItem',\n setup(_, { slots }) {\n const ctx = useBreadcrumbContext()\n return () => h('li', ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** href 由作者写,这里只补当前页标记与点击守卫;当前页同样渲染为 `<a>`。 */\nexport const XhBreadcrumbLink = defineComponent({\n name: 'XhBreadcrumbLink',\n props: {\n current: Boolean,\n },\n setup(props, { slots }) {\n const ctx = useBreadcrumbContext()\n return () => h(\n 'a',\n ctx.api.value.getLinkProps({ current: props.current }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n// 分隔符与省略号同为 ol 的直接子节点,渲染为 li 并对读屏隐藏\nexport const XhBreadcrumbSeparator = defineComponent({\n name: 'XhBreadcrumbSeparator',\n setup(_, { slots }) {\n const ctx = useBreadcrumbContext()\n return () => h('li', ctx.api.value.getSeparatorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhBreadcrumbEllipsis = defineComponent({\n name: 'XhBreadcrumbEllipsis',\n setup(_, { slots }) {\n const ctx = useBreadcrumbContext()\n return () => h('li', ctx.api.value.getEllipsisProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { ButtonProps } from '@xihan-ui/headless'\nimport type { PropTypes } from '@xihan-ui/kernel'\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport { connectButton } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, inject, provide } from 'vue'\nimport { vueNormalize } from '../runtime/normalize-props'\n\n/** 从实际调用推出 api 形状,免得再写一遍 normalize 的类型参数。 */\ntype VueButtonApi = ReturnType<typeof connectButton<PropTypes>>\n\nconst ButtonKey: InjectionKey<Ref<VueButtonApi>> = Symbol('XhButton')\n\nfunction useButtonApi(): Ref<VueButtonApi> {\n const api = inject(ButtonKey, null)\n if (!api)\n throw new Error('[xh] XhButton 的子部件必须放在 XhButton 里')\n return api\n}\n\nexport const XhButton = defineComponent({\n name: 'XhButton',\n props: {\n type: { type: String as PropType<'button' | 'submit' | 'reset'>, default: 'button' },\n disabled: Boolean,\n loading: Boolean,\n variant: String,\n tone: String,\n size: String,\n },\n setup(props, { slots }) {\n const api = computed(() => connectButton(props as ButtonProps, vueNormalize))\n provide(ButtonKey, api)\n return () => h('button', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhButtonLabel = defineComponent({\n name: 'XhButtonLabel',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhButtonPrefix = defineComponent({\n name: 'XhButtonPrefix',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getPrefixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhButtonSuffix = defineComponent({\n name: 'XhButtonSuffix',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getSuffixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 载入态的转圈标记;皮肤给它挂了旋转动画,作者只需摆位置。 */\nexport const XhButtonIndicator = defineComponent({\n name: 'XhButtonIndicator',\n setup(_, { slots }) {\n const api = useButtonApi()\n return () => h('span', api.value.getIndicatorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { ButtonGroupProps } from '@xihan-ui/headless'\nimport type { ActionVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectButtonGroup } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhButtonGroup = defineComponent({\n name: 'XhButtonGroup',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: undefined },\n variant: { type: String as PropType<ActionVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n // 组内每一段是作者放进插槽的按钮,直接当直接子节点摆\n return () => h(\n 'div',\n connectButtonGroup(props as ButtonGroupProps, vueNormalize).getRootProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n","import type { CalendarCellProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { CalendarContext } from './use-calendar'\nimport { inject, provide } from 'vue'\n\n/** 格子自报的那一天,供 cell-trigger 复用同一份声明(作者只写一次 value)。 */\nexport interface CalendarCellContext {\n cell: ComputedRef<CalendarCellProps>\n}\n\nconst KEY: InjectionKey<CalendarContext> = Symbol('xh-calendar')\nconst CELL_KEY: InjectionKey<CalendarCellContext> = Symbol('xh-calendar-cell')\n\nexport function provideCalendar(ctx: CalendarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useCalendarContext(): CalendarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Calendar 部件必须用在 XhCalendarRoot 内')\n return ctx\n}\n\nexport function provideCalendarCell(ctx: CalendarCellContext): void {\n provide(CELL_KEY, ctx)\n}\n\nexport function useCalendarCellContext(): CalendarCellContext {\n const ctx = inject(CELL_KEY, null)\n if (!ctx)\n throw new Error('[xh] Calendar 日期触发器必须用在 XhCalendarCell 内')\n return ctx\n}\n","import type { CalendarApi, CalendarSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { calendarMachine, connectCalendar } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface CalendarContext {\n api: ComputedRef<CalendarApi>\n /** 机器实例,供部件上报 DOM 侧的事实。 */\n service: Service<CalendarSchema>\n gridRef: Ref<HTMLElement | null>\n}\n\nexport function useCalendar(\n props: CalendarSchema['props'],\n onValueChange?: CalendarSchema['props']['onValueChange'],\n onFocusedValueChange?: CalendarSchema['props']['onFocusedValueChange'],\n): CalendarContext {\n const gridRef = ref<HTMLElement | null>(null)\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(calendarMachine, () => ({ ...props, onValueChange, onFocusedValueChange }), scope)\n\n // 跨月后的焦点落点要等重渲,机器推迟一拍再从这里取网格现查\n service.refs.set('getGridEl', () => gridRef.value)\n\n const api = computed(() => connectCalendar(service, vueNormalize))\n return { api, service, gridRef }\n}\n","import type { CalendarCellProps, CalendarSchema, CalendarSelectionMode, CalendarWeekdayFormat } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h } from 'vue'\nimport { provideCalendar, provideCalendarCell, useCalendarCellContext, useCalendarContext } from './context'\nimport { useCalendar } from './use-calendar'\n\ntype CalendarProps = CalendarSchema['props']\n\nexport const XhCalendarRoot = defineComponent({\n name: 'XhCalendarRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n value: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n selectionMode: { type: String as PropType<CalendarSelectionMode>, default: undefined },\n focusedValue: { type: String, default: undefined },\n defaultFocusedValue: { type: String, default: undefined },\n min: { type: String, default: undefined },\n max: { type: String, default: undefined },\n isDateUnavailable: { type: Function as PropType<(value: string) => boolean>, default: undefined },\n locale: { type: String, default: undefined },\n timeZone: { type: String, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n weekdayFormat: { type: String as PropType<CalendarWeekdayFormat>, default: undefined },\n fixedWeeks: Boolean,\n },\n // *-change 携带 details 对象,update:* 携带裸值;选中值恒为数组,单选时长度 ≤ 1\n emits: {\n 'value-change': (_details: PayloadOf<CalendarProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<CalendarProps, 'onValueChange'>['value']) => true,\n 'focused-value-change': (_details: PayloadOf<CalendarProps, 'onFocusedValueChange'>) => true,\n 'update:focusedValue': (_focusedValue: PayloadOf<CalendarProps, 'onFocusedValueChange'>['focusedValue']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: CalendarProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyFocus: CalendarProps['onFocusedValueChange'] = (details) => {\n emit('focused-value-change', details)\n emit('update:focusedValue', details.focusedValue)\n }\n const ctx = useCalendar(props as CalendarProps, notifyValue, notifyFocus)\n provideCalendar(ctx)\n // 网格与表头由作者照插槽里的 weeks / weekDays 自行渲染\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n focusedValue: ctx.api.value.focusedValue,\n visibleMonth: ctx.api.value.visibleMonth,\n weeks: ctx.api.value.weeks,\n weekDays: ctx.api.value.weekDays,\n headingLabel: ctx.api.value.headingLabel,\n canGoPrev: ctx.api.value.canGoPrev,\n canGoNext: ctx.api.value.canGoNext,\n isSelected: ctx.api.value.isSelected,\n isUnavailable: ctx.api.value.isUnavailable,\n setValue: ctx.api.value.setValue,\n select: ctx.api.value.select,\n focus: ctx.api.value.focus,\n goToPrevMonth: ctx.api.value.goToPrevMonth,\n goToNextMonth: ctx.api.value.goToNextMonth,\n }))\n },\n})\n\nexport const XhCalendarHeader = defineComponent({\n name: 'XhCalendarHeader',\n setup(_, { slots }) {\n const ctx = useCalendarContext()\n return () => h('div', ctx.api.value.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCalendarPrevTrigger = defineComponent({\n name: 'XhCalendarPrevTrigger',\n setup(_, { slots }) {\n const ctx = useCalendarContext()\n return () => h('button', ctx.api.value.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCalendarNextTrigger = defineComponent({\n name: 'XhCalendarNextTrigger',\n setup(_, { slots }) {\n const ctx = useCalendarContext()\n return () => h('button', ctx.api.value.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCalendarHeading = defineComponent({\n name: 'XhCalendarHeading',\n setup(_, { slots }) {\n const ctx = useCalendarContext()\n // 有插槽用插槽,否则渲染 headingLabel\n return () => h(\n 'div',\n ctx.api.value.getHeadingProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.headingLabel,\n )\n },\n})\n\nexport const XhCalendarGrid = defineComponent({\n name: 'XhCalendarGrid',\n setup(_, { slots }) {\n const ctx = useCalendarContext()\n return () => h(\n 'div',\n { ...ctx.api.value.getGridProps() as Record<string, unknown>, ref: ctx.gridRef },\n slots.default?.(),\n )\n },\n})\n\nexport const XhCalendarGridHead = defineComponent({\n name: 'XhCalendarGridHead',\n setup(_, { slots }) {\n const ctx = useCalendarContext()\n return () => h('div', ctx.api.value.getGridHeadProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCalendarGridBody = defineComponent({\n name: 'XhCalendarGridBody',\n setup(_, { slots }) {\n const ctx = useCalendarContext()\n return () => h('div', ctx.api.value.getGridBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 表头行与日期行共用同一个 role=row\nexport const XhCalendarWeekRow = defineComponent({\n name: 'XhCalendarWeekRow',\n setup(_, { slots }) {\n const ctx = useCalendarContext()\n return () => h('div', ctx.api.value.getWeekRowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCalendarWeekDay = defineComponent({\n name: 'XhCalendarWeekDay',\n props: {\n // 列序 0-6,兼收字符串\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useCalendarContext()\n const index = computed(() => Number(props.value))\n return () => h(\n 'span',\n ctx.api.value.getWeekDayProps({ value: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.weekDays[index.value]?.label,\n )\n },\n})\n\nexport const XhCalendarCell = defineComponent({\n name: 'XhCalendarCell',\n props: {\n /** ISO 日期串。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useCalendarContext()\n const cell = computed<CalendarCellProps>(() => ({ value: props.value }))\n provideCalendarCell({ cell })\n // 不上报格子卸载,翻月后由机器按聚焦日重新落点\n return () => h('div', ctx.api.value.getCellProps(cell.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCalendarCellTrigger = defineComponent({\n name: 'XhCalendarCellTrigger',\n setup(_, { slots }) {\n const ctx = useCalendarContext()\n const { cell } = useCalendarCellContext()\n return () => h('div', ctx.api.value.getCellTriggerProps(cell.value) as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { CardApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface CardContext {\n api: ComputedRef<CardApi>\n}\n\nconst KEY: InjectionKey<CardContext> = Symbol('xh-card')\n\nexport function provideCard(ctx: CardContext): void {\n provide(KEY, ctx)\n}\n\nexport function useCardContext(): CardContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Card 部件必须用在 XhCardRoot 内')\n return ctx\n}\n","import type { CardProps, CardVariant } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectCard } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideCard, useCardContext } from './context'\n\nexport const XhCardRoot = defineComponent({\n name: 'XhCardRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n variant: { type: String as PropType<CardVariant>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n hoverable: Boolean,\n segmented: Boolean,\n },\n setup(props, { slots }) {\n const api = computed(() => connectCard(props as CardProps, vueNormalize))\n provideCard({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCardCover = defineComponent({\n name: 'XhCardCover',\n setup(_, { slots }) {\n const ctx = useCardContext()\n return () => h('div', ctx.api.value.getCoverProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCardHeader = defineComponent({\n name: 'XhCardHeader',\n setup(_, { slots }) {\n const ctx = useCardContext()\n return () => h('div', ctx.api.value.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCardTitle = defineComponent({\n name: 'XhCardTitle',\n setup(_, { slots }) {\n const ctx = useCardContext()\n return () => h('div', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCardDescription = defineComponent({\n name: 'XhCardDescription',\n setup(_, { slots }) {\n const ctx = useCardContext()\n return () => h('div', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCardBody = defineComponent({\n name: 'XhCardBody',\n setup(_, { slots }) {\n const ctx = useCardContext()\n return () => h('div', ctx.api.value.getBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCardFooter = defineComponent({\n name: 'XhCardFooter',\n setup(_, { slots }) {\n const ctx = useCardContext()\n return () => h('div', ctx.api.value.getFooterProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { CarouselContext } from './use-carousel'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<CarouselContext> = Symbol('xh-carousel')\n\nexport function provideCarousel(ctx: CarouselContext): void {\n provide(KEY, ctx)\n}\n\nexport function useCarouselContext(): CarouselContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Carousel 部件必须用在 XhCarouselRoot 内')\n return ctx\n}\n","import type { CarouselApi, CarouselSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { carouselMachine, connectCarousel } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface CarouselContext {\n api: ComputedRef<CarouselApi>\n}\n\nexport function useCarousel(\n props: CarouselSchema['props'],\n onPageChange?: CarouselSchema['props']['onPageChange'],\n): CarouselContext {\n const service = useMachine(carouselMachine, () => ({ ...props, onPageChange }))\n const api = computed(() => connectCarousel(service, vueNormalize))\n return { api }\n}\n","import type { CarouselSchema, CarouselTranslations } from '@xihan-ui/headless'\nimport type { Direction, Orientation } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideCarousel, useCarouselContext } from './context'\nimport { useCarousel } from './use-carousel'\n\ntype CarouselProps = CarouselSchema['props']\n\nexport const XhCarouselRoot = defineComponent({\n name: 'XhCarouselRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n page: { type: Number, default: undefined },\n defaultPage: { type: Number, default: undefined },\n slideCount: { type: Number, default: undefined },\n slidesPerPage: { type: Number, default: undefined },\n slidesPerMove: { type: Number, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n loop: { type: Boolean, default: undefined },\n // 布尔或毫秒:true 用默认间隔,数值即间隔\n autoplay: { type: [Boolean, Number] as PropType<boolean | number>, default: undefined },\n allowPointerDrag: { type: Boolean, default: undefined },\n spacing: { type: String, default: undefined },\n translations: { type: Object as PropType<Partial<CarouselTranslations>>, default: undefined },\n },\n // page-change 携带 { page },update:page 携带裸页码\n emits: {\n 'page-change': (_details: PayloadOf<CarouselProps, 'onPageChange'>) => true,\n 'update:page': (_page: PayloadOf<CarouselProps, 'onPageChange'>['page']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: CarouselProps['onPageChange'] = (details) => {\n emit('page-change', details)\n emit('update:page', details.page)\n }\n const ctx = useCarousel(props as CarouselProps, notify)\n provideCarousel(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n page: ctx.api.value.page,\n totalPages: ctx.api.value.totalPages,\n slideCount: ctx.api.value.slideCount,\n slideRange: ctx.api.value.slideRange,\n pageSnapPoints: ctx.api.value.pageSnapPoints,\n canScrollPrev: ctx.api.value.canScrollPrev,\n canScrollNext: ctx.api.value.canScrollNext,\n autoplaying: ctx.api.value.autoplaying,\n paused: ctx.api.value.paused,\n dragging: ctx.api.value.dragging,\n isInView: ctx.api.value.isInView,\n setPage: ctx.api.value.setPage,\n goToPrev: ctx.api.value.goToPrev,\n goToNext: ctx.api.value.goToNext,\n play: ctx.api.value.play,\n pause: ctx.api.value.pause,\n resume: ctx.api.value.resume,\n }))\n },\n})\n\nexport const XhCarouselViewport = defineComponent({\n name: 'XhCarouselViewport',\n setup(_, { slots }) {\n const ctx = useCarouselContext()\n return () => h('div', ctx.api.value.getViewportProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCarouselItemGroup = defineComponent({\n name: 'XhCarouselItemGroup',\n setup(_, { slots }) {\n const ctx = useCarouselContext()\n return () => h('div', ctx.api.value.getItemGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCarouselItem = defineComponent({\n name: 'XhCarouselItem',\n props: {\n // 下标由作者声明,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useCarouselContext()\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ index: Number(props.index) }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhCarouselPrevTrigger = defineComponent({\n name: 'XhCarouselPrevTrigger',\n setup(_, { slots }) {\n const ctx = useCarouselContext()\n return () => h('button', ctx.api.value.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCarouselNextTrigger = defineComponent({\n name: 'XhCarouselNextTrigger',\n setup(_, { slots }) {\n const ctx = useCarouselContext()\n return () => h('button', ctx.api.value.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCarouselIndicatorGroup = defineComponent({\n name: 'XhCarouselIndicatorGroup',\n setup(_, { slots }) {\n const ctx = useCarouselContext()\n return () => h('div', ctx.api.value.getIndicatorGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCarouselIndicator = defineComponent({\n name: 'XhCarouselIndicator',\n props: {\n // 指示点对应的页码,0 基;兼收字符串\n index: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useCarouselContext()\n return () => h(\n 'button',\n ctx.api.value.getIndicatorProps({ index: Number(props.index) }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n","import type { CascaderItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { CascaderContext } from './use-cascader'\nimport { inject, provide } from 'vue'\n\n/** 条目自报的值,供 item-text / item-indicator 复用同一份声明;所在列、路径、禁用与标签回 collection 里查。 */\nexport interface CascaderItemContext {\n item: ComputedRef<CascaderItemProps>\n}\n\nconst KEY: InjectionKey<CascaderContext> = Symbol('xh-cascader')\nconst ITEM_KEY: InjectionKey<CascaderItemContext> = Symbol('xh-cascader-item')\n\nexport function provideCascader(ctx: CascaderContext): void {\n provide(KEY, ctx)\n}\n\nexport function useCascaderContext(): CascaderContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Cascader 部件必须用在 XhCascaderRoot 内')\n return ctx\n}\n\nexport function provideCascaderItem(ctx: CascaderItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useCascaderItemContext(): CascaderItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Cascader 条目子部件必须用在 XhCascaderItem 内')\n return ctx\n}\n","import type { CascaderApi, CascaderSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { cascaderMachine, connectCascader } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface CascaderContext {\n /** 机器实例,供部件上报 DOM 侧的事实(如条目卸载带走了焦点)。 */\n service: Service<CascaderSchema>\n api: ComputedRef<CascaderApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useCascader(\n props: CascaderSchema['props'],\n handlers: Pick<CascaderSchema['props'], 'onValueChange' | 'onOpenChange'> = {},\n): CascaderContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(cascaderMachine, () => ({ ...props, ...handlers }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // trigger 记为本层分支,点它算层内交互\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取 trigger\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectCascader(service, vueNormalize))\n return { service, api, triggerRef, positionerRef, contentRef }\n}\n","import type {\n CascaderExpandTrigger,\n CascaderItemProps,\n CascaderNode,\n CascaderSchema,\n CascaderValue,\n} from '@xihan-ui/headless'\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, Ref } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { CascaderContext } from './use-cascader'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideCascader, provideCascaderItem, useCascaderContext, useCascaderItemContext } from './context'\nimport { useCascader } from './use-cascader'\n\ntype CascaderProps = CascaderSchema['props']\n\n/** 本条目持有焦点时,value 变更重报焦点条目,卸载时上报焦点丢失 */\nfunction reportItemFocus(\n ctx: CascaderContext,\n el: Ref<HTMLElement | null>,\n value: () => string,\n): void {\n watch(value, (next, prev) => {\n if (next === prev)\n return\n const { service, api } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (!el.value || service.scope.getActiveElement() !== el.value)\n return\n // 层号回 collection 里查,条目只自报值\n const meta = api.value.levels.flatMap(level => level.items).find(item => item.value === next)\n if (meta)\n service.send({ type: 'ITEM.FOCUS', level: meta.level, value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本条目当下正持有焦点」判定,不按 value 比对\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'ITEM.LOST' })\n })\n}\n\nexport const XhCascaderRoot = defineComponent({\n name: 'XhCascaderRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n collection: { type: Array as PropType<CascaderNode[]>, default: undefined },\n value: { type: Array as PropType<CascaderValue>, default: undefined },\n defaultValue: { type: Array as PropType<CascaderValue>, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n expandTrigger: { type: String as PropType<CascaderExpandTrigger>, default: undefined },\n changeOnSelect: Boolean,\n multiple: Boolean,\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n placeholder: { type: String, default: undefined },\n separator: { type: String, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值;选中值恒为路径数组,单选时长度 ≤ 1\n emits: {\n 'value-change': (_details: PayloadOf<CascaderProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<CascaderProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<CascaderProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<CascaderProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: CascaderProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: CascaderProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useCascader(props as CascaderProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n })\n provideCascader(ctx)\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n // levels 每层一列、层内节点各一条目,供作者渲染;columns 只读当前展开的列\n levels: ctx.api.value.levels,\n columns: ctx.api.value.columns,\n value: ctx.api.value.value,\n valuePath: ctx.api.value.valuePath,\n activePath: ctx.api.value.activePath,\n focusedPath: ctx.api.value.focusedPath,\n displayText: ctx.api.value.displayText,\n canClear: ctx.api.value.canClear,\n isSelected: ctx.api.value.isSelected,\n isActive: ctx.api.value.isActive,\n isVisible: ctx.api.value.isVisible,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n setActivePath: ctx.api.value.setActivePath,\n select: ctx.api.value.select,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhCascaderLabel = defineComponent({\n name: 'XhCascaderLabel',\n setup(_, { slots }) {\n const ctx = useCascaderContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCascaderTrigger = defineComponent({\n name: 'XhCascaderTrigger',\n setup(_, { slots }) {\n const ctx = useCascaderContext()\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhCascaderValueText = defineComponent({\n name: 'XhCascaderValueText',\n setup(_, { slots }) {\n const ctx = useCascaderContext()\n // 有插槽用插槽,否则显示整条路径或 placeholder\n return () => h(\n 'span',\n ctx.api.value.getValueTextProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.displayText,\n )\n },\n})\n\nexport const XhCascaderIndicator = defineComponent({\n name: 'XhCascaderIndicator',\n setup(_, { slots }) {\n const ctx = useCascaderContext()\n return () => h('span', ctx.api.value.getIndicatorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCascaderClearTrigger = defineComponent({\n name: 'XhCascaderClearTrigger',\n setup(_, { slots }) {\n const ctx = useCascaderContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCascaderPositioner = defineComponent({\n name: 'XhCascaderPositioner',\n setup(_, { slots }) {\n const ctx = useCascaderContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhCascaderContent = defineComponent({\n name: 'XhCascaderContent',\n setup(_, { slots }) {\n const ctx = useCascaderContext()\n // 收起时只隐藏不卸载;跨列的键盘导航也在这一层处理\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhCascaderColumn = defineComponent({\n name: 'XhCascaderColumn',\n props: {\n // 层号,兼收字符串以支持模板里写 level=\"0\"\n level: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useCascaderContext()\n // 展开路径变短时本列收起,节点常挂不卸载\n return () => h(\n 'div',\n ctx.api.value.getColumnProps({ level: Number(props.level) }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhCascaderItem = defineComponent({\n name: 'XhCascaderItem',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useCascaderContext()\n const item = computed<CascaderItemProps>(() => ({ value: props.value }))\n provideCascaderItem({ item })\n const el = ref<HTMLElement | null>(null)\n reportItemFocus(ctx, el, () => props.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhCascaderItemText = defineComponent({\n name: 'XhCascaderItemText',\n setup(_, { slots }) {\n const ctx = useCascaderContext()\n const { item } = useCascaderItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCascaderItemIndicator = defineComponent({\n name: 'XhCascaderItemIndicator',\n setup(_, { slots }) {\n const ctx = useCascaderContext()\n const { item } = useCascaderItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { CheckboxGroupItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { CheckboxGroupContext } from './use-checkbox-group'\nimport { inject, provide } from 'vue'\n\n/** 条目自报的值与禁用,供 item-control / item-text 这类子部件复用同一份声明。 */\nexport interface CheckboxGroupItemContext {\n item: ComputedRef<CheckboxGroupItemProps>\n}\n\nconst KEY: InjectionKey<CheckboxGroupContext> = Symbol('xh-checkbox-group')\nconst ITEM_KEY: InjectionKey<CheckboxGroupItemContext> = Symbol('xh-checkbox-group-item')\n\nexport function provideCheckboxGroup(ctx: CheckboxGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useCheckboxGroupContext(): CheckboxGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] CheckboxGroup 部件必须用在 XhCheckboxGroupRoot 内')\n return ctx\n}\n\nexport function provideCheckboxGroupItem(ctx: CheckboxGroupItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useCheckboxGroupItemContext(): CheckboxGroupItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] CheckboxGroup 条目子部件必须用在 XhCheckboxGroupItem 内')\n return ctx\n}\n","import type { CheckboxGroupApi, CheckboxGroupSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { checkboxGroupMachine, connectCheckboxGroup } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface CheckboxGroupContext {\n api: ComputedRef<CheckboxGroupApi>\n service: Service<CheckboxGroupSchema>\n}\n\nexport function useCheckboxGroup(\n props: CheckboxGroupSchema['props'],\n onValueChange?: CheckboxGroupSchema['props']['onValueChange'],\n): CheckboxGroupContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // onValueChange 由组件外壳(emit)或组合式调用方提供,随 props 一并喂给机器\n const service = useMachine(checkboxGroupMachine, () => ({ ...props, onValueChange }), scope)\n const api = computed(() => connectCheckboxGroup(service, vueNormalize))\n return { api, service }\n}\n","import type { CheckboxGroupItemProps, CheckboxGroupNode, CheckboxGroupNodeMeta, CheckboxGroupSchema } from '@xihan-ui/headless'\nimport type { Orientation } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h } from 'vue'\nimport {\n provideCheckboxGroup,\n provideCheckboxGroupItem,\n useCheckboxGroupContext,\n useCheckboxGroupItemContext,\n} from './context'\nimport { useCheckboxGroup } from './use-checkbox-group'\n\ntype CheckboxGroupProps = CheckboxGroupSchema['props']\n\nexport const XhCheckboxGroupRoot = defineComponent({\n name: 'XhCheckboxGroupRoot',\n props: {\n collection: { type: Array as PropType<CheckboxGroupNode[]>, default: undefined },\n /** 标题文字。给了它就不必再写 label 部件;要放别的内容改用 label 插槽。 */\n label: { type: String, default: undefined },\n // default: undefined 表示非受控\n value: { type: Array as PropType<string[]>, default: undefined },\n defaultValue: { type: Array as PropType<string[]>, default: undefined },\n itemValues: { type: Array as PropType<string[]>, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n name: { type: String, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸数组\n emits: {\n 'value-change': (_details: PayloadOf<CheckboxGroupProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<CheckboxGroupProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: CheckboxGroupProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useCheckboxGroup(props as CheckboxGroupProps, notify)\n provideCheckboxGroup(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default\n ? slots.default({\n value: ctx.api.value.value,\n checkedState: ctx.api.value.checkedState,\n isChecked: ctx.api.value.isChecked,\n setValue: ctx.api.value.setValue,\n toggleValue: ctx.api.value.toggleValue,\n })\n : props.collection\n ? renderDefaultTree(\n ctx.api.value.collection,\n slots.label?.() ?? (props.label != null ? [props.label] : null),\n slots.item,\n )\n : [])\n },\n})\n\nexport const XhCheckboxGroupLabel = defineComponent({\n name: 'XhCheckboxGroupLabel',\n setup(_, { slots }) {\n const ctx = useCheckboxGroupContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCheckboxGroupItem = defineComponent({\n name: 'XhCheckboxGroupItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useCheckboxGroupContext()\n const item = computed<CheckboxGroupItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n provideCheckboxGroupItem({ item })\n // 表单影子由条目自行装配,不暴露成独立组件,作者只写方框与文本\n return () => h('div', ctx.api.value.getItemProps(item.value) as Record<string, unknown>, [\n h('input', ctx.api.value.getItemHiddenInputProps(item.value) as Record<string, unknown>),\n ...(slots.default?.() ?? []),\n ])\n },\n})\n\nexport const XhCheckboxGroupItemControl = defineComponent({\n name: 'XhCheckboxGroupItemControl',\n setup(_, { slots }) {\n const ctx = useCheckboxGroupContext()\n const { item } = useCheckboxGroupItemContext()\n // 插槽留给作者放对勾图形,方框本身对读屏隐藏\n return () => h('span', ctx.api.value.getItemControlProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCheckboxGroupItemText = defineComponent({\n name: 'XhCheckboxGroupItemText',\n setup(_, { slots }) {\n const ctx = useCheckboxGroupContext()\n const { item } = useCheckboxGroupItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCheckboxGroupTrigger = defineComponent({\n name: 'XhCheckboxGroupTrigger',\n setup(_, { slots }) {\n const ctx = useCheckboxGroupContext()\n // 与条目同形的 role=checkbox 节点,渲染为 div,Space 由 connect 接管\n return () => h('div', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 全选把手不在其中:它是可选部件,要它就写默认插槽。\n */\nfunction renderDefaultTree(\n collection: readonly CheckboxGroupNodeMeta[],\n label: (VNode | string)[] | null,\n itemSlot?: (node: CheckboxGroupNodeMeta) => VNode[],\n): VNode[] {\n return [\n ...(label ? [h(XhCheckboxGroupLabel, null, () => label)] : []),\n ...collection.map(node =>\n h(XhCheckboxGroupItem, { key: node.value, value: node.value }, () => [\n h(XhCheckboxGroupItemControl),\n h(XhCheckboxGroupItemText, null, () => itemSlot?.(node) ?? node.label),\n ]),\n ),\n ]\n}\n","import type { CheckboxApi, CheckboxSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { checkboxMachine, connectCheckbox } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface CheckboxContext {\n api: ComputedRef<CheckboxApi>\n}\n\nexport function useCheckbox(\n props: CheckboxSchema['props'],\n onCheckedChange?: CheckboxSchema['props']['onCheckedChange'],\n): CheckboxContext {\n const service = useMachine(checkboxMachine, () => ({ ...props, onCheckedChange }))\n const api = computed(() => connectCheckbox(service, vueNormalize))\n return { api }\n}\n","import type { CheckboxCheckedState, CheckboxSchema } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { useCheckbox } from './use-checkbox'\n\ntype CheckboxProps = CheckboxSchema['props']\n\nexport const XhCheckbox = defineComponent({\n name: 'XhCheckbox',\n props: {\n // 三态:true / false / 'indeterminate'。半选只能由外部给,点击不会切进去\n checked: { type: [Boolean, String] as PropType<CheckboxCheckedState>, default: undefined },\n defaultChecked: { type: [Boolean, String] as PropType<CheckboxCheckedState>, default: undefined },\n disabled: Boolean,\n tone: String as PropType<Tone>,\n size: String as PropType<Size>,\n },\n // checked-change 携带 { checked },update:checked 携带裸布尔\n emits: {\n 'checked-change': (_details: PayloadOf<CheckboxProps, 'onCheckedChange'>) => true,\n 'update:checked': (_checked: PayloadOf<CheckboxProps, 'onCheckedChange'>['checked']) => true,\n },\n setup(props, { emit }) {\n const notify: CheckboxProps['onCheckedChange'] = (details) => {\n emit('checked-change', details)\n emit('update:checked', details.checked)\n }\n const { api } = useCheckbox(props as CheckboxProps, notify)\n return () => h('button', api.value.getRootProps() as Record<string, unknown>, [\n h('span', api.value.getIndicatorProps() as Record<string, unknown>),\n ])\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { ClipboardContext } from './use-clipboard'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ClipboardContext> = Symbol('xh-clipboard')\n\nexport function provideClipboard(ctx: ClipboardContext): void {\n provide(KEY, ctx)\n}\n\nexport function useClipboardContext(): ClipboardContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Clipboard 部件必须用在 XhClipboardRoot 内')\n return ctx\n}\n","import type { ClipboardApi, ClipboardSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { clipboardMachine, connectClipboard } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ClipboardContext {\n api: ComputedRef<ClipboardApi>\n}\n\nexport function useClipboard(\n props: ClipboardSchema['props'],\n callbacks: Pick<ClipboardSchema['props'], 'onStatusChange' | 'onCopyError'> = {},\n): ClipboardContext {\n const service = useMachine(clipboardMachine, () => ({ ...props, ...callbacks }))\n const api = computed(() => connectClipboard(service, vueNormalize))\n return { api }\n}\n","import type { ClipboardSchema } from '@xihan-ui/headless'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideClipboard, useClipboardContext } from './context'\nimport { useClipboard } from './use-clipboard'\n\ntype ClipboardProps = ClipboardSchema['props']\n\nexport const XhClipboardRoot = defineComponent({\n name: 'XhClipboardRoot',\n props: {\n // 属性缺席即没给要复制的文本,落回空串\n value: { type: String, default: undefined },\n timeout: { type: Number, default: undefined },\n },\n // status-change 携带 { status };copy-error 携带 { error, value }\n emits: {\n 'status-change': (_details: PayloadOf<ClipboardProps, 'onStatusChange'>) => true,\n 'copy-error': (_details: PayloadOf<ClipboardProps, 'onCopyError'>) => true,\n },\n setup(props, { slots, emit }) {\n const ctx = useClipboard(props as ClipboardProps, {\n onStatusChange: details => emit('status-change', details),\n onCopyError: details => emit('copy-error', details),\n })\n provideClipboard(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n status: ctx.api.value.status,\n copied: ctx.api.value.copied,\n value: ctx.api.value.value,\n copy: ctx.api.value.copy,\n }))\n },\n})\n\nexport const XhClipboardLabel = defineComponent({\n name: 'XhClipboardLabel',\n setup(_, { slots }) {\n const ctx = useClipboardContext()\n // 必须是原生 <label>,connect 把 for 写向 input\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhClipboardControl = defineComponent({\n name: 'XhClipboardControl',\n setup(_, { slots }) {\n const ctx = useClipboardContext()\n return () => h('div', ctx.api.value.getControlProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhClipboardInput = defineComponent({\n name: 'XhClipboardInput',\n setup() {\n const ctx = useClipboardContext()\n // 自己渲染 <input>,label 的 for 指向这个节点\n return () => h('input', ctx.api.value.getInputProps() as Record<string, unknown>)\n },\n})\n\nexport const XhClipboardTrigger = defineComponent({\n name: 'XhClipboardTrigger',\n setup(_, { slots }) {\n const ctx = useClipboardContext()\n // 原生 <button>,激活行为交给平台\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhClipboardIndicator = defineComponent({\n name: 'XhClipboardIndicator',\n props: {\n /** 这个标记属于哪一侧:true = 复制成功后的对钩,false(默认)= 平时的复制图标。 */\n copied: Boolean,\n },\n setup(props, { slots }) {\n const ctx = useClipboardContext()\n // 节点常挂,靠 hidden 显隐\n return () => h(\n 'span',\n ctx.api.value.getIndicatorProps({ copied: props.copied }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n","import type { CodeBlockProps } from '@xihan-ui/headless'\nimport type { HighlighterPort } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { createHighlighter } from '@xihan-ui/code-highlight'\nimport { connectCodeBlock } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\n/** 默认着色实现全组件共用一份:它无状态,没必要每个块建一个。 */\nconst defaultHighlighter = createHighlighter()\n\nexport const XhCodeBlock = defineComponent({\n name: 'XhCodeBlock',\n props: {\n code: { type: String, default: '' },\n lang: { type: String, default: undefined },\n // 三态,undefined 与 false 同样不落 data-complete\n complete: { type: Boolean, default: undefined },\n /** 换一个着色实现(典型是接 Shiki);显式给 null 则关掉着色。 */\n highlighter: { type: Object as PropType<HighlighterPort | null>, default: undefined },\n highlightWhileStreaming: { type: Boolean, default: undefined },\n },\n setup(props) {\n // connect 无状态,props 变了直接重算\n const api = computed(() => connectCodeBlock({\n code: props.code,\n lang: props.lang,\n complete: props.complete,\n highlighter: props.highlighter === null ? undefined : props.highlighter ?? defaultHighlighter,\n highlightWhileStreaming: props.highlightWhileStreaming,\n } satisfies CodeBlockProps, vueNormalize))\n\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, [\n h('span', api.value.getLangLabelProps() as Record<string, unknown>, api.value.lang),\n // 用 pre 与 code 保留代码里的空白与换行\n h('pre', api.value.getPreProps() as Record<string, unknown>, [\n h('code', api.value.getCodeProps() as Record<string, unknown>,\n // 没有着色结果就一个文本节点,别平白多包一层 span\n api.value.tokens.length === 0\n ? props.code\n : api.value.tokens.map((token, index) => h(\n 'span',\n { ...api.value.getTokenProps(token) as Record<string, unknown>, key: index },\n token.text,\n ))),\n ]),\n ])\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { CollapsibleContext } from './use-collapsible'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<CollapsibleContext> = Symbol('xh-collapsible')\n\nexport function provideCollapsible(ctx: CollapsibleContext): void {\n provide(KEY, ctx)\n}\n\nexport function useCollapsibleContext(): CollapsibleContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Collapsible 部件必须用在 XhCollapsibleRoot 内')\n return ctx\n}\n","import type { CollapsibleApi, CollapsibleSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { collapsibleMachine, connectCollapsible } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface CollapsibleContext {\n api: ComputedRef<CollapsibleApi>\n}\n\nexport function useCollapsible(\n props: CollapsibleSchema['props'],\n onOpenChange?: CollapsibleSchema['props']['onOpenChange'],\n): CollapsibleContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(collapsibleMachine, () => ({ ...props, onOpenChange }), scope)\n const api = computed(() => connectCollapsible(service, vueNormalize))\n return { api }\n}\n","import type { CollapsibleSchema } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideCollapsible, useCollapsibleContext } from './context'\nimport { useCollapsible } from './use-collapsible'\n\ntype CollapsibleProps = CollapsibleSchema['props']\n\nexport const XhCollapsibleRoot = defineComponent({\n name: 'XhCollapsibleRoot',\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n disabled: Boolean,\n size: { type: String as PropType<Size>, default: undefined },\n },\n // open-change 携带 { open },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<CollapsibleProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<CollapsibleProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: CollapsibleProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useCollapsible(props as CollapsibleProps, notify)\n provideCollapsible(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCollapsibleTrigger = defineComponent({\n name: 'XhCollapsibleTrigger',\n setup(_, { slots }) {\n const ctx = useCollapsibleContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhCollapsibleContent = defineComponent({\n name: 'XhCollapsibleContent',\n setup(_, { slots }) {\n const ctx = useCollapsibleContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { ColorPickerChannel } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { ColorPickerContext } from './use-color-picker'\nimport { inject, provide } from 'vue'\n\n/** 通道滑杆自报的身份,供它内部的轨道与拇指复用同一份声明。 */\nexport interface ColorPickerChannelContext {\n channel: ComputedRef<ColorPickerChannel>\n}\n\nconst KEY: InjectionKey<ColorPickerContext> = Symbol('xh-color-picker')\nconst CHANNEL_KEY: InjectionKey<ColorPickerChannelContext> = Symbol('xh-color-picker-channel')\n\nexport function provideColorPicker(ctx: ColorPickerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useColorPickerContext(): ColorPickerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ColorPicker 部件必须用在 XhColorPickerRoot 内')\n return ctx\n}\n\nexport function provideColorPickerChannel(ctx: ColorPickerChannelContext): void {\n provide(CHANNEL_KEY, ctx)\n}\n\nexport function useColorPickerChannelContext(): ColorPickerChannelContext {\n const ctx = inject(CHANNEL_KEY, null)\n if (!ctx)\n throw new Error('[xh] ColorPicker 通道轨道与拇指必须用在 XhColorPickerChannelSlider 内')\n return ctx\n}\n","import type { ColorPickerApi, ColorPickerChannel, ColorPickerSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { colorPickerMachine, connectColorPicker } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface ColorPickerContext {\n service: Service<ColorPickerSchema>\n api: ComputedRef<ColorPickerApi>\n /** 触发器,同时是浮层的定位锚点。 */\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 二维取色区,机器在指针事件里拿它量矩形。 */\n areaRef: Ref<HTMLElement | null>\n /** 逐条登记通道轨道节点,由滑杆部件自报是哪一条。 */\n setChannelTrack: (channel: ColorPickerChannel, el: HTMLElement | null) => void\n}\n\nexport function useColorPicker(\n props: ColorPickerSchema['props'],\n handlers: Pick<ColorPickerSchema['props'], 'onValueChange' | 'onOpenChange'> = {},\n): ColorPickerContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n const areaRef = ref<HTMLElement | null>(null)\n // 普通对象而非响应式引用,这两个节点只在指针事件里读\n const channelTracks: Record<ColorPickerChannel, HTMLElement | null> = { hue: null, alpha: null }\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(colorPickerMachine, () => ({ ...props, ...handlers }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 触发器记为本层分支,点它算层内交互\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n // 浮层不带遮罩,没有可点关闭的表面\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n // 传 getter 而非节点,ref 在挂载后才有值\n service.refs.set('getAreaEl', () => areaRef.value)\n service.refs.set('getChannelTrackEl', channel => channelTracks[channel])\n }\n\n const api = computed(() => connectColorPicker(service, vueNormalize))\n return {\n service,\n api,\n triggerRef,\n positionerRef,\n contentRef,\n areaRef,\n setChannelTrack: (channel, el) => {\n channelTracks[channel] = el\n },\n }\n}\n","import type {\n ColorPickerChannel,\n ColorPickerFormat,\n ColorPickerInputChannel,\n ColorPickerSchema,\n ColorPickerTranslations,\n} from '@xihan-ui/headless'\nimport type { Direction, Placement } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { colorPickerToChannel, colorPickerToInputChannel } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, onUnmounted } from 'vue'\nimport {\n provideColorPicker,\n provideColorPickerChannel,\n useColorPickerChannelContext,\n useColorPickerContext,\n} from './context'\nimport { useColorPicker } from './use-color-picker'\n\ntype ColorPickerProps = ColorPickerSchema['props']\n\nexport const XhColorPickerRoot = defineComponent({\n name: 'XhColorPickerRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n format: { type: String as PropType<ColorPickerFormat>, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n disabled: Boolean,\n readOnly: Boolean,\n alpha: Boolean,\n swatches: { type: Array as PropType<string[]>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n translations: { type: Object as PropType<Partial<ColorPickerTranslations>>, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<ColorPickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<ColorPickerProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<ColorPickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<ColorPickerProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: ColorPickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: ColorPickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useColorPicker(props as ColorPickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n })\n provideColorPicker(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n rgba: ctx.api.value.rgba,\n hsva: ctx.api.value.hsva,\n swatches: ctx.api.value.swatches,\n picking: ctx.api.value.picking,\n eyeDropperSupported: ctx.api.value.eyeDropperSupported,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n }))\n },\n})\n\nexport const XhColorPickerLabel = defineComponent({\n name: 'XhColorPickerLabel',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhColorPickerTrigger = defineComponent({\n name: 'XhColorPickerTrigger',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n // 原生 button,激活交给平台;同时是浮层的定位锚点\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhColorPickerValueText = defineComponent({\n name: 'XhColorPickerValueText',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n // 有插槽用插槽,否则显示当前值串\n return () => h(\n 'span',\n ctx.api.value.getValueTextProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.value,\n )\n },\n})\n\nexport const XhColorPickerSwatch = defineComponent({\n name: 'XhColorPickerSwatch',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n return () => h('span', ctx.api.value.getSwatchProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhColorPickerPositioner = defineComponent({\n name: 'XhColorPickerPositioner',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhColorPickerContent = defineComponent({\n name: 'XhColorPickerContent',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhColorPickerArea = defineComponent({\n name: 'XhColorPickerArea',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n // 区域节点交给机器,矩形在指针事件里现量\n return () => h('div', {\n ...ctx.api.value.getAreaProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.areaRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhColorPickerAreaThumb = defineComponent({\n name: 'XhColorPickerAreaThumb',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n return () => h('div', ctx.api.value.getAreaThumbProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhColorPickerChannelSlider = defineComponent({\n name: 'XhColorPickerChannelSlider',\n props: {\n /** 这条滑杆调的是哪一路,缺省或不识别时按色相处理。 */\n channel: { type: String as PropType<ColorPickerChannel>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useColorPickerContext()\n const channel = computed(() => colorPickerToChannel(props.channel))\n provideColorPickerChannel({ channel })\n return () => h(\n 'div',\n ctx.api.value.getChannelSliderProps({ channel: channel.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhColorPickerChannelSliderTrack = defineComponent({\n name: 'XhColorPickerChannelSliderTrack',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n const { channel } = useColorPickerChannelContext()\n // 卸载时撤掉登记,避免留下已离开文档的节点\n onUnmounted(() => ctx.setChannelTrack(channel.value, null))\n return () => h('div', {\n ...ctx.api.value.getChannelSliderTrackProps({ channel: channel.value }) as Record<string, unknown>,\n ref: (el: unknown) => ctx.setChannelTrack(channel.value, el as HTMLElement | null),\n }, slots.default?.())\n },\n})\n\nexport const XhColorPickerChannelSliderThumb = defineComponent({\n name: 'XhColorPickerChannelSliderThumb',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n const { channel } = useColorPickerChannelContext()\n return () => h(\n 'div',\n ctx.api.value.getChannelSliderThumbProps({ channel: channel.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhColorPickerChannelInput = defineComponent({\n name: 'XhColorPickerChannelInput',\n props: {\n /** 这个框编辑的是哪一路:hex 是整串,r/g/b 是分量,a 是透明度百分数;缺省或不识别时按 hex 处理。 */\n channel: { type: String as PropType<ColorPickerInputChannel>, default: undefined },\n },\n setup(props) {\n const ctx = useColorPickerContext()\n const channel = computed(() => colorPickerToInputChannel(props.channel))\n // 通道身份由本部件自己声明,不必嵌在通道滑杆内\n return () => h('input', ctx.api.value.getChannelInputProps({ channel: channel.value }) as Record<string, unknown>)\n },\n})\n\nexport const XhColorPickerEyeDropperTrigger = defineComponent({\n name: 'XhColorPickerEyeDropperTrigger',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n return () => h('button', ctx.api.value.getEyeDropperTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhColorPickerSwatchGroup = defineComponent({\n name: 'XhColorPickerSwatchGroup',\n setup(_, { slots }) {\n const ctx = useColorPickerContext()\n return () => h('div', ctx.api.value.getSwatchGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhColorPickerSwatchItem = defineComponent({\n name: 'XhColorPickerSwatchItem',\n props: {\n /** 这一格的颜色。 */\n value: { type: String, default: '' },\n },\n setup(props, { slots }) {\n const ctx = useColorPickerContext()\n return () => h(\n 'button',\n ctx.api.value.getSwatchItemProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n","import type { ComboboxItemGroupProps, ComboboxItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { ComboboxContext } from './use-combobox'\nimport { inject, provide } from 'vue'\n\n/** 候选自报的值与禁用,供 item-text / item-indicator 这类子部件复用同一份声明。 */\nexport interface ComboboxItemContext {\n item: ComputedRef<ComboboxItemProps>\n}\n\n/** 分组自报的身份,供分组标题取到同一个值(标题的 id 由它派生)。 */\nexport interface ComboboxItemGroupContext {\n group: ComputedRef<ComboboxItemGroupProps>\n}\n\nconst KEY: InjectionKey<ComboboxContext> = Symbol('xh-combobox')\nconst ITEM_KEY: InjectionKey<ComboboxItemContext> = Symbol('xh-combobox-item')\nconst GROUP_KEY: InjectionKey<ComboboxItemGroupContext> = Symbol('xh-combobox-item-group')\n\nexport function provideCombobox(ctx: ComboboxContext): void {\n provide(KEY, ctx)\n}\n\nexport function useComboboxContext(): ComboboxContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Combobox 部件必须用在 XhComboboxRoot 内')\n return ctx\n}\n\nexport function provideComboboxItem(ctx: ComboboxItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useComboboxItemContext(): ComboboxItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Combobox 候选子部件必须用在 XhComboboxItem 内')\n return ctx\n}\n\nexport function provideComboboxItemGroup(ctx: ComboboxItemGroupContext): void {\n provide(GROUP_KEY, ctx)\n}\n\nexport function useComboboxItemGroupContext(): ComboboxItemGroupContext {\n const ctx = inject(GROUP_KEY, null)\n if (!ctx)\n throw new Error('[xh] Combobox 分组标题必须用在 XhComboboxItemGroup 内')\n return ctx\n}\n","import type { ComboboxApi, ComboboxInputEl, ComboboxSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { comboboxMachine, connectCombobox } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, nextTick, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface ComboboxContext {\n /** 机器实例,供部件直接上报 DOM 侧事实。 */\n service: Service<ComboboxSchema>\n api: ComputedRef<ComboboxApi>\n controlRef: Ref<HTMLElement | null>\n /** 输入宿主,input 或 textarea;由 XhComboboxInput 的 as 决定渲染成哪个。 */\n inputRef: Ref<ComboboxInputEl | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 上报候选集合可能变了;同一拍里多次调用只上报一次。 */\n syncItems: () => void\n}\n\nexport function useCombobox(\n props: ComboboxSchema['props'],\n handlers: Pick<ComboboxSchema['props'], 'onValueChange' | 'onInputValueChange' | 'onOpenChange'> = {},\n): ComboboxContext {\n const controlRef = ref<HTMLElement | null>(null)\n const inputRef = ref<ComboboxInputEl | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(comboboxMachine, () => ({ ...props, ...handlers }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,实际入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点输入框或触发按钮算层内交互\n branches: () => [controlRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => controlRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n service.refs.set('getInputEl', () => inputRef.value)\n }\n\n // 合并到下一拍统一上报,同时等待 DOM 落定\n let syncScheduled = false\n const syncItems = (): void => {\n if (syncScheduled)\n return\n syncScheduled = true\n void nextTick(() => {\n syncScheduled = false\n if (service.getStatus() === 'Started')\n service.send({ type: 'ITEMS.SYNC' })\n })\n }\n\n const api = computed(() => connectCombobox(service, vueNormalize))\n return { service, api, controlRef, inputRef, positionerRef, contentRef, syncItems }\n}\n","import type { ComboboxInputBehavior, ComboboxInputEl, ComboboxInputHost, ComboboxItemGroupProps, ComboboxItemProps, ComboboxNode, ComboboxNodeMeta, ComboboxSchema } from '@xihan-ui/headless'\nimport type { ControlVariant, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onMounted, onUnmounted, onUpdated, watch } from 'vue'\nimport {\n provideCombobox,\n provideComboboxItem,\n provideComboboxItemGroup,\n useComboboxContext,\n useComboboxItemContext,\n useComboboxItemGroupContext,\n} from './context'\nimport { useCombobox } from './use-combobox'\n\ntype ComboboxProps = ComboboxSchema['props']\n\nexport const XhComboboxRoot = defineComponent({\n name: 'XhComboboxRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n collection: { type: Array as PropType<ComboboxNode[]>, default: undefined },\n /** 标题文字。给了它就不必再写 label 部件;要放别的内容改用 label 插槽。 */\n label: { type: String, default: undefined },\n /** 无匹配时的提示语。给了它就不必再写 empty 部件;要放别的内容改用 empty 插槽。 */\n empty: { type: String, default: undefined },\n value: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n inputValue: { type: String, default: undefined },\n defaultInputValue: { type: String, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n multiple: Boolean,\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n loop: { type: Boolean, default: undefined },\n placeholder: { type: String, default: undefined },\n allowCustomValue: Boolean,\n openOnClick: Boolean,\n inputBehavior: { type: String as PropType<ComboboxInputBehavior>, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<ComboboxProps, 'onValueChange'>) => true,\n 'input-value-change': (_details: PayloadOf<ComboboxProps, 'onInputValueChange'>) => true,\n 'open-change': (_details: PayloadOf<ComboboxProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<ComboboxProps, 'onValueChange'>['value']) => true,\n 'update:inputValue': (_inputValue: PayloadOf<ComboboxProps, 'onInputValueChange'>['inputValue']) => true,\n 'update:open': (_open: PayloadOf<ComboboxProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: ComboboxProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyInputValue: ComboboxProps['onInputValueChange'] = (details) => {\n emit('input-value-change', details)\n emit('update:inputValue', details.inputValue)\n }\n const notifyOpen: ComboboxProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useCombobox(props as ComboboxProps, {\n onValueChange: notifyValue,\n onInputValueChange: notifyInputValue,\n onOpenChange: notifyOpen,\n })\n provideCombobox(ctx)\n\n // 首帧结算一次候选条数供空态节点判断,之后的增删由条目自己上报\n onMounted(ctx.syncItems)\n onUpdated(ctx.syncItems)\n\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n inputValue: ctx.api.value.inputValue,\n highlightedValue: ctx.api.value.highlightedValue,\n empty: ctx.api.value.empty,\n isSelected: ctx.api.value.isSelected,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n setInputValue: ctx.api.value.setInputValue,\n clear: ctx.api.value.clear,\n })\n : props.collection\n ? renderDefaultTree(\n ctx.api.value.collection,\n slots.label?.() ?? (props.label != null ? [props.label] : null),\n slots.empty?.() ?? (props.empty != null ? [props.empty] : null),\n slots.item,\n )\n : [],\n )\n },\n})\n\nexport const XhComboboxLabel = defineComponent({\n name: 'XhComboboxLabel',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n // 用原生 label,connect 给的 for 指向输入框\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhComboboxControl = defineComponent({\n name: 'XhComboboxControl',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhComboboxInput = defineComponent({\n name: 'XhComboboxInput',\n props: {\n /**\n * 输入框渲染成哪个标签,默认 input。\n * 写 textarea 即多行宿主:connect 随之撤掉 type、role 与 aria-expanded。\n */\n as: { type: String as PropType<ComboboxInputHost>, default: 'input' },\n },\n setup(props) {\n const ctx = useComboboxContext()\n return () => h(props.as, {\n ...ctx.api.value.getInputProps({ as: props.as }) as Record<string, unknown>,\n ref: (el: unknown) => { ctx.inputRef.value = el as ComboboxInputEl },\n })\n },\n})\n\nexport const XhComboboxTrigger = defineComponent({\n name: 'XhComboboxTrigger',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhComboboxClearTrigger = defineComponent({\n name: 'XhComboboxClearTrigger',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhComboboxPositioner = defineComponent({\n name: 'XhComboboxPositioner',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhComboboxContent = defineComponent({\n name: 'XhComboboxContent',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhComboboxItemGroup = defineComponent({\n name: 'XhComboboxItemGroup',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useComboboxContext()\n const group = computed<ComboboxItemGroupProps>(() => ({ value: props.value }))\n provideComboboxItemGroup({ group })\n return () => h('div', ctx.api.value.getItemGroupProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhComboboxItemGroupLabel = defineComponent({\n name: 'XhComboboxItemGroupLabel',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n const { group } = useComboboxItemGroupContext()\n return () => h('span', ctx.api.value.getItemGroupLabelProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhComboboxItem = defineComponent({\n name: 'XhComboboxItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useComboboxContext()\n const item = computed<ComboboxItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n provideComboboxItem({ item })\n // 候选的进出与改名由条目自己上报,机器据此结算条数并摘掉悬空高亮\n onMounted(ctx.syncItems)\n onUnmounted(ctx.syncItems)\n // 节点就地复用时数量不变但身份换了,需按 value 另行上报\n watch(() => props.value, ctx.syncItems)\n return () => h('div', ctx.api.value.getItemProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhComboboxItemText = defineComponent({\n name: 'XhComboboxItemText',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n const { item } = useComboboxItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhComboboxItemIndicator = defineComponent({\n name: 'XhComboboxItemIndicator',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n const { item } = useComboboxItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhComboboxEmpty = defineComponent({\n name: 'XhComboboxEmpty',\n setup(_, { slots }) {\n const ctx = useComboboxContext()\n // 放在 positioner 里作 content 的兄弟节点,不进 role=listbox\n return () => h('div', ctx.api.value.getEmptyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 过滤仍归调用方:collection 就是此刻该显示的那几条候选。\n */\nfunction renderDefaultTree(\n collection: readonly ComboboxNodeMeta[],\n label: (VNode | string)[] | null,\n empty: (VNode | string)[] | null,\n itemSlot?: (node: ComboboxNodeMeta) => VNode[],\n): VNode[] {\n return [\n ...(label ? [h(XhComboboxLabel, null, () => label)] : []),\n h(XhComboboxControl, null, () => [\n h(XhComboboxInput),\n h(XhComboboxTrigger),\n h(XhComboboxClearTrigger),\n ]),\n h(XhComboboxPositioner, null, () => [\n h(XhComboboxContent, null, () => collection.map(node =>\n h(XhComboboxItem, { key: node.value, value: node.value }, () => [\n h(XhComboboxItemText, null, () => itemSlot?.(node) ?? node.label),\n h(XhComboboxItemIndicator),\n ]),\n )),\n // 空态节点是 content 的兄弟,不进 role=listbox\n h(XhComboboxEmpty, null, () => empty ?? []),\n ]),\n ]\n}\n","import type { InjectionKey } from 'vue'\nimport type { ComposerContext } from './use-composer'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ComposerContext> = Symbol('xh-composer')\n\nexport function provideComposer(ctx: ComposerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useComposerContext(): ComposerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Composer 部件必须用在 XhComposerRoot 内')\n return ctx\n}\n","import type { ComposerApi, ComposerSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { composerMachine, connectComposer } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\ntype Props = ComposerSchema['props']\n\nexport interface ComposerCallbacks {\n onValueChange?: Props['onValueChange']\n onSubmit?: Props['onSubmit']\n onStop?: Props['onStop']\n}\n\nexport interface ComposerContext {\n api: ComputedRef<ComposerApi>\n}\n\nexport function useComposer(props: Props, callbacks: ComposerCallbacks = {}): ComposerContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // 回调由组件外壳或调用方提供,随 props 一并传给机器;不需要 RuntimeConfig\n const service = useMachine(composerMachine, () => ({ ...props, ...callbacks }), scope)\n const api = computed(() => connectComposer(service, vueNormalize))\n return { api }\n}\n","import type { ComposerRunStatus, ComposerSchema, ComposerTranslations } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideComposer, useComposerContext } from './context'\nimport { useComposer } from './use-composer'\n\ntype ComposerProps = ComposerSchema['props']\n\nexport const XhComposerRoot = defineComponent({\n name: 'XhComposerRoot',\n props: {\n // default: undefined 表示非受控,落成空串会被当成受控的空值\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n disabled: Boolean,\n runStatus: { type: String as PropType<ComposerRunStatus>, default: undefined },\n // 用 undefined 而非裸 Boolean,缺省值由 connect 给出\n submitOnEnter: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<Partial<ComposerTranslations>>, default: undefined },\n },\n // value-change 与 submit 携带 { value },update:value 携带裸串以支持 v-model:value,stop 无载荷\n emits: {\n 'value-change': (_details: PayloadOf<ComposerProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<ComposerProps, 'onValueChange'>['value']) => true,\n 'submit': (_details: PayloadOf<ComposerProps, 'onSubmit'>) => true,\n 'stop': () => true,\n },\n setup(props, { slots, emit }) {\n const ctx = useComposer(props as ComposerProps, {\n onValueChange: (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n },\n onSubmit: details => emit('submit', details),\n onStop: () => emit('stop'),\n })\n provideComposer(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n isComposing: ctx.api.value.isComposing,\n canSubmit: ctx.api.value.canSubmit,\n streaming: ctx.api.value.streaming,\n disabled: ctx.api.value.disabled,\n setValue: ctx.api.value.setValue,\n submit: ctx.api.value.submit,\n stop: ctx.api.value.stop,\n }))\n },\n})\n\nexport const XhComposerInput = defineComponent({\n name: 'XhComposerInput',\n setup() {\n const ctx = useComposerContext()\n // 渲染原生 textarea,换行与撤销栈交给浏览器\n return () => h('textarea', ctx.api.value.getInputProps() as Record<string, unknown>)\n },\n})\n\nexport const XhComposerSubmitTrigger = defineComponent({\n name: 'XhComposerSubmitTrigger',\n setup(_, { slots }) {\n const ctx = useComposerContext()\n // 流式期间原位切换为停止,只改 data-mode 与 aria-label\n return () => h('button', ctx.api.value.getSubmitTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { ContextMenuGroupProps, ContextMenuItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { ContextMenuContext } from './use-context-menu'\nimport { inject, provide } from 'vue'\n\n/** 条目自报的值与禁用,供 item-text / item-indicator 这类子部件复用同一份声明。 */\nexport interface ContextMenuItemContext {\n item: ComputedRef<ContextMenuItemProps>\n}\n\n/** 分组自报的身份,供分组标题取到同一个值(标题的 id 由它派生)。 */\nexport interface ContextMenuGroupContext {\n group: ComputedRef<ContextMenuGroupProps>\n}\n\nconst KEY: InjectionKey<ContextMenuContext> = Symbol('xh-context-menu')\nconst ITEM_KEY: InjectionKey<ContextMenuItemContext> = Symbol('xh-context-menu-item')\nconst GROUP_KEY: InjectionKey<ContextMenuGroupContext> = Symbol('xh-context-menu-group')\n\nexport function provideContextMenu(ctx: ContextMenuContext): void {\n provide(KEY, ctx)\n}\n\nexport function useContextMenuContext(): ContextMenuContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ContextMenu 部件必须用在 XhContextMenuRoot 内')\n return ctx\n}\n\nexport function provideContextMenuItem(ctx: ContextMenuItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useContextMenuItemContext(): ContextMenuItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] ContextMenu 条目子部件必须用在 XhContextMenuItem 内')\n return ctx\n}\n\nexport function provideContextMenuGroup(ctx: ContextMenuGroupContext): void {\n provide(GROUP_KEY, ctx)\n}\n\nexport function useContextMenuGroupContext(): ContextMenuGroupContext {\n const ctx = inject(GROUP_KEY, null)\n if (!ctx)\n throw new Error('[xh] ContextMenu 分组标题必须用在 XhContextMenuGroup 内')\n return ctx\n}\n","import type { ContextMenuApi, ContextMenuSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectContextMenu, contextMenuMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface ContextMenuContext {\n service: Service<ContextMenuSchema>\n api: ComputedRef<ContextMenuApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useContextMenu(\n props: ContextMenuSchema['props'],\n onOpenChange?: ContextMenuSchema['props']['onOpenChange'],\n onSelect?: ContextMenuSchema['props']['onSelect'],\n): ContextMenuContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(contextMenuMachine, () => ({ ...props, onOpenChange, onSelect }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 触发区记为本层分支,展开着再右键可就地换坐标;左键关闭由 connect 在 pointerdown 上收口\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点是光标坐标,故无 getAnchorEl\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectContextMenu(service, vueNormalize))\n return { service, api, triggerRef, positionerRef, contentRef }\n}\n","import type { ContextMenuGroupProps, ContextMenuItemProps, ContextMenuNode, ContextMenuNodeMeta, ContextMenuSchema } from '@xihan-ui/headless'\nimport type { Direction, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport {\n provideContextMenu,\n provideContextMenuGroup,\n provideContextMenuItem,\n useContextMenuContext,\n useContextMenuGroupContext,\n useContextMenuItemContext,\n} from './context'\nimport { useContextMenu } from './use-context-menu'\n\ntype ContextMenuProps = ContextMenuSchema['props']\n\nexport const XhContextMenuRoot = defineComponent({\n name: 'XhContextMenuRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n collection: { type: Array as PropType<ContextMenuNode[]>, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n loop: { type: Boolean, default: undefined },\n typeahead: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n longPressDelay: { type: Number, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // open-change 携带 { open }、select 携带 { value },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<ContextMenuProps, 'onOpenChange'>) => true,\n 'select': (_details: PayloadOf<ContextMenuProps, 'onSelect'>) => true,\n 'update:open': (_open: PayloadOf<ContextMenuProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyOpen: ContextMenuProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const notifySelect: ContextMenuProps['onSelect'] = details => emit('select', details)\n const ctx = useContextMenu(props as ContextMenuProps, notifyOpen, notifySelect)\n provideContextMenu(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default({\n open: ctx.api.value.open,\n point: ctx.api.value.point,\n setOpen: ctx.api.value.setOpen,\n openAt: ctx.api.value.openAt,\n })\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.trigger?.() ?? null, slots.item)\n : [],\n )\n },\n})\n\nexport const XhContextMenuTrigger = defineComponent({\n name: 'XhContextMenuTrigger',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n // 触发区渲染为 div,语义由 connect 打上的 ARIA 属性给出\n return () => h('div', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhContextMenuPositioner = defineComponent({\n name: 'XhContextMenuPositioner',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhContextMenuContent = defineComponent({\n name: 'XhContextMenuContent',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhContextMenuGroup = defineComponent({\n name: 'XhContextMenuGroup',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useContextMenuContext()\n const group = computed<ContextMenuGroupProps>(() => ({ value: props.value }))\n provideContextMenuGroup({ group })\n return () => h('div', ctx.api.value.getGroupProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuGroupLabel = defineComponent({\n name: 'XhContextMenuGroupLabel',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { group } = useContextMenuGroupContext()\n return () => h('span', ctx.api.value.getGroupLabelProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuItem = defineComponent({\n name: 'XhContextMenuItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useContextMenuContext()\n const item = computed<ContextMenuItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n provideContextMenuItem({ item })\n // 本条目持有焦点时,value 变更按新值重报焦点条目,卸载时上报焦点丢失\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 根已停机时不再送事件\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.LOST' })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhContextMenuItemText = defineComponent({\n name: 'XhContextMenuItemText',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuItemIndicator = defineComponent({\n name: 'XhContextMenuItemIndicator',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuSeparator = defineComponent({\n name: 'XhContextMenuSeparator',\n setup() {\n const ctx = useContextMenuContext()\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\nexport const XhContextMenuArrow = defineComponent({\n name: 'XhContextMenuArrow',\n setup() {\n const ctx = useContextMenuContext()\n return () => h('div', ctx.api.value.getArrowProps() as Record<string, unknown>)\n },\n})\n\n/** 一段连续的同组条目;不分组的条目各自单独成段。 */\ntype NodeRun = [ContextMenuNodeMeta, ...ContextMenuNodeMeta[]]\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 触发区里放什么是作者的事,由 trigger 插槽给出。\n */\nfunction renderDefaultTree(\n collection: readonly ContextMenuNodeMeta[],\n trigger: (VNode | string)[] | null,\n itemSlot?: (node: ContextMenuNodeMeta) => VNode[],\n): VNode[] {\n return [\n h(XhContextMenuTrigger, null, () => trigger ?? []),\n h(XhContextMenuPositioner, null, () => [\n h(XhContextMenuContent, null, () => renderNodes(collection, itemSlot)),\n ]),\n ]\n}\n\n/** 相邻同 group 的条目并成一段,没写 group 的各自成段。 */\nfunction groupRuns(collection: readonly ContextMenuNodeMeta[]): NodeRun[] {\n const runs: NodeRun[] = []\n for (const meta of collection) {\n const last = runs.at(-1)\n if (last && meta.group != null && last[0].group === meta.group)\n last.push(meta)\n else\n runs.push([meta])\n }\n return runs\n}\n\n/** content 的内容:分组段铺成 group,段首的分隔线落在 group 外面。 */\nfunction renderNodes(\n collection: readonly ContextMenuNodeMeta[],\n itemSlot?: (node: ContextMenuNodeMeta) => VNode[],\n): VNode[] {\n return groupRuns(collection).flatMap((run, runIndex) => {\n const head = run[0]\n // 首条上的标记不产出分隔线:菜单开头不留一道空隔\n const lead = runIndex > 0 && head.separatorBefore\n ? [h(XhContextMenuSeparator, { key: `separator:${head.value}` })]\n : []\n if (head.group == null)\n return [...lead, renderItem(head, itemSlot)]\n const groupLabel = run.find(node => node.groupLabel != null)?.groupLabel ?? null\n return [\n ...lead,\n h(XhContextMenuGroup, { key: `group:${head.group}`, value: head.group }, () => [\n ...(groupLabel != null ? [h(XhContextMenuGroupLabel, null, () => groupLabel)] : []),\n ...run.flatMap((node, index) => [\n ...(index > 0 && node.separatorBefore ? [h(XhContextMenuSeparator, { key: `separator:${node.value}` })] : []),\n renderItem(node, itemSlot),\n ]),\n ]),\n ]\n })\n}\n\n/** 单个条目:标记位排在文字前面,没给标记位就不铺那个部件。 */\nfunction renderItem(\n meta: ContextMenuNodeMeta,\n itemSlot?: (node: ContextMenuNodeMeta) => VNode[],\n): VNode {\n return h(XhContextMenuItem, { key: meta.value, value: meta.value }, () => [\n ...(meta.indicator != null ? [h(XhContextMenuItemIndicator, null, () => meta.indicator)] : []),\n h(XhContextMenuItemText, null, () => itemSlot?.(meta) ?? meta.label),\n ])\n}\n","import type { VNode } from 'vue'\nimport { Comment, Fragment, Text } from 'vue'\n\n/**\n * 插槽产出里有没有真会画出东西的节点。\n *\n * 只看数组长度会判错:`v-if` 为假时假分支仍留下一个注释节点,空的 `v-for` 留下一个没有子节点的片段,\n * 模板里的换行与缩进留下纯空白文本节点——三者都占着数组的位置,一个像素都不画。\n * 所以逐个节点看类型,片段递归到底。\n *\n * 与 field 的 attributable 判的不是一回事:那边挑「能挂属性的节点」,纯文本一律滤掉;\n * 这边问「有没有内容」,非空文本算内容。两者不能互相替代。\n */\nexport function slotPaints(nodes: readonly VNode[] | undefined): boolean {\n return nodes?.some((node) => {\n if (node.type === Comment)\n return false\n if (node.type === Text)\n return String(node.children ?? '').trim() !== ''\n if (node.type === Fragment)\n return Array.isArray(node.children) && slotPaints(node.children as VNode[])\n return true\n }) ?? false\n}\n","import type {\n CountdownFinishDetails,\n CountdownLive,\n CountdownSchema,\n} from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { connectCountdown, countdownMachine } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useMachine } from '../../runtime/use-machine'\n\ntype CountdownProps = CountdownSchema['props']\n\n/**\n * 一段自己往下走的时间:剩余毫秒逐帧递减,按模板铺成时分秒写进根里。\n *\n * 默认插槽拿得到 `{ value, text, hours, minutes, seconds, milliseconds }`,\n * 插了内容就由作者自己排版每一段;什么都不插时根里就是按模板铺好的那串字。\n */\nexport const XhCountdown = defineComponent({\n name: 'XhCountdown',\n // 缺省值由机器与 connect 给出,这里一律 default: undefined\n props: {\n value: { type: Number, default: undefined },\n format: { type: String, default: undefined },\n active: { type: Boolean, default: undefined },\n precision: { type: Number, default: undefined },\n live: { type: String as PropType<CountdownLive>, default: undefined },\n },\n emits: {\n finish: (_details: PayloadOf<CountdownProps, 'onFinish'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: CountdownProps['onFinish'] = (details: CountdownFinishDetails) => {\n emit('finish', details)\n }\n const service = useMachine(countdownMachine, () => ({ ...props, onFinish: notify }))\n const api = computed(() => connectCountdown(service, vueNormalize))\n\n return () => {\n const current = api.value\n const content = slots.default?.({\n value: current.value,\n text: current.text,\n ...current.parts,\n })\n return h(\n 'span',\n current.getRootProps() as Record<string, unknown>,\n // 插槽为空(含 v-if 落空只剩注释节点)时退回组件自己铺好的那串字\n slotPaints(content) ? content : current.text,\n )\n }\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { DateFieldContext } from './use-date-field'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<DateFieldContext> = Symbol('xh-date-field')\n\nexport function provideDateField(ctx: DateFieldContext): void {\n provide(KEY, ctx)\n}\n\nexport function useDateFieldContext(): DateFieldContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] DateField 部件必须用在 XhDateFieldRoot 内')\n return ctx\n}\n","import type { DateFieldApi, DateFieldSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectDateField, dateFieldMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface DateFieldContext {\n api: ComputedRef<DateFieldApi>\n}\n\nexport function useDateField(\n props: DateFieldSchema['props'],\n handlers: Pick<DateFieldSchema['props'], 'onValueChange'> = {},\n): DateFieldContext {\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(dateFieldMachine, () => ({ ...props, ...handlers }), scope)\n const api = computed(() => connectDateField(service, vueNormalize))\n return { api }\n}\n","import type { DateFieldSchema, DateGranularity, DateSegmentType } from '@xihan-ui/headless'\nimport type { ControlVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideDateField, useDateFieldContext } from './context'\nimport { useDateField } from './use-date-field'\n\ntype DateFieldProps = DateFieldSchema['props']\ntype SegmentTexts = { readonly [K in DateSegmentType]?: string }\n\nexport const XhDateFieldRoot = defineComponent({\n name: 'XhDateFieldRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n value: { type: String as PropType<string | null>, default: undefined },\n defaultValue: { type: String as PropType<string | null>, default: undefined },\n min: { type: String, default: undefined },\n max: { type: String, default: undefined },\n locale: { type: String, default: undefined },\n timeZone: { type: String, default: undefined },\n granularity: { type: String as PropType<DateGranularity>, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n placeholder: { type: Object as PropType<SegmentTexts>, default: undefined },\n translations: { type: Object as PropType<SegmentTexts>, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸串\n emits: {\n 'value-change': (_details: PayloadOf<DateFieldProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<DateFieldProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const onValueChange: DateFieldProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useDateField(props as DateFieldProps, { onValueChange })\n provideDateField(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n valueAsDate: ctx.api.value.valueAsDate,\n segments: ctx.api.value.segments,\n complete: ctx.api.value.complete,\n empty: ctx.api.value.empty,\n outOfRange: ctx.api.value.outOfRange,\n focusedSegment: ctx.api.value.focusedSegment,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhDateFieldLabel = defineComponent({\n name: 'XhDateFieldLabel',\n setup(_, { slots }) {\n const ctx = useDateFieldContext()\n // 渲染为 span 而非 label,段位不是可被 for 标注的控件;点标题聚焦由连接层接管\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateFieldControl = defineComponent({\n name: 'XhDateFieldControl',\n setup(_, { slots }) {\n const ctx = useDateFieldContext()\n return () => h('div', ctx.api.value.getControlProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateFieldSegment = defineComponent({\n name: 'XhDateFieldSegment',\n props: {\n // 下标由作者声明,是哪一段由 locale 与 granularity 算出;兼收字符串\n index: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateFieldContext()\n return () => {\n const index = Math.trunc(Number(props.index))\n const api = ctx.api.value\n const state = api.segments[index]\n // 有插槽用插槽,否则渲染连接层算好的段位文本\n return h(\n 'div',\n api.getSegmentProps({ index }) as Record<string, unknown>,\n slots.default ? slots.default({ segment: state }) : state?.text,\n )\n }\n },\n})\n\nexport const XhDateFieldHiddenInput = defineComponent({\n name: 'XhDateFieldHiddenInput',\n setup() {\n const ctx = useDateFieldContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n","import type { CalendarCellProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { DatePickerContext } from './use-date-picker'\nimport { computed, inject, provide } from 'vue'\n\n/** 格子自报的那一天,供 cell-trigger 复用同一份声明(作者只写一次 value)。 */\nexport interface DatePickerCellContext {\n cell: ComputedRef<CalendarCellProps>\n}\n\n/** 分段容器自报组号,供组内的段位与隐藏输入认领起止两组之一。 */\nexport interface DatePickerInputContext {\n /** 0 是起点那组,1 是区间终点那组。 */\n index: ComputedRef<0 | 1>\n}\n\nconst KEY: InjectionKey<DatePickerContext> = Symbol('xh-date-picker')\nconst CELL_KEY: InjectionKey<DatePickerCellContext> = Symbol('xh-date-picker-cell')\nconst INPUT_KEY: InjectionKey<DatePickerInputContext> = Symbol('xh-date-picker-input')\n\n/** 没有分段容器时的组号,段位与隐藏输入落到起点那组。 */\nconst START_GROUP: DatePickerInputContext = { index: computed<0 | 1>(() => 0) }\n\nexport function provideDatePicker(ctx: DatePickerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useDatePickerContext(): DatePickerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] DatePicker 部件必须用在 XhDatePickerRoot 内')\n return ctx\n}\n\nexport function provideDatePickerCell(ctx: DatePickerCellContext): void {\n provide(CELL_KEY, ctx)\n}\n\nexport function useDatePickerCellContext(): DatePickerCellContext {\n const ctx = inject(CELL_KEY, null)\n if (!ctx)\n throw new Error('[xh] DatePicker 日期触发器必须用在 XhDatePickerCell 内')\n return ctx\n}\n\nexport function provideDatePickerInput(ctx: DatePickerInputContext): void {\n provide(INPUT_KEY, ctx)\n}\n\nexport function useDatePickerInputContext(): DatePickerInputContext {\n return inject(INPUT_KEY, START_GROUP)\n}\n","import type { CalendarSchema, DateFieldSchema, DatePickerApi, DatePickerSchema, DatePickerServices } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { ComputedRef, Ref } from 'vue'\nimport {\n calendarMachine,\n connectDatePicker,\n dateFieldMachine,\n datePickerCalendarProps,\n datePickerFieldEndProps,\n datePickerFieldProps,\n datePickerMachine,\n} from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface DatePickerContext {\n api: ComputedRef<DatePickerApi>\n /** 四台机器的把手,供部件上报 DOM 侧的事实。 */\n services: DatePickerServices\n controlRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n gridRef: Ref<HTMLElement | null>\n}\n\nexport function useDatePicker(\n props: DatePickerSchema['props'],\n handlers: Pick<DatePickerSchema['props'], 'onValueChange' | 'onOpenChange' | 'onFocusedValueChange'> = {},\n): DatePickerContext {\n const controlRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n const gridRef = ref<HTMLElement | null>(null)\n\n // 四台机器共用一份 scope,part id 里带组件名区分;两组段位不产出 id,同 scope 不会撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n\n // 三台内嵌机器的 props 都从编排机现读,编排机须先建立\n const root = useMachine(datePickerMachine, () => ({ ...props, ...handlers }), scope)\n const calendar = useMachine<CalendarSchema>(calendarMachine, () => datePickerCalendarProps(root), scope)\n const field = useMachine<DateFieldSchema>(dateFieldMachine, () => datePickerFieldProps(root), scope)\n // 终点那组段位无条件建:机器实例数不随模式变,非区间模式下它的值恒为空且不参与写值\n const fieldEnd = useMachine<DateFieldSchema>(dateFieldMachine, () => datePickerFieldEndProps(root), scope)\n const services: DatePickerServices = { root, calendar, field, fieldEnd }\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点 trigger 或段位算层内交互\n branches: () => [controlRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n root.refs.set('config', config)\n root.refs.set('registerLayer', registerLayer)\n root.refs.set('position', createPositionEngine())\n root.refs.set('getAnchorEl', () => controlRef.value)\n root.refs.set('getFloatingEl', () => positionerRef.value)\n root.refs.set('getContentEl', () => contentRef.value)\n }\n\n // 跨月后的焦点落点要等重渲,日历机器推迟一拍再从这里取网格现查\n calendar.refs.set('getGridEl', () => gridRef.value)\n\n const api = computed(() => connectDatePicker(services, vueNormalize))\n return { api, services, controlRef, positionerRef, contentRef, gridRef }\n}\n","import type { CalendarCellProps, CalendarSelectionMode, DatePickerApi, DatePickerFieldApi, DatePickerSchema } from '@xihan-ui/headless'\nimport type { Placement } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h } from 'vue'\nimport {\n provideDatePicker,\n provideDatePickerCell,\n provideDatePickerInput,\n useDatePickerCellContext,\n useDatePickerContext,\n useDatePickerInputContext,\n} from './context'\nimport { useDatePicker } from './use-date-picker'\n\ntype DatePickerProps = DatePickerSchema['props']\n\n/** 按组号取那一组分段输入;非区间模式下终点那组缺席。 */\nfunction fieldOf(api: DatePickerApi, index: 0 | 1): DatePickerFieldApi | null {\n return index === 1 ? api.fieldEnd : api.field\n}\n\nexport const XhDatePickerRoot = defineComponent({\n name: 'XhDatePickerRoot',\n // 有 connect / machine 兜底的 prop 一律 default: undefined\n props: {\n value: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String, default: undefined },\n max: { type: String, default: undefined },\n locale: { type: String, default: undefined },\n timeZone: { type: String, default: undefined },\n selectionMode: { type: String as PropType<CalendarSelectionMode>, default: undefined },\n isDateUnavailable: { type: Function as PropType<(value: string) => boolean>, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n // 区间终点那份隐藏输入的表单名;不给即终点不参与提交\n endName: { type: String, default: undefined },\n // 区间模式下两组段位各自的读屏名字\n translations: { type: Object as PropType<DatePickerProps['translations']>, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n closeOnSelect: { type: Boolean, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值;选中值恒为数组,单选时长度 ≤ 1\n emits: {\n 'value-change': (_details: PayloadOf<DatePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<DatePickerProps, 'onOpenChange'>) => true,\n 'focused-value-change': (_details: PayloadOf<DatePickerProps, 'onFocusedValueChange'>) => true,\n 'update:value': (_value: PayloadOf<DatePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<DatePickerProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: DatePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: DatePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n // 聚焦日只对外播报,不提供 v-model\n const notifyFocus: DatePickerProps['onFocusedValueChange'] = details => emit('focused-value-change', details)\n const ctx = useDatePicker(props as DatePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n onFocusedValueChange: notifyFocus,\n })\n provideDatePicker(ctx)\n // 网格与段位由作者照插槽里的 weeks / segments 自行渲染\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n valueAsString: ctx.api.value.valueAsString,\n focusedValue: ctx.api.value.focusedValue,\n visibleMonth: ctx.api.value.calendar.visibleMonth,\n weeks: ctx.api.value.calendar.weeks,\n weekDays: ctx.api.value.calendar.weekDays,\n headingLabel: ctx.api.value.calendar.headingLabel,\n canGoPrev: ctx.api.value.calendar.canGoPrev,\n canGoNext: ctx.api.value.calendar.canGoNext,\n segments: ctx.api.value.field.segments,\n // 区间终点那组段位;非区间模式为空数组,作者据此决定渲不渲第二组\n endSegments: ctx.api.value.fieldEnd?.segments ?? [],\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhDatePickerLabel = defineComponent({\n name: 'XhDatePickerLabel',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n // 渲染为 span 而非 label,点击聚焦由连接层接管\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerControl = defineComponent({\n name: 'XhDatePickerControl',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhDatePickerInput = defineComponent({\n name: 'XhDatePickerInput',\n props: {\n // 组号:0 起点、1 区间终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDatePickerContext()\n const index = computed<0 | 1>(() => (Number(props.index) === 1 ? 1 : 0))\n // 组内的段位与隐藏输入据此认领起止\n provideDatePickerInput({ index })\n // role=group 的分段容器,也是换段时的查询边界\n return () => h(\n 'div',\n ctx.api.value.getInputProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDatePickerSegment = defineComponent({\n name: 'XhDatePickerSegment',\n props: {\n // 段位下标,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDatePickerContext()\n const group = useDatePickerInputContext()\n return () => {\n const index = Math.trunc(Number(props.index))\n const field = fieldOf(ctx.api.value, group.index.value)\n // 非区间模式下写在终点组里的段位无处落脚,不渲染\n if (!field)\n return null\n const state = field.segments[index]\n // 有插槽用插槽,否则渲染连接层算好的段位文本\n return h(\n 'div',\n field.getSegmentProps({ index }) as Record<string, unknown>,\n slots.default ? slots.default({ segment: state }) : state?.text,\n )\n }\n },\n})\n\nexport const XhDatePickerClearTrigger = defineComponent({\n name: 'XhDatePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerTrigger = defineComponent({\n name: 'XhDatePickerTrigger',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerPositioner = defineComponent({\n name: 'XhDatePickerPositioner',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhDatePickerContent = defineComponent({\n name: 'XhDatePickerContent',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\n// 以下是内嵌日历的角色节点,DOM 上带 data-scope=\"calendar\",行为取自本组件持有的日历机器\n\nexport const XhDatePickerCalendar = defineComponent({\n name: 'XhDatePickerCalendar',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n // 内嵌日历的挂载点,同时是日历的根节点\n return () => h('div', ctx.api.value.getCalendarProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerHeader = defineComponent({\n name: 'XhDatePickerHeader',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('div', ctx.api.value.calendar.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerPrevTrigger = defineComponent({\n name: 'XhDatePickerPrevTrigger',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerNextTrigger = defineComponent({\n name: 'XhDatePickerNextTrigger',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerHeading = defineComponent({\n name: 'XhDatePickerHeading',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n // 有插槽用插槽,否则渲染 headingLabel\n return () => h(\n 'div',\n ctx.api.value.calendar.getHeadingProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.headingLabel,\n )\n },\n})\n\nexport const XhDatePickerGrid = defineComponent({\n name: 'XhDatePickerGrid',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h(\n 'div',\n { ...ctx.api.value.calendar.getGridProps() as Record<string, unknown>, ref: ctx.gridRef },\n slots.default?.(),\n )\n },\n})\n\nexport const XhDatePickerGridHead = defineComponent({\n name: 'XhDatePickerGridHead',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridHeadProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerGridBody = defineComponent({\n name: 'XhDatePickerGridBody',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 表头行与日期行共用同一个 role=row\nexport const XhDatePickerWeekRow = defineComponent({\n name: 'XhDatePickerWeekRow',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n return () => h('div', ctx.api.value.calendar.getWeekRowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerWeekDay = defineComponent({\n name: 'XhDatePickerWeekDay',\n props: {\n // 列序 0-6,兼收字符串\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDatePickerContext()\n const index = computed(() => Number(props.value))\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekDayProps({ value: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.weekDays[index.value]?.label,\n )\n },\n})\n\nexport const XhDatePickerCell = defineComponent({\n name: 'XhDatePickerCell',\n props: {\n /** ISO 日期串。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDatePickerContext()\n const cell = computed<CalendarCellProps>(() => ({ value: props.value }))\n provideDatePickerCell({ cell })\n // 不上报格子卸载,翻月后由日历机器按聚焦日重新落点\n return () => h('div', ctx.api.value.calendar.getCellProps(cell.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDatePickerCellTrigger = defineComponent({\n name: 'XhDatePickerCellTrigger',\n setup(_, { slots }) {\n const ctx = useDatePickerContext()\n const { cell } = useDatePickerCellContext()\n return () => h(\n 'div',\n ctx.api.value.calendar.getCellTriggerProps(cell.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDatePickerHiddenInput = defineComponent({\n name: 'XhDatePickerHiddenInput',\n props: {\n // 写在分段容器外面时用它指明属于哪一端;写在容器里面不必给,跟着容器走\n index: { type: [Number, String] as PropType<number | string>, default: undefined },\n },\n setup(props) {\n const ctx = useDatePickerContext()\n const group = useDatePickerInputContext()\n return () => {\n const index = props.index === undefined ? group.index.value : (Number(props.index) === 1 ? 1 : 0)\n const field = fieldOf(ctx.api.value, index)\n // 非区间模式下终点那份没有可提交的值,不渲染\n if (!field)\n return null\n return h('input', field.getHiddenInputProps() as Record<string, unknown>)\n }\n },\n})\n","import type { DescriptionsApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface DescriptionsContext {\n api: ComputedRef<DescriptionsApi>\n}\n\nconst KEY: InjectionKey<DescriptionsContext> = Symbol('xh-descriptions')\n\nexport function provideDescriptions(ctx: DescriptionsContext): void {\n provide(KEY, ctx)\n}\n\nexport function useDescriptionsContext(): DescriptionsContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Descriptions 部件必须用在 XhDescriptionsRoot 内')\n return ctx\n}\n","import type { DescriptionsColumns, DescriptionsPlacement } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectDescriptions } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideDescriptions, useDescriptionsContext } from './context'\n\nexport const XhDescriptionsRoot = defineComponent({\n name: 'XhDescriptionsRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n columns: { type: Number as PropType<DescriptionsColumns>, default: undefined },\n bordered: Boolean,\n placement: { type: String as PropType<DescriptionsPlacement>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n /** 根渲染成哪个标签,默认 dl。 */\n as: { type: String, default: 'dl' },\n },\n setup(props, { slots }) {\n const api = computed(() => connectDescriptions({\n columns: props.columns,\n bordered: props.bordered,\n placement: props.placement,\n size: props.size,\n }, vueNormalize))\n provideDescriptions({ api })\n return () => h(props.as, api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 一组「标签 + 取值」包一层,让它成为网格里的一格;dl 允许 div 包裹成对的 dt/dd\nexport const XhDescriptionsItem = defineComponent({\n name: 'XhDescriptionsItem',\n props: {\n /** 每一格渲染成哪个标签,默认 div。 */\n as: { type: String, default: 'div' },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(props.as, ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDescriptionsLabel = defineComponent({\n name: 'XhDescriptionsLabel',\n props: {\n /** 标签渲染成哪个标签,默认 dt。 */\n as: { type: String, default: 'dt' },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(props.as, ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDescriptionsValue = defineComponent({\n name: 'XhDescriptionsValue',\n props: {\n /** 取值渲染成哪个标签,默认 dd。 */\n as: { type: String, default: 'dd' },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(props.as, ctx.api.value.getValueProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { DialogContext } from './use-dialog'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<DialogContext> = Symbol('xh-dialog')\n\nexport function provideDialog(ctx: DialogContext): void {\n provide(KEY, ctx)\n}\n\nexport function useDialogContext(): DialogContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Dialog 部件必须用在 XhDialogRoot 内')\n return ctx\n}\n","import type { PresenceHandle } from '@xihan-ui/behavior/presence'\nimport type { DialogApi, DialogSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { attachCssExit, createPresence } from '@xihan-ui/behavior/presence'\nimport { connectDialog, dialogMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface DialogContext {\n service: Service<DialogSchema>\n api: ComputedRef<DialogApi>\n rendered: Ref<boolean>\n contentRef: Ref<HTMLElement | null>\n backdropRef: Ref<HTMLElement | null>\n}\n\nexport function useDialog(\n props: DialogSchema['props'],\n onOpenChange?: DialogSchema['props']['onOpenChange'],\n): DialogContext {\n const contentRef = ref<HTMLElement | null>(null)\n const backdropRef = ref<HTMLElement | null>(null)\n const rendered = ref(false)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(dialogMachine, () => ({ ...props, onOpenChange }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n // 只提供注册函数,入栈出栈由机器的 trackOverlay 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'modal',\n node: () => contentRef.value,\n branches: () => [],\n isModal: () => props.modal ?? true,\n setModal: () => {},\n surfaces: () => [backdropRef.value].filter(Boolean) as Element[],\n })\n const presence: PresenceHandle = createPresence({\n config,\n open: service.state.get() === 'open',\n onRenderedChange: (r) => {\n rendered.value = r\n },\n })\n rendered.value = presence.rendered\n\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('presence', presence)\n service.refs.set('getContentEl', () => contentRef.value)\n service.refs.set('getTriggerEl', () => null)\n service.refs.set('branches', () => [])\n\n // data-state 提交到 DOM 之后再驱动 presence,让退场探测读到正确的 animationName\n watch(() => service.state.get() === 'open', open => presence.update(open), { flush: 'post' })\n\n // content 就位后把它的 CSS 退场动画接到 presence 退出租约,无动画时关闭即卸载\n let detachExit: (() => void) | undefined\n watch(contentRef, (el) => {\n detachExit?.()\n detachExit = el ? attachCssExit(el, presence) : undefined\n }, { flush: 'post' })\n\n onBeforeUnmount(() => {\n detachExit?.()\n presence.dispose()\n })\n }\n\n const api = computed(() => connectDialog(service, vueNormalize))\n return { service, api, rendered, contentRef, backdropRef }\n}\n","import type { DialogSchema } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, Teleport } from 'vue'\nimport { provideDialog, useDialogContext } from './context'\nimport { useDialog } from './use-dialog'\n\ntype DialogProps = DialogSchema['props']\n\nexport const XhDialogRoot = defineComponent({\n name: 'XhDialogRoot',\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n modal: { type: Boolean, default: true },\n role: { type: String as PropType<'dialog' | 'alertdialog'>, default: 'dialog' },\n closeOnEscape: { type: Boolean, default: true },\n closeOnInteractOutside: { type: Boolean, default: undefined },\n restoreFocus: { type: Boolean, default: true },\n size: { type: String as PropType<Size>, default: undefined },\n translations: { type: Object as PropType<DialogProps['translations']>, default: undefined },\n },\n // open-change 携带 { open },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<DialogProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<DialogProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: DialogProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useDialog(props as DialogProps, notify)\n provideDialog(ctx)\n return () => slots.default?.({ open: ctx.api.value.open, setOpen: ctx.api.value.setOpen })\n },\n})\n\nexport const XhDialogTrigger = defineComponent({\n name: 'XhDialogTrigger',\n setup(_, { slots }) {\n const ctx = useDialogContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDialogContent = defineComponent({\n name: 'XhDialogContent',\n setup(_, { slots }) {\n const ctx = useDialogContext()\n return () => {\n if (!ctx.rendered.value)\n return null\n const api = ctx.api.value\n return h(Teleport, { to: 'body' }, [\n api.open || ctx.rendered.value\n ? h('div', {\n ...api.getBackdropProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.backdropRef.value = el as HTMLElement },\n })\n : null,\n h('div', api.getPositionerProps() as Record<string, unknown>, [\n h('div', {\n ...api.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.()),\n ]),\n ])\n }\n },\n})\n\nexport const XhDialogTitle = defineComponent({\n name: 'XhDialogTitle',\n setup(_, { slots }) {\n const ctx = useDialogContext()\n return () => h('h2', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDialogDescription = defineComponent({\n name: 'XhDialogDescription',\n setup(_, { slots }) {\n const ctx = useDialogContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDialogCloseTrigger = defineComponent({\n name: 'XhDialogCloseTrigger',\n setup(_, { slots }) {\n const ctx = useDialogContext()\n return () => h('button', ctx.api.value.getCloseTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { DrawerContext } from './use-drawer'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<DrawerContext> = Symbol('xh-drawer')\n\nexport function provideDrawer(ctx: DrawerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useDrawerContext(): DrawerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Drawer 部件必须用在 XhDrawerRoot 内')\n return ctx\n}\n","import type { PresenceHandle } from '@xihan-ui/behavior/presence'\nimport type { DrawerApi, DrawerSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { attachCssExit, createPresence } from '@xihan-ui/behavior/presence'\nimport { connectDrawer, drawerMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface DrawerContext {\n service: Service<DrawerSchema>\n api: ComputedRef<DrawerApi>\n rendered: Ref<boolean>\n contentRef: Ref<HTMLElement | null>\n backdropRef: Ref<HTMLElement | null>\n}\n\nexport function useDrawer(\n props: DrawerSchema['props'],\n onOpenChange?: DrawerSchema['props']['onOpenChange'],\n): DrawerContext {\n const contentRef = ref<HTMLElement | null>(null)\n const backdropRef = ref<HTMLElement | null>(null)\n const rendered = ref(false)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(drawerMachine, () => ({ ...props, onOpenChange }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n // 只提供注册函数,入栈出栈由机器的 trackOverlay 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'modal',\n node: () => contentRef.value,\n branches: () => [],\n isModal: () => props.modal ?? true,\n setModal: () => {},\n surfaces: () => [backdropRef.value].filter(Boolean) as Element[],\n })\n const presence: PresenceHandle = createPresence({\n config,\n open: service.state.get() === 'open',\n onRenderedChange: (r) => {\n rendered.value = r\n },\n })\n rendered.value = presence.rendered\n\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('presence', presence)\n service.refs.set('getContentEl', () => contentRef.value)\n service.refs.set('getTriggerEl', () => null)\n service.refs.set('branches', () => [])\n\n // data-state 提交到 DOM 之后再驱动 presence,让退场探测读到正确的 animationName\n watch(() => service.state.get() === 'open', open => presence.update(open), { flush: 'post' })\n\n // content 就位后把它的 CSS 退场动画接到 presence 退出租约,无动画时关闭即卸载\n let detachExit: (() => void) | undefined\n watch(contentRef, (el) => {\n detachExit?.()\n detachExit = el ? attachCssExit(el, presence) : undefined\n }, { flush: 'post' })\n\n onBeforeUnmount(() => {\n detachExit?.()\n presence.dispose()\n })\n }\n\n const api = computed(() => connectDrawer(service, vueNormalize))\n return { service, api, rendered, contentRef, backdropRef }\n}\n","import type { DrawerSchema, DrawerSide } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, Teleport } from 'vue'\nimport { provideDrawer, useDrawerContext } from './context'\nimport { useDrawer } from './use-drawer'\n\ntype DrawerProps = DrawerSchema['props']\n\nexport const XhDrawerRoot = defineComponent({\n name: 'XhDrawerRoot',\n props: {\n // 缺省值由 connect 给出,这里一律 default: undefined\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n modal: { type: Boolean, default: undefined },\n side: { type: String as PropType<DrawerSide>, default: undefined },\n role: { type: String as PropType<'dialog' | 'alertdialog'>, default: undefined },\n closeOnEscape: { type: Boolean, default: undefined },\n closeOnInteractOutside: { type: Boolean, default: undefined },\n restoreFocus: { type: Boolean, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n translations: { type: Object as PropType<DrawerProps['translations']>, default: undefined },\n },\n // open-change 携带 { open },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<DrawerProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<DrawerProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: DrawerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useDrawer(props as DrawerProps, notify)\n provideDrawer(ctx)\n // root 是真实节点,content 会被 portal 到 body,data-side 挂在这里供页面内的部分读取\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n side: ctx.api.value.side,\n setOpen: ctx.api.value.setOpen,\n }))\n },\n})\n\nexport const XhDrawerTrigger = defineComponent({\n name: 'XhDrawerTrigger',\n setup(_, { slots }) {\n const ctx = useDrawerContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDrawerContent = defineComponent({\n name: 'XhDrawerContent',\n setup(_, { slots }) {\n const ctx = useDrawerContext()\n return () => {\n // presence 判定不在场则整棵不渲染,退场动画播完才翻假\n if (!ctx.rendered.value)\n return null\n const api = ctx.api.value\n return h(Teleport, { to: 'body' }, [\n h('div', {\n ...api.getBackdropProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.backdropRef.value = el as HTMLElement },\n }),\n h('div', api.getPositionerProps() as Record<string, unknown>, [\n h('div', {\n ...api.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.()),\n ]),\n ])\n }\n },\n})\n\nexport const XhDrawerTitle = defineComponent({\n name: 'XhDrawerTitle',\n setup(_, { slots }) {\n const ctx = useDrawerContext()\n return () => h('h2', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDrawerDescription = defineComponent({\n name: 'XhDrawerDescription',\n setup(_, { slots }) {\n const ctx = useDrawerContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDrawerCloseTrigger = defineComponent({\n name: 'XhDrawerCloseTrigger',\n setup(_, { slots }) {\n const ctx = useDrawerContext()\n return () => h('button', ctx.api.value.getCloseTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { DynamicInputItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { DynamicInputContext } from './use-dynamic-input'\nimport { inject, provide } from 'vue'\n\n/** 行自报的下标,供 item-content / item-action 与三个把手复用同一份声明。 */\nexport interface DynamicInputItemContext {\n item: ComputedRef<DynamicInputItemProps>\n}\n\nconst KEY: InjectionKey<DynamicInputContext> = Symbol('xh-dynamic-input')\nconst ITEM_KEY: InjectionKey<DynamicInputItemContext> = Symbol('xh-dynamic-input-item')\n\nexport function provideDynamicInput(ctx: DynamicInputContext): void {\n provide(KEY, ctx)\n}\n\nexport function useDynamicInputContext(): DynamicInputContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] DynamicInput 部件必须用在 XhDynamicInputRoot 内')\n return ctx\n}\n\nexport function provideDynamicInputItem(ctx: DynamicInputItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useDynamicInputItemContext(): DynamicInputItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] DynamicInput 行内部件必须用在 XhDynamicInputItem 内')\n return ctx\n}\n","import type { DynamicInputApi, DynamicInputSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectDynamicInput, dynamicInputMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface DynamicInputContext {\n api: ComputedRef<DynamicInputApi>\n service: Service<DynamicInputSchema>\n}\n\nexport function useDynamicInput(\n props: DynamicInputSchema['props'],\n handlers: Pick<DynamicInputSchema['props'], 'onValueChange'> = {},\n): DynamicInputContext {\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(dynamicInputMachine, () => ({ ...props, ...handlers }), scope)\n const api = computed(() => connectDynamicInput(service, vueNormalize))\n return { api, service }\n}\n","import type { DynamicInputItemProps, DynamicInputSchema, DynamicInputTranslations } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h } from 'vue'\nimport { provideDynamicInput, provideDynamicInputItem, useDynamicInputContext, useDynamicInputItemContext } from './context'\nimport { useDynamicInput } from './use-dynamic-input'\n\ntype DynamicInputProps = DynamicInputSchema['props']\n\nexport const XhDynamicInputRoot = defineComponent({\n name: 'XhDynamicInputRoot',\n // 有 connect 与机器兜底的 prop 一律 default: undefined\n props: {\n // default: undefined 表示非受控\n value: { type: Array as PropType<unknown[]>, default: undefined },\n defaultValue: { type: Array as PropType<unknown[]>, default: undefined },\n min: { type: Number, default: undefined },\n max: { type: Number, default: undefined },\n createItem: { type: Function as PropType<() => unknown>, default: undefined },\n movable: Boolean,\n disabled: Boolean,\n translations: { type: Object as PropType<Partial<DynamicInputTranslations>>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸数组\n emits: {\n 'value-change': (_details: PayloadOf<DynamicInputProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<DynamicInputProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const onValueChange: DynamicInputProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useDynamicInput(props as DynamicInputProps, { onValueChange })\n provideDynamicInput(ctx)\n // items 里每一项都带 key,作者铺行时直接 :key=\"row.key\"\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n items: ctx.api.value.items,\n value: ctx.api.value.value,\n count: ctx.api.value.count,\n empty: ctx.api.value.empty,\n atMin: ctx.api.value.atMin,\n atMax: ctx.api.value.atMax,\n canAdd: ctx.api.value.canAdd,\n setValue: ctx.api.value.setValue,\n add: ctx.api.value.add,\n remove: ctx.api.value.remove,\n move: ctx.api.value.move,\n moveUp: ctx.api.value.moveUp,\n moveDown: ctx.api.value.moveDown,\n }))\n },\n})\n\nexport const XhDynamicInputItem = defineComponent({\n name: 'XhDynamicInputItem',\n props: {\n // 下标由作者声明,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDynamicInputContext()\n const item = computed<DynamicInputItemProps>(() => ({ index: Math.trunc(Number(props.index)) }))\n provideDynamicInputItem({ item })\n return () => h('div', ctx.api.value.getItemProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDynamicInputItemContent = defineComponent({\n name: 'XhDynamicInputItemContent',\n setup(_, { slots }) {\n const ctx = useDynamicInputContext()\n const { item } = useDynamicInputItemContext()\n return () => h('div', ctx.api.value.getItemContentProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDynamicInputItemAction = defineComponent({\n name: 'XhDynamicInputItemAction',\n setup(_, { slots }) {\n const ctx = useDynamicInputContext()\n const { item } = useDynamicInputItemContext()\n return () => h('div', ctx.api.value.getItemActionProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDynamicInputAddTrigger = defineComponent({\n name: 'XhDynamicInputAddTrigger',\n setup(_, { slots }) {\n const ctx = useDynamicInputContext()\n return () => h('button', ctx.api.value.getAddTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDynamicInputRemoveTrigger = defineComponent({\n name: 'XhDynamicInputRemoveTrigger',\n setup(_, { slots }) {\n const ctx = useDynamicInputContext()\n const { item } = useDynamicInputItemContext()\n return () => h('button', ctx.api.value.getRemoveTriggerProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDynamicInputMoveUpTrigger = defineComponent({\n name: 'XhDynamicInputMoveUpTrigger',\n setup(_, { slots }) {\n const ctx = useDynamicInputContext()\n const { item } = useDynamicInputItemContext()\n return () => h('button', ctx.api.value.getMoveUpTriggerProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDynamicInputMoveDownTrigger = defineComponent({\n name: 'XhDynamicInputMoveDownTrigger',\n setup(_, { slots }) {\n const ctx = useDynamicInputContext()\n const { item } = useDynamicInputItemContext()\n return () => h('button', ctx.api.value.getMoveDownTriggerProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { EditableContext } from './use-editable'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<EditableContext> = Symbol('xh-editable')\n\nexport function provideEditable(ctx: EditableContext): void {\n provide(KEY, ctx)\n}\n\nexport function useEditableContext(): EditableContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Editable 部件必须用在 XhEditableRoot 内')\n return ctx\n}\n","import type { EditableApi, EditableSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectEditable, editableMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\ntype Props = EditableSchema['props']\n\nexport interface EditableCallbacks {\n onValueChange?: Props['onValueChange']\n onValueCommit?: Props['onValueCommit']\n onValueRevert?: Props['onValueRevert']\n onEditChange?: Props['onEditChange']\n}\n\nexport interface EditableContext {\n api: ComputedRef<EditableApi>\n /** 机器实例,供部件上报 DOM 侧的事实。 */\n service: Service<EditableSchema>\n /** 输入框节点,进编辑态后焦点搬进它。 */\n inputRef: Ref<HTMLElement | null>\n /** 预览区节点,退出编辑态后焦点还给它。 */\n previewRef: Ref<HTMLElement | null>\n}\n\nexport function useEditable(props: Props, callbacks: EditableCallbacks = {}): EditableContext {\n const inputRef = ref<HTMLElement | null>(null)\n const previewRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(editableMachine, () => ({ ...props, ...callbacks }), scope)\n\n // 传 getter 而非节点,进出编辑态时由机器现取\n service.refs.set('getInputEl', () => inputRef.value)\n service.refs.set('getPreviewEl', () => previewRef.value)\n\n const api = computed(() => connectEditable(service, vueNormalize))\n return { api, service, inputRef, previewRef }\n}\n","import type { EditableActivationMode, EditableSchema, EditableSubmitMode } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideEditable, useEditableContext } from './context'\nimport { useEditable } from './use-editable'\n\ntype EditableProps = EditableSchema['props']\n\nexport const XhEditableRoot = defineComponent({\n name: 'XhEditableRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n edit: { type: Boolean, default: undefined },\n defaultEdit: Boolean,\n placeholder: { type: String, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n maxLength: { type: Number, default: undefined },\n name: { type: String, default: undefined },\n submitMode: { type: String as PropType<EditableSubmitMode>, default: undefined },\n activationMode: { type: String as PropType<EditableActivationMode>, default: undefined },\n selectOnFocus: { type: Boolean, default: undefined },\n autoResize: Boolean,\n },\n // value-change / edit-change 携带 details,update:* 携带裸值;提交与撤销只有语义事件\n emits: {\n 'value-change': (_details: PayloadOf<EditableProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<EditableProps, 'onValueChange'>['value']) => true,\n 'value-commit': (_details: PayloadOf<EditableProps, 'onValueCommit'>) => true,\n 'value-revert': (_details: PayloadOf<EditableProps, 'onValueRevert'>) => true,\n 'edit-change': (_details: PayloadOf<EditableProps, 'onEditChange'>) => true,\n 'update:edit': (_edit: PayloadOf<EditableProps, 'onEditChange'>['edit']) => true,\n },\n setup(props, { slots, emit }) {\n const ctx = useEditable(props as EditableProps, {\n onValueChange: (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n },\n onValueCommit: details => emit('value-commit', details),\n onValueRevert: details => emit('value-revert', details),\n onEditChange: (details) => {\n emit('edit-change', details)\n emit('update:edit', details.edit)\n },\n })\n provideEditable(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n displayValue: ctx.api.value.displayValue,\n editing: ctx.api.value.editing,\n empty: ctx.api.value.empty,\n setValue: ctx.api.value.setValue,\n edit: ctx.api.value.edit,\n submit: ctx.api.value.submit,\n cancel: ctx.api.value.cancel,\n }))\n },\n})\n\nexport const XhEditableLabel = defineComponent({\n name: 'XhEditableLabel',\n setup(_, { slots }) {\n const ctx = useEditableContext()\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhEditableArea = defineComponent({\n name: 'XhEditableArea',\n setup(_, { slots }) {\n const ctx = useEditableContext()\n return () => h('div', ctx.api.value.getAreaProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhEditablePreview = defineComponent({\n name: 'XhEditablePreview',\n setup(_, { slots }) {\n const ctx = useEditableContext()\n // 有插槽用插槽,否则显示当前值,值为空时显示 placeholder\n return () => h(\n 'span',\n { ...ctx.api.value.getPreviewProps() as Record<string, unknown>, ref: ctx.previewRef },\n slots.default?.() ?? ctx.api.value.displayValue,\n )\n },\n})\n\nexport const XhEditableInput = defineComponent({\n name: 'XhEditableInput',\n setup() {\n const ctx = useEditableContext()\n return () => h('input', { ...ctx.api.value.getInputProps() as Record<string, unknown>, ref: ctx.inputRef })\n },\n})\n\nexport const XhEditableEditTrigger = defineComponent({\n name: 'XhEditableEditTrigger',\n setup(_, { slots }) {\n const ctx = useEditableContext()\n return () => h('button', ctx.api.value.getEditTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhEditableSubmitTrigger = defineComponent({\n name: 'XhEditableSubmitTrigger',\n setup(_, { slots }) {\n const ctx = useEditableContext()\n return () => h('button', ctx.api.value.getSubmitTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhEditableCancelTrigger = defineComponent({\n name: 'XhEditableCancelTrigger',\n setup(_, { slots }) {\n const ctx = useEditableContext()\n return () => h('button', ctx.api.value.getCancelTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhEditableControl = defineComponent({\n name: 'XhEditableControl',\n setup(_, { slots }) {\n const ctx = useEditableContext()\n return () => h('div', ctx.api.value.getControlProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { EllipsisApi, EllipsisSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectEllipsis, ellipsisMachine } from '@xihan-ui/headless'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\n/** 对外的两个回调。 */\nexport type EllipsisNotifiers = Pick<EllipsisSchema['props'], 'onExpandedChange' | 'onOverflowChange'>\n\nexport interface EllipsisContext {\n api: ComputedRef<EllipsisApi>\n service: Service<EllipsisSchema>\n /** 夹字的那个盒子:溢出与文字都量它。 */\n rootRef: Ref<HTMLElement | null>\n}\n\n/** 量测与监听都在机器的效应里跑,DOM 取值口经 refs 交进去。 */\nexport function useEllipsis(\n props: EllipsisSchema['props'],\n notify?: EllipsisNotifiers,\n): EllipsisContext {\n const rootRef = ref<HTMLElement | null>(null)\n // 传响应式 props 对象本身而非快照,供机器每次读时重新展开\n const service = useMachine(ellipsisMachine, () => ({ ...props, ...notify }))\n\n service.refs.set('getRootEl', () => rootRef.value)\n\n const api = computed(() => connectEllipsis(service, vueNormalize))\n return { api, service, rootRef }\n}\n","import type { EllipsisSchema } from '@xihan-ui/headless'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { useEllipsis } from './use-ellipsis'\n\ntype EllipsisProps = EllipsisSchema['props']\n\n/**\n * 一段夹住的文字:单行收成省略号,多行按行数裁。\n * 溢出与否是量出来的,落在 data-overflowing 上,也经默认插槽的 overflowing 交出去——\n * 要不要再套一层提示由作者决定,这里不做浮层。\n */\nexport const XhEllipsis = defineComponent({\n name: 'XhEllipsis',\n // 缺省值由机器与 connect 决定,这里一律 default: undefined\n props: {\n lines: { type: Number, default: undefined },\n expandable: Boolean,\n expanded: { type: Boolean, default: undefined },\n defaultExpanded: Boolean,\n tooltip: Boolean,\n },\n // expanded-change 携带 { expanded },update:expanded 携带裸布尔\n emits: {\n 'expanded-change': (_details: PayloadOf<EllipsisProps, 'onExpandedChange'>) => true,\n 'update:expanded': (_expanded: PayloadOf<EllipsisProps, 'onExpandedChange'>['expanded']) => true,\n 'overflow-change': (_details: PayloadOf<EllipsisProps, 'onOverflowChange'>) => true,\n },\n setup(props, { slots, emit }) {\n const ctx = useEllipsis(props as EllipsisProps, {\n onExpandedChange: (details) => {\n emit('expanded-change', details)\n emit('update:expanded', details.expanded)\n },\n onOverflowChange: details => emit('overflow-change', details),\n })\n return () => h('div', {\n ...ctx.api.value.getRootProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.rootRef.value = el as HTMLElement },\n }, slots.default?.({\n expanded: ctx.api.value.expanded,\n overflowing: ctx.api.value.overflowing,\n setExpanded: ctx.api.value.setExpanded,\n measure: ctx.api.value.measure,\n }))\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { EmptyStateContext } from './use-empty-state'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<EmptyStateContext> = Symbol('xh-empty-state')\n\nexport function provideEmptyState(ctx: EmptyStateContext): void {\n provide(KEY, ctx)\n}\n\nexport function useEmptyStateContext(): EmptyStateContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] EmptyState 部件必须用在 XhEmptyStateRoot 内')\n return ctx\n}\n","import type { EmptyStateApi, EmptyStateProps } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectEmptyState } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport interface EmptyStateContext {\n api: ComputedRef<EmptyStateApi>\n}\n\n// EmptyState 无状态机也不派生 part id,props 变了由 computed 重算属性\nexport function useEmptyState(props: EmptyStateProps): EmptyStateContext {\n const api = computed(() => connectEmptyState(props, vueNormalize))\n return { api }\n}\n","import type { EmptyStateLive, EmptyStateProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { provideEmptyState, useEmptyStateContext } from './context'\nimport { useEmptyState } from './use-empty-state'\n\n/** 根节点渲染为 div,缺省值由 connect 给出,这里一律 default: undefined */\nexport const XhEmptyStateRoot = defineComponent({\n name: 'XhEmptyStateRoot',\n props: {\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: undefined },\n live: { type: String as PropType<EmptyStateLive>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useEmptyState(props as EmptyStateProps)\n provideEmptyState(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 装饰性图标容器,内容由作者塞(字形、内联 svg 都行)\nexport const XhEmptyStateIcon = defineComponent({\n name: 'XhEmptyStateIcon',\n setup(_, { slots }) {\n const ctx = useEmptyStateContext()\n return () => h('span', ctx.api.value.getIconProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 标题渲染为 p 而不是 hN:它只做视觉主次,不该往文档大纲里插一级标题\nexport const XhEmptyStateTitle = defineComponent({\n name: 'XhEmptyStateTitle',\n setup(_, { slots }) {\n const ctx = useEmptyStateContext()\n return () => h('p', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhEmptyStateDescription = defineComponent({\n name: 'XhEmptyStateDescription',\n setup(_, { slots }) {\n const ctx = useEmptyStateContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 操作槽只排版,按钮由作者放进插槽\nexport const XhEmptyStateAction = defineComponent({\n name: 'XhEmptyStateAction',\n setup(_, { slots }) {\n const ctx = useEmptyStateContext()\n return () => h('div', ctx.api.value.getActionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { FieldContext } from './use-field'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<FieldContext> = Symbol('xh-field')\n\nexport function provideField(ctx: FieldContext): void {\n provide(KEY, ctx)\n}\n\nexport function useFieldContext(): FieldContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Field 部件必须用在 XhFieldRoot 内')\n return ctx\n}\n","import type { FieldApi, FieldProps } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectField } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface FieldContext {\n api: ComputedRef<FieldApi>\n}\n\n// Field 无状态机,只用一份实例级 scope 派生 part id,props 变了由 computed 重算属性\nexport function useField(props: FieldProps): FieldContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const api = computed(() => connectField(props, scope, vueNormalize))\n return { api }\n}\n","import type { FieldProps } from '@xihan-ui/headless'\nimport type { VNode } from 'vue'\nimport { cloneVNode, Comment, defineComponent, h, Text } from 'vue'\nimport { provideField, useFieldContext } from './context'\nimport { useField } from './use-field'\n\n/** 滤掉注释与纯文本节点,只留能挂属性的节点。 */\nfunction attributable(nodes: readonly VNode[]): VNode[] {\n return nodes.filter(node => node.type !== Comment && node.type !== Text)\n}\n\nexport const XhFieldRoot = defineComponent({\n name: 'XhFieldRoot',\n props: {\n invalid: Boolean,\n required: Boolean,\n disabled: Boolean,\n // 控件节点的 id,不占用根节点自己的 DOM id\n controlId: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useField(props as FieldProps)\n provideField(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldLabel = defineComponent({\n name: 'XhFieldLabel',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldControl = defineComponent({\n name: 'XhFieldControl',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n return () => {\n const controlProps = ctx.api.value.getControlProps() as Record<string, unknown>\n // control props 经 slot props 交给作者,控件节点由作者渲染\n const children = slots.default?.(controlProps) ?? []\n const nodes = attributable(children)\n // 单个节点直接合并属性,多个节点视为作者已用 slot props 自行接线\n return nodes.length === 1 ? cloneVNode(nodes[0]!, controlProps) : children\n }\n },\n})\n\nexport const XhFieldDescription = defineComponent({\n name: 'XhFieldDescription',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldErrorText = defineComponent({\n name: 'XhFieldErrorText',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n // 节点常挂,靠 hidden 显隐\n return () => h('p', ctx.api.value.getErrorTextProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { FileUploadItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { FileUploadContext } from './use-file-upload'\nimport { inject, provide } from 'vue'\n\n/** 条目自报的文件,供 item-name / item-size-text / 删除按钮这些子部件复用同一份声明。 */\nexport interface FileUploadItemContext {\n item: ComputedRef<FileUploadItemProps>\n}\n\nconst KEY: InjectionKey<FileUploadContext> = Symbol('xh-file-upload')\nconst ITEM_KEY: InjectionKey<FileUploadItemContext> = Symbol('xh-file-upload-item')\n\nexport function provideFileUpload(ctx: FileUploadContext): void {\n provide(KEY, ctx)\n}\n\nexport function useFileUploadContext(): FileUploadContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] FileUpload 部件必须用在 XhFileUploadRoot 内')\n return ctx\n}\n\nexport function provideFileUploadItem(ctx: FileUploadItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useFileUploadItemContext(): FileUploadItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] FileUpload 条目子部件必须用在 XhFileUploadItem 内')\n return ctx\n}\n","import type { FileUploadApi, FileUploadSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectFileUpload, fileUploadMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface FileUploadContext {\n api: ComputedRef<FileUploadApi>\n}\n\nexport function useFileUpload(\n props: FileUploadSchema['props'],\n handlers: Pick<FileUploadSchema['props'], 'onFilesChange' | 'onFileAccept' | 'onFileReject'> = {},\n): FileUploadContext {\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 与隐藏输入不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(fileUploadMachine, () => ({ ...props, ...handlers }), scope)\n const api = computed(() => connectFileUpload(service, vueNormalize))\n return { api }\n}\n","import type { FileUploadItemProps, FileUploadSchema, FileUploadTranslations } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h } from 'vue'\nimport { provideFileUpload, provideFileUploadItem, useFileUploadContext, useFileUploadItemContext } from './context'\nimport { useFileUpload } from './use-file-upload'\n\ntype FileUploadProps = FileUploadSchema['props']\n\nexport const XhFileUploadRoot = defineComponent({\n name: 'XhFileUploadRoot',\n // 有 connect 与机器兜底的 prop 一律 default: undefined\n props: {\n // default: undefined 表示非受控\n files: { type: Array as PropType<File[]>, default: undefined },\n defaultFiles: { type: Array as PropType<File[]>, default: undefined },\n accept: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n maxFiles: { type: Number, default: undefined },\n maxFileSize: { type: Number, default: undefined },\n minFileSize: { type: Number, default: undefined },\n disabled: Boolean,\n invalid: Boolean,\n name: { type: String, default: undefined },\n allowDrop: { type: Boolean, default: undefined },\n directory: Boolean,\n capture: { type: String as PropType<'user' | 'environment'>, default: undefined },\n translations: { type: Object as PropType<Partial<FileUploadTranslations>>, default: undefined },\n },\n // files-change 携带 { files },update:files 携带裸数组;file-accept / file-reject 逐个文件报告\n emits: {\n 'files-change': (_details: PayloadOf<FileUploadProps, 'onFilesChange'>) => true,\n 'update:files': (_files: PayloadOf<FileUploadProps, 'onFilesChange'>['files']) => true,\n 'file-accept': (_details: PayloadOf<FileUploadProps, 'onFileAccept'>) => true,\n 'file-reject': (_details: PayloadOf<FileUploadProps, 'onFileReject'>) => true,\n },\n setup(props, { slots, emit }) {\n const onFilesChange: FileUploadProps['onFilesChange'] = (details) => {\n emit('files-change', details)\n emit('update:files', details.files)\n }\n const onFileAccept: FileUploadProps['onFileAccept'] = details => emit('file-accept', details)\n const onFileReject: FileUploadProps['onFileReject'] = details => emit('file-reject', details)\n const ctx = useFileUpload(props as FileUploadProps, { onFilesChange, onFileAccept, onFileReject })\n provideFileUpload(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n acceptedFiles: ctx.api.value.acceptedFiles,\n dragging: ctx.api.value.dragging,\n empty: ctx.api.value.empty,\n disabled: ctx.api.value.disabled,\n maxFiles: ctx.api.value.maxFiles,\n getFileSizeText: ctx.api.value.getFileSizeText,\n setFiles: ctx.api.value.setFiles,\n addFiles: ctx.api.value.addFiles,\n deleteFile: ctx.api.value.deleteFile,\n clearFiles: ctx.api.value.clearFiles,\n openFilePicker: ctx.api.value.openFilePicker,\n }))\n },\n})\n\nexport const XhFileUploadLabel = defineComponent({\n name: 'XhFileUploadLabel',\n setup(_, { slots }) {\n const ctx = useFileUploadContext()\n // 用原生 label,getLabelProps 的 for 指向隐藏输入\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFileUploadDropzone = defineComponent({\n name: 'XhFileUploadDropzone',\n setup(_, { slots }) {\n const ctx = useFileUploadContext()\n return () => h('div', ctx.api.value.getDropzoneProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFileUploadTrigger = defineComponent({\n name: 'XhFileUploadTrigger',\n setup(_, { slots }) {\n const ctx = useFileUploadContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFileUploadHiddenInput = defineComponent({\n name: 'XhFileUploadHiddenInput',\n setup() {\n const ctx = useFileUploadContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n\nexport const XhFileUploadItemGroup = defineComponent({\n name: 'XhFileUploadItemGroup',\n setup(_, { slots }) {\n const ctx = useFileUploadContext()\n return () => h('div', ctx.api.value.getItemGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFileUploadItem = defineComponent({\n name: 'XhFileUploadItem',\n props: {\n /** 这一行显示哪个文件。 */\n file: { type: Object as PropType<File>, default: undefined },\n /** 改用下标从 acceptedFiles 里取文件,兼收字符串以支持模板里写 index=\"0\"。 */\n index: { type: [Number, String] as PropType<number | string>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useFileUploadContext()\n const file = computed<File | undefined>(() => {\n if (props.file)\n return props.file\n if (props.index == null)\n return undefined\n return ctx.api.value.acceptedFiles[Math.trunc(Number(props.index))]\n })\n // 条目上下文,子部件从中取文件\n const item = computed<FileUploadItemProps>(() => ({ file: file.value as File }))\n provideFileUploadItem({ item })\n return () => {\n // 下标指向的文件不存在时只渲染空壳,不打组件属性也不渲染子部件\n if (!file.value)\n return h('div')\n return h('div', ctx.api.value.getItemProps(item.value) as Record<string, unknown>, slots.default?.())\n }\n },\n})\n\nexport const XhFileUploadItemName = defineComponent({\n name: 'XhFileUploadItemName',\n setup(_, { slots }) {\n const ctx = useFileUploadContext()\n const { item } = useFileUploadItemContext()\n // 有插槽用插槽,否则显示文件名\n return () => h(\n 'span',\n ctx.api.value.getItemNameProps(item.value) as Record<string, unknown>,\n slots.default?.() ?? item.value.file.name,\n )\n },\n})\n\nexport const XhFileUploadItemSizeText = defineComponent({\n name: 'XhFileUploadItemSizeText',\n setup(_, { slots }) {\n const ctx = useFileUploadContext()\n const { item } = useFileUploadItemContext()\n // 有插槽用插槽,否则显示格式化后的文件大小\n return () => h(\n 'span',\n ctx.api.value.getItemSizeTextProps(item.value) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getFileSizeText(item.value.file),\n )\n },\n})\n\nexport const XhFileUploadItemPreview = defineComponent({\n name: 'XhFileUploadItemPreview',\n setup(_, { slots }) {\n const ctx = useFileUploadContext()\n const { item } = useFileUploadItemContext()\n return () => h('div', ctx.api.value.getItemPreviewProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFileUploadItemDeleteTrigger = defineComponent({\n name: 'XhFileUploadItemDeleteTrigger',\n setup(_, { slots }) {\n const ctx = useFileUploadContext()\n const { item } = useFileUploadItemContext()\n return () => h(\n 'button',\n ctx.api.value.getItemDeleteTriggerProps(item.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhFileUploadClearTrigger = defineComponent({\n name: 'XhFileUploadClearTrigger',\n setup(_, { slots }) {\n const ctx = useFileUploadContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { FlexProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectFlex } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhFlex = defineComponent({\n name: 'XhFlex',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n direction: { type: String as PropType<FlexProps['direction']>, default: undefined },\n align: { type: String as PropType<FlexProps['align']>, default: undefined },\n justify: { type: String as PropType<FlexProps['justify']>, default: undefined },\n gap: { type: String as PropType<FlexProps['gap']>, default: undefined },\n wrap: Boolean,\n inline: Boolean,\n },\n setup(props, { slots }) {\n return () => h(\n 'div',\n connectFlex(props as FlexProps, vueNormalize).getRootProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { FloatButtonContext } from './use-float-button'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<FloatButtonContext> = Symbol('xh-float-button')\n\nexport function provideFloatButton(ctx: FloatButtonContext): void {\n provide(KEY, ctx)\n}\n\nexport function useFloatButtonContext(): FloatButtonContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] FloatButton 部件必须用在 XhFloatButtonRoot 内')\n return ctx\n}\n","import type { CollapsibleSchema, FloatButtonApi, FloatButtonNotifiers, FloatButtonProps } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { collapsibleMachine, connectFloatButton } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface FloatButtonContext {\n api: ComputedRef<FloatButtonApi>\n service: Service<CollapsibleSchema>\n}\n\n/**\n * 开合、受控回写与通知全交给 collapsible 机器:一颗触发器管着一组内容的开合,正是那台机器的活儿。\n * 落位、外形与展开方式不入机器,直接进 connect——它们不改开合。\n */\nexport function useFloatButton(\n props: FloatButtonProps,\n notify?: FloatButtonNotifiers,\n): FloatButtonContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n\n const service = useMachine(collapsibleMachine, (): CollapsibleSchema['props'] => ({\n open: props.open,\n defaultOpen: props.defaultOpen,\n disabled: props.disabled,\n onOpenChange: notify?.onOpenChange,\n }), scope)\n\n const api = computed(() => connectFloatButton(service, props, vueNormalize))\n return { api, service }\n}\n","import type {\n FloatButtonExpandTrigger,\n FloatButtonNotifiers,\n FloatButtonPlacement,\n FloatButtonProps,\n FloatButtonShape,\n FloatButtonTranslations,\n} from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideFloatButton, useFloatButtonContext } from './context'\nimport { useFloatButton } from './use-float-button'\n\n/** 根节点是定位壳:把整组钉在视口一角,悬停展开时进出它才算数。 */\nexport const XhFloatButtonRoot = defineComponent({\n name: 'XhFloatButtonRoot',\n // 缺省值由机器与 connect 决定,这里一律 default: undefined\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n disabled: Boolean,\n placement: { type: String as PropType<FloatButtonPlacement>, default: undefined },\n offset: { type: Number, default: undefined },\n shape: { type: String as PropType<FloatButtonShape>, default: undefined },\n expandTrigger: { type: String as PropType<FloatButtonExpandTrigger>, default: undefined },\n translations: { type: Object as PropType<Partial<FloatButtonTranslations>>, default: undefined },\n },\n // open-change 携带 { open },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<FloatButtonProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<FloatButtonProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: FloatButtonNotifiers = {\n onOpenChange: (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n },\n }\n const ctx = useFloatButton(props as FloatButtonProps, notify)\n provideFloatButton(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n setOpen: ctx.api.value.setOpen,\n }))\n },\n})\n\n/** 原生 button:Enter / Space 的激活与 Tab 停靠都由平台提供。 */\nexport const XhFloatButtonTrigger = defineComponent({\n name: 'XhFloatButtonTrigger',\n setup(_, { slots }) {\n const ctx = useFloatButtonContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 展开的那一组动作;收起时带 hidden,里面的按钮一并退出 Tab 序列。 */\nexport const XhFloatButtonList = defineComponent({\n name: 'XhFloatButtonList',\n setup(_, { slots }) {\n const ctx = useFloatButtonContext()\n return () => h('div', ctx.api.value.getListProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { FormContext } from './use-form'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<FormContext> = Symbol('xh-form')\n\nexport function provideForm(ctx: FormContext): void {\n provide(KEY, ctx)\n}\n\nexport function useFormContext(): FormContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Form 部件必须用在 XhFormRoot 内')\n return ctx\n}\n","import type { FormApi, FormSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectForm, formMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\ntype Props = FormSchema['props']\n\nexport interface FormCallbacks {\n onValuesChange?: Props['onValuesChange']\n onErrorsChange?: Props['onErrorsChange']\n onSubmit?: Props['onSubmit']\n onInvalid?: Props['onInvalid']\n}\n\nexport interface FormContext {\n api: ComputedRef<FormApi>\n /** 机器实例,供部件上报 DOM 侧的事实。 */\n service: Service<FormSchema>\n /** `<form>` 节点,字段容器的查询范围与落焦起点。 */\n rootRef: Ref<HTMLElement | null>\n setFieldValue: (name: string, value: unknown) => void\n setFieldError: (name: string, message?: string) => void\n clearErrors: () => void\n submit: () => void\n reset: () => void\n}\n\nexport function useForm(props: Props, callbacks: FormCallbacks = {}): FormContext {\n const rootRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(formMachine, () => ({ ...props, ...callbacks }), scope)\n\n // 传 getter 而非节点,提交落焦与跳字段时由机器现取\n service.refs.set('getRootEl', () => rootRef.value)\n\n const api = computed(() => connectForm(service, vueNormalize))\n // 五个命令在顶层摊平,函数身份稳定,可解构后随时调用且不读取值表\n return {\n api,\n service,\n rootRef,\n setFieldValue: (name, value) => api.value.setFieldValue(name, value),\n setFieldError: (name, message) => api.value.setFieldError(name, message),\n clearErrors: () => api.value.clearErrors(),\n submit: () => api.value.submit(),\n reset: () => api.value.reset(),\n }\n}\n","import type { FormErrorPatch, FormSchema, FormValidateOn, FormValues } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideForm, useFormContext } from './context'\nimport { useForm } from './use-form'\n\ntype FormProps = FormSchema['props']\n\nexport const XhFormRoot = defineComponent({\n name: 'XhFormRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n values: { type: Object as PropType<FormValues>, default: undefined },\n defaultValues: { type: Object as PropType<FormValues>, default: undefined },\n errors: { type: Object as PropType<FormErrorPatch>, default: undefined },\n defaultErrors: { type: Object as PropType<FormErrorPatch>, default: undefined },\n validate: { type: Function as PropType<FormProps['validate']>, default: undefined },\n validateOn: { type: String as PropType<FormValidateOn>, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n },\n // *-change 携带 details 对象,update:* 携带裸表;submit 与 invalid 按校验结果二选一\n emits: {\n 'values-change': (_details: PayloadOf<FormProps, 'onValuesChange'>) => true,\n 'errors-change': (_details: PayloadOf<FormProps, 'onErrorsChange'>) => true,\n 'submit': (_details: PayloadOf<FormProps, 'onSubmit'>) => true,\n 'invalid': (_details: PayloadOf<FormProps, 'onInvalid'>) => true,\n 'update:values': (_values: PayloadOf<FormProps, 'onValuesChange'>['values']) => true,\n 'update:errors': (_errors: PayloadOf<FormProps, 'onErrorsChange'>['errors']) => true,\n },\n setup(props, { slots, emit }) {\n const ctx = useForm(props as FormProps, {\n onValuesChange: (details) => {\n emit('values-change', details)\n emit('update:values', details.values)\n },\n onErrorsChange: (details) => {\n emit('errors-change', details)\n emit('update:errors', details.errors)\n },\n onSubmit: details => emit('submit', details),\n onInvalid: details => emit('invalid', details),\n })\n provideForm(ctx)\n\n // 根节点渲染为原生 form,隐式提交与 submit 事件都依赖它\n return () => h('form', {\n ...ctx.api.value.getRootProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.rootRef.value = el as HTMLElement },\n }, slots.default?.({\n values: ctx.api.value.values,\n errors: ctx.api.value.errors,\n errorNames: ctx.api.value.errorNames,\n invalid: ctx.api.value.invalid,\n submitFailed: ctx.api.value.submitFailed,\n getFieldId: ctx.api.value.getFieldId,\n getFieldError: ctx.api.value.getFieldError,\n setFieldValue: ctx.setFieldValue,\n setFieldError: ctx.setFieldError,\n clearErrors: ctx.clearErrors,\n submit: ctx.submit,\n reset: ctx.reset,\n }))\n },\n})\n\nexport const XhFormFieldGroup = defineComponent({\n name: 'XhFormFieldGroup',\n props: {\n /** 字段名,与 values / errors 表里的键一致。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useFormContext()\n // 作用域插槽暴露本字段的值、错误与写入方法\n return () => h(\n 'div',\n ctx.api.value.getFieldGroupProps({ name: props.value }) as Record<string, unknown>,\n slots.default?.({\n name: props.value,\n value: ctx.api.value.getFieldValue(props.value),\n error: ctx.api.value.getFieldError(props.value),\n invalid: ctx.api.value.isFieldInvalid(props.value),\n controlId: ctx.api.value.getFieldId(props.value),\n setValue: (next: unknown) => ctx.setFieldValue(props.value, next),\n }),\n )\n },\n})\n\nexport const XhFormErrorSummary = defineComponent({\n name: 'XhFormErrorSummary',\n setup(_, { slots }) {\n const ctx = useFormContext()\n return () => h('div', ctx.api.value.getErrorSummaryProps() as Record<string, unknown>, slots.default?.({\n errors: ctx.api.value.errors,\n errorNames: ctx.api.value.errorNames,\n errorCount: ctx.api.value.errorCount,\n }))\n },\n})\n\nexport const XhFormErrorSummaryItem = defineComponent({\n name: 'XhFormErrorSummaryItem',\n props: {\n /** 这一条指向哪个字段。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useFormContext()\n // 渲染为原生 a,href 指向字段容器的 id\n return () => h(\n 'a',\n ctx.api.value.getErrorSummaryItemProps({ name: props.value }) as Record<string, unknown>,\n slots.default?.({ name: props.value, error: ctx.api.value.getFieldError(props.value) }),\n )\n },\n})\n\nexport const XhFormSubmitTrigger = defineComponent({\n name: 'XhFormSubmitTrigger',\n setup(_, { slots }) {\n const ctx = useFormContext()\n return () => h('button', ctx.api.value.getSubmitTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFormResetTrigger = defineComponent({\n name: 'XhFormResetTrigger',\n setup(_, { slots }) {\n const ctx = useFormContext()\n return () => h('button', ctx.api.value.getResetTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { GradientTextDirection, GradientTextProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectGradientText } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhGradientText = defineComponent({\n name: 'XhGradientText',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n from: { type: String, default: undefined },\n to: { type: String, default: undefined },\n direction: { type: String as PropType<GradientTextDirection>, default: undefined },\n },\n setup(props, { slots }) {\n return () => h(\n 'span',\n connectGradientText(props as GradientTextProps, vueNormalize).getRootProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n","import type { GridApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface GridContext {\n api: ComputedRef<GridApi>\n}\n\nconst KEY: InjectionKey<GridContext> = Symbol('xh-grid')\n\nexport function provideGrid(ctx: GridContext): void {\n provide(KEY, ctx)\n}\n\nexport function useGridContext(): GridContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Grid 部件必须用在 XhGridRoot 内')\n return ctx\n}\n","import type { GridProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectGrid } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideGrid, useGridContext } from './context'\n\n/** 断点对象形态的列数,从 GridProps 上取,不在这里另抄一份档位清单。 */\ntype ColsByBreakpoint = Exclude<GridProps['cols'], number | undefined>\n\n/** 列数的档位名,base 在前,其余自窄到宽。 */\nconst COLS_TIERS = ['base', 'sm', 'md', 'lg', 'xl'] as const\n\n/** 模板里写 cols=\"3\" 拿到的是字符串,交给 connect 前统一转成数字。 */\nfunction count(value: number | string | undefined): number | undefined {\n return value == null ? undefined : Number(value)\n}\n\n/** 列数:整数与字符串按单个数走;断点对象逐档转数字,没写的档不带进去。 */\nfunction colsOf(value: number | string | ColsByBreakpoint | undefined): GridProps['cols'] {\n if (value == null || typeof value !== 'object')\n return count(value)\n const out: ColsByBreakpoint = {}\n for (const name of COLS_TIERS) {\n const raw = value[name]\n if (raw != null)\n out[name] = Number(raw)\n }\n return out\n}\n\nexport const XhGridRoot = defineComponent({\n name: 'XhGridRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n // 列数由作者声明:兼收字符串以支持模板里写 cols=\"3\",收对象则是逐档的列数\n cols: {\n type: [Number, String, Object] as PropType<number | string | ColsByBreakpoint>,\n default: undefined,\n },\n gap: { type: String as PropType<GridProps['gap']>, default: undefined },\n align: { type: String as PropType<GridProps['align']>, default: undefined },\n justify: { type: String as PropType<GridProps['justify']>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectGrid({\n cols: colsOf(props.cols),\n gap: props.gap,\n align: props.align,\n justify: props.justify,\n }, vueNormalize))\n provideGrid({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhGridItem = defineComponent({\n name: 'XhGridItem',\n props: {\n // 跨列与错列由每一格自报,同样兼收字符串\n span: { type: [Number, String] as PropType<number | string>, default: undefined },\n offset: { type: [Number, String] as PropType<number | string>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useGridContext()\n return () => h(\n 'div',\n ctx.api.value.getItemProps({\n span: count(props.span),\n offset: count(props.offset),\n }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n","import type { HighlightProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectHighlight } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\n/**\n * 把 text 按 keyword 切段铺进一个 `<span>`:命中的片段渲染成 `<mark>`,其余是纯文本节点。\n *\n * 整段内容由 text 与 keyword 算出,组件不收默认插槽——命中位置是按 text 这个串\n * 逐字符算的,内容另有来源就对不上了。\n */\nexport const XhHighlight = defineComponent({\n name: 'XhHighlight',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n text: { type: String, default: undefined },\n keyword: { type: [String, Array] as PropType<string | readonly string[]>, default: undefined },\n caseSensitive: Boolean,\n },\n setup(props) {\n const api = computed(() => connectHighlight({\n text: props.text,\n keyword: props.keyword,\n caseSensitive: props.caseSensitive,\n } satisfies HighlightProps, vueNormalize))\n\n return () => {\n const current = api.value\n const markProps = current.getMarkProps() as Record<string, unknown>\n // 片段每次整份重算,按位置替换即可,不给 key:一半是元素、一半是纯文本,\n // 给了 key 反而要求两种节点在同一条列表里对上号\n return h('span', current.getRootProps() as Record<string, unknown>, current.segments.map(segment =>\n segment.matched ? h('mark', markProps, segment.text) : segment.text))\n }\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { HoverCardContext } from './use-hover-card'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<HoverCardContext> = Symbol('xh-hover-card')\n\nexport function provideHoverCard(ctx: HoverCardContext): void {\n provide(KEY, ctx)\n}\n\nexport function useHoverCardContext(): HoverCardContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] HoverCard 部件必须用在 XhHoverCardRoot 内')\n return ctx\n}\n","import type { HoverCardApi, HoverCardSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectHoverCard, hoverCardMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface HoverCardContext {\n service: Service<HoverCardSchema>\n api: ComputedRef<HoverCardApi>\n /** 定位锚点。 */\n triggerRef: Ref<HTMLElement | null>\n /** 被定位的浮层。 */\n positionerRef: Ref<HTMLElement | null>\n /** 消解层节点,也是判定焦点是否仍在卡片内的依据。 */\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useHoverCard(\n props: HoverCardSchema['props'],\n onOpenChange?: HoverCardSchema['props']['onOpenChange'],\n): HoverCardContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(hoverCardMachine, () => ({ ...props, onOpenChange }), scope)\n\n // 无 DOM 环境(SSR)不建引擎与消解层\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按可见态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // trigger 记为本层分支,指针按在它上面算层内交互\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n // 悬停卡片非模态:不陷焦点、不锁滚动、无遮罩\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n }\n\n // 元素 getter 在无 DOM 环境下也要设,连接层判定焦点去向时经它们取节点\n service.refs.set('getAnchorEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n\n const api = computed(() => connectHoverCard(service, vueNormalize))\n return { service, api, triggerRef, positionerRef, contentRef }\n}\n","import type { HoverCardSchema } from '@xihan-ui/headless'\nimport type { Direction, Placement, Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideHoverCard, useHoverCardContext } from './context'\nimport { useHoverCard } from './use-hover-card'\n\ntype HoverCardProps = HoverCardSchema['props']\n\nexport const XhHoverCardRoot = defineComponent({\n name: 'XhHoverCardRoot',\n // 缺省值由机器与 connect 给出,这里一律 default: undefined\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n openDelay: { type: Number, default: undefined },\n closeDelay: { type: Number, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n disabled: Boolean,\n size: { type: String as PropType<Size>, default: undefined },\n },\n // open-change 携带 { open },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<HoverCardProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<HoverCardProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: HoverCardProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useHoverCard(props as HoverCardProps, notify)\n provideHoverCard(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n setOpen: ctx.api.value.setOpen,\n }))\n },\n})\n\nexport const XhHoverCardTrigger = defineComponent({\n name: 'XhHoverCardTrigger',\n setup(_, { slots }) {\n const ctx = useHoverCardContext()\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhHoverCardPositioner = defineComponent({\n name: 'XhHoverCardPositioner',\n setup(_, { slots }) {\n const ctx = useHoverCardContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhHoverCardContent = defineComponent({\n name: 'XhHoverCardContent',\n setup(_, { slots }) {\n const ctx = useHoverCardContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhHoverCardArrow = defineComponent({\n name: 'XhHoverCardArrow',\n setup() {\n const ctx = useHoverCardContext()\n return () => h('div', ctx.api.value.getArrowProps() as Record<string, unknown>)\n },\n})\n","import type { IconWrapperProps } from '@xihan-ui/headless'\nimport type { ActionVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectIconWrapper } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhIconWrapper = defineComponent({\n name: 'XhIconWrapper',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n variant: { type: String as PropType<ActionVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n return () => h(\n 'span',\n connectIconWrapper(props as IconWrapperProps, vueNormalize).getRootProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n","import type { IconApi, IconProps } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectIcon } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport interface IconContext {\n api: ComputedRef<IconApi>\n}\n\n// Icon 无状态机也不派生 part id,props 变了由 computed 重算属性\nexport function useIcon(props: IconProps): IconContext {\n const api = computed(() => connectIcon(props, vueNormalize))\n return { api }\n}\n","import type { IconProps, IconWeight } from '@xihan-ui/headless'\nimport type { IconNode, IconRecord, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useIcon } from './use-icon'\n\n/**\n * 把一个图元节点建成 VNode,递归到底。\n * 标签与属性名逐字透传(连字符与大小写都保留),命名空间由 Vue 从父 `<svg>` 往下带。\n */\nfunction renderNode(node: IconNode): VNode {\n return h(node.tag, node.attrs as Record<string, unknown> | undefined, node.children?.map(renderNode))\n}\n\n/**\n * 根 `<svg>` 加一层 `<g>` 空壳,图元铺在空壳里。\n * 默认插槽给出了内容时改由插槽内容填充根,元素不再生成 glyph 与图元;\n * 判据是插槽产出里有真会画出东西的节点:既不是插槽函数存不存在(宿主可能恒传一个插槽),\n * 也不是产出数组非空(`v-if` 为假时产出里还剩一个注释节点)。\n */\nexport const XhIcon = defineComponent({\n name: 'XhIcon',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n icon: { type: Object as PropType<IconRecord>, default: undefined },\n label: { type: String, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n weight: { type: String as PropType<IconWeight>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useIcon(props as IconProps)\n return () => {\n const authored = slots.default?.()\n return h(\n 'svg',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slotPaints(authored)\n ? authored\n : [h(\n 'g',\n ctx.api.value.getGlyphProps() as Record<string, unknown>,\n ctx.api.value.nodes.map(renderNode),\n )],\n )\n }\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { ImageContext } from './use-image'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ImageContext> = Symbol('xh-image')\n\nexport function provideImage(ctx: ImageContext): void {\n provide(KEY, ctx)\n}\n\nexport function useImageContext(): ImageContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Image 部件必须用在 XhImageRoot 内')\n return ctx\n}\n","import type { ImageApi, ImageSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectImage, imageMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ImageContext {\n service: Service<ImageSchema>\n api: ComputedRef<ImageApi>\n}\n\nexport function useImage(\n props: ImageSchema['props'],\n onStatusChange?: ImageSchema['props']['onStatusChange'],\n): ImageContext {\n const service = useMachine(imageMachine, () => ({ ...props, onStatusChange }))\n const api = computed(() => connectImage(service, vueNormalize))\n return { service, api }\n}\n","import type { ImageSchema } from '@xihan-ui/headless'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, ref, watch } from 'vue'\nimport { provideImage, useImageContext } from './context'\nimport { useImage } from './use-image'\n\ntype ImageProps = ImageSchema['props']\n\nexport const XhImageRoot = defineComponent({\n name: 'XhImageRoot',\n props: {\n // 缺席即无来源,落回退态\n src: { type: String, default: undefined },\n alt: { type: String, default: undefined },\n fallbackDelay: { type: Number, default: undefined },\n },\n // status-change 携带 { status }\n emits: {\n 'status-change': (_details: PayloadOf<ImageProps, 'onStatusChange'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: ImageProps['onStatusChange'] = details => emit('status-change', details)\n const ctx = useImage(props as ImageProps, notify)\n provideImage(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n status: ctx.api.value.status,\n loaded: ctx.api.value.loaded,\n showFallback: ctx.api.value.showFallback,\n }))\n },\n})\n\nexport const XhImageImage = defineComponent({\n name: 'XhImageImage',\n setup() {\n const ctx = useImageContext()\n const imageEl = ref<HTMLImageElement | null>(null)\n\n // 进入 loading 时为已就绪的图(如注水前就加载完的 SSR 图)补报一次加载完成\n watch(() => ctx.api.value.status, (status) => {\n const { service } = ctx\n if (status !== 'loading' || service.getStatus() !== 'Started')\n return\n const img = imageEl.value\n if (img?.complete && img.naturalWidth > 0 && img.currentSrc === img.src)\n service.send({ type: 'IMAGE.LOAD' })\n }, { immediate: true, flush: 'post' })\n\n // 节点常挂,靠 hidden 显隐\n return () => h('img', {\n ...ctx.api.value.getImageProps() as Record<string, unknown>,\n ref: imageEl,\n })\n },\n})\n\nexport const XhImageFallback = defineComponent({\n name: 'XhImageFallback',\n setup(_, { slots }) {\n const ctx = useImageContext()\n // 节点常挂,靠 hidden 显隐\n return () => h('div', ctx.api.value.getFallbackProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { InfiniteScrollContext } from './use-infinite-scroll'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<InfiniteScrollContext> = Symbol('xh-infinite-scroll')\n\nexport function provideInfiniteScroll(ctx: InfiniteScrollContext): void {\n provide(KEY, ctx)\n}\n\nexport function useInfiniteScrollContext(): InfiniteScrollContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] InfiniteScroll 部件必须用在 XhInfiniteScrollRoot 内')\n return ctx\n}\n","import type { InfiniteScrollApi, InfiniteScrollSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectInfiniteScroll, infiniteScrollMachine } from '@xihan-ui/headless'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface InfiniteScrollContext {\n api: ComputedRef<InfiniteScrollApi>\n service: Service<InfiniteScrollSchema>\n /** 哨兵节点:观察器盯的就是它。 */\n sentinelRef: Ref<HTMLElement | null>\n}\n\n/** 观察在机器的效应里跑,两处 DOM 取值口经 refs 交进去;getTargetEl 返回滚动容器,null 即整页滚动。 */\nexport function useInfiniteScroll(\n props: InfiniteScrollSchema['props'],\n onLoad?: InfiniteScrollSchema['props']['onLoad'],\n getTargetEl: () => HTMLElement | null = () => null,\n): InfiniteScrollContext {\n const sentinelRef = ref<HTMLElement | null>(null)\n const service = useMachine(infiniteScrollMachine, () => ({ ...props, onLoad }))\n\n service.refs.set('getSentinelEl', () => sentinelRef.value)\n service.refs.set('getTargetEl', getTargetEl)\n\n const api = computed(() => connectInfiniteScroll(service, vueNormalize))\n return { api, service, sentinelRef }\n}\n","import type { InfiniteScrollSchema } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { provideInfiniteScroll, useInfiniteScrollContext } from './context'\nimport { useInfiniteScroll } from './use-infinite-scroll'\n\ntype InfiniteScrollProps = InfiniteScrollSchema['props']\n\n/** 根节点是列表的外壳,状态挂在它身上;滚动本身走浏览器原生通路,组件不接管。 */\nexport const XhInfiniteScrollRoot = defineComponent({\n name: 'XhInfiniteScrollRoot',\n // 缺省值由机器与 connect 决定,这里一律 default: undefined\n props: {\n distance: { type: Number, default: undefined },\n disabled: { type: Boolean, default: undefined },\n loading: { type: Boolean, default: undefined },\n /** 裁剪出可视区的滚动容器,缺省即整页滚动;distance 的提前量扩的正是这块区域。 */\n target: { type: Object as PropType<HTMLElement | null>, default: undefined },\n },\n emits: {\n load: () => true,\n },\n setup(props, { slots, emit }) {\n const notify: InfiniteScrollProps['onLoad'] = () => emit('load')\n // 传响应式 props 对象本身而非快照,供机器每次读时重新展开\n const ctx = useInfiniteScroll(props as InfiniteScrollProps, notify, () => props.target ?? null)\n provideInfiniteScroll(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n phase: ctx.api.value.phase,\n loading: ctx.api.value.loading,\n disabled: ctx.api.value.disabled,\n }))\n },\n})\n\n/** 摆在列表末尾的哨兵,进可视区即报\"该取下一页了\"。 */\nexport const XhInfiniteScrollSentinel = defineComponent({\n name: 'XhInfiniteScrollSentinel',\n setup(_, { slots }) {\n const ctx = useInfiniteScrollContext()\n return () => h('div', {\n ...ctx.api.value.getSentinelProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.sentinelRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { LayoutContext } from './use-layout'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<LayoutContext> = Symbol('xh-layout')\n\nexport function provideLayout(ctx: LayoutContext): void {\n provide(KEY, ctx)\n}\n\nexport function useLayoutContext(): LayoutContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Layout 部件必须用在 XhLayoutRoot 内')\n return ctx\n}\n","import type { LayoutApi, LayoutSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectLayout, layoutMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface LayoutContext {\n api: ComputedRef<LayoutApi>\n}\n\nexport function useLayout(\n props: LayoutSchema['props'],\n onSiderCollapsedChange?: LayoutSchema['props']['onSiderCollapsedChange'],\n): LayoutContext {\n // 把手要用 aria-controls 指向侧栏,两者的 id 必须同源,所以显式建 scope\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(layoutMachine, () => ({ ...props, onSiderCollapsedChange }), scope)\n const api = computed(() => connectLayout(service, vueNormalize))\n return { api }\n}\n","import type { LayoutSchema, LayoutSiderPlacement } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideLayout, useLayoutContext } from './context'\nimport { useLayout } from './use-layout'\n\ntype LayoutProps = LayoutSchema['props']\n\n/** 各段一律渲染成 div:地标(banner / navigation / main / contentinfo)由作者自己标。 */\nexport const XhLayoutRoot = defineComponent({\n name: 'XhLayoutRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n siderCollapsed: { type: Boolean, default: undefined },\n defaultSiderCollapsed: Boolean,\n siderWidth: { type: String, default: undefined },\n siderCollapsedWidth: { type: String, default: undefined },\n siderPlacement: { type: String as PropType<LayoutSiderPlacement>, default: undefined },\n headerFixed: Boolean,\n siderFixed: Boolean,\n bordered: Boolean,\n },\n // sider-collapsed-change 携带 { collapsed },update:siderCollapsed 携带裸布尔\n emits: {\n 'sider-collapsed-change': (_details: PayloadOf<LayoutProps, 'onSiderCollapsedChange'>) => true,\n 'update:siderCollapsed': (_siderCollapsed: PayloadOf<LayoutProps, 'onSiderCollapsedChange'>['collapsed']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: LayoutProps['onSiderCollapsedChange'] = (details) => {\n emit('sider-collapsed-change', details)\n emit('update:siderCollapsed', details.collapsed)\n }\n const ctx = useLayout(props as LayoutProps, notify)\n provideLayout(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhLayoutHeader = defineComponent({\n name: 'XhLayoutHeader',\n setup(_, { slots }) {\n const ctx = useLayoutContext()\n return () => h('div', ctx.api.value.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhLayoutSider = defineComponent({\n name: 'XhLayoutSider',\n setup(_, { slots }) {\n const ctx = useLayoutContext()\n return () => h('div', ctx.api.value.getSiderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhLayoutContent = defineComponent({\n name: 'XhLayoutContent',\n setup(_, { slots }) {\n const ctx = useLayoutContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhLayoutFooter = defineComponent({\n name: 'XhLayoutFooter',\n setup(_, { slots }) {\n const ctx = useLayoutContext()\n return () => h('div', ctx.api.value.getFooterProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 折叠把手渲染成原生 button:Enter/Space 的激活交给平台\nexport const XhLayoutSiderTrigger = defineComponent({\n name: 'XhLayoutSiderTrigger',\n setup(_, { slots }) {\n const ctx = useLayoutContext()\n return () => h('button', ctx.api.value.getSiderTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { ListApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface ListContext {\n api: ComputedRef<ListApi>\n}\n\nconst KEY: InjectionKey<ListContext> = Symbol('xh-list')\n\nexport function provideList(ctx: ListContext): void {\n provide(KEY, ctx)\n}\n\nexport function useListContext(): ListContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] List 部件必须用在 XhListRoot 内')\n return ctx\n}\n","import type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectList } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideList, useListContext } from './context'\n\nexport const XhListRoot = defineComponent({\n name: 'XhListRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n bordered: Boolean,\n hoverable: Boolean,\n split: Boolean,\n size: { type: String as PropType<Size>, default: undefined },\n /** 根渲染成哪个标签,默认 ul;换成 div 即不进读屏的列表语义。 */\n as: { type: String, default: 'ul' },\n },\n setup(props, { slots }) {\n const api = computed(() => connectList({\n bordered: props.bordered,\n hoverable: props.hoverable,\n split: props.split,\n size: props.size,\n }, vueNormalize))\n provideList({ api })\n return () => h(props.as, api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhListItem = defineComponent({\n name: 'XhListItem',\n props: {\n /** 条目渲染成哪个标签,默认 li;根换成 div 时这里一并换掉。 */\n as: { type: String, default: 'li' },\n },\n setup(props, { slots }) {\n const ctx = useListContext()\n return () => h(props.as, ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 媒体位排在条目最前,内容由作者塞(头像、图标、缩略图都行)\nexport const XhListItemMedia = defineComponent({\n name: 'XhListItemMedia',\n setup(_, { slots }) {\n const ctx = useListContext()\n return () => h('div', ctx.api.value.getItemMediaProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhListItemContent = defineComponent({\n name: 'XhListItemContent',\n setup(_, { slots }) {\n const ctx = useListContext()\n return () => h('div', ctx.api.value.getItemContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 标题渲染为 div 而不是 hN:它只做视觉主次,不往文档大纲里插一级标题\nexport const XhListItemTitle = defineComponent({\n name: 'XhListItemTitle',\n setup(_, { slots }) {\n const ctx = useListContext()\n return () => h('div', ctx.api.value.getItemTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhListItemDescription = defineComponent({\n name: 'XhListItemDescription',\n setup(_, { slots }) {\n const ctx = useListContext()\n return () => h('div', ctx.api.value.getItemDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 操作位排在条目末尾,按钮由作者放进插槽\nexport const XhListItemAction = defineComponent({\n name: 'XhListItemAction',\n setup(_, { slots }) {\n const ctx = useListContext()\n return () => h('div', ctx.api.value.getItemActionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { ListboxItemGroupProps, ListboxItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { ListboxContext } from './use-listbox'\nimport { inject, provide } from 'vue'\n\n/** 条目自报的值与禁用,供 item-text / item-indicator 这类子部件复用同一份声明。 */\nexport interface ListboxItemContext {\n item: ComputedRef<ListboxItemProps>\n}\n\n/** 分组自报的身份,供分组标题取到同一个值(标题的 id 由它派生)。 */\nexport interface ListboxItemGroupContext {\n group: ComputedRef<ListboxItemGroupProps>\n}\n\nconst KEY: InjectionKey<ListboxContext> = Symbol('xh-listbox')\nconst ITEM_KEY: InjectionKey<ListboxItemContext> = Symbol('xh-listbox-item')\nconst GROUP_KEY: InjectionKey<ListboxItemGroupContext> = Symbol('xh-listbox-item-group')\n\nexport function provideListbox(ctx: ListboxContext): void {\n provide(KEY, ctx)\n}\n\nexport function useListboxContext(): ListboxContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Listbox 部件必须用在 XhListboxRoot 内')\n return ctx\n}\n\nexport function provideListboxItem(ctx: ListboxItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useListboxItemContext(): ListboxItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Listbox 条目子部件必须用在 XhListboxItem 内')\n return ctx\n}\n\nexport function provideListboxItemGroup(ctx: ListboxItemGroupContext): void {\n provide(GROUP_KEY, ctx)\n}\n\nexport function useListboxItemGroupContext(): ListboxItemGroupContext {\n const ctx = inject(GROUP_KEY, null)\n if (!ctx)\n throw new Error('[xh] Listbox 分组标题必须用在 XhListboxItemGroup 内')\n return ctx\n}\n","import type { ListboxApi, ListboxSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectListbox, listboxMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface ListboxContext {\n api: ComputedRef<ListboxApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如条目卸载带走了焦点)。 */\n service: Service<ListboxSchema>\n}\n\nexport function useListbox(\n props: ListboxSchema['props'],\n onValueChange?: ListboxSchema['props']['onValueChange'],\n): ListboxContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // 连打检索缓冲存在机器的 refs 里,适配器不必注入 refs\n const service = useMachine(listboxMachine, () => ({ ...props, onValueChange }), scope)\n const api = computed(() => connectListbox(service, vueNormalize))\n return { api, service }\n}\n","import type { ListboxItemGroupProps, ListboxItemProps, ListboxNode, ListboxNodeMeta, ListboxSchema, ListboxSelectionMode } from '@xihan-ui/headless'\nimport type { Direction, Orientation } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport {\n provideListbox,\n provideListboxItem,\n provideListboxItemGroup,\n useListboxContext,\n useListboxItemContext,\n useListboxItemGroupContext,\n} from './context'\nimport { useListbox } from './use-listbox'\n\ntype ListboxProps = ListboxSchema['props']\n\nexport const XhListboxRoot = defineComponent({\n name: 'XhListboxRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n collection: { type: Array as PropType<ListboxNode[]>, default: undefined },\n /** 标题文字。给了它就不必再写 label 部件;要放别的内容改用 label 插槽。 */\n label: { type: String, default: undefined },\n value: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n multiple: Boolean,\n selectionMode: { type: String as PropType<ListboxSelectionMode>, default: undefined },\n disabled: Boolean,\n loop: { type: Boolean, default: undefined },\n typeahead: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸集合;回传值恒为数组,单选时长度 ≤ 1\n emits: {\n 'value-change': (_details: PayloadOf<ListboxProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<ListboxProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: ListboxProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useListbox(props as ListboxProps, notify)\n provideListbox(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, [\n ...(slots.default\n ? slots.default({\n value: ctx.api.value.value,\n selectionMode: ctx.api.value.selectionMode,\n focusedValue: ctx.api.value.focusedValue,\n isSelected: ctx.api.value.isSelected,\n setValue: ctx.api.value.setValue,\n select: ctx.api.value.select,\n toggle: ctx.api.value.toggle,\n }) ?? []\n : props.collection\n ? renderDefaultTree(\n ctx.api.value.collection,\n slots.label?.() ?? (props.label != null ? [props.label] : null),\n slots.item,\n )\n : []),\n ])\n },\n})\n\nexport const XhListboxLabel = defineComponent({\n name: 'XhListboxLabel',\n setup(_, { slots }) {\n const ctx = useListboxContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhListboxContent = defineComponent({\n name: 'XhListboxContent',\n setup(_, { slots }) {\n const ctx = useListboxContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhListboxItemGroup = defineComponent({\n name: 'XhListboxItemGroup',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useListboxContext()\n const group = computed<ListboxItemGroupProps>(() => ({ value: props.value }))\n provideListboxItemGroup({ group })\n return () => h('div', ctx.api.value.getItemGroupProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhListboxItemGroupLabel = defineComponent({\n name: 'XhListboxItemGroupLabel',\n setup(_, { slots }) {\n const ctx = useListboxContext()\n const { group } = useListboxItemGroupContext()\n return () => h('span', ctx.api.value.getItemGroupLabelProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhListboxItem = defineComponent({\n name: 'XhListboxItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useListboxContext()\n const item = computed<ListboxItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n provideListboxItem({ item })\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报列表失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'LIST.BLUR' })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhListboxItemText = defineComponent({\n name: 'XhListboxItemText',\n setup(_, { slots }) {\n const ctx = useListboxContext()\n const { item } = useListboxItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhListboxItemIndicator = defineComponent({\n name: 'XhListboxItemIndicator',\n setup(_, { slots }) {\n const ctx = useListboxContext()\n const { item } = useListboxItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构(分组、条目外的节点)就写默认插槽。\n */\nfunction renderDefaultTree(\n collection: readonly ListboxNodeMeta[],\n label: (VNode | string)[] | null,\n itemSlot?: (node: ListboxNodeMeta) => VNode[],\n): VNode[] {\n return [\n ...(label ? [h(XhListboxLabel, null, () => label)] : []),\n h(XhListboxContent, null, () => collection.map(node =>\n h(XhListboxItem, { key: node.value, value: node.value }, () => [\n h(XhListboxItemText, null, () => itemSlot?.(node) ?? node.label),\n h(XhListboxItemIndicator),\n ]),\n )),\n ]\n}\n","import type { InjectionKey } from 'vue'\nimport type { LoadingBarContext } from './use-loading-bar'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<LoadingBarContext> = Symbol('xh-loading-bar')\n\nexport function provideLoadingBar(ctx: LoadingBarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useLoadingBarContext(): LoadingBarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] LoadingBar 部件必须用在 XhLoadingBarRoot 内')\n return ctx\n}\n","import type { LoadingBarApi, LoadingBarSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectLoadingBar, loadingBarMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface LoadingBarContext {\n api: ComputedRef<LoadingBarApi>\n}\n\nexport function useLoadingBar(\n props: LoadingBarSchema['props'],\n onValueChange?: LoadingBarSchema['props']['onValueChange'],\n): LoadingBarContext {\n const service = useMachine(loadingBarMachine, () => ({ ...props, onValueChange }))\n const api = computed(() => connectLoadingBar(service, vueNormalize))\n return { api }\n}\n","import type { LoadingBarSchema, LoadingBarTranslations } from '@xihan-ui/headless'\nimport type { Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideLoadingBar, useLoadingBarContext } from './context'\nimport { useLoadingBar } from './use-loading-bar'\n\ntype LoadingBarProps = LoadingBarSchema['props']\n\nexport const XhLoadingBarRoot = defineComponent({\n name: 'XhLoadingBarRoot',\n // 缺省值由机器与 connect 给出,这里一律 default: undefined\n props: {\n value: { type: Number, default: undefined },\n defaultValue: { type: Number, default: undefined },\n loading: { type: Boolean, default: undefined },\n height: { type: [String, Number] as PropType<string | number>, default: undefined },\n color: { type: String, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n trickle: { type: Boolean, default: undefined },\n trickleSpeed: { type: Number, default: undefined },\n minimum: { type: Number, default: undefined },\n fadeDuration: { type: Number, default: undefined },\n translations: { type: Object as PropType<Partial<LoadingBarTranslations>>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸数值\n emits: {\n 'value-change': (_details: PayloadOf<LoadingBarProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<LoadingBarProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: LoadingBarProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useLoadingBar(props as LoadingBarProps, notify)\n provideLoadingBar(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n phase: ctx.api.value.phase,\n value: ctx.api.value.value,\n visible: ctx.api.value.visible,\n indeterminate: ctx.api.value.indeterminate,\n }))\n },\n})\n\nexport const XhLoadingBarTrack = defineComponent({\n name: 'XhLoadingBarTrack',\n setup(_, { slots }) {\n const ctx = useLoadingBarContext()\n return () => h('div', ctx.api.value.getTrackProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhLoadingBarRange = defineComponent({\n name: 'XhLoadingBarRange',\n setup(_, { slots }) {\n const ctx = useLoadingBarContext()\n // 宽度由 connect 写进内联样式\n return () => h('div', ctx.api.value.getRangeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { LogContext } from './use-log'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<LogContext> = Symbol('xh-log')\n\nexport function provideLog(ctx: LogContext): void {\n provide(KEY, ctx)\n}\n\nexport function useLogContext(): LogContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Log 部件必须用在 XhLogRoot 内')\n return ctx\n}\n","import type { LogApi, LogProps, ThreadSchema } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectLog, threadMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { computed, ref, watch } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface LogContext {\n api: ComputedRef<LogApi>\n /** overflow:auto 的滚动容器节点。 */\n viewportRef: Ref<HTMLElement | null>\n /** 内容包裹层节点,尺寸变化的观察目标。 */\n contentRef: Ref<HTMLElement | null>\n}\n\n/**\n * 粘底整套复用 thread 的机器:它只认滚动容器与内容容器两个节点,不认解剖。\n * 机器只收 onStickChange,rows / loading / translations 是纯视图属性,直接进 connect。\n */\nexport function useLog(\n props: LogProps,\n onStickChange?: ThreadSchema['props']['onStickChange'],\n): LogContext {\n const viewportRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(threadMachine, () => ({ onStickChange }), scope)\n\n // 无 DOM 环境不装 config,此时粘底效应整套不挂载\n if (typeof document !== 'undefined')\n service.refs.set('config', createRuntimeConfig({ scope, idGenerator: idGen }))\n\n // 传 getter 而非节点本身,ref 在挂载后才有值\n service.refs.set('getViewportEl', () => viewportRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n\n // 节点变化后让句柄重绑\n watch([viewportRef, contentRef], () => {\n service.refs.get('stick')?.retarget()\n })\n\n const api = computed(() => connectLog(service, props, vueNormalize))\n return { api, viewportRef, contentRef }\n}\n","import type { LogProps, LogTranslations, ThreadSchema } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideLog, useLogContext } from './context'\nimport { useLog } from './use-log'\n\nexport const XhLogRoot = defineComponent({\n name: 'XhLogRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n rows: { type: Number, default: undefined },\n loading: Boolean,\n translations: { type: Object as PropType<Partial<LogTranslations>>, default: undefined },\n },\n // stick-change 携带 { atBottom, sticking },无对应的 v-model\n emits: {\n 'stick-change': (_details: PayloadOf<ThreadSchema['props'], 'onStickChange'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: ThreadSchema['props']['onStickChange'] = details => emit('stick-change', details)\n const ctx = useLog(props as LogProps, notify)\n provideLog(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n rows: ctx.api.value.rows,\n loading: ctx.api.value.loading,\n atBottom: ctx.api.value.atBottom,\n sticking: ctx.api.value.sticking,\n scrollToBottom: ctx.api.value.scrollToBottom,\n }))\n },\n})\n\nexport const XhLogViewport = defineComponent({\n name: 'XhLogViewport',\n setup(_, { slots }) {\n const ctx = useLogContext()\n // 把视口节点交给机器,由粘底句柄监听滚动\n return () => h('div', {\n ...ctx.api.value.getViewportProps() as Record<string, unknown>,\n ref: ctx.viewportRef,\n }, slots.default?.())\n },\n})\n\nexport const XhLogContent = defineComponent({\n name: 'XhLogContent',\n setup(_, { slots }) {\n const ctx = useLogContext()\n // 把内容节点交给机器,由粘底句柄观察尺寸\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: ctx.contentRef,\n }, slots.default?.())\n },\n})\n\nexport const XhLogLine = defineComponent({\n name: 'XhLogLine',\n setup(_, { slots }) {\n const ctx = useLogContext()\n // 一行的文本与级别标注由作者写在插槽里\n return () => h('div', ctx.api.value.getLineProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { MarqueeApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface MarqueeContext {\n api: ComputedRef<MarqueeApi>\n}\n\nconst KEY: InjectionKey<MarqueeContext> = Symbol('xh-marquee')\n\nexport function provideMarquee(ctx: MarqueeContext): void {\n provide(KEY, ctx)\n}\n\nexport function useMarqueeContext(): MarqueeContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Marquee 部件必须用在 XhMarqueeRoot 内')\n return ctx\n}\n","import type { MarqueeDirection, MarqueeProps } from '@xihan-ui/headless'\nimport type { PropType, VNode } from 'vue'\nimport { connectMarquee } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { provideMarquee, useMarqueeContext } from './context'\n\nexport const XhMarqueeRoot = defineComponent({\n name: 'XhMarqueeRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n direction: { type: String as PropType<MarqueeDirection>, default: undefined },\n speed: { type: Number, default: undefined },\n pauseOnHover: Boolean,\n autoFill: Boolean,\n },\n setup(props, { slots }) {\n const api = computed(() => connectMarquee(props as MarqueeProps, vueNormalize))\n provideMarquee({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 轨道:走的是这一层。默认插槽里的内容按 api.copies 铺若干份,每份包一层壳。\n *\n * 包壳是为了让每份等长:接缝对不对得上,看的是\"走完的距离恰好等于一份的长度\"这一条。\n * 第一份之后的都是副本,同时标 aria-hidden 与 inert:读屏不念第二遍,Tab 也不会停在副本上——\n * 只标 aria-hidden 而留着可聚焦的副本,焦点会落进一个读屏看不见的地方。\n * 插槽里只剩注释或空白时一份都不铺——白铺一份只会让轨道多出一段空白在那儿转。\n */\nexport const XhMarqueeContent = defineComponent({\n name: 'XhMarqueeContent',\n setup(_, { slots }) {\n const ctx = useMarqueeContext()\n return () => {\n const copies: VNode[] = []\n if (slotPaints(slots.default?.())) {\n for (let i = 0; i < ctx.api.value.copies; i++) {\n const copy = i > 0\n copies.push(h(\n 'div',\n {\n 'data-xh-copy': String(i),\n 'aria-hidden': copy ? 'true' : undefined,\n 'inert': copy ? true : undefined,\n },\n slots.default?.(),\n ))\n }\n }\n return h('div', ctx.api.value.getContentProps() as Record<string, unknown>, copies)\n }\n },\n})\n","import type { MentionItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { MentionContext } from './use-mention'\nimport { inject, provide } from 'vue'\n\n/** 候选自报的值与禁用,供 item-text 复用同一份声明。 */\nexport interface MentionItemContext {\n item: ComputedRef<MentionItemProps>\n}\n\nconst KEY: InjectionKey<MentionContext> = Symbol('xh-mention')\nconst ITEM_KEY: InjectionKey<MentionItemContext> = Symbol('xh-mention-item')\n\nexport function provideMention(ctx: MentionContext): void {\n provide(KEY, ctx)\n}\n\nexport function useMentionContext(): MentionContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Mention 部件必须用在 XhMentionRoot 内')\n return ctx\n}\n\nexport function provideMentionItem(ctx: MentionItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useMentionItemContext(): MentionItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Mention 候选子部件必须用在 XhMentionItem 内')\n return ctx\n}\n","import type { MentionApi, MentionInputEl, MentionSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectMention, mentionMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, nextTick, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface MentionContext {\n /** 机器实例,供部件直接上报 DOM 侧事实。 */\n service: Service<MentionSchema>\n api: ComputedRef<MentionApi>\n /** 输入宿主,textarea 或 input;由 XhMentionInput 的 as 决定渲染成哪个。 */\n inputRef: Ref<MentionInputEl | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 上报候选集合可能变了;同一拍里多次调用只上报一次。 */\n syncItems: () => void\n}\n\nexport function useMention(\n props: MentionSchema['props'],\n handlers: Pick<MentionSchema['props'], 'onValueChange' | 'onQueryChange' | 'onSelect' | 'onOpenChange'> = {},\n): MentionContext {\n const inputRef = ref<MentionInputEl | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(mentionMachine, () => ({ ...props, ...handlers }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,实际入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 输入框记为本层分支:在正文里打字、点击都算层内交互,不该把浮层点没\n branches: () => [inputRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点就是输入框本身\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n service.refs.set('getInputEl', () => inputRef.value)\n }\n\n // 合并到下一拍统一上报,同时等待 DOM 落定\n let syncScheduled = false\n const syncItems = (): void => {\n if (syncScheduled)\n return\n syncScheduled = true\n void nextTick(() => {\n syncScheduled = false\n if (service.getStatus() === 'Started')\n service.send({ type: 'ITEMS.SYNC' })\n })\n }\n\n const api = computed(() => connectMention(service, vueNormalize))\n return { service, api, inputRef, positionerRef, contentRef, syncItems }\n}\n","import type { MentionInputEl, MentionInputHost, MentionItemProps, MentionNode, MentionNodeMeta, MentionSchema, MentionTranslations } from '@xihan-ui/headless'\nimport type { ControlVariant, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onMounted, onUnmounted, onUpdated, watch } from 'vue'\nimport { provideMention, provideMentionItem, useMentionContext, useMentionItemContext } from './context'\nimport { useMention } from './use-mention'\n\ntype MentionProps = MentionSchema['props']\n\nexport const XhMentionRoot = defineComponent({\n name: 'XhMentionRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n prefix: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n collection: { type: Array as PropType<MentionNode[]>, default: undefined },\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n disabled: Boolean,\n placeholder: { type: String, default: undefined },\n loop: { type: Boolean, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n translations: { type: Object as PropType<MentionTranslations>, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<MentionProps, 'onValueChange'>) => true,\n 'query-change': (_details: PayloadOf<MentionProps, 'onQueryChange'>) => true,\n 'select': (_details: PayloadOf<MentionProps, 'onSelect'>) => true,\n 'open-change': (_details: PayloadOf<MentionProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<MentionProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: MentionProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyQuery: MentionProps['onQueryChange'] = details => emit('query-change', details)\n const notifySelect: MentionProps['onSelect'] = details => emit('select', details)\n const notifyOpen: MentionProps['onOpenChange'] = details => emit('open-change', details)\n\n const ctx = useMention(props as MentionProps, {\n onValueChange: notifyValue,\n onQueryChange: notifyQuery,\n onSelect: notifySelect,\n onOpenChange: notifyOpen,\n })\n provideMention(ctx)\n\n // 首帧结算一次候选条数,之后的增删由条目自己上报\n onMounted(ctx.syncItems)\n onUpdated(ctx.syncItems)\n\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n query: ctx.api.value.query,\n activePrefix: ctx.api.value.activePrefix,\n highlightedValue: ctx.api.value.highlightedValue,\n setValue: ctx.api.value.setValue,\n close: ctx.api.value.close,\n })\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.item)\n : [],\n )\n },\n})\n\nexport const XhMentionInput = defineComponent({\n name: 'XhMentionInput',\n props: {\n /**\n * 输入框渲染成哪个标签,默认 textarea。\n * 写 input 即单行宿主:connect 随之补上 type、role 与 aria-expanded。\n */\n as: { type: String as PropType<MentionInputHost>, default: 'textarea' },\n },\n setup(props) {\n const ctx = useMentionContext()\n return () => h(props.as, {\n ...ctx.api.value.getInputProps({ as: props.as }) as Record<string, unknown>,\n ref: (el: unknown) => { ctx.inputRef.value = el as MentionInputEl },\n })\n },\n})\n\nexport const XhMentionPositioner = defineComponent({\n name: 'XhMentionPositioner',\n setup(_, { slots }) {\n const ctx = useMentionContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhMentionContent = defineComponent({\n name: 'XhMentionContent',\n setup(_, { slots }) {\n const ctx = useMentionContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhMentionItem = defineComponent({\n name: 'XhMentionItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useMentionContext()\n const item = computed<MentionItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n provideMentionItem({ item })\n // 候选的进出与改名由条目自己上报,机器据此结算条数并摘掉悬空高亮\n onMounted(ctx.syncItems)\n onUnmounted(ctx.syncItems)\n // 节点就地复用时数量不变但身份换了,需按 value 另行上报\n watch(() => props.value, ctx.syncItems)\n return () => h('div', ctx.api.value.getItemProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhMentionItemText = defineComponent({\n name: 'XhMentionItemText',\n setup(_, { slots }) {\n const ctx = useMentionContext()\n const { item } = useMentionItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 过滤仍归调用方:collection 就是此刻该显示的那几条候选。\n */\nfunction renderDefaultTree(\n collection: readonly MentionNodeMeta[],\n itemSlot?: (node: MentionNodeMeta) => VNode[],\n): VNode[] {\n return [\n h(XhMentionInput),\n h(XhMentionPositioner, null, () => [\n h(XhMentionContent, null, () => collection.map(node =>\n h(XhMentionItem, { key: node.value, value: node.value }, () => [\n h(XhMentionItemText, null, () => itemSlot?.(node) ?? node.label),\n ]),\n )),\n ]),\n ]\n}\n","import type { InjectionKey } from 'vue'\nimport type { MenuContext } from './use-menu'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<MenuContext> = Symbol('xh-menu')\n\nexport function provideMenu(ctx: MenuContext): void {\n provide(KEY, ctx)\n}\n\nexport function useMenuContext(): MenuContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Menu 部件必须用在 XhMenuRoot 内')\n return ctx\n}\n","import type { MenuApi, MenuSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectMenu, menuMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface MenuContext {\n service: Service<MenuSchema>\n api: ComputedRef<MenuApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useMenu(\n props: MenuSchema['props'],\n onOpenChange?: MenuSchema['props']['onOpenChange'],\n onSelect?: MenuSchema['props']['onSelect'],\n): MenuContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(menuMachine, () => ({ ...props, onOpenChange, onSelect }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // trigger 记为本层分支,点它算层内交互\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectMenu(service, vueNormalize))\n return { service, api, triggerRef, positionerRef, contentRef }\n}\n","import type { MenuNode, MenuNodeMeta, MenuSchema } from '@xihan-ui/headless'\nimport type { Direction, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideMenu, useMenuContext } from './context'\nimport { useMenu } from './use-menu'\n\ntype MenuProps = MenuSchema['props']\n\nexport const XhMenuRoot = defineComponent({\n name: 'XhMenuRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n collection: { type: Array as PropType<MenuNode[]>, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // open-change 携带 { open }、select 携带 { value },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<MenuProps, 'onOpenChange'>) => true,\n 'select': (_details: PayloadOf<MenuProps, 'onSelect'>) => true,\n 'update:open': (_open: PayloadOf<MenuProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyOpen: MenuProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const notifySelect: MenuProps['onSelect'] = details => emit('select', details)\n const ctx = useMenu(props as MenuProps, notifyOpen, notifySelect)\n provideMenu(ctx)\n return () => (slots.default\n ? slots.default({ open: ctx.api.value.open, setOpen: ctx.api.value.setOpen })\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.trigger?.() ?? null, slots.item)\n : [])\n },\n})\n\nexport const XhMenuTrigger = defineComponent({\n name: 'XhMenuTrigger',\n setup(_, { slots }) {\n const ctx = useMenuContext()\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhMenuPositioner = defineComponent({\n name: 'XhMenuPositioner',\n setup(_, { slots }) {\n const ctx = useMenuContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhMenuContent = defineComponent({\n name: 'XhMenuContent',\n setup(_, { slots }) {\n const ctx = useMenuContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhMenuItem = defineComponent({\n name: 'XhMenuItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useMenuContext()\n // 本条目持有焦点时,value 变更按新值重报焦点条目,卸载时上报焦点丢失\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const svc = ctx.service\n if (svc.getStatus() !== 'Started')\n return\n if (itemEl.value && svc.scope.getActiveElement() === itemEl.value)\n svc.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 根已停机时不再送事件\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.LOST' })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhMenuSeparator = defineComponent({\n name: 'XhMenuSeparator',\n setup() {\n const ctx = useMenuContext()\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\nexport const XhMenuArrow = defineComponent({\n name: 'XhMenuArrow',\n setup() {\n const ctx = useMenuContext()\n return () => h('div', ctx.api.value.getArrowProps() as Record<string, unknown>)\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 触发器内容归作者,由 trigger 插槽承载;条目内容缺省是 label,可由 item 插槽接管。\n */\nfunction renderDefaultTree(\n collection: readonly MenuNodeMeta[],\n trigger: (VNode | string)[] | null,\n itemSlot?: (node: MenuNodeMeta) => VNode[],\n): VNode[] {\n return [\n h(XhMenuTrigger, null, () => trigger ?? []),\n h(XhMenuPositioner, null, () => [\n h(XhMenuContent, null, () => collection.flatMap((node, index) => [\n // 首条上的标记不产出分隔线:菜单开头不留一道空隔\n ...(index > 0 && node.separatorBefore ? [h(XhMenuSeparator, { key: `separator:${node.value}` })] : []),\n h(XhMenuItem, { key: node.value, value: node.value }, () => itemSlot?.(node) ?? node.label),\n ])),\n ]),\n ]\n}\n","import type { MenubarContentProps, MenubarGroupProps, MenubarItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { MenubarContext } from './use-menubar'\nimport { inject, provide } from 'vue'\n\n/** 某一项菜单自报的身份,供它的 positioner / content 取到同一个值(两者与 trigger 靠它互相认领)。 */\nexport interface MenubarMenuContext {\n menu: ComputedRef<MenubarContentProps>\n}\n\n/** 条目自报的值与禁用,供 item-text / item-indicator 这类子部件复用同一份声明。 */\nexport interface MenubarItemContext {\n item: ComputedRef<MenubarItemProps>\n}\n\n/** 分组自报的身份,供分组标题取到同一个值(标题的 id 由它派生)。 */\nexport interface MenubarGroupContext {\n group: ComputedRef<MenubarGroupProps>\n}\n\nconst KEY: InjectionKey<MenubarContext> = Symbol('xh-menubar')\nconst MENU_KEY: InjectionKey<MenubarMenuContext> = Symbol('xh-menubar-menu')\nconst ITEM_KEY: InjectionKey<MenubarItemContext> = Symbol('xh-menubar-item')\nconst GROUP_KEY: InjectionKey<MenubarGroupContext> = Symbol('xh-menubar-group')\n\nexport function provideMenubar(ctx: MenubarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useMenubarContext(): MenubarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Menubar 部件必须用在 XhMenubarRoot 内')\n return ctx\n}\n\nexport function provideMenubarMenu(ctx: MenubarMenuContext): void {\n provide(MENU_KEY, ctx)\n}\n\n/** 取所属那一项的身份,不在 positioner 内时返回 null(此时 content 须自带 value)。 */\nexport function useMenubarMenuContext(): MenubarMenuContext | null {\n return inject(MENU_KEY, null)\n}\n\nexport function provideMenubarItem(ctx: MenubarItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useMenubarItemContext(): MenubarItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Menubar 条目子部件必须用在 XhMenubarItem 内')\n return ctx\n}\n\nexport function provideMenubarGroup(ctx: MenubarGroupContext): void {\n provide(GROUP_KEY, ctx)\n}\n\nexport function useMenubarGroupContext(): MenubarGroupContext {\n const ctx = inject(GROUP_KEY, null)\n if (!ctx)\n throw new Error('[xh] Menubar 分组标题必须用在 XhMenubarGroup 内')\n return ctx\n}\n","import type { MenubarApi, MenubarSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectMenubar, menubarMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\n/** 按 value 登记角色节点,浮层三件套据此取到当前展开那一项。 */\nexport type MenubarPartRegistry = (value: string, el: HTMLElement | null) => void\n\nexport interface MenubarContext {\n service: Service<MenubarSchema>\n api: ComputedRef<MenubarApi>\n rootRef: Ref<HTMLElement | null>\n registerTrigger: MenubarPartRegistry\n registerPositioner: MenubarPartRegistry\n registerContent: MenubarPartRegistry\n}\n\nexport function useMenubar(\n props: MenubarSchema['props'],\n onValueChange?: MenubarSchema['props']['onValueChange'],\n onSelect?: MenubarSchema['props']['onSelect'],\n): MenubarContext {\n const rootRef = ref<HTMLElement | null>(null)\n // 普通 Map 而非响应式,这三份表只在事件与效应里被机器读\n const triggers = new Map<string, HTMLElement>()\n const positioners = new Map<string, HTMLElement>()\n const contents = new Map<string, HTMLElement>()\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(menubarMachine, () => ({ ...props, onValueChange, onSelect }), scope)\n\n const put = (table: Map<string, HTMLElement>): MenubarPartRegistry => (value, el) => {\n if (el)\n table.set(value, el)\n else\n table.delete(value)\n }\n const current = (table: Map<string, HTMLElement>) => (): HTMLElement | null => {\n const value = service.context.get('value') ?? null\n return value == null ? null : table.get(value) ?? null\n }\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按有无菜单展开驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: current(contents),\n // 整条菜单栏记为本层分支,点 trigger 与掠过换菜单都算层内交互\n branches: () => [rootRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n // 菜单不带遮罩,没有可点关闭的表面\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', current(triggers))\n service.refs.set('getFloatingEl', current(positioners))\n service.refs.set('getContentEl', current(contents))\n service.refs.set('getRootEl', () => rootRef.value)\n }\n\n const api = computed(() => connectMenubar(service, vueNormalize))\n return {\n service,\n api,\n rootRef,\n registerTrigger: put(triggers),\n registerPositioner: put(positioners),\n registerContent: put(contents),\n }\n}\n","import type { MenubarContentProps, MenubarGroupProps, MenubarItemProps, MenubarNode, MenubarNodeMeta, MenubarSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { MenubarPartRegistry } from './use-menubar'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport {\n provideMenubar,\n provideMenubarGroup,\n provideMenubarItem,\n provideMenubarMenu,\n useMenubarContext,\n useMenubarGroupContext,\n useMenubarItemContext,\n useMenubarMenuContext,\n} from './context'\nimport { useMenubar } from './use-menubar'\n\ntype MenubarProps = MenubarSchema['props']\n\n/** 在 ref 回调里把节点按 value 登记进菜单栏取值表,value 变更时迁移到新键,卸载时注销 */\nfunction useMenubarPart(register: MenubarPartRegistry, value: () => string): (el: HTMLElement | null) => void {\n const node = ref<HTMLElement | null>(null)\n watch(value, (next, prev) => {\n if (next === prev)\n return\n register(prev, null)\n register(next, node.value)\n })\n onBeforeUnmount(() => register(value(), null))\n return (el) => {\n node.value = el\n register(value(), el)\n }\n}\n\n/** role=menubar 根节点:trigger 的 roving tabindex 作用域,各菜单浮层也挂在其内 */\nexport const XhMenubarRoot = defineComponent({\n name: 'XhMenubarRoot',\n // 全部 default: undefined,缺省值由机器与 connect 决定\n props: {\n collection: { type: Array as PropType<MenubarNode[]>, default: undefined },\n value: { type: String as PropType<string | null>, default: undefined },\n defaultValue: { type: String as PropType<string | null>, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n disabled: { type: Boolean, default: undefined },\n typeahead: { type: Boolean, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value }、select 携带 { menu, value },update:value 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<MenubarProps, 'onValueChange'>) => true,\n 'select': (_details: PayloadOf<MenubarProps, 'onSelect'>) => true,\n 'update:value': (_value: PayloadOf<MenubarProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: MenubarProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifySelect: MenubarProps['onSelect'] = details => emit('select', details)\n const ctx = useMenubar(props as MenubarProps, notifyValue, notifySelect)\n provideMenubar(ctx)\n return () => h('div', {\n ...ctx.api.value.getRootProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.rootRef.value = el as HTMLElement },\n }, slots.default\n ? slots.default({\n value: ctx.api.value.value,\n open: ctx.api.value.open,\n setValue: ctx.api.value.setValue,\n })\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.item)\n : [])\n },\n})\n\nexport const XhMenubarTrigger = defineComponent({\n name: 'XhMenubarTrigger',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useMenubarContext()\n // trigger 同时作为定位锚点与焦点归还目标\n const setEl = useMenubarPart(ctx.registerTrigger, () => props.value)\n return () => h('button', {\n ...ctx.api.value.getTriggerProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>,\n ref: (el: unknown) => setEl(el as HTMLElement | null),\n }, slots.default?.())\n },\n})\n\nexport const XhMenubarPositioner = defineComponent({\n name: 'XhMenubarPositioner',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useMenubarContext()\n const menu = computed<MenubarContentProps>(() => ({ value: props.value }))\n // 供内部 content 继承 value\n provideMenubarMenu({ menu })\n const setEl = useMenubarPart(ctx.registerPositioner, () => props.value)\n return () => h('div', {\n ...ctx.api.value.getPositionerProps(menu.value) as Record<string, unknown>,\n ref: (el: unknown) => setEl(el as HTMLElement | null),\n }, slots.default?.())\n },\n})\n\nexport const XhMenubarContent = defineComponent({\n name: 'XhMenubarContent',\n props: {\n // 缺省时沿用外层 positioner 提供的身份,无 positioner 时必填\n value: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useMenubarContext()\n const inherited = useMenubarMenuContext()\n if (props.value == null && !inherited)\n throw new Error('[xh] XhMenubarContent 必须写在 XhMenubarPositioner 内,或自带 value')\n const menu = computed<MenubarContentProps>(() => ({ value: props.value ?? inherited!.menu.value.value }))\n const setEl = useMenubarPart(ctx.registerContent, () => menu.value.value)\n return () => h('div', {\n ...ctx.api.value.getContentProps(menu.value) as Record<string, unknown>,\n ref: (el: unknown) => setEl(el as HTMLElement | null),\n }, slots.default?.())\n },\n})\n\nexport const XhMenubarGroup = defineComponent({\n name: 'XhMenubarGroup',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useMenubarContext()\n const group = computed<MenubarGroupProps>(() => ({ value: props.value }))\n provideMenubarGroup({ group })\n return () => h('div', ctx.api.value.getGroupProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhMenubarGroupLabel = defineComponent({\n name: 'XhMenubarGroupLabel',\n setup(_, { slots }) {\n const ctx = useMenubarContext()\n const { group } = useMenubarGroupContext()\n return () => h('span', ctx.api.value.getGroupLabelProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhMenubarItem = defineComponent({\n name: 'XhMenubarItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useMenubarContext()\n const item = computed<MenubarItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n provideMenubarItem({ item })\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报焦点丢失\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.LOST' })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhMenubarItemText = defineComponent({\n name: 'XhMenubarItemText',\n setup(_, { slots }) {\n const ctx = useMenubarContext()\n const { item } = useMenubarItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhMenubarItemIndicator = defineComponent({\n name: 'XhMenubarItemIndicator',\n setup(_, { slots }) {\n const ctx = useMenubarContext()\n const { item } = useMenubarItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhMenubarSeparator = defineComponent({\n name: 'XhMenubarSeparator',\n setup() {\n const ctx = useMenubarContext()\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 一排入口排在前、各自那张菜单的浮层排在后,与手写部件产出的 DOM 完全一致;\n * 要改结构就写默认插槽,行为不变。\n */\nfunction renderDefaultTree(\n collection: readonly MenubarNodeMeta[],\n itemSlot?: (node: MenubarNodeMeta) => VNode[],\n): VNode[] {\n return [\n ...collection.map(menu =>\n h(XhMenubarTrigger, { key: `trigger:${menu.value}`, value: menu.value }, () => menu.label),\n ),\n ...collection.map(menu =>\n h(XhMenubarPositioner, { key: `positioner:${menu.value}`, value: menu.value }, () => [\n h(XhMenubarContent, null, () => menu.items.map(item =>\n h(XhMenubarItem, { key: item.value, value: item.value }, () => [\n h(XhMenubarItemText, null, () => itemSlot?.(item) ?? item.label),\n ]),\n )),\n ]),\n ),\n ]\n}\n","import type { InjectionKey } from 'vue'\nimport type { NavigationMenuContext } from './use-navigation-menu'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<NavigationMenuContext> = Symbol('xh-navigation-menu')\n\nexport function provideNavigationMenu(ctx: NavigationMenuContext): void {\n provide(KEY, ctx)\n}\n\nexport function useNavigationMenuContext(): NavigationMenuContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] NavigationMenu 部件必须用在 XhNavigationMenuRoot 内')\n return ctx\n}\n","import type { NavigationMenuApi, NavigationMenuSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectNavigationMenu, navigationMenuMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface NavigationMenuContext {\n api: ComputedRef<NavigationMenuApi>\n service: Service<NavigationMenuSchema>\n /** list 节点:trigger 集合的查询容器,同时是指示条量测的参照系。 */\n listRef: Ref<HTMLElement | null>\n}\n\nexport function useNavigationMenu(\n props: NavigationMenuSchema['props'],\n onValueChange?: NavigationMenuSchema['props']['onValueChange'],\n): NavigationMenuContext {\n const listRef = ref<HTMLElement | null>(null)\n const idGen = createVueIdGenerator()\n // trigger 与 content 要按 value 逐对互指,那些 id 由 scope 派生,故自建一个\n const scope = createScope(null, idGen)\n const service = useMachine(navigationMenuMachine, () => ({ ...props, onValueChange }), scope)\n\n // 指示条的量测在机器的 action 里跑,参照系经 refs 交进去\n service.refs.set('getListEl', () => listRef.value)\n\n const api = computed(() => connectNavigationMenu(service, vueNormalize))\n return { api, service, listRef }\n}\n","import type { NavigationMenuNode, NavigationMenuNodeMeta, NavigationMenuSchema, NavigationMenuTranslations } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { provideNavigationMenu, useNavigationMenuContext } from './context'\nimport { useNavigationMenu } from './use-navigation-menu'\n\ntype NavigationMenuProps = NavigationMenuSchema['props']\n\n/** 根节点渲染为 nav,收起的三条出口(指针离开、焦点离场、Escape)在这一层处理 */\nexport const XhNavigationMenuRoot = defineComponent({\n name: 'XhNavigationMenuRoot',\n // 全部 default: undefined,缺省值由机器与 connect 决定\n props: {\n collection: { type: Array as PropType<NavigationMenuNode[]>, default: undefined },\n value: { type: String as PropType<string | null>, default: undefined },\n defaultValue: { type: String as PropType<string | null>, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n delayDuration: { type: Number, default: undefined },\n skipDelayDuration: { type: Number, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n loop: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<Partial<NavigationMenuTranslations>>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸值以支持 v-model:value\n emits: {\n 'value-change': (_details: PayloadOf<NavigationMenuProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<NavigationMenuProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: NavigationMenuProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useNavigationMenu(props as NavigationMenuProps, notify)\n provideNavigationMenu(ctx)\n return () => {\n // 默认插槽里有真内容就照旧交给作者;只剩注释或空白时当没写,给了 collection 就按数据铺开整套结构\n const authored = slots.default?.()\n const children = slotPaints(authored)\n ? authored\n : (props.collection ? renderDefaultTree(ctx.api.value.collection, slots.panel) : undefined)\n return h('nav', ctx.api.value.getRootProps() as Record<string, unknown>, children)\n }\n },\n})\n\n// 用 ul 而非 div:站点导航是一组并列的去处,读屏会念\"列表,共 n 项\"。\nexport const XhNavigationMenuList = defineComponent({\n name: 'XhNavigationMenuList',\n setup(_, { slots }) {\n const ctx = useNavigationMenuContext()\n return () => h('ul', {\n ...ctx.api.value.getListProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.listRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\n/** 一项渲染为一个 li;面板 content 写在同一个 li 内、紧跟 trigger 之后 */\nexport const XhNavigationMenuItem = defineComponent({\n name: 'XhNavigationMenuItem',\n setup(_, { slots }) {\n const ctx = useNavigationMenuContext()\n return () => h('li', ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhNavigationMenuTrigger = defineComponent({\n name: 'XhNavigationMenuTrigger',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useNavigationMenuContext()\n return () => h(\n 'button',\n ctx.api.value.getTriggerProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n// 面板常挂,靠 hidden 显隐,不做懒挂载\nexport const XhNavigationMenuContent = defineComponent({\n name: 'XhNavigationMenuContent',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useNavigationMenuContext()\n return () => h(\n 'div',\n ctx.api.value.getContentProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/** 面板内的链接项:href 由作者写,点击不拦截,只收起导航 */\nexport const XhNavigationMenuLink = defineComponent({\n name: 'XhNavigationMenuLink',\n props: {\n current: Boolean,\n },\n setup(props, { slots }) {\n const ctx = useNavigationMenuContext()\n return () => h(\n 'a',\n ctx.api.value.getLinkProps({ current: props.current }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/** 指示条容器,位置由机器算好写入内联样式;渲染为 li 以 list 为定位参照系 */\nexport const XhNavigationMenuIndicator = defineComponent({\n name: 'XhNavigationMenuIndicator',\n setup() {\n const ctx = useNavigationMenuContext()\n return () => h('li', ctx.api.value.getIndicatorProps() as Record<string, unknown>)\n },\n})\n\n/** 可选的共享面板外壳,放在 root 内、list 之后 */\nexport const XhNavigationMenuViewport = defineComponent({\n name: 'XhNavigationMenuViewport',\n setup(_, { slots }) {\n const ctx = useNavigationMenuContext()\n return () => h('div', ctx.api.value.getViewportProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 一项一个 li:带 href 的铺成直达链接,其余铺成 trigger 加面板,面板内容由 panel 插槽给。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n */\nfunction renderDefaultTree(\n collection: readonly NavigationMenuNodeMeta[],\n panelSlot?: (node: NavigationMenuNodeMeta) => VNode[],\n): VNode[] {\n return [\n h(XhNavigationMenuList, null, () => [\n ...collection.map(node => h(XhNavigationMenuItem, { key: node.value }, () => (\n node.href != null\n ? [h(XhNavigationMenuLink, { href: node.href, current: node.current }, () => node.label)]\n : [\n h(XhNavigationMenuTrigger, { value: node.value }, () => node.label),\n h(XhNavigationMenuContent, { value: node.value }, () => panelSlot?.(node) ?? []),\n ]\n ))),\n h(XhNavigationMenuIndicator),\n ]),\n ]\n}\n","import type { NumberAnimationEasing, NumberAnimationFinishDetails, NumberAnimationLive, NumberAnimationSchema } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { connectNumberAnimation, numberAnimationMachine } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useMachine } from '../../runtime/use-machine'\n\ntype NumberAnimationProps = NumberAnimationSchema['props']\n\n/**\n * 一段会自己走的数字:从 from 补间到 to,逐帧算值,格式化后写进根里。\n *\n * 默认插槽拿得到 `{ value, text }`,插了内容就由作者自己排版;\n * 什么都不插时根里就是格式化好的那串字。\n */\nexport const XhNumberAnimation = defineComponent({\n name: 'XhNumberAnimation',\n // 缺省值由机器与 connect 给出,这里一律 default: undefined\n props: {\n from: { type: Number, default: undefined },\n to: { type: Number, default: undefined },\n duration: { type: Number, default: undefined },\n easing: { type: String as PropType<NumberAnimationEasing>, default: undefined },\n precision: { type: Number, default: undefined },\n separator: { type: String, default: undefined },\n active: { type: Boolean, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n live: { type: String as PropType<NumberAnimationLive>, default: undefined },\n },\n emits: {\n finish: (_details: PayloadOf<NumberAnimationProps, 'onFinish'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: NumberAnimationProps['onFinish'] = (details: NumberAnimationFinishDetails) => {\n emit('finish', details)\n }\n const service = useMachine(numberAnimationMachine, () => ({ ...props, onFinish: notify }))\n const api = computed(() => connectNumberAnimation(service, vueNormalize))\n\n return () => {\n const current = api.value\n const content = slots.default?.({ value: current.value, text: current.text })\n return h(\n 'span',\n current.getRootProps() as Record<string, unknown>,\n // 插槽为空(含 v-if 落空只剩注释节点)时退回组件自己铺好的那串字\n slotPaints(content) ? content : current.text,\n )\n }\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { NumberFieldContext } from './use-number-field'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<NumberFieldContext> = Symbol('xh-number-field')\n\nexport function provideNumberField(ctx: NumberFieldContext): void {\n provide(KEY, ctx)\n}\n\nexport function useNumberFieldContext(): NumberFieldContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] NumberField 部件必须用在 XhNumberFieldRoot 内')\n return ctx\n}\n","import type { NumberFieldApi, NumberFieldSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectNumberField, numberFieldMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface NumberFieldContext {\n api: ComputedRef<NumberFieldApi>\n}\n\nexport function useNumberField(\n props: NumberFieldSchema['props'],\n onValueChange?: NumberFieldSchema['props']['onValueChange'],\n): NumberFieldContext {\n const service = useMachine(numberFieldMachine, () => ({ ...props, onValueChange }))\n const api = computed(() => connectNumberField(service, vueNormalize))\n return { api }\n}\n","import type { NumberFieldSchema } from '@xihan-ui/headless'\nimport type { ControlVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideNumberField, useNumberFieldContext } from './context'\nimport { useNumberField } from './use-number-field'\n\ntype NumberFieldProps = NumberFieldSchema['props']\n\nexport const XhNumberFieldRoot = defineComponent({\n name: 'XhNumberFieldRoot',\n props: {\n // 值是原始输入串;default: undefined 表示非受控\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n min: { type: Number, default: undefined },\n max: { type: Number, default: undefined },\n step: { type: Number, default: undefined },\n largeStep: { type: Number, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n required: Boolean,\n invalid: Boolean,\n name: { type: String, default: undefined },\n changeDelay: { type: Number, default: undefined },\n changeInterval: { type: Number, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value, valueAsNumber },update:value 携带裸串\n emits: {\n 'value-change': (_details: PayloadOf<NumberFieldProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<NumberFieldProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: NumberFieldProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useNumberField(props as NumberFieldProps, notify)\n provideNumberField(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n valueAsNumber: ctx.api.value.valueAsNumber,\n empty: ctx.api.value.empty,\n canIncrement: ctx.api.value.canIncrement,\n canDecrement: ctx.api.value.canDecrement,\n setValue: ctx.api.value.setValue,\n increment: ctx.api.value.increment,\n decrement: ctx.api.value.decrement,\n }))\n },\n})\n\nexport const XhNumberFieldLabel = defineComponent({\n name: 'XhNumberFieldLabel',\n setup(_, { slots }) {\n const ctx = useNumberFieldContext()\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhNumberFieldInput = defineComponent({\n name: 'XhNumberFieldInput',\n setup() {\n const ctx = useNumberFieldContext()\n return () => h('input', ctx.api.value.getInputProps() as Record<string, unknown>)\n },\n})\n\nexport const XhNumberFieldIncrementTrigger = defineComponent({\n name: 'XhNumberFieldIncrementTrigger',\n setup(_, { slots }) {\n const ctx = useNumberFieldContext()\n return () => h('button', ctx.api.value.getIncrementTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhNumberFieldDecrementTrigger = defineComponent({\n name: 'XhNumberFieldDecrementTrigger',\n setup(_, { slots }) {\n const ctx = useNumberFieldContext()\n return () => h('button', ctx.api.value.getDecrementTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { PageHeaderApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface PageHeaderContext {\n api: ComputedRef<PageHeaderApi>\n}\n\nconst KEY: InjectionKey<PageHeaderContext> = Symbol('xh-page-header')\n\nexport function providePageHeader(ctx: PageHeaderContext): void {\n provide(KEY, ctx)\n}\n\nexport function usePageHeaderContext(): PageHeaderContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] PageHeader 部件必须用在 XhPageHeaderRoot 内')\n return ctx\n}\n","import type { PageHeaderProps } from '@xihan-ui/headless'\nimport type { Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectPageHeader } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { providePageHeader, usePageHeaderContext } from './context'\n\n/** 根节点渲染为 div,缺省值由 connect 给出,这里一律 default: undefined */\nexport const XhPageHeaderRoot = defineComponent({\n name: 'XhPageHeaderRoot',\n props: {\n size: { type: String as PropType<Size>, default: undefined },\n bordered: Boolean,\n },\n setup(props, { slots }) {\n const api = computed(() => connectPageHeader(props as PageHeaderProps, vueNormalize))\n providePageHeader({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 返回位:组件只给身份与位置,按钮本身归作者。\n * as 决定渲染成哪个标签,默认 button;不自动补 type=\"button\",落在表单里需自行声明。\n */\nexport const XhPageHeaderBackTrigger = defineComponent({\n name: 'XhPageHeaderBackTrigger',\n props: {\n as: { type: String, default: 'button' },\n },\n setup(props, { slots }) {\n const ctx = usePageHeaderContext()\n return () => h(\n props.as,\n ctx.api.value.getBackTriggerProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n// 标题渲染为 div 而不是 hN:它只做视觉主次,不往文档大纲里插一级标题\nexport const XhPageHeaderTitle = defineComponent({\n name: 'XhPageHeaderTitle',\n setup(_, { slots }) {\n const ctx = usePageHeaderContext()\n return () => h('div', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 副标题与标题排在同一行,放编号、状态这类补充信息\nexport const XhPageHeaderSubtitle = defineComponent({\n name: 'XhPageHeaderSubtitle',\n setup(_, { slots }) {\n const ctx = usePageHeaderContext()\n return () => h('div', ctx.api.value.getSubtitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 操作槽只排版,按钮由作者放进插槽\nexport const XhPageHeaderExtra = defineComponent({\n name: 'XhPageHeaderExtra',\n setup(_, { slots }) {\n const ctx = usePageHeaderContext()\n return () => h('div', ctx.api.value.getExtraProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 页脚整行另起,装描述、标签页或一组摘要\nexport const XhPageHeaderFooter = defineComponent({\n name: 'XhPageHeaderFooter',\n setup(_, { slots }) {\n const ctx = usePageHeaderContext()\n return () => h('div', ctx.api.value.getFooterProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { PaginationContext } from './use-pagination'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<PaginationContext> = Symbol('xh-pagination')\n\nexport function providePagination(ctx: PaginationContext): void {\n provide(KEY, ctx)\n}\n\nexport function usePaginationContext(): PaginationContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Pagination 部件必须用在 XhPaginationRoot 内')\n return ctx\n}\n","import type { PaginationApi, PaginationSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectPagination, paginationMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface PaginationContext {\n api: ComputedRef<PaginationApi>\n}\n\nexport function usePagination(\n props: PaginationSchema['props'],\n onPageChange?: PaginationSchema['props']['onPageChange'],\n): PaginationContext {\n const service = useMachine(paginationMachine, () => ({ ...props, onPageChange }))\n const api = computed(() => connectPagination(service, vueNormalize))\n return { api }\n}\n","import type { PaginationSchema, PaginationTranslations } from '@xihan-ui/headless'\nimport type { Direction, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { providePagination, usePaginationContext } from './context'\nimport { usePagination } from './use-pagination'\n\ntype PaginationProps = PaginationSchema['props']\n\nexport const XhPaginationRoot = defineComponent({\n name: 'XhPaginationRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n count: { type: Number, default: undefined },\n pageSize: { type: Number, default: undefined },\n page: { type: Number, default: undefined },\n defaultPage: { type: Number, default: undefined },\n siblingCount: { type: Number, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n translations: { type: Object as PropType<Partial<PaginationTranslations>>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // page-change 携带 { page, pageSize },update:page 携带裸页码\n emits: {\n 'page-change': (_details: PayloadOf<PaginationProps, 'onPageChange'>) => true,\n 'update:page': (_page: PayloadOf<PaginationProps, 'onPageChange'>['page']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: PaginationProps['onPageChange'] = (details) => {\n emit('page-change', details)\n emit('update:page', details.page)\n }\n const ctx = usePagination(props as PaginationProps, notify)\n providePagination(ctx)\n // 根节点渲染为 nav 地标\n return () => h('nav', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n page: ctx.api.value.page,\n pageSize: ctx.api.value.pageSize,\n count: ctx.api.value.count,\n totalPages: ctx.api.value.totalPages,\n pages: ctx.api.value.pages,\n pageRange: ctx.api.value.pageRange,\n previousPage: ctx.api.value.previousPage,\n nextPage: ctx.api.value.nextPage,\n setPage: ctx.api.value.setPage,\n goToPrevPage: ctx.api.value.goToPrevPage,\n goToNextPage: ctx.api.value.goToNextPage,\n slice: ctx.api.value.slice,\n }))\n },\n})\n\nexport const XhPaginationPrevTrigger = defineComponent({\n name: 'XhPaginationPrevTrigger',\n setup(_, { slots }) {\n const ctx = usePaginationContext()\n return () => h('button', ctx.api.value.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPaginationNextTrigger = defineComponent({\n name: 'XhPaginationNextTrigger',\n setup(_, { slots }) {\n const ctx = usePaginationContext()\n return () => h('button', ctx.api.value.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPaginationItem = defineComponent({\n name: 'XhPaginationItem',\n props: {\n // 这一项对应的页码,兼收字符串\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = usePaginationContext()\n return () => h(\n 'button',\n ctx.api.value.getItemProps({ page: Number(props.value) }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhPaginationEllipsis = defineComponent({\n name: 'XhPaginationEllipsis',\n setup(_, { slots }) {\n const ctx = usePaginationContext()\n return () => h('span', ctx.api.value.getEllipsisProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { PinInputContext } from './use-pin-input'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<PinInputContext> = Symbol('xh-pin-input')\n\nexport function providePinInput(ctx: PinInputContext): void {\n provide(KEY, ctx)\n}\n\nexport function usePinInputContext(): PinInputContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] PinInput 部件必须用在 XhPinInputRoot 内')\n return ctx\n}\n","import type { PinInputApi, PinInputSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectPinInput, pinInputMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface PinInputContext {\n api: ComputedRef<PinInputApi>\n}\n\nexport function usePinInput(\n props: PinInputSchema['props'],\n handlers: Pick<PinInputSchema['props'], 'onValueChange' | 'onValueComplete'> = {},\n): PinInputContext {\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(pinInputMachine, () => ({ ...props, ...handlers }), scope)\n const api = computed(() => connectPinInput(service, vueNormalize))\n return { api }\n}\n","import type { PinInputSchema, PinInputTranslations, PinInputType } from '@xihan-ui/headless'\nimport type { ControlVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { providePinInput, usePinInputContext } from './context'\nimport { usePinInput } from './use-pin-input'\n\ntype PinInputProps = PinInputSchema['props']\n\nexport const XhPinInputRoot = defineComponent({\n name: 'XhPinInputRoot',\n props: {\n // default: undefined 表示非受控\n value: { type: Array as PropType<string[]>, default: undefined },\n defaultValue: { type: Array as PropType<string[]>, default: undefined },\n // 缺省值由 connect 给出,这里一律 default: undefined\n length: { type: Number, default: undefined },\n type: { type: String as PropType<PinInputType>, default: undefined },\n mask: Boolean,\n otp: Boolean,\n placeholder: { type: String, default: undefined },\n disabled: Boolean,\n invalid: Boolean,\n blurOnComplete: Boolean,\n name: { type: String, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n translations: { type: Object as PropType<Partial<PinInputTranslations>>, default: undefined },\n },\n // value-change 携带 { value, valueAsString },update:value 携带裸数组\n emits: {\n 'value-change': (_details: PayloadOf<PinInputProps, 'onValueChange'>) => true,\n 'value-complete': (_details: PayloadOf<PinInputProps, 'onValueComplete'>) => true,\n 'update:value': (_value: PayloadOf<PinInputProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const onValueChange: PinInputProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const onValueComplete: PinInputProps['onValueComplete'] = details => emit('value-complete', details)\n const ctx = usePinInput(props as PinInputProps, { onValueChange, onValueComplete })\n providePinInput(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n valueAsString: ctx.api.value.valueAsString,\n complete: ctx.api.value.complete,\n length: ctx.api.value.length,\n focusedIndex: ctx.api.value.focusedIndex,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhPinInputLabel = defineComponent({\n name: 'XhPinInputLabel',\n setup(_, { slots }) {\n const ctx = usePinInputContext()\n // 必须是原生 label,getLabelProps 的 for 恒写向首格\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPinInputInput = defineComponent({\n name: 'XhPinInputInput',\n props: {\n // 下标由作者声明,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props) {\n const ctx = usePinInputContext()\n return () => h('input', ctx.api.value.getInputProps({ index: Math.trunc(Number(props.index)) }) as Record<string, unknown>)\n },\n})\n\nexport const XhPinInputHiddenInput = defineComponent({\n name: 'XhPinInputHiddenInput',\n setup() {\n const ctx = usePinInputContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { PopconfirmContext } from './use-popconfirm'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<PopconfirmContext> = Symbol('xh-popconfirm')\n\nexport function providePopconfirm(ctx: PopconfirmContext): void {\n provide(KEY, ctx)\n}\n\nexport function usePopconfirmContext(): PopconfirmContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Popconfirm 部件必须用在 XhPopconfirmRoot 内')\n return ctx\n}\n","import type { PopconfirmApi, PopconfirmIntents, PopconfirmNotifiers, PopconfirmOverlayProps, PopoverSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectPopconfirm, popoverMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface PopconfirmContext {\n service: Service<PopoverSchema>\n api: ComputedRef<PopconfirmApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function usePopconfirm(\n props: PopconfirmOverlayProps,\n notify?: PopconfirmNotifiers,\n): PopconfirmContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n\n // 开合、定位、消解层与焦点域全交给 popover 机器;气泡确认只多出确认/取消两个意图,\n // 它们不改开合以外的状态,走 connect 不进机器。\n // modal 与 translations 不往下传:不陷焦点,按钮文案由作者写在节点里。\n const service = useMachine(popoverMachine, (): PopoverSchema['props'] => ({\n open: props.open,\n defaultOpen: props.defaultOpen,\n placement: props.placement,\n offset: props.offset,\n closeOnEscape: props.closeOnEscape,\n closeOnInteractOutside: props.closeOnInteractOutside,\n size: props.size,\n onOpenChange: notify?.onOpenChange,\n }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // trigger 记为本层分支,点它算层内交互\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n // 每次点击现读 notify,宿主换回调也立刻生效\n const intents: PopconfirmIntents = {\n onConfirm: () => { notify?.onConfirm?.() },\n onCancel: () => { notify?.onCancel?.() },\n }\n\n const api = computed(() => connectPopconfirm(service, intents, vueNormalize))\n return { service, api, triggerRef, positionerRef, contentRef }\n}\n","import type { PopconfirmNotifiers, PopconfirmOverlayProps, PopconfirmProps } from '@xihan-ui/headless'\nimport type { Placement, Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { providePopconfirm, usePopconfirmContext } from './context'\nimport { usePopconfirm } from './use-popconfirm'\n\nexport const XhPopconfirmRoot = defineComponent({\n name: 'XhPopconfirmRoot',\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n closeOnEscape: { type: Boolean, default: true },\n closeOnInteractOutside: { type: Boolean, default: true },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // open-change 携带 { open },update:open 携带裸布尔;confirm / cancel 不带载荷\n emits: {\n 'open-change': (_details: PayloadOf<PopconfirmProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<PopconfirmProps, 'onOpenChange'>['open']) => true,\n 'confirm': () => true,\n 'cancel': () => true,\n },\n setup(props, { slots, emit }) {\n const notify: PopconfirmNotifiers = {\n onOpenChange: (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n },\n onConfirm: () => { emit('confirm') },\n onCancel: () => { emit('cancel') },\n }\n const ctx = usePopconfirm(props as PopconfirmOverlayProps, notify)\n providePopconfirm(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n setOpen: ctx.api.value.setOpen,\n confirm: ctx.api.value.confirm,\n cancel: ctx.api.value.cancel,\n }))\n },\n})\n\nexport const XhPopconfirmTrigger = defineComponent({\n name: 'XhPopconfirmTrigger',\n setup(_, { slots }) {\n const ctx = usePopconfirmContext()\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhPopconfirmPositioner = defineComponent({\n name: 'XhPopconfirmPositioner',\n setup(_, { slots }) {\n const ctx = usePopconfirmContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhPopconfirmContent = defineComponent({\n name: 'XhPopconfirmContent',\n setup(_, { slots }) {\n const ctx = usePopconfirmContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhPopconfirmTitle = defineComponent({\n name: 'XhPopconfirmTitle',\n setup(_, { slots }) {\n const ctx = usePopconfirmContext()\n return () => h('h2', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPopconfirmDescription = defineComponent({\n name: 'XhPopconfirmDescription',\n setup(_, { slots }) {\n const ctx = usePopconfirmContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPopconfirmConfirmTrigger = defineComponent({\n name: 'XhPopconfirmConfirmTrigger',\n setup(_, { slots }) {\n const ctx = usePopconfirmContext()\n return () => h('button', ctx.api.value.getConfirmTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPopconfirmCancelTrigger = defineComponent({\n name: 'XhPopconfirmCancelTrigger',\n setup(_, { slots }) {\n const ctx = usePopconfirmContext()\n return () => h('button', ctx.api.value.getCancelTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { PopoverContext } from './use-popover'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<PopoverContext> = Symbol('xh-popover')\n\nexport function providePopover(ctx: PopoverContext): void {\n provide(KEY, ctx)\n}\n\nexport function usePopoverContext(): PopoverContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Popover 部件必须用在 XhPopoverRoot 内')\n return ctx\n}\n","import type { PopoverApi, PopoverSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectPopover, popoverMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface PopoverContext {\n service: Service<PopoverSchema>\n api: ComputedRef<PopoverApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function usePopover(\n props: PopoverSchema['props'],\n onOpenChange?: PopoverSchema['props']['onOpenChange'],\n): PopoverContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(popoverMachine, () => ({ ...props, onOpenChange }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // trigger 记为本层分支,点它算层内交互\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n isModal: () => props.modal ?? false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectPopover(service, vueNormalize))\n return { service, api, triggerRef, positionerRef, contentRef }\n}\n","import type { PopoverSchema } from '@xihan-ui/headless'\nimport type { Placement, Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { providePopover, usePopoverContext } from './context'\nimport { usePopover } from './use-popover'\n\ntype PopoverProps = PopoverSchema['props']\n\nexport const XhPopoverRoot = defineComponent({\n name: 'XhPopoverRoot',\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n modal: { type: Boolean, default: false },\n closeOnEscape: { type: Boolean, default: true },\n closeOnInteractOutside: { type: Boolean, default: true },\n translations: { type: Object as PropType<PopoverProps['translations']>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // open-change 携带 { open },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<PopoverProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<PopoverProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: PopoverProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = usePopover(props as PopoverProps, notify)\n providePopover(ctx)\n return () => slots.default?.({ open: ctx.api.value.open, setOpen: ctx.api.value.setOpen })\n },\n})\n\nexport const XhPopoverTrigger = defineComponent({\n name: 'XhPopoverTrigger',\n setup(_, { slots }) {\n const ctx = usePopoverContext()\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhPopoverPositioner = defineComponent({\n name: 'XhPopoverPositioner',\n setup(_, { slots }) {\n const ctx = usePopoverContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhPopoverContent = defineComponent({\n name: 'XhPopoverContent',\n setup(_, { slots }) {\n const ctx = usePopoverContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhPopoverTitle = defineComponent({\n name: 'XhPopoverTitle',\n setup(_, { slots }) {\n const ctx = usePopoverContext()\n return () => h('h2', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPopoverDescription = defineComponent({\n name: 'XhPopoverDescription',\n setup(_, { slots }) {\n const ctx = usePopoverContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPopoverCloseTrigger = defineComponent({\n name: 'XhPopoverCloseTrigger',\n setup(_, { slots }) {\n const ctx = usePopoverContext()\n return () => h('button', ctx.api.value.getCloseTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPopoverArrow = defineComponent({\n name: 'XhPopoverArrow',\n setup() {\n const ctx = usePopoverContext()\n return () => h('div', ctx.api.value.getArrowProps() as Record<string, unknown>)\n },\n})\n","import type { PopselectItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { PopselectContext } from './use-popselect'\nimport { inject, provide } from 'vue'\n\n/** 条目自报的值与禁用,供 item-text / item-indicator 这类子部件复用同一份声明。 */\nexport interface PopselectItemContext {\n item: ComputedRef<PopselectItemProps>\n}\n\nconst KEY: InjectionKey<PopselectContext> = Symbol('xh-popselect')\nconst ITEM_KEY: InjectionKey<PopselectItemContext> = Symbol('xh-popselect-item')\n\nexport function providePopselect(ctx: PopselectContext): void {\n provide(KEY, ctx)\n}\n\nexport function usePopselectContext(): PopselectContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Popselect 部件必须用在 XhPopselectRoot 内')\n return ctx\n}\n\nexport function providePopselectItem(ctx: PopselectItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function usePopselectItemContext(): PopselectItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Popselect 条目子部件必须用在 XhPopselectItem 内')\n return ctx\n}\n","import type {\n ListboxSchema,\n PopoverSchema,\n PopselectApi,\n PopselectNode,\n} from '@xihan-ui/headless'\nimport type { Cleanup, ControlVariant, Direction, Layer, Placement, RuntimeConfig, Size, Tone } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectPopselect, listboxMachine, popoverMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\n/** 根部件对外的全部输入:浮层一半归 popover 机器,列表一半归 listbox 机器,三个视觉轴直给 connect。 */\nexport interface PopselectRootProps {\n collection?: PopselectNode[]\n value?: string | string[]\n defaultValue?: string | string[]\n multiple?: boolean\n disabled?: boolean\n loop?: boolean\n typeahead?: boolean\n dir?: Direction\n open?: boolean\n defaultOpen?: boolean\n placement?: Placement\n offset?: number\n closeOnEscape?: boolean\n closeOnInteractOutside?: boolean\n variant?: ControlVariant\n tone?: Tone\n size?: Size\n}\n\nexport interface PopselectContext {\n /** 浮层机器,供部件读开合状态。 */\n popover: Service<PopoverSchema>\n /** 列表机器,供部件上报 DOM 侧的事实(如条目卸载带走了焦点)。 */\n listbox: Service<ListboxSchema>\n api: ComputedRef<PopselectApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport interface PopselectNotifiers {\n onValueChange?: ListboxSchema['props']['onValueChange']\n onOpenChange?: PopoverSchema['props']['onOpenChange']\n}\n\nexport function usePopselect(props: PopselectRootProps, notify: PopselectNotifiers = {}): PopselectContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n // 两台机器共用一个 scope:trigger 与 content 的 id 由它派生,aria-controls 才指得准\n const scope = createScope(null, idGen)\n\n const popover = useMachine(popoverMachine, () => ({\n open: props.open,\n defaultOpen: props.defaultOpen,\n placement: props.placement,\n offset: props.offset,\n closeOnEscape: props.closeOnEscape,\n closeOnInteractOutside: props.closeOnInteractOutside,\n // 弹出选择不陷焦点:Tab 走得出去,走出去即由消解层判定收起\n modal: false,\n onOpenChange: notify.onOpenChange,\n }), scope)\n\n // 连打检索缓冲存在 listbox 机器的 refs 里,适配器不必注入\n const listbox = useMachine(listboxMachine, () => ({\n collection: props.collection,\n value: props.value,\n defaultValue: props.defaultValue,\n multiple: props.multiple,\n disabled: props.disabled,\n loop: props.loop,\n typeahead: props.typeahead,\n dir: props.dir,\n onValueChange: notify.onValueChange,\n }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由 popover 机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // trigger 记为本层分支,点它算层内交互\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n // 列表不带遮罩,没有「点它就该关本层」的表面\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动\n popover.refs.set('config', config)\n popover.refs.set('registerLayer', registerLayer)\n popover.refs.set('position', createPositionEngine())\n popover.refs.set('getAnchorEl', () => triggerRef.value)\n popover.refs.set('getFloatingEl', () => positionerRef.value)\n popover.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectPopselect({\n popover,\n listbox,\n props: { variant: props.variant, tone: props.tone, size: props.size },\n }, vueNormalize))\n\n return { popover, listbox, api, triggerRef, positionerRef, contentRef }\n}\n","import type { PopselectItemProps, PopselectNode, PopselectNodeMeta } from '@xihan-ui/headless'\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { PopselectNotifiers, PopselectRootProps } from './use-popselect'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { providePopselect, providePopselectItem, usePopselectContext, usePopselectItemContext } from './context'\nimport { usePopselect } from './use-popselect'\n\nexport const XhPopselectRoot = defineComponent({\n name: 'XhPopselectRoot',\n // 有 connect 或机器兜底的 prop 一律 default: undefined\n props: {\n collection: { type: Array as PropType<PopselectNode[]>, default: undefined },\n value: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n multiple: Boolean,\n disabled: Boolean,\n loop: { type: Boolean, default: undefined },\n typeahead: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n closeOnEscape: { type: Boolean, default: undefined },\n closeOnInteractOutside: { type: Boolean, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值;回传的选中值恒为数组,单选时长度 ≤ 1\n emits: {\n 'value-change': (_details: PayloadOf<PopselectNotifiers, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<PopselectNotifiers, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<PopselectNotifiers, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<PopselectNotifiers, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: PopselectNotifiers = {\n onValueChange: (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n },\n onOpenChange: (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n },\n }\n const ctx = usePopselect(props as PopselectRootProps, notify)\n providePopselect(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n collection: ctx.api.value.collection,\n focusedValue: ctx.api.value.focusedValue,\n isSelected: ctx.api.value.isSelected,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n select: ctx.api.value.select,\n }))\n },\n})\n\nexport const XhPopselectTrigger = defineComponent({\n name: 'XhPopselectTrigger',\n setup(_, { slots }) {\n const ctx = usePopselectContext()\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhPopselectPositioner = defineComponent({\n name: 'XhPopselectPositioner',\n setup(_, { slots }) {\n const ctx = usePopselectContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhPopselectContent = defineComponent({\n name: 'XhPopselectContent',\n setup(_, { slots }) {\n const ctx = usePopselectContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.() ?? renderItems(ctx.api.value.collection, slots.item))\n },\n})\n\nexport const XhPopselectItem = defineComponent({\n name: 'XhPopselectItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = usePopselectContext()\n const item = computed<PopselectItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n providePopselectItem({ item })\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报列表失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { listbox } = ctx\n if (listbox.getStatus() !== 'Started')\n return\n if (itemEl.value && listbox.scope.getActiveElement() === itemEl.value)\n listbox.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { listbox } = ctx\n if (listbox.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && listbox.scope.getActiveElement() === itemEl.value)\n listbox.send({ type: 'LIST.BLUR' })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhPopselectItemText = defineComponent({\n name: 'XhPopselectItemText',\n setup(_, { slots }) {\n const ctx = usePopselectContext()\n const { item } = usePopselectItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhPopselectItemIndicator = defineComponent({\n name: 'XhPopselectItemIndicator',\n setup(_, { slots }) {\n const ctx = usePopselectContext()\n const { item } = usePopselectItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 浮层里没写默认插槽时按 collection 铺开的条目,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要在条目之外放别的节点就写默认插槽。\n */\nfunction renderItems(\n collection: readonly PopselectNodeMeta[],\n itemSlot?: (node: PopselectNodeMeta) => VNode[],\n): VNode[] {\n return collection.map(node =>\n h(XhPopselectItem, { key: node.value, value: node.value }, () => [\n h(XhPopselectItemText, null, () => itemSlot?.(node) ?? node.label),\n h(XhPopselectItemIndicator),\n ]),\n )\n}\n","import type { ProgressProps } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectProgress } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhProgress = defineComponent({\n name: 'XhProgress',\n props: {\n value: { type: Number, default: 0 },\n max: { type: Number, default: 100 },\n tone: String as PropType<Tone>,\n size: String as PropType<Size>,\n },\n setup(props) {\n return () => {\n const a = connectProgress(props as ProgressProps, vueNormalize)\n return h('div', a.getRootProps() as Record<string, unknown>, [\n h('div', a.getTrackProps() as Record<string, unknown>, [\n h('div', a.getRangeProps() as Record<string, unknown>),\n ]),\n ])\n }\n },\n})\n","import type { QrCodeApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface QrCodeContext {\n api: ComputedRef<QrCodeApi>\n}\n\nconst KEY: InjectionKey<QrCodeContext> = Symbol('xh-qr-code')\n\nexport function provideQrCode(ctx: QrCodeContext): void {\n provide(KEY, ctx)\n}\n\nexport function useQrCodeContext(): QrCodeContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] QrCode 部件必须用在 XhQrCode 内')\n return ctx\n}\n","import type { QrCodeProps, QrLevel } from '@xihan-ui/headless'\nimport type { PropType, VNode } from 'vue'\nimport { connectQrCode } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, shallowRef } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { provideQrCode, useQrCodeContext } from './context'\n\ntype ModuleShape = NonNullable<QrCodeProps['moduleShape']>\ntype EyeShape = NonNullable<QrCodeProps['eyeShape']>\n\n/**\n * 整张码画成一个 `<svg>`:数据模块与三个码眼各成一条 `<path>`,静区靠 viewBox 留出。\n * 矩阵由 connect 算一遍,这里只取现成的 path;没有可画的内容时不生成任何几何节点。\n *\n * 默认插槽里放 XhQrCodeLogo 就等于给码面正中放了一块 logo:那片模块底下先铺一个底色矩形挖空,\n * 挖空排在插槽之前,logo 画在它上面。挖掉的码字超出所选 level 的纠错余量时,\n * connect 会往诊断通道报一条警告,码照画。\n */\nexport const XhQrCode = defineComponent({\n name: 'XhQrCode',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n value: { type: String, default: undefined },\n level: { type: String as PropType<QrLevel>, default: undefined },\n size: { type: Number, default: undefined },\n margin: { type: Number, default: undefined },\n label: { type: String, default: undefined },\n moduleShape: { type: String as PropType<ModuleShape>, default: undefined },\n eyeShape: { type: String as PropType<EyeShape>, default: undefined },\n },\n setup(props, { slots }) {\n // 插槽里有没有东西是渲染期才知道的事实,进不了 computed 的依赖:先落到 ref 上,再让 api 依赖这个 ref。\n // 值没变时写入是空操作,不会多排一帧。\n const hasLogo = shallowRef(false)\n const api = computed(() => connectQrCode({\n value: props.value,\n level: props.level,\n size: props.size,\n margin: props.margin,\n label: props.label,\n moduleShape: props.moduleShape,\n eyeShape: props.eyeShape,\n logo: hasLogo.value,\n } satisfies QrCodeProps, vueNormalize))\n provideQrCode({ api })\n\n return () => {\n const content = slots.default?.() ?? []\n // 插槽里只剩注释或空白时不算放了 logo:挖空是拿底色盖住一片模块,白挖一块就是白毁一片\n hasLogo.value = slotPaints(content)\n\n const current = api.value\n const children: VNode[] = []\n if (current.path !== '')\n children.push(h('path', { 'data-xh-geom': 'modules', 'd': current.path }))\n if (current.eyePath !== '')\n children.push(h('path', { 'data-xh-geom': 'eyes', 'd': current.eyePath }))\n const area = current.logoArea\n if (area)\n children.push(h('rect', { 'data-xh-geom': 'logo-clear', 'x': area.x, 'y': area.y, 'width': area.size, 'height': area.size }))\n children.push(...content)\n\n return h('svg', current.getRootProps() as Record<string, unknown>, children)\n }\n },\n})\n\n/**\n * 码面正中那块 logo:落位与尺寸由 connect 给出,作者只管往里放图形。\n * 渲染成嵌套 `<svg>`,里面写 `width=\"100%\" height=\"100%\"` 即铺满这块,溢出部分被它自己裁掉。\n */\nexport const XhQrCodeLogo = defineComponent({\n name: 'XhQrCodeLogo',\n setup(_, { slots }) {\n const ctx = useQrCodeContext()\n return () => h('svg', ctx.api.value.getLogoProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { RadioGroupItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { RadioGroupContext } from './use-radio-group'\nimport { inject, provide } from 'vue'\n\n/** 条目自报的值与禁用,供 item-text / indicator 这类子部件复用同一份声明。 */\nexport interface RadioGroupItemContext {\n item: ComputedRef<RadioGroupItemProps>\n}\n\nconst KEY: InjectionKey<RadioGroupContext> = Symbol('xh-radio-group')\nconst ITEM_KEY: InjectionKey<RadioGroupItemContext> = Symbol('xh-radio-group-item')\n\nexport function provideRadioGroup(ctx: RadioGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useRadioGroupContext(): RadioGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] RadioGroup 部件必须用在 XhRadioGroupRoot 内')\n return ctx\n}\n\nexport function provideRadioGroupItem(ctx: RadioGroupItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useRadioGroupItemContext(): RadioGroupItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] RadioGroup 条目子部件必须用在 XhRadioGroupItem 内')\n return ctx\n}\n","import type { RadioGroupApi, RadioGroupSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectRadioGroup, radioGroupMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface RadioGroupContext {\n api: ComputedRef<RadioGroupApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如条目卸载带走了焦点)。 */\n service: Service<RadioGroupSchema>\n}\n\nexport function useRadioGroup(\n props: RadioGroupSchema['props'],\n onValueChange?: RadioGroupSchema['props']['onValueChange'],\n): RadioGroupContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(radioGroupMachine, () => ({ ...props, onValueChange }), scope)\n const api = computed(() => connectRadioGroup(service, vueNormalize))\n return { api, service }\n}\n","import type { RadioGroupItemProps, RadioGroupNode, RadioGroupNodeMeta, RadioGroupSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideRadioGroup, provideRadioGroupItem, useRadioGroupContext, useRadioGroupItemContext } from './context'\nimport { useRadioGroup } from './use-radio-group'\n\ntype RadioGroupProps = RadioGroupSchema['props']\n\nexport const XhRadioGroupRoot = defineComponent({\n name: 'XhRadioGroupRoot',\n props: {\n collection: { type: Array as PropType<RadioGroupNode[]>, default: undefined },\n /** 标题文字。给了它就不必再写 label 部件;要放别的内容改用 label 插槽。 */\n label: { type: String, default: undefined },\n value: { type: String as PropType<string | null>, default: undefined },\n defaultValue: { type: String as PropType<string | null>, default: undefined },\n disabled: Boolean,\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n name: { type: String, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<RadioGroupProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<RadioGroupProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: RadioGroupProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useRadioGroup(props as RadioGroupProps, notify)\n provideRadioGroup(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default()\n : props.collection\n ? renderDefaultTree(\n ctx.api.value.collection,\n slots.label?.() ?? (props.label != null ? [props.label] : null),\n slots.item,\n )\n : [],\n )\n },\n})\n\nexport const XhRadioGroupLabel = defineComponent({\n name: 'XhRadioGroupLabel',\n setup(_, { slots }) {\n const ctx = useRadioGroupContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhRadioGroupItem = defineComponent({\n name: 'XhRadioGroupItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useRadioGroupContext()\n const item = computed<RadioGroupItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n provideRadioGroupItem({ item })\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报整组失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const svc = ctx.service\n if (svc.getStatus() !== 'Started')\n return\n if (itemEl.value && svc.scope.getActiveElement() === itemEl.value)\n svc.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'GROUP.BLUR' })\n })\n // 隐藏输入与 indicator 由条目自行装配,不暴露成独立组件\n return () => h('div', { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl }, [\n h('input', ctx.api.value.getHiddenInputProps(item.value) as Record<string, unknown>),\n h('span', ctx.api.value.getIndicatorProps(item.value) as Record<string, unknown>),\n ...(slots.default?.() ?? []),\n ])\n },\n})\n\nexport const XhRadioGroupItemText = defineComponent({\n name: 'XhRadioGroupItemText',\n setup(_, { slots }) {\n const ctx = useRadioGroupContext()\n const { item } = useRadioGroupItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n */\nfunction renderDefaultTree(\n collection: readonly RadioGroupNodeMeta[],\n label: (VNode | string)[] | null,\n itemSlot?: (node: RadioGroupNodeMeta) => VNode[],\n): VNode[] {\n return [\n ...(label ? [h(XhRadioGroupLabel, null, () => label)] : []),\n // 条目内的 hidden-input 与 indicator 由 XhRadioGroupItem 自行装配\n ...collection.map(node => h(XhRadioGroupItem, { key: node.value, value: node.value }, () => [\n h(XhRadioGroupItemText, null, () => itemSlot?.(node) ?? node.label),\n ])),\n ]\n}\n","import type { InjectionKey } from 'vue'\nimport type { RatingContext } from './use-rating'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<RatingContext> = Symbol('xh-rating')\n\nexport function provideRating(ctx: RatingContext): void {\n provide(KEY, ctx)\n}\n\nexport function useRatingContext(): RatingContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Rating 部件必须用在 XhRatingRoot 内')\n return ctx\n}\n","import type { RatingApi, RatingSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectRating, ratingMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface RatingContext {\n api: ComputedRef<RatingApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如条目卸载带走了焦点)。 */\n service: Service<RatingSchema>\n}\n\nexport function useRating(\n props: RatingSchema['props'],\n callbacks: Pick<RatingSchema['props'], 'onValueChange' | 'onHoverChange'> = {},\n): RatingContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(ratingMachine, () => ({ ...props, ...callbacks }), scope)\n const api = computed(() => connectRating(service, vueNormalize))\n return { api, service }\n}\n","import type { RatingSchema } from '@xihan-ui/headless'\nimport type { Direction, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideRating, useRatingContext } from './context'\nimport { useRating } from './use-rating'\n\ntype RatingProps = RatingSchema['props']\n\nexport const XhRatingRoot = defineComponent({\n name: 'XhRatingRoot',\n props: {\n // default: undefined 表示非受控\n value: { type: Number, default: undefined },\n defaultValue: { type: Number, default: undefined },\n count: { type: Number, default: undefined },\n allowHalf: Boolean,\n disabled: Boolean,\n readOnly: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸值;hover-change 是预览通道\n emits: {\n 'value-change': (_details: PayloadOf<RatingProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<RatingProps, 'onValueChange'>['value']) => true,\n 'hover-change': (_details: PayloadOf<RatingProps, 'onHoverChange'>) => true,\n },\n setup(props, { slots, emit }) {\n const onValueChange: RatingProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const onHoverChange: RatingProps['onHoverChange'] = (details) => {\n emit('hover-change', details)\n }\n const ctx = useRating(props as RatingProps, { onValueChange, onHoverChange })\n provideRating(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n hoveredValue: ctx.api.value.hoveredValue,\n highlightedValue: ctx.api.value.highlightedValue,\n count: ctx.api.value.count,\n empty: ctx.api.value.empty,\n // 条目序号列表,供 v-for 渲染星星\n items: ctx.api.value.items,\n getItemState: ctx.api.value.getItemState,\n setValue: ctx.api.value.setValue,\n }))\n },\n})\n\nexport const XhRatingLabel = defineComponent({\n name: 'XhRatingLabel',\n setup(_, { slots }) {\n const ctx = useRatingContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhRatingControl = defineComponent({\n name: 'XhRatingControl',\n setup(_, { slots }) {\n const ctx = useRatingContext()\n return () => h('div', ctx.api.value.getControlProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhRatingItem = defineComponent({\n name: 'XhRatingItem',\n props: {\n // 星序号,兼收字符串;往下传前统一归成数字\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useRatingContext()\n const item = computed(() => ({ value: Number(props.value) }))\n\n // 本条目持有焦点时,序号变更重报焦点条目,卸载时上报评分带失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => item.value.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', index: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按序号比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'CONTROL.BLUR' })\n })\n\n return () => h('span', {\n ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>,\n ref: itemEl,\n }, slots.default?.(ctx.api.value.getItemState(item.value)))\n },\n})\n\nexport const XhRatingHiddenInput = defineComponent({\n name: 'XhRatingHiddenInput',\n setup() {\n const ctx = useRatingContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n","import type { ResultApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface ResultContext {\n api: ComputedRef<ResultApi>\n}\n\nconst KEY: InjectionKey<ResultContext> = Symbol('xh-result')\n\nexport function provideResult(ctx: ResultContext): void {\n provide(KEY, ctx)\n}\n\nexport function useResultContext(): ResultContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Result 部件必须用在 XhResultRoot 内')\n return ctx\n}\n","import type { ResultProps, ResultStatus } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectResult } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideResult, useResultContext } from './context'\n\n/** 根节点渲染为 div,缺省值由 connect 给出,这里一律 default: undefined */\nexport const XhResultRoot = defineComponent({\n name: 'XhResultRoot',\n props: {\n status: { type: String as PropType<ResultStatus>, default: undefined },\n size: { type: String as PropType<'sm' | 'md' | 'lg'>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectResult(props as ResultProps, vueNormalize))\n provideResult({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 装饰性图标容器,内容由作者塞(字形、内联 svg、XhIcon 都行)\nexport const XhResultIcon = defineComponent({\n name: 'XhResultIcon',\n setup(_, { slots }) {\n const ctx = useResultContext()\n return () => h('span', ctx.api.value.getIconProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 标题渲染为 p 而不是 hN:它只做视觉主次,不往文档大纲里插一级标题\nexport const XhResultTitle = defineComponent({\n name: 'XhResultTitle',\n setup(_, { slots }) {\n const ctx = useResultContext()\n return () => h('p', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhResultDescription = defineComponent({\n name: 'XhResultDescription',\n setup(_, { slots }) {\n const ctx = useResultContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 操作槽只排版,按钮由作者放进插槽\nexport const XhResultAction = defineComponent({\n name: 'XhResultAction',\n setup(_, { slots }) {\n const ctx = useResultContext()\n return () => h('div', ctx.api.value.getActionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { ScrollAreaScrollbarProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { ScrollAreaContext } from './use-scroll-area'\nimport { inject, provide } from 'vue'\n\n/** 滚动条自报的轴向,供它内部的滑块复用同一份声明。 */\nexport interface ScrollAreaScrollbarContext {\n scrollbar: ComputedRef<ScrollAreaScrollbarProps>\n}\n\nconst KEY: InjectionKey<ScrollAreaContext> = Symbol('xh-scroll-area')\nconst SCROLLBAR_KEY: InjectionKey<ScrollAreaScrollbarContext> = Symbol('xh-scroll-area-scrollbar')\n\nexport function provideScrollArea(ctx: ScrollAreaContext): void {\n provide(KEY, ctx)\n}\n\nexport function useScrollAreaContext(): ScrollAreaContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ScrollArea 部件必须用在 XhScrollAreaRoot 内')\n return ctx\n}\n\nexport function provideScrollAreaScrollbar(ctx: ScrollAreaScrollbarContext): void {\n provide(SCROLLBAR_KEY, ctx)\n}\n\nexport function useScrollAreaScrollbarContext(): ScrollAreaScrollbarContext {\n const ctx = inject(SCROLLBAR_KEY, null)\n if (!ctx)\n throw new Error('[xh] ScrollArea 滑块必须用在 XhScrollAreaScrollbar 内')\n return ctx\n}\n","import type { ScrollAreaApi, ScrollAreaSchema } from '@xihan-ui/headless'\nimport type { Orientation } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectScrollArea, scrollAreaMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface ScrollAreaContext {\n service: Service<ScrollAreaSchema>\n api: ComputedRef<ScrollAreaApi>\n /** overflow:auto 的那层,尺寸、滚动量与 scroll 事件都取自它。 */\n viewportRef: Ref<HTMLElement | null>\n /** 内容包裹层,用于跟随尺寸变化。 */\n contentRef: Ref<HTMLElement | null>\n /** 两条轴各自的滚动条节点,轨道长度按轴现量。 */\n scrollbarRefs: Record<Orientation, Ref<HTMLElement | null>>\n}\n\nexport function useScrollArea(props: ScrollAreaSchema['props']): ScrollAreaContext {\n const viewportRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n const scrollbarRefs: Record<Orientation, Ref<HTMLElement | null>> = {\n vertical: ref<HTMLElement | null>(null),\n horizontal: ref<HTMLElement | null>(null),\n }\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(scrollAreaMachine, () => ({ ...props }), scope)\n\n // 传 getter 而非节点,ref 在挂载后才有值;量尺寸与挂监听都在机器的效应里进行\n service.refs.set('getViewportEl', () => viewportRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n service.refs.set('getScrollbarEl', (axis: Orientation) => scrollbarRefs[axis].value)\n\n const api = computed(() => connectScrollArea(service, vueNormalize))\n return { service, api, viewportRef, contentRef, scrollbarRefs }\n}\n","import type { ScrollAreaOrientation, ScrollAreaSchema, ScrollAreaScrollbarProps, ScrollAreaType } from '@xihan-ui/headless'\nimport type { Direction, Orientation } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { computed, defineComponent, h } from 'vue'\nimport {\n provideScrollArea,\n provideScrollAreaScrollbar,\n useScrollAreaContext,\n useScrollAreaScrollbarContext,\n} from './context'\nimport { useScrollArea } from './use-scroll-area'\n\ntype ScrollAreaProps = ScrollAreaSchema['props']\n\nexport const XhScrollAreaRoot = defineComponent({\n name: 'XhScrollAreaRoot',\n // 缺省值由机器与 connect 给出,这里一律 default: undefined\n props: {\n type: { type: String as PropType<ScrollAreaType>, default: undefined },\n scrollHideDelay: { type: Number, default: undefined },\n orientation: { type: String as PropType<ScrollAreaOrientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n },\n // 组件不对外报事件,滚动是原生的,宿主直接在视口上监听\n setup(props, { slots }) {\n const ctx = useScrollArea(props as ScrollAreaProps)\n provideScrollArea(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n vertical: ctx.api.value.vertical,\n horizontal: ctx.api.value.horizontal,\n draggingAxis: ctx.api.value.draggingAxis,\n cornerVisible: ctx.api.value.cornerVisible,\n }))\n },\n})\n\nexport const XhScrollAreaViewport = defineComponent({\n name: 'XhScrollAreaViewport',\n setup(_, { slots }) {\n const ctx = useScrollAreaContext()\n // 视口节点交给机器,尺寸与滚动量在效应与事件里现量\n return () => h('div', {\n ...ctx.api.value.getViewportProps() as Record<string, unknown>,\n ref: ctx.viewportRef,\n }, slots.default?.())\n },\n})\n\nexport const XhScrollAreaContent = defineComponent({\n name: 'XhScrollAreaContent',\n setup(_, { slots }) {\n const ctx = useScrollAreaContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: ctx.contentRef,\n }, slots.default?.())\n },\n})\n\nexport const XhScrollAreaScrollbar = defineComponent({\n name: 'XhScrollAreaScrollbar',\n props: {\n /** 这条滚动条管哪条轴。 */\n orientation: { type: String as PropType<Orientation>, default: 'vertical' },\n },\n setup(props, { slots }) {\n const ctx = useScrollAreaContext()\n const scrollbar = computed<ScrollAreaScrollbarProps>(() => ({ orientation: props.orientation }))\n provideScrollAreaScrollbar({ scrollbar })\n return () => h('div', {\n ...ctx.api.value.getScrollbarProps(scrollbar.value) as Record<string, unknown>,\n // 轨道节点交给机器,长度在按下滑块时现量\n ref: ctx.scrollbarRefs[props.orientation],\n }, slots.default?.())\n },\n})\n\nexport const XhScrollAreaThumb = defineComponent({\n name: 'XhScrollAreaThumb',\n setup(_, { slots }) {\n const ctx = useScrollAreaContext()\n const { scrollbar } = useScrollAreaScrollbarContext()\n return () => h('div', ctx.api.value.getThumbProps(scrollbar.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhScrollAreaCorner = defineComponent({\n name: 'XhScrollAreaCorner',\n setup(_, { slots }) {\n const ctx = useScrollAreaContext()\n return () => h('div', ctx.api.value.getCornerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { SelectItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { SelectContext } from './use-select'\nimport { inject, provide } from 'vue'\n\n/** 条目自报的值与禁用,供 item-text / item-indicator 这类子部件复用同一份声明。 */\nexport interface SelectItemContext {\n item: ComputedRef<SelectItemProps>\n}\n\nconst KEY: InjectionKey<SelectContext> = Symbol('xh-select')\nconst ITEM_KEY: InjectionKey<SelectItemContext> = Symbol('xh-select-item')\n\nexport function provideSelect(ctx: SelectContext): void {\n provide(KEY, ctx)\n}\n\nexport function useSelectContext(): SelectContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Select 部件必须用在 XhSelectRoot 内')\n return ctx\n}\n\nexport function provideSelectItem(ctx: SelectItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useSelectItemContext(): SelectItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Select 条目子部件必须用在 XhSelectItem 内')\n return ctx\n}\n","import type { SelectApi, SelectSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectSelect, selectMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface SelectContext {\n /** 机器实例,供部件上报 DOM 侧的事实(如条目卸载带走了焦点)。 */\n service: Service<SelectSchema>\n api: ComputedRef<SelectApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useSelect(\n props: SelectSchema['props'],\n onValueChange?: SelectSchema['props']['onValueChange'],\n onOpenChange?: SelectSchema['props']['onOpenChange'],\n): SelectContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(selectMachine, () => ({ ...props, onValueChange, onOpenChange }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // trigger 记为本层分支,点它算层内交互\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectSelect(service, vueNormalize))\n return { service, api, triggerRef, positionerRef, contentRef }\n}\n","import type { SelectItemProps, SelectNode, SelectNodeMeta, SelectOpenChangeDetails, SelectSchema, SelectValueChangeDetails } from '@xihan-ui/headless'\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideSelect, provideSelectItem, useSelectContext, useSelectItemContext } from './context'\nimport { useSelect } from './use-select'\n\ntype SelectProps = SelectSchema['props']\n\nexport const XhSelectRoot = defineComponent({\n name: 'XhSelectRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n collection: { type: Array as PropType<SelectNode[]>, default: undefined },\n /** 标题文字。给了它就不必再写 label 部件;要放别的内容改用 label 插槽。 */\n label: { type: String, default: undefined },\n value: { type: [String, Array] as PropType<string | string[] | null>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<string | string[] | null>, default: undefined },\n multiple: Boolean,\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n disabled: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n placeholder: { type: String, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值。\n // 校验函数恒真,只声明载荷类型:'update:value' 是 string[],单选也是长度 1 的数组而非裸串。\n emits: {\n 'value-change': (_details: SelectValueChangeDetails) => true,\n 'open-change': (_details: SelectOpenChangeDetails) => true,\n 'update:value': (_value: string[]) => true,\n 'update:open': (_open: boolean) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: SelectProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: SelectProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useSelect(props as SelectProps, notifyValue, notifyOpen)\n provideSelect(ctx)\n\n // 表单影子由根部件装配:空串选项打底,每个选中值一个 selected 选项,供 required 判定。\n // 选中态一律靠选项的 selected 表达,多选下 select.value 表达不了集合。\n const hiddenSelect = (): VNode => {\n const api = ctx.api.value\n const options = [h('option', { value: '' })]\n for (const [i, v] of api.value.entries())\n options.push(h('option', { value: v, selected: true }, api.valueText[i] ?? v))\n return h('select', api.getHiddenSelectProps() as Record<string, unknown>, options)\n }\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, [\n hiddenSelect(),\n ...(slots.default\n ? slots.default({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n displayText: ctx.api.value.displayText,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n }) ?? []\n : props.collection\n ? renderDefaultTree(\n ctx.api.value.collection,\n slots.label?.() ?? (props.label != null ? [props.label] : null),\n slots.item,\n )\n : []),\n ])\n },\n})\n\nexport const XhSelectLabel = defineComponent({\n name: 'XhSelectLabel',\n setup(_, { slots }) {\n const ctx = useSelectContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhSelectTrigger = defineComponent({\n name: 'XhSelectTrigger',\n setup(_, { slots }) {\n const ctx = useSelectContext()\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhSelectValueText = defineComponent({\n name: 'XhSelectValueText',\n setup(_, { slots }) {\n const ctx = useSelectContext()\n // 有插槽用插槽,否则显示选中项文本或 placeholder\n return () => h(\n 'span',\n ctx.api.value.getValueTextProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.displayText,\n )\n },\n})\n\nexport const XhSelectIndicator = defineComponent({\n name: 'XhSelectIndicator',\n setup(_, { slots }) {\n const ctx = useSelectContext()\n return () => h('span', ctx.api.value.getIndicatorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhSelectPositioner = defineComponent({\n name: 'XhSelectPositioner',\n setup(_, { slots }) {\n const ctx = useSelectContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhSelectContent = defineComponent({\n name: 'XhSelectContent',\n setup(_, { slots }) {\n const ctx = useSelectContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhSelectItem = defineComponent({\n name: 'XhSelectItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useSelectContext()\n const item = computed<SelectItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n provideSelectItem({ item })\n // 本条目持有焦点时,value 变更重报高亮条目,卸载时上报条目丢失\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const svc = ctx.service\n if (svc.getStatus() !== 'Started')\n return\n if (itemEl.value && svc.scope.getActiveElement() === itemEl.value)\n svc.send({ type: 'ITEM.HIGHLIGHT', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.LOST' })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhSelectItemText = defineComponent({\n name: 'XhSelectItemText',\n setup(_, { slots }) {\n const ctx = useSelectContext()\n const { item } = useSelectItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhSelectItemIndicator = defineComponent({\n name: 'XhSelectItemIndicator',\n setup(_, { slots }) {\n const ctx = useSelectContext()\n const { item } = useSelectItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n */\nfunction renderDefaultTree(\n collection: readonly SelectNodeMeta[],\n label: (VNode | string)[] | null,\n itemSlot?: (node: SelectNodeMeta) => VNode[],\n): VNode[] {\n return [\n ...(label ? [h(XhSelectLabel, null, () => label)] : []),\n h(XhSelectTrigger, null, () => [h(XhSelectValueText), h(XhSelectIndicator)]),\n h(XhSelectPositioner, null, () => [\n h(XhSelectContent, null, () => collection.map(node =>\n h(XhSelectItem, { key: node.value, value: node.value }, () => [\n h(XhSelectItemText, null, () => itemSlot?.(node) ?? node.label),\n h(XhSelectItemIndicator),\n ]),\n )),\n ]),\n ]\n}\n","import type { SeparatorProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectSeparator } from '@xihan-ui/headless'\nimport { defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport const XhSeparator = defineComponent({\n name: 'XhSeparator',\n props: {\n orientation: { type: String as PropType<'horizontal' | 'vertical'>, default: 'horizontal' },\n decorative: Boolean,\n },\n setup(props) {\n return () => h('div', connectSeparator(props as SeparatorProps, vueNormalize).getRootProps() as Record<string, unknown>)\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { SkeletonContext } from './use-skeleton'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<SkeletonContext> = Symbol('xh-skeleton')\n\nexport function provideSkeleton(ctx: SkeletonContext): void {\n provide(KEY, ctx)\n}\n\nexport function useSkeletonContext(): SkeletonContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Skeleton 部件必须用在 XhSkeletonRoot 内')\n return ctx\n}\n","import type { SkeletonApi, SkeletonProps } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectSkeleton } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport interface SkeletonContext {\n api: ComputedRef<SkeletonApi>\n}\n\n// Skeleton 无状态机,props 变了由 computed 重算属性\nexport function useSkeleton(props: SkeletonProps): SkeletonContext {\n const api = computed(() => connectSkeleton(props, vueNormalize))\n return { api }\n}\n","import type { SkeletonProps, SkeletonVariant } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { provideSkeleton, useSkeletonContext } from './context'\nimport { useSkeleton } from './use-skeleton'\n\n/** 骨架容器:加载期间报 aria-busy,加载结束后整块收起。 */\nexport const XhSkeletonRoot = defineComponent({\n name: 'XhSkeletonRoot',\n props: {\n loading: { type: Boolean, default: true },\n variant: { type: String as PropType<SkeletonVariant>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useSkeleton(props as SkeletonProps)\n provideSkeleton(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 单根骨架条:纯装饰,不进无障碍树;形状缺省跟容器,给了 variant 就按自己的来。 */\nexport const XhSkeletonBone = defineComponent({\n name: 'XhSkeletonBone',\n props: {\n variant: { type: String as PropType<SkeletonVariant>, default: undefined },\n },\n setup(props) {\n const ctx = useSkeletonContext()\n return () => h(\n 'div',\n ctx.api.value.getBoneProps({ variant: props.variant }) as Record<string, unknown>,\n )\n },\n})\n","import type { ComputedRef, InjectionKey } from 'vue'\nimport type { SliderContext } from './use-slider'\nimport { inject, provide } from 'vue'\n\n/** 拇指自报的下标,供它内部的隐藏输入复用同一份声明。 */\nexport interface SliderThumbContext {\n index: ComputedRef<number>\n}\n\nconst KEY: InjectionKey<SliderContext> = Symbol('xh-slider')\nconst THUMB_KEY: InjectionKey<SliderThumbContext> = Symbol('xh-slider-thumb')\n\nexport function provideSlider(ctx: SliderContext): void {\n provide(KEY, ctx)\n}\n\nexport function useSliderContext(): SliderContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Slider 部件必须用在 XhSliderRoot 内')\n return ctx\n}\n\nexport function provideSliderThumb(ctx: SliderThumbContext): void {\n provide(THUMB_KEY, ctx)\n}\n\nexport function useSliderThumbContext(): SliderThumbContext {\n const ctx = inject(THUMB_KEY, null)\n if (!ctx)\n throw new Error('[xh] Slider 隐藏输入必须用在 XhSliderThumb 内')\n return ctx\n}\n","import type { SliderApi, SliderSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectSlider, sliderMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface SliderContext {\n api: ComputedRef<SliderApi>\n service: Service<SliderSchema>\n /** 轨道节点,机器在指针事件里拿它量矩形。 */\n trackRef: Ref<HTMLElement | null>\n}\n\nexport function useSlider(\n props: SliderSchema['props'],\n onValueChange?: SliderSchema['props']['onValueChange'],\n onValueChangeEnd?: SliderSchema['props']['onValueChangeEnd'],\n): SliderContext {\n const trackRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(sliderMachine, () => ({ ...props, onValueChange, onValueChangeEnd }), scope)\n\n // 传 getter 而非节点,ref 在挂载后才有值\n service.refs.set('getTrackEl', () => trackRef.value)\n\n const api = computed(() => connectSlider(service, vueNormalize))\n return { api, service, trackRef }\n}\n","import type { SliderSchema, SliderValueTextDetails } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h } from 'vue'\nimport { provideSlider, provideSliderThumb, useSliderContext, useSliderThumbContext } from './context'\nimport { useSlider } from './use-slider'\n\ntype SliderProps = SliderSchema['props']\n\nexport const XhSliderRoot = defineComponent({\n name: 'XhSliderRoot',\n props: {\n // 值恒是数组,单滑块即长度 1;default: undefined 表示非受控\n value: { type: Array as PropType<number[]>, default: undefined },\n defaultValue: { type: Array as PropType<number[]>, default: undefined },\n min: { type: Number, default: undefined },\n max: { type: Number, default: undefined },\n step: { type: Number, default: undefined },\n largeStep: { type: Number, default: undefined },\n minStepsBetweenThumbs: { type: Number, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n name: { type: String, default: undefined },\n getValueText: {\n type: Function as PropType<(details: SliderValueTextDetails) => string>,\n default: undefined,\n },\n },\n // value-change 携带 { value },update:value 携带裸数组;value-change-end 只在操作收尾时发一次\n emits: {\n 'value-change': (_details: PayloadOf<SliderProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<SliderProps, 'onValueChange'>['value']) => true,\n 'value-change-end': (_details: PayloadOf<SliderProps, 'onValueChangeEnd'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: SliderProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyEnd: SliderProps['onValueChangeEnd'] = (details) => {\n emit('value-change-end', details)\n }\n const ctx = useSlider(props as SliderProps, notify, notifyEnd)\n provideSlider(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n thumbs: ctx.api.value.thumbs,\n range: ctx.api.value.range,\n dragging: ctx.api.value.dragging,\n setValue: ctx.api.value.setValue,\n setThumbValue: ctx.api.value.setThumbValue,\n }))\n },\n})\n\nexport const XhSliderLabel = defineComponent({\n name: 'XhSliderLabel',\n setup(_, { slots }) {\n const ctx = useSliderContext()\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhSliderControl = defineComponent({\n name: 'XhSliderControl',\n setup(_, { slots }) {\n const ctx = useSliderContext()\n return () => h('div', ctx.api.value.getControlProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhSliderTrack = defineComponent({\n name: 'XhSliderTrack',\n setup(_, { slots }) {\n const ctx = useSliderContext()\n // 轨道节点交给机器,矩形在指针事件里现量\n return () => h('div', {\n ...ctx.api.value.getTrackProps() as Record<string, unknown>,\n ref: ctx.trackRef,\n }, slots.default?.())\n },\n})\n\nexport const XhSliderRange = defineComponent({\n name: 'XhSliderRange',\n setup(_, { slots }) {\n const ctx = useSliderContext()\n return () => h('div', ctx.api.value.getRangeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhSliderThumb = defineComponent({\n name: 'XhSliderThumb',\n props: {\n /** 第几个滑块,多滑块时必须逐个写明(`:index=\"i\"`);兼收字符串。 */\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useSliderContext()\n const index = computed(() => {\n const n = Number(props.index)\n return Number.isFinite(n) ? n : 0\n })\n provideSliderThumb({ index })\n return () => h('div', ctx.api.value.getThumbProps(index.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhSliderHiddenInput = defineComponent({\n name: 'XhSliderHiddenInput',\n setup() {\n const { index } = useSliderThumbContext()\n const ctx = useSliderContext()\n return () => h('input', ctx.api.value.getHiddenInputProps(index.value) as Record<string, unknown>)\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { SpinnerContext } from './use-spinner'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<SpinnerContext> = Symbol('xh-spinner')\n\nexport function provideSpinner(ctx: SpinnerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useSpinnerContext(): SpinnerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Spinner 部件必须用在 XhSpinner 内')\n return ctx\n}\n","import type { SpinnerApi, SpinnerProps } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectSpinner } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\n\nexport interface SpinnerContext {\n api: ComputedRef<SpinnerApi>\n}\n\n// Spinner 无状态机也不派生 part id,props 变了由 computed 重算属性\nexport function useSpinner(props: SpinnerProps): SpinnerContext {\n const api = computed(() => connectSpinner(props, vueNormalize))\n return { api }\n}\n","import type { SpinnerProps, SpinnerTranslations } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { provideSpinner, useSpinnerContext } from './context'\nimport { useSpinner } from './use-spinner'\n\n/** 转圈图形由皮肤画在 root 的伪元素上,这里不生成任何子节点。 */\nexport const XhSpinner = defineComponent({\n name: 'XhSpinner',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n label: { type: String, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n translations: { type: Object as PropType<Partial<SpinnerTranslations>>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useSpinner(props as SpinnerProps)\n provideSpinner(ctx)\n return () => h('span', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 可见文案节点。作者不写内容时显示解析后的 label,屏幕上看到的与读屏念的因此是同一段字。 */\nexport const XhSpinnerLabel = defineComponent({\n name: 'XhSpinnerLabel',\n setup(_, { slots }) {\n const ctx = useSpinnerContext()\n return () => h(\n 'span',\n ctx.api.value.getLabelProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.label,\n )\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { SplitterContext } from './use-splitter'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<SplitterContext> = Symbol('xh-splitter')\n\nexport function provideSplitter(ctx: SplitterContext): void {\n provide(KEY, ctx)\n}\n\nexport function useSplitterContext(): SplitterContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Splitter 部件必须用在 XhSplitterRoot 内')\n return ctx\n}\n","import type { SplitterApi, SplitterSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectSplitter, splitterMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface SplitterContext {\n api: ComputedRef<SplitterApi>\n service: Service<SplitterSchema>\n /** 容器节点,机器在拖拽开始时拿它量矩形。 */\n rootRef: Ref<HTMLElement | null>\n}\n\nexport function useSplitter(\n props: SplitterSchema['props'],\n onSizeChange?: SplitterSchema['props']['onSizeChange'],\n onSizeChangeEnd?: SplitterSchema['props']['onSizeChangeEnd'],\n): SplitterContext {\n const rootRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(splitterMachine, () => ({ ...props, onSizeChange, onSizeChangeEnd }), scope)\n\n // 传 getter 而非节点,ref 在挂载后才有值\n service.refs.set('getRootEl', () => rootRef.value)\n\n const api = computed(() => connectSplitter(service, vueNormalize))\n return { api, service, rootRef }\n}\n","import type { SplitterPanelProps, SplitterSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h } from 'vue'\nimport { provideSplitter, useSplitterContext } from './context'\nimport { useSplitter } from './use-splitter'\n\ntype SplitterProps = SplitterSchema['props']\n\n/** 部件上的下标声明,兼收字符串以支持 DOM 属性写法。 */\nconst INDEX_PROP = { index: { type: [Number, String] as PropType<number | string>, default: 0 } }\n\nfunction toIndex(raw: number | string): number {\n const n = Number(raw)\n return Number.isFinite(n) ? n : 0\n}\n\nexport const XhSplitterRoot = defineComponent({\n name: 'XhSplitterRoot',\n props: {\n // 布局恒是数组;default: undefined 表示非受控\n size: { type: Array as PropType<number[]>, default: undefined },\n defaultSize: { type: Array as PropType<number[]>, default: undefined },\n panels: { type: Array as PropType<SplitterPanelProps[]>, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n disabled: Boolean,\n step: { type: Number, default: undefined },\n largeStep: { type: Number, default: undefined },\n },\n // size-change 携带 { size },update:size 携带裸数组;size-change-end 只在操作收尾时发一次\n emits: {\n 'size-change': (_details: PayloadOf<SplitterProps, 'onSizeChange'>) => true,\n 'update:size': (_size: PayloadOf<SplitterProps, 'onSizeChange'>['size']) => true,\n 'size-change-end': (_details: PayloadOf<SplitterProps, 'onSizeChangeEnd'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: SplitterProps['onSizeChange'] = (details) => {\n emit('size-change', details)\n emit('update:size', details.size)\n }\n const notifyEnd: SplitterProps['onSizeChangeEnd'] = (details) => {\n emit('size-change-end', details)\n }\n const ctx = useSplitter(props as SplitterProps, notify, notifyEnd)\n provideSplitter(ctx)\n // 容器节点交给机器,矩形在拖拽开始时现量\n return () => h('div', {\n ...ctx.api.value.getRootProps() as Record<string, unknown>,\n ref: ctx.rootRef,\n }, slots.default?.({\n size: ctx.api.value.size,\n panels: ctx.api.value.panels,\n dragging: ctx.api.value.dragging,\n setSize: ctx.api.value.setSize,\n setPanelSize: ctx.api.value.setPanelSize,\n collapsePanel: ctx.api.value.collapsePanel,\n expandPanel: ctx.api.value.expandPanel,\n togglePanel: ctx.api.value.togglePanel,\n }))\n },\n})\n\nexport const XhSplitterPanel = defineComponent({\n name: 'XhSplitterPanel',\n props: {\n /** 第几块面板;多块时必须逐个写明(`:index=\"i\"`)。 */\n ...INDEX_PROP,\n },\n setup(props, { slots }) {\n const ctx = useSplitterContext()\n const index = computed(() => toIndex(props.index))\n return () => h('div', ctx.api.value.getPanelProps(index.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhSplitterResizeTrigger = defineComponent({\n name: 'XhSplitterResizeTrigger',\n props: {\n /** 第几条分隔条;它坐在第 index 与第 index+1 块面板之间,调整的是前一块。 */\n ...INDEX_PROP,\n },\n setup(props, { slots }) {\n const ctx = useSplitterContext()\n const index = computed(() => toIndex(props.index))\n return () => h('div', ctx.api.value.getResizeTriggerProps(index.value) as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { StatisticApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface StatisticContext {\n api: ComputedRef<StatisticApi>\n}\n\nconst KEY: InjectionKey<StatisticContext> = Symbol('xh-statistic')\n\nexport function provideStatistic(ctx: StatisticContext): void {\n provide(KEY, ctx)\n}\n\nexport function useStatisticContext(): StatisticContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Statistic 部件必须用在 XhStatisticRoot 内')\n return ctx\n}\n","import type { StatisticProps } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectStatistic } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideStatistic, useStatisticContext } from './context'\n\nexport const XhStatisticRoot = defineComponent({\n name: 'XhStatisticRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n size: { type: String as PropType<Size>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectStatistic(props as StatisticProps, vueNormalize))\n provideStatistic({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 标签渲染为 span 而不是 label:它不关联任何表单控件\nexport const XhStatisticLabel = defineComponent({\n name: 'XhStatisticLabel',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 数值由作者格式化好再塞进来,组件只负责排版\nexport const XhStatisticValue = defineComponent({\n name: 'XhStatisticValue',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getValueProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhStatisticPrefix = defineComponent({\n name: 'XhStatisticPrefix',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getPrefixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhStatisticSuffix = defineComponent({\n name: 'XhStatisticSuffix',\n setup(_, { slots }) {\n const ctx = useStatisticContext()\n return () => h('span', ctx.api.value.getSuffixProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { StepsItemProps } from '@xihan-ui/headless'\nimport type { InjectionKey } from 'vue'\nimport type { StepsContext } from './use-steps'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<StepsContext> = Symbol('xh-steps')\n/** 条目身份下传给 trigger/indicator/title/description/separator,用 getter 以跟随 value/disabled 变更。 */\nconst ITEM_KEY: InjectionKey<() => StepsItemProps> = Symbol('xh-steps-item')\n\nexport function provideSteps(ctx: StepsContext): void {\n provide(KEY, ctx)\n}\n\nexport function useStepsContext(): StepsContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Steps 部件必须用在 XhStepsRoot 内')\n return ctx\n}\n\nexport function provideStepsItem(item: () => StepsItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useStepsItem(): () => StepsItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Steps 条目部件必须用在 XhStepsItem 内')\n return item\n}\n","import type { StepsApi, StepsSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectSteps, stepsMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface StepsContext {\n api: ComputedRef<StepsApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如条目卸载带走了焦点)。 */\n service: Service<StepsSchema>\n}\n\nexport function useSteps(\n props: StepsSchema['props'],\n onStepChange?: StepsSchema['props']['onStepChange'],\n): StepsContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(stepsMachine, () => ({ ...props, onStepChange }), scope)\n const api = computed(() => connectSteps(service, vueNormalize))\n return { api, service }\n}\n","import type { StepsSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideSteps, provideStepsItem, useStepsContext, useStepsItem } from './context'\nimport { useSteps } from './use-steps'\n\ntype StepsProps = StepsSchema['props']\n\nexport const XhStepsRoot = defineComponent({\n name: 'XhStepsRoot',\n // 全部 default: undefined,缺省值由 connect 决定\n props: {\n step: { type: Number, default: undefined },\n defaultStep: { type: Number, default: undefined },\n count: { type: Number, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n linear: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // step-change 携带 { step },update:step 携带裸下标\n emits: {\n 'step-change': (_details: PayloadOf<StepsProps, 'onStepChange'>) => true,\n 'update:step': (_step: PayloadOf<StepsProps, 'onStepChange'>['step']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: StepsProps['onStepChange'] = (details) => {\n emit('step-change', details)\n emit('update:step', details.step)\n }\n const ctx = useSteps(props as StepsProps, notify)\n provideSteps(ctx)\n // 经插槽暴露状态与前进/后退方法,供步骤条外的按钮使用\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n step: ctx.api.value.step,\n count: ctx.api.value.count,\n complete: ctx.api.value.complete,\n setStep: ctx.api.value.setStep,\n goToNextStep: ctx.api.value.goToNextStep,\n goToPrevStep: ctx.api.value.goToPrevStep,\n }))\n },\n})\n\nexport const XhStepsList = defineComponent({\n name: 'XhStepsList',\n setup(_, { slots }) {\n const ctx = useStepsContext()\n return () => h('div', ctx.api.value.getListProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhStepsItem = defineComponent({\n name: 'XhStepsItem',\n props: {\n // 步骤下标,兼收字符串以支持模板属性字面量与 WC 侧的 DOM 属性\n value: { type: [Number, String] as PropType<number | string>, required: true },\n disabled: Boolean,\n },\n setup(props, { slots }) {\n const ctx = useStepsContext()\n provideStepsItem(() => ({ index: Number(props.value), disabled: props.disabled }))\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ index: Number(props.value), disabled: props.disabled }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhStepsTrigger = defineComponent({\n name: 'XhStepsTrigger',\n setup(_, { slots }) {\n const ctx = useStepsContext()\n const item = useStepsItem()\n // 本节点持有焦点时,下标变更重报焦点步骤,卸载时上报列表失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => item().index, (next, prev) => {\n if (next === prev)\n return\n const svc = ctx.service\n if (svc.getStatus() !== 'Started')\n return\n if (itemEl.value && svc.scope.getActiveElement() === itemEl.value)\n svc.send({ type: 'TRIGGER.FOCUS', step: next })\n })\n onBeforeUnmount(() => {\n if (ctx.service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按下标比对\n if (itemEl.value && ctx.service.scope.getActiveElement() === itemEl.value)\n ctx.service.send({ type: 'LIST.BLUR' })\n })\n return () => h(\n 'button',\n { ...ctx.api.value.getTriggerProps(item()) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhStepsIndicator = defineComponent({\n name: 'XhStepsIndicator',\n setup(_, { slots }) {\n const ctx = useStepsContext()\n const item = useStepsItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhStepsTitle = defineComponent({\n name: 'XhStepsTitle',\n setup(_, { slots }) {\n const ctx = useStepsContext()\n const item = useStepsItem()\n return () => h('span', ctx.api.value.getTitleProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhStepsDescription = defineComponent({\n name: 'XhStepsDescription',\n setup(_, { slots }) {\n const ctx = useStepsContext()\n const item = useStepsItem()\n return () => h('span', ctx.api.value.getDescriptionProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 连接线写在 item 之内,身份从 item 上下文取\nexport const XhStepsSeparator = defineComponent({\n name: 'XhStepsSeparator',\n setup(_, { slots }) {\n const ctx = useStepsContext()\n const item = useStepsItem()\n return () => h('div', ctx.api.value.getSeparatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 面板挂在 list 之外,自带 value 与 trigger 配对;value 等于 count 的面板即完成页 */\nexport const XhStepsContent = defineComponent({\n name: 'XhStepsContent',\n props: {\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useStepsContext()\n return () => h(\n 'div',\n ctx.api.value.getContentProps({ index: Number(props.value) }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n","import type { SwitchApi, SwitchSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectSwitch, switchMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface SwitchContext {\n api: ComputedRef<SwitchApi>\n}\n\nexport function useSwitch(\n props: SwitchSchema['props'],\n onCheckedChange?: SwitchSchema['props']['onCheckedChange'],\n): SwitchContext {\n const service = useMachine(switchMachine, () => ({ ...props, onCheckedChange }))\n const api = computed(() => connectSwitch(service, vueNormalize))\n return { api }\n}\n","import type { SwitchSchema } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { useSwitch } from './use-switch'\n\ntype SwitchProps = SwitchSchema['props']\n\nexport const XhSwitch = defineComponent({\n name: 'XhSwitch',\n props: {\n checked: { type: Boolean, default: undefined },\n defaultChecked: Boolean,\n disabled: Boolean,\n tone: String as PropType<Tone>,\n size: String as PropType<Size>,\n },\n // checked-change 携带 { checked },update:checked 携带裸布尔\n emits: {\n 'checked-change': (_details: PayloadOf<SwitchProps, 'onCheckedChange'>) => true,\n 'update:checked': (_checked: PayloadOf<SwitchProps, 'onCheckedChange'>['checked']) => true,\n },\n setup(props, { emit }) {\n const notify: SwitchProps['onCheckedChange'] = (details) => {\n emit('checked-change', details)\n emit('update:checked', details.checked)\n }\n const { api } = useSwitch(props as SwitchProps, notify)\n return () => h('button', api.value.getRootProps() as Record<string, unknown>, [\n h('span', api.value.getThumbProps() as Record<string, unknown>),\n ])\n },\n})\n","import type { TableColumnProps, TableRowProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TableContext } from './use-table'\nimport { inject, provide } from 'vue'\n\n/** 行所在的区段,决定同一个 row 部件渲染成表头行、数据行还是脚注行。 */\nexport type TableSection = 'header' | 'body' | 'footer'\n\n/** 行自报的值,供行内的把手与单元格复用同一份声明。 */\nexport interface TableRowContext {\n row: ComputedRef<TableRowProps>\n}\n\n/** 列自报的值,供列标题里的排序把手复用同一份声明。 */\nexport interface TableColumnContext {\n column: ComputedRef<TableColumnProps>\n}\n\nconst KEY: InjectionKey<TableContext> = Symbol('xh-table')\nconst SECTION_KEY: InjectionKey<TableSection> = Symbol('xh-table-section')\nconst ROW_KEY: InjectionKey<TableRowContext> = Symbol('xh-table-row')\nconst COLUMN_KEY: InjectionKey<TableColumnContext> = Symbol('xh-table-column')\n\nexport function provideTable(ctx: TableContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTableContext(): TableContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Table 部件必须用在 XhTableRoot 内')\n return ctx\n}\n\nexport function provideTableSection(section: TableSection): void {\n provide(SECTION_KEY, section)\n}\n\n/** 取所在区段,无区段声明时按数据行处理。 */\nexport function useTableSection(): TableSection {\n return inject(SECTION_KEY, 'body')\n}\n\nexport function provideTableRow(ctx: TableRowContext): void {\n provide(ROW_KEY, ctx)\n}\n\nexport function useTableRowContext(): TableRowContext {\n const ctx = inject(ROW_KEY, null)\n if (!ctx)\n throw new Error('[xh] Table 行内部件必须用在 XhTableRow 或 XhTableExpandedRow 内')\n return ctx\n}\n\n/** 注入行上下文,表头与脚注单元格不在行内时返回 null。 */\nexport function useOptionalTableRowContext(): TableRowContext | null {\n return inject(ROW_KEY, null)\n}\n\nexport function provideTableColumn(ctx: TableColumnContext): void {\n provide(COLUMN_KEY, ctx)\n}\n\nexport function useTableColumnContext(): TableColumnContext {\n const ctx = inject(COLUMN_KEY, null)\n if (!ctx)\n throw new Error('[xh] Table 排序把手必须用在 XhTableColumnHeader 内')\n return ctx\n}\n","import type { TableApi, TableSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectTable, tableMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TableContext {\n api: ComputedRef<TableApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如行卸载带走了焦点)。 */\n service: Service<TableSchema>\n}\n\nexport function useTable(\n props: TableSchema['props'],\n onSortChange?: TableSchema['props']['onSortChange'],\n onSelectionChange?: TableSchema['props']['onSelectionChange'],\n onExpandedChange?: TableSchema['props']['onExpandedChange'],\n): TableContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(\n tableMachine,\n () => ({ ...props, onSortChange, onSelectionChange, onExpandedChange }),\n scope,\n )\n const api = computed(() => connectTable(service, vueNormalize))\n return { api, service }\n}\n","import type {\n TableColumnDef,\n TableColumnProps,\n TableRowDef,\n TableRowProps,\n TableSchema,\n TableSelection,\n TableSelectionMode,\n TableSortDescriptor,\n} from '@xihan-ui/headless'\nimport type { Direction, Size } from '@xihan-ui/kernel'\nimport type { PropType, Ref } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { TableContext } from './use-table'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport {\n provideTable,\n provideTableColumn,\n provideTableRow,\n provideTableSection,\n useOptionalTableRowContext,\n useTableColumnContext,\n useTableContext,\n useTableRowContext,\n useTableSection,\n} from './context'\nimport { useTable } from './use-table'\n\ntype TableProps = TableSchema['props']\n\n/** 本行持有焦点时,value 变更重报焦点行,卸载时上报表体失焦 */\nfunction reportRowFocus(ctx: TableContext, el: Ref<HTMLElement | null>, value: () => string): void {\n watch(value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'ROW.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整张表一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本行当下正持有焦点」判定,不按 value 比对\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'TABLE.BLUR' })\n })\n}\n\nexport const XhTableRoot = defineComponent({\n name: 'XhTableRoot',\n // 有机器侧兜底的 prop 一律 default: undefined,缺省值由 connect 与机器决定\n props: {\n columns: { type: Array as PropType<TableColumnDef[]>, default: undefined },\n rows: { type: Array as PropType<TableRowDef[]>, default: undefined },\n sort: { type: Array as PropType<TableSortDescriptor[]>, default: undefined },\n defaultSort: { type: Array as PropType<TableSortDescriptor[]>, default: undefined },\n selection: { type: [Array, String] as PropType<TableSelection>, default: undefined },\n defaultSelection: { type: [Array, String] as PropType<TableSelection>, default: undefined },\n selectionMode: { type: String as PropType<TableSelectionMode>, default: undefined },\n expanded: { type: Array as PropType<string[]>, default: undefined },\n defaultExpanded: { type: Array as PropType<string[]>, default: undefined },\n loading: Boolean,\n empty: { type: Boolean, default: undefined },\n stickyHeader: Boolean,\n footer: Boolean,\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // *-change 携带 { value },update:* 携带裸值以支持 v-model\n emits: {\n 'sort-change': (_details: PayloadOf<TableProps, 'onSortChange'>) => true,\n 'update:sort': (_sort: PayloadOf<TableProps, 'onSortChange'>['value']) => true,\n 'selection-change': (_details: PayloadOf<TableProps, 'onSelectionChange'>) => true,\n 'update:selection': (_selection: PayloadOf<TableProps, 'onSelectionChange'>['value']) => true,\n 'expanded-change': (_details: PayloadOf<TableProps, 'onExpandedChange'>) => true,\n 'update:expanded': (_expanded: PayloadOf<TableProps, 'onExpandedChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const onSortChange: TableProps['onSortChange'] = (details) => {\n emit('sort-change', details)\n emit('update:sort', details.value)\n }\n const onSelectionChange: TableProps['onSelectionChange'] = (details) => {\n emit('selection-change', details)\n emit('update:selection', details.value)\n }\n const onExpandedChange: TableProps['onExpandedChange'] = (details) => {\n emit('expanded-change', details)\n emit('update:expanded', details.value)\n }\n const ctx = useTable(props as TableProps, onSortChange, onSelectionChange, onExpandedChange)\n provideTable(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n visibleRows: ctx.api.value.visibleRows,\n sort: ctx.api.value.sort,\n selection: ctx.api.value.selection,\n selectionState: ctx.api.value.selectionState,\n expandedValue: ctx.api.value.expandedValue,\n focusedRow: ctx.api.value.focusedRow,\n empty: ctx.api.value.empty,\n loading: ctx.api.value.loading,\n isSelected: ctx.api.value.isSelected,\n isExpanded: ctx.api.value.isExpanded,\n sortDirection: ctx.api.value.sortDirection,\n sortPriority: ctx.api.value.sortPriority,\n toggleSort: ctx.api.value.toggleSort,\n selectRow: ctx.api.value.selectRow,\n toggleSelectAll: ctx.api.value.toggleSelectAll,\n toggleExpandRow: ctx.api.value.toggleExpandRow,\n }))\n },\n})\n\nexport const XhTableCaption = defineComponent({\n name: 'XhTableCaption',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getCaptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableHeader = defineComponent({\n name: 'XhTableHeader',\n setup(_, { slots }) {\n const ctx = useTableContext()\n provideTableSection('header')\n return () => h('div', ctx.api.value.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableBody = defineComponent({\n name: 'XhTableBody',\n setup(_, { slots }) {\n const ctx = useTableContext()\n provideTableSection('body')\n // 键盘与 roving 的兜底 Tab 位落在表体上,不在 root 上\n return () => h('div', ctx.api.value.getBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableFooter = defineComponent({\n name: 'XhTableFooter',\n setup(_, { slots }) {\n const ctx = useTableContext()\n provideTableSection('footer')\n return () => h('div', ctx.api.value.getFooterProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableRow = defineComponent({\n name: 'XhTableRow',\n props: {\n /** 行 id:数据行必给,表头行与脚注行省略。 */\n value: { type: String, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const section = useTableSection()\n if (section !== 'body') {\n return () => h(\n 'div',\n (section === 'header'\n ? ctx.api.value.getHeaderRowProps()\n : ctx.api.value.getFooterRowProps()) as Record<string, unknown>,\n slots.default?.(),\n )\n }\n const row = computed<TableRowProps>(() => ({ value: props.value ?? '' }))\n // 供行内的把手与单元格读取行 id\n provideTableRow({ row })\n const el = ref<HTMLElement | null>(null)\n reportRowFocus(ctx, el, () => row.value.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getRowProps(row.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableColumnHeader = defineComponent({\n name: 'XhTableColumnHeader',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const column = computed<TableColumnProps>(() => ({ value: props.value }))\n provideTableColumn({ column })\n return () => h(\n 'div',\n ctx.api.value.getColumnHeaderProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableCell = defineComponent({\n name: 'XhTableCell',\n props: {\n /** 列 id。 */\n value: { type: String, required: true },\n /** 跨列数,从 value 那一列往后算。 */\n colspan: { type: [String, Number] as PropType<string | number>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n // 行上下文可选:脚注单元格不属于任何数据行\n const rowCtx = useOptionalTableRowContext()\n return () => h(\n 'div',\n ctx.api.value.getCellProps({\n value: props.value,\n row: rowCtx?.row.value.value,\n colSpan: props.colspan == null ? undefined : Number(props.colspan),\n }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableSelectAllTrigger = defineComponent({\n name: 'XhTableSelectAllTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h(\n 'span',\n ctx.api.value.getSelectAllTriggerProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableRowSelectTrigger = defineComponent({\n name: 'XhTableRowSelectTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { row } = useTableRowContext()\n return () => h(\n 'span',\n ctx.api.value.getRowSelectTriggerProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableSortTrigger = defineComponent({\n name: 'XhTableSortTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { column } = useTableColumnContext()\n return () => h(\n 'span',\n ctx.api.value.getSortTriggerProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableExpandTrigger = defineComponent({\n name: 'XhTableExpandTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { row } = useTableRowContext()\n return () => h(\n 'span',\n ctx.api.value.getExpandTriggerProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableExpandedRow = defineComponent({\n name: 'XhTableExpandedRow',\n props: {\n /** 所属数据行的 id。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const row = computed<TableRowProps>(() => ({ value: props.value }))\n // 不 provide 行上下文;收起只加 hidden,不卸载内部节点\n return () => h(\n 'div',\n ctx.api.value.getExpandedRowProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableEmptyState = defineComponent({\n name: 'XhTableEmptyState',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getEmptyStateProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableLoadingState = defineComponent({\n name: 'XhTableLoadingState',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getLoadingStateProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { TabsContext } from './use-tabs'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TabsContext> = Symbol('xh-tabs')\n\nexport function provideTabs(ctx: TabsContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTabsContext(): TabsContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tabs 部件必须用在 XhTabsRoot 内')\n return ctx\n}\n","import type { TabsApi, TabsSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectTabs, tabsMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TabsContext {\n api: ComputedRef<TabsApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如条目卸载带走了焦点)。 */\n service: Service<TabsSchema>\n}\n\nexport function useTabs(\n props: TabsSchema['props'],\n onValueChange?: TabsSchema['props']['onValueChange'],\n): TabsContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(tabsMachine, () => ({ ...props, onValueChange }), scope)\n const api = computed(() => connectTabs(service, vueNormalize))\n return { api, service }\n}\n","import type { TabsActivationMode, TabsNode, TabsNodeMeta, TabsSchema, TabsVariant } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { provideTabs, useTabsContext } from './context'\nimport { useTabs } from './use-tabs'\n\ntype TabsProps = TabsSchema['props']\n\nexport const XhTabsRoot = defineComponent({\n name: 'XhTabsRoot',\n // 全部 default: undefined,缺省值由 connect 决定\n props: {\n collection: { type: Array as PropType<TabsNode[]>, default: undefined },\n value: { type: String as PropType<string | null>, default: undefined },\n defaultValue: { type: String as PropType<string | null>, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n activationMode: { type: String as PropType<TabsActivationMode>, default: undefined },\n loop: { type: Boolean, default: undefined },\n variant: { type: String as PropType<TabsVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<TabsProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<TabsProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: TabsProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useTabs(props as TabsProps, notify)\n provideTabs(ctx)\n return () => {\n // 默认插槽里有真内容就照旧交给作者;只剩注释或空白时当没写,给了 collection 就按数据铺开整套结构\n const authored = slots.default?.()\n const children = slotPaints(authored)\n ? authored\n : (props.collection ? renderDefaultTree(ctx.api.value.collection, slots.panel) : undefined)\n return h('div', ctx.api.value.getRootProps() as Record<string, unknown>, children)\n }\n },\n})\n\nexport const XhTabsList = defineComponent({\n name: 'XhTabsList',\n setup(_, { slots }) {\n const ctx = useTabsContext()\n return () => h('div', ctx.api.value.getListProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTabsTrigger = defineComponent({\n name: 'XhTabsTrigger',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useTabsContext()\n // 本节点持有焦点时,value 变更重报焦点标签,卸载时上报列表失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const svc = ctx.service\n if (svc.getStatus() !== 'Started')\n return\n if (itemEl.value && svc.scope.getActiveElement() === itemEl.value)\n svc.send({ type: 'TRIGGER.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n if (ctx.service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && ctx.service.scope.getActiveElement() === itemEl.value)\n ctx.service.send({ type: 'LIST.BLUR' })\n })\n return () => h(\n 'button',\n { ...ctx.api.value.getTriggerProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTabsContent = defineComponent({\n name: 'XhTabsContent',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTabsContext()\n return () => h(\n 'div',\n ctx.api.value.getContentProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 面板内容走 panel 插槽,没写就是空面板。\n */\nfunction renderDefaultTree(\n collection: readonly TabsNodeMeta[],\n panelSlot?: (node: TabsNodeMeta) => VNode[],\n): VNode[] {\n return [\n h(XhTabsList, null, () => collection.map(node =>\n h(XhTabsTrigger, { key: node.value, value: node.value }, () => node.label),\n )),\n ...collection.map(node =>\n h(XhTabsContent, { key: node.value, value: node.value }, () => panelSlot?.(node) ?? []),\n ),\n ]\n}\n","import type { TagsInputItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TagsInputContext } from './use-tags-input'\nimport { inject, provide } from 'vue'\n\n/** 标签自报的值,供 item-preview / item-text / 删除按钮 / 编辑框复用同一份声明。 */\nexport interface TagsInputItemContext {\n item: ComputedRef<TagsInputItemProps>\n}\n\nconst KEY: InjectionKey<TagsInputContext> = Symbol('xh-tags-input')\nconst ITEM_KEY: InjectionKey<TagsInputItemContext> = Symbol('xh-tags-input-item')\n\nexport function provideTagsInput(ctx: TagsInputContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTagsInputContext(): TagsInputContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TagsInput 部件必须用在 XhTagsInputRoot 内')\n return ctx\n}\n\nexport function provideTagsInputItem(ctx: TagsInputItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useTagsInputItemContext(): TagsInputItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] TagsInput 标签子部件必须用在 XhTagsInputItem 内')\n return ctx\n}\n","import type { TagsInputApi, TagsInputSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectTagsInput, tagsInputMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TagsInputContext {\n api: ComputedRef<TagsInputApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如标签节点带着焦点离场)。 */\n service: Service<TagsInputSchema>\n}\n\nexport function useTagsInput(\n props: TagsInputSchema['props'],\n handlers: Pick<TagsInputSchema['props'], 'onValueChange' | 'onInputValueChange'> = {},\n): TagsInputContext {\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(tagsInputMachine, () => ({ ...props, ...handlers }), scope)\n const api = computed(() => connectTagsInput(service, vueNormalize))\n return { api, service }\n}\n","import type { TagsInputBlurBehavior, TagsInputItemProps, TagsInputSchema, TagsInputTranslations } from '@xihan-ui/headless'\nimport type { ControlVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideTagsInput, provideTagsInputItem, useTagsInputContext, useTagsInputItemContext } from './context'\nimport { useTagsInput } from './use-tags-input'\n\ntype TagsInputProps = TagsInputSchema['props']\n\nexport const XhTagsInputRoot = defineComponent({\n name: 'XhTagsInputRoot',\n // 有 connect 与机器兜底的 prop 一律 default: undefined\n props: {\n // default: undefined 表示非受控\n value: { type: Array as PropType<string[]>, default: undefined },\n defaultValue: { type: Array as PropType<string[]>, default: undefined },\n inputValue: { type: String, default: undefined },\n defaultInputValue: { type: String, default: undefined },\n max: { type: Number, default: undefined },\n allowOverflow: Boolean,\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n name: { type: String, default: undefined },\n placeholder: { type: String, default: undefined },\n delimiter: { type: String, default: undefined },\n addOnPaste: Boolean,\n editable: Boolean,\n blurBehavior: { type: String as PropType<TagsInputBlurBehavior | null>, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n translations: { type: Object as PropType<Partial<TagsInputTranslations>>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸数组;输入文本走 input-value-change 一路\n emits: {\n 'value-change': (_details: PayloadOf<TagsInputProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<TagsInputProps, 'onValueChange'>['value']) => true,\n 'input-value-change': (_details: PayloadOf<TagsInputProps, 'onInputValueChange'>) => true,\n 'update:inputValue': (_inputValue: PayloadOf<TagsInputProps, 'onInputValueChange'>['inputValue']) => true,\n },\n setup(props, { slots, emit }) {\n const onValueChange: TagsInputProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const onInputValueChange: TagsInputProps['onInputValueChange'] = (details) => {\n emit('input-value-change', details)\n emit('update:inputValue', details.inputValue)\n }\n const ctx = useTagsInput(props as TagsInputProps, { onValueChange, onInputValueChange })\n provideTagsInput(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n count: ctx.api.value.count,\n inputValue: ctx.api.value.inputValue,\n empty: ctx.api.value.empty,\n atMax: ctx.api.value.atMax,\n overflow: ctx.api.value.overflow,\n highlightedValue: ctx.api.value.highlightedValue,\n editedValue: ctx.api.value.editedValue,\n canClear: ctx.api.value.canClear,\n setValue: ctx.api.value.setValue,\n addValue: ctx.api.value.addValue,\n deleteValue: ctx.api.value.deleteValue,\n clear: ctx.api.value.clear,\n setInputValue: ctx.api.value.setInputValue,\n highlight: ctx.api.value.highlight,\n edit: ctx.api.value.edit,\n }))\n },\n})\n\nexport const XhTagsInputLabel = defineComponent({\n name: 'XhTagsInputLabel',\n setup(_, { slots }) {\n const ctx = useTagsInputContext()\n // 用原生 label,getLabelProps 的 for 指向输入框\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTagsInputControl = defineComponent({\n name: 'XhTagsInputControl',\n setup(_, { slots }) {\n const ctx = useTagsInputContext()\n return () => h('div', ctx.api.value.getControlProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTagsInputInput = defineComponent({\n name: 'XhTagsInputInput',\n setup() {\n const ctx = useTagsInputContext()\n return () => h('input', ctx.api.value.getInputProps() as Record<string, unknown>)\n },\n})\n\nexport const XhTagsInputItem = defineComponent({\n name: 'XhTagsInputItem',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTagsInputContext()\n const item = computed<TagsInputItemProps>(() => ({ value: props.value }))\n provideTagsInputItem({ item })\n // 本标签持有焦点时,value 变更或卸载都上报焦点离场以终止编辑会话\n const itemEl = ref<HTMLElement | null>(null)\n const holdsFocus = (): boolean => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return false\n const active = service.scope.getActiveElement()\n return !!itemEl.value && !!active && (itemEl.value === active || itemEl.value.contains(active))\n }\n watch(() => props.value, (next, prev) => {\n if (next !== prev && holdsFocus())\n ctx.service.send({ type: 'ITEM.FOCUS_LOST' })\n })\n onBeforeUnmount(() => {\n if (holdsFocus())\n ctx.service.send({ type: 'ITEM.FOCUS_LOST' })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTagsInputItemPreview = defineComponent({\n name: 'XhTagsInputItemPreview',\n setup(_, { slots }) {\n const ctx = useTagsInputContext()\n const { item } = useTagsInputItemContext()\n return () => h('span', ctx.api.value.getItemPreviewProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTagsInputItemText = defineComponent({\n name: 'XhTagsInputItemText',\n setup(_, { slots }) {\n const ctx = useTagsInputContext()\n const { item } = useTagsInputItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTagsInputItemDeleteTrigger = defineComponent({\n name: 'XhTagsInputItemDeleteTrigger',\n setup(_, { slots }) {\n const ctx = useTagsInputContext()\n const { item } = useTagsInputItemContext()\n return () => h('button', ctx.api.value.getItemDeleteTriggerProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTagsInputItemInput = defineComponent({\n name: 'XhTagsInputItemInput',\n setup() {\n const ctx = useTagsInputContext()\n const { item } = useTagsInputItemContext()\n return () => h('input', ctx.api.value.getItemInputProps(item.value) as Record<string, unknown>)\n },\n})\n\nexport const XhTagsInputClearTrigger = defineComponent({\n name: 'XhTagsInputClearTrigger',\n setup(_, { slots }) {\n const ctx = useTagsInputContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTagsInputHiddenInput = defineComponent({\n name: 'XhTagsInputHiddenInput',\n setup() {\n const ctx = useTagsInputContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { TextFieldContext } from './use-text-field'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TextFieldContext> = Symbol('xh-text-field')\n\nexport function provideTextField(ctx: TextFieldContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTextFieldContext(): TextFieldContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TextField 部件必须用在 XhTextFieldRoot 内')\n return ctx\n}\n","import type { TextFieldApi, TextFieldSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectTextField, textFieldMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface TextFieldContext {\n api: ComputedRef<TextFieldApi>\n}\n\nexport function useTextField(\n props: TextFieldSchema['props'],\n onValueChange?: TextFieldSchema['props']['onValueChange'],\n): TextFieldContext {\n const service = useMachine(textFieldMachine, () => ({ ...props, onValueChange }))\n const api = computed(() => connectTextField(service, vueNormalize))\n return { api }\n}\n","import type { TextFieldSchema } from '@xihan-ui/headless'\nimport type { ControlVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideTextField, useTextFieldContext } from './context'\nimport { useTextField } from './use-text-field'\n\ntype TextFieldProps = TextFieldSchema['props']\n\nexport const XhTextFieldRoot = defineComponent({\n name: 'XhTextFieldRoot',\n props: {\n // default: undefined 表示非受控\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n placeholder: { type: String, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n required: Boolean,\n invalid: Boolean,\n name: { type: String, default: undefined },\n maxLength: { type: Number, default: undefined },\n clearable: Boolean,\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸串\n emits: {\n 'value-change': (_details: PayloadOf<TextFieldProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<TextFieldProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: TextFieldProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useTextField(props as TextFieldProps, notify)\n provideTextField(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n empty: ctx.api.value.empty,\n atLimit: ctx.api.value.atLimit,\n canClear: ctx.api.value.canClear,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTextFieldLabel = defineComponent({\n name: 'XhTextFieldLabel',\n setup(_, { slots }) {\n const ctx = useTextFieldContext()\n // 必须是原生 <label>,connect 把 for 写向 input\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTextFieldInput = defineComponent({\n name: 'XhTextFieldInput',\n setup() {\n const ctx = useTextFieldContext()\n // 自己渲染 <input>,label 的 for 指向这个节点\n return () => h('input', ctx.api.value.getInputProps() as Record<string, unknown>)\n },\n})\n\nexport const XhTextFieldClearTrigger = defineComponent({\n name: 'XhTextFieldClearTrigger',\n setup(_, { slots }) {\n const ctx = useTextFieldContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { ThreadContext } from './use-thread'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ThreadContext> = Symbol('xh-thread')\n\nexport function provideThread(ctx: ThreadContext): void {\n provide(KEY, ctx)\n}\n\nexport function useThreadContext(): ThreadContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Thread 部件必须用在 XhThreadRoot 内')\n return ctx\n}\n","import type { ThreadApi, ThreadSchema } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectThread, threadMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { computed, ref, watch } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface ThreadContext {\n api: ComputedRef<ThreadApi>\n /** overflow:auto 的滚动容器节点。 */\n viewportRef: Ref<HTMLElement | null>\n /** 内容包裹层节点,尺寸变化的观察目标。 */\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useThread(\n props: ThreadSchema['props'],\n onStickChange?: ThreadSchema['props']['onStickChange'],\n): ThreadContext {\n const viewportRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // onStickChange 由组件外壳或调用方提供,随 props 一并传给机器\n const service = useMachine(threadMachine, () => ({ ...props, onStickChange }), scope)\n\n // 无 DOM 环境不装 config,此时粘底效应整套不挂载\n if (typeof document !== 'undefined')\n service.refs.set('config', createRuntimeConfig({ scope, idGenerator: idGen }))\n\n // 传 getter 而非节点本身,ref 在挂载后才有值\n service.refs.set('getViewportEl', () => viewportRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n\n // 节点变化后让句柄重绑\n watch([viewportRef, contentRef], () => {\n service.refs.get('stick')?.retarget()\n })\n\n const api = computed(() => connectThread(service, vueNormalize))\n return { api, viewportRef, contentRef }\n}\n","import type { ThreadSchema, ThreadStatus, ThreadTranslations } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideThread, useThreadContext } from './context'\nimport { useThread } from './use-thread'\n\ntype ThreadProps = ThreadSchema['props']\n\nexport const XhThreadRoot = defineComponent({\n name: 'XhThreadRoot',\n // 一律 default: undefined,缺省值由机器、connect 与粘底句柄给出\n props: {\n status: { type: String as PropType<ThreadStatus>, default: undefined },\n threshold: { type: Number, default: undefined },\n translations: { type: Object as PropType<Partial<ThreadTranslations>>, default: undefined },\n },\n // stick-change 携带 { atBottom, sticking },无对应的 v-model\n emits: {\n 'stick-change': (_details: PayloadOf<ThreadProps, 'onStickChange'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: ThreadProps['onStickChange'] = details => emit('stick-change', details)\n const ctx = useThread(props as ThreadProps, notify)\n provideThread(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n status: ctx.api.value.status,\n atBottom: ctx.api.value.atBottom,\n sticking: ctx.api.value.sticking,\n showScrollButton: ctx.api.value.showScrollButton,\n scrollToBottom: ctx.api.value.scrollToBottom,\n }))\n },\n})\n\nexport const XhThreadViewport = defineComponent({\n name: 'XhThreadViewport',\n setup(_, { slots }) {\n const ctx = useThreadContext()\n // 把视口节点交给机器,由粘底句柄监听滚动\n return () => h('div', {\n ...ctx.api.value.getViewportProps() as Record<string, unknown>,\n ref: ctx.viewportRef,\n }, slots.default?.())\n },\n})\n\nexport const XhThreadContent = defineComponent({\n name: 'XhThreadContent',\n setup(_, { slots }) {\n const ctx = useThreadContext()\n // 把内容节点交给机器,由粘底句柄观察尺寸\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: ctx.contentRef,\n }, slots.default?.())\n },\n})\n\nexport const XhThreadScrollButton = defineComponent({\n name: 'XhThreadScrollButton',\n setup(_, { slots }) {\n const ctx = useThreadContext()\n // 收起时走 hidden 属性,节点不卸载\n return () => h('button', ctx.api.value.getScrollButtonProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhThreadLiveRegion = defineComponent({\n name: 'XhThreadLiveRegion',\n setup(_, { slots }) {\n const ctx = useThreadContext()\n // 内容由宿主在一轮流结束时一次性写入\n return () => h('div', ctx.api.value.getLiveRegionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { TimeFieldContext } from './use-time-field'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TimeFieldContext> = Symbol('xh-time-field')\n\nexport function provideTimeField(ctx: TimeFieldContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimeFieldContext(): TimeFieldContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimeField 部件必须用在 XhTimeFieldRoot 内')\n return ctx\n}\n","import type { TimeFieldApi, TimeFieldSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectTimeField, timeFieldMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TimeFieldContext {\n api: ComputedRef<TimeFieldApi>\n}\n\nexport function useTimeField(\n props: TimeFieldSchema['props'],\n handlers: Pick<TimeFieldSchema['props'], 'onValueChange'> = {},\n): TimeFieldContext {\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(timeFieldMachine, () => ({ ...props, ...handlers }), scope)\n const api = computed(() => connectTimeField(service, vueNormalize))\n return { api }\n}\n","import type { TimeFieldSchema, TimeGranularity, TimeHourCycle, TimeSegmentType } from '@xihan-ui/headless'\nimport type { ControlVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideTimeField, useTimeFieldContext } from './context'\nimport { useTimeField } from './use-time-field'\n\ntype TimeFieldProps = TimeFieldSchema['props']\n\nexport const XhTimeFieldRoot = defineComponent({\n name: 'XhTimeFieldRoot',\n props: {\n // default: undefined 表示非受控\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n min: { type: String, default: undefined },\n max: { type: String, default: undefined },\n locale: { type: String, default: undefined },\n // 缺省值由 connect 给出,这里一律 default: undefined\n hourCycle: { type: Number as PropType<TimeHourCycle>, default: undefined },\n granularity: { type: String as PropType<TimeGranularity>, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n placeholder: { type: String, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸串\n emits: {\n 'value-change': (_details: PayloadOf<TimeFieldProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<TimeFieldProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const onValueChange: TimeFieldProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useTimeField(props as TimeFieldProps, { onValueChange })\n provideTimeField(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n empty: ctx.api.value.empty,\n outOfRange: ctx.api.value.outOfRange,\n segments: ctx.api.value.segments,\n focusedSegment: ctx.api.value.focusedSegment,\n hourCycle: ctx.api.value.hourCycle,\n granularity: ctx.api.value.granularity,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTimeFieldLabel = defineComponent({\n name: 'XhTimeFieldLabel',\n setup(_, { slots }) {\n const ctx = useTimeFieldContext()\n // 仍用原生 label 保持表单语义,点标题聚焦第一段由连接层的 click 接管\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeFieldControl = defineComponent({\n name: 'XhTimeFieldControl',\n setup(_, { slots }) {\n const ctx = useTimeFieldContext()\n return () => h('div', ctx.api.value.getControlProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeFieldSegment = defineComponent({\n name: 'XhTimeFieldSegment',\n props: {\n // 段的身份由作者声明\n segment: { type: String as PropType<TimeSegmentType>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimeFieldContext()\n // 有插槽用插槽,否则显示该段的文字,空段为占位串\n return () => h(\n 'span',\n ctx.api.value.getSegmentProps({ segment: props.segment }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getSegmentText({ segment: props.segment }),\n )\n },\n})\n\nexport const XhTimeFieldHiddenInput = defineComponent({\n name: 'XhTimeFieldHiddenInput',\n setup() {\n const ctx = useTimeFieldContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n","import type { TimePickerColumnUnit } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TimePickerContext } from './use-time-picker'\nimport { inject, provide } from 'vue'\n\n/** 列自报的单位,供列内选项取到自己归哪一列。 */\nexport interface TimePickerColumnContext {\n unit: ComputedRef<TimePickerColumnUnit>\n}\n\nconst KEY: InjectionKey<TimePickerContext> = Symbol('xh-time-picker')\nconst COLUMN_KEY: InjectionKey<TimePickerColumnContext> = Symbol('xh-time-picker-column')\n\nexport function provideTimePicker(ctx: TimePickerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimePickerContext(): TimePickerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 部件必须用在 XhTimePickerRoot 内')\n return ctx\n}\n\nexport function provideTimePickerColumn(ctx: TimePickerColumnContext): void {\n provide(COLUMN_KEY, ctx)\n}\n\nexport function useTimePickerColumnContext(): TimePickerColumnContext {\n const ctx = inject(COLUMN_KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 选项必须用在 XhTimePickerColumn 内')\n return ctx\n}\n","import type { TimePickerApi, TimePickerSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectTimePicker, timePickerMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TimePickerContext {\n api: ComputedRef<TimePickerApi>\n controlRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useTimePicker(\n props: TimePickerSchema['props'],\n handlers: Pick<TimePickerSchema['props'], 'onValueChange' | 'onOpenChange'> = {},\n): TimePickerContext {\n const controlRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(timePickerMachine, () => ({ ...props, ...handlers }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点触发器算层内交互\n branches: () => [controlRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => controlRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectTimePicker(service, vueNormalize))\n return { api, controlRef, positionerRef, contentRef }\n}\n","import type {\n TimeGranularity,\n TimeHourCycle,\n TimePickerColumnUnit,\n TimePickerSchema,\n TimeSegmentType,\n} from '@xihan-ui/headless'\nimport type { Placement } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h } from 'vue'\nimport {\n provideTimePicker,\n provideTimePickerColumn,\n useTimePickerColumnContext,\n useTimePickerContext,\n} from './context'\nimport { useTimePicker } from './use-time-picker'\n\ntype TimePickerProps = TimePickerSchema['props']\n\nexport const XhTimePickerRoot = defineComponent({\n name: 'XhTimePickerRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String, default: undefined },\n max: { type: String, default: undefined },\n locale: { type: String, default: undefined },\n hourCycle: { type: Number as PropType<TimeHourCycle>, default: undefined },\n granularity: { type: String as PropType<TimeGranularity>, default: undefined },\n step: { type: Number, default: undefined },\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<TimePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<TimePickerProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<TimePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<TimePickerProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: TimePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: TimePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useTimePicker(props as TimePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n })\n provideTimePicker(ctx)\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n empty: ctx.api.value.empty,\n outOfRange: ctx.api.value.outOfRange,\n segments: ctx.api.value.segments,\n columns: ctx.api.value.columns,\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTimePickerLabel = defineComponent({\n name: 'XhTimePickerLabel',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n // 仍用原生 label 保持表单语义,点标题聚焦第一段由连接层的 click 接管\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerControl = defineComponent({\n name: 'XhTimePickerControl',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerInput = defineComponent({\n name: 'XhTimePickerInput',\n props: {\n // 段的身份由作者声明\n segment: { type: String as PropType<TimeSegmentType>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n // 有插槽用插槽,否则显示该段的文字,空段为占位串\n return () => h(\n 'span',\n ctx.api.value.getInputProps({ segment: props.segment }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getSegmentText({ segment: props.segment }),\n )\n },\n})\n\nexport const XhTimePickerTrigger = defineComponent({\n name: 'XhTimePickerTrigger',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerClearTrigger = defineComponent({\n name: 'XhTimePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerPositioner = defineComponent({\n name: 'XhTimePickerPositioner',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerContent = defineComponent({\n name: 'XhTimePickerContent',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerColumn = defineComponent({\n name: 'XhTimePickerColumn',\n props: {\n unit: { type: String as PropType<TimePickerColumnUnit>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const unit = computed(() => props.unit)\n // 下传单位,供列内选项取到自己归哪一列\n provideTimePickerColumn({ unit })\n return () => h(\n 'div',\n ctx.api.value.getColumnProps({ unit: props.unit }) as Record<string, unknown>,\n slots.default?.({ options: ctx.api.value.columns.find(c => c.unit === props.unit)?.options ?? [] }),\n )\n },\n})\n\nexport const XhTimePickerOption = defineComponent({\n name: 'XhTimePickerOption',\n props: {\n /** 两位补零的显示串('09' / '30'),与段上的文字同一套写法。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const { unit } = useTimePickerColumnContext()\n // 有插槽用插槽,否则显示格子自己的值\n return () => h(\n 'div',\n ctx.api.value.getOptionProps({ unit: unit.value, value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? props.value,\n )\n },\n})\n\nexport const XhTimePickerHiddenInput = defineComponent({\n name: 'XhTimePickerHiddenInput',\n setup() {\n const ctx = useTimePickerContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n","import type { TimeLocale, TimeProps, TimeType, TimeValue } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectTime } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { slotPaints } from '../../runtime/slot-content'\n\n/**\n * 渲染成 `<time datetime>`:文本给人看,datetime 给机器读,两者取自同一个墙钟。\n *\n * 默认插槽里写了东西就用作者的文本,datetime 仍由组件算——这正是拿它包一段\n * 自己排版好的时间说法的用法。插槽为空时铺组件格式化出来的文本。\n */\nexport const XhTime = defineComponent({\n name: 'XhTime',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n value: { type: [String, Number, Date] as PropType<TimeValue>, default: undefined },\n type: { type: String as PropType<TimeType>, default: undefined },\n format: { type: String, default: undefined },\n locale: { type: String as PropType<TimeLocale>, default: undefined },\n now: { type: [String, Number, Date] as PropType<TimeValue>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectTime({\n value: props.value,\n type: props.type,\n format: props.format,\n locale: props.locale,\n now: props.now,\n } satisfies TimeProps, vueNormalize))\n\n return () => {\n const content = slots.default?.()\n return h(\n 'time',\n api.value.getRootProps() as Record<string, unknown>,\n // 插槽里只剩注释或空白时不算写过东西,那种情况仍铺组件的文本\n slotPaints(content) ? content : api.value.text,\n )\n }\n },\n})\n","import type { TimelineApi, TimelineItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface TimelineContext {\n api: ComputedRef<TimelineApi>\n}\n\nconst KEY: InjectionKey<TimelineContext> = Symbol('xh-timeline')\n/** 条目的语气下传给圆点,用 getter 以跟随 tone 变更。 */\nconst ITEM_KEY: InjectionKey<() => TimelineItemProps> = Symbol('xh-timeline-item')\n\nexport function provideTimeline(ctx: TimelineContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimelineContext(): TimelineContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Timeline 部件必须用在 XhTimelineRoot 内')\n return ctx\n}\n\nexport function provideTimelineItem(item: () => TimelineItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useTimelineItem(): () => TimelineItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Timeline 圆点必须用在 XhTimelineItem 内')\n return item\n}\n","import type { TimelinePlacement, TimelineProps } from '@xihan-ui/headless'\nimport type { Orientation, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectTimeline } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideTimeline, provideTimelineItem, useTimelineContext, useTimelineItem } from './context'\n\n/** 根渲染为 ol:事件本来就有先后,列表标记由皮肤抹掉、列表语义由 role 兜住。 */\nexport const XhTimelineRoot = defineComponent({\n name: 'XhTimelineRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n orientation: { type: String as PropType<Orientation>, default: undefined },\n placement: { type: String as PropType<TimelinePlacement>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectTimeline(props as TimelineProps, vueNormalize))\n provideTimeline({ api })\n return () => h('ol', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 一条事件。tone 只在这一条内生效,下传给它自己的圆点。 */\nexport const XhTimelineItem = defineComponent({\n name: 'XhTimelineItem',\n props: {\n tone: { type: String as PropType<Tone>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useTimelineContext()\n provideTimelineItem(() => ({ tone: props.tone }))\n return () => h('li', ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineIndicator = defineComponent({\n name: 'XhTimelineIndicator',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n const item = useTimelineItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineConnector = defineComponent({\n name: 'XhTimelineConnector',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('span', ctx.api.value.getConnectorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineContent = defineComponent({\n name: 'XhTimelineContent',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineTitle = defineComponent({\n name: 'XhTimelineTitle',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineDescription = defineComponent({\n name: 'XhTimelineDescription',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 渲染为 time:机读时间由作者写 datetime,属性原样透传到这个节点上。 */\nexport const XhTimelineTime = defineComponent({\n name: 'XhTimelineTime',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('time', ctx.api.value.getTimeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { ToastContext } from './use-toast'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToastContext> = Symbol('xh-toast')\n\nexport function provideToast(ctx: ToastContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToastContext(): ToastContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Toast 部件必须用在 XhToastRoot 内')\n return ctx\n}\n","import type { InjectionKey } from 'vue'\nimport type { ToasterContext } from './use-toaster'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToasterContext> = Symbol('xh-toaster')\n\nexport function provideToaster(ctx: ToasterContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToasterContext(): ToasterContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Toaster 部件必须用在 XhToasterRoot 内')\n return ctx\n}\n\n/** 注入队列上下文,不在队列内时返回 null 而非抛错。 */\nexport function useToasterContextOptional(): ToasterContext | null {\n return inject(KEY, null)\n}\n","import type { ToastApi, ToastSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectToast, toastMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { useToasterContextOptional } from '../toaster/context'\n\nexport interface ToastContext {\n api: ComputedRef<ToastApi>\n}\n\nexport function useToast(\n props: ToastSchema['props'],\n onStatusChange?: ToastSchema['props']['onStatusChange'],\n onAction?: ToastSchema['props']['onAction'],\n): ToastContext {\n // 退场后由适配器回队列删记录;外层无队列时注入为 null\n const toaster = useToasterContextOptional()\n const notifyStatus: ToastSchema['props']['onStatusChange'] = (details) => {\n onStatusChange?.(details)\n if (details.status === 'unmounted')\n toaster?.dismiss(details.id)\n }\n const service = useMachine(toastMachine, () => ({ ...props, onStatusChange: notifyStatus, onAction }))\n const api = computed(() => connectToast(service, vueNormalize))\n return { api }\n}\n","import type { ToastSchema, ToastTranslations, ToastType } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideToast, useToastContext } from './context'\nimport { useToast } from './use-toast'\n\ntype ToastProps = ToastSchema['props']\n\nexport const XhToastRoot = defineComponent({\n name: 'XhToastRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n // 队列身份,不是 DOM id;不给则回落到实例的 scope id\n id: { type: String, default: undefined },\n title: { type: String, default: undefined },\n description: { type: String, default: undefined },\n type: { type: String as PropType<ToastType>, default: undefined },\n duration: { type: Number, default: undefined },\n removeDelay: { type: Number, default: undefined },\n closable: { type: Boolean, default: undefined },\n pauseOnPageIdle: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<Partial<ToastTranslations>>, default: undefined },\n },\n // status-change 携带 { id, status },action 携带 { id }\n emits: {\n 'status-change': (_details: PayloadOf<ToastProps, 'onStatusChange'>) => true,\n 'action': (_details: PayloadOf<ToastProps, 'onAction'>) => true,\n },\n setup(props, { slots, emit }) {\n const notifyStatus: ToastProps['onStatusChange'] = (details) => {\n emit('status-change', details)\n }\n const notifyAction: ToastProps['onAction'] = (details) => {\n emit('action', details)\n }\n const ctx = useToast(props as ToastProps, notifyStatus, notifyAction)\n provideToast(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n id: ctx.api.value.id,\n status: ctx.api.value.status,\n type: ctx.api.value.type,\n paused: ctx.api.value.paused,\n remaining: ctx.api.value.remaining,\n dismiss: ctx.api.value.dismiss,\n pause: ctx.api.value.pause,\n resume: ctx.api.value.resume,\n }))\n },\n})\n\nexport const XhToastTitle = defineComponent({\n name: 'XhToastTitle',\n setup(_, { slots }) {\n const ctx = useToastContext()\n // 渲染为 div 而非标题标签;无插槽内容时用 title prop 兜底\n return () => h(\n 'div',\n ctx.api.value.getTitleProps() as Record<string, unknown>,\n slots.default ? slots.default() : ctx.api.value.title,\n )\n },\n})\n\nexport const XhToastDescription = defineComponent({\n name: 'XhToastDescription',\n setup(_, { slots }) {\n const ctx = useToastContext()\n return () => h(\n 'div',\n ctx.api.value.getDescriptionProps() as Record<string, unknown>,\n slots.default ? slots.default() : ctx.api.value.description,\n )\n },\n})\n\nexport const XhToastActionTrigger = defineComponent({\n name: 'XhToastActionTrigger',\n setup(_, { slots }) {\n const ctx = useToastContext()\n // 原生 <button>,激活行为交给平台\n return () => h('button', ctx.api.value.getActionTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhToastCloseTrigger = defineComponent({\n name: 'XhToastCloseTrigger',\n setup(_, { slots }) {\n const ctx = useToastContext()\n return () => h('button', ctx.api.value.getCloseTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { ToasterApi, ToasterSchema, ToastOptions } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectToaster, toasterMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ToasterContext {\n api: ComputedRef<ToasterApi>\n /** 入队并返回 id;同 id 已存在则就地改写,位置不动。 */\n create: (options?: ToastOptions) => string\n update: (id: string, options: Partial<ToastOptions>) => void\n dismiss: (id: string) => void\n dismissAll: () => void\n}\n\nexport function useToaster(\n props: ToasterSchema['props'],\n onToastsChange?: ToasterSchema['props']['onToastsChange'],\n): ToasterContext {\n const service = useMachine(toasterMachine, () => ({ ...props, onToastsChange }))\n const api = computed(() => connectToaster(service, vueNormalize))\n // 四个命令在顶层摊平,函数身份稳定,可解构后随时调用且不读取队列\n return {\n api,\n create: options => api.value.create(options),\n update: (id, options) => api.value.update(id, options),\n dismiss: id => api.value.dismiss(id),\n dismissAll: () => api.value.dismissAll(),\n }\n}\n","import type { ToasterSchema, ToasterTranslations, ToastPlacement, ToastRecord } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, Fragment, h } from 'vue'\nimport { provideToaster, useToasterContext } from './context'\nimport { useToaster } from './use-toaster'\n\ntype ToasterProps = ToasterSchema['props']\n\nexport const XhToasterRoot = defineComponent({\n name: 'XhToasterRoot',\n // 缺省值由 connect 决定,这里一律 default: undefined\n props: {\n toasts: { type: Array as PropType<ToastRecord[]>, default: undefined },\n defaultToasts: { type: Array as PropType<ToastRecord[]>, default: undefined },\n placement: { type: String as PropType<ToastPlacement>, default: undefined },\n max: { type: Number, default: undefined },\n gap: { type: Number, default: undefined },\n duration: { type: Number, default: undefined },\n removeDelay: { type: Number, default: undefined },\n pauseOnPageIdle: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<Partial<ToasterTranslations>>, default: undefined },\n },\n // toasts-change 携带 { toasts },update:toasts 携带裸队列以支持 v-model:toasts\n emits: {\n 'toasts-change': (_details: PayloadOf<ToasterProps, 'onToastsChange'>) => true,\n 'update:toasts': (_toasts: PayloadOf<ToasterProps, 'onToastsChange'>['toasts']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: ToasterProps['onToastsChange'] = (details) => {\n emit('toasts-change', details)\n emit('update:toasts', details.toasts)\n }\n const ctx = useToaster(props as ToasterProps, notify)\n provideToaster(ctx)\n // 根节点是地标容器,插槽作用域里一并暴露队列与增删改命令\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n toasts: ctx.api.value.visibleToasts,\n placements: ctx.api.value.placements,\n count: ctx.api.value.count,\n getToastsByPlacement: ctx.api.value.getToastsByPlacement,\n create: ctx.create,\n update: ctx.update,\n dismiss: ctx.dismiss,\n dismissAll: ctx.dismissAll,\n }))\n },\n})\n\nexport const XhToasterGroup = defineComponent({\n name: 'XhToasterGroup',\n props: {\n // 不写就用 toaster 的 placement;写了就只收这个位置上的条目\n placement: { type: String as PropType<ToastPlacement>, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useToasterContext()\n return () => {\n const api = ctx.api.value\n const groupProps = api.getGroupProps({ placement: props.placement }) as Record<string, unknown>\n // 落位从 group 自己的产出里读回,不在这边重算缺省\n const placement = groupProps['data-placement'] as ToastPlacement\n const list = api.getToastsByPlacement(placement)\n // 每条通知按队列身份 id 给 key,避免节点被就地复用\n return h(\n 'div',\n groupProps,\n slots.default ? list.map(toast => h(Fragment, { key: toast.id }, slots.default!({ toast }))) : undefined,\n )\n }\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { ToggleGroupContext } from './use-toggle-group'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToggleGroupContext> = Symbol('xh-toggle-group')\n\nexport function provideToggleGroup(ctx: ToggleGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToggleGroupContext(): ToggleGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ToggleGroup 部件必须用在 XhToggleGroupRoot 内')\n return ctx\n}\n","import type { ToggleGroupApi, ToggleGroupSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectToggleGroup, toggleGroupMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ToggleGroupContext {\n api: ComputedRef<ToggleGroupApi>\n /** 机器实例,供条目上报 DOM 侧的事实(卸载带走了焦点)。 */\n service: Service<ToggleGroupSchema>\n}\n\n// 不建 scope:connect 不派生任何 id\nexport function useToggleGroup(\n props: ToggleGroupSchema['props'],\n onValueChange?: ToggleGroupSchema['props']['onValueChange'],\n): ToggleGroupContext {\n // onValueChange 由组件外壳(emit)或组合式调用方提供,随 props 一并喂给机器\n const service = useMachine(toggleGroupMachine, () => ({ ...props, onValueChange }))\n const api = computed(() => connectToggleGroup(service, vueNormalize))\n return { api, service }\n}\n","import type { ToggleGroupNode, ToggleGroupNodeMeta, ToggleGroupSchema, ToggleGroupValue } from '@xihan-ui/headless'\nimport type { Direction, Orientation } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideToggleGroup, useToggleGroupContext } from './context'\nimport { useToggleGroup } from './use-toggle-group'\n\ntype ToggleGroupProps = ToggleGroupSchema['props']\n\nexport const XhToggleGroupRoot = defineComponent({\n name: 'XhToggleGroupRoot',\n // 全部 default: undefined,缺省值由 connect 决定\n props: {\n collection: { type: Array as PropType<ToggleGroupNode[]>, default: undefined },\n value: { type: [String, Array] as PropType<ToggleGroupValue>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<ToggleGroupValue>, default: undefined },\n multiple: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n disallowEmpty: { type: Boolean, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n loop: { type: Boolean, default: undefined },\n rovingFocus: { type: Boolean, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸值;裸值形态跟随 multiple,单选为字符串、多选为数组\n emits: {\n 'value-change': (_details: PayloadOf<ToggleGroupProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<ToggleGroupProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: ToggleGroupProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useToggleGroup(props as ToggleGroupProps, notify)\n provideToggleGroup(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default()\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.item)\n : [],\n )\n },\n})\n\nexport const XhToggleGroupItem = defineComponent({\n name: 'XhToggleGroupItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useToggleGroupContext()\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报整组失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'GROUP.BLUR' })\n })\n // 用原生 button,激活交给平台\n return () => h(\n 'button',\n { ...ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 条目底下没有文本部件,文字直接落在条目里。\n */\nfunction renderDefaultTree(\n collection: readonly ToggleGroupNodeMeta[],\n itemSlot?: (node: ToggleGroupNodeMeta) => VNode[],\n): VNode[] {\n return collection.map(node => h(\n XhToggleGroupItem,\n { key: node.value, value: node.value },\n () => itemSlot?.(node) ?? node.label,\n ))\n}\n","import type { ToggleApi, ToggleSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectToggle, toggleMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ToggleContext {\n api: ComputedRef<ToggleApi>\n}\n\nexport function useToggle(\n props: ToggleSchema['props'],\n onPressedChange?: ToggleSchema['props']['onPressedChange'],\n): ToggleContext {\n // onPressedChange 由外壳(emit)或组合式调用方提供,随 props 一并喂给机器\n const service = useMachine(toggleMachine, () => ({ ...props, onPressedChange }))\n const api = computed(() => connectToggle(service, vueNormalize))\n return { api }\n}\n","import type { ToggleSchema } from '@xihan-ui/headless'\nimport type { ActionVariant, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { useToggle } from './use-toggle'\n\ntype ToggleProps = ToggleSchema['props']\n\nexport const XhToggle = defineComponent({\n name: 'XhToggle',\n props: {\n pressed: { type: Boolean, default: undefined },\n defaultPressed: Boolean,\n disabled: Boolean,\n variant: String as PropType<ActionVariant>,\n tone: String as PropType<Tone>,\n size: String as PropType<Size>,\n },\n // pressed-change 携带 { pressed };update:pressed 携带裸布尔,支持 v-model:pressed\n emits: {\n 'pressed-change': (_details: PayloadOf<ToggleProps, 'onPressedChange'>) => true,\n 'update:pressed': (_pressed: PayloadOf<ToggleProps, 'onPressedChange'>['pressed']) => true,\n },\n setup(props, { emit, slots }) {\n const notify: ToggleProps['onPressedChange'] = (details) => {\n emit('pressed-change', details)\n emit('update:pressed', details.pressed)\n }\n const { api } = useToggle(props as ToggleProps, notify)\n return () => h('button', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { ToolbarContext } from './use-toolbar'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToolbarContext> = Symbol('xh-toolbar')\n\nexport function provideToolbar(ctx: ToolbarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToolbarContext(): ToolbarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Toolbar 部件必须用在 XhToolbarRoot 内')\n return ctx\n}\n","import type { ToolbarApi, ToolbarSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectToolbar, toolbarMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ToolbarContext {\n api: ComputedRef<ToolbarApi>\n /** 机器实例,供条目上报 DOM 侧的事实(卸载带走了焦点)。 */\n service: Service<ToolbarSchema>\n}\n\n// 不建 scope:connect 不派生任何 id\nexport function useToolbar(props: ToolbarSchema['props']): ToolbarContext {\n const service = useMachine(toolbarMachine, () => ({ ...props }))\n const api = computed(() => connectToolbar(service, vueNormalize))\n return { api, service }\n}\n","import type { ToolbarSchema } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideToolbar, useToolbarContext } from './context'\nimport { useToolbar } from './use-toolbar'\n\ntype ToolbarProps = ToolbarSchema['props']\n\nexport const XhToolbarRoot = defineComponent({\n name: 'XhToolbarRoot',\n // 全部 default: undefined,缺省值由 connect 决定\n props: {\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n loop: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // 无对外事件,条目的点击与切换由条目自行派发\n setup(props, { slots }) {\n const ctx = useToolbar(props as ToolbarProps)\n provideToolbar(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n focusedValue: ctx.api.value.focusedValue,\n orientation: ctx.api.value.orientation,\n disabled: ctx.api.value.disabled,\n }))\n },\n})\n\nexport const XhToolbarGroup = defineComponent({\n name: 'XhToolbarGroup',\n setup(_, { slots }) {\n const ctx = useToolbarContext()\n return () => h('div', ctx.api.value.getGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhToolbarSeparator = defineComponent({\n name: 'XhToolbarSeparator',\n setup() {\n const ctx = useToolbarContext()\n // 分隔线不渲染内容\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\nexport const XhToolbarItem = defineComponent({\n name: 'XhToolbarItem',\n props: {\n value: { type: String, required: true },\n disabled: Boolean,\n /** 条目渲染成哪个标签,默认 button;不自动补 type=\"button\",表单内需自行声明。 */\n as: { type: String, default: 'button' },\n },\n setup(props, { slots }) {\n const ctx = useToolbarContext()\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报工具条失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'TOOLBAR.BLUR' })\n })\n return () => h(\n props.as,\n { ...ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { TooltipContext } from './use-tooltip'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TooltipContext> = Symbol('xh-tooltip')\n\nexport function provideTooltip(ctx: TooltipContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTooltipContext(): TooltipContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tooltip 部件必须用在 XhTooltipRoot 内')\n return ctx\n}\n","import type { TooltipApi, TooltipSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectTooltip, tooltipMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TooltipContext {\n service: Service<TooltipSchema>\n api: ComputedRef<TooltipApi>\n /** 定位锚点。 */\n triggerRef: Ref<HTMLElement | null>\n /** 被定位的浮层。 */\n positionerRef: Ref<HTMLElement | null>\n}\n\nexport function useTooltip(\n props: TooltipSchema['props'],\n onOpenChange?: TooltipSchema['props']['onOpenChange'],\n): TooltipContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // onOpenChange 由组件外壳(emit)或组合式调用方提供,随 props 一并喂给机器\n const service = useMachine(tooltipMachine, () => ({ ...props, onOpenChange }), scope)\n\n // 定位引擎经 refs 注入,展开态由机器的 effect 驱动;无 DOM 环境(SSR)不建引擎\n if (typeof document !== 'undefined')\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n\n const api = computed(() => connectTooltip(service, vueNormalize))\n return { service, api, triggerRef, positionerRef }\n}\n","import type { TooltipSchema } from '@xihan-ui/headless'\nimport type { Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideTooltip, useTooltipContext } from './context'\nimport { useTooltip } from './use-tooltip'\n\ntype TooltipProps = TooltipSchema['props']\n\nexport const XhTooltipRoot = defineComponent({\n name: 'XhTooltipRoot',\n props: {\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n openDelay: { type: Number, default: undefined },\n closeDelay: { type: Number, default: undefined },\n disabled: Boolean,\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // open-change 携带 { open };update:open 携带裸布尔,支持 v-model:open\n emits: {\n 'open-change': (_details: PayloadOf<TooltipProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<TooltipProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: TooltipProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useTooltip(props as TooltipProps, notify)\n provideTooltip(ctx)\n return () => slots.default?.({ open: ctx.api.value.open, setOpen: ctx.api.value.setOpen })\n },\n})\n\nexport const XhTooltipTrigger = defineComponent({\n name: 'XhTooltipTrigger',\n setup(_, { slots }) {\n const ctx = useTooltipContext()\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTooltipPositioner = defineComponent({\n name: 'XhTooltipPositioner',\n setup(_, { slots }) {\n const ctx = useTooltipContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTooltipContent = defineComponent({\n name: 'XhTooltipContent',\n setup(_, { slots }) {\n const ctx = useTooltipContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTooltipArrow = defineComponent({\n name: 'XhTooltipArrow',\n setup(_, { slots }) {\n const ctx = useTooltipContext()\n return () => h('div', ctx.api.value.getArrowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { InjectionKey } from 'vue'\nimport type { TourContext } from './use-tour'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TourContext> = Symbol('xh-tour')\n\nexport function provideTour(ctx: TourContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTourContext(): TourContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tour 部件必须用在 XhTourRoot 内')\n return ctx\n}\n","import type { TourApi, TourSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectTour, tourMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TourContext {\n service: Service<TourSchema>\n api: ComputedRef<TourApi>\n backdropRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useTour(\n props: TourSchema['props'],\n notify: Pick<TourSchema['props'], 'onOpenChange' | 'onStepChange' | 'onComplete' | 'onSkip'> = {},\n): TourContext {\n const backdropRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // 四个回调由组件外壳(emit)或组合式调用方提供,随 props 一并喂给机器\n const service = useMachine(tourMachine, () => ({ ...props, ...notify }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n // 引导是模态的:遮罩盖住整页,焦点陷在浮层里\n kind: 'modal',\n node: () => contentRef.value,\n branches: () => [],\n isModal: () => true,\n setModal: () => {},\n // 遮罩登记为可点关闭的表面,是否真关由 closeOnInteractOutside 决定\n surfaces: () => [backdropRef.value].filter(Boolean) as Element[],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点由机器按每步 target 自行解析\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectTour(service, vueNormalize))\n return { service, api, backdropRef, positionerRef, contentRef }\n}\n","import type { TourSchema, TourStep } from '@xihan-ui/headless'\nimport type { Placement } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { provideTour, useTourContext } from './context'\nimport { useTour } from './use-tour'\n\ntype TourProps = TourSchema['props']\n\nexport const XhTourRoot = defineComponent({\n name: 'XhTourRoot',\n // 全部 default: undefined —— 缺省值的唯一事实源在 machine 与 connect\n props: {\n steps: { type: Array as PropType<TourStep[]>, default: undefined },\n step: { type: Number, default: undefined },\n defaultStep: { type: Number, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: { type: Boolean, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n closeOnEscape: { type: Boolean, default: undefined },\n closeOnInteractOutside: { type: Boolean, default: undefined },\n showBackdrop: { type: Boolean, default: undefined },\n spotlightPadding: { type: Number, default: undefined },\n translations: { type: Object as PropType<TourProps['translations']>, default: undefined },\n },\n // open-change / step-change 携带对象;update:* 携带裸值,支持 v-model:open 与 v-model:step\n emits: {\n 'open-change': (_details: PayloadOf<TourProps, 'onOpenChange'>) => true,\n 'update:open': (_open: PayloadOf<TourProps, 'onOpenChange'>['open']) => true,\n 'step-change': (_details: PayloadOf<TourProps, 'onStepChange'>) => true,\n 'update:step': (_step: PayloadOf<TourProps, 'onStepChange'>['step']) => true,\n 'complete': (_details: PayloadOf<TourProps, 'onComplete'>) => true,\n 'skip': (_details: PayloadOf<TourProps, 'onSkip'>) => true,\n },\n setup(props, { slots, emit }) {\n const ctx = useTour(props as TourProps, {\n onOpenChange: (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n },\n onStepChange: (details) => {\n emit('step-change', details)\n emit('update:step', details.step)\n },\n onComplete: details => emit('complete', details),\n onSkip: details => emit('skip', details),\n })\n provideTour(ctx)\n // 经插槽暴露状态与走步、放弃等命令,供浮层外的按钮使用\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n step: ctx.api.value.step,\n count: ctx.api.value.count,\n currentStep: ctx.api.value.currentStep,\n firstStep: ctx.api.value.firstStep,\n lastStep: ctx.api.value.lastStep,\n progressText: ctx.api.value.progressText,\n setOpen: ctx.api.value.setOpen,\n setStep: ctx.api.value.setStep,\n goToNextStep: ctx.api.value.goToNextStep,\n goToPrevStep: ctx.api.value.goToPrevStep,\n skip: ctx.api.value.skip,\n }))\n },\n})\n\nexport const XhTourBackdrop = defineComponent({\n name: 'XhTourBackdrop',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h('div', {\n ...ctx.api.value.getBackdropProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.backdropRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTourSpotlight = defineComponent({\n name: 'XhTourSpotlight',\n setup() {\n const ctx = useTourContext()\n return () => h('div', ctx.api.value.getSpotlightProps() as Record<string, unknown>)\n },\n})\n\nexport const XhTourPositioner = defineComponent({\n name: 'XhTourPositioner',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTourContent = defineComponent({\n name: 'XhTourContent',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\n// 标题与描述的文字取自步骤声明,有插槽则用插槽\nexport const XhTourTitle = defineComponent({\n name: 'XhTourTitle',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h(\n 'h2',\n ctx.api.value.getTitleProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.currentStep?.title,\n )\n },\n})\n\nexport const XhTourDescription = defineComponent({\n name: 'XhTourDescription',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h(\n 'p',\n ctx.api.value.getDescriptionProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.currentStep?.description,\n )\n },\n})\n\nexport const XhTourProgressText = defineComponent({\n name: 'XhTourProgressText',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h(\n 'span',\n ctx.api.value.getProgressTextProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.progressText,\n )\n },\n})\n\nexport const XhTourPrevTrigger = defineComponent({\n name: 'XhTourPrevTrigger',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h('button', ctx.api.value.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTourNextTrigger = defineComponent({\n name: 'XhTourNextTrigger',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h('button', ctx.api.value.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTourSkipTrigger = defineComponent({\n name: 'XhTourSkipTrigger',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h('button', ctx.api.value.getSkipTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTourCloseTrigger = defineComponent({\n name: 'XhTourCloseTrigger',\n setup(_, { slots }) {\n const ctx = useTourContext()\n return () => h('button', ctx.api.value.getCloseTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTourArrow = defineComponent({\n name: 'XhTourArrow',\n setup() {\n const ctx = useTourContext()\n return () => h('div', ctx.api.value.getArrowProps() as Record<string, unknown>)\n },\n})\n","import type { TransferItemProps, TransferPanelProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TransferContext } from './use-transfer'\nimport { inject, provide } from 'vue'\n\n/** 面板自报的身份,供面板内两侧共用的角色节点区分自己归哪一侧。 */\nexport interface TransferPanelContext {\n panel: ComputedRef<TransferPanelProps>\n}\n\n/** 条目自报的值与所属面板,供 item-text / item-checkbox 复用同一份声明。 */\nexport interface TransferItemContext {\n item: ComputedRef<TransferItemProps>\n}\n\nconst KEY: InjectionKey<TransferContext> = Symbol('xh-transfer')\nconst PANEL_KEY: InjectionKey<TransferPanelContext> = Symbol('xh-transfer-panel')\nconst ITEM_KEY: InjectionKey<TransferItemContext> = Symbol('xh-transfer-item')\n\nexport function provideTransfer(ctx: TransferContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTransferContext(): TransferContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Transfer 部件必须用在 XhTransferRoot 内')\n return ctx\n}\n\nexport function provideTransferPanel(ctx: TransferPanelContext): void {\n provide(PANEL_KEY, ctx)\n}\n\nexport function useTransferPanelContext(): TransferPanelContext {\n const ctx = inject(PANEL_KEY, null)\n if (!ctx)\n throw new Error('[xh] Transfer 面板子部件必须用在 XhTransferSourcePanel / XhTransferTargetPanel 内')\n return ctx\n}\n\nexport function provideTransferItem(ctx: TransferItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useTransferItemContext(): TransferItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Transfer 条目子部件必须用在 XhTransferItem 内')\n return ctx\n}\n","import type { TransferApi, TransferSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectTransfer, transferMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TransferContext {\n api: ComputedRef<TransferApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如条目卸载带走了焦点)。 */\n service: Service<TransferSchema>\n}\n\nexport function useTransfer(\n props: TransferSchema['props'],\n handlers: Pick<TransferSchema['props'], 'onValueChange' | 'onSelectedChange'> = {},\n): TransferContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // 两侧集合全由 items + value + 搜索串推导,适配器不必注入 refs\n const service = useMachine(transferMachine, () => ({ ...props, ...handlers }), scope)\n const api = computed(() => connectTransfer(service, vueNormalize))\n return { api, service }\n}\n","import type {\n TransferFilter,\n TransferItem,\n TransferItemProps,\n TransferPanelProps,\n TransferSchema,\n TransferSide,\n} from '@xihan-ui/headless'\nimport type { Direction } from '@xihan-ui/kernel'\nimport type { PropType, Slots, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport {\n provideTransfer,\n provideTransferItem,\n provideTransferPanel,\n useTransferContext,\n useTransferItemContext,\n useTransferPanelContext,\n} from './context'\nimport { useTransfer } from './use-transfer'\n\ntype TransferProps = TransferSchema['props']\n\nexport const XhTransferRoot = defineComponent({\n name: 'XhTransferRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n items: { type: Array as PropType<TransferItem[]>, default: undefined },\n value: { type: Array as PropType<string[]>, default: undefined },\n defaultValue: { type: Array as PropType<string[]>, default: undefined },\n selected: { type: Array as PropType<string[]>, default: undefined },\n defaultSelected: { type: Array as PropType<string[]>, default: undefined },\n searchable: Boolean,\n filter: { type: Function as PropType<TransferFilter>, default: undefined },\n disabled: Boolean,\n oneWay: Boolean,\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸集合以支持 v-model\n emits: {\n 'value-change': (_details: PayloadOf<TransferProps, 'onValueChange'>) => true,\n 'selected-change': (_details: PayloadOf<TransferProps, 'onSelectedChange'>) => true,\n 'update:value': (_value: PayloadOf<TransferProps, 'onValueChange'>['value']) => true,\n 'update:selected': (_selected: PayloadOf<TransferProps, 'onSelectedChange'>['selected']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: TransferProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifySelected: TransferProps['onSelectedChange'] = (details) => {\n emit('selected-change', details)\n emit('update:selected', details.selected)\n }\n const ctx = useTransfer(props as TransferProps, {\n onValueChange: notifyValue,\n onSelectedChange: notifySelected,\n })\n provideTransfer(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n value: ctx.api.value.value,\n selected: ctx.api.value.selected,\n sourceItems: ctx.api.value.visibleItems('source'),\n targetItems: ctx.api.value.visibleItems('target'),\n canMove: ctx.api.value.canMove,\n checkState: ctx.api.value.checkState,\n isChecked: ctx.api.value.isChecked,\n setValue: ctx.api.value.setValue,\n setSelected: ctx.api.value.setSelected,\n toggle: ctx.api.value.toggle,\n toggleAll: ctx.api.value.toggleAll,\n move: ctx.api.value.move,\n }))\n },\n})\n\n/** 生成源/目标面板共用的 setup,两侧只在 side 上不同 */\nfunction panelSetup(side: TransferSide): (props: unknown, ctx: { slots: Slots }) => () => VNode {\n return (_: unknown, { slots }: { slots: Slots }) => {\n const ctx = useTransferContext()\n const panel = computed<TransferPanelProps>(() => ({ side }))\n provideTransferPanel({ panel })\n return () => h('div', ctx.api.value.getPanelProps(panel.value) as Record<string, unknown>, slots.default?.({\n side,\n items: ctx.api.value.visibleItems(side),\n checkState: ctx.api.value.checkState(side),\n query: ctx.api.value.query(side),\n }))\n }\n}\n\nexport const XhTransferSourcePanel = defineComponent({\n name: 'XhTransferSourcePanel',\n setup: panelSetup('source'),\n})\n\nexport const XhTransferTargetPanel = defineComponent({\n name: 'XhTransferTargetPanel',\n setup: panelSetup('target'),\n})\n\nexport const XhTransferPanelHeader = defineComponent({\n name: 'XhTransferPanelHeader',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('div', ctx.api.value.getPanelHeaderProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferPanelTitle = defineComponent({\n name: 'XhTransferPanelTitle',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('span', ctx.api.value.getPanelTitleProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferPanelCount = defineComponent({\n name: 'XhTransferPanelCount',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 只带 data-checked-count / data-count 属性,文案由作者或皮肤层提供\n return () => h('span', ctx.api.value.getPanelCountProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferSearch = defineComponent({\n name: 'XhTransferSearch',\n setup() {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('input', ctx.api.value.getSearchProps(panel.value) as Record<string, unknown>)\n },\n})\n\nexport const XhTransferList = defineComponent({\n name: 'XhTransferList',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n return () => h('div', ctx.api.value.getListProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferSelectAllTrigger = defineComponent({\n name: 'XhTransferSelectAllTrigger',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 用原生 button,激活与禁用交给平台\n return () => h('button', ctx.api.value.getSelectAllTriggerProps(panel.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferItem = defineComponent({\n name: 'XhTransferItem',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTransferContext()\n const { panel } = useTransferPanelContext()\n // 条目只报值与所属面板,禁用与标签回 items 里查;同一 value 的两侧节点靠 side 分身份\n const item = computed<TransferItemProps>(() => ({ value: props.value, side: panel.value.side }))\n provideTransferItem({ item })\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报列表失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', side: panel.value.side, value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'LIST.BLUR', side: panel.value.side })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTransferItemText = defineComponent({\n name: 'XhTransferItemText',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { item } = useTransferItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferItemCheckbox = defineComponent({\n name: 'XhTransferItemCheckbox',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n const { item } = useTransferItemContext()\n return () => h('span', ctx.api.value.getItemCheckboxProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferToTargetTrigger = defineComponent({\n name: 'XhTransferToTargetTrigger',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n // 用原生 button,激活与禁用交给平台\n return () => h('button', ctx.api.value.getToTargetTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTransferToSourceTrigger = defineComponent({\n name: 'XhTransferToSourceTrigger',\n setup(_, { slots }) {\n const ctx = useTransferContext()\n return () => h('button', ctx.api.value.getToSourceTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { TreeSelectNodeProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TreeSelectContext } from './use-tree-select'\nimport { inject, provide } from 'vue'\n\n/** 节点自报的值,供 item / branch 的子部件复用同一份声明;层级、禁用与标签回 collection 里查。 */\nexport interface TreeSelectNodeContext {\n node: ComputedRef<TreeSelectNodeProps>\n}\n\nconst KEY: InjectionKey<TreeSelectContext> = Symbol('xh-tree-select')\nconst NODE_KEY: InjectionKey<TreeSelectNodeContext> = Symbol('xh-tree-select-node')\n\nexport function provideTreeSelect(ctx: TreeSelectContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTreeSelectContext(): TreeSelectContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TreeSelect 部件必须用在 XhTreeSelectRoot 内')\n return ctx\n}\n\nexport function provideTreeSelectNode(ctx: TreeSelectNodeContext): void {\n provide(NODE_KEY, ctx)\n}\n\nexport function useTreeSelectNodeContext(): TreeSelectNodeContext {\n const ctx = inject(NODE_KEY, null)\n if (!ctx)\n throw new Error('[xh] TreeSelect 节点子部件必须用在 XhTreeSelectItem 或 XhTreeSelectBranch 内')\n return ctx\n}\n","import type { TreeSelectApi, TreeSelectSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectTreeSelect, treeSelectMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TreeSelectContext {\n /** 机器实例,供部件上报 DOM 侧的事实(如节点卸载带走了焦点)。 */\n service: Service<TreeSelectSchema>\n api: ComputedRef<TreeSelectApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useTreeSelect(\n props: TreeSelectSchema['props'],\n handlers: Pick<TreeSelectSchema['props'], 'onValueChange' | 'onExpandedChange' | 'onOpenChange'> = {},\n): TreeSelectContext {\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // 三个回调由组件外壳(emit)或组合式调用方提供,随 props 一并喂给机器\n const service = useMachine(treeSelectMachine, () => ({ ...props, ...handlers }), scope)\n\n if (typeof document !== 'undefined') {\n const config: RuntimeConfig = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // trigger 记为本层分支,点它算层内交互,开合由 trigger 自己切换\n branches: () => [triggerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取 trigger\n service.refs.set('config', config)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectTreeSelect(service, vueNormalize))\n return { service, api, triggerRef, positionerRef, contentRef }\n}\n","import type { TreeNode, TreeSelectNodeProps, TreeSelectSchema } from '@xihan-ui/headless'\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, Ref } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { TreeSelectContext } from './use-tree-select'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideTreeSelect, provideTreeSelectNode, useTreeSelectContext, useTreeSelectNodeContext } from './context'\nimport { useTreeSelect } from './use-tree-select'\n\ntype TreeSelectProps = TreeSelectSchema['props']\n\n/** 本节点持有焦点时,value 变更重报焦点节点,卸载时上报焦点丢失 */\nfunction reportNodeFocus(ctx: TreeSelectContext, el: Ref<HTMLElement | null>, value: () => string): void {\n watch(value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'NODE.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'NODE.LOST' })\n })\n}\n\nexport const XhTreeSelectRoot = defineComponent({\n name: 'XhTreeSelectRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n collection: { type: Array as PropType<TreeNode[]>, default: undefined },\n value: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n expandedValue: { type: Array as PropType<string[]>, default: undefined },\n defaultExpandedValue: { type: Array as PropType<string[]>, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n multiple: Boolean,\n disabled: Boolean,\n readOnly: Boolean,\n invalid: Boolean,\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n placeholder: { type: String, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n name: { type: String, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值;选中值恒为数组,单选时长度 ≤ 1\n emits: {\n 'value-change': (_details: PayloadOf<TreeSelectProps, 'onValueChange'>) => true,\n 'expanded-change': (_details: PayloadOf<TreeSelectProps, 'onExpandedChange'>) => true,\n 'open-change': (_details: PayloadOf<TreeSelectProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<TreeSelectProps, 'onValueChange'>['value']) => true,\n 'update:expandedValue': (_value: PayloadOf<TreeSelectProps, 'onExpandedChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<TreeSelectProps, 'onOpenChange'>['open']) => true,\n },\n setup(props, { slots, emit }) {\n const notifyValue: TreeSelectProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyExpanded: TreeSelectProps['onExpandedChange'] = (details) => {\n emit('expanded-change', details)\n emit('update:expandedValue', details.value)\n }\n const notifyOpen: TreeSelectProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useTreeSelect(props as TreeSelectProps, {\n onValueChange: notifyValue,\n onExpandedChange: notifyExpanded,\n onOpenChange: notifyOpen,\n })\n provideTreeSelect(ctx)\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n expandedValue: ctx.api.value.expandedValue,\n visibleNodes: ctx.api.value.visibleNodes,\n focusedValue: ctx.api.value.focusedValue,\n displayText: ctx.api.value.displayText,\n canClear: ctx.api.value.canClear,\n isSelected: ctx.api.value.isSelected,\n isExpanded: ctx.api.value.isExpanded,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n setExpandedValue: ctx.api.value.setExpandedValue,\n expand: ctx.api.value.expand,\n collapse: ctx.api.value.collapse,\n select: ctx.api.value.select,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTreeSelectLabel = defineComponent({\n name: 'XhTreeSelectLabel',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectTrigger = defineComponent({\n name: 'XhTreeSelectTrigger',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n return () => h('button', {\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTreeSelectValueText = defineComponent({\n name: 'XhTreeSelectValueText',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n // 有插槽用插槽,否则显示选中项文本或 placeholder\n return () => h(\n 'span',\n ctx.api.value.getValueTextProps() as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.displayText,\n )\n },\n})\n\nexport const XhTreeSelectIndicator = defineComponent({\n name: 'XhTreeSelectIndicator',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n return () => h('span', ctx.api.value.getIndicatorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectClearTrigger = defineComponent({\n name: 'XhTreeSelectClearTrigger',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectPositioner = defineComponent({\n name: 'XhTreeSelectPositioner',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n return () => h('div', {\n ...ctx.api.value.getPositionerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTreeSelectContent = defineComponent({\n name: 'XhTreeSelectContent',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n // 收起时只隐藏不卸载\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTreeSelectTree = defineComponent({\n name: 'XhTreeSelectTree',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n return () => h('div', ctx.api.value.getTreeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectItem = defineComponent({\n name: 'XhTreeSelectItem',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTreeSelectContext()\n const node = computed<TreeSelectNodeProps>(() => ({ value: props.value }))\n provideTreeSelectNode({ node })\n const el = ref<HTMLElement | null>(null)\n reportNodeFocus(ctx, el, () => props.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(node.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTreeSelectItemText = defineComponent({\n name: 'XhTreeSelectItemText',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n const { node } = useTreeSelectNodeContext()\n return () => h('span', ctx.api.value.getItemTextProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectItemIndicator = defineComponent({\n name: 'XhTreeSelectItemIndicator',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n const { node } = useTreeSelectNodeContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectBranch = defineComponent({\n name: 'XhTreeSelectBranch',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTreeSelectContext()\n const node = computed<TreeSelectNodeProps>(() => ({ value: props.value }))\n // 分支自身也是 treeitem,供其子部件读取;子节点各自再 provide 一层\n provideTreeSelectNode({ node })\n const el = ref<HTMLElement | null>(null)\n reportNodeFocus(ctx, el, () => props.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getBranchProps(node.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTreeSelectBranchControl = defineComponent({\n name: 'XhTreeSelectBranchControl',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n const { node } = useTreeSelectNodeContext()\n return () => h('div', ctx.api.value.getBranchControlProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectBranchTrigger = defineComponent({\n name: 'XhTreeSelectBranchTrigger',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n const { node } = useTreeSelectNodeContext()\n return () => h('span', ctx.api.value.getBranchTriggerProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectBranchIndicator = defineComponent({\n name: 'XhTreeSelectBranchIndicator',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n const { node } = useTreeSelectNodeContext()\n return () => h('span', ctx.api.value.getBranchIndicatorProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectBranchText = defineComponent({\n name: 'XhTreeSelectBranchText',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n const { node } = useTreeSelectNodeContext()\n return () => h('span', ctx.api.value.getBranchTextProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectBranchContent = defineComponent({\n name: 'XhTreeSelectBranchContent',\n setup(_, { slots }) {\n const ctx = useTreeSelectContext()\n const { node } = useTreeSelectNodeContext()\n // 收起只加 hidden,不卸载子树节点\n return () => h('div', ctx.api.value.getBranchContentProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeSelectHiddenInput = defineComponent({\n name: 'XhTreeSelectHiddenInput',\n setup() {\n const ctx = useTreeSelectContext()\n // 表单出口,不写这个部件即不参与表单提交\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n","import type { TreeNodeProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TreeContext } from './use-tree'\nimport { inject, provide } from 'vue'\n\n/** 节点自报的值,供 item / branch 的子部件复用同一份声明;层级、禁用与标签回 collection 里查。 */\nexport interface TreeNodeContext {\n node: ComputedRef<TreeNodeProps>\n}\n\nconst KEY: InjectionKey<TreeContext> = Symbol('xh-tree')\nconst NODE_KEY: InjectionKey<TreeNodeContext> = Symbol('xh-tree-node')\n\nexport function provideTree(ctx: TreeContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTreeContext(): TreeContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tree 部件必须用在 XhTreeRoot 内')\n return ctx\n}\n\nexport function provideTreeNode(ctx: TreeNodeContext): void {\n provide(NODE_KEY, ctx)\n}\n\nexport function useTreeNodeContext(): TreeNodeContext {\n const ctx = inject(NODE_KEY, null)\n if (!ctx)\n throw new Error('[xh] Tree 节点子部件必须用在 XhTreeItem 或 XhTreeBranch 内')\n return ctx\n}\n","import type { TreeApi, TreeSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectTree, treeMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TreeContext {\n api: ComputedRef<TreeApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如节点卸载带走了焦点)。 */\n service: Service<TreeSchema>\n}\n\nexport function useTree(\n props: TreeSchema['props'],\n onExpandedChange?: TreeSchema['props']['onExpandedChange'],\n onSelectionChange?: TreeSchema['props']['onSelectionChange'],\n): TreeContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // 连打检索缓冲存在机器的 refs 里,适配器不必注入 refs\n const service = useMachine(treeMachine, () => ({ ...props, onExpandedChange, onSelectionChange }), scope)\n const api = computed(() => connectTree(service, vueNormalize))\n return { api, service }\n}\n","import type { TreeNode, TreeNodeProps, TreeSchema, TreeSelectionMode } from '@xihan-ui/headless'\nimport type { Direction } from '@xihan-ui/kernel'\nimport type { PropType, Ref } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { TreeContext } from './use-tree'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideTree, provideTreeNode, useTreeContext, useTreeNodeContext } from './context'\nimport { useTree } from './use-tree'\n\ntype TreeProps = TreeSchema['props']\n\n/** 本节点持有焦点时,value 变更重报焦点节点,卸载时上报整树失焦 */\nfunction reportNodeFocus(ctx: TreeContext, el: Ref<HTMLElement | null>, value: () => string): void {\n watch(value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'NODE.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'TREE.BLUR' })\n })\n}\n\nexport const XhTreeRoot = defineComponent({\n name: 'XhTreeRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n collection: { type: Array as PropType<TreeNode[]>, default: undefined },\n expandedValue: { type: Array as PropType<string[]>, default: undefined },\n defaultExpandedValue: { type: Array as PropType<string[]>, default: undefined },\n selectedValue: { type: Array as PropType<string[]>, default: undefined },\n defaultSelectedValue: { type: Array as PropType<string[]>, default: undefined },\n selectionMode: { type: String as PropType<TreeSelectionMode>, default: undefined },\n expandOnClick: { type: Boolean, default: undefined },\n disabled: Boolean,\n loop: { type: Boolean, default: undefined },\n typeahead: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n },\n // *-change 携带 { value },update:* 携带裸集合;回传值恒为数组,单选时长度 ≤ 1\n emits: {\n 'expanded-change': (_details: PayloadOf<TreeProps, 'onExpandedChange'>) => true,\n 'update:expandedValue': (_value: PayloadOf<TreeProps, 'onExpandedChange'>['value']) => true,\n 'selection-change': (_details: PayloadOf<TreeProps, 'onSelectionChange'>) => true,\n 'update:selectedValue': (_value: PayloadOf<TreeProps, 'onSelectionChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const onExpandedChange: TreeProps['onExpandedChange'] = (details) => {\n emit('expanded-change', details)\n emit('update:expandedValue', details.value)\n }\n const onSelectionChange: TreeProps['onSelectionChange'] = (details) => {\n emit('selection-change', details)\n emit('update:selectedValue', details.value)\n }\n const ctx = useTree(props as TreeProps, onExpandedChange, onSelectionChange)\n provideTree(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n visibleNodes: ctx.api.value.visibleNodes,\n expandedValue: ctx.api.value.expandedValue,\n selectedValue: ctx.api.value.selectedValue,\n focusedValue: ctx.api.value.focusedValue,\n isExpanded: ctx.api.value.isExpanded,\n isSelected: ctx.api.value.isSelected,\n expand: ctx.api.value.expand,\n collapse: ctx.api.value.collapse,\n select: ctx.api.value.select,\n }))\n },\n})\n\nexport const XhTreeLabel = defineComponent({\n name: 'XhTreeLabel',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeTree = defineComponent({\n name: 'XhTreeTree',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n return () => h('div', ctx.api.value.getTreeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeItem = defineComponent({\n name: 'XhTreeItem',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTreeContext()\n const node = computed<TreeNodeProps>(() => ({ value: props.value }))\n provideTreeNode({ node })\n const el = ref<HTMLElement | null>(null)\n reportNodeFocus(ctx, el, () => props.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(node.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTreeItemText = defineComponent({\n name: 'XhTreeItemText',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getItemTextProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeItemIndicator = defineComponent({\n name: 'XhTreeItemIndicator',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranch = defineComponent({\n name: 'XhTreeBranch',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTreeContext()\n const node = computed<TreeNodeProps>(() => ({ value: props.value }))\n // 分支自身也是 treeitem,供其子部件读取;子节点各自再 provide 一层\n provideTreeNode({ node })\n const el = ref<HTMLElement | null>(null)\n reportNodeFocus(ctx, el, () => props.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getBranchProps(node.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTreeBranchControl = defineComponent({\n name: 'XhTreeBranchControl',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('div', ctx.api.value.getBranchControlProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchTrigger = defineComponent({\n name: 'XhTreeBranchTrigger',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchTriggerProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchIndicator = defineComponent({\n name: 'XhTreeBranchIndicator',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchIndicatorProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchText = defineComponent({\n name: 'XhTreeBranchText',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchTextProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchContent = defineComponent({\n name: 'XhTreeBranchContent',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n // 收起只加 hidden,不卸载子树节点\n return () => h('div', ctx.api.value.getBranchContentProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { TypographyApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface TypographyContext {\n api: ComputedRef<TypographyApi>\n}\n\nconst KEY: InjectionKey<TypographyContext> = Symbol('xh-typography')\n\nexport function provideTypography(ctx: TypographyContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTypographyContext(): TypographyContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Typography 部件必须用在 XhTypographyRoot 内')\n return ctx\n}\n","import type { TypographyLevel, TypographyProps, TypographyVariant } from '@xihan-ui/headless'\nimport type { Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType } from 'vue'\nimport { connectTypography } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideTypography, useTypographyContext } from './context'\n\n/** 正文块容器,管段间距与最大行宽;缺省值由 connect 给出,这里一律 default: undefined */\nexport const XhTypographyRoot = defineComponent({\n name: 'XhTypographyRoot',\n props: {\n size: { type: String as PropType<Size>, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectTypography(props as TypographyProps, vueNormalize))\n provideTypography({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 标题:level 只换字号档位,不决定标签。\n * as 决定渲染成哪个标签,默认 p;要进文档大纲就写 as=\"h2\"。\n */\nexport const XhTypographyHeading = defineComponent({\n name: 'XhTypographyHeading',\n props: {\n level: { type: [Number, String] as PropType<TypographyLevel | string>, default: undefined },\n as: { type: String, default: 'p' },\n },\n setup(props, { slots }) {\n const ctx = useTypographyContext()\n return () => h(\n props.as,\n ctx.api.value.getHeadingProps({ level: props.level }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTypographyParagraph = defineComponent({\n name: 'XhTypographyParagraph',\n setup(_, { slots }) {\n const ctx = useTypographyContext()\n return () => h('p', ctx.api.value.getParagraphProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 行内文字:variant 换形态,tone 换语气色。\n * as 决定渲染成哪个标签,默认 span;要 code / strong 的原生语义就自己写上去。\n */\nexport const XhTypographyText = defineComponent({\n name: 'XhTypographyText',\n props: {\n tone: { type: String as PropType<Tone>, default: undefined },\n variant: { type: String as PropType<TypographyVariant>, default: undefined },\n as: { type: String, default: 'span' },\n },\n setup(props, { slots }) {\n const ctx = useTypographyContext()\n return () => h(\n props.as,\n ctx.api.value.getTextProps({ tone: props.tone, variant: props.variant }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n// href、target、rel 由作者写,这里只给身份\nexport const XhTypographyLink = defineComponent({\n name: 'XhTypographyLink',\n setup(_, { slots }) {\n const ctx = useTypographyContext()\n return () => h('a', ctx.api.value.getLinkProps() as Record<string, unknown>, slots.default?.())\n },\n})\n","import type { VirtualizerApi, VirtualizerSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectVirtualizer, virtualizerMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface VirtualizerContext {\n service: Service<VirtualizerSchema>\n api: ComputedRef<VirtualizerApi>\n /** 真正 overflow:auto 的那层:内核的尺寸观察与滚动监听都挂在它身上。 */\n viewportRef: Ref<HTMLElement | null>\n /** 撑出总长的那层,条目的定位上下文。 */\n contentRef: Ref<HTMLElement | null>\n}\n\nexport function useVirtualizer(\n props: VirtualizerSchema['props'],\n onChange?: VirtualizerSchema['props']['onChange'],\n): VirtualizerContext {\n const viewportRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // onChange 由组件外壳(emit)或组合式调用方提供,随 props 一并喂给机器;props 在 getter 内展开以跟随运行期变更\n const service = useMachine(virtualizerMachine, () => ({ ...props, onChange }), scope)\n\n // 传 getter 而非节点,ref 在挂载后才有值;内核建立、尺寸观察与滚动监听都在机器的效应里进行\n service.refs.set('getViewportEl', () => viewportRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n\n const api = computed(() => connectVirtualizer(service, vueNormalize))\n return { service, api, viewportRef, contentRef }\n}\n","import type { InjectionKey } from 'vue'\nimport type { VirtualizerContext } from './use-virtualizer'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<VirtualizerContext> = Symbol('xh-virtualizer')\n\nexport function provideVirtualizer(ctx: VirtualizerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useVirtualizerContext(): VirtualizerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Virtualizer 部件必须用在 XhVirtualizerRoot 内')\n return ctx\n}\n","import type { VirtualizerChangeDetails, VirtualizerSchema } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, onMounted, onUpdated, ref } from 'vue'\nimport { provideVirtualizer, useVirtualizerContext } from './context'\nimport { useVirtualizer } from './use-virtualizer'\n\ntype VirtualizerProps = VirtualizerSchema['props']\n\nexport const XhVirtualizerRoot = defineComponent({\n name: 'XhVirtualizerRoot',\n // 有机器与 connect 兜底的 prop 一律 default: undefined\n props: {\n count: { type: Number, default: undefined },\n estimateSize: { type: [Number, Function] as PropType<number | ((index: number) => number)>, default: undefined },\n overscan: { type: Number, default: undefined },\n horizontal: { type: Boolean, default: undefined },\n gap: { type: Number, default: undefined },\n getItemKey: { type: Function as PropType<(index: number) => string | number>, default: undefined },\n scrollMargin: { type: Number, default: undefined },\n paddingStart: { type: Number, default: undefined },\n paddingEnd: { type: Number, default: undefined },\n lanes: { type: Number, default: undefined },\n },\n // change 携带当前该渲染哪些条目的详情\n emits: {\n change: (_details: PayloadOf<VirtualizerProps, 'onChange'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: VirtualizerProps['onChange'] = (details: VirtualizerChangeDetails) => emit('change', details)\n const ctx = useVirtualizer(props as VirtualizerProps, notify)\n provideVirtualizer(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n virtualItems: ctx.api.value.virtualItems,\n totalSize: ctx.api.value.totalSize,\n startIndex: ctx.api.value.startIndex,\n endIndex: ctx.api.value.endIndex,\n scrolling: ctx.api.value.scrolling,\n lanes: ctx.api.value.lanes,\n scrollToIndex: ctx.api.value.scrollToIndex,\n measureElement: ctx.api.value.measureElement,\n measure: ctx.api.value.measure,\n }))\n },\n})\n\nexport const XhVirtualizerViewport = defineComponent({\n name: 'XhVirtualizerViewport',\n setup(_, { slots }) {\n const ctx = useVirtualizerContext()\n // 视口节点经 ref 交给机器,由内核在效应里接上\n return () => h('div', {\n ...ctx.api.value.getViewportProps() as Record<string, unknown>,\n ref: ctx.viewportRef,\n }, slots.default?.())\n },\n})\n\nexport const XhVirtualizerContent = defineComponent({\n name: 'XhVirtualizerContent',\n setup(_, { slots }) {\n const ctx = useVirtualizerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n ref: ctx.contentRef,\n }, slots.default?.())\n },\n})\n\nexport const XhVirtualizerItem = defineComponent({\n name: 'XhVirtualizerItem',\n props: {\n /** 这个节点是第几条。 */\n value: { type: [Number, String] as PropType<number | string>, required: true },\n /** 是否把真实尺寸回喂给内核;不开时条目尺寸按 estimateSize 算。 */\n measure: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useVirtualizerContext()\n const el = ref<HTMLElement | null>(null)\n\n // 在挂载与更新后量尺寸,此时节点已落进 DOM\n const report = (): void => {\n if (props.measure)\n ctx.api.value.measureElement(el.value)\n }\n onMounted(report)\n onUpdated(report)\n\n return () => h('div', {\n ...ctx.api.value.getItemProps({ index: Number(props.value) }) as Record<string, unknown>,\n ref: el,\n }, slots.default?.())\n },\n})\n","import type { WatermarkApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface WatermarkContext {\n api: ComputedRef<WatermarkApi>\n}\n\nconst KEY: InjectionKey<WatermarkContext> = Symbol('xh-watermark')\n\nexport function provideWatermark(ctx: WatermarkContext): void {\n provide(KEY, ctx)\n}\n\nexport function useWatermarkContext(): WatermarkContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Watermark 部件必须用在 XhWatermarkRoot 内')\n return ctx\n}\n","import type { WatermarkProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectWatermark } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideWatermark, useWatermarkContext } from './context'\n\n/**\n * 盖水印的那块地。图样由 connect 算成一张 SVG,写成根上的内联 CSS 变量,\n * 由皮肤铺成一层盖在内容之上的伪元素——印子因此不进无障碍树、不吃点击、也选不中。\n */\nexport const XhWatermarkRoot = defineComponent({\n name: 'XhWatermarkRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n text: { type: [String, Array] as PropType<string | string[]>, default: undefined },\n rotate: { type: Number, default: undefined },\n gap: { type: Number, default: undefined },\n fontSize: { type: Number, default: undefined },\n opacity: { type: Number, default: undefined },\n },\n setup(props, { slots }) {\n const api = computed(() => connectWatermark(props as WatermarkProps, vueNormalize))\n provideWatermark({ api })\n return () => h('div', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 被盖住的那段内容。 */\nexport const XhWatermarkContent = defineComponent({\n name: 'XhWatermarkContent',\n setup(_, { slots }) {\n const ctx = useWatermarkContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;;;AAKA,MAAMA,SAAsC,OAAO,cAAc;;AAEjE,MAAMC,cAAmD,OAAO,mBAAmB;AAEnF,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;AAEA,SAAgB,qBAAqB,MAAsC;CACzE,QAAQC,aAAU,IAAI;AACxB;AAEA,SAAgB,mBAA6C;CAC3D,MAAM,OAAO,OAAOA,aAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;;;AC1BA,SAAS,kBAAkB,KAAqB;CAC9C,IAAI,IAAI,SAAS,KAAK,IAAI,WAAW,IAAI,KAAK,IAAI,MAAO,OAAO,IAAI,MAAO,KACzE,OAAO,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY;CAChD,OAAO;AACT;AAGA,MAAa,eAAe,kBAAkB,UAAU;CACtD,MAAM,MAA+B,CAAC;CACtC,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG,IAAI,kBAAkB,GAAG,KAAK,MAAM;CAC1E,OAAO;AACT,CAAC;;;ACVD,SAAgB,mBAAoC;CAClD,OAAO;EACL,MAAM;EACN,UAAU,OAAO,WAAW;EAE5B,KAAQ,QAA0C;GAChD,MAAM,KAAK,OAAO;GAClB,MAAM,UAAW,GAAG,gBAAgB,GAAG;GACvC,MAAM,KAAK,GAAG,WAAW,OAAO;GAChC,MAAM,QAAQ,WAAc,OAAO;GACnC,IAAI,WAAW;GACf,IAAI,UAAU;GAEd,MAAM,qBAA8B,OAAO,CAAC,CAAC,UAAU,KAAA;GACvD,MAAM,aAAiB,aAAa,IAAK,OAAO,CAAC,CAAC,QAAc,MAAM;GAEtE,OAAO;IACL;IACA,KAAK;IACL,IAAI,MAAM;KACR,MAAM,OAAO,KAAK;KAClB,MAAM,QAAQ,OAAO,SAAS,aAAc,KAAqB,IAAI,IAAI;KACzE,IAAI,CAAC,aAAa,GAChB,MAAM,QAAQ;KAChB,IAAI,CAAC,GAAG,OAAO,IAAI,GACjB,OAAO,CAAC,CAAC,WAAW,OAAO,IAAI;IACnC;IACA,SAAS;KACP,WAAW,KAAK;IAClB;IACA,UAAU;KACR,MAAM,MAAM,KAAK;KACjB,IAAI,CAAC,GAAG,KAAK,QAAQ,GAAG;MACtB,WAAW;MACX,WAAW;KACb;KACA,OAAO;IACT;GACF;EACF;EAEA,MAAM,MAAa,IAAI;GACrB,MAAM,MAAM,IAAI,EAAE,OAAO,MAAM,CAAC;EAClC;EACA,MAAM,IAAI;GAER,eAAoB,SAAS,EAAE,CAAC;EAClC;EACA,QAAQ,IAAI;GACV,IAAI,mBAAmB,GACrB,UAAU,EAAE;QAEZ,GAAG;EACP;EACA,UAAU,IAAI;GACZ,IAAI,mBAAmB,GACrB,gBAAgB,EAAE;EACtB;CACF;AACF;;;ACxDA,SAAgB,WACd,SACA,YAAmD,CAAC,GACpD,OACY;CACZ,OAAO,cAAc,SAAS;EAE5B,cAAc,EAAE,GAAG,QAAQ,SAAS,EAAE;EACtC,SAAS,iBAAiB;EAC1B;CACF,CAAC;AACH;;;ACfA,IAAI,cAAc;AAGlB,SAAgB,uBAAoC;CAClD,MAAM,OAAO,MAAM,KAAK,OAAO,EAAE;CACjC,OAAO;EACL,eAAe;EACf,SAAS,WAAW,SAAS,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG;CACnE;AACF;;;ACCA,SAAgB,aACd,OACA,eACkB;CAGlB,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO;CAAc,IADhE,YAAY,MADZ,qBACsB,CACkD,CAAC;CAEvF,OAAO,EAAE,KADG,eAAe,iBAAiB,SAAS,YAAY,CACtD,EAAE;AACf;;;ACZA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO;EACL,YAAY;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EAC3E,OAAO;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC/D,cAAc;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACtE,UAAU;EACV,aAAa;EACb,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EAEzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAAyD;EAC1E,iBAAiB,WAAgE;CACnF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA2C,YAAY;GAC3D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,aAAa,OAAyB,MAAM;EACxD,iBAAiB,GAAG;EACpB,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,GAC3B,MAAM,UACF,MAAM,QAAQ,IACd,MAAM,aACJC,qBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,OAAO,IACzD,CAAC,CACT;CACF;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,oBAAoB;EAChC,4BAA4B;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EAC7E,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,CAAC,GAC3E,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,MAAM,OAAO,iBAAiB;EAC9B,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,eAAe,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,MAAM,OAAO,iBAAiB;EAC9B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,MAAM,OAAO,iBAAiB;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC3G;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,MAAM,OAAO,iBAAiB;EAC9B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;;;;;;AAOD,SAASA,qBACP,YACA,aACS;CACT,OAAO,WAAW,KAAI,SAAQ,EAAE,iBAAiB;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,CAC7F,EAAE,mBAAmB,YAAY,CAC/B,EAAE,oBAAoB,YAAY,CAChC,EAAE,QAAQ,MAAM,KAAK,KAAK,GAC1B,EAAE,oBAAoB,CACxB,CAAC,CACH,CAAC,GACD,EAAE,oBAAoB,YAAY,cAAc,IAAI,KAAK,KAAK,WAAW,EAAE,CAC7E,CAAC,CAAC;AACJ;;;ACrHA,MAAMC,SAAkC,OAAO,UAAU;AAEzD,SAAgB,aAAa,KAAyB;CACpD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;;;;ACCA,SAAgB,SACd,OACA,eACA,oBAA8C,MAChC;CACd,MAAM,UAAU,IAAwB,IAAI;CAC5C,MAAM,UAAU,WAAW,qBAAqB;EAAE,GAAG;EAAO;CAAc,EAAE;CAE5E,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CACjD,QAAQ,KAAK,IAAI,eAAe,WAAW;CAG3C,OAAO;EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD;EAAG;EAAS;CAAQ;AACjC;;;;ACnBA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EACL,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;;EAEjD,QAAQ;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;CAC7E;CACA,OAAO,EACL,iBAAiB,aAAqD,KACxE;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAsC,YAAW,KAAK,gBAAgB,OAAO;EAEnF,MAAM,MAAM,SAAS,OAAqB,cAAc,MAAM,UAAU,IAAI;EAC5E,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,aAAa;GAC9B,MAAM,OAAgB;IAAE,IAAI,QAAQ,QAAQ;GAAkB;EAChE,GAAG,MAAM,UAAU,EAAE,SAAS,IAAI,IAAI,MAAM,QAAQ,CAAC,CAAC;CACxD;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;ACrCD,MAAMC,SAAkC,OAAO,UAAU;AAEzD,SAAgB,aAAa,KAAyB;CACpD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;;;ACFA,SAAgB,SACd,OACA,cACc;CAGd,MAAM,UAAU,WAAW,qBAAqB;EAAE,GAAG;EAAO;CAAa,IAD3D,YAAY,MADZ,qBACsB,CAC6C,CAAC;CAElF,OAAO,EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD,EAAE;AACf;;;ACZA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,OAAO;EACL,MAAM;EAEN,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACjD,cAAc;CAChB;CAEA,OAAO;EACL,gBAAgB,aAAoD;EACpE,gBAAgB,UAAyD;CAC3E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAsC,YAAY;GACtD,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,SAAS,OAAqB,MAAM;EAChD,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;;;AC9DD,MAAMC,SAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;;;;ACCA,SAAgB,UACd,OACA,eACA,oBAA8C,MAC/B;CACf,MAAM,UAAU,IAAwB,IAAI;CAC5C,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;CAAc,EAAE;CAG7E,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CACjD,QAAQ,KAAK,IAAI,eAAe,WAAW;CAG3C,OAAO;EAAE,KADG,eAAe,cAAc,SAAS,YAAY,CACnD;EAAG;EAAS;CAAQ;AACjC;;;;ACnBA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACrE,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EAC5E,SAAS;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EAC1E,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,QAAQ;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC5C,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,cAAc;GAAE,MAAM;GAAiD,SAAS,KAAA;EAAU;EAC1F,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;;EAE3D,eAAe;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;CACpF;CAEA,OAAO;EACL,iBAAiB,aAAsD;EACvE,iBAAiB,WAA6D;CAChF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAwC,YAAY;GACxD,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EAEA,MAAM,MAAM,UAAU,OAAsB,cAAc,MAAM,iBAAiB,IAAI;EACrF,cAAc,GAAG;EACjB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAGD,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,MAAM;GACnB,GAAG,IAAI,IAAI,MAAM,aAAa;GAC9B,MAAM,OAAgB;IAAE,IAAI,QAAQ,QAAQ;GAAkB;EAChE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;;AAGD,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EACX,KACA,IAAI,IAAI,MAAM,aAAa,EAAE,OAAO,MAAM,MAAM,CAAC,GACjD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,kBAAkB,CAA4B;CACnF;AACF,CAAC;;;AChFD,MAAMC,SAAwC,OAAO,iBAAiB;AAEtE,SAAgB,mBAAmB,KAA+B;CAChE,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;;;ACXA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,mBAAmB,OAA2B,YAAY,CAAC;EACtF,mBAAmB,EAAE,IAAI,CAAC;EAC1B,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAElC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;;;ACzBD,MAAMC,SAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;;;ACFA,SAAgB,UACd,OACA,gBACe;CACf,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;CAAe,EAAE;CAE9E,OAAO;EAAE;EAAS,KADN,eAAe,cAAc,SAAS,YAAY,CAC1C;CAAE;AACxB;;;ACVA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO;EAEL,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO,EACL,kBAAkB,aAAuD,KAC3E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAwC,YAAW,KAAK,iBAAiB,OAAO;EACtF,MAAM,MAAM,UAAU,OAAsB,MAAM;EAClD,cAAc,GAAG;EACjB,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,iBAAiB;EAC7B,MAAM,UAAU,IAA6B,IAAI;EAGjD,YAAY,IAAI,IAAI,MAAM,SAAS,WAAW;GAC5C,MAAM,EAAE,YAAY;GACpB,IAAI,WAAW,aAAa,QAAQ,UAAU,MAAM,WAClD;GACF,MAAM,MAAM,QAAQ;GACpB,IAAI,KAAK,YAAY,IAAI,eAAe,KAAK,IAAI,eAAe,IAAI,KAClE,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;EACvC,GAAG;GAAE,WAAW;GAAM,OAAO;EAAO,CAAC;EAGrC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,cAAc;GAC/B,KAAK;EACP,CAAC;CACH;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAE7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;;;ACzDD,MAAMC,SAAoC,OAAO,aAAa;AAE9D,SAAgB,eAAe,KAA2B;CACxD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT;;;;ACDA,SAAgB,WACd,OACA,iBACA,oBAA8C,MAC9B;CAChB,MAAM,UAAU,WAAW,uBAAuB;EAAE,GAAG;EAAO;CAAgB,EAAE;CAEhF,QAAQ,KAAK,IAAI,eAAe,WAAW;CAG3C,OAAO;EAAE,KADG,eAAe,eAAe,SAAS,YAAY,CACpD;EAAG;CAAQ;AACxB;;;;ACdA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,kBAAkB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACrD,UAAU;GAAE,MAAM;GAAqC,SAAS,KAAA;EAAU;EAC1E,cAAc;GAAE,MAAM;GAAkD,SAAS,KAAA;EAAU;EAC3F,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;;EAE3D,QAAQ;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;CAC7E;CACA,OAAO,EACL,mBAAmB,aAAyD,KAC9E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA0C,YAAW,KAAK,kBAAkB,OAAO;EAEzF,MAAM,MAAM,WAAW,OAAuB,cAAc,MAAM,UAAU,IAAI;EAChF,eAAe,GAAG;EAClB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,EAC7F,SAAS,IAAI,IAAI,MAAM,QACzB,CAAC,CAAC;CACJ;AACF,CAAC;;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;;;ACrCD,MAAa,UAAU,gBAAgB;CACrC,MAAM;CACN,OAAO;EACL,SAAS;EACT,MAAM;EACN,MAAM;CACR;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa,EAAE,QAAQ,aAAa,OAAqB,YAAY,CAAC,CAAC,aAAa,GAA8B,MAAM,UAAU,CAAC;CACrI;AACF,CAAC;;;ACbD,MAAMC,SAAuC,OAAO,eAAe;AAEnE,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;;;ACJA,SAAgB,cAAc,OAA2C;CAEvE,OAAO,EAAE,KADG,eAAe,kBAAkB,OAAO,YAAY,CACrD,EAAE;AACf;;;;ACNA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CAEN,OAAO;EACL,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,cAAc;GAAE,MAAM;GAAqD,SAAS,KAAA;EAAU;EAC9F,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,cAAc,KAAwB;EAClD,kBAAkB,GAAG;EACrB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO,EACL,SAAS,QACX;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EACX,KACA,IAAI,IAAI,MAAM,aAAa,EAAE,SAAS,MAAM,QAAQ,CAAC,GACrD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAGD,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;AC9DD,MAAM,YAA6C,OAAO,UAAU;AAEpE,SAAS,eAAkC;CACzC,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;AAEA,MAAa,WAAW,gBAAgB;CACtC,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAmD,SAAS;EAAS;EACnF,UAAU;EACV,SAAS;EACT,SAAS;EACT,MAAM;EACN,MAAM;CACR;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,cAAc,OAAsB,YAAY,CAAC;EAC5E,QAAQ,WAAW,GAAG;EACtB,aAAa,EAAE,UAAU,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CAChG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,aAAa;EACzB,aAAa,EAAE,QAAQ,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;;;AC5DD,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,aAAa;GAAE,MAAM;GAA+C,SAAS,KAAA;EAAU;EACvF,SAAS;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACvE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EAEtB,aAAa,EACX,OACA,mBAAmB,OAA2B,YAAY,CAAC,CAAC,aAAa,GACzE,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;ACdD,MAAMC,SAAqC,OAAO,aAAa;AAC/D,MAAMC,aAA8C,OAAO,kBAAkB;AAE7E,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;AAEA,SAAgB,oBAAoB,KAAgC;CAClE,QAAQC,YAAU,GAAG;AACvB;AAEA,SAAgB,yBAA8C;CAC5D,MAAM,MAAM,OAAOA,YAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,0CAA0C;CAC5D,OAAO;AACT;;;AChBA,SAAgB,YACd,OACA,eACA,sBACiB;CACjB,MAAM,UAAU,IAAwB,IAAI;CAG5C,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO;EAAe;CAAqB,IADrF,YAAY,MADZ,qBACsB,CACuE,CAAC;CAG5G,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CAGjD,OAAO;EAAE,KADG,eAAe,gBAAgB,SAAS,YAAY,CACrD;EAAG;EAAS;CAAQ;AACjC;;;ACvBA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EAClF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EACzF,eAAe;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EACrF,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,qBAAqB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxD,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,mBAAmB;GAAE,MAAM;GAAkD,SAAS,KAAA;EAAU;EAChG,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,UAAU;EACV,UAAU;EACV,eAAe;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EACrF,YAAY;CACd;CAEA,OAAO;EACL,iBAAiB,aAAwD;EACzE,iBAAiB,WAA+D;EAChF,yBAAyB,aAA+D;EACxF,wBAAwB,kBAAoF;CAC9G;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAA+C,YAAY;GAC/D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,eAAsD,YAAY;GACtE,KAAK,wBAAwB,OAAO;GACpC,KAAK,uBAAuB,QAAQ,YAAY;EAClD;EACA,MAAM,MAAM,YAAY,OAAwB,aAAa,WAAW;EACxE,gBAAgB,GAAG;EAEnB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,cAAc,IAAI,IAAI,MAAM;GAC5B,cAAc,IAAI,IAAI,MAAM;GAC5B,OAAO,IAAI,IAAI,MAAM;GACrB,UAAU,IAAI,IAAI,MAAM;GACxB,cAAc,IAAI,IAAI,MAAM;GAC5B,WAAW,IAAI,IAAI,MAAM;GACzB,WAAW,IAAI,IAAI,MAAM;GACzB,YAAY,IAAI,IAAI,MAAM;GAC1B,eAAe,IAAI,IAAI,MAAM;GAC7B,UAAU,IAAI,IAAI,MAAM;GACxB,QAAQ,IAAI,IAAI,MAAM;GACtB,OAAO,IAAI,IAAI,MAAM;GACrB,eAAe,IAAI,IAAI,MAAM;GAC7B,eAAe,IAAI,IAAI,MAAM;EAC/B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,gBAAgB,GAC9B,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,YACrC;CACF;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa;GAA8B,KAAK,IAAI;EAAQ,GAC/E,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,QAAQ,eAAe,OAAO,MAAM,KAAK,CAAC;EAChD,aAAa,EACX,QACA,IAAI,IAAI,MAAM,gBAAgB,EAAE,OAAO,MAAM,MAAM,CAAC,GACpD,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,SAAS,MAAM,MAAM,EAAE,KAC5D;CACF;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,OAAO,gBAAmC,EAAE,OAAO,MAAM,MAAM,EAAE;EACvE,oBAAoB,EAAE,KAAK,CAAC;EAE5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,SAAS,uBAAuB;EACxC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACnH;AACF,CAAC;;;AC5KD,MAAMC,SAAiC,OAAO,SAAS;AAEvD,SAAgB,YAAY,KAAwB;CAClD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT;;;ACXA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EACL,SAAS;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACrE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,WAAW;EACX,WAAW;CACb;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,YAAY,OAAoB,YAAY,CAAC;EACxE,YAAY,EAAE,IAAI,CAAC;EACnB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;;;AClED,MAAMC,SAAqC,OAAO,aAAa;AAE/D,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;;;ACJA,SAAgB,YACd,OACA,cACiB;CACjB,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO;CAAa,EAAE;CAE9E,OAAO,EAAE,KADG,eAAe,gBAAgB,SAAS,YAAY,CACrD,EAAE;AACf;;;ACRA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,YAAY;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC/C,eAAe;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAClD,eAAe;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAClD,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAE1C,UAAU;GAAE,MAAM,CAAC,SAAS,MAAM;GAAiC,SAAS,KAAA;EAAU;EACtF,kBAAkB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACtD,SAAS;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC5C,cAAc;GAAE,MAAM;GAAmD,SAAS,KAAA;EAAU;CAC9F;CAEA,OAAO;EACL,gBAAgB,aAAuD;EACvE,gBAAgB,UAA4D;CAC9E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAyC,YAAY;GACzD,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,YAAY,OAAwB,MAAM;EACtD,gBAAgB,GAAG;EACnB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,YAAY,IAAI,IAAI,MAAM;GAC1B,YAAY,IAAI,IAAI,MAAM;GAC1B,YAAY,IAAI,IAAI,MAAM;GAC1B,gBAAgB,IAAI,IAAI,MAAM;GAC9B,eAAe,IAAI,IAAI,MAAM;GAC7B,eAAe,IAAI,IAAI,MAAM;GAC7B,aAAa,IAAI,IAAI,MAAM;GAC3B,QAAQ,IAAI,IAAI,MAAM;GACtB,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,EAAE,OAAO,OAAO,MAAM,KAAK,EAAE,CAAC,GACzD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,uBAAuB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EACX,UACA,IAAI,IAAI,MAAM,kBAAkB,EAAE,OAAO,OAAO,MAAM,KAAK,EAAE,CAAC,GAC9D,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;AC1HD,MAAMC,SAAqC,OAAO,aAAa;AAC/D,MAAMC,cAA8C,OAAO,kBAAkB;AAE7E,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;AAEA,SAAgB,oBAAoB,KAAgC;CAClE,QAAQC,aAAU,GAAG;AACvB;AAEA,SAAgB,yBAA8C;CAC5D,MAAM,MAAM,OAAOA,aAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,0CAA0C;CAC5D,OAAO;AACT;;;ACZA,SAAgB,YACd,OACA,WAA4E,CAAC,GAC5D;CACjB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CAEpF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,gBAAgB,SAAS,YAAY,CAC5C;EAAG;EAAY;EAAe;CAAW;AAC/D;;;;ACxCA,SAAS,gBACP,KACA,IACA,OACM;CACN,MAAM,QAAQ,MAAM,SAAS;EAC3B,IAAI,SAAS,MACX;EACF,MAAM,EAAE,SAAS,QAAQ;EACzB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EACF,IAAI,CAAC,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACvD;EAEF,MAAM,OAAO,IAAI,MAAM,OAAO,SAAQ,UAAS,MAAM,KAAK,CAAC,CAAC,MAAK,SAAQ,KAAK,UAAU,IAAI;EAC5F,IAAI,MACF,QAAQ,KAAK;GAAE,MAAM;GAAc,OAAO,KAAK;GAAO,OAAO;EAAK,CAAC;CACvE,CAAC;CACD,sBAAsB;EACpB,MAAM,EAAE,YAAY;EAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EAEF,IAAI,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACtD,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;CACtC,CAAC;AACH;AAEA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EAC1E,OAAO;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACpE,cAAc;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EAC3E,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,eAAe;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EACrF,gBAAgB;EAChB,UAAU;EACV,UAAU;EACV,UAAU;EACV,SAAS;EACT,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;CACjE;CAEA,OAAO;EACL,iBAAiB,aAAwD;EACzE,gBAAgB,aAAuD;EACvE,iBAAiB,WAA+D;EAChF,gBAAgB,UAA4D;CAC9E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAA+C,YAAY;GAC/D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,cAA6C,YAAY;GAC7D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,YAAY,OAAwB;GAC9C,eAAe;GACf,cAAc;EAChB,CAAC;EACD,gBAAgB,GAAG;EAEnB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GAEpB,QAAQ,IAAI,IAAI,MAAM;GACtB,SAAS,IAAI,IAAI,MAAM;GACvB,OAAO,IAAI,IAAI,MAAM;GACrB,WAAW,IAAI,IAAI,MAAM;GACzB,YAAY,IAAI,IAAI,MAAM;GAC1B,aAAa,IAAI,IAAI,MAAM;GAC3B,aAAa,IAAI,IAAI,MAAM;GAC3B,UAAU,IAAI,IAAI,MAAM;GACxB,YAAY,IAAI,IAAI,MAAM;GAC1B,UAAU,IAAI,IAAI,MAAM;GACxB,WAAW,IAAI,IAAI,MAAM;GACzB,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,eAAe,IAAI,IAAI,MAAM;GAC7B,QAAQ,IAAI,IAAI,MAAM;GACtB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EACX,QACA,IAAI,IAAI,MAAM,kBAAkB,GAChC,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,WACrC;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,eAAe,EAAE,OAAO,OAAO,MAAM,KAAK,EAAE,CAAC,GAC3D,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,OAAO,gBAAmC,EAAE,OAAO,MAAM,MAAM,EAAE;EACvE,oBAAoB,EAAE,KAAK,CAAC;EAC5B,MAAM,KAAK,IAAwB,IAAI;EACvC,gBAAgB,KAAK,UAAU,MAAM,KAAK;EAC1C,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAG,GAChF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,SAAS,uBAAuB;EACxC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,SAAS,uBAAuB;EACxC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;;;ACtOD,MAAMC,SAA0C,OAAO,mBAAmB;AAC1E,MAAMC,cAAmD,OAAO,wBAAwB;AAExF,SAAgB,qBAAqB,KAAiC;CACpE,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,0BAAgD;CAC9D,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iDAAiD;CACnE,OAAO;AACT;AAEA,SAAgB,yBAAyB,KAAqC;CAC5E,QAAQC,aAAU,GAAG;AACvB;AAEA,SAAgB,8BAAwD;CACtE,MAAM,MAAM,OAAOA,aAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,oDAAoD;CACtE,OAAO;AACT;;;AClBA,SAAgB,iBACd,OACA,eACsB;CAItB,MAAM,UAAU,WAAW,6BAA6B;EAAE,GAAG;EAAO;CAAc,IAFpE,YAAY,MADZ,qBACsB,CAEsD,CAAC;CAE3F,OAAO;EAAE,KADG,eAAe,qBAAqB,SAAS,YAAY,CAC1D;EAAG;CAAQ;AACxB;;;ACVA,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;EACL,YAAY;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;;EAE/E,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAE1C,OAAO;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC/D,cAAc;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACtE,YAAY;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACpE,UAAU;EACV,UAAU;EACV,SAAS;EACT,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;CAC3E;CAEA,OAAO;EACL,iBAAiB,aAA6D;EAC9E,iBAAiB,WAAoE;CACvF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA+C,YAAY;GAC/D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,iBAAiB,OAA6B,MAAM;EAChE,qBAAqB,GAAG;EACxB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UACjF,MAAM,QAAQ;GACZ,OAAO,IAAI,IAAI,MAAM;GACrB,cAAc,IAAI,IAAI,MAAM;GAC5B,WAAW,IAAI,IAAI,MAAM;GACzB,UAAU,IAAI,IAAI,MAAM;GACxB,aAAa,IAAI,IAAI,MAAM;EAC7B,CAAC,IACD,MAAM,aACJC,qBACE,IAAI,IAAI,MAAM,YACd,MAAM,QAAQ,MAAM,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,IAAI,OAC1D,MAAM,IACR,IACA,CAAC,CAAC;CACV;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,wBAAwB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,wBAAwB;EACpC,MAAM,OAAO,gBAAwC;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EACtG,yBAAyB,EAAE,KAAK,CAAC;EAEjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK,GAA8B,CACvF,EAAE,SAAS,IAAI,IAAI,MAAM,wBAAwB,KAAK,KAAK,CAA4B,GACvF,GAAI,MAAM,UAAU,KAAK,CAAC,CAC5B,CAAC;CACH;AACF,CAAC;AAED,MAAa,6BAA6B,gBAAgB;CACxD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,wBAAwB;EACpC,MAAM,EAAE,SAAS,4BAA4B;EAE7C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,oBAAoB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACpH;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,wBAAwB;EACpC,MAAM,EAAE,SAAS,4BAA4B;EAC7C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,wBAAwB;EAEpC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;;;;AAOD,SAASA,qBACP,YACA,OACA,UACS;CACT,OAAO,CACL,GAAI,QAAQ,CAAC,EAAE,sBAAsB,YAAY,KAAK,CAAC,IAAI,CAAC,GAC5D,GAAG,WAAW,KAAI,SAChB,EAAE,qBAAqB;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,CACnE,EAAE,0BAA0B,GAC5B,EAAE,yBAAyB,YAAY,WAAW,IAAI,KAAK,KAAK,KAAK,CACvE,CAAC,CACH,CACF;AACF;;;AC5HA,SAAgB,YACd,OACA,iBACiB;CACjB,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO;CAAgB,EAAE;CAEjF,OAAO,EAAE,KADG,eAAe,gBAAgB,SAAS,YAAY,CACrD,EAAE;AACf;;;ACTA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,OAAO;EAEL,SAAS;GAAE,MAAM,CAAC,SAAS,MAAM;GAAqC,SAAS,KAAA;EAAU;EACzF,gBAAgB;GAAE,MAAM,CAAC,SAAS,MAAM;GAAqC,SAAS,KAAA;EAAU;EAChG,UAAU;EACV,MAAM;EACN,MAAM;CACR;CAEA,OAAO;EACL,mBAAmB,aAA0D;EAC7E,mBAAmB,aAAqE;CAC1F;CACA,MAAM,OAAO,EAAE,QAAQ;EACrB,MAAM,UAA4C,YAAY;GAC5D,KAAK,kBAAkB,OAAO;GAC9B,KAAK,kBAAkB,QAAQ,OAAO;EACxC;EACA,MAAM,EAAE,QAAQ,YAAY,OAAwB,MAAM;EAC1D,aAAa,EAAE,UAAU,IAAI,MAAM,aAAa,GAA8B,CAC5E,EAAE,QAAQ,IAAI,MAAM,kBAAkB,CAA4B,CACpE,CAAC;CACH;AACF,CAAC;;;AC9BD,MAAMC,SAAsC,OAAO,cAAc;AAEjE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;;;ACJA,SAAgB,aACd,OACA,YAA8E,CAAC,GAC7D;CAClB,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO,GAAG;CAAU,EAAE;CAE/E,OAAO,EAAE,KADG,eAAe,iBAAiB,SAAS,YAAY,CACtD,EAAE;AACf;;;ACVA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO;EAEL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,SAAS;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;CAC9C;CAEA,OAAO;EACL,kBAAkB,aAA0D;EAC5E,eAAe,aAAuD;CACxE;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,MAAM,aAAa,OAAyB;GAChD,iBAAgB,YAAW,KAAK,iBAAiB,OAAO;GACxD,cAAa,YAAW,KAAK,cAAc,OAAO;EACpD,CAAC;EACD,iBAAiB,GAAG;EACpB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,QAAQ,IAAI,IAAI,MAAM;GACtB,QAAQ,IAAI,IAAI,MAAM;GACtB,OAAO,IAAI,IAAI,MAAM;GACrB,MAAM,IAAI,IAAI,MAAM;EACtB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,CAA4B;CAClF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,OAAO;;AAEL,QAAQ,QACV;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,kBAAkB,EAAE,QAAQ,MAAM,OAAO,CAAC,GACxD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;;AC5ED,MAAM,qBAAqB,kBAAkB;AAE7C,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAQ,SAAS;EAAG;EAClC,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAEzC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;;EAE9C,aAAa;GAAE,MAAM;GAA4C,SAAS,KAAA;EAAU;EACpF,yBAAyB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAC/D;CACA,MAAM,OAAO;EAEX,MAAM,MAAM,eAAe,iBAAiB;GAC1C,MAAM,MAAM;GACZ,MAAM,MAAM;GACZ,UAAU,MAAM;GAChB,aAAa,MAAM,gBAAgB,OAAO,KAAA,IAAY,MAAM,eAAe;GAC3E,yBAAyB,MAAM;EACjC,GAA4B,YAAY,CAAC;EAEzC,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,CACzE,EAAE,QAAQ,IAAI,MAAM,kBAAkB,GAA8B,IAAI,MAAM,IAAI,GAElF,EAAE,OAAO,IAAI,MAAM,YAAY,GAA8B,CAC3D,EAAE,QAAQ,IAAI,MAAM,aAAa,GAE/B,IAAI,MAAM,OAAO,WAAW,IACxB,MAAM,OACN,IAAI,MAAM,OAAO,KAAK,OAAO,UAAU,EACrC,QACA;GAAE,GAAG,IAAI,MAAM,cAAc,KAAK;GAA8B,KAAK;EAAM,GAC3E,MAAM,IACR,CAAC,CAAC,CACV,CAAC,CACH,CAAC;CACH;AACF,CAAC;;;AC5CD,MAAMC,SAAwC,OAAO,gBAAgB;AAErE,SAAgB,mBAAmB,KAA+B;CAChE,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;;;ACFA,SAAgB,eACd,OACA,cACoB;CAGpB,MAAM,UAAU,WAAW,2BAA2B;EAAE,GAAG;EAAO;CAAa,IADjE,YAAY,MADZ,qBACsB,CACmD,CAAC;CAExF,OAAO,EAAE,KADG,eAAe,mBAAmB,SAAS,YAAY,CACxD,EAAE;AACf;;;ACZA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,UAAU;EACV,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAA0D;EAC1E,gBAAgB,UAA+D;CACjF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA4C,YAAY;GAC5D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,eAAe,OAA2B,MAAM;EAC5D,mBAAmB,GAAG;EACtB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;ACtCD,MAAMC,SAAwC,OAAO,iBAAiB;AACtE,MAAM,cAAuD,OAAO,yBAAyB;AAE7F,SAAgB,mBAAmB,KAA+B;CAChE,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;AAEA,SAAgB,0BAA0B,KAAsC;CAC9E,QAAQ,aAAa,GAAG;AAC1B;AAEA,SAAgB,+BAA0D;CACxE,MAAM,MAAM,OAAO,aAAa,IAAI;CACpC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2DAA2D;CAC7E,OAAO;AACT;;;ACRA,SAAgB,eACd,OACA,WAA+E,CAAC,GAC5D;CACpB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,UAAU,IAAwB,IAAI;CAE5C,MAAM,gBAAgE;EAAE,KAAK;EAAM,OAAO;CAAK;CAE/F,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,2BAA2B;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CAEvF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GAEjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;EAEvD,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;EACjD,QAAQ,KAAK,IAAI,sBAAqB,YAAW,cAAc,QAAQ;CACzE;CAGA,OAAO;EACL;EACA,KAHU,eAAe,mBAAmB,SAAS,YAAY,CAG/D;EACF;EACA;EACA;EACA;EACA,kBAAkB,SAAS,OAAO;GAChC,cAAc,WAAW;EAC3B;CACF;AACF;;;ACzDA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,QAAQ;GAAE,MAAM;GAAuC,SAAS,KAAA;EAAU;EAC1E,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,UAAU;EACV,UAAU;EACV,OAAO;EACP,UAAU;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAClE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,cAAc;GAAE,MAAM;GAAsD,SAAS,KAAA;EAAU;CACjG;CAEA,OAAO;EACL,iBAAiB,aAA2D;EAC5E,gBAAgB,aAA0D;EAC1E,iBAAiB,WAAkE;EACnF,gBAAgB,UAA+D;CACjF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAAkD,YAAY;GAClE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,cAAgD,YAAY;GAChE,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,eAAe,OAA2B;GACpD,eAAe;GACf,cAAc;EAChB,CAAC;EACD,mBAAmB,GAAG;EACtB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,MAAM,IAAI,IAAI,MAAM;GACpB,MAAM,IAAI,IAAI,MAAM;GACpB,UAAU,IAAI,IAAI,MAAM;GACxB,SAAS,IAAI,IAAI,MAAM;GACvB,qBAAqB,IAAI,IAAI,MAAM;GACnC,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;EAC1B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAElC,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAElC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,kBAAkB,GAChC,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,KACrC;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAElC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,aAAa;GAC9B,MAAM,OAAgB;IAAE,IAAI,QAAQ,QAAQ;GAAkB;EAChE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,6BAA6B,gBAAgB;CACxD,MAAM;CACN,OAAO;;AAEL,SAAS;EAAE,MAAM;EAAwC,SAAS,KAAA;CAAU,EAC9E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,sBAAsB;EAClC,MAAM,UAAU,eAAe,qBAAqB,MAAM,OAAO,CAAC;EAClE,0BAA0B,EAAE,QAAQ,CAAC;EACrC,aAAa,EACX,OACA,IAAI,IAAI,MAAM,sBAAsB,EAAE,SAAS,QAAQ,MAAM,CAAC,GAC9D,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,kCAAkC,gBAAgB;CAC7D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,MAAM,EAAE,YAAY,6BAA6B;EAEjD,kBAAkB,IAAI,gBAAgB,QAAQ,OAAO,IAAI,CAAC;EAC1D,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,2BAA2B,EAAE,SAAS,QAAQ,MAAM,CAAC;GACtE,MAAM,OAAgB,IAAI,gBAAgB,QAAQ,OAAO,EAAwB;EACnF,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,kCAAkC,gBAAgB;CAC7D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,MAAM,EAAE,YAAY,6BAA6B;EACjD,aAAa,EACX,OACA,IAAI,IAAI,MAAM,2BAA2B,EAAE,SAAS,QAAQ,MAAM,CAAC,GACnE,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,OAAO;;AAEL,SAAS;EAAE,MAAM;EAA6C,SAAS,KAAA;CAAU,EACnF;CACA,MAAM,OAAO;EACX,MAAM,MAAM,sBAAsB;EAClC,MAAM,UAAU,eAAe,0BAA0B,MAAM,OAAO,CAAC;EAEvE,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,qBAAqB,EAAE,SAAS,QAAQ,MAAM,CAAC,CAA4B;CACnH;AACF,CAAC;AAED,MAAa,iCAAiC,gBAAgB;CAC5D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,0BAA0B,GAA8B,MAAM,UAAU,CAAC;CAClH;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,SAAS;CAAG,EACrC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EACX,UACA,IAAI,IAAI,MAAM,mBAAmB,EAAE,OAAO,MAAM,MAAM,CAAC,GACvD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;ACxOD,MAAMC,SAAqC,OAAO,aAAa;AAC/D,MAAMC,cAA8C,OAAO,kBAAkB;AAC7E,MAAMC,cAAoD,OAAO,wBAAwB;AAEzF,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQF,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;AAEA,SAAgB,oBAAoB,KAAgC;CAClE,QAAQC,aAAU,GAAG;AACvB;AAEA,SAAgB,yBAA8C;CAC5D,MAAM,MAAM,OAAOA,aAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,0CAA0C;CAC5D,OAAO;AACT;AAEA,SAAgB,yBAAyB,KAAqC;CAC5E,QAAQC,aAAW,GAAG;AACxB;AAEA,SAAgB,8BAAwD;CACtE,MAAM,MAAM,OAAOA,aAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,8CAA8C;CAChE,OAAO;AACT;;;ACzBA,SAAgB,YACd,OACA,WAAmG,CAAC,GACnF;CACjB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,WAAW,IAA4B,IAAI;CACjD,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CAEpF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;EACvD,QAAQ,KAAK,IAAI,oBAAoB,SAAS,KAAK;CACrD;CAGA,IAAI,gBAAgB;CACpB,MAAM,kBAAwB;EAC5B,IAAI,eACF;EACF,gBAAgB;EAChB,eAAoB;GAClB,gBAAgB;GAChB,IAAI,QAAQ,UAAU,MAAM,WAC1B,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;EACvC,CAAC;CACH;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,gBAAgB,SAAS,YAAY,CAC5C;EAAG;EAAY;EAAU;EAAe;EAAY;CAAU;AACpF;;;AC5DA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;;EAE1E,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;;EAE1C,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EAClF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EACzF,YAAY;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC/C,mBAAmB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACtD,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,UAAU;EACV,UAAU;EACV,UAAU;EACV,SAAS;EACT,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,kBAAkB;EAClB,aAAa;EACb,eAAe;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EACrF,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAAwD;EACzE,uBAAuB,aAA6D;EACpF,gBAAgB,aAAuD;EACvE,iBAAiB,WAA+D;EAChF,sBAAsB,gBAA8E;EACpG,gBAAgB,UAA4D;CAC9E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAA+C,YAAY;GAC/D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,oBAAyD,YAAY;GACzE,KAAK,sBAAsB,OAAO;GAClC,KAAK,qBAAqB,QAAQ,UAAU;EAC9C;EACA,MAAM,cAA6C,YAAY;GAC7D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,YAAY,OAAwB;GAC9C,eAAe;GACf,oBAAoB;GACpB,cAAc;EAChB,CAAC;EACD,gBAAgB,GAAG;EAGnB,UAAU,IAAI,SAAS;EACvB,UAAU,IAAI,SAAS;EAEvB,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,GAC3B,MAAM,UACF,MAAM,QAAQ;GACZ,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,YAAY,IAAI,IAAI,MAAM;GAC1B,kBAAkB,IAAI,IAAI,MAAM;GAChC,OAAO,IAAI,IAAI,MAAM;GACrB,YAAY,IAAI,IAAI,MAAM;GAC1B,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,eAAe,IAAI,IAAI,MAAM;GAC7B,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,IACD,MAAM,aACJC,qBACE,IAAI,IAAI,MAAM,YACd,MAAM,QAAQ,MAAM,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,IAAI,OAC1D,MAAM,QAAQ,MAAM,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,IAAI,OAC1D,MAAM,IACR,IACA,CAAC,CACT;CACF;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO;;;;;AAKL,IAAI;EAAE,MAAM;EAAuC,SAAS;CAAQ,EACtE;CACA,MAAM,OAAO;EACX,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,MAAM,IAAI;GACvB,GAAG,IAAI,IAAI,MAAM,cAAc,EAAE,IAAI,MAAM,GAAG,CAAC;GAC/C,MAAM,OAAgB;IAAE,IAAI,SAAS,QAAQ;GAAsB;EACrE,CAAC;CACH;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,QAAQ,gBAAwC,EAAE,OAAO,MAAM,MAAM,EAAE;EAC7E,yBAAyB,EAAE,MAAM,CAAC;EAClC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CAClH;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,UAAU,4BAA4B;EAC9C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,uBAAuB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CACxH;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,OAAO,gBAAmC;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EACjG,oBAAoB,EAAE,KAAK,CAAC;EAE5B,UAAU,IAAI,SAAS;EACvB,YAAY,IAAI,SAAS;EAEzB,YAAY,MAAM,OAAO,IAAI,SAAS;EACtC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,SAAS,uBAAuB;EACxC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,SAAS,uBAAuB;EACxC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;;;;;;AAOD,SAASA,qBACP,YACA,OACA,OACA,UACS;CACT,OAAO;EACL,GAAI,QAAQ,CAAC,EAAE,iBAAiB,YAAY,KAAK,CAAC,IAAI,CAAC;EACvD,EAAE,mBAAmB,YAAY;GAC/B,EAAE,eAAe;GACjB,EAAE,iBAAiB;GACnB,EAAE,sBAAsB;EAC1B,CAAC;EACD,EAAE,sBAAsB,YAAY,CAClC,EAAE,mBAAmB,YAAY,WAAW,KAAI,SAC9C,EAAE,gBAAgB;GAAE,KAAK,KAAK;GAAO,OAAO,KAAK;EAAM,SAAS,CAC9D,EAAE,oBAAoB,YAAY,WAAW,IAAI,KAAK,KAAK,KAAK,GAChE,EAAE,uBAAuB,CAC3B,CAAC,CACH,CAAC,GAED,EAAE,iBAAiB,YAAY,SAAS,CAAC,CAAC,CAC5C,CAAC;CACH;AACF;;;ACtRA,MAAMC,SAAqC,OAAO,aAAa;AAE/D,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;;;ACMA,SAAgB,YAAY,OAAc,YAA+B,CAAC,GAAoB;CAI5F,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO,GAAG;CAAU,IAF9D,YAAY,MADZ,qBACsB,CAEgD,CAAC;CAErF,OAAO,EAAE,KADG,eAAe,gBAAgB,SAAS,YAAY,CACrD,EAAE;AACf;;;ACnBA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO;EAEL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,UAAU;EACV,WAAW;GAAE,MAAM;GAAuC,SAAS,KAAA;EAAU;EAE7E,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,cAAc;GAAE,MAAM;GAAmD,SAAS,KAAA;EAAU;CAC9F;CAEA,OAAO;EACL,iBAAiB,aAAwD;EACzE,iBAAiB,WAA+D;EAChF,WAAW,aAAmD;EAC9D,cAAc;CAChB;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,MAAM,YAAY,OAAwB;GAC9C,gBAAgB,YAAY;IAC1B,KAAK,gBAAgB,OAAO;IAC5B,KAAK,gBAAgB,QAAQ,KAAK;GACpC;GACA,WAAU,YAAW,KAAK,UAAU,OAAO;GAC3C,cAAc,KAAK,MAAM;EAC3B,CAAC;EACD,gBAAgB,GAAG;EACnB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,aAAa,IAAI,IAAI,MAAM;GAC3B,WAAW,IAAI,IAAI,MAAM;GACzB,WAAW,IAAI,IAAI,MAAM;GACzB,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,QAAQ,IAAI,IAAI,MAAM;GACtB,MAAM,IAAI,IAAI,MAAM;EACtB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,YAAY,IAAI,IAAI,MAAM,cAAc,CAA4B;CACrF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;;;ACpDD,MAAMC,SAAwC,OAAO,iBAAiB;AACtE,MAAMC,cAAiD,OAAO,sBAAsB;AACpF,MAAMC,cAAmD,OAAO,uBAAuB;AAEvF,SAAgB,mBAAmB,KAA+B;CAChE,QAAQF,QAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;AAEA,SAAgB,uBAAuB,KAAmC;CACxE,QAAQC,aAAU,GAAG;AACvB;AAEA,SAAgB,4BAAoD;CAClE,MAAM,MAAM,OAAOA,aAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,gDAAgD;CAClE,OAAO;AACT;AAEA,SAAgB,wBAAwB,KAAoC;CAC1E,QAAQC,aAAW,GAAG;AACxB;AAEA,SAAgB,6BAAsD;CACpE,MAAM,MAAM,OAAOA,aAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,gDAAgD;CAClE,OAAO;AACT;;;AC9BA,SAAgB,eACd,OACA,cACA,UACoB;CACpB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,2BAA2B;EAAE,GAAG;EAAO;EAAc;CAAS,IAAI,KAAK;CAElG,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,mBAAmB,SAAS,YAAY,CAC/C;EAAG;EAAY;EAAe;CAAW;AAC/D;;;ACxCA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EAC7E,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,WAAW;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC/C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,gBAAgB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACnD,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAA0D;EAC1E,WAAW,aAAsD;EACjE,gBAAgB,UAA+D;CACjF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,cAAgD,YAAY;GAChE,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,gBAA6C,YAAW,KAAK,UAAU,OAAO;EACpF,MAAM,MAAM,eAAe,OAA2B,YAAY,YAAY;EAC9E,mBAAmB,GAAG;EACtB,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,GAC3B,MAAM,UACF,MAAM,QAAQ;GACZ,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,SAAS,IAAI,IAAI,MAAM;GACvB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,IACD,MAAM,aACJC,oBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,UAAU,KAAK,MAAM,MAAM,IAAI,IACjF,CAAC,CACT;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAElC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,sBAAsB;EAClC,MAAM,QAAQ,gBAAuC,EAAE,OAAO,MAAM,MAAM,EAAE;EAC5E,wBAAwB,EAAE,MAAM,CAAC;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,MAAM,EAAE,UAAU,2BAA2B;EAC7C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,mBAAmB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CACpH;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,sBAAsB;EAClC,MAAM,OAAO,gBAAsC;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EACpG,uBAAuB,EAAE,KAAK,CAAC;EAE/B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;EACtC,CAAC;EACD,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAO,GACpF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,MAAM,EAAE,SAAS,0BAA0B;EAC3C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,6BAA6B,gBAAgB;CACxD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,MAAM,EAAE,SAAS,0BAA0B;EAC3C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,CAA4B;CACpF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,CAA4B;CAChF;AACF,CAAC;;;;;;AAUD,SAASA,oBACP,YACA,SACA,UACS;CACT,OAAO,CACL,EAAE,sBAAsB,YAAY,WAAW,CAAC,CAAC,GACjD,EAAE,yBAAyB,YAAY,CACrC,EAAE,sBAAsB,YAAY,YAAY,YAAY,QAAQ,CAAC,CACvE,CAAC,CACH;AACF;;AAGA,SAAS,UAAU,YAAuD;CACxE,MAAM,OAAkB,CAAC;CACzB,KAAK,MAAM,QAAQ,YAAY;EAC7B,MAAM,OAAO,KAAK,GAAG,EAAE;EACvB,IAAI,QAAQ,KAAK,SAAS,QAAQ,KAAK,EAAE,CAAC,UAAU,KAAK,OACvD,KAAK,KAAK,IAAI;OAEd,KAAK,KAAK,CAAC,IAAI,CAAC;CACpB;CACA,OAAO;AACT;;AAGA,SAAS,YACP,YACA,UACS;CACT,OAAO,UAAU,UAAU,CAAC,CAAC,SAAS,KAAK,aAAa;EACtD,MAAM,OAAO,IAAI;EAEjB,MAAM,OAAO,WAAW,KAAK,KAAK,kBAC9B,CAAC,EAAE,wBAAwB,EAAE,KAAK,aAAa,KAAK,QAAQ,CAAC,CAAC,IAC9D,CAAC;EACL,IAAI,KAAK,SAAS,MAChB,OAAO,CAAC,GAAG,MAAM,WAAW,MAAM,QAAQ,CAAC;EAC7C,MAAM,aAAa,IAAI,MAAK,SAAQ,KAAK,cAAc,IAAI,CAAC,EAAE,cAAc;EAC5E,OAAO,CACL,GAAG,MACH,EAAE,oBAAoB;GAAE,KAAK,SAAS,KAAK;GAAS,OAAO,KAAK;EAAM,SAAS,CAC7E,GAAI,cAAc,OAAO,CAAC,EAAE,yBAAyB,YAAY,UAAU,CAAC,IAAI,CAAC,GACjF,GAAG,IAAI,SAAS,MAAM,UAAU,CAC9B,GAAI,QAAQ,KAAK,KAAK,kBAAkB,CAAC,EAAE,wBAAwB,EAAE,KAAK,aAAa,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAC3G,WAAW,MAAM,QAAQ,CAC3B,CAAC,CACH,CAAC,CACH;CACF,CAAC;AACH;;AAGA,SAAS,WACP,MACA,UACO;CACP,OAAO,EAAE,mBAAmB;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,CACxE,GAAI,KAAK,aAAa,OAAO,CAAC,EAAE,4BAA4B,YAAY,KAAK,SAAS,CAAC,IAAI,CAAC,GAC5F,EAAE,uBAAuB,YAAY,WAAW,IAAI,KAAK,KAAK,KAAK,CACrE,CAAC;AACH;;;;;;;;;;;;;AC1PA,SAAgB,WAAW,OAA8C;CACvE,OAAO,OAAO,MAAM,SAAS;EAC3B,IAAI,KAAK,SAAS,SAChB,OAAO;EACT,IAAI,KAAK,SAAS,MAChB,OAAO,OAAO,KAAK,YAAY,EAAE,CAAC,CAAC,KAAK,MAAM;EAChD,IAAI,KAAK,SAAS,UAChB,OAAO,MAAM,QAAQ,KAAK,QAAQ,KAAK,WAAW,KAAK,QAAmB;EAC5E,OAAO;CACT,CAAC,KAAK;AACR;;;;;;;;;ACFA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,QAAQ;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC5C,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,MAAM;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;CACtE;CACA,OAAO,EACL,SAAS,aAAoD,KAC/D;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAsC,YAAoC;GAC9E,KAAK,UAAU,OAAO;EACxB;EACA,MAAM,UAAU,WAAW,yBAAyB;GAAE,GAAG;GAAO,UAAU;EAAO,EAAE;EACnF,MAAM,MAAM,eAAe,iBAAiB,SAAS,YAAY,CAAC;EAElE,aAAa;GACX,MAAM,UAAU,IAAI;GACpB,MAAM,UAAU,MAAM,UAAU;IAC9B,OAAO,QAAQ;IACf,MAAM,QAAQ;IACd,GAAG,QAAQ;GACb,CAAC;GACD,OAAO,EACL,QACA,QAAQ,aAAa,GAErB,WAAW,OAAO,IAAI,UAAU,QAAQ,IAC1C;EACF;CACF;AACF,CAAC;;;ACpDD,MAAMC,SAAsC,OAAO,eAAe;AAElE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;;;ACFA,SAAgB,aACd,OACA,WAA4D,CAAC,GAC3C;CAIlB,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO,GAAG;CAAS,IAD9D,YAAY,MADZ,qBACsB,CACgD,CAAC;CAErF,OAAO,EAAE,KADG,eAAe,iBAAiB,SAAS,YAAY,CACtD,EAAE;AACf;;;ACZA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACrE,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EAC5E,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,aAAa;GAAE,MAAM;GAAqC,SAAS,KAAA;EAAU;EAC7E,UAAU;EACV,UAAU;EACV,SAAS;EACT,UAAU;EACV,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EAC1E,cAAc;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EAC3E,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAAyD;EAC1E,iBAAiB,WAAgE;CACnF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,iBAAkD,YAAY;GAClE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,aAAa,OAAyB,EAAE,cAAc,CAAC;EACnE,iBAAiB,GAAG;EACpB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,aAAa,IAAI,IAAI,MAAM;GAC3B,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;GACrB,YAAY,IAAI,IAAI,MAAM;GAC1B,gBAAgB,IAAI,IAAI,MAAM;GAC9B,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,oBAAoB;EAChC,aAAa;GACX,MAAM,QAAQ,KAAK,MAAM,OAAO,MAAM,KAAK,CAAC;GAC5C,MAAM,MAAM,IAAI,IAAI;GACpB,MAAM,QAAQ,IAAI,SAAS;GAE3B,OAAO,EACL,OACA,IAAI,gBAAgB,EAAE,MAAM,CAAC,GAC7B,MAAM,UAAU,MAAM,QAAQ,EAAE,SAAS,MAAM,CAAC,IAAI,OAAO,IAC7D;EACF;CACF;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,CAA4B;CACxF;AACF,CAAC;;;ACxFD,MAAMC,SAAuC,OAAO,gBAAgB;AACpE,MAAM,WAAgD,OAAO,qBAAqB;AAClF,MAAM,YAAkD,OAAO,sBAAsB;;AAGrF,MAAM,cAAsC,EAAE,OAAO,eAAsB,CAAC,EAAE;AAE9E,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;AAEA,SAAgB,sBAAsB,KAAkC;CACtE,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,2BAAkD;CAChE,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,8CAA8C;CAChE,OAAO;AACT;AAEA,SAAgB,uBAAuB,KAAmC;CACxE,QAAQ,WAAW,GAAG;AACxB;AAEA,SAAgB,4BAAoD;CAClE,OAAO,OAAO,WAAW,WAAW;AACtC;;;ACtBA,SAAgB,cACd,OACA,WAAuG,CAAC,GACrF;CACnB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,UAAU,IAAwB,IAAI;CAG5C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CAGrC,MAAM,OAAO,WAAW,0BAA0B;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CACnF,MAAM,WAAW,WAA2B,uBAAuB,wBAAwB,IAAI,GAAG,KAAK;CAIvG,MAAM,WAA+B;EAAE;EAAM;EAAU,OAHzC,WAA4B,wBAAwB,qBAAqB,IAAI,GAAG,KAGnC;EAAG,UAD7C,WAA4B,wBAAwB,wBAAwB,IAAI,GAAG,KAC/B;CAAE;CAEvE,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,KAAK,KAAK,IAAI,UAAU,MAAM;EAC9B,KAAK,KAAK,IAAI,iBAAiB,aAAa;EAC5C,KAAK,KAAK,IAAI,YAAY,qBAAqB,CAAC;EAChD,KAAK,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACnD,KAAK,KAAK,IAAI,uBAAuB,cAAc,KAAK;EACxD,KAAK,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACtD;CAGA,SAAS,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CAGlD,OAAO;EAAE,KADG,eAAe,kBAAkB,UAAU,YAAY,CACxD;EAAG;EAAU;EAAY;EAAe;EAAY;CAAQ;AACzE;;;;AC5DA,SAAS,QAAQ,KAAoB,OAAyC;CAC5E,OAAO,UAAU,IAAI,IAAI,WAAW,IAAI;AAC1C;AAEA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EAClF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EACzF,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,eAAe;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EACrF,mBAAmB;GAAE,MAAM;GAAkD,SAAS,KAAA;EAAU;EAChG,UAAU;EACV,UAAU;EACV,SAAS;EACT,UAAU;EACV,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAEzC,SAAS;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAE5C,cAAc;GAAE,MAAM;GAAqD,SAAS,KAAA;EAAU;EAC9F,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CACrD;CAEA,OAAO;EACL,iBAAiB,aAA0D;EAC3E,gBAAgB,aAAyD;EACzE,yBAAyB,aAAiE;EAC1F,iBAAiB,WAAiE;EAClF,gBAAgB,UAA8D;CAChF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAAiD,YAAY;GACjE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,cAA+C,YAAY;GAC/D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EAEA,MAAM,eAAuD,YAAW,KAAK,wBAAwB,OAAO;EAC5G,MAAM,MAAM,cAAc,OAA0B;GAClD,eAAe;GACf,cAAc;GACd,sBAAsB;EACxB,CAAC;EACD,kBAAkB,GAAG;EAErB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,eAAe,IAAI,IAAI,MAAM;GAC7B,cAAc,IAAI,IAAI,MAAM;GAC5B,cAAc,IAAI,IAAI,MAAM,SAAS;GACrC,OAAO,IAAI,IAAI,MAAM,SAAS;GAC9B,UAAU,IAAI,IAAI,MAAM,SAAS;GACjC,cAAc,IAAI,IAAI,MAAM,SAAS;GACrC,WAAW,IAAI,IAAI,MAAM,SAAS;GAClC,WAAW,IAAI,IAAI,MAAM,SAAS;GAClC,UAAU,IAAI,IAAI,MAAM,MAAM;GAE9B,aAAa,IAAI,IAAI,MAAM,UAAU,YAAY,CAAC;GAClD,UAAU,IAAI,IAAI,MAAM;GACxB,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,SAAS;CAAE,EAC3E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,QAAQ,eAAuB,OAAO,MAAM,KAAK,MAAM,IAAI,IAAI,CAAE;EAEvE,uBAAuB,EAAE,MAAM,CAAC;EAEhC,aAAa,EACX,OACA,IAAI,IAAI,MAAM,cAAc,EAAE,OAAO,MAAM,MAAM,CAAC,GAClD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,QAAQ,0BAA0B;EACxC,aAAa;GACX,MAAM,QAAQ,KAAK,MAAM,OAAO,MAAM,KAAK,CAAC;GAC5C,MAAM,QAAQ,QAAQ,IAAI,IAAI,OAAO,MAAM,MAAM,KAAK;GAEtD,IAAI,CAAC,OACH,OAAO;GACT,MAAM,QAAQ,MAAM,SAAS;GAE7B,OAAO,EACL,OACA,MAAM,gBAAgB,EAAE,MAAM,CAAC,GAC/B,MAAM,UAAU,MAAM,QAAQ,EAAE,SAAS,MAAM,CAAC,IAAI,OAAO,IAC7D;EACF;CACF;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAID,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,eAAe,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,SAAS,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,SAAS,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EACX,OACA,IAAI,IAAI,MAAM,SAAS,gBAAgB,GACvC,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,SAAS,YAC9C;CACF;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,SAAS,aAAa;GAA8B,KAAK,IAAI;EAAQ,GACxF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CAC/G;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CAC/G;AACF,CAAC;AAGD,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,QAAQ,eAAe,OAAO,MAAM,KAAK,CAAC;EAChD,aAAa,EACX,QACA,IAAI,IAAI,MAAM,SAAS,gBAAgB,EAAE,OAAO,MAAM,MAAM,CAAC,GAC7D,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,SAAS,SAAS,MAAM,MAAM,EAAE,KACrE;CACF;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,OAAO,gBAAmC,EAAE,OAAO,MAAM,MAAM,EAAE;EACvE,sBAAsB,EAAE,KAAK,CAAC;EAE9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,aAAa,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EACX,OACA,IAAI,IAAI,MAAM,SAAS,oBAAoB,KAAK,KAAK,GACrD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,SAAS,KAAA;CAAU,EACnF;CACA,MAAM,OAAO;EACX,MAAM,MAAM,qBAAqB;EACjC,MAAM,QAAQ,0BAA0B;EACxC,aAAa;GACX,MAAM,QAAQ,MAAM,UAAU,KAAA,IAAY,MAAM,MAAM,QAAS,OAAO,MAAM,KAAK,MAAM,IAAI,IAAI;GAC/F,MAAM,QAAQ,QAAQ,IAAI,IAAI,OAAO,KAAK;GAE1C,IAAI,CAAC,OACH,OAAO;GACT,OAAO,EAAE,SAAS,MAAM,oBAAoB,CAA4B;EAC1E;CACF;AACF,CAAC;;;ACrVD,MAAMC,SAAyC,OAAO,iBAAiB;AAEvE,SAAgB,oBAAoB,KAAgC;CAClE,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,yBAA8C;CAC5D,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+CAA+C;CACjE,OAAO;AACT;;;ACXA,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CAEN,OAAO;EACL,SAAS;GAAE,MAAM;GAAyC,SAAS,KAAA;EAAU;EAC7E,UAAU;EACV,WAAW;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EACjF,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;;EAE3D,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAK;CACpC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,oBAAoB;GAC7C,SAAS,MAAM;GACf,UAAU,MAAM;GAChB,WAAW,MAAM;GACjB,MAAM,MAAM;EACd,GAAG,YAAY,CAAC;EAChB,oBAAoB,EAAE,IAAI,CAAC;EAC3B,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAGD,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO;;AAEL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAM,EACrC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;;AAEL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAK,EACpC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;;AAEL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAK,EACpC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;;;AC9DD,MAAMC,SAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;;;ACMA,SAAgB,UACd,OACA,cACe;CACf,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,cAAc,IAAwB,IAAI;CAChD,MAAM,WAAW,IAAI,KAAK;CAE1B,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;CAAa,IAAI,KAAK;CAEnF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAE/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GACvB,gBAAgB,CAAC;GACjB,eAAe,MAAM,SAAS;GAC9B,gBAAgB,CAAC;GACjB,gBAAgB,CAAC,YAAY,KAAK,CAAC,CAAC,OAAO,OAAO;EACpD,CAAC;EACD,MAAM,WAA2B,eAAe;GAC9C;GACA,MAAM,QAAQ,MAAM,IAAI,MAAM;GAC9B,mBAAmB,MAAM;IACvB,SAAS,QAAQ;GACnB;EACF,CAAC;EACD,SAAS,QAAQ,SAAS;EAE1B,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,QAAQ;EACrC,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;EACvD,QAAQ,KAAK,IAAI,sBAAsB,IAAI;EAC3C,QAAQ,KAAK,IAAI,kBAAkB,CAAC,CAAC;EAGrC,YAAY,QAAQ,MAAM,IAAI,MAAM,SAAQ,SAAQ,SAAS,OAAO,IAAI,GAAG,EAAE,OAAO,OAAO,CAAC;EAG5F,IAAI;EACJ,MAAM,aAAa,OAAO;GACxB,aAAa;GACb,aAAa,KAAK,cAAc,IAAI,QAAQ,IAAI,KAAA;EAClD,GAAG,EAAE,OAAO,OAAO,CAAC;EAEpB,sBAAsB;GACpB,aAAa;GACb,SAAS,QAAQ;EACnB,CAAC;CACH;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,cAAc,SAAS,YAAY,CAC1C;EAAG;EAAU;EAAY;CAAY;AAC3D;;;ACpEA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,OAAO;GAAE,MAAM;GAAS,SAAS;EAAK;EACtC,MAAM;GAAE,MAAM;GAA8C,SAAS;EAAS;EAC9E,eAAe;GAAE,MAAM;GAAS,SAAS;EAAK;EAC9C,wBAAwB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC5D,cAAc;GAAE,MAAM;GAAS,SAAS;EAAK;EAC7C,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,cAAc;GAAE,MAAM;GAAiD,SAAS,KAAA;EAAU;CAC5F;CAEA,OAAO;EACL,gBAAgB,aAAqD;EACrE,gBAAgB,UAA0D;CAC5E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAuC,YAAY;GACvD,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,UAAU,OAAsB,MAAM;EAClD,cAAc,GAAG;EACjB,aAAa,MAAM,UAAU;GAAE,MAAM,IAAI,IAAI,MAAM;GAAM,SAAS,IAAI,IAAI,MAAM;EAAQ,CAAC;CAC3F;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa;GACX,IAAI,CAAC,IAAI,SAAS,OAChB,OAAO;GACT,MAAM,MAAM,IAAI,IAAI;GACpB,OAAO,EAAE,UAAU,EAAE,IAAI,OAAO,GAAG,CACjC,IAAI,QAAQ,IAAI,SAAS,QACrB,EAAE,OAAO;IACP,GAAG,IAAI,iBAAiB;IACxB,MAAM,OAAgB;KAAE,IAAI,YAAY,QAAQ;IAAkB;GACpE,CAAC,IACD,MACJ,EAAE,OAAO,IAAI,mBAAmB,GAA8B,CAC5D,EAAE,OAAO;IACP,GAAG,IAAI,gBAAgB;IACvB,MAAM,OAAgB;KAAE,IAAI,WAAW,QAAQ;IAAkB;GACnE,GAAG,MAAM,UAAU,CAAC,CACtB,CAAC,CACH,CAAC;EACH;CACF;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;;;AC3FD,MAAMC,SAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;;;ACMA,SAAgB,UACd,OACA,cACe;CACf,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,cAAc,IAAwB,IAAI;CAChD,MAAM,WAAW,IAAI,KAAK;CAE1B,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;CAAa,IAAI,KAAK;CAEnF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAE/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GACvB,gBAAgB,CAAC;GACjB,eAAe,MAAM,SAAS;GAC9B,gBAAgB,CAAC;GACjB,gBAAgB,CAAC,YAAY,KAAK,CAAC,CAAC,OAAO,OAAO;EACpD,CAAC;EACD,MAAM,WAA2B,eAAe;GAC9C;GACA,MAAM,QAAQ,MAAM,IAAI,MAAM;GAC9B,mBAAmB,MAAM;IACvB,SAAS,QAAQ;GACnB;EACF,CAAC;EACD,SAAS,QAAQ,SAAS;EAE1B,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,QAAQ;EACrC,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;EACvD,QAAQ,KAAK,IAAI,sBAAsB,IAAI;EAC3C,QAAQ,KAAK,IAAI,kBAAkB,CAAC,CAAC;EAGrC,YAAY,QAAQ,MAAM,IAAI,MAAM,SAAQ,SAAQ,SAAS,OAAO,IAAI,GAAG,EAAE,OAAO,OAAO,CAAC;EAG5F,IAAI;EACJ,MAAM,aAAa,OAAO;GACxB,aAAa;GACb,aAAa,KAAK,cAAc,IAAI,QAAQ,IAAI,KAAA;EAClD,GAAG,EAAE,OAAO,OAAO,CAAC;EAEpB,sBAAsB;GACpB,aAAa;GACb,SAAS,QAAQ;EACnB,CAAC;CACH;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,cAAc,SAAS,YAAY,CAC1C;EAAG;EAAU;EAAY;CAAY;AAC3D;;;ACpEA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO;EAEL,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,OAAO;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC3C,MAAM;GAAE,MAAM;GAAgC,SAAS,KAAA;EAAU;EACjE,MAAM;GAAE,MAAM;GAA8C,SAAS,KAAA;EAAU;EAC/E,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,wBAAwB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC5D,cAAc;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAClD,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,cAAc;GAAE,MAAM;GAAiD,SAAS,KAAA;EAAU;CAC5F;CAEA,OAAO;EACL,gBAAgB,aAAqD;EACrE,gBAAgB,UAA0D;CAC5E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAuC,YAAY;GACvD,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,UAAU,OAAsB,MAAM;EAClD,cAAc,GAAG;EAEjB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,MAAM,IAAI,IAAI,MAAM;GACpB,SAAS,IAAI,IAAI,MAAM;EACzB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa;GAEX,IAAI,CAAC,IAAI,SAAS,OAChB,OAAO;GACT,MAAM,MAAM,IAAI,IAAI;GACpB,OAAO,EAAE,UAAU,EAAE,IAAI,OAAO,GAAG,CACjC,EAAE,OAAO;IACP,GAAG,IAAI,iBAAiB;IACxB,MAAM,OAAgB;KAAE,IAAI,YAAY,QAAQ;IAAkB;GACpE,CAAC,GACD,EAAE,OAAO,IAAI,mBAAmB,GAA8B,CAC5D,EAAE,OAAO;IACP,GAAG,IAAI,gBAAgB;IACvB,MAAM,OAAgB;KAAE,IAAI,WAAW,QAAQ;IAAkB;GACnE,GAAG,MAAM,UAAU,CAAC,CACtB,CAAC,CACH,CAAC;EACH;CACF;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;;;AC3FD,MAAMC,SAAyC,OAAO,kBAAkB;AACxE,MAAMC,cAAkD,OAAO,uBAAuB;AAEtF,SAAgB,oBAAoB,KAAgC;CAClE,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,yBAA8C;CAC5D,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+CAA+C;CACjE,OAAO;AACT;AAEA,SAAgB,wBAAwB,KAAoC;CAC1E,QAAQC,aAAU,GAAG;AACvB;AAEA,SAAgB,6BAAsD;CACpE,MAAM,MAAM,OAAOA,aAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iDAAiD;CACnE,OAAO;AACT;;;AClBA,SAAgB,gBACd,OACA,WAA+D,CAAC,GAC3C;CAIrB,MAAM,UAAU,WAAW,4BAA4B;EAAE,GAAG;EAAO,GAAG;CAAS,IADjE,YAAY,MADZ,qBACsB,CACmD,CAAC;CAExF,OAAO;EAAE,KADG,eAAe,oBAAoB,SAAS,YAAY,CACzD;EAAG;CAAQ;AACxB;;;AChBA,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CAEN,OAAO;EAEL,OAAO;GAAE,MAAM;GAA8B,SAAS,KAAA;EAAU;EAChE,cAAc;GAAE,MAAM;GAA8B,SAAS,KAAA;EAAU;EACvE,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,YAAY;GAAE,MAAM;GAAqC,SAAS,KAAA;EAAU;EAC5E,SAAS;EACT,UAAU;EACV,cAAc;GAAE,MAAM;GAAuD,SAAS,KAAA;EAAU;CAClG;CAEA,OAAO;EACL,iBAAiB,aAA4D;EAC7E,iBAAiB,WAAmE;CACtF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,iBAAqD,YAAY;GACrE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,gBAAgB,OAA4B,EAAE,cAAc,CAAC;EACzE,oBAAoB,GAAG;EAEvB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,QAAQ,IAAI,IAAI,MAAM;GACtB,UAAU,IAAI,IAAI,MAAM;GACxB,KAAK,IAAI,IAAI,MAAM;GACnB,QAAQ,IAAI,IAAI,MAAM;GACtB,MAAM,IAAI,IAAI,MAAM;GACpB,QAAQ,IAAI,IAAI,MAAM;GACtB,UAAU,IAAI,IAAI,MAAM;EAC1B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,MAAM,OAAO,gBAAuC,EAAE,OAAO,KAAK,MAAM,OAAO,MAAM,KAAK,CAAC,EAAE,EAAE;EAC/F,wBAAwB,EAAE,KAAK,CAAC;EAChC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,uBAAuB;EACnC,MAAM,EAAE,SAAS,2BAA2B;EAC5C,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACnH;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,uBAAuB;EACnC,MAAM,EAAE,SAAS,2BAA2B;EAC5C,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,mBAAmB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CAClH;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,mBAAmB,GAA8B,MAAM,UAAU,CAAC;CAC3G;AACF,CAAC;AAED,MAAa,8BAA8B,gBAAgB;CACzD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,uBAAuB;EACnC,MAAM,EAAE,SAAS,2BAA2B;EAC5C,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACxH;AACF,CAAC;AAED,MAAa,8BAA8B,gBAAgB;CACzD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,uBAAuB;EACnC,MAAM,EAAE,SAAS,2BAA2B;EAC5C,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACxH;AACF,CAAC;AAED,MAAa,gCAAgC,gBAAgB;CAC3D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,uBAAuB;EACnC,MAAM,EAAE,SAAS,2BAA2B;EAC5C,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,wBAAwB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC1H;AACF,CAAC;;;ACnHD,MAAMC,SAAqC,OAAO,aAAa;AAE/D,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;;;ACcA,SAAgB,YAAY,OAAc,YAA+B,CAAC,GAAoB;CAC5F,MAAM,WAAW,IAAwB,IAAI;CAC7C,MAAM,aAAa,IAAwB,IAAI;CAI/C,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO,GAAG;CAAU,IAD9D,YAAY,MADZ,qBACsB,CACgD,CAAC;CAGrF,QAAQ,KAAK,IAAI,oBAAoB,SAAS,KAAK;CACnD,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CAGvD,OAAO;EAAE,KADG,eAAe,gBAAgB,SAAS,YAAY,CACrD;EAAG;EAAS;EAAU;CAAW;AAC9C;;;AClCA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,UAAU;EACV,UAAU;EACV,SAAS;EACT,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,YAAY;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;EAC/E,gBAAgB;GAAE,MAAM;GAA4C,SAAS,KAAA;EAAU;EACvF,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,YAAY;CACd;CAEA,OAAO;EACL,iBAAiB,aAAwD;EACzE,iBAAiB,WAA+D;EAChF,iBAAiB,aAAwD;EACzE,iBAAiB,aAAwD;EACzE,gBAAgB,aAAuD;EACvE,gBAAgB,UAA4D;CAC9E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,MAAM,YAAY,OAAwB;GAC9C,gBAAgB,YAAY;IAC1B,KAAK,gBAAgB,OAAO;IAC5B,KAAK,gBAAgB,QAAQ,KAAK;GACpC;GACA,gBAAe,YAAW,KAAK,gBAAgB,OAAO;GACtD,gBAAe,YAAW,KAAK,gBAAgB,OAAO;GACtD,eAAe,YAAY;IACzB,KAAK,eAAe,OAAO;IAC3B,KAAK,eAAe,QAAQ,IAAI;GAClC;EACF,CAAC;EACD,gBAAgB,GAAG;EACnB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,cAAc,IAAI,IAAI,MAAM;GAC5B,SAAS,IAAI,IAAI,MAAM;GACvB,OAAO,IAAI,IAAI,MAAM;GACrB,UAAU,IAAI,IAAI,MAAM;GACxB,MAAM,IAAI,IAAI,MAAM;GACpB,QAAQ,IAAI,IAAI,MAAM;GACtB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EACX,QACA;GAAE,GAAG,IAAI,IAAI,MAAM,gBAAgB;GAA8B,KAAK,IAAI;EAAW,GACrF,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,YACrC;CACF;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,SAAS;GAAE,GAAG,IAAI,IAAI,MAAM,cAAc;GAA8B,KAAK,IAAI;EAAS,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;;AChHD,SAAgB,YACd,OACA,QACiB;CACjB,MAAM,UAAU,IAAwB,IAAI;CAE5C,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO,GAAG;CAAO,EAAE;CAE3E,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CAGjD,OAAO;EAAE,KADG,eAAe,gBAAgB,SAAS,YAAY,CACrD;EAAG;EAAS;CAAQ;AACjC;;;;;;;;ACnBA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,YAAY;EACZ,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,iBAAiB;EACjB,SAAS;CACX;CAEA,OAAO;EACL,oBAAoB,aAA2D;EAC/E,oBAAoB,cAAwE;EAC5F,oBAAoB,aAA2D;CACjF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,MAAM,YAAY,OAAwB;GAC9C,mBAAmB,YAAY;IAC7B,KAAK,mBAAmB,OAAO;IAC/B,KAAK,mBAAmB,QAAQ,QAAQ;GAC1C;GACA,mBAAkB,YAAW,KAAK,mBAAmB,OAAO;EAC9D,CAAC;EACD,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,aAAa;GAC9B,MAAM,OAAgB;IAAE,IAAI,QAAQ,QAAQ;GAAkB;EAChE,GAAG,MAAM,UAAU;GACjB,UAAU,IAAI,IAAI,MAAM;GACxB,aAAa,IAAI,IAAI,MAAM;GAC3B,aAAa,IAAI,IAAI,MAAM;GAC3B,SAAS,IAAI,IAAI,MAAM;EACzB,CAAC,CAAC;CACJ;AACF,CAAC;;;AC1CD,MAAMC,SAAuC,OAAO,gBAAgB;AAEpE,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;;;ACJA,SAAgB,cAAc,OAA2C;CAEvE,OAAO,EAAE,KADG,eAAe,kBAAkB,OAAO,YAAY,CACrD,EAAE;AACf;;;;ACPA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;EACzE,MAAM;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;CACvE;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,cAAc,KAAwB;EAClD,kBAAkB,GAAG;EACrB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAGD,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;;;ACjDD,MAAMC,SAAkC,OAAO,UAAU;AAEzD,SAAgB,aAAa,KAAyB;CACpD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;;;ACFA,SAAgB,SAAS,OAAiC;CAExD,MAAM,QAAQ,YAAY,MADZ,qBACsB,CAAC;CAErC,OAAO,EAAE,KADG,eAAe,aAAa,OAAO,OAAO,YAAY,CACvD,EAAE;AACf;;;;ACXA,SAAS,aAAa,OAAkC;CACtD,OAAO,MAAM,QAAO,SAAQ,KAAK,SAAS,WAAW,KAAK,SAAS,IAAI;AACzE;AAEA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,OAAO;EACL,SAAS;EACT,UAAU;EACV,UAAU;EAEV,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,SAAS,KAAmB;EACxC,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa;GACX,MAAM,eAAe,IAAI,IAAI,MAAM,gBAAgB;GAEnD,MAAM,WAAW,MAAM,UAAU,YAAY,KAAK,CAAC;GACnD,MAAM,QAAQ,aAAa,QAAQ;GAEnC,OAAO,MAAM,WAAW,IAAI,WAAW,MAAM,IAAK,YAAY,IAAI;EACpE;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;ACvDD,MAAMC,SAAuC,OAAO,gBAAgB;AACpE,MAAMC,cAAgD,OAAO,qBAAqB;AAElF,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;AAEA,SAAgB,sBAAsB,KAAkC;CACtE,QAAQC,aAAU,GAAG;AACvB;AAEA,SAAgB,2BAAkD;CAChE,MAAM,MAAM,OAAOA,aAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,8CAA8C;CAChE,OAAO;AACT;;;ACpBA,SAAgB,cACd,OACA,WAA+F,CAAC,GAC7E;CAInB,MAAM,UAAU,WAAW,0BAA0B;EAAE,GAAG;EAAO,GAAG;CAAS,IAD/D,YAAY,MADZ,qBACsB,CACiD,CAAC;CAEtF,OAAO,EAAE,KADG,eAAe,kBAAkB,SAAS,YAAY,CACvD,EAAE;AACf;;;ACdA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CAEN,OAAO;EAEL,OAAO;GAAE,MAAM;GAA2B,SAAS,KAAA;EAAU;EAC7D,cAAc;GAAE,MAAM;GAA2B,SAAS,KAAA;EAAU;EACpE,QAAQ;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EACnF,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,UAAU;EACV,SAAS;EACT,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,WAAW;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC/C,WAAW;EACX,SAAS;GAAE,MAAM;GAA4C,SAAS,KAAA;EAAU;EAChF,cAAc;GAAE,MAAM;GAAqD,SAAS,KAAA;EAAU;CAChG;CAEA,OAAO;EACL,iBAAiB,aAA0D;EAC3E,iBAAiB,WAAiE;EAClF,gBAAgB,aAAyD;EACzE,gBAAgB,aAAyD;CAC3E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,iBAAmD,YAAY;GACnE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,gBAAgD,YAAW,KAAK,eAAe,OAAO;EAC5F,MAAM,gBAAgD,YAAW,KAAK,eAAe,OAAO;EAC5F,MAAM,MAAM,cAAc,OAA0B;GAAE;GAAe;GAAc;EAAa,CAAC;EACjG,kBAAkB,GAAG;EACrB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,eAAe,IAAI,IAAI,MAAM;GAC7B,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;GACrB,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,iBAAiB,IAAI,IAAI,MAAM;GAC/B,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,YAAY,IAAI,IAAI,MAAM;GAC1B,YAAY,IAAI,IAAI,MAAM;GAC1B,gBAAgB,IAAI,IAAI,MAAM;EAChC,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,CAA4B;CACxF;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;;EAEL,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;;EAE3D,OAAO;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAgC,SAAS,KAAA;EAAU;CACnF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,OAAO,eAAiC;GAC5C,IAAI,MAAM,MACR,OAAO,MAAM;GACf,IAAI,MAAM,SAAS,MACjB,OAAO,KAAA;GACT,OAAO,IAAI,IAAI,MAAM,cAAc,KAAK,MAAM,OAAO,MAAM,KAAK,CAAC;EACnE,CAAC;EAED,MAAM,OAAO,gBAAqC,EAAE,MAAM,KAAK,MAAc,EAAE;EAC/E,sBAAsB,EAAE,KAAK,CAAC;EAC9B,aAAa;GAEX,IAAI,CAAC,KAAK,OACR,OAAO,EAAE,KAAK;GAChB,OAAO,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;EACtG;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAE1C,aAAa,EACX,QACA,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GACzC,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK,IACvC;CACF;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAE1C,aAAa,EACX,QACA,IAAI,IAAI,MAAM,qBAAqB,KAAK,KAAK,GAC7C,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,gBAAgB,KAAK,MAAM,IAAI,CACpE;CACF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACnH;AACF,CAAC;AAED,MAAa,gCAAgC,gBAAgB;CAC3D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EACX,UACA,IAAI,IAAI,MAAM,0BAA0B,KAAK,KAAK,GAClD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;;;ACpLD,MAAa,SAAS,gBAAgB;CACpC,MAAM;CAEN,OAAO;EACL,WAAW;GAAE,MAAM;GAA4C,SAAS,KAAA;EAAU;EAClF,OAAO;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;EAC1E,SAAS;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;EAC9E,KAAK;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EACtE,MAAM;EACN,QAAQ;CACV;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa,EACX,OACA,YAAY,OAAoB,YAAY,CAAC,CAAC,aAAa,GAC3D,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;ACpBD,MAAMC,SAAwC,OAAO,iBAAiB;AAEtE,SAAgB,mBAAmB,KAA+B;CAChE,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;;;;;;;ACIA,SAAgB,eACd,OACA,QACoB;CAIpB,MAAM,UAAU,WAAW,2BAAuD;EAChF,MAAM,MAAM;EACZ,aAAa,MAAM;EACnB,UAAU,MAAM;EAChB,cAAc,QAAQ;CACxB,IAPc,YAAY,MADZ,qBACsB,CAO5B,CAAC;CAGT,OAAO;EAAE,KADG,eAAe,mBAAmB,SAAS,OAAO,YAAY,CAC/D;EAAG;CAAQ;AACxB;;;;ACpBA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,UAAU;EACV,WAAW;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;EAChF,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,OAAO;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EACxE,eAAe;GAAE,MAAM;GAA8C,SAAS,KAAA;EAAU;EACxF,cAAc;GAAE,MAAM;GAAsD,SAAS,KAAA;EAAU;CACjG;CAEA,OAAO;EACL,gBAAgB,aAA0D;EAC1E,gBAAgB,UAA+D;CACjF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAO5B,MAAM,MAAM,eAAe,OAA2B,EALpD,eAAe,YAAY;GACzB,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC,EAEyD,CAAC;EAC5D,mBAAmB,GAAG;EACtB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,SAAS,IAAI,IAAI,MAAM;EACzB,CAAC,CAAC;CACJ;AACF,CAAC;;AAGD,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;;;AC7DD,MAAMC,SAAiC,OAAO,SAAS;AAEvD,SAAgB,YAAY,KAAwB;CAClD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT;;;ACiBA,SAAgB,QAAQ,OAAc,YAA2B,CAAC,GAAgB;CAChF,MAAM,UAAU,IAAwB,IAAI;CAI5C,MAAM,UAAU,WAAW,oBAAoB;EAAE,GAAG;EAAO,GAAG;CAAU,IAD1D,YAAY,MADZ,qBACsB,CAC4C,CAAC;CAGjF,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CAEjD,MAAM,MAAM,eAAe,YAAY,SAAS,YAAY,CAAC;CAE7D,OAAO;EACL;EACA;EACA;EACA,gBAAgB,MAAM,UAAU,IAAI,MAAM,cAAc,MAAM,KAAK;EACnE,gBAAgB,MAAM,YAAY,IAAI,MAAM,cAAc,MAAM,OAAO;EACvE,mBAAmB,IAAI,MAAM,YAAY;EACzC,cAAc,IAAI,MAAM,OAAO;EAC/B,aAAa,IAAI,MAAM,MAAM;CAC/B;AACF;;;AC7CA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EACL,QAAQ;GAAE,MAAM;GAAgC,SAAS,KAAA;EAAU;EACnE,eAAe;GAAE,MAAM;GAAgC,SAAS,KAAA;EAAU;EAC1E,QAAQ;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACvE,eAAe;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EAC9E,UAAU;GAAE,MAAM;GAA6C,SAAS,KAAA;EAAU;EAClF,YAAY;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EAC3E,UAAU;EACV,UAAU;CACZ;CAEA,OAAO;EACL,kBAAkB,aAAqD;EACvE,kBAAkB,aAAqD;EACvE,WAAW,aAA+C;EAC1D,YAAY,aAAgD;EAC5D,kBAAkB,YAA8D;EAChF,kBAAkB,YAA8D;CAClF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,MAAM,QAAQ,OAAoB;GACtC,iBAAiB,YAAY;IAC3B,KAAK,iBAAiB,OAAO;IAC7B,KAAK,iBAAiB,QAAQ,MAAM;GACtC;GACA,iBAAiB,YAAY;IAC3B,KAAK,iBAAiB,OAAO;IAC7B,KAAK,iBAAiB,QAAQ,MAAM;GACtC;GACA,WAAU,YAAW,KAAK,UAAU,OAAO;GAC3C,YAAW,YAAW,KAAK,WAAW,OAAO;EAC/C,CAAC;EACD,YAAY,GAAG;EAGf,aAAa,EAAE,QAAQ;GACrB,GAAG,IAAI,IAAI,MAAM,aAAa;GAC9B,MAAM,OAAgB;IAAE,IAAI,QAAQ,QAAQ;GAAkB;EAChE,GAAG,MAAM,UAAU;GACjB,QAAQ,IAAI,IAAI,MAAM;GACtB,QAAQ,IAAI,IAAI,MAAM;GACtB,YAAY,IAAI,IAAI,MAAM;GAC1B,SAAS,IAAI,IAAI,MAAM;GACvB,cAAc,IAAI,IAAI,MAAM;GAC5B,YAAY,IAAI,IAAI,MAAM;GAC1B,eAAe,IAAI,IAAI,MAAM;GAC7B,eAAe,IAAI;GACnB,eAAe,IAAI;GACnB,aAAa,IAAI;GACjB,QAAQ,IAAI;GACZ,OAAO,IAAI;EACb,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAE3B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,mBAAmB,EAAE,MAAM,MAAM,MAAM,CAAC,GACtD,MAAM,UAAU;GACd,MAAM,MAAM;GACZ,OAAO,IAAI,IAAI,MAAM,cAAc,MAAM,KAAK;GAC9C,OAAO,IAAI,IAAI,MAAM,cAAc,MAAM,KAAK;GAC9C,SAAS,IAAI,IAAI,MAAM,eAAe,MAAM,KAAK;GACjD,WAAW,IAAI,IAAI,MAAM,WAAW,MAAM,KAAK;GAC/C,WAAW,SAAkB,IAAI,cAAc,MAAM,OAAO,IAAI;EAClE,CAAC,CACH;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU;GACrG,QAAQ,IAAI,IAAI,MAAM;GACtB,YAAY,IAAI,IAAI,MAAM;GAC1B,YAAY,IAAI,IAAI,MAAM;EAC5B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAE3B,aAAa,EACX,KACA,IAAI,IAAI,MAAM,yBAAyB,EAAE,MAAM,MAAM,MAAM,CAAC,GAC5D,MAAM,UAAU;GAAE,MAAM,MAAM;GAAO,OAAO,IAAI,IAAI,MAAM,cAAc,MAAM,KAAK;EAAE,CAAC,CACxF;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;;;AChID,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,IAAI;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACvC,WAAW;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;CACnF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa,EACX,QACA,oBAAoB,OAA4B,YAAY,CAAC,CAAC,aAAa,GAC3E,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;ACbD,MAAMC,SAAiC,OAAO,SAAS;AAEvD,SAAgB,YAAY,KAAwB;CAClD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT;;;;ACRA,MAAM,aAAa;CAAC;CAAQ;CAAM;CAAM;CAAM;AAAI;;AAGlD,SAAS,MAAM,OAAwD;CACrE,OAAO,SAAS,OAAO,KAAA,IAAY,OAAO,KAAK;AACjD;;AAGA,SAAS,OAAO,OAA0E;CACxF,IAAI,SAAS,QAAQ,OAAO,UAAU,UACpC,OAAO,MAAM,KAAK;CACpB,MAAM,MAAwB,CAAC;CAC/B,KAAK,MAAM,QAAQ,YAAY;EAC7B,MAAM,MAAM,MAAM;EAClB,IAAI,OAAO,MACT,IAAI,QAAQ,OAAO,GAAG;CAC1B;CACA,OAAO;AACT;AAEA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EAEL,MAAM;GACJ,MAAM;IAAC;IAAQ;IAAQ;GAAM;GAC7B,SAAS,KAAA;EACX;EACA,KAAK;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EACtE,OAAO;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;EAC1E,SAAS;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;CAChF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,YAAY;GACrC,MAAM,OAAO,MAAM,IAAI;GACvB,KAAK,MAAM;GACX,OAAO,MAAM;GACb,SAAS,MAAM;EACjB,GAAG,YAAY,CAAC;EAChB,YAAY,EAAE,IAAI,CAAC;EACnB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,OAAO;EAEL,MAAM;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAgC,SAAS,KAAA;EAAU;EAChF,QAAQ;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAgC,SAAS,KAAA;EAAU;CACpF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAC3B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa;GACzB,MAAM,MAAM,MAAM,IAAI;GACtB,QAAQ,MAAM,MAAM,MAAM;EAC5B,CAAC,GACD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;;;;;;;AC9DD,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,SAAS;GAAE,MAAM,CAAC,QAAQ,KAAK;GAA2C,SAAS,KAAA;EAAU;EAC7F,eAAe;CACjB;CACA,MAAM,OAAO;EACX,MAAM,MAAM,eAAe,iBAAiB;GAC1C,MAAM,MAAM;GACZ,SAAS,MAAM;GACf,eAAe,MAAM;EACvB,GAA4B,YAAY,CAAC;EAEzC,aAAa;GACX,MAAM,UAAU,IAAI;GACpB,MAAM,YAAY,QAAQ,aAAa;GAGvC,OAAO,EAAE,QAAQ,QAAQ,aAAa,GAA8B,QAAQ,SAAS,KAAI,YACvF,QAAQ,UAAU,EAAE,QAAQ,WAAW,QAAQ,IAAI,IAAI,QAAQ,IAAI,CAAC;EACxE;CACF;AACF,CAAC;;;AChCD,MAAMC,SAAsC,OAAO,eAAe;AAElE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;;;ACQA,SAAgB,aACd,OACA,cACkB;CAClB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO;CAAa,IAAI,KAAK;CAGtF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GAEjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;CACrD;CAGA,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;CACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;CAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CAGvD,OAAO;EAAE;EAAS,KADN,eAAe,iBAAiB,SAAS,YAAY,CAC7C;EAAG;EAAY;EAAe;CAAW;AAC/D;;;ACtDA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,YAAY;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC/C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,UAAU;EACV,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAAwD;EACxE,gBAAgB,UAA6D;CAC/E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA0C,YAAY;GAC1D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,aAAa,OAAyB,MAAM;EACxD,iBAAiB,GAAG;EACpB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,SAAS,IAAI,IAAI,MAAM;EACzB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,CAA4B;CAChF;AACF,CAAC;;;AC3ED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,SAAS;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACvE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,aAAa,EACX,QACA,mBAAmB,OAA2B,YAAY,CAAC,CAAC,aAAa,GACzE,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;ACXD,SAAgB,QAAQ,OAA+B;CAErD,OAAO,EAAE,KADG,eAAe,YAAY,OAAO,YAAY,CAC/C,EAAE;AACf;;;;;;;ACHA,SAAS,WAAW,MAAuB;CACzC,OAAO,EAAE,KAAK,KAAK,KAAK,OAA8C,KAAK,UAAU,IAAI,UAAU,CAAC;AACtG;;;;;;;AAQA,MAAa,SAAS,gBAAgB;CACpC,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAgC,SAAS,KAAA;EAAU;EACjE,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,QAAQ;GAAE,MAAM;GAAgC,SAAS,KAAA;EAAU;EACnE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,QAAQ,KAAkB;EACtC,aAAa;GACX,MAAM,WAAW,MAAM,UAAU;GACjC,OAAO,EACL,OACA,IAAI,IAAI,MAAM,aAAa,GAC3B,WAAW,QAAQ,IACf,WACA,CAAC,EACC,KACA,IAAI,IAAI,MAAM,cAAc,GAC5B,IAAI,IAAI,MAAM,MAAM,IAAI,UAAU,CACpC,CAAC,CACP;EACF;CACF;AACF,CAAC;;;AC5CD,MAAMC,SAAkC,OAAO,UAAU;AAEzD,SAAgB,aAAa,KAAyB;CACpD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;;;ACFA,SAAgB,SACd,OACA,gBACc;CACd,MAAM,UAAU,WAAW,qBAAqB;EAAE,GAAG;EAAO;CAAe,EAAE;CAE7E,OAAO;EAAE;EAAS,KADN,eAAe,aAAa,SAAS,YAAY,CACzC;CAAE;AACxB;;;ACZA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,OAAO;EAEL,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,eAAe;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;CACpD;CAEA,OAAO,EACL,kBAAkB,aAAsD,KAC1E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAuC,YAAW,KAAK,iBAAiB,OAAO;EACrF,MAAM,MAAM,SAAS,OAAqB,MAAM;EAChD,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,QAAQ,IAAI,IAAI,MAAM;GACtB,QAAQ,IAAI,IAAI,MAAM;GACtB,cAAc,IAAI,IAAI,MAAM;EAC9B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,gBAAgB;EAC5B,MAAM,UAAU,IAA6B,IAAI;EAGjD,YAAY,IAAI,IAAI,MAAM,SAAS,WAAW;GAC5C,MAAM,EAAE,YAAY;GACpB,IAAI,WAAW,aAAa,QAAQ,UAAU,MAAM,WAClD;GACF,MAAM,MAAM,QAAQ;GACpB,IAAI,KAAK,YAAY,IAAI,eAAe,KAAK,IAAI,eAAe,IAAI,KAClE,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;EACvC,GAAG;GAAE,WAAW;GAAM,OAAO;EAAO,CAAC;EAGrC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,cAAc;GAC/B,KAAK;EACP,CAAC;CACH;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;;;AC3DD,MAAMC,SAA2C,OAAO,oBAAoB;AAE5E,SAAgB,sBAAsB,KAAkC;CACtE,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,2BAAkD;CAChE,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mDAAmD;CACrE,OAAO;AACT;;;;ACCA,SAAgB,kBACd,OACA,QACA,oBAA8C,MACvB;CACvB,MAAM,cAAc,IAAwB,IAAI;CAChD,MAAM,UAAU,WAAW,8BAA8B;EAAE,GAAG;EAAO;CAAO,EAAE;CAE9E,QAAQ,KAAK,IAAI,uBAAuB,YAAY,KAAK;CACzD,QAAQ,KAAK,IAAI,eAAe,WAAW;CAG3C,OAAO;EAAE,KADG,eAAe,sBAAsB,SAAS,YAAY,CAC3D;EAAG;EAAS;CAAY;AACrC;;;;ACpBA,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CAEN,OAAO;EACL,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;;EAE7C,QAAQ;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;CAC7E;CACA,OAAO,EACL,YAAY,KACd;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAA8C,KAAK,MAAM;EAE/D,MAAM,MAAM,kBAAkB,OAA8B,cAAc,MAAM,UAAU,IAAI;EAC9F,sBAAsB,GAAG;EACzB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;EAC1B,CAAC,CAAC;CACJ;AACF,CAAC;;AAGD,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,yBAAyB;EACrC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,iBAAiB;GAClC,MAAM,OAAgB;IAAE,IAAI,YAAY,QAAQ;GAAkB;EACpE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;;;ACzCD,MAAMC,SAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;;;ACFA,SAAgB,UACd,OACA,wBACe;CAIf,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;CAAuB,IADtE,YAAY,MADZ,qBACsB,CACwD,CAAC;CAE7F,OAAO,EAAE,KADG,eAAe,cAAc,SAAS,YAAY,CACnD,EAAE;AACf;;;;ACbA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CAEN,OAAO;EACL,gBAAgB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACpD,uBAAuB;EACvB,YAAY;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC/C,qBAAqB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxD,gBAAgB;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;EACrF,aAAa;EACb,YAAY;EACZ,UAAU;CACZ;CAEA,OAAO;EACL,2BAA2B,aAA+D;EAC1F,0BAA0B,oBAAmF;CAC/G;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAiD,YAAY;GACjE,KAAK,0BAA0B,OAAO;GACtC,KAAK,yBAAyB,QAAQ,SAAS;EACjD;EACA,MAAM,MAAM,UAAU,OAAsB,MAAM;EAClD,cAAc,GAAG;EACjB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAGD,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;;;ACtED,MAAMC,SAAiC,OAAO,SAAS;AAEvD,SAAgB,YAAY,KAAwB;CAClD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT;;;ACZA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EACL,UAAU;EACV,WAAW;EACX,OAAO;EACP,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;;EAE3D,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAK;CACpC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,YAAY;GACrC,UAAU,MAAM;GAChB,WAAW,MAAM;GACjB,OAAO,MAAM;GACb,MAAM,MAAM;EACd,GAAG,YAAY,CAAC;EAChB,YAAY,EAAE,IAAI,CAAC;EACnB,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,OAAO;;AAEL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAK,EACpC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAGD,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;AAGD,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,wBAAwB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,mBAAmB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;;;ACpED,MAAMC,SAAoC,OAAO,YAAY;AAC7D,MAAMC,aAA6C,OAAO,iBAAiB;AAC3E,MAAMC,cAAmD,OAAO,uBAAuB;AAEvF,SAAgB,eAAe,KAA2B;CACxD,QAAQF,QAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT;AAEA,SAAgB,mBAAmB,KAA+B;CAChE,QAAQC,YAAU,GAAG;AACvB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,YAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,wCAAwC;CAC1D,OAAO;AACT;AAEA,SAAgB,wBAAwB,KAAoC;CAC1E,QAAQC,aAAW,GAAG;AACxB;AAEA,SAAgB,6BAAsD;CACpE,MAAM,MAAM,OAAOA,aAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,4CAA4C;CAC9D,OAAO;AACT;;;AClCA,SAAgB,WACd,OACA,eACgB;CAIhB,MAAM,UAAU,WAAW,uBAAuB;EAAE,GAAG;EAAO;CAAc,IAF9D,YAAY,MADZ,qBACsB,CAEgD,CAAC;CAErF,OAAO;EAAE,KADG,eAAe,eAAe,SAAS,YAAY,CACpD;EAAG;CAAQ;AACxB;;;ACTA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;;EAEzE,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EAClF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EACzF,UAAU;EACV,eAAe;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;EACpF,UAAU;EACV,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,WAAW;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC/C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;CAC3E;CAEA,OAAO;EACL,iBAAiB,aAAuD;EACxE,iBAAiB,WAA8D;CACjF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAyC,YAAY;GACzD,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,WAAW,OAAuB,MAAM;EACpD,eAAe,GAAG;EAClB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,CAC7E,GAAI,MAAM,UACN,MAAM,QAAQ;GACd,OAAO,IAAI,IAAI,MAAM;GACrB,eAAe,IAAI,IAAI,MAAM;GAC7B,cAAc,IAAI,IAAI,MAAM;GAC5B,YAAY,IAAI,IAAI,MAAM;GAC1B,UAAU,IAAI,IAAI,MAAM;GACxB,QAAQ,IAAI,IAAI,MAAM;GACtB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,KAAK,CAAC,IACL,MAAM,aACJC,oBACE,IAAI,IAAI,MAAM,YACd,MAAM,QAAQ,MAAM,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,IAAI,OAC1D,MAAM,IACR,IACA,CAAC,CACT,CAAC;CACH;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,QAAQ,gBAAuC,EAAE,OAAO,MAAM,MAAM,EAAE;EAC5E,wBAAwB,EAAE,MAAM,CAAC;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CAClH;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,EAAE,UAAU,2BAA2B;EAC7C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,uBAAuB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CACxH;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,OAAO,gBAAkC;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EAChG,mBAAmB,EAAE,KAAK,CAAC;EAE3B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;EACtC,CAAC;EACD,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAO,GACpF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,EAAE,SAAS,sBAAsB;EACvC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,EAAE,SAAS,sBAAsB;EACvC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;;;;;AAMD,SAASA,oBACP,YACA,OACA,UACS;CACT,OAAO,CACL,GAAI,QAAQ,CAAC,EAAE,gBAAgB,YAAY,KAAK,CAAC,IAAI,CAAC,GACtD,EAAE,kBAAkB,YAAY,WAAW,KAAI,SAC7C,EAAE,eAAe;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,CAC7D,EAAE,mBAAmB,YAAY,WAAW,IAAI,KAAK,KAAK,KAAK,GAC/D,EAAE,sBAAsB,CAC1B,CAAC,CACH,CAAC,CACH;AACF;;;AChLA,MAAMC,SAAuC,OAAO,gBAAgB;AAEpE,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;;;ACJA,SAAgB,cACd,OACA,eACmB;CACnB,MAAM,UAAU,WAAW,0BAA0B;EAAE,GAAG;EAAO;CAAc,EAAE;CAEjF,OAAO,EAAE,KADG,eAAe,kBAAkB,SAAS,YAAY,CACvD,EAAE;AACf;;;ACRA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC7C,QAAQ;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAgC,SAAS,KAAA;EAAU;EAClF,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC7C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,SAAS;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC5C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,cAAc;GAAE,MAAM;GAAqD,SAAS,KAAA;EAAU;CAChG;CAEA,OAAO;EACL,iBAAiB,aAA0D;EAC3E,iBAAiB,WAAiE;CACpF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA4C,YAAY;GAC5D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,cAAc,OAA0B,MAAM;EAC1D,kBAAkB,GAAG;EACrB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,SAAS,IAAI,IAAI,MAAM;GACvB,eAAe,IAAI,IAAI,MAAM;EAC/B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;;;AC1DD,MAAMC,SAAgC,OAAO,QAAQ;AAErD,SAAgB,WAAW,KAAuB;CAChD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,gBAA4B;CAC1C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6BAA6B;CAC/C,OAAO;AACT;;;;;;;ACMA,SAAgB,OACd,OACA,eACY;CACZ,MAAM,cAAc,IAAwB,IAAI;CAChD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,sBAAsB,EAAE,cAAc,IAAI,KAAK;CAG1E,IAAI,OAAO,aAAa,aACtB,QAAQ,KAAK,IAAI,UAAU,oBAAoB;EAAE;EAAO,aAAa;CAAM,CAAC,CAAC;CAG/E,QAAQ,KAAK,IAAI,uBAAuB,YAAY,KAAK;CACzD,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CAGvD,MAAM,CAAC,aAAa,UAAU,SAAS;EACrC,QAAQ,KAAK,IAAI,OAAO,CAAC,EAAE,SAAS;CACtC,CAAC;CAGD,OAAO;EAAE,KADG,eAAe,WAAW,SAAS,OAAO,YAAY,CACvD;EAAG;EAAa;CAAW;AACxC;;;ACxCA,MAAa,YAAY,gBAAgB;CACvC,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,SAAS;EACT,cAAc;GAAE,MAAM;GAA8C,SAAS,KAAA;EAAU;CACzF;CAEA,OAAO,EACL,iBAAiB,aAAgE,KACnF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAiD,YAAW,KAAK,gBAAgB,OAAO;EAC9F,MAAM,MAAM,OAAO,OAAmB,MAAM;EAC5C,WAAW,GAAG;EACd,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,gBAAgB,IAAI,IAAI,MAAM;EAChC,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,cAAc;EAE1B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,iBAAiB;GAClC,KAAK,IAAI;EACX,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,cAAc;EAE1B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,KAAK,IAAI;EACX,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,YAAY,gBAAgB;CACvC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,cAAc;EAE1B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;;;ACxDD,MAAMC,SAAoC,OAAO,YAAY;AAE7D,SAAgB,eAAe,KAA2B;CACxD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT;;;ACXA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,WAAW;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EAC5E,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;EACd,UAAU;CACZ;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,eAAe,OAAuB,YAAY,CAAC;EAC9E,eAAe,EAAE,IAAI,CAAC;EACtB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;;;;;;;;;AAUD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa;GACX,MAAM,SAAkB,CAAC;GACzB,IAAI,WAAW,MAAM,UAAU,CAAC,GAC9B,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,MAAM,QAAQ,KAAK;IAC7C,MAAM,OAAO,IAAI;IACjB,OAAO,KAAK,EACV,OACA;KACE,gBAAgB,OAAO,CAAC;KACxB,eAAe,OAAO,SAAS,KAAA;KAC/B,SAAS,OAAO,OAAO,KAAA;IACzB,GACA,MAAM,UAAU,CAClB,CAAC;GACH;GAEF,OAAO,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM;EACpF;CACF;AACF,CAAC;;;AC7CD,MAAMC,SAAoC,OAAO,YAAY;AAC7D,MAAMC,aAA6C,OAAO,iBAAiB;AAE3E,SAAgB,eAAe,KAA2B;CACxD,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT;AAEA,SAAgB,mBAAmB,KAA+B;CAChE,QAAQC,YAAU,GAAG;AACvB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,YAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,wCAAwC;CAC1D,OAAO;AACT;;;ACTA,SAAgB,WACd,OACA,WAA0G,CAAC,GAC3F;CAChB,MAAM,WAAW,IAA2B,IAAI;CAChD,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,uBAAuB;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CAEnF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,SAAS,KAAK,CAAC,CAAC,OAAO,OAAO;GAC/C,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;EACvD,QAAQ,KAAK,IAAI,oBAAoB,SAAS,KAAK;CACrD;CAGA,IAAI,gBAAgB;CACpB,MAAM,kBAAwB;EAC5B,IAAI,eACF;EACF,gBAAgB;EAChB,eAAoB;GAClB,gBAAgB;GAChB,IAAI,QAAQ,UAAU,MAAM,WAC1B,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;EACvC,CAAC;CACH;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,eAAe,SAAS,YAAY,CAC3C;EAAG;EAAU;EAAe;EAAY;CAAU;AACxE;;;AChEA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,QAAQ;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EACnF,YAAY;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACzE,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,UAAU;EACV,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,cAAc;GAAE,MAAM;GAAyC,SAAS,KAAA;EAAU;EAClF,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAAuD;EACxE,iBAAiB,aAAuD;EACxE,WAAW,aAAkD;EAC7D,gBAAgB,aAAsD;EACtE,iBAAiB,WAA8D;CACjF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAA8C,YAAY;GAC9D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,eAA6C,YAAW,KAAK,gBAAgB,OAAO;EAC1F,MAAM,gBAAyC,YAAW,KAAK,UAAU,OAAO;EAChF,MAAM,cAA2C,YAAW,KAAK,eAAe,OAAO;EAEvF,MAAM,MAAM,WAAW,OAAuB;GAC5C,eAAe;GACf,eAAe;GACf,UAAU;GACV,cAAc;EAChB,CAAC;EACD,eAAe,GAAG;EAGlB,UAAU,IAAI,SAAS;EACvB,UAAU,IAAI,SAAS;EAEvB,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,GAC3B,MAAM,UACF,MAAM,QAAQ;GACZ,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,cAAc,IAAI,IAAI,MAAM;GAC5B,kBAAkB,IAAI,IAAI,MAAM;GAChC,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,IACD,MAAM,aACJC,oBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,IAAI,IACtD,CAAC,CACT;CACF;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO;;;;;AAKL,IAAI;EAAE,MAAM;EAAsC,SAAS;CAAW,EACxE;CACA,MAAM,OAAO;EACX,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,MAAM,IAAI;GACvB,GAAG,IAAI,IAAI,MAAM,cAAc,EAAE,IAAI,MAAM,GAAG,CAAC;GAC/C,MAAM,OAAgB;IAAE,IAAI,SAAS,QAAQ;GAAqB;EACpE,CAAC;CACH;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,OAAO,gBAAkC;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EAChG,mBAAmB,EAAE,KAAK,CAAC;EAE3B,UAAU,IAAI,SAAS;EACvB,YAAY,IAAI,SAAS;EAEzB,YAAY,MAAM,OAAO,IAAI,SAAS;EACtC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,EAAE,SAAS,sBAAsB;EACvC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;;;;;;AAOD,SAASA,oBACP,YACA,UACS;CACT,OAAO,CACL,EAAE,cAAc,GAChB,EAAE,qBAAqB,YAAY,CACjC,EAAE,kBAAkB,YAAY,WAAW,KAAI,SAC7C,EAAE,eAAe;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,CAC7D,EAAE,mBAAmB,YAAY,WAAW,IAAI,KAAK,KAAK,KAAK,CACjE,CAAC,CACH,CAAC,CACH,CAAC,CACH;AACF;;;ACjKA,MAAMC,SAAiC,OAAO,SAAS;AAEvD,SAAgB,YAAY,KAAwB;CAClD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT;;;ACKA,SAAgB,QACd,OACA,cACA,UACa;CACb,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,oBAAoB;EAAE,GAAG;EAAO;EAAc;CAAS,IAAI,KAAK;CAE3F,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,YAAY,SAAS,YAAY,CACxC;EAAG;EAAY;EAAe;CAAW;AAC/D;;;AChDA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACtE,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAAmD;EACnE,WAAW,aAA+C;EAC1D,gBAAgB,UAAwD;CAC1E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,cAAyC,YAAY;GACzD,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,gBAAsC,YAAW,KAAK,UAAU,OAAO;EAC7E,MAAM,MAAM,QAAQ,OAAoB,YAAY,YAAY;EAChE,YAAY,GAAG;EACf,aAAc,MAAM,UAChB,MAAM,QAAQ;GAAE,MAAM,IAAI,IAAI,MAAM;GAAM,SAAS,IAAI,IAAI,MAAM;EAAQ,CAAC,IAC1E,MAAM,aACJC,oBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,UAAU,KAAK,MAAM,MAAM,IAAI,IACjF,CAAC;CACT;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAE3B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,MAAM,IAAI;GAChB,IAAI,IAAI,UAAU,MAAM,WACtB;GACF,IAAI,OAAO,SAAS,IAAI,MAAM,iBAAiB,MAAM,OAAO,OAC1D,IAAI,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EAChD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;EACtC,CAAC;EACD,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa;IAAE,OAAO,MAAM;IAAO,UAAU,MAAM;GAAS,CAAC;GAA8B,KAAK;EAAO,GAC1H,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,CAA4B;CACpF;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,CAA4B;CAChF;AACF,CAAC;;;;;;AAOD,SAASA,oBACP,YACA,SACA,UACS;CACT,OAAO,CACL,EAAE,eAAe,YAAY,WAAW,CAAC,CAAC,GAC1C,EAAE,kBAAkB,YAAY,CAC9B,EAAE,eAAe,YAAY,WAAW,SAAS,MAAM,UAAU,CAE/D,GAAI,QAAQ,KAAK,KAAK,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,KAAK,aAAa,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GACpG,EAAE,YAAY;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,WAAW,IAAI,KAAK,KAAK,KAAK,CAC5F,CAAC,CAAC,CACJ,CAAC,CACH;AACF;;;ACpIA,MAAMC,SAAoC,OAAO,YAAY;AAC7D,MAAM,WAA6C,OAAO,iBAAiB;AAC3E,MAAMC,aAA6C,OAAO,iBAAiB;AAC3E,MAAM,YAA+C,OAAO,kBAAkB;AAE9E,SAAgB,eAAe,KAA2B;CACxD,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT;AAEA,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,UAAU,GAAG;AACvB;;AAGA,SAAgB,wBAAmD;CACjE,OAAO,OAAO,UAAU,IAAI;AAC9B;AAEA,SAAgB,mBAAmB,KAA+B;CAChE,QAAQC,YAAU,GAAG;AACvB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,YAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,wCAAwC;CAC1D,OAAO;AACT;AAEA,SAAgB,oBAAoB,KAAgC;CAClE,QAAQ,WAAW,GAAG;AACxB;AAEA,SAAgB,yBAA8C;CAC5D,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,wCAAwC;CAC1D,OAAO;AACT;;;ACzCA,SAAgB,WACd,OACA,eACA,UACgB;CAChB,MAAM,UAAU,IAAwB,IAAI;CAE5C,MAAM,2BAAW,IAAI,IAAyB;CAC9C,MAAM,8BAAc,IAAI,IAAyB;CACjD,MAAM,2BAAW,IAAI,IAAyB;CAE9C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,uBAAuB;EAAE,GAAG;EAAO;EAAe;CAAS,IAAI,KAAK;CAE/F,MAAM,OAAO,WAA0D,OAAO,OAAO;EACnF,IAAI,IACF,MAAM,IAAI,OAAO,EAAE;OAEnB,MAAM,OAAO,KAAK;CACtB;CACA,MAAM,WAAW,gBAA8D;EAC7E,MAAM,QAAQ,QAAQ,QAAQ,IAAI,OAAO,KAAK;EAC9C,OAAO,SAAS,OAAO,OAAO,MAAM,IAAI,KAAK,KAAK;CACpD;CAEA,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,MAAM,QAAQ,QAAQ;GAEtB,gBAAgB,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,OAAO;GAC9C,eAAe;GACf,gBAAgB,CAAC;GAEjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,eAAe,QAAQ,QAAQ,CAAC;EACjD,QAAQ,KAAK,IAAI,iBAAiB,QAAQ,WAAW,CAAC;EACtD,QAAQ,KAAK,IAAI,gBAAgB,QAAQ,QAAQ,CAAC;EAClD,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CACnD;CAGA,OAAO;EACL;EACA,KAHU,eAAe,eAAe,SAAS,YAAY,CAG3D;EACF;EACA,iBAAiB,IAAI,QAAQ;EAC7B,oBAAoB,IAAI,WAAW;EACnC,iBAAiB,IAAI,QAAQ;CAC/B;AACF;;;;AC/DA,SAAS,eAAe,UAA+B,OAAuD;CAC5G,MAAM,OAAO,IAAwB,IAAI;CACzC,MAAM,QAAQ,MAAM,SAAS;EAC3B,IAAI,SAAS,MACX;EACF,SAAS,MAAM,IAAI;EACnB,SAAS,MAAM,KAAK,KAAK;CAC3B,CAAC;CACD,sBAAsB,SAAS,MAAM,GAAG,IAAI,CAAC;CAC7C,QAAQ,OAAO;EACb,KAAK,QAAQ;EACb,SAAS,MAAM,GAAG,EAAE;CACtB;AACF;;AAGA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACzE,OAAO;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACrE,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EAC5E,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,WAAW;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC/C,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAAuD;EACxE,WAAW,aAAkD;EAC7D,iBAAiB,WAA8D;CACjF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAA8C,YAAY;GAC9D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,gBAAyC,YAAW,KAAK,UAAU,OAAO;EAChF,MAAM,MAAM,WAAW,OAAuB,aAAa,YAAY;EACvE,eAAe,GAAG;EAClB,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,aAAa;GAC9B,MAAM,OAAgB;IAAE,IAAI,QAAQ,QAAQ;GAAkB;EAChE,GAAG,MAAM,UACL,MAAM,QAAQ;GACZ,OAAO,IAAI,IAAI,MAAM;GACrB,MAAM,IAAI,IAAI,MAAM;GACpB,UAAU,IAAI,IAAI,MAAM;EAC1B,CAAC,IACD,MAAM,aACJC,oBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,IAAI,IACtD,CAAC,CAAC;CACV;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAE9B,MAAM,QAAQ,eAAe,IAAI,uBAAuB,MAAM,KAAK;EACnE,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;IAAE,OAAO,MAAM;IAAO,UAAU,MAAM;GAAS,CAAC;GACjF,MAAM,OAAgB,MAAM,EAAwB;EACtD,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,OAAO,gBAAqC,EAAE,OAAO,MAAM,MAAM,EAAE;EAEzE,mBAAmB,EAAE,KAAK,CAAC;EAC3B,MAAM,QAAQ,eAAe,IAAI,0BAA0B,MAAM,KAAK;EACtE,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB,KAAK,KAAK;GAC9C,MAAM,OAAgB,MAAM,EAAwB;EACtD,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM;EAAQ,SAAS,KAAA;CAAU,EAC5C;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,YAAY,sBAAsB;EACxC,IAAI,MAAM,SAAS,QAAQ,CAAC,WAC1B,MAAM,IAAI,MAAM,4DAA4D;EAC9E,MAAM,OAAO,gBAAqC,EAAE,OAAO,MAAM,SAAS,UAAW,KAAK,MAAM,MAAM,EAAE;EACxG,MAAM,QAAQ,eAAe,IAAI,uBAAuB,KAAK,MAAM,KAAK;EACxE,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB,KAAK,KAAK;GAC3C,MAAM,OAAgB,MAAM,EAAwB;EACtD,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,QAAQ,gBAAmC,EAAE,OAAO,MAAM,MAAM,EAAE;EACxE,oBAAoB,EAAE,MAAM,CAAC;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,EAAE,UAAU,uBAAuB;EACzC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,mBAAmB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CACpH;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,OAAO,gBAAkC;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EAChG,mBAAmB,EAAE,KAAK,CAAC;EAE3B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;EACtC,CAAC;EACD,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAO,GACpF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,EAAE,SAAS,sBAAsB;EACvC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,MAAM,EAAE,SAAS,sBAAsB;EACvC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,CAA4B;CACpF;AACF,CAAC;;;;;;AAOD,SAASA,oBACP,YACA,UACS;CACT,OAAO,CACL,GAAG,WAAW,KAAI,SAChB,EAAE,kBAAkB;EAAE,KAAK,WAAW,KAAK;EAAS,OAAO,KAAK;CAAM,SAAS,KAAK,KAAK,CAC3F,GACA,GAAG,WAAW,KAAI,SAChB,EAAE,qBAAqB;EAAE,KAAK,cAAc,KAAK;EAAS,OAAO,KAAK;CAAM,SAAS,CACnF,EAAE,kBAAkB,YAAY,KAAK,MAAM,KAAI,SAC7C,EAAE,eAAe;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,CAC7D,EAAE,mBAAmB,YAAY,WAAW,IAAI,KAAK,KAAK,KAAK,CACjE,CAAC,CACH,CAAC,CACH,CAAC,CACH,CACF;AACF;;;ACrPA,MAAMC,SAA2C,OAAO,oBAAoB;AAE5E,SAAgB,sBAAsB,KAAkC;CACtE,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,2BAAkD;CAChE,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mDAAmD;CACrE,OAAO;AACT;;;ACEA,SAAgB,kBACd,OACA,eACuB;CACvB,MAAM,UAAU,IAAwB,IAAI;CAI5C,MAAM,UAAU,WAAW,8BAA8B;EAAE,GAAG;EAAO;CAAc,IADrE,YAAY,MAFZ,qBAEsB,CACuD,CAAC;CAG5F,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CAGjD,OAAO;EAAE,KADG,eAAe,sBAAsB,SAAS,YAAY,CAC3D;EAAG;EAAS;CAAQ;AACjC;;;;ACpBA,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAyC,SAAS,KAAA;EAAU;EAChF,OAAO;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACrE,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EAC5E,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,eAAe;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAClD,mBAAmB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACtD,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAyD,SAAS,KAAA;EAAU;EAClG,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAA8D;EAC/E,iBAAiB,WAAqE;CACxF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAgD,YAAY;GAChE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,kBAAkB,OAA8B,MAAM;EAClE,sBAAsB,GAAG;EACzB,aAAa;GAEX,MAAM,WAAW,MAAM,UAAU;GACjC,MAAM,WAAW,WAAW,QAAQ,IAChC,WACC,MAAM,aAAaC,oBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,KAAK,IAAI,KAAA;GACnF,OAAO,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,QAAQ;EACnF;CACF;AACF,CAAC;AAGD,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,yBAAyB;EACrC,aAAa,EAAE,MAAM;GACnB,GAAG,IAAI,IAAI,MAAM,aAAa;GAC9B,MAAM,OAAgB;IAAE,IAAI,QAAQ,QAAQ;GAAkB;EAChE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;;AAGD,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,yBAAyB;EACrC,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,yBAAyB;EACrC,aAAa,EACX,UACA,IAAI,IAAI,MAAM,gBAAgB;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,CAAC,GAC9E,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAGD,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,yBAAyB;EACrC,aAAa,EACX,OACA,IAAI,IAAI,MAAM,gBAAgB,EAAE,OAAO,MAAM,MAAM,CAAC,GACpD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;AAGD,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,OAAO,EACL,SAAS,QACX;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,yBAAyB;EACrC,aAAa,EACX,KACA,IAAI,IAAI,MAAM,aAAa,EAAE,SAAS,MAAM,QAAQ,CAAC,GACrD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;AAGD,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,yBAAyB;EACrC,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,kBAAkB,CAA4B;CACnF;AACF,CAAC;;AAGD,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,yBAAyB;EACrC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;;;;;;AAOD,SAASA,oBACP,YACA,WACS;CACT,OAAO,CACL,EAAE,sBAAsB,YAAY,CAClC,GAAG,WAAW,KAAI,SAAQ,EAAE,sBAAsB,EAAE,KAAK,KAAK,MAAM,SAClE,KAAK,QAAQ,OACT,CAAC,EAAE,sBAAsB;EAAE,MAAM,KAAK;EAAM,SAAS,KAAK;CAAQ,SAAS,KAAK,KAAK,CAAC,IACtF,CACE,EAAE,yBAAyB,EAAE,OAAO,KAAK,MAAM,SAAS,KAAK,KAAK,GAClE,EAAE,yBAAyB,EAAE,OAAO,KAAK,MAAM,SAAS,YAAY,IAAI,KAAK,CAAC,CAAC,CACjF,CACL,CAAC,GACF,EAAE,yBAAyB,CAC7B,CAAC,CACH;AACF;;;;;;;;;AC/IA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,IAAI;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACvC,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,QAAQ;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EAC9E,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,QAAQ;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC5C,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAAyC,SAAS,KAAA;EAAU;CAC5E;CACA,OAAO,EACL,SAAS,aAA0D,KACrE;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA4C,YAA0C;GAC1F,KAAK,UAAU,OAAO;EACxB;EACA,MAAM,UAAU,WAAW,+BAA+B;GAAE,GAAG;GAAO,UAAU;EAAO,EAAE;EACzF,MAAM,MAAM,eAAe,uBAAuB,SAAS,YAAY,CAAC;EAExE,aAAa;GACX,MAAM,UAAU,IAAI;GACpB,MAAM,UAAU,MAAM,UAAU;IAAE,OAAO,QAAQ;IAAO,MAAM,QAAQ;GAAK,CAAC;GAC5E,OAAO,EACL,QACA,QAAQ,aAAa,GAErB,WAAW,OAAO,IAAI,UAAU,QAAQ,IAC1C;EACF;CACF;AACF,CAAC;;;AClDD,MAAMC,SAAwC,OAAO,iBAAiB;AAEtE,SAAgB,mBAAmB,KAA+B;CAChE,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;;;ACJA,SAAgB,eACd,OACA,eACoB;CACpB,MAAM,UAAU,WAAW,2BAA2B;EAAE,GAAG;EAAO;CAAc,EAAE;CAElF,OAAO,EAAE,KADG,eAAe,mBAAmB,SAAS,YAAY,CACxD,EAAE;AACf;;;ACRA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO;EAEL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,UAAU;EACV,UAAU;EACV,UAAU;EACV,SAAS;EACT,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,gBAAgB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACnD,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAA2D;EAC5E,iBAAiB,WAAkE;CACrF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA6C,YAAY;GAC7D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,eAAe,OAA2B,MAAM;EAC5D,mBAAmB,GAAG;EACtB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,eAAe,IAAI,IAAI,MAAM;GAC7B,OAAO,IAAI,IAAI,MAAM;GACrB,cAAc,IAAI,IAAI,MAAM;GAC5B,cAAc,IAAI,IAAI,MAAM;GAC5B,UAAU,IAAI,IAAI,MAAM;GACxB,WAAW,IAAI,IAAI,MAAM;GACzB,WAAW,IAAI,IAAI,MAAM;EAC3B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,CAA4B;CAClF;AACF,CAAC;AAED,MAAa,gCAAgC,gBAAgB;CAC3D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,yBAAyB,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,gCAAgC,gBAAgB;CAC3D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,yBAAyB,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;;;AC9ED,MAAMC,SAAuC,OAAO,gBAAgB;AAEpE,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;;;;ACVA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,UAAU;CACZ;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,kBAAkB,OAA0B,YAAY,CAAC;EACpF,kBAAkB,EAAE,IAAI,CAAC;EACzB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;;;;;AAMD,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,OAAO,EACL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAS,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EACX,MAAM,IACN,IAAI,IAAI,MAAM,oBAAoB,GAClC,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAGD,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAGD,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAGD,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;;;ACvED,MAAMC,SAAuC,OAAO,eAAe;AAEnE,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;;;ACJA,SAAgB,cACd,OACA,cACmB;CACnB,MAAM,UAAU,WAAW,0BAA0B;EAAE,GAAG;EAAO;CAAa,EAAE;CAEhF,OAAO,EAAE,KADG,eAAe,kBAAkB,SAAS,YAAY,CACvD,EAAE;AACf;;;ACRA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,cAAc;GAAE,MAAM;GAAqD,SAAS,KAAA;EAAU;EAC9F,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAAyD;EACzE,gBAAgB,UAA8D;CAChF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA2C,YAAY;GAC3D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,cAAc,OAA0B,MAAM;EAC1D,kBAAkB,GAAG;EAErB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;GACrB,YAAY,IAAI,IAAI,MAAM;GAC1B,OAAO,IAAI,IAAI,MAAM;GACrB,WAAW,IAAI,IAAI,MAAM;GACzB,cAAc,IAAI,IAAI,MAAM;GAC5B,UAAU,IAAI,IAAI,MAAM;GACxB,SAAS,IAAI,IAAI,MAAM;GACvB,cAAc,IAAI,IAAI,MAAM;GAC5B,cAAc,IAAI,IAAI,MAAM;GAC5B,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EACX,UACA,IAAI,IAAI,MAAM,aAAa,EAAE,MAAM,OAAO,MAAM,KAAK,EAAE,CAAC,GACxD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;;;ACxFD,MAAMC,SAAqC,OAAO,cAAc;AAEhE,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;;;ACFA,SAAgB,YACd,OACA,WAA+E,CAAC,GAC/D;CAIjB,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO,GAAG;CAAS,IAD7D,YAAY,MADZ,qBACsB,CAC+C,CAAC;CAEpF,OAAO,EAAE,KADG,eAAe,gBAAgB,SAAS,YAAY,CACrD,EAAE;AACf;;;ACbA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO;EAEL,OAAO;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC/D,cAAc;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAEtE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,MAAM;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACnE,MAAM;EACN,KAAK;EACL,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,UAAU;EACV,SAAS;EACT,gBAAgB;EAChB,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,cAAc;GAAE,MAAM;GAAmD,SAAS,KAAA;EAAU;CAC9F;CAEA,OAAO;EACL,iBAAiB,aAAwD;EACzE,mBAAmB,aAA0D;EAC7E,iBAAiB,WAA+D;CAClF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,iBAAiD,YAAY;GACjE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,mBAAoD,YAAW,KAAK,kBAAkB,OAAO;EACnG,MAAM,MAAM,YAAY,OAAwB;GAAE;GAAe;EAAgB,CAAC;EAClF,gBAAgB,GAAG;EACnB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,eAAe,IAAI,IAAI,MAAM;GAC7B,UAAU,IAAI,IAAI,MAAM;GACxB,QAAQ,IAAI,IAAI,MAAM;GACtB,cAAc,IAAI,IAAI,MAAM;GAC5B,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO;EACX,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,EAAE,OAAO,KAAK,MAAM,OAAO,MAAM,KAAK,CAAC,EAAE,CAAC,CAA4B;CAC5H;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,CAA4B;CACxF;AACF,CAAC;;;AChFD,MAAMC,SAAuC,OAAO,eAAe;AAEnE,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;;;ACKA,SAAgB,cACd,OACA,QACmB;CACnB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CAKrC,MAAM,UAAU,WAAW,uBAA+C;EACxE,MAAM,MAAM;EACZ,aAAa,MAAM;EACnB,WAAW,MAAM;EACjB,QAAQ,MAAM;EACd,eAAe,MAAM;EACrB,wBAAwB,MAAM;EAC9B,MAAM,MAAM;EACZ,cAAc,QAAQ;CACxB,IAAI,KAAK;CAET,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAGA,MAAM,UAA6B;EACjC,iBAAiB;GAAE,QAAQ,YAAY;EAAE;EACzC,gBAAgB;GAAE,QAAQ,WAAW;EAAE;CACzC;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,kBAAkB,SAAS,SAAS,YAAY,CACvD;EAAG;EAAY;EAAe;CAAW;AAC/D;;;ACpEA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,eAAe;GAAE,MAAM;GAAS,SAAS;EAAK;EAC9C,wBAAwB;GAAE,MAAM;GAAS,SAAS;EAAK;EACvD,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAAyD;EACzE,gBAAgB,UAA8D;EAC9E,iBAAiB;EACjB,gBAAgB;CAClB;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAS5B,MAAM,MAAM,cAAc,OAAiC;GAPzD,eAAe,YAAY;IACzB,KAAK,eAAe,OAAO;IAC3B,KAAK,eAAe,QAAQ,IAAI;GAClC;GACA,iBAAiB;IAAE,KAAK,SAAS;GAAE;GACnC,gBAAgB;IAAE,KAAK,QAAQ;GAAE;EAE6B,CAAC;EACjE,kBAAkB,GAAG;EACrB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,SAAS,IAAI,IAAI,MAAM;GACvB,SAAS,IAAI,IAAI,MAAM;GACvB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,6BAA6B,gBAAgB;CACxD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,uBAAuB,GAA8B,MAAM,UAAU,CAAC;CAC/G;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;;;ACzGD,MAAMC,SAAoC,OAAO,YAAY;AAE7D,SAAgB,eAAe,KAA2B;CACxD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT;;;ACKA,SAAgB,WACd,OACA,cACgB;CAChB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,uBAAuB;EAAE,GAAG;EAAO;CAAa,IAAI,KAAK;CAEpF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe,MAAM,SAAS;GAC9B,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,eAAe,SAAS,YAAY,CAC3C;EAAG;EAAY;EAAe;CAAW;AAC/D;;;AC/CA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,OAAO;GAAE,MAAM;GAAS,SAAS;EAAM;EACvC,eAAe;GAAE,MAAM;GAAS,SAAS;EAAK;EAC9C,wBAAwB;GAAE,MAAM;GAAS,SAAS;EAAK;EACvD,cAAc;GAAE,MAAM;GAAkD,SAAS,KAAA;EAAU;EAC3F,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAAsD;EACtE,gBAAgB,UAA2D;CAC7E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAwC,YAAY;GACxD,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,WAAW,OAAuB,MAAM;EACpD,eAAe,GAAG;EAClB,aAAa,MAAM,UAAU;GAAE,MAAM,IAAI,IAAI,MAAM;GAAM,SAAS,IAAI,IAAI,MAAM;EAAQ,CAAC;CAC3F;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,CAA4B;CAChF;AACF,CAAC;;;AC5FD,MAAMC,SAAsC,OAAO,cAAc;AACjE,MAAMC,aAA+C,OAAO,mBAAmB;AAE/E,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;AAEA,SAAgB,qBAAqB,KAAiC;CACpE,QAAQC,YAAU,GAAG;AACvB;AAEA,SAAgB,0BAAgD;CAC9D,MAAM,MAAM,OAAOA,YAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,4CAA4C;CAC9D,OAAO;AACT;;;ACqBA,SAAgB,aAAa,OAA2B,SAA6B,CAAC,GAAqB;CACzG,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CAEnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CAErC,MAAM,UAAU,WAAW,uBAAuB;EAChD,MAAM,MAAM;EACZ,aAAa,MAAM;EACnB,WAAW,MAAM;EACjB,QAAQ,MAAM;EACd,eAAe,MAAM;EACrB,wBAAwB,MAAM;EAE9B,OAAO;EACP,cAAc,OAAO;CACvB,IAAI,KAAK;CAGT,MAAM,UAAU,WAAW,uBAAuB;EAChD,YAAY,MAAM;EAClB,OAAO,MAAM;EACb,cAAc,MAAM;EACpB,UAAU,MAAM;EAChB,UAAU,MAAM;EAChB,MAAM,MAAM;EACZ,WAAW,MAAM;EACjB,KAAK,MAAM;EACX,eAAe,OAAO;CACxB,IAAI,KAAK;CAET,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GAEjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAQA,OAAO;EAAE;EAAS;EAAS,KANf,eAAe,iBAAiB;GAC1C;GACA;GACA,OAAO;IAAE,SAAS,MAAM;IAAS,MAAM,MAAM;IAAM,MAAM,MAAM;GAAK;EACtE,GAAG,YAAY,CAEc;EAAG;EAAY;EAAe;CAAW;AACxE;;;AC9GA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EAC3E,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EAClF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EACzF,UAAU;EACV,UAAU;EACV,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,WAAW;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC/C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,wBAAwB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC5D,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAA6D;EAC9E,gBAAgB,aAA4D;EAC5E,iBAAiB,WAAoE;EACrF,gBAAgB,UAAiE;CACnF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAW5B,MAAM,MAAM,aAAa,OAA6B;GATpD,gBAAgB,YAAY;IAC1B,KAAK,gBAAgB,OAAO;IAC5B,KAAK,gBAAgB,QAAQ,KAAK;GACpC;GACA,eAAe,YAAY;IACzB,KAAK,eAAe,OAAO;IAC3B,KAAK,eAAe,QAAQ,IAAI;GAClC;EAEyD,CAAC;EAC5D,iBAAiB,GAAG;EACpB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,YAAY,IAAI,IAAI,MAAM;GAC1B,cAAc,IAAI,IAAI,MAAM;GAC5B,YAAY,IAAI,IAAI,MAAM;GAC1B,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,KAAK,YAAY,IAAI,IAAI,MAAM,YAAY,MAAM,IAAI,CAAC;CAC3E;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,oBAAoB;EAChC,MAAM,OAAO,gBAAoC;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EAClG,qBAAqB,EAAE,KAAK,CAAC;EAE7B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;EACtC,CAAC;EACD,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAO,GACpF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,MAAM,EAAE,SAAS,wBAAwB;EACzC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,MAAM,EAAE,SAAS,wBAAwB;EACzC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;;;;;AAMD,SAAS,YACP,YACA,UACS;CACT,OAAO,WAAW,KAAI,SACpB,EAAE,iBAAiB;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,CAC/D,EAAE,qBAAqB,YAAY,WAAW,IAAI,KAAK,KAAK,KAAK,GACjE,EAAE,wBAAwB,CAC5B,CAAC,CACH;AACF;;;AChKA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS;EAAE;EAClC,KAAK;GAAE,MAAM;GAAQ,SAAS;EAAI;EAClC,MAAM;EACN,MAAM;CACR;CACA,MAAM,OAAO;EACX,aAAa;GACX,MAAM,IAAI,gBAAgB,OAAwB,YAAY;GAC9D,OAAO,EAAE,OAAO,EAAE,aAAa,GAA8B,CAC3D,EAAE,OAAO,EAAE,cAAc,GAA8B,CACrD,EAAE,OAAO,EAAE,cAAc,CAA4B,CACvD,CAAC,CACH,CAAC;EACH;CACF;AACF,CAAC;;;ACjBD,MAAMC,SAAmC,OAAO,YAAY;AAE5D,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT;;;;;;;;;;;ACAA,MAAa,WAAW,gBAAgB;CACtC,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,OAAO;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,UAAU;GAAE,MAAM;GAA8B,SAAS,KAAA;EAAU;CACrE;CACA,MAAM,OAAO,EAAE,SAAS;EAGtB,MAAM,UAAU,WAAW,KAAK;EAChC,MAAM,MAAM,eAAe,cAAc;GACvC,OAAO,MAAM;GACb,OAAO,MAAM;GACb,MAAM,MAAM;GACZ,QAAQ,MAAM;GACd,OAAO,MAAM;GACb,aAAa,MAAM;GACnB,UAAU,MAAM;GAChB,MAAM,QAAQ;EAChB,GAAyB,YAAY,CAAC;EACtC,cAAc,EAAE,IAAI,CAAC;EAErB,aAAa;GACX,MAAM,UAAU,MAAM,UAAU,KAAK,CAAC;GAEtC,QAAQ,QAAQ,WAAW,OAAO;GAElC,MAAM,UAAU,IAAI;GACpB,MAAM,WAAoB,CAAC;GAC3B,IAAI,QAAQ,SAAS,IACnB,SAAS,KAAK,EAAE,QAAQ;IAAE,gBAAgB;IAAW,KAAK,QAAQ;GAAK,CAAC,CAAC;GAC3E,IAAI,QAAQ,YAAY,IACtB,SAAS,KAAK,EAAE,QAAQ;IAAE,gBAAgB;IAAQ,KAAK,QAAQ;GAAQ,CAAC,CAAC;GAC3E,MAAM,OAAO,QAAQ;GACrB,IAAI,MACF,SAAS,KAAK,EAAE,QAAQ;IAAE,gBAAgB;IAAc,KAAK,KAAK;IAAG,KAAK,KAAK;IAAG,SAAS,KAAK;IAAM,UAAU,KAAK;GAAK,CAAC,CAAC;GAC9H,SAAS,KAAK,GAAG,OAAO;GAExB,OAAO,EAAE,OAAO,QAAQ,aAAa,GAA8B,QAAQ;EAC7E;CACF;AACF,CAAC;;;;;AAMD,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;;;ACpED,MAAMC,SAAuC,OAAO,gBAAgB;AACpE,MAAMC,aAAgD,OAAO,qBAAqB;AAElF,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;AAEA,SAAgB,sBAAsB,KAAkC;CACtE,QAAQC,YAAU,GAAG;AACvB;AAEA,SAAgB,2BAAkD;CAChE,MAAM,MAAM,OAAOA,YAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,8CAA8C;CAChE,OAAO;AACT;;;ACjBA,SAAgB,cACd,OACA,eACmB;CAGnB,MAAM,UAAU,WAAW,0BAA0B;EAAE,GAAG;EAAO;CAAc,IADjE,YAAY,MADZ,qBACsB,CACmD,CAAC;CAExF,OAAO;EAAE,KADG,eAAe,kBAAkB,SAAS,YAAY,CACvD;EAAG;CAAQ;AACxB;;;ACfA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;EACL,YAAY;GAAE,MAAM;GAAqC,SAAS,KAAA;EAAU;;EAE5E,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,OAAO;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACrE,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EAC5E,UAAU;EACV,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAA0D;EAC3E,iBAAiB,WAAiE;CACpF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA4C,YAAY;GAC5D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,cAAc,OAA0B,MAAM;EAC1D,kBAAkB,GAAG;EACrB,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,GAC3B,MAAM,UACF,MAAM,QAAQ,IACd,MAAM,aACJC,oBACE,IAAI,IAAI,MAAM,YACd,MAAM,QAAQ,MAAM,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,IAAI,OAC1D,MAAM,IACR,IACA,CAAC,CACT;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,OAAO,gBAAqC;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EACnG,sBAAsB,EAAE,KAAK,CAAC;EAE9B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,MAAM,IAAI;GAChB,IAAI,IAAI,UAAU,MAAM,WACtB;GACF,IAAI,OAAO,SAAS,IAAI,MAAM,iBAAiB,MAAM,OAAO,OAC1D,IAAI,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EAChD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;EACvC,CAAC;EAED,aAAa,EAAE,OAAO;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAO,GAAG;GAC3G,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,KAAK,KAAK,CAA4B;GACnF,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,KAAK,KAAK,CAA4B;GAChF,GAAI,MAAM,UAAU,KAAK,CAAC;EAC5B,CAAC;CACH;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;;;;;AAMD,SAASA,oBACP,YACA,OACA,UACS;CACT,OAAO,CACL,GAAI,QAAQ,CAAC,EAAE,mBAAmB,YAAY,KAAK,CAAC,IAAI,CAAC,GAEzD,GAAG,WAAW,KAAI,SAAQ,EAAE,kBAAkB;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,CAC1F,EAAE,sBAAsB,YAAY,WAAW,IAAI,KAAK,KAAK,KAAK,CACpE,CAAC,CAAC,CACJ;AACF;;;ACzHA,MAAMC,SAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;;;ACCA,SAAgB,UACd,OACA,YAA4E,CAAC,GAC9D;CAGf,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO,GAAG;CAAU,IAD5D,YAAY,MADZ,qBACsB,CAC8C,CAAC;CAEnF,OAAO;EAAE,KADG,eAAe,cAAc,SAAS,YAAY,CACnD;EAAG;CAAQ;AACxB;;;ACfA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO;EAEL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,WAAW;EACX,UAAU;EACV,UAAU;EACV,UAAU;EACV,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAAsD;EACvE,iBAAiB,WAA6D;EAC9E,iBAAiB,aAAsD;CACzE;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,iBAA+C,YAAY;GAC/D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,iBAA+C,YAAY;GAC/D,KAAK,gBAAgB,OAAO;EAC9B;EACA,MAAM,MAAM,UAAU,OAAsB;GAAE;GAAe;EAAc,CAAC;EAC5E,cAAc,GAAG;EACjB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,cAAc,IAAI,IAAI,MAAM;GAC5B,kBAAkB,IAAI,IAAI,MAAM;GAChC,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GAErB,OAAO,IAAI,IAAI,MAAM;GACrB,cAAc,IAAI,IAAI,MAAM;GAC5B,UAAU,IAAI,IAAI,MAAM;EAC1B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,iBAAiB;EAC7B,MAAM,OAAO,gBAAgB,EAAE,OAAO,OAAO,MAAM,KAAK,EAAE,EAAE;EAG5D,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,KAAK,MAAM,QAAQ,MAAM,SAAS;GAC5C,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,eAAe,CAAC;EACzC,CAAC;EAED,aAAa,EAAE,QAAQ;GACrB,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GACxC,KAAK;EACP,GAAG,MAAM,UAAU,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK,CAAC,CAAC;CAC5D;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,CAA4B;CACxF;AACF,CAAC;;;AC3GD,MAAMC,SAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;;;;ACXA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO;EACL,QAAQ;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACrE,MAAM;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;CAC3E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,cAAc,OAAsB,YAAY,CAAC;EAC5E,cAAc,EAAE,IAAI,CAAC;EACrB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAGD,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAGD,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;;;AC5CD,MAAMC,SAAuC,OAAO,gBAAgB;AACpE,MAAM,gBAA0D,OAAO,0BAA0B;AAEjG,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;AAEA,SAAgB,2BAA2B,KAAuC;CAChF,QAAQ,eAAe,GAAG;AAC5B;AAEA,SAAgB,gCAA4D;CAC1E,MAAM,MAAM,OAAO,eAAe,IAAI;CACtC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,gDAAgD;CAClE,OAAO;AACT;;;ACXA,SAAgB,cAAc,OAAqD;CACjF,MAAM,cAAc,IAAwB,IAAI;CAChD,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAA8D;EAClE,UAAU,IAAwB,IAAI;EACtC,YAAY,IAAwB,IAAI;CAC1C;CAIA,MAAM,UAAU,WAAW,0BAA0B,EAAE,GAAG,MAAM,IADlD,YAAY,MADZ,qBACsB,CACoC,CAAC;CAGzE,QAAQ,KAAK,IAAI,uBAAuB,YAAY,KAAK;CACzD,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACvD,QAAQ,KAAK,IAAI,mBAAmB,SAAsB,cAAc,KAAK,CAAC,KAAK;CAGnF,OAAO;EAAE;EAAS,KADN,eAAe,kBAAkB,SAAS,YAAY,CAC9C;EAAG;EAAa;EAAY;CAAc;AAChE;;;AC3BA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACrE,iBAAiB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACpD,aAAa;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EACnF,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;CACjE;CAEA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,cAAc,KAAwB;EAClD,kBAAkB,GAAG;EACrB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,UAAU,IAAI,IAAI,MAAM;GACxB,YAAY,IAAI,IAAI,MAAM;GAC1B,cAAc,IAAI,IAAI,MAAM;GAC5B,eAAe,IAAI,IAAI,MAAM;EAC/B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,iBAAiB;GAClC,KAAK,IAAI;EACX,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,KAAK,IAAI;EACX,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,OAAO;;AAEL,aAAa;EAAE,MAAM;EAAiC,SAAS;CAAW,EAC5E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,YAAY,gBAA0C,EAAE,aAAa,MAAM,YAAY,EAAE;EAC/F,2BAA2B,EAAE,UAAU,CAAC;EACxC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,kBAAkB,UAAU,KAAK;GAElD,KAAK,IAAI,cAAc,MAAM;EAC/B,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,cAAc,8BAA8B;EACpD,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,UAAU,KAAK,GAA8B,MAAM,UAAU,CAAC;CAClH;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;;;AClFD,MAAMC,SAAmC,OAAO,WAAW;AAC3D,MAAMC,aAA4C,OAAO,gBAAgB;AAEzE,SAAgB,cAAc,KAA0B;CACtD,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;AAEA,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQC,YAAU,GAAG;AACvB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,YAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,sCAAsC;CACxD,OAAO;AACT;;;ACZA,SAAgB,UACd,OACA,eACA,cACe;CACf,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;EAAe;CAAa,IAAI,KAAK;CAElG,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,cAAc,SAAS,YAAY,CAC1C;EAAG;EAAY;EAAe;CAAW;AAC/D;;;AClDA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;;EAExE,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAyC,SAAS,KAAA;EAAU;EACzF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAyC,SAAS,KAAA;EAAU;EAChG,UAAU;EACV,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,UAAU;EACV,UAAU;EACV,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAGA,OAAO;EACL,iBAAiB,aAAuC;EACxD,gBAAgB,aAAsC;EACtD,iBAAiB,WAAqB;EACtC,gBAAgB,UAAmB;CACrC;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAA6C,YAAY;GAC7D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,cAA2C,YAAY;GAC3D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,UAAU,OAAsB,aAAa,UAAU;EACnE,cAAc,GAAG;EAIjB,MAAM,qBAA4B;GAChC,MAAM,MAAM,IAAI,IAAI;GACpB,MAAM,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC;GAC3C,KAAK,MAAM,CAAC,GAAG,MAAM,IAAI,MAAM,QAAQ,GACrC,QAAQ,KAAK,EAAE,UAAU;IAAE,OAAO;IAAG,UAAU;GAAK,GAAG,IAAI,UAAU,MAAM,CAAC,CAAC;GAC/E,OAAO,EAAE,UAAU,IAAI,qBAAqB,GAA8B,OAAO;EACnF;EAEA,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,CAC7E,aAAa,GACb,GAAI,MAAM,UACN,MAAM,QAAQ;GACd,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,aAAa,IAAI,IAAI,MAAM;GAC3B,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;EAC1B,CAAC,KAAK,CAAC,IACL,MAAM,aACJC,oBACE,IAAI,IAAI,MAAM,YACd,MAAM,QAAQ,MAAM,MAAM,SAAS,OAAO,CAAC,MAAM,KAAK,IAAI,OAC1D,MAAM,IACR,IACA,CAAC,CACT,CAAC;CACH;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAE7B,aAAa,EACX,QACA,IAAI,IAAI,MAAM,kBAAkB,GAChC,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,WACrC;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,iBAAiB;EAC7B,MAAM,OAAO,gBAAiC;GAAE,OAAO,MAAM;GAAO,UAAU,MAAM;EAAS,EAAE;EAC/F,kBAAkB,EAAE,KAAK,CAAC;EAE1B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,MAAM,IAAI;GAChB,IAAI,IAAI,UAAU,MAAM,WACtB;GACF,IAAI,OAAO,SAAS,IAAI,MAAM,iBAAiB,MAAM,OAAO,OAC1D,IAAI,KAAK;IAAE,MAAM;IAAkB,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;EACtC,CAAC;EACD,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAO,GACpF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,MAAM,EAAE,SAAS,qBAAqB;EACtC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,MAAM,EAAE,SAAS,qBAAqB;EACtC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;;;;;AAMD,SAASA,oBACP,YACA,OACA,UACS;CACT,OAAO;EACL,GAAI,QAAQ,CAAC,EAAE,eAAe,YAAY,KAAK,CAAC,IAAI,CAAC;EACrD,EAAE,iBAAiB,YAAY,CAAC,EAAE,iBAAiB,GAAG,EAAE,iBAAiB,CAAC,CAAC;EAC3E,EAAE,oBAAoB,YAAY,CAChC,EAAE,iBAAiB,YAAY,WAAW,KAAI,SAC5C,EAAE,cAAc;GAAE,KAAK,KAAK;GAAO,OAAO,KAAK;EAAM,SAAS,CAC5D,EAAE,kBAAkB,YAAY,WAAW,IAAI,KAAK,KAAK,KAAK,GAC9D,EAAE,qBAAqB,CACzB,CAAC,CACH,CAAC,CACH,CAAC;CACH;AACF;;;ACzNA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,OAAO;EACL,aAAa;GAAE,MAAM;GAA+C,SAAS;EAAa;EAC1F,YAAY;CACd;CACA,MAAM,OAAO;EACX,aAAa,EAAE,OAAO,iBAAiB,OAAyB,YAAY,CAAC,CAAC,aAAa,CAA4B;CACzH;AACF,CAAC;;;ACXD,MAAMC,SAAqC,OAAO,aAAa;AAE/D,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;;;ACJA,SAAgB,YAAY,OAAuC;CAEjE,OAAO,EAAE,KADG,eAAe,gBAAgB,OAAO,YAAY,CACnD,EAAE;AACf;;;;ACPA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO;EACL,SAAS;GAAE,MAAM;GAAS,SAAS;EAAK;EACxC,SAAS;GAAE,MAAM;GAAqC,SAAS,KAAA;EAAU;CAC3E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,YAAY,KAAsB;EAC9C,gBAAgB,GAAG;EACnB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,SAAS;EAAE,MAAM;EAAqC,SAAS,KAAA;CAAU,EAC3E;CACA,MAAM,OAAO;EACX,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,EAAE,SAAS,MAAM,QAAQ,CAAC,CACvD;CACF;AACF,CAAC;;;ACxBD,MAAMC,SAAmC,OAAO,WAAW;AAC3D,MAAM,YAA8C,OAAO,iBAAiB;AAE5E,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;AAEA,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,WAAW,GAAG;AACxB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,sCAAsC;CACxD,OAAO;AACT;;;ACfA,SAAgB,UACd,OACA,eACA,kBACe;CACf,MAAM,WAAW,IAAwB,IAAI;CAI7C,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;EAAe;CAAiB,IAD/E,YAAY,MADZ,qBACsB,CACiE,CAAC;CAGtG,QAAQ,KAAK,IAAI,oBAAoB,SAAS,KAAK;CAGnD,OAAO;EAAE,KADG,eAAe,cAAc,SAAS,YAAY,CACnD;EAAG;EAAS;CAAS;AAClC;;;ACvBA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO;EAEL,OAAO;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC/D,cAAc;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACtE,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,uBAAuB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1D,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,UAAU;EACV,UAAU;EACV,SAAS;EACT,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,cAAc;GACZ,MAAM;GACN,SAAS,KAAA;EACX;CACF;CAEA,OAAO;EACL,iBAAiB,aAAsD;EACvE,iBAAiB,WAA6D;EAC9E,qBAAqB,aAAyD;CAChF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAwC,YAAY;GACxD,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,aAA8C,YAAY;GAC9D,KAAK,oBAAoB,OAAO;EAClC;EACA,MAAM,MAAM,UAAU,OAAsB,QAAQ,SAAS;EAC7D,cAAc,GAAG;EACjB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,QAAQ,IAAI,IAAI,MAAM;GACtB,OAAO,IAAI,IAAI,MAAM;GACrB,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,eAAe,IAAI,IAAI,MAAM;EAC/B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAE7B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,cAAc;GAC/B,KAAK,IAAI;EACX,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,SAAS;CAAE,EAC3E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,iBAAiB;EAC7B,MAAM,QAAQ,eAAe;GAC3B,MAAM,IAAI,OAAO,MAAM,KAAK;GAC5B,OAAO,OAAO,SAAS,CAAC,IAAI,IAAI;EAClC,CAAC;EACD,mBAAmB,EAAE,MAAM,CAAC;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,QAAQ;EACN,MAAM,EAAE,UAAU,sBAAsB;EACxC,MAAM,MAAM,iBAAiB;EAC7B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,MAAM,KAAK,CAA4B;CACnG;AACF,CAAC;;;ACrHD,MAAMC,SAAoC,OAAO,YAAY;AAE7D,SAAgB,eAAe,KAA2B;CACxD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;;;ACJA,SAAgB,WAAW,OAAqC;CAE9D,OAAO,EAAE,KADG,eAAe,eAAe,OAAO,YAAY,CAClD,EAAE;AACf;;;;ACNA,MAAa,YAAY,gBAAgB;CACvC,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,cAAc;GAAE,MAAM;GAAkD,SAAS,KAAA;EAAU;CAC7F;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,WAAW,KAAqB;EAC5C,eAAe,GAAG;EAClB,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EACX,QACA,IAAI,IAAI,MAAM,cAAc,GAC5B,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,KACrC;CACF;AACF,CAAC;;;AC/BD,MAAMC,SAAqC,OAAO,aAAa;AAE/D,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;;;ACEA,SAAgB,YACd,OACA,cACA,iBACiB;CACjB,MAAM,UAAU,IAAwB,IAAI;CAI5C,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO;EAAc;CAAgB,IAD/E,YAAY,MADZ,qBACsB,CACiE,CAAC;CAGtG,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CAGjD,OAAO;EAAE,KADG,eAAe,gBAAgB,SAAS,YAAY,CACrD;EAAG;EAAS;CAAQ;AACjC;;;;ACtBA,MAAM,aAAa,EAAE,OAAO;CAAE,MAAM,CAAC,QAAQ,MAAM;CAAgC,SAAS;AAAE,EAAE;AAEhG,SAAS,QAAQ,KAA8B;CAC7C,MAAM,IAAI,OAAO,GAAG;CACpB,OAAO,OAAO,SAAS,CAAC,IAAI,IAAI;AAClC;AAEA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO;EAEL,MAAM;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC9D,aAAa;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAyC,SAAS,KAAA;EAAU;EAC5E,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,UAAU;EACV,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;CAChD;CAEA,OAAO;EACL,gBAAgB,aAAuD;EACvE,gBAAgB,UAA4D;EAC5E,oBAAoB,aAA0D;CAChF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAyC,YAAY;GACzD,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,aAA+C,YAAY;GAC/D,KAAK,mBAAmB,OAAO;EACjC;EACA,MAAM,MAAM,YAAY,OAAwB,QAAQ,SAAS;EACjE,gBAAgB,GAAG;EAEnB,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,aAAa;GAC9B,KAAK,IAAI;EACX,GAAG,MAAM,UAAU;GACjB,MAAM,IAAI,IAAI,MAAM;GACpB,QAAQ,IAAI,IAAI,MAAM;GACtB,UAAU,IAAI,IAAI,MAAM;GACxB,SAAS,IAAI,IAAI,MAAM;GACvB,cAAc,IAAI,IAAI,MAAM;GAC5B,eAAe,IAAI,IAAI,MAAM;GAC7B,aAAa,IAAI,IAAI,MAAM;GAC3B,aAAa,IAAI,IAAI,MAAM;EAC7B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO;;AAEL,GAAG,WACL;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,QAAQ,eAAe,QAAQ,MAAM,KAAK,CAAC;EACjD,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,OAAO;;AAEL,GAAG,WACL;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,QAAQ,eAAe,QAAQ,MAAM,KAAK,CAAC;EACjD,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,sBAAsB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;;;AChFD,MAAMC,SAAsC,OAAO,cAAc;AAEjE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;;;ACXA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,iBAAiB,OAAyB,YAAY,CAAC;EAClF,iBAAiB,EAAE,IAAI,CAAC;EACxB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;ACjDD,MAAMC,SAAkC,OAAO,UAAU;;AAEzD,MAAMC,aAA+C,OAAO,eAAe;AAE3E,SAAgB,aAAa,KAAyB;CACpD,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;AAEA,SAAgB,iBAAiB,MAAkC;CACjE,QAAQC,YAAU,IAAI;AACxB;AAEA,SAAgB,eAAqC;CACnD,MAAM,OAAO,OAAOA,YAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;;;ACbA,SAAgB,SACd,OACA,cACc;CAGd,MAAM,UAAU,WAAW,qBAAqB;EAAE,GAAG;EAAO;CAAa,IAD3D,YAAY,MADZ,qBACsB,CAC6C,CAAC;CAElF,OAAO;EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD;EAAG;CAAQ;AACxB;;;ACfA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,QAAQ;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC5C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAAoD;EACpE,gBAAgB,UAAyD;CAC3E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAsC,YAAY;GACtD,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,SAAS,OAAqB,MAAM;EAChD,aAAa,GAAG;EAEhB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,UAAU,IAAI,IAAI,MAAM;GACxB,SAAS,IAAI,IAAI,MAAM;GACvB,cAAc,IAAI,IAAI,MAAM;GAC5B,cAAc,IAAI,IAAI,MAAM;EAC9B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,OAAO;EAEL,OAAO;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAgC,UAAU;EAAK;EAC7E,UAAU;CACZ;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAC5B,wBAAwB;GAAE,OAAO,OAAO,MAAM,KAAK;GAAG,UAAU,MAAM;EAAS,EAAE;EACjF,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa;GAAE,OAAO,OAAO,MAAM,KAAK;GAAG,UAAU,MAAM;EAAS,CAAC,GACnF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,OAAO,aAAa;EAE1B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,KAAK,CAAC,CAAC,QAAQ,MAAM,SAAS;GACxC,IAAI,SAAS,MACX;GACF,MAAM,MAAM,IAAI;GAChB,IAAI,IAAI,UAAU,MAAM,WACtB;GACF,IAAI,OAAO,SAAS,IAAI,MAAM,iBAAiB,MAAM,OAAO,OAC1D,IAAI,KAAK;IAAE,MAAM;IAAiB,MAAM;GAAK,CAAC;EAClD,CAAC;EACD,sBAAsB;GACpB,IAAI,IAAI,QAAQ,UAAU,MAAM,WAC9B;GAEF,IAAI,OAAO,SAAS,IAAI,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAClE,IAAI,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;EAC1C,CAAC;EACD,aAAa,EACX,UACA;GAAE,GAAG,IAAI,IAAI,MAAM,gBAAgB,KAAK,CAAC;GAA8B,KAAK;EAAO,GACnF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,OAAO,aAAa;EAC1B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,OAAO,aAAa;EAC1B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC1G;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,OAAO,aAAa;EAC1B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,oBAAoB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAChH;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,OAAO,aAAa;EAC1B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,gBAAgB,EAAE,OAAO,OAAO,MAAM,KAAK,EAAE,CAAC,GAC5D,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;ACjJD,SAAgB,UACd,OACA,iBACe;CACf,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;CAAgB,EAAE;CAE/E,OAAO,EAAE,KADG,eAAe,cAAc,SAAS,YAAY,CACnD,EAAE;AACf;;;ACTA,MAAa,WAAW,gBAAgB;CACtC,MAAM;CACN,OAAO;EACL,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC7C,gBAAgB;EAChB,UAAU;EACV,MAAM;EACN,MAAM;CACR;CAEA,OAAO;EACL,mBAAmB,aAAwD;EAC3E,mBAAmB,aAAmE;CACxF;CACA,MAAM,OAAO,EAAE,QAAQ;EACrB,MAAM,UAA0C,YAAY;GAC1D,KAAK,kBAAkB,OAAO;GAC9B,KAAK,kBAAkB,QAAQ,OAAO;EACxC;EACA,MAAM,EAAE,QAAQ,UAAU,OAAsB,MAAM;EACtD,aAAa,EAAE,UAAU,IAAI,MAAM,aAAa,GAA8B,CAC5E,EAAE,QAAQ,IAAI,MAAM,cAAc,CAA4B,CAChE,CAAC;CACH;AACF,CAAC;;;ACfD,MAAMC,SAAkC,OAAO,UAAU;AACzD,MAAM,cAA0C,OAAO,kBAAkB;AACzE,MAAM,UAAyC,OAAO,cAAc;AACpE,MAAMC,eAA+C,OAAO,iBAAiB;AAE7E,SAAgB,aAAa,KAAyB;CACpD,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;AAEA,SAAgB,oBAAoB,SAA6B;CAC/D,QAAQ,aAAa,OAAO;AAC9B;;AAGA,SAAgB,kBAAgC;CAC9C,OAAO,OAAO,aAAa,MAAM;AACnC;AAEA,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,SAAS,GAAG;AACtB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,SAAS,IAAI;CAChC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uDAAuD;CACzE,OAAO;AACT;;AAGA,SAAgB,6BAAqD;CACnE,OAAO,OAAO,SAAS,IAAI;AAC7B;AAEA,SAAgB,mBAAmB,KAA+B;CAChE,QAAQC,cAAY,GAAG;AACzB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,cAAY,IAAI;CACnC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;;;ACpDA,SAAgB,SACd,OACA,cACA,mBACA,kBACc;CAGd,MAAM,UAAU,WACd,qBACO;EAAE,GAAG;EAAO;EAAc;EAAmB;CAAiB,IAHzD,YAAY,MADZ,qBACsB,CAI9B,CACN;CAEA,OAAO;EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD;EAAG;CAAQ;AACxB;;;;ACAA,SAAS,eAAe,KAAmB,IAA6B,OAA2B;CACjG,MAAM,QAAQ,MAAM,SAAS;EAC3B,IAAI,SAAS,MACX;EACF,MAAM,EAAE,YAAY;EACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EACF,IAAI,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACtD,QAAQ,KAAK;GAAE,MAAM;GAAa,OAAO;EAAK,CAAC;CACnD,CAAC;CACD,sBAAsB;EACpB,MAAM,EAAE,YAAY;EAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EAEF,IAAI,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACtD,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;CACvC,CAAC;AACH;AAEA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EACL,SAAS;GAAE,MAAM;GAAqC,SAAS,KAAA;EAAU;EACzE,MAAM;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACnE,MAAM;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;EAC3E,aAAa;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;EAClF,WAAW;GAAE,MAAM,CAAC,OAAO,MAAM;GAA+B,SAAS,KAAA;EAAU;EACnF,kBAAkB;GAAE,MAAM,CAAC,OAAO,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC1F,eAAe;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;EAClF,UAAU;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAClE,iBAAiB;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACzE,SAAS;EACT,OAAO;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC3C,cAAc;EACd,QAAQ;EACR,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAAoD;EACpE,gBAAgB,UAA0D;EAC1E,qBAAqB,aAAyD;EAC9E,qBAAqB,eAAoE;EACzF,oBAAoB,aAAwD;EAC5E,oBAAoB,cAAkE;CACxF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,gBAA4C,YAAY;GAC5D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,KAAK;EACnC;EACA,MAAM,qBAAsD,YAAY;GACtE,KAAK,oBAAoB,OAAO;GAChC,KAAK,oBAAoB,QAAQ,KAAK;EACxC;EACA,MAAM,oBAAoD,YAAY;GACpE,KAAK,mBAAmB,OAAO;GAC/B,KAAK,mBAAmB,QAAQ,KAAK;EACvC;EACA,MAAM,MAAM,SAAS,OAAqB,cAAc,mBAAmB,gBAAgB;EAC3F,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,aAAa,IAAI,IAAI,MAAM;GAC3B,MAAM,IAAI,IAAI,MAAM;GACpB,WAAW,IAAI,IAAI,MAAM;GACzB,gBAAgB,IAAI,IAAI,MAAM;GAC9B,eAAe,IAAI,IAAI,MAAM;GAC7B,YAAY,IAAI,IAAI,MAAM;GAC1B,OAAO,IAAI,IAAI,MAAM;GACrB,SAAS,IAAI,IAAI,MAAM;GACvB,YAAY,IAAI,IAAI,MAAM;GAC1B,YAAY,IAAI,IAAI,MAAM;GAC1B,eAAe,IAAI,IAAI,MAAM;GAC7B,cAAc,IAAI,IAAI,MAAM;GAC5B,YAAY,IAAI,IAAI,MAAM;GAC1B,WAAW,IAAI,IAAI,MAAM;GACzB,iBAAiB,IAAI,IAAI,MAAM;GAC/B,iBAAiB,IAAI,IAAI,MAAM;EACjC,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,oBAAoB,QAAQ;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,oBAAoB,MAAM;EAE1B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,oBAAoB,QAAQ;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,SAAS,KAAA;CAAU,EAC5C;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,UAAU,gBAAgB;EAChC,IAAI,YAAY,QACd,aAAa,EACX,OACC,YAAY,WACT,IAAI,IAAI,MAAM,kBAAkB,IAChC,IAAI,IAAI,MAAM,kBAAkB,GACpC,MAAM,UAAU,CAClB;EAEF,MAAM,MAAM,gBAA+B,EAAE,OAAO,MAAM,SAAS,GAAG,EAAE;EAExE,gBAAgB,EAAE,IAAI,CAAC;EACvB,MAAM,KAAK,IAAwB,IAAI;EACvC,eAAe,KAAK,UAAU,IAAI,MAAM,KAAK;EAC7C,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,YAAY,IAAI,KAAK;GAA8B,KAAK;EAAG,GAC9E,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,SAAS,gBAAkC,EAAE,OAAO,MAAM,MAAM,EAAE;EACxE,mBAAmB,EAAE,OAAO,CAAC;EAC7B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,qBAAqB,OAAO,KAAK,GAC/C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,OAAO;;EAEL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;;EAEtC,SAAS;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAgC,SAAS,KAAA;EAAU;CACrF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAE5B,MAAM,SAAS,2BAA2B;EAC1C,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa;GACzB,OAAO,MAAM;GACb,KAAK,QAAQ,IAAI,MAAM;GACvB,SAAS,MAAM,WAAW,OAAO,KAAA,IAAY,OAAO,MAAM,OAAO;EACnE,CAAC,GACD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EACX,QACA,IAAI,IAAI,MAAM,yBAAyB,GACvC,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,EAAE,QAAQ,mBAAmB;EACnC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,yBAAyB,IAAI,KAAK,GAChD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,EAAE,WAAW,sBAAsB;EACzC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,oBAAoB,OAAO,KAAK,GAC9C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,EAAE,QAAQ,mBAAmB;EACnC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,sBAAsB,IAAI,KAAK,GAC7C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,MAAM,gBAA+B,EAAE,OAAO,MAAM,MAAM,EAAE;EAElE,aAAa,EACX,OACA,IAAI,IAAI,MAAM,oBAAoB,IAAI,KAAK,GAC3C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,mBAAmB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC1G;AACF,CAAC;;;ACjTD,MAAMC,SAAiC,OAAO,SAAS;AAEvD,SAAgB,YAAY,KAAwB;CAClD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT;;;ACCA,SAAgB,QACd,OACA,eACa;CAGb,MAAM,UAAU,WAAW,oBAAoB;EAAE,GAAG;EAAO;CAAc,IAD3D,YAAY,MADZ,qBACsB,CAC6C,CAAC;CAElF,OAAO;EAAE,KADG,eAAe,YAAY,SAAS,YAAY,CACjD;EAAG;CAAQ;AACxB;;;ACdA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACtE,OAAO;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACrE,cAAc;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EAC5E,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,gBAAgB;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;EACnF,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,SAAS;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACrE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAAoD;EACrE,iBAAiB,WAA2D;CAC9E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAsC,YAAY;GACtD,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,QAAQ,OAAoB,MAAM;EAC9C,YAAY,GAAG;EACf,aAAa;GAEX,MAAM,WAAW,MAAM,UAAU;GACjC,MAAM,WAAW,WAAW,QAAQ,IAChC,WACC,MAAM,aAAaC,oBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,KAAK,IAAI,KAAA;GACnF,OAAO,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,QAAQ;EACnF;CACF;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAE3B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,MAAM,IAAI;GAChB,IAAI,IAAI,UAAU,MAAM,WACtB;GACF,IAAI,OAAO,SAAS,IAAI,MAAM,iBAAiB,MAAM,OAAO,OAC1D,IAAI,KAAK;IAAE,MAAM;IAAiB,OAAO;GAAK,CAAC;EACnD,CAAC;EACD,sBAAsB;GACpB,IAAI,IAAI,QAAQ,UAAU,MAAM,WAC9B;GAEF,IAAI,OAAO,SAAS,IAAI,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAClE,IAAI,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;EAC1C,CAAC;EACD,aAAa,EACX,UACA;GAAE,GAAG,IAAI,IAAI,MAAM,gBAAgB;IAAE,OAAO,MAAM;IAAO,UAAU,MAAM;GAAS,CAAC;GAA8B,KAAK;EAAO,GAC7H,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAC3B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,gBAAgB,EAAE,OAAO,MAAM,MAAM,CAAC,GACpD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;;;;AAOD,SAASA,oBACP,YACA,WACS;CACT,OAAO,CACL,EAAE,YAAY,YAAY,WAAW,KAAI,SACvC,EAAE,eAAe;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,KAAK,KAAK,CAC3E,CAAC,GACD,GAAG,WAAW,KAAI,SAChB,EAAE,eAAe;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAAS,YAAY,IAAI,KAAK,CAAC,CAAC,CACxF,CACF;AACF;;;AClHA,MAAMC,SAAsC,OAAO,eAAe;AAClE,MAAMC,aAA+C,OAAO,oBAAoB;AAEhF,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;AAEA,SAAgB,qBAAqB,KAAiC;CACpE,QAAQC,YAAU,GAAG;AACvB;AAEA,SAAgB,0BAAgD;CAC9D,MAAM,MAAM,OAAOA,YAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,4CAA4C;CAC9D,OAAO;AACT;;;ACjBA,SAAgB,aACd,OACA,WAAmF,CAAC,GAClE;CAIlB,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO,GAAG;CAAS,IAD9D,YAAY,MADZ,qBACsB,CACgD,CAAC;CAErF,OAAO;EAAE,KADG,eAAe,iBAAiB,SAAS,YAAY,CACtD;EAAG;CAAQ;AACxB;;;AChBA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CAEN,OAAO;EAEL,OAAO;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC/D,cAAc;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACtE,YAAY;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC/C,mBAAmB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACtD,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,eAAe;EACf,UAAU;EACV,UAAU;EACV,SAAS;EACT,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,YAAY;EACZ,UAAU;EACV,cAAc;GAAE,MAAM;GAAkD,SAAS,KAAA;EAAU;EAC3F,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,cAAc;GAAE,MAAM;GAAoD,SAAS,KAAA;EAAU;CAC/F;CAEA,OAAO;EACL,iBAAiB,aAAyD;EAC1E,iBAAiB,WAAgE;EACjF,uBAAuB,aAA8D;EACrF,sBAAsB,gBAA+E;CACvG;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,iBAAkD,YAAY;GAClE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,sBAA4D,YAAY;GAC5E,KAAK,sBAAsB,OAAO;GAClC,KAAK,qBAAqB,QAAQ,UAAU;EAC9C;EACA,MAAM,MAAM,aAAa,OAAyB;GAAE;GAAe;EAAmB,CAAC;EACvF,iBAAiB,GAAG;EACpB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,YAAY,IAAI,IAAI,MAAM;GAC1B,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,UAAU,IAAI,IAAI,MAAM;GACxB,kBAAkB,IAAI,IAAI,MAAM;GAChC,aAAa,IAAI,IAAI,MAAM;GAC3B,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,aAAa,IAAI,IAAI,MAAM;GAC3B,OAAO,IAAI,IAAI,MAAM;GACrB,eAAe,IAAI,IAAI,MAAM;GAC7B,WAAW,IAAI,IAAI,MAAM;GACzB,MAAM,IAAI,IAAI,MAAM;EACtB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,CAA4B;CAClF;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,oBAAoB;EAChC,MAAM,OAAO,gBAAoC,EAAE,OAAO,MAAM,MAAM,EAAE;EACxE,qBAAqB,EAAE,KAAK,CAAC;EAE7B,MAAM,SAAS,IAAwB,IAAI;EAC3C,MAAM,mBAA4B;GAChC,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B,OAAO;GACT,MAAM,SAAS,QAAQ,MAAM,iBAAiB;GAC9C,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC,WAAW,OAAO,UAAU,UAAU,OAAO,MAAM,SAAS,MAAM;EAC/F;EACA,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,QAAQ,WAAW,GAC9B,IAAI,QAAQ,KAAK,EAAE,MAAM,kBAAkB,CAAC;EAChD,CAAC;EACD,sBAAsB;GACpB,IAAI,WAAW,GACb,IAAI,QAAQ,KAAK,EAAE,MAAM,kBAAkB,CAAC;EAChD,CAAC;EACD,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAO,GACpF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,MAAM,EAAE,SAAS,wBAAwB;EACzC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,oBAAoB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACpH;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,MAAM,EAAE,SAAS,wBAAwB;EACzC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,MAAM,EAAE,SAAS,wBAAwB;EACzC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,0BAA0B,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC5H;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,oBAAoB;EAChC,MAAM,EAAE,SAAS,wBAAwB;EACzC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,kBAAkB,KAAK,KAAK,CAA4B;CAChG;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,CAA4B;CACxF;AACF,CAAC;;;ACnLD,MAAMC,SAAsC,OAAO,eAAe;AAElE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;;;ACJA,SAAgB,aACd,OACA,eACkB;CAClB,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO;CAAc,EAAE;CAEhF,OAAO,EAAE,KADG,eAAe,iBAAiB,SAAS,YAAY,CACtD,EAAE;AACf;;;ACRA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO;EAEL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,UAAU;EACV,UAAU;EACV,UAAU;EACV,SAAS;EACT,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,WAAW;EACX,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAAyD;EAC1E,iBAAiB,WAAgE;CACnF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA2C,YAAY;GAC3D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,aAAa,OAAyB,MAAM;EACxD,iBAAiB,GAAG;EACpB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,CAA4B;CAClF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;;;ACvED,MAAMC,SAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT;;;ACEA,SAAgB,UACd,OACA,eACe;CACf,MAAM,cAAc,IAAwB,IAAI;CAChD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CAErC,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;CAAc,IAAI,KAAK;CAGpF,IAAI,OAAO,aAAa,aACtB,QAAQ,KAAK,IAAI,UAAU,oBAAoB;EAAE;EAAO,aAAa;CAAM,CAAC,CAAC;CAG/E,QAAQ,KAAK,IAAI,uBAAuB,YAAY,KAAK;CACzD,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CAGvD,MAAM,CAAC,aAAa,UAAU,SAAS;EACrC,QAAQ,KAAK,IAAI,OAAO,CAAC,EAAE,SAAS;CACtC,CAAC;CAGD,OAAO;EAAE,KADG,eAAe,cAAc,SAAS,YAAY,CACnD;EAAG;EAAa;CAAW;AACxC;;;ACnCA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CAEN,OAAO;EACL,QAAQ;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACrE,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,cAAc;GAAE,MAAM;GAAiD,SAAS,KAAA;EAAU;CAC5F;CAEA,OAAO,EACL,iBAAiB,aAAsD,KACzE;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAuC,YAAW,KAAK,gBAAgB,OAAO;EACpF,MAAM,MAAM,UAAU,OAAsB,MAAM;EAClD,cAAc,GAAG;EACjB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,QAAQ,IAAI,IAAI,MAAM;GACtB,UAAU,IAAI,IAAI,MAAM;GACxB,UAAU,IAAI,IAAI,MAAM;GACxB,kBAAkB,IAAI,IAAI,MAAM;GAChC,gBAAgB,IAAI,IAAI,MAAM;EAChC,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAE7B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,iBAAiB;GAClC,KAAK,IAAI;EACX,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAE7B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,KAAK,IAAI;EACX,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAE7B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,iBAAiB;EAE7B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,mBAAmB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;;;ACvED,MAAMC,SAAsC,OAAO,eAAe;AAElE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;;;ACFA,SAAgB,aACd,OACA,WAA4D,CAAC,GAC3C;CAIlB,MAAM,UAAU,WAAW,yBAAyB;EAAE,GAAG;EAAO,GAAG;CAAS,IAD9D,YAAY,MADZ,qBACsB,CACgD,CAAC;CAErF,OAAO,EAAE,KADG,eAAe,iBAAiB,SAAS,YAAY,CACtD,EAAE;AACf;;;ACbA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,OAAO;EAEL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAE3C,WAAW;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACzE,aAAa;GAAE,MAAM;GAAqC,SAAS,KAAA;EAAU;EAC7E,UAAU;EACV,UAAU;EACV,SAAS;EACT,UAAU;EACV,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,iBAAiB,aAAyD;EAC1E,iBAAiB,WAAgE;CACnF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,iBAAkD,YAAY;GAClE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,aAAa,OAAyB,EAAE,cAAc,CAAC;EACnE,iBAAiB,GAAG;EACpB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,YAAY,IAAI,IAAI,MAAM;GAC1B,UAAU,IAAI,IAAI,MAAM;GACxB,gBAAgB,IAAI,IAAI,MAAM;GAC9B,WAAW,IAAI,IAAI,MAAM;GACzB,aAAa,IAAI,IAAI,MAAM;GAC3B,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO,EAEL,SAAS;EAAE,MAAM;EAAqC,UAAU;CAAK,EACvE;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,oBAAoB;EAEhC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,gBAAgB,EAAE,SAAS,MAAM,QAAQ,CAAC,GACxD,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,eAAe,EAAE,SAAS,MAAM,QAAQ,CAAC,CAC9E;CACF;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,CAA4B;CACxF;AACF,CAAC;;;ACxFD,MAAMC,SAAuC,OAAO,gBAAgB;AACpE,MAAM,aAAoD,OAAO,uBAAuB;AAExF,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;AAEA,SAAgB,wBAAwB,KAAoC;CAC1E,QAAQ,YAAY,GAAG;AACzB;AAEA,SAAgB,6BAAsD;CACpE,MAAM,MAAM,OAAO,YAAY,IAAI;CACnC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;;;ACfA,SAAgB,cACd,OACA,WAA8E,CAAC,GAC5D;CACnB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAG/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,0BAA0B;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CAEtF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAGA,OAAO;EAAE,KADG,eAAe,kBAAkB,SAAS,YAAY,CACvD;EAAG;EAAY;EAAe;CAAW;AACtD;;;ACnCA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,WAAW;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACzE,aAAa;GAAE,MAAM;GAAqC,SAAS,KAAA;EAAU;EAC7E,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,UAAU;EACV,UAAU;EACV,SAAS;EACT,UAAU;EACV,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;CAC7C;CAEA,OAAO;EACL,iBAAiB,aAA0D;EAC3E,gBAAgB,aAAyD;EACzE,iBAAiB,WAAiE;EAClF,gBAAgB,UAA8D;CAChF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAAiD,YAAY;GACjE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,cAA+C,YAAY;GAC/D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,cAAc,OAA0B;GAClD,eAAe;GACf,cAAc;EAChB,CAAC;EACD,kBAAkB,GAAG;EAErB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,YAAY,IAAI,IAAI,MAAM;GAC1B,UAAU,IAAI,IAAI,MAAM;GACxB,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO,EAEL,SAAS;EAAE,MAAM;EAAqC,UAAU;CAAK,EACvE;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,cAAc,EAAE,SAAS,MAAM,QAAQ,CAAC,GACtD,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,eAAe,EAAE,SAAS,MAAM,QAAQ,CAAC,CAC9E;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO,EACL,MAAM;EAAE,MAAM;EAA0C,UAAU;CAAK,EACzE;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EAGjC,wBAAwB,EAAE,MAFb,eAAe,MAAM,IAEL,EAAE,CAAC;EAChC,aAAa,EACX,OACA,IAAI,IAAI,MAAM,eAAe,EAAE,MAAM,MAAM,KAAK,CAAC,GACjD,MAAM,UAAU,EAAE,SAAS,IAAI,IAAI,MAAM,QAAQ,MAAK,MAAK,EAAE,SAAS,MAAM,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CACpG;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,2BAA2B;EAE5C,aAAa,EACX,OACA,IAAI,IAAI,MAAM,eAAe;GAAE,MAAM,KAAK;GAAO,OAAO,MAAM;EAAM,CAAC,GACrE,MAAM,UAAU,KAAK,MAAM,KAC7B;CACF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,CAA4B;CACxF;AACF,CAAC;;;;;;;;;ACxLD,MAAa,SAAS,gBAAgB;CACpC,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;IAAC;IAAQ;IAAQ;GAAI;GAA0B,SAAS,KAAA;EAAU;EACjF,MAAM;GAAE,MAAM;GAA8B,SAAS,KAAA;EAAU;EAC/D,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,QAAQ;GAAE,MAAM;GAAgC,SAAS,KAAA;EAAU;EACnE,KAAK;GAAE,MAAM;IAAC;IAAQ;IAAQ;GAAI;GAA0B,SAAS,KAAA;EAAU;CACjF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,YAAY;GACrC,OAAO,MAAM;GACb,MAAM,MAAM;GACZ,QAAQ,MAAM;GACd,QAAQ,MAAM;GACd,KAAK,MAAM;EACb,GAAuB,YAAY,CAAC;EAEpC,aAAa;GACX,MAAM,UAAU,MAAM,UAAU;GAChC,OAAO,EACL,QACA,IAAI,MAAM,aAAa,GAEvB,WAAW,OAAO,IAAI,UAAU,IAAI,MAAM,IAC5C;EACF;CACF;AACF,CAAC;;;AClCD,MAAMC,SAAqC,OAAO,aAAa;;AAE/D,MAAMC,aAAkD,OAAO,kBAAkB;AAEjF,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQD,QAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;AAEA,SAAgB,oBAAoB,MAAqC;CACvE,QAAQC,YAAU,IAAI;AACxB;AAEA,SAAgB,kBAA2C;CACzD,MAAM,OAAO,OAAOA,YAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;;;;ACvBA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,WAAW;GAAE,MAAM;GAAuC,SAAS,KAAA;EAAU;EAC7E,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,gBAAgB,OAAwB,YAAY,CAAC;EAChF,gBAAgB,EAAE,IAAI,CAAC;EACvB,aAAa,EAAE,MAAM,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC7F;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,MAAM;EAAE,MAAM;EAA0B,SAAS,KAAA;CAAU,EAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,2BAA2B,EAAE,MAAM,MAAM,KAAK,EAAE;EAChD,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,OAAO,gBAAgB;EAC7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;;;ACjFD,MAAMC,SAAkC,OAAO,UAAU;AAEzD,SAAgB,aAAa,KAAyB;CACpD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;;;ACXA,MAAMC,SAAoC,OAAO,YAAY;AAE7D,SAAgB,eAAe,KAA2B;CACxD,QAAQA,QAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,QAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT;;AAGA,SAAgB,4BAAmD;CACjE,OAAO,OAAOA,QAAK,IAAI;AACzB;;;ACRA,SAAgB,SACd,OACA,gBACA,UACc;CAEd,MAAM,UAAU,0BAA0B;CAC1C,MAAM,gBAAwD,YAAY;EACxE,iBAAiB,OAAO;EACxB,IAAI,QAAQ,WAAW,aACrB,SAAS,QAAQ,QAAQ,EAAE;CAC/B;CACA,MAAM,UAAU,WAAW,qBAAqB;EAAE,GAAG;EAAO,gBAAgB;EAAc;CAAS,EAAE;CAErG,OAAO,EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD,EAAE;AACf;;;AClBA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EAEL,IAAI;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACvC,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,MAAM;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAChE,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,iBAAiB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACrD,cAAc;GAAE,MAAM;GAAgD,SAAS,KAAA;EAAU;CAC3F;CAEA,OAAO;EACL,kBAAkB,aAAsD;EACxE,WAAW,aAAgD;CAC7D;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,gBAA8C,YAAY;GAC9D,KAAK,iBAAiB,OAAO;EAC/B;EACA,MAAM,gBAAwC,YAAY;GACxD,KAAK,UAAU,OAAO;EACxB;EACA,MAAM,MAAM,SAAS,OAAqB,cAAc,YAAY;EACpE,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,IAAI,IAAI,IAAI,MAAM;GAClB,QAAQ,IAAI,IAAI,MAAM;GACtB,MAAM,IAAI,IAAI,MAAM;GACpB,QAAQ,IAAI,IAAI,MAAM;GACtB,WAAW,IAAI,IAAI,MAAM;GACzB,SAAS,IAAI,IAAI,MAAM;GACvB,OAAO,IAAI,IAAI,MAAM;GACrB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,cAAc,GAC5B,MAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,IAAI,MAAM,KAClD;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,oBAAoB,GAClC,MAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,IAAI,MAAM,WAClD;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;;;AC3ED,SAAgB,WACd,OACA,gBACgB;CAChB,MAAM,UAAU,WAAW,uBAAuB;EAAE,GAAG;EAAO;CAAe,EAAE;CAC/E,MAAM,MAAM,eAAe,eAAe,SAAS,YAAY,CAAC;CAEhE,OAAO;EACL;EACA,SAAQ,YAAW,IAAI,MAAM,OAAO,OAAO;EAC3C,SAAS,IAAI,YAAY,IAAI,MAAM,OAAO,IAAI,OAAO;EACrD,UAAS,OAAM,IAAI,MAAM,QAAQ,EAAE;EACnC,kBAAkB,IAAI,MAAM,WAAW;CACzC;AACF;;;ACrBA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,QAAQ;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACrE,eAAe;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EAC5E,WAAW;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EAC1E,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,iBAAiB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACrD,cAAc;GAAE,MAAM;GAAkD,SAAS,KAAA;EAAU;CAC7F;CAEA,OAAO;EACL,kBAAkB,aAAwD;EAC1E,kBAAkB,YAAiE;CACrF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA0C,YAAY;GAC1D,KAAK,iBAAiB,OAAO;GAC7B,KAAK,iBAAiB,QAAQ,MAAM;EACtC;EACA,MAAM,MAAM,WAAW,OAAuB,MAAM;EACpD,eAAe,GAAG;EAElB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,QAAQ,IAAI,IAAI,MAAM;GACtB,YAAY,IAAI,IAAI,MAAM;GAC1B,OAAO,IAAI,IAAI,MAAM;GACrB,sBAAsB,IAAI,IAAI,MAAM;GACpC,QAAQ,IAAI;GACZ,QAAQ,IAAI;GACZ,SAAS,IAAI;GACb,YAAY,IAAI;EAClB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EAEL,WAAW;EAAE,MAAM;EAAoC,SAAS,KAAA;CAAU,EAC5E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAC9B,aAAa;GACX,MAAM,MAAM,IAAI,IAAI;GACpB,MAAM,aAAa,IAAI,cAAc,EAAE,WAAW,MAAM,UAAU,CAAC;GAEnE,MAAM,YAAY,WAAW;GAC7B,MAAM,OAAO,IAAI,qBAAqB,SAAS;GAE/C,OAAO,EACL,OACA,YACA,MAAM,UAAU,KAAK,KAAI,UAAS,EAAE,UAAU,EAAE,KAAK,MAAM,GAAG,GAAG,MAAM,QAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,KAAA,CACjG;EACF;CACF;AACF,CAAC;;;ACnED,MAAMC,QAAwC,OAAO,iBAAiB;AAEtE,SAAgB,mBAAmB,KAA+B;CAChE,QAAQA,OAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,OAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;;;ACAA,SAAgB,eACd,OACA,eACoB;CAEpB,MAAM,UAAU,WAAW,2BAA2B;EAAE,GAAG;EAAO;CAAc,EAAE;CAElF,OAAO;EAAE,KADG,eAAe,mBAAmB,SAAS,YAAY,CACxD;EAAG;CAAQ;AACxB;;;ACbA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EAC7E,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAiC,SAAS,KAAA;EAAU;EACjF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAiC,SAAS,KAAA;EAAU;EACxF,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CACnD;CAEA,OAAO;EACL,iBAAiB,aAA2D;EAC5E,iBAAiB,WAAkE;CACrF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA6C,YAAY;GAC7D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,eAAe,OAA2B,MAAM;EAC5D,mBAAmB,GAAG;EACtB,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,GAC3B,MAAM,UACF,MAAM,QAAQ,IACd,MAAM,aACJ,kBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,IAAI,IACtD,CAAC,CACT;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,sBAAsB;EAElC,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;EACvC,CAAC;EAED,aAAa,EACX,UACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa;IAAE,OAAO,MAAM;IAAO,UAAU,MAAM;GAAS,CAAC;GAA8B,KAAK;EAAO,GAC1H,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;;;;AAOD,SAAS,kBACP,YACA,UACS;CACT,OAAO,WAAW,KAAI,SAAQ,EAC5B,mBACA;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAC/B,WAAW,IAAI,KAAK,KAAK,KACjC,CAAC;AACH;;;ACzFA,SAAgB,UACd,OACA,iBACe;CAEf,MAAM,UAAU,WAAW,sBAAsB;EAAE,GAAG;EAAO;CAAgB,EAAE;CAE/E,OAAO,EAAE,KADG,eAAe,cAAc,SAAS,YAAY,CACnD,EAAE;AACf;;;ACVA,MAAa,WAAW,gBAAgB;CACtC,MAAM;CACN,OAAO;EACL,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC7C,gBAAgB;EAChB,UAAU;EACV,SAAS;EACT,MAAM;EACN,MAAM;CACR;CAEA,OAAO;EACL,mBAAmB,aAAwD;EAC3E,mBAAmB,aAAmE;CACxF;CACA,MAAM,OAAO,EAAE,MAAM,SAAS;EAC5B,MAAM,UAA0C,YAAY;GAC1D,KAAK,kBAAkB,OAAO;GAC9B,KAAK,kBAAkB,QAAQ,OAAO;EACxC;EACA,MAAM,EAAE,QAAQ,UAAU,OAAsB,MAAM;EACtD,aAAa,EAAE,UAAU,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;;;AC5BD,MAAMC,QAAoC,OAAO,YAAY;AAE7D,SAAgB,eAAe,KAA2B;CACxD,QAAQA,OAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,OAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT;;;ACAA,SAAgB,WAAW,OAA+C;CACxE,MAAM,UAAU,WAAW,uBAAuB,EAAE,GAAG,MAAM,EAAE;CAE/D,OAAO;EAAE,KADG,eAAe,eAAe,SAAS,YAAY,CACpD;EAAG;CAAQ;AACxB;;;ACVA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,WAAW,KAAqB;EAC5C,eAAe,GAAG;EAClB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,cAAc,IAAI,IAAI,MAAM;GAC5B,aAAa,IAAI,IAAI,MAAM;GAC3B,UAAU,IAAI,IAAI,MAAM;EAC1B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,kBAAkB;EAE9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,CAA4B;CACpF;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EACtC,UAAU;;EAEV,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAS;CACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAE9B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,eAAe,CAAC;EACzC,CAAC;EACD,aAAa,EACX,MAAM,IACN;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa;IAAE,OAAO,MAAM;IAAO,UAAU,MAAM;GAAS,CAAC;GAA8B,KAAK;EAAO,GAC1H,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;AChFD,MAAMC,QAAoC,OAAO,YAAY;AAE7D,SAAgB,eAAe,KAA2B;CACxD,QAAQA,OAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAOA,OAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT;;;ACKA,SAAgB,WACd,OACA,cACgB;CAChB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAKlD,MAAM,UAAU,WAAW,uBAAuB;EAAE,GAAG;EAAO;CAAa,IAF7D,YAAY,MADZ,qBACsB,CAE+C,CAAC;CAGpF,IAAI,OAAO,aAAa,aACtB,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;CACrD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;CACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;CAG3D,OAAO;EAAE;EAAS,KADN,eAAe,eAAe,SAAS,YAAY,CAC3C;EAAG;EAAY;CAAc;AACnD;;;AC9BA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,WAAW;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC9C,YAAY;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC/C,UAAU;EACV,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,gBAAgB,aAAsD;EACtE,gBAAgB,UAA2D;CAC7E;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAwC,YAAY;GACxD,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,WAAW,OAAuB,MAAM;EACpD,eAAe,GAAG;EAClB,aAAa,MAAM,UAAU;GAAE,MAAM,IAAI,IAAI,MAAM;GAAM,SAAS,IAAI,IAAI,MAAM;EAAQ,CAAC;CAC3F;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;;;ACvED,MAAMC,QAAiC,OAAO,SAAS;AAEvD,SAAgB,YAAY,KAAwB;CAClD,QAAQA,OAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAOA,OAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT;;;ACKA,SAAgB,QACd,OACA,SAA+F,CAAC,GACnF;CACb,MAAM,cAAc,IAAwB,IAAI;CAChD,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CAErC,MAAM,UAAU,WAAW,oBAAoB;EAAE,GAAG;EAAO,GAAG;CAAO,IAAI,KAAK;CAE9E,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAE5F,MAAM;GACN,YAAY,WAAW;GACvB,gBAAgB,CAAC;GACjB,eAAe;GACf,gBAAgB,CAAC;GAEjB,gBAAgB,CAAC,YAAY,KAAK,CAAC,CAAC,OAAO,OAAO;EACpD,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,YAAY,SAAS,YAAY,CACxC;EAAG;EAAa;EAAe;CAAW;AAChE;;;AChDA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACjE,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACjD,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,wBAAwB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC5D,cAAc;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAClD,kBAAkB;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACrD,cAAc;GAAE,MAAM;GAA+C,SAAS,KAAA;EAAU;CAC1F;CAEA,OAAO;EACL,gBAAgB,aAAmD;EACnE,gBAAgB,UAAwD;EACxE,gBAAgB,aAAmD;EACnE,gBAAgB,UAAwD;EACxE,aAAa,aAAiD;EAC9D,SAAS,aAA6C;CACxD;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,MAAM,QAAQ,OAAoB;GACtC,eAAe,YAAY;IACzB,KAAK,eAAe,OAAO;IAC3B,KAAK,eAAe,QAAQ,IAAI;GAClC;GACA,eAAe,YAAY;IACzB,KAAK,eAAe,OAAO;IAC3B,KAAK,eAAe,QAAQ,IAAI;GAClC;GACA,aAAY,YAAW,KAAK,YAAY,OAAO;GAC/C,SAAQ,YAAW,KAAK,QAAQ,OAAO;EACzC,CAAC;EACD,YAAY,GAAG;EAEf,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,aAAa,IAAI,IAAI,MAAM;GAC3B,WAAW,IAAI,IAAI,MAAM;GACzB,UAAU,IAAI,IAAI,MAAM;GACxB,cAAc,IAAI,IAAI,MAAM;GAC5B,SAAS,IAAI,IAAI,MAAM;GACvB,SAAS,IAAI,IAAI,MAAM;GACvB,cAAc,IAAI,IAAI,MAAM;GAC5B,cAAc,IAAI,IAAI,MAAM;GAC5B,MAAM,IAAI,IAAI,MAAM;EACtB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,iBAAiB;GAClC,MAAM,OAAgB;IAAE,IAAI,YAAY,QAAQ;GAAkB;EACpE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,CAA4B;CACpF;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAGD,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EACX,MACA,IAAI,IAAI,MAAM,cAAc,GAC5B,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,aAAa,KAClD;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EACX,KACA,IAAI,IAAI,MAAM,oBAAoB,GAClC,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,aAAa,WAClD;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EACX,QACA,IAAI,IAAI,MAAM,qBAAqB,GACnC,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,YACrC;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CAC5G;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,CAA4B;CAChF;AACF,CAAC;;;ACzKD,MAAMC,QAAqC,OAAO,aAAa;AAC/D,MAAM,YAAgD,OAAO,mBAAmB;AAChF,MAAM,WAA8C,OAAO,kBAAkB;AAE7E,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQA,OAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAOA,OAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT;AAEA,SAAgB,qBAAqB,KAAiC;CACpE,QAAQ,WAAW,GAAG;AACxB;AAEA,SAAgB,0BAAgD;CAC9D,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yEAAyE;CAC3F,OAAO;AACT;AAEA,SAAgB,oBAAoB,KAAgC;CAClE,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,yBAA8C;CAC5D,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,0CAA0C;CAC5D,OAAO;AACT;;;AClCA,SAAgB,YACd,OACA,WAAgF,CAAC,GAChE;CAIjB,MAAM,UAAU,WAAW,wBAAwB;EAAE,GAAG;EAAO,GAAG;CAAS,IAF7D,YAAY,MADZ,qBACsB,CAE+C,CAAC;CAEpF,OAAO;EAAE,KADG,eAAe,gBAAgB,SAAS,YAAY,CACrD;EAAG;CAAQ;AACxB;;;ACFA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAmC,SAAS,KAAA;EAAU;EACrE,OAAO;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC/D,cAAc;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACtE,UAAU;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAClE,iBAAiB;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACzE,YAAY;EACZ,QAAQ;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EACzE,UAAU;EACV,QAAQ;EACR,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;CACjE;CAEA,OAAO;EACL,iBAAiB,aAAwD;EACzE,oBAAoB,aAA2D;EAC/E,iBAAiB,WAA+D;EAChF,oBAAoB,cAAwE;CAC9F;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAA+C,YAAY;GAC/D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,kBAAqD,YAAY;GACrE,KAAK,mBAAmB,OAAO;GAC/B,KAAK,mBAAmB,QAAQ,QAAQ;EAC1C;EACA,MAAM,MAAM,YAAY,OAAwB;GAC9C,eAAe;GACf,kBAAkB;EACpB,CAAC;EACD,gBAAgB,GAAG;EACnB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,OAAO,IAAI,IAAI,MAAM;GACrB,UAAU,IAAI,IAAI,MAAM;GACxB,aAAa,IAAI,IAAI,MAAM,aAAa,QAAQ;GAChD,aAAa,IAAI,IAAI,MAAM,aAAa,QAAQ;GAChD,SAAS,IAAI,IAAI,MAAM;GACvB,YAAY,IAAI,IAAI,MAAM;GAC1B,WAAW,IAAI,IAAI,MAAM;GACzB,UAAU,IAAI,IAAI,MAAM;GACxB,aAAa,IAAI,IAAI,MAAM;GAC3B,QAAQ,IAAI,IAAI,MAAM;GACtB,WAAW,IAAI,IAAI,MAAM;GACzB,MAAM,IAAI,IAAI,MAAM;EACtB,CAAC,CAAC;CACJ;AACF,CAAC;;AAGD,SAAS,WAAW,MAA4E;CAC9F,QAAQ,GAAY,EAAE,YAA8B;EAClD,MAAM,MAAM,mBAAmB;EAC/B,MAAM,QAAQ,gBAAoC,EAAE,KAAK,EAAE;EAC3D,qBAAqB,EAAE,MAAM,CAAC;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,MAAM,KAAK,GAA8B,MAAM,UAAU;GACzG;GACA,OAAO,IAAI,IAAI,MAAM,aAAa,IAAI;GACtC,YAAY,IAAI,IAAI,MAAM,WAAW,IAAI;GACzC,OAAO,IAAI,IAAI,MAAM,MAAM,IAAI;EACjC,CAAC,CAAC;CACJ;AACF;AAEA,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,OAAO,WAAW,QAAQ;AAC5B,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,OAAO,WAAW,QAAQ;AAC5B,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,UAAU,wBAAwB;EAC1C,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CACpH;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,UAAU,wBAAwB;EAC1C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,mBAAmB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CACpH;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,UAAU,wBAAwB;EAE1C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,mBAAmB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CACpH;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,UAAU,wBAAwB;EAC1C,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,eAAe,MAAM,KAAK,CAA4B;CAC9F;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,UAAU,wBAAwB;EAC1C,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,6BAA6B,gBAAgB;CACxD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,UAAU,wBAAwB;EAE1C,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,yBAAyB,MAAM,KAAK,GAA8B,MAAM,UAAU,CAAC;CAC5H;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,UAAU,wBAAwB;EAE1C,MAAM,OAAO,gBAAmC;GAAE,OAAO,MAAM;GAAO,MAAM,MAAM,MAAM;EAAK,EAAE;EAC/F,oBAAoB,EAAE,KAAK,CAAC;EAE5B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,MAAM,MAAM,MAAM;IAAM,OAAO;GAAK,CAAC;EAC5E,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAa,MAAM,MAAM,MAAM;GAAK,CAAC;EAC9D,CAAC;EACD,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAO,GACpF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,SAAS,uBAAuB;EACxC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,EAAE,SAAS,uBAAuB;EACxC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,qBAAqB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAE/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,wBAAwB,GAA8B,MAAM,UAAU,CAAC;CAChH;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,wBAAwB,GAA8B,MAAM,UAAU,CAAC;CAChH;AACF,CAAC;;;AC7ND,MAAMC,QAAuC,OAAO,gBAAgB;AACpE,MAAMC,aAAgD,OAAO,qBAAqB;AAElF,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQD,OAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,OAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;AAEA,SAAgB,sBAAsB,KAAkC;CACtE,QAAQC,YAAU,GAAG;AACvB;AAEA,SAAgB,2BAAkD;CAChE,MAAM,MAAM,OAAOA,YAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mEAAmE;CACrF,OAAO;AACT;;;ACZA,SAAgB,cACd,OACA,WAAmG,CAAC,GACjF;CACnB,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CAErC,MAAM,UAAU,WAAW,0BAA0B;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CAEtF,IAAI,OAAO,aAAa,aAAa;EACnC,MAAM,SAAwB,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG/E,MAAM,sBAA0D,OAAO,cAAc,SAAS;GAC5F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAM;EACjC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAGA,OAAO;EAAE;EAAS,KADN,eAAe,kBAAkB,SAAS,YAAY,CAC9C;EAAG;EAAY;EAAe;CAAW;AAC/D;;;;AC/CA,SAASC,kBAAgB,KAAwB,IAA6B,OAA2B;CACvG,MAAM,QAAQ,MAAM,SAAS;EAC3B,IAAI,SAAS,MACX;EACF,MAAM,EAAE,YAAY;EACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EACF,IAAI,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACtD,QAAQ,KAAK;GAAE,MAAM;GAAc,OAAO;EAAK,CAAC;CACpD,CAAC;CACD,sBAAsB;EACpB,MAAM,EAAE,YAAY;EAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EAEF,IAAI,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACtD,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;CACtC,CAAC;AACH;AAEA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACtE,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EAClF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EACzF,eAAe;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACvE,sBAAsB;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC9E,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,UAAU;EACV,UAAU;EACV,UAAU;EACV,SAAS;EACT,SAAS;GAAE,MAAM;GAAoC,SAAS,KAAA;EAAU;EACxE,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,WAAW;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACrE,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;CAC3C;CAEA,OAAO;EACL,iBAAiB,aAA0D;EAC3E,oBAAoB,aAA6D;EACjF,gBAAgB,aAAyD;EACzE,iBAAiB,WAAiE;EAClF,yBAAyB,WAAoE;EAC7F,gBAAgB,UAA8D;CAChF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,eAAiD,YAAY;GACjE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,kBAAuD,YAAY;GACvE,KAAK,mBAAmB,OAAO;GAC/B,KAAK,wBAAwB,QAAQ,KAAK;EAC5C;EACA,MAAM,cAA+C,YAAY;GAC/D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EACA,MAAM,MAAM,cAAc,OAA0B;GAClD,eAAe;GACf,kBAAkB;GAClB,cAAc;EAChB,CAAC;EACD,kBAAkB,GAAG;EAErB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,eAAe,IAAI,IAAI,MAAM;GAC7B,cAAc,IAAI,IAAI,MAAM;GAC5B,cAAc,IAAI,IAAI,MAAM;GAC5B,aAAa,IAAI,IAAI,MAAM;GAC3B,UAAU,IAAI,IAAI,MAAM;GACxB,YAAY,IAAI,IAAI,MAAM;GAC1B,YAAY,IAAI,IAAI,MAAM;GAC1B,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,kBAAkB,IAAI,IAAI,MAAM;GAChC,QAAQ,IAAI,IAAI,MAAM;GACtB,UAAU,IAAI,IAAI,MAAM;GACxB,QAAQ,IAAI,IAAI,MAAM;GACtB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU;GACvB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,kBAAkB,GAChC,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,WACrC;CACF;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,mBAAmB;GACpC,MAAM,OAAgB;IAAE,IAAI,cAAc,QAAQ;GAAkB;EACtE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,OAAO,gBAAqC,EAAE,OAAO,MAAM,MAAM,EAAE;EACzE,sBAAsB,EAAE,KAAK,CAAC;EAC9B,MAAM,KAAK,IAAwB,IAAI;EACvC,kBAAgB,KAAK,UAAU,MAAM,KAAK;EAC1C,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAG,GAChF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,MAAM,OAAO,gBAAqC,EAAE,OAAO,MAAM,MAAM,EAAE;EAEzE,sBAAsB,EAAE,KAAK,CAAC;EAC9B,MAAM,KAAK,IAAwB,IAAI;EACvC,kBAAgB,KAAK,UAAU,MAAM,KAAK;EAC1C,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,eAAe,KAAK,KAAK;GAA8B,KAAK;EAAG,GAClF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;AAED,MAAa,8BAA8B,gBAAgB;CACzD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,wBAAwB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACxH;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAC1C,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,mBAAmB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACnH;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,MAAM,EAAE,SAAS,yBAAyB;EAE1C,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,qBAAqB;EAEjC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,oBAAoB,CAA4B;CACxF;AACF,CAAC;;;AC/RD,MAAMC,QAAiC,OAAO,SAAS;AACvD,MAAM,WAA0C,OAAO,cAAc;AAErE,SAAgB,YAAY,KAAwB;CAClD,QAAQA,OAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAOA,OAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT;AAEA,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iDAAiD;CACnE,OAAO;AACT;;;ACjBA,SAAgB,QACd,OACA,kBACA,mBACa;CAIb,MAAM,UAAU,WAAW,oBAAoB;EAAE,GAAG;EAAO;EAAkB;CAAkB,IAFjF,YAAY,MADZ,qBACsB,CAEmE,CAAC;CAExG,OAAO;EAAE,KADG,eAAe,YAAY,SAAS,YAAY,CACjD;EAAG;CAAQ;AACxB;;;;ACfA,SAAS,gBAAgB,KAAkB,IAA6B,OAA2B;CACjG,MAAM,QAAQ,MAAM,SAAS;EAC3B,IAAI,SAAS,MACX;EACF,MAAM,EAAE,YAAY;EACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EACF,IAAI,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACtD,QAAQ,KAAK;GAAE,MAAM;GAAc,OAAO;EAAK,CAAC;CACpD,CAAC;CACD,sBAAsB;EACpB,MAAM,EAAE,YAAY;EAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EAEF,IAAI,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACtD,QAAQ,KAAK,EAAE,MAAM,YAAY,CAAC;CACtC,CAAC;AACH;AAEA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACtE,eAAe;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACvE,sBAAsB;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC9E,eAAe;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACvE,sBAAsB;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC9E,eAAe;GAAE,MAAM;GAAuC,SAAS,KAAA;EAAU;EACjF,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,UAAU;EACV,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,WAAW;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC/C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;CACjE;CAEA,OAAO;EACL,oBAAoB,aAAuD;EAC3E,yBAAyB,WAA8D;EACvF,qBAAqB,aAAwD;EAC7E,yBAAyB,WAA+D;CAC1F;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,oBAAmD,YAAY;GACnE,KAAK,mBAAmB,OAAO;GAC/B,KAAK,wBAAwB,QAAQ,KAAK;EAC5C;EACA,MAAM,qBAAqD,YAAY;GACrE,KAAK,oBAAoB,OAAO;GAChC,KAAK,wBAAwB,QAAQ,KAAK;EAC5C;EACA,MAAM,MAAM,QAAQ,OAAoB,kBAAkB,iBAAiB;EAC3E,YAAY,GAAG;EACf,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,cAAc,IAAI,IAAI,MAAM;GAC5B,eAAe,IAAI,IAAI,MAAM;GAC7B,eAAe,IAAI,IAAI,MAAM;GAC7B,cAAc,IAAI,IAAI,MAAM;GAC5B,YAAY,IAAI,IAAI,MAAM;GAC1B,YAAY,IAAI,IAAI,MAAM;GAC1B,QAAQ,IAAI,IAAI,MAAM;GACtB,UAAU,IAAI,IAAI,MAAM;GACxB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAC3B,MAAM,OAAO,gBAA+B,EAAE,OAAO,MAAM,MAAM,EAAE;EACnE,gBAAgB,EAAE,KAAK,CAAC;EACxB,MAAM,KAAK,IAAwB,IAAI;EACvC,gBAAgB,KAAK,UAAU,MAAM,KAAK;EAC1C,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAG,GAChF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAC3B,MAAM,OAAO,gBAA+B,EAAE,OAAO,MAAM,MAAM,EAAE;EAEnE,gBAAgB,EAAE,KAAK,CAAC;EACxB,MAAM,KAAK,IAAwB,IAAI;EACvC,gBAAgB,KAAK,UAAU,MAAM,KAAK;EAC1C,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,eAAe,KAAK,KAAK;GAA8B,KAAK;EAAG,GAClF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,wBAAwB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACxH;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,mBAAmB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACnH;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EAEpC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;;;AC9LD,MAAMC,QAAuC,OAAO,eAAe;AAEnE,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQA,OAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAOA,OAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;;;;ACVA,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO,EACL,MAAM;EAAE,MAAM;EAA0B,SAAS,KAAA;CAAU,EAC7D;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,kBAAkB,OAA0B,YAAY,CAAC;EACpF,kBAAkB,EAAE,IAAI,CAAC;EACzB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;;;;;AAMD,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAyC,SAAS,KAAA;EAAU;EAC1F,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAI;CACnC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EACX,MAAM,IACN,IAAI,IAAI,MAAM,gBAAgB,EAAE,OAAO,MAAM,MAAM,CAAC,GACpD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;;;AAMD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,OAAO;EACL,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,SAAS;GAAE,MAAM;GAAuC,SAAS,KAAA;EAAU;EAC3E,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAO;CACtC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EACX,MAAM,IACN,IAAI,IAAI,MAAM,aAAa;GAAE,MAAM,MAAM;GAAM,SAAS,MAAM;EAAQ,CAAC,GACvE,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAGD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,qBAAqB;EACjC,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAChG;AACF,CAAC;;;AC1DD,SAAgB,eACd,OACA,UACoB;CACpB,MAAM,cAAc,IAAwB,IAAI;CAChD,MAAM,aAAa,IAAwB,IAAI;CAK/C,MAAM,UAAU,WAAW,2BAA2B;EAAE,GAAG;EAAO;CAAS,IAF7D,YAAY,MADZ,qBACsB,CAE+C,CAAC;CAGpF,QAAQ,KAAK,IAAI,uBAAuB,YAAY,KAAK;CACzD,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CAGvD,OAAO;EAAE;EAAS,KADN,eAAe,mBAAmB,SAAS,YAAY,CAC/C;EAAG;EAAa;CAAW;AACjD;;;ACjCA,MAAMC,QAAwC,OAAO,gBAAgB;AAErE,SAAgB,mBAAmB,KAA+B;CAChE,QAAQA,OAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAOA,OAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;;;ACNA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,cAAc;GAAE,MAAM,CAAC,QAAQ,QAAQ;GAAqD,SAAS,KAAA;EAAU;EAC/G,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,YAAY;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAChD,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,YAAY;GAAE,MAAM;GAA0D,SAAS,KAAA;EAAU;EACjG,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,cAAc;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACjD,YAAY;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC/C,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;CAC5C;CAEA,OAAO,EACL,SAAS,aAAsD,KACjE;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAwC,YAAsC,KAAK,UAAU,OAAO;EAC1G,MAAM,MAAM,eAAe,OAA2B,MAAM;EAC5D,mBAAmB,GAAG;EACtB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,cAAc,IAAI,IAAI,MAAM;GAC5B,WAAW,IAAI,IAAI,MAAM;GACzB,YAAY,IAAI,IAAI,MAAM;GAC1B,UAAU,IAAI,IAAI,MAAM;GACxB,WAAW,IAAI,IAAI,MAAM;GACzB,OAAO,IAAI,IAAI,MAAM;GACrB,eAAe,IAAI,IAAI,MAAM;GAC7B,gBAAgB,IAAI,IAAI,MAAM;GAC9B,SAAS,IAAI,IAAI,MAAM;EACzB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAElC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,iBAAiB;GAClC,KAAK,IAAI;EACX,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,sBAAsB;EAClC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,KAAK,IAAI;EACX,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO;;EAEL,OAAO;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAgC,UAAU;EAAK;;EAE7E,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAC/C;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,sBAAsB;EAClC,MAAM,KAAK,IAAwB,IAAI;EAGvC,MAAM,eAAqB;GACzB,IAAI,MAAM,SACR,IAAI,IAAI,MAAM,eAAe,GAAG,KAAK;EACzC;EACA,UAAU,MAAM;EAChB,UAAU,MAAM;EAEhB,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,aAAa,EAAE,OAAO,OAAO,MAAM,KAAK,EAAE,CAAC;GAC5D,KAAK;EACP,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;;;ACtFD,MAAM,MAAsC,OAAO,cAAc;AAEjE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT;;;;;;;ACRA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CAEN,OAAO;EACL,MAAM;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAkC,SAAS,KAAA;EAAU;EACjF,QAAQ;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC3C,KAAK;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACxC,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,SAAS;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;CAC9C;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,iBAAiB,OAAyB,YAAY,CAAC;EAClF,iBAAiB,EAAE,IAAI,CAAC;EACxB,aAAa,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC9F;AACF,CAAC;;AAGD,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,oBAAoB;EAChC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC"}
|