@gunkin/uiify 0.0.1-alpha → 0.0.2-alpha
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/dist/components/accordion/Accordion.d.ts +2 -2
- package/dist/components/accordion/Accordion.d.ts.map +1 -1
- package/dist/components/accordion/Accordion.js +1 -2
- package/dist/components/accordion/Accordion.js.map +1 -1
- package/dist/components/alert-modal/AlertModal.d.ts +1 -1
- package/dist/components/alert-modal/AlertModal.d.ts.map +1 -1
- package/dist/components/alert-modal/AlertModal.js +5 -8
- package/dist/components/alert-modal/AlertModal.js.map +1 -1
- package/dist/components/alert-modal/AlertModalParts.d.ts +4 -29
- package/dist/components/alert-modal/AlertModalParts.d.ts.map +1 -1
- package/dist/components/alert-modal/AlertModalParts.js +29 -36
- package/dist/components/alert-modal/AlertModalParts.js.map +1 -1
- package/dist/components/alert-modal/types.d.ts +0 -3
- package/dist/components/alert-modal/types.d.ts.map +1 -1
- package/dist/components/behavior.css +91 -48
- package/dist/components/behavior.css.map +1 -1
- package/dist/components/breadcrumb/Breadcrumb.js +1 -1
- package/dist/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Button.js +1 -0
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/candle-chart/CandleChart.d.ts.map +1 -1
- package/dist/components/candle-chart/CandleChart.js +39 -55
- package/dist/components/candle-chart/CandleChart.js.map +1 -1
- package/dist/components/candle-chart/client/CandleChartClient.js.map +1 -1
- package/dist/components/carousel/CarouselMarkup.d.ts.map +1 -1
- package/dist/components/carousel/CarouselMarkup.js +26 -45
- package/dist/components/carousel/CarouselMarkup.js.map +1 -1
- package/dist/components/carousel/carousel-markup.d.ts +0 -1
- package/dist/components/carousel/carousel-markup.d.ts.map +1 -1
- package/dist/components/carousel/carousel-markup.js +0 -5
- package/dist/components/carousel/carousel-markup.js.map +1 -1
- package/dist/components/carousel/client/carousel-controller.js +2 -2
- package/dist/components/carousel/client/carousel-controller.js.map +1 -1
- package/dist/components/carousel/client/carousel-controls.d.ts.map +1 -1
- package/dist/components/carousel/client/carousel-controls.js +3 -5
- package/dist/components/carousel/client/carousel-controls.js.map +1 -1
- package/dist/components/carousel/client/carousel-drag.js +1 -1
- package/dist/components/carousel/client/carousel-drag.js.map +1 -1
- package/dist/components/carousel/client/carousel-observer.js +2 -2
- package/dist/components/carousel/client/carousel-observer.js.map +1 -1
- package/dist/components/carousel/fade/fade-controller.js +2 -2
- package/dist/components/carousel/fade/fade-controller.js.map +1 -1
- package/dist/components/carousel/fade/fade-swipe.js +1 -1
- package/dist/components/carousel/fade/fade-swipe.js.map +1 -1
- package/dist/components/carousel/index.d.ts +1 -1
- package/dist/components/carousel/index.d.ts.map +1 -1
- package/dist/components/carousel/index.js.map +1 -1
- package/dist/components/carousel/types.d.ts +0 -13
- package/dist/components/carousel/types.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.js +3 -2
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +7 -1
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/types.d.ts +1 -0
- package/dist/components/combobox/types.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
- package/dist/components/context-menu/ContextMenu.js +21 -4
- package/dist/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/components/drawer/Drawer.d.ts.map +1 -1
- package/dist/components/drawer/Drawer.js +15 -0
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/drawer/DrawerNative.d.ts +1 -1
- package/dist/components/drawer/DrawerNative.d.ts.map +1 -1
- package/dist/components/drawer/DrawerNative.js +28 -13
- package/dist/components/drawer/DrawerNative.js.map +1 -1
- package/dist/components/drawer/types.d.ts +0 -2
- package/dist/components/drawer/types.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.js +2 -1
- package/dist/components/dropdown-menu/DropdownMenu.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.d.ts +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.d.ts.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenuBar.js +12 -2
- package/dist/components/dropdown-menu/DropdownMenuBar.js.map +1 -1
- package/dist/components/dropdown-menu/types.d.ts +1 -0
- package/dist/components/dropdown-menu/types.d.ts.map +1 -1
- package/dist/components/enhance/listeners.js +1 -1
- package/dist/components/enhance/listeners.js.map +1 -1
- package/dist/components/enhance/sync.d.ts.map +1 -1
- package/dist/components/enhance/sync.js +7 -4
- package/dist/components/enhance/sync.js.map +1 -1
- package/dist/components/field/Field.d.ts.map +1 -1
- package/dist/components/field/Field.js +6 -0
- package/dist/components/field/Field.js.map +1 -1
- package/dist/components/file-upload/FileUpload.d.ts.map +1 -1
- package/dist/components/file-upload/FileUpload.js +8 -2
- package/dist/components/file-upload/FileUpload.js.map +1 -1
- package/dist/components/file-upload/types.d.ts +1 -0
- package/dist/components/file-upload/types.d.ts.map +1 -1
- package/dist/components/hover-card/HoverCard.d.ts.map +1 -1
- package/dist/components/hover-card/HoverCard.js +2 -0
- package/dist/components/hover-card/HoverCard.js.map +1 -1
- package/dist/components/input/Input.d.ts.map +1 -1
- package/dist/components/input/Input.js +1 -0
- package/dist/components/input/Input.js.map +1 -1
- package/dist/components/internal/choice-family/ChoiceGroup.d.ts +1 -2
- package/dist/components/internal/choice-family/ChoiceGroup.d.ts.map +1 -1
- package/dist/components/internal/choice-family/ChoiceGroup.js +5 -6
- package/dist/components/internal/choice-family/ChoiceGroup.js.map +1 -1
- package/dist/components/internal/choice-family/types.d.ts +0 -4
- package/dist/components/internal/choice-family/types.d.ts.map +1 -1
- package/dist/components/line-chart/LineChart.d.ts.map +1 -1
- package/dist/components/line-chart/LineChart.js +30 -38
- package/dist/components/line-chart/LineChart.js.map +1 -1
- package/dist/components/line-chart/client/LineChartClient.js.map +1 -1
- package/dist/components/modal/Modal.d.ts +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +4 -6
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/ModalParts.d.ts +3 -30
- package/dist/components/modal/ModalParts.d.ts.map +1 -1
- package/dist/components/modal/ModalParts.js +20 -17
- package/dist/components/modal/ModalParts.js.map +1 -1
- package/dist/components/modal/client/ModalClientContent.d.ts.map +1 -1
- package/dist/components/modal/client/ModalClientContent.js +5 -2
- package/dist/components/modal/client/ModalClientContent.js.map +1 -1
- package/dist/components/modal/types.d.ts +0 -2
- package/dist/components/modal/types.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.d.ts.map +1 -1
- package/dist/components/otp-input/OtpInput.js +3 -0
- package/dist/components/otp-input/OtpInput.js.map +1 -1
- package/dist/components/popup/Popup.d.ts.map +1 -1
- package/dist/components/popup/Popup.js +8 -3
- package/dist/components/popup/Popup.js.map +1 -1
- package/dist/components/popup/PopupParts.d.ts +3 -26
- package/dist/components/popup/PopupParts.d.ts.map +1 -1
- package/dist/components/popup/PopupParts.js +27 -18
- package/dist/components/popup/PopupParts.js.map +1 -1
- package/dist/components/radio-group/RadioGroup.d.ts.map +1 -1
- package/dist/components/radio-group/RadioGroup.js +0 -1
- package/dist/components/radio-group/RadioGroup.js.map +1 -1
- package/dist/components/select/Select.d.ts.map +1 -1
- package/dist/components/select/Select.js +1 -0
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/slider/Slider.d.ts.map +1 -1
- package/dist/components/slider/Slider.js +1 -0
- package/dist/components/slider/Slider.js.map +1 -1
- package/dist/components/spinner/Spinner.d.ts.map +1 -1
- package/dist/components/spinner/Spinner.js +2 -2
- package/dist/components/spinner/Spinner.js.map +1 -1
- package/dist/components/spinner/types.d.ts +1 -1
- package/dist/components/spinner/types.d.ts.map +1 -1
- package/dist/components/stepper/Stepper.js +2 -2
- package/dist/components/stepper/Stepper.js.map +1 -1
- package/dist/components/switch/Switch.d.ts.map +1 -1
- package/dist/components/switch/Switch.js +1 -0
- package/dist/components/switch/Switch.js.map +1 -1
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +1 -3
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tags-input/TagsInput.d.ts.map +1 -1
- package/dist/components/tags-input/TagsInput.js +6 -1
- package/dist/components/tags-input/TagsInput.js.map +1 -1
- package/dist/components/tags-input/types.d.ts +1 -0
- package/dist/components/tags-input/types.d.ts.map +1 -1
- package/dist/components/textarea/Textarea.d.ts.map +1 -1
- package/dist/components/textarea/Textarea.js +1 -0
- package/dist/components/textarea/Textarea.js.map +1 -1
- package/dist/components/toast/Toast.d.ts.map +1 -1
- package/dist/components/toast/Toast.js +2 -1
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toast/ToastElements.d.ts.map +1 -1
- package/dist/components/toast/ToastElements.js +4 -1
- package/dist/components/toast/ToastElements.js.map +1 -1
- package/dist/components/toggle/Toggle.d.ts.map +1 -1
- package/dist/components/toggle/Toggle.js +1 -0
- package/dist/components/toggle/Toggle.js.map +1 -1
- package/dist/components/toolbar/Toolbar.d.ts.map +1 -1
- package/dist/components/toolbar/Toolbar.js +5 -3
- package/dist/components/toolbar/Toolbar.js.map +1 -1
- package/dist/components/toolbar/ToolbarShell.d.ts.map +1 -1
- package/dist/components/toolbar/ToolbarShell.js +8 -5
- package/dist/components/toolbar/ToolbarShell.js.map +1 -1
- package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.js +2 -0
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/virtual-scroll/VirtualScroll.js +2 -2
- package/dist/components/virtual-scroll/VirtualScroll.js.map +1 -1
- package/dist/components/virtual-scroll/VirtualScrollRowShell.d.ts +1 -1
- package/dist/components/virtual-scroll/VirtualScrollRowShell.js +3 -3
- package/dist/components/virtual-scroll/VirtualScrollRowShell.js.map +1 -1
- package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.js +2 -2
- package/dist/components/virtual-scroll/virtual-scroll-scroll-sync.js.map +1 -1
- package/dist/core/render-native-invoker.d.ts +6 -3
- package/dist/core/render-native-invoker.d.ts.map +1 -1
- package/dist/core/render-native-invoker.js +5 -3
- package/dist/core/render-native-invoker.js.map +1 -1
- package/dist/elements/choice/Choice.d.ts +2 -2
- package/dist/elements/choice/Choice.js +1 -1
- package/dist/elements/choice/Choice.js.map +1 -1
- package/dist/elements/choice/types.d.ts +1 -1
- package/dist/elements/choice/types.d.ts.map +1 -1
- package/dist/elements/dialog/Dialog.d.ts +3 -3
- package/dist/elements/dialog/Dialog.d.ts.map +1 -1
- package/dist/elements/dialog/Dialog.js +5 -3
- package/dist/elements/dialog/Dialog.js.map +1 -1
- package/dist/elements/popover/Popover.d.ts +6 -5
- package/dist/elements/popover/Popover.d.ts.map +1 -1
- package/dist/elements/popover/Popover.js +8 -4
- package/dist/elements/popover/Popover.js.map +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/styles/tailwind.css +33 -35
- package/dist/styles/tokens.css +1 -1
- package/package.json +7 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/carousel/client/carousel-controller.ts"],"sourcesContent":["import { createCarouselPages, findCarouselPage } from \"../carousel-pages.js\";\nimport { attachCarouselCommands } from \"../commands.js\";\nimport type {\n CarouselController,\n CarouselControllerOptions,\n CarouselGeometry,\n CarouselObservation,\n CarouselReason,\n CarouselSnapshot,\n} from \"../types.js\";\nimport { observeCarousel } from \"./carousel-observer.js\";\n\nexport function createCarouselController(\n root: HTMLElement,\n initialOptions: CarouselControllerOptions,\n): CarouselController {\n const viewport = root.querySelector<HTMLElement>(\":scope > [data-uiify-carousel-viewport]\");\n if (!viewport) throw new Error(\"Carousel viewport is missing\");\n const observer = observeCarousel(root);\n const listeners = new Set<() => void>();\n let options = initialOptions;\n let geometry: CarouselGeometry | undefined;\n let snapshot: CarouselSnapshot = {\n ready: false,\n index: 0,\n requestedIndex: null,\n settledChange: null,\n pages: [],\n visibleIndices: [],\n atStart: true,\n atEnd: true,\n moving: false,\n interacting: false,\n };\n let destroyed = false;\n let token = 0;\n let reason: CarouselReason = \"scroll\";\n let silent = false;\n let activeId: string | undefined;\n let touch = false;\n let touchActive = false;\n const resizedSlides = new Set<Element>();\n const slides = () =>\n Array.from(viewport.children).filter((node) => node.hasAttribute(\"data-uiify-carousel-slide\"));\n function publish(next: CarouselSnapshot) {\n if (JSON.stringify(snapshot) === JSON.stringify(next)) return;\n snapshot = next;\n listeners.forEach((listener) => listener());\n }\n function observe(value: CarouselObservation, settle: boolean) {\n if (value.geometry.viewportSize <= 0) return;\n geometry = value.geometry;\n const pages = createCarouselPages(geometry);\n const page = findCarouselPage(pages, geometry.currentOffset);\n if (!page || geometry.viewportSize <= 0) return;\n const previousIndex = snapshot.index;\n const changed = snapshot.ready && previousIndex !== page.index;\n const detail =\n changed && settle && !silent ? { previousIndex, index: page.index, reason } : null;\n publish({\n ...snapshot,\n ready: true,\n pages,\n visibleIndices: value.visibleIndices,\n index: settle ? page.index : snapshot.index,\n atStart: page.index === pages[0]?.index,\n atEnd: page.index === pages.at(-1)?.index,\n ...(settle\n ? { moving: false, requestedIndex: null, settledChange: detail ?? snapshot.settledChange }\n : {}),\n });\n if (settle) {\n activeId = slides()[page.index]?.id;\n if (detail) {\n if (reason !== \"controlled\") options.onSelect?.(page.index, detail);\n options.afterChange?.(detail);\n if (reason === \"drag\" || touch) options.onSwipe?.(detail);\n }\n touch = false;\n silent = false;\n reason = \"scroll\";\n }\n }\n function measure(receive: (value: CarouselObservation) => void) {\n const request = ++token;\n observer.measure((value) => {\n if (!destroyed && request === token) receive(value);\n });\n }\n function request(index: number, why: CarouselReason, quiet = false) {\n if (destroyed || !Number.isInteger(index) || index < 0) return;\n const previousRequested = snapshot.requestedIndex;\n touch = false;\n touchActive = false;\n reason = why;\n silent = quiet;\n publish({ ...snapshot, requestedIndex: index, moving: true });\n measure((value) => {\n observe(value, false);\n const target =\n snapshot.pages.filter((page) => page.index <= index).at(-1) ?? snapshot.pages[0];\n if (!target) return;\n const delta = target.offset - value.geometry.currentOffset;\n if (Math.abs(delta) <= 1) {\n observe(value, true);\n return;\n }\n publish({ ...snapshot, requestedIndex: target.index });\n if (!quiet && previousRequested !== target.index)\n options.beforeChange?.({ previousIndex: snapshot.index, index: target.index, reason: why });\n viewport!.scrollBy(\n value.geometry.physicalAxis === \"x\"\n ? { left: delta * value.geometry.sign, behavior: \"auto\" }\n : { top: delta * value.geometry.sign, behavior: \"auto\" },\n );\n });\n }\n function step(direction: 1 | -1, why: CarouselReason) {\n const pages = snapshot.pages;\n const position = pages.findIndex(\n (page) => page.index === (snapshot.requestedIndex ?? snapshot.index),\n );\n let next = position + direction;\n if (options.rewind) next = (next + pages.length) % pages.length;\n const target = pages[Math.max(0, Math.min(pages.length - 1, next))];\n if (target) request(target.index, why);\n }\n function refresh() {\n if (destroyed) return;\n const currentSlides = slides();\n for (const slide of resizedSlides) {\n if (!currentSlides.includes(slide)) {\n resize.unobserve(slide);\n resizedSlides.delete(slide);\n }\n }\n for (const slide of currentSlides) {\n if (!resizedSlides.has(slide)) {\n resizedSlides.add(slide);\n resize.observe(slide);\n }\n }\n const wasReady = snapshot.ready;\n const oldId = activeId;\n measure((value) => {\n if (!wasReady) silent = true;\n observe(value, false);\n if (!snapshot.ready) return;\n const retained = oldId ? slides().findIndex((node) => node.id === oldId) : -1;\n const target =\n options.value ??\n (wasReady ? Math.max(0, retained < 0 ? snapshot.index : retained) : options.defaultValue);\n const hasFragment = slides().some(\n (node) =>\n `#${encodeURIComponent(node.id)}` === root.ownerDocument.defaultView?.location.hash,\n );\n if (\n (!wasReady &&\n options.value === undefined &&\n (value.geometry.currentOffset > 1 || hasFragment)) ||\n target === findCarouselPage(snapshot.pages, value.geometry.currentOffset)?.index\n )\n observe(value, true);\n else request(target, wasReady ? \"items\" : \"controlled\", !wasReady);\n });\n }\n const scroll = () => {\n if (touchActive) touch = true;\n if (!snapshot.moving) publish({ ...snapshot, moving: true });\n };\n // Native touch events continue after pointercancel when the browser takes over scrolling.\n const touchStart = (event: TouchEvent) => {\n if (event.target instanceof Element && event.target.closest(\"[data-uiify-carousel]\") === root) {\n touchActive = true;\n touch = false;\n }\n };\n const touchEnd = () => {\n touchActive = false;\n };\n const settle = () => {\n measure((value) => observe(value, true));\n };\n const pointer = (event: PointerEvent) => {\n if (event.target instanceof Element && event.target.closest(\"[data-uiify-carousel]\") !== root)\n return;\n if (snapshot.moving) {\n ++token;\n reason = \"scroll\";\n silent = false;\n publish({ ...snapshot, requestedIndex: null });\n }\n };\n viewport.addEventListener(\"scroll\", scroll);\n viewport.addEventListener(\"scrollend\", settle);\n viewport.addEventListener(\"pointerdown\", pointer);\n viewport.addEventListener(\"touchstart\", touchStart, { passive: true });\n viewport.addEventListener(\"touchend\", touchEnd, { passive: true });\n viewport.addEventListener(\"touchcancel\", touchEnd, { passive: true });\n const resize = new ResizeObserver(refresh);\n resize.observe(viewport);\n const controller: CarouselController = {\n getSnapshot: () => snapshot,\n getGeometry: () => geometry,\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n goTo: request,\n next: (why) => step(1, why),\n previous: (why) => step(-1, why),\n setInteracting(active) {\n if (destroyed) return;\n publish({ ...snapshot, interacting: active });\n },\n update(next) {\n options = next;\n if (snapshot.ready && next.value !== undefined && next.value !== snapshot.index)\n request(next.value, \"controlled\");\n },\n refresh,\n destroy() {\n destroyed = true;\n token++;\n observer.destroy();\n resize.disconnect();\n detach();\n listeners.clear();\n viewport.removeEventListener(\"scroll\", scroll);\n viewport.removeEventListener(\"scrollend\", settle);\n viewport.removeEventListener(\"pointerdown\", pointer);\n viewport.removeEventListener(\"touchstart\", touchStart);\n viewport.removeEventListener(\"touchend\", touchEnd);\n viewport.removeEventListener(\"touchcancel\", touchEnd);\n },\n };\n const detach = attachCarouselCommands(root, {\n next: () => controller.next(\"command\"),\n previous: () => controller.previous(\"command\"),\n });\n refresh();\n return controller;\n}\n"],"mappings":"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","names":["settle","request"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/carousel/client/carousel-controller.ts"],"sourcesContent":["import { createCarouselPages, findCarouselPage } from \"../carousel-pages.js\";\nimport { attachCarouselCommands } from \"../commands.js\";\nimport type {\n CarouselController,\n CarouselControllerOptions,\n CarouselGeometry,\n CarouselObservation,\n CarouselReason,\n CarouselSnapshot,\n} from \"../types.js\";\nimport { observeCarousel } from \"./carousel-observer.js\";\n\nexport function createCarouselController(\n root: HTMLElement,\n initialOptions: CarouselControllerOptions,\n): CarouselController {\n const viewport = root.querySelector<HTMLElement>(':scope > [data-part=\"viewport\"]');\n if (!viewport) throw new Error(\"Carousel viewport is missing\");\n const observer = observeCarousel(root);\n const listeners = new Set<() => void>();\n let options = initialOptions;\n let geometry: CarouselGeometry | undefined;\n let snapshot: CarouselSnapshot = {\n ready: false,\n index: 0,\n requestedIndex: null,\n settledChange: null,\n pages: [],\n visibleIndices: [],\n atStart: true,\n atEnd: true,\n moving: false,\n interacting: false,\n };\n let destroyed = false;\n let token = 0;\n let reason: CarouselReason = \"scroll\";\n let silent = false;\n let activeId: string | undefined;\n let touch = false;\n let touchActive = false;\n const resizedSlides = new Set<Element>();\n const slides = () =>\n Array.from(viewport.children).filter((node) => node.getAttribute(\"data-part\") === \"slide\");\n function publish(next: CarouselSnapshot) {\n if (JSON.stringify(snapshot) === JSON.stringify(next)) return;\n snapshot = next;\n listeners.forEach((listener) => listener());\n }\n function observe(value: CarouselObservation, settle: boolean) {\n if (value.geometry.viewportSize <= 0) return;\n geometry = value.geometry;\n const pages = createCarouselPages(geometry);\n const page = findCarouselPage(pages, geometry.currentOffset);\n if (!page || geometry.viewportSize <= 0) return;\n const previousIndex = snapshot.index;\n const changed = snapshot.ready && previousIndex !== page.index;\n const detail =\n changed && settle && !silent ? { previousIndex, index: page.index, reason } : null;\n publish({\n ...snapshot,\n ready: true,\n pages,\n visibleIndices: value.visibleIndices,\n index: settle ? page.index : snapshot.index,\n atStart: page.index === pages[0]?.index,\n atEnd: page.index === pages.at(-1)?.index,\n ...(settle\n ? { moving: false, requestedIndex: null, settledChange: detail ?? snapshot.settledChange }\n : {}),\n });\n if (settle) {\n activeId = slides()[page.index]?.id;\n if (detail) {\n if (reason !== \"controlled\") options.onSelect?.(page.index, detail);\n options.afterChange?.(detail);\n if (reason === \"drag\" || touch) options.onSwipe?.(detail);\n }\n touch = false;\n silent = false;\n reason = \"scroll\";\n }\n }\n function measure(receive: (value: CarouselObservation) => void) {\n const request = ++token;\n observer.measure((value) => {\n if (!destroyed && request === token) receive(value);\n });\n }\n function request(index: number, why: CarouselReason, quiet = false) {\n if (destroyed || !Number.isInteger(index) || index < 0) return;\n const previousRequested = snapshot.requestedIndex;\n touch = false;\n touchActive = false;\n reason = why;\n silent = quiet;\n publish({ ...snapshot, requestedIndex: index, moving: true });\n measure((value) => {\n observe(value, false);\n const target =\n snapshot.pages.filter((page) => page.index <= index).at(-1) ?? snapshot.pages[0];\n if (!target) return;\n const delta = target.offset - value.geometry.currentOffset;\n if (Math.abs(delta) <= 1) {\n observe(value, true);\n return;\n }\n publish({ ...snapshot, requestedIndex: target.index });\n if (!quiet && previousRequested !== target.index)\n options.beforeChange?.({ previousIndex: snapshot.index, index: target.index, reason: why });\n viewport!.scrollBy(\n value.geometry.physicalAxis === \"x\"\n ? { left: delta * value.geometry.sign, behavior: \"auto\" }\n : { top: delta * value.geometry.sign, behavior: \"auto\" },\n );\n });\n }\n function step(direction: 1 | -1, why: CarouselReason) {\n const pages = snapshot.pages;\n const position = pages.findIndex(\n (page) => page.index === (snapshot.requestedIndex ?? snapshot.index),\n );\n let next = position + direction;\n if (options.rewind) next = (next + pages.length) % pages.length;\n const target = pages[Math.max(0, Math.min(pages.length - 1, next))];\n if (target) request(target.index, why);\n }\n function refresh() {\n if (destroyed) return;\n const currentSlides = slides();\n for (const slide of resizedSlides) {\n if (!currentSlides.includes(slide)) {\n resize.unobserve(slide);\n resizedSlides.delete(slide);\n }\n }\n for (const slide of currentSlides) {\n if (!resizedSlides.has(slide)) {\n resizedSlides.add(slide);\n resize.observe(slide);\n }\n }\n const wasReady = snapshot.ready;\n const oldId = activeId;\n measure((value) => {\n if (!wasReady) silent = true;\n observe(value, false);\n if (!snapshot.ready) return;\n const retained = oldId ? slides().findIndex((node) => node.id === oldId) : -1;\n const target =\n options.value ??\n (wasReady ? Math.max(0, retained < 0 ? snapshot.index : retained) : options.defaultValue);\n const hasFragment = slides().some(\n (node) =>\n `#${encodeURIComponent(node.id)}` === root.ownerDocument.defaultView?.location.hash,\n );\n if (\n (!wasReady &&\n options.value === undefined &&\n (value.geometry.currentOffset > 1 || hasFragment)) ||\n target === findCarouselPage(snapshot.pages, value.geometry.currentOffset)?.index\n )\n observe(value, true);\n else request(target, wasReady ? \"items\" : \"controlled\", !wasReady);\n });\n }\n const scroll = () => {\n if (touchActive) touch = true;\n if (!snapshot.moving) publish({ ...snapshot, moving: true });\n };\n // Native touch events continue after pointercancel when the browser takes over scrolling.\n const touchStart = (event: TouchEvent) => {\n if (event.target instanceof Element && event.target.closest(\"[data-uiify-carousel]\") === root) {\n touchActive = true;\n touch = false;\n }\n };\n const touchEnd = () => {\n touchActive = false;\n };\n const settle = () => {\n measure((value) => observe(value, true));\n };\n const pointer = (event: PointerEvent) => {\n if (event.target instanceof Element && event.target.closest(\"[data-uiify-carousel]\") !== root)\n return;\n if (snapshot.moving) {\n ++token;\n reason = \"scroll\";\n silent = false;\n publish({ ...snapshot, requestedIndex: null });\n }\n };\n viewport.addEventListener(\"scroll\", scroll);\n viewport.addEventListener(\"scrollend\", settle);\n viewport.addEventListener(\"pointerdown\", pointer);\n viewport.addEventListener(\"touchstart\", touchStart, { passive: true });\n viewport.addEventListener(\"touchend\", touchEnd, { passive: true });\n viewport.addEventListener(\"touchcancel\", touchEnd, { passive: true });\n const resize = new ResizeObserver(refresh);\n resize.observe(viewport);\n const controller: CarouselController = {\n getSnapshot: () => snapshot,\n getGeometry: () => geometry,\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n goTo: request,\n next: (why) => step(1, why),\n previous: (why) => step(-1, why),\n setInteracting(active) {\n if (destroyed) return;\n publish({ ...snapshot, interacting: active });\n },\n update(next) {\n options = next;\n if (snapshot.ready && next.value !== undefined && next.value !== snapshot.index)\n request(next.value, \"controlled\");\n },\n refresh,\n destroy() {\n destroyed = true;\n token++;\n observer.destroy();\n resize.disconnect();\n detach();\n listeners.clear();\n viewport.removeEventListener(\"scroll\", scroll);\n viewport.removeEventListener(\"scrollend\", settle);\n viewport.removeEventListener(\"pointerdown\", pointer);\n viewport.removeEventListener(\"touchstart\", touchStart);\n viewport.removeEventListener(\"touchend\", touchEnd);\n viewport.removeEventListener(\"touchcancel\", touchEnd);\n },\n };\n const detach = attachCarouselCommands(root, {\n next: () => controller.next(\"command\"),\n previous: () => controller.previous(\"command\"),\n });\n refresh();\n return controller;\n}\n"],"mappings":"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","names":["settle","request"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel-controls.d.ts","sourceRoot":"","sources":["../../../../src/components/carousel/client/carousel-controls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAElF,0FAA0F;AAC1F,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GACnC,MAAM,IAAI,CAiBZ;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,kBAAkB,EAC9B,QAAQ,CAAC,EAAE,0BAA0B,GACpC,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"carousel-controls.d.ts","sourceRoot":"","sources":["../../../../src/components/carousel/client/carousel-controls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAElF,0FAA0F;AAC1F,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GACnC,MAAM,IAAI,CAiBZ;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,EACjB,UAAU,EAAE,kBAAkB,EAC9B,QAAQ,CAAC,EAAE,0BAA0B,GACpC,MAAM,IAAI,CAsDZ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function attachCarouselFocus(root, receive) {
|
|
2
2
|
function preserve(target) {
|
|
3
3
|
receive(
|
|
4
|
-
target instanceof Element && target.closest("[data-uiify-carousel]") === root && target.closest(
|
|
4
|
+
target instanceof Element && target.closest("[data-uiify-carousel]") === root && target.closest('[data-part="dot"]') !== null
|
|
5
5
|
);
|
|
6
6
|
}
|
|
7
7
|
const focusIn = (event) => preserve(event.target);
|
|
@@ -18,9 +18,7 @@ function attachCarouselControls(root, controller, autoplay) {
|
|
|
18
18
|
function click(event) {
|
|
19
19
|
if (event.defaultPrevented || event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey || !controller.getSnapshot().ready || !(event.target instanceof Element) || event.target.closest("[data-uiify-carousel]") !== root)
|
|
20
20
|
return;
|
|
21
|
-
const control = event.target.closest(
|
|
22
|
-
"[data-carousel-action], [data-uiify-carousel-dot]"
|
|
23
|
-
);
|
|
21
|
+
const control = event.target.closest('[data-carousel-action], [data-part="dot"]');
|
|
24
22
|
if (!control || !root.contains(control)) return;
|
|
25
23
|
if (control instanceof HTMLButtonElement) {
|
|
26
24
|
if (control.disabled) return;
|
|
@@ -41,7 +39,7 @@ function attachCarouselControls(root, controller, autoplay) {
|
|
|
41
39
|
if (!(control instanceof HTMLAnchorElement) || control.hasAttribute("download") || control.target !== "" && control.target !== "_self")
|
|
42
40
|
return;
|
|
43
41
|
const index = Number(control.dataset.carouselIndex);
|
|
44
|
-
const slide = root.querySelector(
|
|
42
|
+
const slide = root.querySelector(':scope > [data-part="viewport"]')?.children[index];
|
|
45
43
|
if (!Number.isInteger(index) || index < 0 || !slide || control.getAttribute("href") !== `#${encodeURIComponent(slide.id)}`)
|
|
46
44
|
return;
|
|
47
45
|
event.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/carousel/client/carousel-controls.ts"],"sourcesContent":["import type { CarouselAutoplayController, CarouselController } from \"../types.js\";\n\n/** Keep a focused dot addressable, including duplicate end-page dots awaiting removal. */\nexport function attachCarouselFocus(\n root: HTMLElement,\n receive: (preserve: boolean) => void,\n): () => void {\n function preserve(target: EventTarget | null) {\n receive(\n target instanceof Element &&\n target.closest(\"[data-uiify-carousel]\") === root &&\n target.closest(
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/carousel/client/carousel-controls.ts"],"sourcesContent":["import type { CarouselAutoplayController, CarouselController } from \"../types.js\";\n\n/** Keep a focused dot addressable, including duplicate end-page dots awaiting removal. */\nexport function attachCarouselFocus(\n root: HTMLElement,\n receive: (preserve: boolean) => void,\n): () => void {\n function preserve(target: EventTarget | null) {\n receive(\n target instanceof Element &&\n target.closest(\"[data-uiify-carousel]\") === root &&\n target.closest('[data-part=\"dot\"]') !== null,\n );\n }\n const focusIn = (event: FocusEvent) => preserve(event.target);\n const focusOut = (event: FocusEvent) => preserve(event.relatedTarget);\n preserve(root.ownerDocument.activeElement);\n root.addEventListener(\"focusin\", focusIn);\n root.addEventListener(\"focusout\", focusOut);\n return () => {\n root.removeEventListener(\"focusin\", focusIn);\n root.removeEventListener(\"focusout\", focusOut);\n };\n}\n\n/** Delegate only this carousel's own controls; ordinary links keep browser behavior. */\nexport function attachCarouselControls(\n root: HTMLElement,\n controller: CarouselController,\n autoplay?: CarouselAutoplayController,\n): () => void {\n function click(event: MouseEvent) {\n if (\n event.defaultPrevented ||\n event.button !== 0 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey ||\n !controller.getSnapshot().ready ||\n !(event.target instanceof Element) ||\n event.target.closest(\"[data-uiify-carousel]\") !== root\n )\n return;\n const control = event.target.closest<HTMLElement>('[data-carousel-action], [data-part=\"dot\"]');\n if (!control || !root.contains(control)) return;\n if (control instanceof HTMLButtonElement) {\n if (control.disabled) return;\n switch (control.dataset.carouselAction) {\n case \"previous\":\n controller.previous(\"previous\");\n break;\n case \"next\":\n controller.next(\"next\");\n break;\n case \"rotation\":\n if (autoplay?.getSnapshot().requested) autoplay.stop();\n else autoplay?.start();\n break;\n }\n return;\n }\n if (\n !(control instanceof HTMLAnchorElement) ||\n control.hasAttribute(\"download\") ||\n (control.target !== \"\" && control.target !== \"_self\")\n )\n return;\n const index = Number(control.dataset.carouselIndex);\n const slide = root.querySelector<HTMLElement>(':scope > [data-part=\"viewport\"]')?.children[\n index\n ];\n if (\n !Number.isInteger(index) ||\n index < 0 ||\n !slide ||\n control.getAttribute(\"href\") !== `#${encodeURIComponent(slide.id)}`\n )\n return;\n event.preventDefault();\n controller.goTo(index, \"dot\");\n }\n root.addEventListener(\"click\", click);\n return () => root.removeEventListener(\"click\", click);\n}\n"],"mappings":"AAGO,SAAS,oBACd,MACA,SACY;AACZ,WAAS,SAAS,QAA4B;AAC5C;AAAA,MACE,kBAAkB,WAChB,OAAO,QAAQ,uBAAuB,MAAM,QAC5C,OAAO,QAAQ,mBAAmB,MAAM;AAAA,IAC5C;AAAA,EACF;AACA,QAAM,UAAU,CAAC,UAAsB,SAAS,MAAM,MAAM;AAC5D,QAAM,WAAW,CAAC,UAAsB,SAAS,MAAM,aAAa;AACpE,WAAS,KAAK,cAAc,aAAa;AACzC,OAAK,iBAAiB,WAAW,OAAO;AACxC,OAAK,iBAAiB,YAAY,QAAQ;AAC1C,SAAO,MAAM;AACX,SAAK,oBAAoB,WAAW,OAAO;AAC3C,SAAK,oBAAoB,YAAY,QAAQ;AAAA,EAC/C;AACF;AAGO,SAAS,uBACd,MACA,YACA,UACY;AACZ,WAAS,MAAM,OAAmB;AAChC,QACE,MAAM,oBACN,MAAM,WAAW,KACjB,MAAM,UACN,MAAM,WACN,MAAM,WACN,MAAM,YACN,CAAC,WAAW,YAAY,EAAE,SAC1B,EAAE,MAAM,kBAAkB,YAC1B,MAAM,OAAO,QAAQ,uBAAuB,MAAM;AAElD;AACF,UAAM,UAAU,MAAM,OAAO,QAAqB,2CAA2C;AAC7F,QAAI,CAAC,WAAW,CAAC,KAAK,SAAS,OAAO,EAAG;AACzC,QAAI,mBAAmB,mBAAmB;AACxC,UAAI,QAAQ,SAAU;AACtB,cAAQ,QAAQ,QAAQ,gBAAgB;AAAA,QACtC,KAAK;AACH,qBAAW,SAAS,UAAU;AAC9B;AAAA,QACF,KAAK;AACH,qBAAW,KAAK,MAAM;AACtB;AAAA,QACF,KAAK;AACH,cAAI,UAAU,YAAY,EAAE,UAAW,UAAS,KAAK;AAAA,cAChD,WAAU,MAAM;AACrB;AAAA,MACJ;AACA;AAAA,IACF;AACA,QACE,EAAE,mBAAmB,sBACrB,QAAQ,aAAa,UAAU,KAC9B,QAAQ,WAAW,MAAM,QAAQ,WAAW;AAE7C;AACF,UAAM,QAAQ,OAAO,QAAQ,QAAQ,aAAa;AAClD,UAAM,QAAQ,KAAK,cAA2B,iCAAiC,GAAG,SAChF,KACF;AACA,QACE,CAAC,OAAO,UAAU,KAAK,KACvB,QAAQ,KACR,CAAC,SACD,QAAQ,aAAa,MAAM,MAAM,IAAI,mBAAmB,MAAM,EAAE,CAAC;AAEjE;AACF,UAAM,eAAe;AACrB,eAAW,KAAK,OAAO,KAAK;AAAA,EAC9B;AACA,OAAK,iBAAiB,SAAS,KAAK;AACpC,SAAO,MAAM,KAAK,oBAAoB,SAAS,KAAK;AACtD;","names":[]}
|
|
@@ -23,7 +23,7 @@ function ownsEvent(root, target) {
|
|
|
23
23
|
return target instanceof Element && target.closest("[data-uiify-carousel]") === root;
|
|
24
24
|
}
|
|
25
25
|
function attachCarouselDrag(root, controller) {
|
|
26
|
-
const candidate = root.querySelector(
|
|
26
|
+
const candidate = root.querySelector(':scope > [data-part="viewport"]');
|
|
27
27
|
if (!candidate) return () => {
|
|
28
28
|
};
|
|
29
29
|
const viewport = candidate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/carousel/client/carousel-drag.ts"],"sourcesContent":["import { createCarouselPages, findCarouselPage } from \"../carousel-pages.js\";\nimport type { CarouselController, CarouselGeometry } from \"../types.js\";\n\nconst DRAG_THRESHOLD = 5;\nconst INTERACTIVE_SELECTOR = [\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"textarea\",\n \"summary\",\n \"[contenteditable]:not([contenteditable='false'])\",\n \"[role='button']\",\n \"[role='link']\",\n \"[role='checkbox']\",\n \"[role='radio']\",\n \"[role='switch']\",\n \"[role='slider']\",\n \"[role='textbox']\",\n].join(\",\");\n\ninterface DragState {\n readonly pointerId: number;\n readonly geometry: CarouselGeometry;\n readonly start: number;\n readonly maximumOffset: number;\n last: number;\n offset: number;\n dragging: boolean;\n}\n\nfunction coordinate(event: PointerEvent, geometry: CarouselGeometry): number {\n return geometry.physicalAxis === \"x\" ? event.clientX : event.clientY;\n}\n\nfunction ownsEvent(root: HTMLElement, target: EventTarget | null): target is Element {\n return target instanceof Element && target.closest(\"[data-uiify-carousel]\") === root;\n}\n\n/** Adds optional mouse dragging without intercepting touch, pen, wheel, or pre-intent selection. */\nexport function attachCarouselDrag(root: HTMLElement, controller: CarouselController): () => void {\n const candidate = root.querySelector<HTMLElement>(
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/carousel/client/carousel-drag.ts"],"sourcesContent":["import { createCarouselPages, findCarouselPage } from \"../carousel-pages.js\";\nimport type { CarouselController, CarouselGeometry } from \"../types.js\";\n\nconst DRAG_THRESHOLD = 5;\nconst INTERACTIVE_SELECTOR = [\n \"a[href]\",\n \"button\",\n \"input\",\n \"select\",\n \"textarea\",\n \"summary\",\n \"[contenteditable]:not([contenteditable='false'])\",\n \"[role='button']\",\n \"[role='link']\",\n \"[role='checkbox']\",\n \"[role='radio']\",\n \"[role='switch']\",\n \"[role='slider']\",\n \"[role='textbox']\",\n].join(\",\");\n\ninterface DragState {\n readonly pointerId: number;\n readonly geometry: CarouselGeometry;\n readonly start: number;\n readonly maximumOffset: number;\n last: number;\n offset: number;\n dragging: boolean;\n}\n\nfunction coordinate(event: PointerEvent, geometry: CarouselGeometry): number {\n return geometry.physicalAxis === \"x\" ? event.clientX : event.clientY;\n}\n\nfunction ownsEvent(root: HTMLElement, target: EventTarget | null): target is Element {\n return target instanceof Element && target.closest(\"[data-uiify-carousel]\") === root;\n}\n\n/** Adds optional mouse dragging without intercepting touch, pen, wheel, or pre-intent selection. */\nexport function attachCarouselDrag(root: HTMLElement, controller: CarouselController): () => void {\n const candidate = root.querySelector<HTMLElement>(':scope > [data-part=\"viewport\"]');\n if (!candidate) return () => {};\n const viewport = candidate;\n\n let state: DragState | undefined;\n let cancelClick = false;\n\n function restore(): void {\n viewport.removeAttribute(\"data-dragging\");\n controller.setInteracting(false);\n }\n\n function settle(drag: DragState): void {\n controller.refresh();\n const refreshed = controller.getGeometry();\n const geometry =\n refreshed && refreshed !== drag.geometry\n ? refreshed\n : { ...drag.geometry, currentOffset: drag.offset };\n const page = findCarouselPage(createCarouselPages(geometry), geometry.currentOffset);\n if (page) controller.goTo(page.index, \"drag\");\n }\n\n function finish(pointerId: number, shouldSettle: boolean, suppressClick: boolean): void {\n const current = state;\n if (!current || current.pointerId !== pointerId) return;\n state = undefined;\n if (!current.dragging) return;\n cancelClick = suppressClick;\n if (viewport.hasPointerCapture(pointerId)) viewport.releasePointerCapture(pointerId);\n restore();\n if (shouldSettle) settle(current);\n }\n\n function pointerDown(event: PointerEvent): void {\n if (\n event.defaultPrevented ||\n event.pointerType !== \"mouse\" ||\n event.button !== 0 ||\n !ownsEvent(root, event.target) ||\n event.target.closest(INTERACTIVE_SELECTOR)\n )\n return;\n const geometry = controller.getGeometry();\n if (!geometry) return;\n const pages = createCarouselPages(geometry);\n const start = coordinate(event, geometry);\n state = {\n pointerId: event.pointerId,\n geometry,\n start,\n maximumOffset: pages.at(-1)?.offset ?? 0,\n last: start,\n offset: geometry.currentOffset,\n dragging: false,\n };\n }\n\n function pointerMove(event: PointerEvent): void {\n const current = state;\n if (!current || current.pointerId !== event.pointerId) return;\n if (!current.dragging && (event.buttons & 1) === 0) {\n state = undefined;\n return;\n }\n const next = coordinate(event, current.geometry);\n if (!current.dragging) {\n if (Math.abs(next - current.start) < DRAG_THRESHOLD) return;\n current.dragging = true;\n viewport.setPointerCapture(event.pointerId);\n viewport.setAttribute(\"data-dragging\", \"\");\n controller.setInteracting(true);\n }\n event.preventDefault();\n const physicalMovement = next - current.last;\n const normalizedMovement = physicalMovement * current.geometry.sign;\n const normalizedScrollDelta = -normalizedMovement;\n const physicalScrollDelta = normalizedScrollDelta * current.geometry.sign;\n current.offset = Math.max(\n 0,\n Math.min(current.maximumOffset, current.offset + normalizedScrollDelta),\n );\n current.last = next;\n viewport.scrollBy(\n current.geometry.physicalAxis === \"x\"\n ? { left: physicalScrollDelta, behavior: \"auto\" }\n : { top: physicalScrollDelta, behavior: \"auto\" },\n );\n }\n\n function pointerUp(event: PointerEvent): void {\n finish(event.pointerId, true, true);\n }\n\n function pointerCancel(event: PointerEvent): void {\n finish(event.pointerId, true, false);\n }\n\n function lostPointerCapture(event: PointerEvent): void {\n finish(event.pointerId, true, false);\n }\n\n function click(event: MouseEvent): void {\n if (!cancelClick || !ownsEvent(root, event.target)) return;\n cancelClick = false;\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n viewport.addEventListener(\"pointerdown\", pointerDown);\n viewport.addEventListener(\"pointermove\", pointerMove);\n viewport.addEventListener(\"pointerup\", pointerUp);\n viewport.addEventListener(\"pointercancel\", pointerCancel);\n viewport.addEventListener(\"lostpointercapture\", lostPointerCapture);\n root.addEventListener(\"click\", click, true);\n\n return () => {\n const current = state;\n state = undefined;\n cancelClick = false;\n if (current?.dragging) {\n if (viewport.hasPointerCapture(current.pointerId))\n viewport.releasePointerCapture(current.pointerId);\n restore();\n }\n viewport.removeEventListener(\"pointerdown\", pointerDown);\n viewport.removeEventListener(\"pointermove\", pointerMove);\n viewport.removeEventListener(\"pointerup\", pointerUp);\n viewport.removeEventListener(\"pointercancel\", pointerCancel);\n viewport.removeEventListener(\"lostpointercapture\", lostPointerCapture);\n root.removeEventListener(\"click\", click, true);\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function observeCarousel(root) {
|
|
2
|
-
const viewport = root.querySelector(
|
|
2
|
+
const viewport = root.querySelector(':scope > [data-part="viewport"]');
|
|
3
3
|
let current;
|
|
4
4
|
let generation = 0;
|
|
5
5
|
let destroyed = false;
|
|
@@ -9,7 +9,7 @@ function observeCarousel(root) {
|
|
|
9
9
|
const token = ++generation;
|
|
10
10
|
if (destroyed || !viewport) return;
|
|
11
11
|
const slides = Array.from(viewport.children).filter(
|
|
12
|
-
(node) => node.
|
|
12
|
+
(node) => node.getAttribute("data-part") === "slide"
|
|
13
13
|
);
|
|
14
14
|
if (!slides.length) return;
|
|
15
15
|
const entries = /* @__PURE__ */ new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/carousel/client/carousel-observer.ts"],"sourcesContent":["import type { CarouselObserver } from \"../types.js\";\n\n/** Each measurement owns its observer, so old deliveries cannot mix with fresh geometry. */\nexport function observeCarousel(root: HTMLElement): CarouselObserver {\n const viewport = root.querySelector<HTMLElement>(
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/carousel/client/carousel-observer.ts"],"sourcesContent":["import type { CarouselObserver } from \"../types.js\";\n\n/** Each measurement owns its observer, so old deliveries cannot mix with fresh geometry. */\nexport function observeCarousel(root: HTMLElement): CarouselObserver {\n const viewport = root.querySelector<HTMLElement>(':scope > [data-part=\"viewport\"]');\n let current: IntersectionObserver | undefined;\n let generation = 0;\n let destroyed = false;\n return {\n measure(receive) {\n current?.disconnect();\n const token = ++generation;\n if (destroyed || !viewport) return;\n const slides = Array.from(viewport.children).filter(\n (node) => node.getAttribute(\"data-part\") === \"slide\",\n );\n if (!slides.length) return;\n const entries = new Map<Element, IntersectionObserverEntry>();\n current = new IntersectionObserver(\n (batch) => {\n if (destroyed || token !== generation) return;\n for (const entry of batch)\n if (slides.includes(entry.target)) entries.set(entry.target, entry);\n if (entries.size !== slides.length) return;\n const ordered = slides.map((slide) => entries.get(slide)!);\n const first = ordered[0]!;\n const bounds = first.rootBounds;\n const a = first.boundingClientRect;\n const b = ordered[1]?.boundingClientRect;\n const physicalAxis = b && Math.abs(b.y - a.y) > Math.abs(b.x - a.x) ? \"y\" : \"x\";\n const vertical = physicalAxis === \"y\";\n const sign = b && (vertical ? b.y - a.y : b.x - a.x) < 0 ? -1 : 1;\n const size = (rect: DOMRectReadOnly) => (vertical ? rect.height : rect.width);\n const edge = (rect: DOMRectReadOnly) =>\n sign === 1 ? (vertical ? rect.top : rect.left) : vertical ? rect.bottom : rect.right;\n if (\n !bounds ||\n size(bounds) <= 0 ||\n ordered.some((entry) => size(entry.boundingClientRect) <= 0)\n )\n return;\n const itemStarts = ordered.map((entry) =>\n Math.max(0, sign * (edge(entry.boundingClientRect) - edge(a))),\n );\n const itemSizes = ordered.map((entry) => size(entry.boundingClientRect));\n const maximum = Math.max(0, itemStarts.at(-1)! + itemSizes.at(-1)! - size(bounds));\n current?.disconnect();\n generation++;\n receive({\n geometry: {\n physicalAxis,\n sign,\n viewportSize: size(bounds),\n currentOffset: Math.min(maximum, Math.max(0, sign * (edge(bounds) - edge(a)))),\n itemStarts,\n itemSizes,\n },\n visibleIndices: ordered.flatMap((entry, index) =>\n entry.isIntersecting && entry.intersectionRatio > 0 ? [index] : [],\n ),\n });\n },\n { root: viewport },\n );\n slides.forEach((slide) => current!.observe(slide));\n },\n destroy() {\n destroyed = true;\n generation++;\n current?.disconnect();\n },\n };\n}\n"],"mappings":"AAGO,SAAS,gBAAgB,MAAqC;AACnE,QAAM,WAAW,KAAK,cAA2B,iCAAiC;AAClF,MAAI;AACJ,MAAI,aAAa;AACjB,MAAI,YAAY;AAChB,SAAO;AAAA,IACL,QAAQ,SAAS;AACf,eAAS,WAAW;AACpB,YAAM,QAAQ,EAAE;AAChB,UAAI,aAAa,CAAC,SAAU;AAC5B,YAAM,SAAS,MAAM,KAAK,SAAS,QAAQ,EAAE;AAAA,QAC3C,CAAC,SAAS,KAAK,aAAa,WAAW,MAAM;AAAA,MAC/C;AACA,UAAI,CAAC,OAAO,OAAQ;AACpB,YAAM,UAAU,oBAAI,IAAwC;AAC5D,gBAAU,IAAI;AAAA,QACZ,CAAC,UAAU;AACT,cAAI,aAAa,UAAU,WAAY;AACvC,qBAAW,SAAS;AAClB,gBAAI,OAAO,SAAS,MAAM,MAAM,EAAG,SAAQ,IAAI,MAAM,QAAQ,KAAK;AACpE,cAAI,QAAQ,SAAS,OAAO,OAAQ;AACpC,gBAAM,UAAU,OAAO,IAAI,CAAC,UAAU,QAAQ,IAAI,KAAK,CAAE;AACzD,gBAAM,QAAQ,QAAQ,CAAC;AACvB,gBAAM,SAAS,MAAM;AACrB,gBAAM,IAAI,MAAM;AAChB,gBAAM,IAAI,QAAQ,CAAC,GAAG;AACtB,gBAAM,eAAe,KAAK,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,MAAM;AAC5E,gBAAM,WAAW,iBAAiB;AAClC,gBAAM,OAAO,MAAM,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK;AAChE,gBAAM,OAAO,CAAC,SAA2B,WAAW,KAAK,SAAS,KAAK;AACvE,gBAAM,OAAO,CAAC,SACZ,SAAS,IAAK,WAAW,KAAK,MAAM,KAAK,OAAQ,WAAW,KAAK,SAAS,KAAK;AACjF,cACE,CAAC,UACD,KAAK,MAAM,KAAK,KAChB,QAAQ,KAAK,CAAC,UAAU,KAAK,MAAM,kBAAkB,KAAK,CAAC;AAE3D;AACF,gBAAM,aAAa,QAAQ;AAAA,YAAI,CAAC,UAC9B,KAAK,IAAI,GAAG,QAAQ,KAAK,MAAM,kBAAkB,IAAI,KAAK,CAAC,EAAE;AAAA,UAC/D;AACA,gBAAM,YAAY,QAAQ,IAAI,CAAC,UAAU,KAAK,MAAM,kBAAkB,CAAC;AACvE,gBAAM,UAAU,KAAK,IAAI,GAAG,WAAW,GAAG,EAAE,IAAK,UAAU,GAAG,EAAE,IAAK,KAAK,MAAM,CAAC;AACjF,mBAAS,WAAW;AACpB;AACA,kBAAQ;AAAA,YACN,UAAU;AAAA,cACR;AAAA,cACA;AAAA,cACA,cAAc,KAAK,MAAM;AAAA,cACzB,eAAe,KAAK,IAAI,SAAS,KAAK,IAAI,GAAG,QAAQ,KAAK,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;AAAA,cAC7E;AAAA,cACA;AAAA,YACF;AAAA,YACA,gBAAgB,QAAQ;AAAA,cAAQ,CAAC,OAAO,UACtC,MAAM,kBAAkB,MAAM,oBAAoB,IAAI,CAAC,KAAK,IAAI,CAAC;AAAA,YACnE;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,EAAE,MAAM,SAAS;AAAA,MACnB;AACA,aAAO,QAAQ,CAAC,UAAU,QAAS,QAAQ,KAAK,CAAC;AAAA,IACnD;AAAA,IACA,UAAU;AACR,kBAAY;AACZ;AACA,eAAS,WAAW;AAAA,IACtB;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { attachCarouselCommands } from "../commands.js";
|
|
2
2
|
function createFadeController(root, initialOptions) {
|
|
3
|
-
const viewport = root.querySelector(
|
|
3
|
+
const viewport = root.querySelector(':scope > [data-part="viewport"]');
|
|
4
4
|
if (!viewport) throw new Error("Carousel viewport is missing");
|
|
5
5
|
const listeners = /* @__PURE__ */ new Set();
|
|
6
6
|
let options = initialOptions;
|
|
@@ -88,7 +88,7 @@ function createFadeController(root, initialOptions) {
|
|
|
88
88
|
function refresh() {
|
|
89
89
|
if (destroyed) return;
|
|
90
90
|
const next = Array.from(viewport.children).filter(
|
|
91
|
-
(node) => node instanceof HTMLElement && node.
|
|
91
|
+
(node) => node instanceof HTMLElement && node.getAttribute("data-part") === "slide"
|
|
92
92
|
);
|
|
93
93
|
if (snapshot.ready && next.length === slides.length && next.every((slide, i) => slide === slides[i]))
|
|
94
94
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/carousel/fade/fade-controller.ts"],"sourcesContent":["import { attachCarouselCommands } from \"../commands.js\";\nimport type {\n CarouselController,\n CarouselControllerOptions,\n CarouselReason,\n CarouselSnapshot,\n} from \"../types.js\";\n\n/** One semantic page per slide; CSS owns the motion and its duration. */\nexport function createFadeController(\n root: HTMLElement,\n initialOptions: CarouselControllerOptions,\n): CarouselController {\n const viewport = root.querySelector<HTMLElement>(\":scope > [data-uiify-carousel-viewport]\");\n if (!viewport) throw new Error(\"Carousel viewport is missing\");\n const listeners = new Set<() => void>();\n let options = initialOptions;\n let slides: HTMLElement[] = [];\n let activeId: string | undefined;\n let destroyed = false;\n let token = 0;\n let frame = 0;\n let reconcile = false;\n let snapshot: CarouselSnapshot = {\n ready: false,\n index: 0,\n requestedIndex: null,\n settledChange: null,\n pages: [],\n visibleIndices: [],\n atStart: true,\n atEnd: true,\n moving: false,\n interacting: false,\n };\n function publish(next: CarouselSnapshot) {\n snapshot = next;\n listeners.forEach((listener) => listener());\n }\n function present(index: number) {\n for (const [i, slide] of slides.entries()) {\n slide.setAttribute(\"data-state\", i === index ? \"active\" : \"inactive\");\n slide.toggleAttribute(\"inert\", i !== index);\n if (i === index) slide.removeAttribute(\"aria-hidden\");\n else slide.setAttribute(\"aria-hidden\", \"true\");\n }\n }\n function request(index: number, reason: CarouselReason) {\n if (destroyed || snapshot.moving || !Number.isInteger(index) || index < 0 || !slides.length)\n return;\n const target = Math.min(index, slides.length - 1);\n if (\n target !== snapshot.index &&\n slides[snapshot.index]?.contains(root.ownerDocument.activeElement)\n )\n return;\n if (target === snapshot.index) {\n // A semantic no-op still releases an autoplay attempt at the finite boundary.\n publish({ ...snapshot, moving: true });\n publish({ ...snapshot, moving: false });\n return;\n }\n const detail = { previousIndex: snapshot.index, index: target, reason };\n const requestToken = ++token;\n options.beforeChange?.(detail);\n present(target);\n publish({ ...snapshot, requestedIndex: target, moving: true });\n frame = requestAnimationFrame(() => {\n frame = 0;\n if (destroyed || requestToken !== token) return;\n const animations = [slides[detail.previousIndex], slides[target]].flatMap(\n (slide) =>\n slide\n ?.getAnimations()\n .filter(\n (animation) =>\n \"transitionProperty\" in animation &&\n (animation.effect as KeyframeEffect | null)?.target === slide,\n ) ?? [],\n );\n function settle() {\n if (destroyed || requestToken !== token) return;\n activeId = slides[target]?.id;\n publish({\n ...snapshot,\n index: target,\n requestedIndex: null,\n moving: false,\n visibleIndices: [target],\n atStart: target === 0,\n atEnd: target === slides.length - 1,\n settledChange: detail,\n });\n if (reason !== \"controlled\") options.onSelect?.(target, detail);\n options.afterChange?.(detail);\n if (reason === \"drag\") options.onSwipe?.(detail);\n if (reconcile) {\n reconcile = false;\n if (options.value !== undefined && options.value !== target)\n request(options.value, \"controlled\");\n }\n }\n if (animations.length)\n void Promise.allSettled(animations.map((animation) => animation.finished)).then(settle);\n else settle();\n });\n }\n function refresh() {\n if (destroyed) return;\n const next = Array.from(viewport!.children).filter(\n (node): node is HTMLElement =>\n node instanceof HTMLElement && node.hasAttribute(\"data-uiify-carousel-slide\"),\n );\n if (\n snapshot.ready &&\n next.length === slides.length &&\n next.every((slide, i) => slide === slides[i])\n )\n return;\n ++token;\n cancelAnimationFrame(frame);\n slides = next;\n const focused = slides.findIndex((slide) => slide.contains(root.ownerDocument.activeElement));\n const retained = slides.findIndex((slide) => slide.id === activeId);\n const fragment = slides.findIndex(\n (slide) =>\n `#${encodeURIComponent(slide.id)}` === root.ownerDocument.defaultView?.location.hash,\n );\n const initial = options.value ?? (fragment >= 0 ? fragment : options.defaultValue);\n const target = Math.max(\n 0,\n Math.min(\n slides.length - 1,\n focused >= 0\n ? focused\n : snapshot.ready\n ? retained >= 0\n ? retained\n : snapshot.index\n : initial,\n ),\n );\n present(target);\n activeId = slides[target]?.id;\n root.toggleAttribute(\"data-fade-ready\", slides.length > 0);\n publish({\n ...snapshot,\n ready: slides.length > 0,\n index: target,\n requestedIndex: null,\n moving: false,\n pages: slides.map((_, index) => ({ index, offset: index })),\n visibleIndices: slides.length ? [target] : [],\n atStart: target === 0,\n atEnd: target === slides.length - 1,\n });\n }\n function step(direction: number, reason: CarouselReason) {\n let target = snapshot.index + direction;\n if (options.rewind && slides.length) target = (target + slides.length) % slides.length;\n request(Math.max(0, target), reason);\n }\n const detach = attachCarouselCommands(root, {\n next: () => step(1, \"command\"),\n previous: () => step(-1, \"command\"),\n });\n refresh();\n return {\n getSnapshot: () => snapshot,\n getGeometry: () => undefined,\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n goTo: request,\n next: (reason) => step(1, reason),\n previous: (reason) => step(-1, reason),\n setInteracting(interacting) {\n if (!destroyed && interacting !== snapshot.interacting) publish({ ...snapshot, interacting });\n },\n update(next) {\n const changedValue = next.value !== options.value;\n options = next;\n if (snapshot.moving) {\n reconcile ||= changedValue;\n return;\n }\n if (next.value !== undefined && next.value !== snapshot.index)\n request(next.value, \"controlled\");\n },\n refresh,\n destroy() {\n if (destroyed) return;\n destroyed = true;\n ++token;\n cancelAnimationFrame(frame);\n detach();\n listeners.clear();\n root.removeAttribute(\"data-fade-ready\");\n for (const slide of slides) {\n slide.removeAttribute(\"inert\");\n slide.removeAttribute(\"aria-hidden\");\n slide.removeAttribute(\"data-state\");\n }\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/carousel/fade/fade-controller.ts"],"sourcesContent":["import { attachCarouselCommands } from \"../commands.js\";\nimport type {\n CarouselController,\n CarouselControllerOptions,\n CarouselReason,\n CarouselSnapshot,\n} from \"../types.js\";\n\n/** One semantic page per slide; CSS owns the motion and its duration. */\nexport function createFadeController(\n root: HTMLElement,\n initialOptions: CarouselControllerOptions,\n): CarouselController {\n const viewport = root.querySelector<HTMLElement>(':scope > [data-part=\"viewport\"]');\n if (!viewport) throw new Error(\"Carousel viewport is missing\");\n const listeners = new Set<() => void>();\n let options = initialOptions;\n let slides: HTMLElement[] = [];\n let activeId: string | undefined;\n let destroyed = false;\n let token = 0;\n let frame = 0;\n let reconcile = false;\n let snapshot: CarouselSnapshot = {\n ready: false,\n index: 0,\n requestedIndex: null,\n settledChange: null,\n pages: [],\n visibleIndices: [],\n atStart: true,\n atEnd: true,\n moving: false,\n interacting: false,\n };\n function publish(next: CarouselSnapshot) {\n snapshot = next;\n listeners.forEach((listener) => listener());\n }\n function present(index: number) {\n for (const [i, slide] of slides.entries()) {\n slide.setAttribute(\"data-state\", i === index ? \"active\" : \"inactive\");\n slide.toggleAttribute(\"inert\", i !== index);\n if (i === index) slide.removeAttribute(\"aria-hidden\");\n else slide.setAttribute(\"aria-hidden\", \"true\");\n }\n }\n function request(index: number, reason: CarouselReason) {\n if (destroyed || snapshot.moving || !Number.isInteger(index) || index < 0 || !slides.length)\n return;\n const target = Math.min(index, slides.length - 1);\n if (\n target !== snapshot.index &&\n slides[snapshot.index]?.contains(root.ownerDocument.activeElement)\n )\n return;\n if (target === snapshot.index) {\n // A semantic no-op still releases an autoplay attempt at the finite boundary.\n publish({ ...snapshot, moving: true });\n publish({ ...snapshot, moving: false });\n return;\n }\n const detail = { previousIndex: snapshot.index, index: target, reason };\n const requestToken = ++token;\n options.beforeChange?.(detail);\n present(target);\n publish({ ...snapshot, requestedIndex: target, moving: true });\n frame = requestAnimationFrame(() => {\n frame = 0;\n if (destroyed || requestToken !== token) return;\n const animations = [slides[detail.previousIndex], slides[target]].flatMap(\n (slide) =>\n slide\n ?.getAnimations()\n .filter(\n (animation) =>\n \"transitionProperty\" in animation &&\n (animation.effect as KeyframeEffect | null)?.target === slide,\n ) ?? [],\n );\n function settle() {\n if (destroyed || requestToken !== token) return;\n activeId = slides[target]?.id;\n publish({\n ...snapshot,\n index: target,\n requestedIndex: null,\n moving: false,\n visibleIndices: [target],\n atStart: target === 0,\n atEnd: target === slides.length - 1,\n settledChange: detail,\n });\n if (reason !== \"controlled\") options.onSelect?.(target, detail);\n options.afterChange?.(detail);\n if (reason === \"drag\") options.onSwipe?.(detail);\n if (reconcile) {\n reconcile = false;\n if (options.value !== undefined && options.value !== target)\n request(options.value, \"controlled\");\n }\n }\n if (animations.length)\n void Promise.allSettled(animations.map((animation) => animation.finished)).then(settle);\n else settle();\n });\n }\n function refresh() {\n if (destroyed) return;\n const next = Array.from(viewport!.children).filter(\n (node): node is HTMLElement =>\n node instanceof HTMLElement && node.getAttribute(\"data-part\") === \"slide\",\n );\n if (\n snapshot.ready &&\n next.length === slides.length &&\n next.every((slide, i) => slide === slides[i])\n )\n return;\n ++token;\n cancelAnimationFrame(frame);\n slides = next;\n const focused = slides.findIndex((slide) => slide.contains(root.ownerDocument.activeElement));\n const retained = slides.findIndex((slide) => slide.id === activeId);\n const fragment = slides.findIndex(\n (slide) =>\n `#${encodeURIComponent(slide.id)}` === root.ownerDocument.defaultView?.location.hash,\n );\n const initial = options.value ?? (fragment >= 0 ? fragment : options.defaultValue);\n const target = Math.max(\n 0,\n Math.min(\n slides.length - 1,\n focused >= 0\n ? focused\n : snapshot.ready\n ? retained >= 0\n ? retained\n : snapshot.index\n : initial,\n ),\n );\n present(target);\n activeId = slides[target]?.id;\n root.toggleAttribute(\"data-fade-ready\", slides.length > 0);\n publish({\n ...snapshot,\n ready: slides.length > 0,\n index: target,\n requestedIndex: null,\n moving: false,\n pages: slides.map((_, index) => ({ index, offset: index })),\n visibleIndices: slides.length ? [target] : [],\n atStart: target === 0,\n atEnd: target === slides.length - 1,\n });\n }\n function step(direction: number, reason: CarouselReason) {\n let target = snapshot.index + direction;\n if (options.rewind && slides.length) target = (target + slides.length) % slides.length;\n request(Math.max(0, target), reason);\n }\n const detach = attachCarouselCommands(root, {\n next: () => step(1, \"command\"),\n previous: () => step(-1, \"command\"),\n });\n refresh();\n return {\n getSnapshot: () => snapshot,\n getGeometry: () => undefined,\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n goTo: request,\n next: (reason) => step(1, reason),\n previous: (reason) => step(-1, reason),\n setInteracting(interacting) {\n if (!destroyed && interacting !== snapshot.interacting) publish({ ...snapshot, interacting });\n },\n update(next) {\n const changedValue = next.value !== options.value;\n options = next;\n if (snapshot.moving) {\n reconcile ||= changedValue;\n return;\n }\n if (next.value !== undefined && next.value !== snapshot.index)\n request(next.value, \"controlled\");\n },\n refresh,\n destroy() {\n if (destroyed) return;\n destroyed = true;\n ++token;\n cancelAnimationFrame(frame);\n detach();\n listeners.clear();\n root.removeAttribute(\"data-fade-ready\");\n for (const slide of slides) {\n slide.removeAttribute(\"inert\");\n slide.removeAttribute(\"aria-hidden\");\n slide.removeAttribute(\"data-state\");\n }\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const interactive = "a[href],button,input,select,textarea,summary,[contenteditable]:not([contenteditable='false']),[role='button'],[role='link'],[role='slider'],[role='textbox']";
|
|
2
2
|
function attachFadeSwipe(root, controller, mouseDrag) {
|
|
3
|
-
const viewport = root.querySelector(
|
|
3
|
+
const viewport = root.querySelector(':scope > [data-part="viewport"]');
|
|
4
4
|
if (!viewport) return () => {
|
|
5
5
|
};
|
|
6
6
|
let width = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/carousel/fade/fade-swipe.ts"],"sourcesContent":["import type { CarouselController } from \"../types.js\";\n\nconst interactive =\n \"a[href],button,input,select,textarea,summary,[contenteditable]:not([contenteditable='false']),[role='button'],[role='link'],[role='slider'],[role='textbox']\";\n\n/** Observe a horizontal gesture without taking vertical scrolling or pinch zoom from the browser. */\nexport function attachFadeSwipe(\n root: HTMLElement,\n controller: CarouselController,\n mouseDrag: boolean,\n): () => void {\n const viewport = root.querySelector<HTMLElement>(
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/carousel/fade/fade-swipe.ts"],"sourcesContent":["import type { CarouselController } from \"../types.js\";\n\nconst interactive =\n \"a[href],button,input,select,textarea,summary,[contenteditable]:not([contenteditable='false']),[role='button'],[role='link'],[role='slider'],[role='textbox']\";\n\n/** Observe a horizontal gesture without taking vertical scrolling or pinch zoom from the browser. */\nexport function attachFadeSwipe(\n root: HTMLElement,\n controller: CarouselController,\n mouseDrag: boolean,\n): () => void {\n const viewport = root.querySelector<HTMLElement>(':scope > [data-part=\"viewport\"]');\n if (!viewport) return () => {};\n let width = 0;\n let state: { id: number; x: number; y: number; captured: boolean } | undefined;\n let cancelClick = false;\n const resize = new ResizeObserver((entries) => {\n const entry = entries.find((value) => value.target === viewport);\n if (entry) width = entry.contentBoxSize[0]?.inlineSize ?? entry.contentRect.width;\n });\n resize.observe(viewport);\n function clear() {\n const current = state;\n state = undefined;\n if (current?.captured) {\n if (viewport!.hasPointerCapture(current.id)) viewport!.releasePointerCapture(current.id);\n controller.setInteracting(false);\n }\n // A drag that briefly grazed selectable text before capturing can leave a stray\n // selection behind; an uncleared one would block every future gesture's `down()`\n // guard below. Only collapse a selection this gesture could plausibly have made.\n if (current) {\n const selection = root.ownerDocument.getSelection();\n if (selection && !selection.isCollapsed && root.contains(selection.anchorNode))\n selection.removeAllRanges();\n }\n }\n function down(event: PointerEvent) {\n cancelClick = false;\n if (\n state ||\n event.defaultPrevented ||\n event.isPrimary === false ||\n event.button !== 0 ||\n (event.pointerType !== \"touch\" &&\n event.pointerType !== \"pen\" &&\n !(mouseDrag && event.pointerType === \"mouse\")) ||\n !controller.getSnapshot().ready ||\n controller.getSnapshot().moving ||\n !(event.target instanceof Element) ||\n event.target.closest(\"[data-uiify-carousel]\") !== root ||\n event.target.closest(interactive) ||\n root.ownerDocument.getSelection()?.isCollapsed === false\n )\n return;\n state = { id: event.pointerId, x: event.clientX, y: event.clientY, captured: false };\n }\n function move(event: PointerEvent) {\n if (!state || state.id !== event.pointerId) return;\n if (event.pointerType === \"mouse\" && (event.buttons & 1) === 0) {\n clear();\n return;\n }\n const x = Math.abs(event.clientX - state.x),\n y = Math.abs(event.clientY - state.y);\n if (!state.captured) {\n if (Math.max(x, y) < 5) return;\n if (y >= x) {\n clear();\n return;\n }\n state.captured = true;\n viewport!.setPointerCapture(event.pointerId);\n controller.setInteracting(true);\n }\n event.preventDefault();\n }\n function up(event: PointerEvent) {\n if (!state || state.id !== event.pointerId) return;\n const current = state,\n x = event.clientX - current.x,\n y = event.clientY - current.y;\n clear();\n if (!current.captured) return;\n cancelClick = true;\n if (Math.abs(x) < Math.max(50, width / 3) || Math.abs(x) <= Math.abs(y)) return;\n const sign = root.closest(\"[dir]\")?.getAttribute(\"dir\") === \"rtl\" ? -1 : 1;\n if (x * sign < 0) controller.next(\"drag\");\n else controller.previous(\"drag\");\n }\n function cancel(event: PointerEvent) {\n if (state?.id === event.pointerId) clear();\n }\n function click(event: MouseEvent) {\n if (\n !cancelClick ||\n !(event.target instanceof Element) ||\n event.target.closest(\"[data-uiify-carousel]\") !== root\n )\n return;\n cancelClick = false;\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n viewport.addEventListener(\"pointerdown\", down);\n viewport.addEventListener(\"pointermove\", move);\n viewport.addEventListener(\"pointerup\", up);\n viewport.addEventListener(\"pointercancel\", cancel);\n viewport.addEventListener(\"lostpointercapture\", cancel);\n root.ownerDocument.addEventListener(\"pointerup\", cancel);\n root.ownerDocument.addEventListener(\"pointercancel\", cancel);\n root.addEventListener(\"click\", click, true);\n return () => {\n clear();\n cancelClick = false;\n resize.disconnect();\n viewport.removeEventListener(\"pointerdown\", down);\n viewport.removeEventListener(\"pointermove\", move);\n viewport.removeEventListener(\"pointerup\", up);\n viewport.removeEventListener(\"pointercancel\", cancel);\n viewport.removeEventListener(\"lostpointercapture\", cancel);\n root.ownerDocument.removeEventListener(\"pointerup\", cancel);\n root.ownerDocument.removeEventListener(\"pointercancel\", cancel);\n root.removeEventListener(\"click\", click, true);\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { Carousel } from "./Carousel.js";
|
|
2
|
-
export type { CarouselAxis,
|
|
2
|
+
export type { CarouselAxis, CarouselItem, CarouselLabels, CarouselProps, CarouselStyle, } from "./types.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/carousel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EACV,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/carousel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/carousel/index.ts"],"sourcesContent":["export { Carousel } from \"./Carousel.js\";\nexport type {\n CarouselAxis,\n
|
|
1
|
+
{"version":3,"sources":["../../../src/components/carousel/index.ts"],"sourcesContent":["export { Carousel } from \"./Carousel.js\";\nexport type {\n CarouselAxis,\n CarouselItem,\n CarouselLabels,\n CarouselProps,\n CarouselStyle,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,gBAAgB;","names":[]}
|
|
@@ -16,18 +16,6 @@ export interface CarouselLabels {
|
|
|
16
16
|
readonly stop: string;
|
|
17
17
|
readonly of: string;
|
|
18
18
|
}
|
|
19
|
-
export interface CarouselClassNames {
|
|
20
|
-
readonly viewport?: string;
|
|
21
|
-
readonly slide?: string;
|
|
22
|
-
readonly slideContent?: string;
|
|
23
|
-
readonly controls?: string;
|
|
24
|
-
readonly previous?: string;
|
|
25
|
-
readonly next?: string;
|
|
26
|
-
readonly dots?: string;
|
|
27
|
-
readonly dot?: string;
|
|
28
|
-
readonly rotation?: string;
|
|
29
|
-
readonly status?: string;
|
|
30
|
-
}
|
|
31
19
|
/**
|
|
32
20
|
* Visible content for the client entries' buttons. Empty by default: `labels` already
|
|
33
21
|
* supplies each button's accessible name, so a consumer supplies whatever it wants to
|
|
@@ -51,7 +39,6 @@ export interface CarouselProps {
|
|
|
51
39
|
readonly navigation?: boolean;
|
|
52
40
|
readonly pagination?: boolean;
|
|
53
41
|
readonly className?: string;
|
|
54
|
-
readonly classNames?: CarouselClassNames;
|
|
55
42
|
readonly style?: CarouselStyle;
|
|
56
43
|
readonly labels?: Partial<CarouselLabels>;
|
|
57
44
|
readonly icons?: CarouselIcons;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/carousel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE3D,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC9C,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,MAAM,GACN,KAAK,GACL,SAAS,GACT,QAAQ,GACR,MAAM,GACN,UAAU,GACV,YAAY,GACZ,OAAO,CAAC;AAEZ,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/carousel/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CA8D3D;yBA9De,QAAQ"}
|
|
@@ -40,10 +40,11 @@ function Checkbox(props) {
|
|
|
40
40
|
id,
|
|
41
41
|
onChange: handleChange,
|
|
42
42
|
ref: inputRef,
|
|
43
|
-
type: "checkbox"
|
|
43
|
+
type: "checkbox",
|
|
44
|
+
...label === void 0 ? { "data-uiify-checkbox": "" } : { "data-part": "control" }
|
|
44
45
|
}
|
|
45
46
|
);
|
|
46
|
-
return label === void 0 ? input : /* @__PURE__ */ jsxs("label", { className, id: `${id}-label`, children: [
|
|
47
|
+
return label === void 0 ? input : /* @__PURE__ */ jsxs("label", { className, "data-uiify-checkbox": "", id: `${id}-label`, children: [
|
|
47
48
|
input,
|
|
48
49
|
label
|
|
49
50
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport type { ChangeEvent, ReactElement } from \"react\";\nimport type { CheckboxProps } from \"./types.js\";\n\nexport function Checkbox(props: CheckboxProps): ReactElement {\n const {\n checked,\n defaultChecked,\n disabled = false,\n id,\n label,\n onCheckedChange,\n className,\n \"aria-label\": ariaLabel,\n } = props;\n const isControlled = checked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(defaultChecked ?? false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const checkedValue = isControlled ? checked === true : uncontrolledChecked;\n\n useEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = checked === \"indeterminate\";\n }, [checked]);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (checked === \"indeterminate\" && inputRef.current) {\n inputRef.current.indeterminate = true;\n }\n if (!isControlled) setUncontrolledChecked(event.currentTarget.checked);\n onCheckedChange?.(event.currentTarget.checked);\n };\n\n const input = (\n <input\n aria-checked={checked === \"indeterminate\" ? \"mixed\" : undefined}\n aria-label={label === undefined ? ariaLabel : undefined}\n aria-labelledby={label !== undefined ? `${id}-label` : undefined}\n checked={isControlled ? checkedValue : undefined}\n data-disabled={disabled ? \"\" : undefined}\n data-state={\n isControlled\n ? checked === \"indeterminate\"\n ? \"indeterminate\"\n : checkedValue\n ? \"checked\"\n : \"unchecked\"\n : undefined\n }\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled || undefined}\n id={id}\n onChange={handleChange}\n ref={inputRef}\n type=\"checkbox\"\n />\n );\n\n return label === undefined ? (\n input\n ) : (\n <label className={className} id={`${id}-label`}>\n {input}\n {label}\n </label>\n );\n}\nCheckbox.displayName = \"Checkbox\";\n"],"mappings":";AAmCI,
|
|
1
|
+
{"version":3,"sources":["../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport type { ChangeEvent, ReactElement } from \"react\";\nimport type { CheckboxProps } from \"./types.js\";\n\nexport function Checkbox(props: CheckboxProps): ReactElement {\n const {\n checked,\n defaultChecked,\n disabled = false,\n id,\n label,\n onCheckedChange,\n className,\n \"aria-label\": ariaLabel,\n } = props;\n const isControlled = checked !== undefined;\n const [uncontrolledChecked, setUncontrolledChecked] = useState(defaultChecked ?? false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const checkedValue = isControlled ? checked === true : uncontrolledChecked;\n\n useEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = checked === \"indeterminate\";\n }, [checked]);\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (checked === \"indeterminate\" && inputRef.current) {\n inputRef.current.indeterminate = true;\n }\n if (!isControlled) setUncontrolledChecked(event.currentTarget.checked);\n onCheckedChange?.(event.currentTarget.checked);\n };\n\n const input = (\n <input\n aria-checked={checked === \"indeterminate\" ? \"mixed\" : undefined}\n aria-label={label === undefined ? ariaLabel : undefined}\n aria-labelledby={label !== undefined ? `${id}-label` : undefined}\n checked={isControlled ? checkedValue : undefined}\n data-disabled={disabled ? \"\" : undefined}\n data-state={\n isControlled\n ? checked === \"indeterminate\"\n ? \"indeterminate\"\n : checkedValue\n ? \"checked\"\n : \"unchecked\"\n : undefined\n }\n defaultChecked={!isControlled ? defaultChecked : undefined}\n disabled={disabled || undefined}\n id={id}\n onChange={handleChange}\n ref={inputRef}\n type=\"checkbox\"\n {...(label === undefined ? { \"data-uiify-checkbox\": \"\" } : { \"data-part\": \"control\" })}\n />\n );\n\n return label === undefined ? (\n input\n ) : (\n <label className={className} data-uiify-checkbox=\"\" id={`${id}-label`}>\n {input}\n {label}\n </label>\n );\n}\nCheckbox.displayName = \"Checkbox\";\n"],"mappings":";AAmCI,cA4BA,YA5BA;AAjCJ,SAAS,WAAW,QAAQ,gBAAgB;AAIrC,SAAS,SAAS,OAAoC;AAC3D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,EAChB,IAAI;AACJ,QAAM,eAAe,YAAY;AACjC,QAAM,CAAC,qBAAqB,sBAAsB,IAAI,SAAS,kBAAkB,KAAK;AACtF,QAAM,WAAW,OAAgC,IAAI;AACrD,QAAM,eAAe,eAAe,YAAY,OAAO;AAEvD,YAAU,MAAM;AACd,QAAI,SAAS,QAAS,UAAS,QAAQ,gBAAgB,YAAY;AAAA,EACrE,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,eAAe,CAAC,UAAyC;AAC7D,QAAI,YAAY,mBAAmB,SAAS,SAAS;AACnD,eAAS,QAAQ,gBAAgB;AAAA,IACnC;AACA,QAAI,CAAC,aAAc,wBAAuB,MAAM,cAAc,OAAO;AACrE,sBAAkB,MAAM,cAAc,OAAO;AAAA,EAC/C;AAEA,QAAM,QACJ;AAAA,IAAC;AAAA;AAAA,MACC,gBAAc,YAAY,kBAAkB,UAAU;AAAA,MACtD,cAAY,UAAU,SAAY,YAAY;AAAA,MAC9C,mBAAiB,UAAU,SAAY,GAAG,EAAE,WAAW;AAAA,MACvD,SAAS,eAAe,eAAe;AAAA,MACvC,iBAAe,WAAW,KAAK;AAAA,MAC/B,cACE,eACI,YAAY,kBACV,kBACA,eACE,YACA,cACJ;AAAA,MAEN,gBAAgB,CAAC,eAAe,iBAAiB;AAAA,MACjD,UAAU,YAAY;AAAA,MACtB;AAAA,MACA,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAK;AAAA,MACJ,GAAI,UAAU,SAAY,EAAE,uBAAuB,GAAG,IAAI,EAAE,aAAa,UAAU;AAAA;AAAA,EACtF;AAGF,SAAO,UAAU,SACf,QAEA,qBAAC,WAAM,WAAsB,uBAAoB,IAAG,IAAI,GAAG,EAAE,UAC1D;AAAA;AAAA,IACA;AAAA,KACH;AAEJ;AACA,SAAS,cAAc;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,WAAW,EAEX,YAAY,EAEb,MAAM,OAAO,CAAC;AA4Bf,OAAO,KAAK,EAEV,oBAAoB,EAGpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAUnD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,WAAW,EAEX,YAAY,EAEb,MAAM,OAAO,CAAC;AA4Bf,OAAO,KAAK,EAEV,oBAAoB,EAGpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAUnD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CAoP1E;yBApPe,YAAY;;;AAuP5B,wBAAgB,eAAe,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC7D,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAC/B,YAAY,GAAG,IAAI,CAgBrB;yBAlBe,eAAe;;;AAkE/B,wBAAgB,YAAY,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC1D,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAC5B,YAAY,GAAG,IAAI,CAKrB;yBAPe,YAAY;;;AAU5B,wBAAgB,aAAa,CAAC,GAAG,SAAS,WAAW,GAAG,OAAO,EAC7D,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAC7B,YAAY,GAAG,IAAI,CAwGrB;AAED,wBAAgB,eAAe,CAAC,GAAG,SAAS,WAAW,GAAG,QAAQ,EAChE,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAC/B,YAAY,GAAG,IAAI,CAgCrB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,YAAY,GAAG,IAAI,CA+CnF;yBA/Ce,eAAe;;;AAkD/B,wBAAgB,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,GAAG,IAAI,CAmC7E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CAY/E;AAED,eAAO,MAAM,QAAQ;;;;;;;;;CASpB,CAAC"}
|
|
@@ -50,6 +50,7 @@ function ComboboxRoot(props) {
|
|
|
50
50
|
singleValue = props.value ?? props.defaultValue;
|
|
51
51
|
}
|
|
52
52
|
const {
|
|
53
|
+
className,
|
|
53
54
|
children,
|
|
54
55
|
defaultInputValue,
|
|
55
56
|
defaultOpen,
|
|
@@ -244,7 +245,7 @@ function ComboboxRoot(props) {
|
|
|
244
245
|
toggleValue
|
|
245
246
|
]
|
|
246
247
|
);
|
|
247
|
-
return /* @__PURE__ */ jsx(CollectionProvider, { children: /* @__PURE__ */ jsx(ComboboxProvider, { value: contextValue, children }) });
|
|
248
|
+
return /* @__PURE__ */ jsx("div", { className, "data-uiify-combobox": "", children: /* @__PURE__ */ jsx(CollectionProvider, { children: /* @__PURE__ */ jsx(ComboboxProvider, { value: contextValue, children }) }) });
|
|
248
249
|
}
|
|
249
250
|
ComboboxRoot.displayName = "ComboboxRoot";
|
|
250
251
|
function ComboboxControl(props) {
|
|
@@ -391,6 +392,7 @@ function ComboboxInput(props) {
|
|
|
391
392
|
"aria-controls": listboxId,
|
|
392
393
|
"aria-expanded": openState,
|
|
393
394
|
...activeId ? { "aria-activedescendant": activeId } : {},
|
|
395
|
+
"data-part": "input",
|
|
394
396
|
...className ? { className } : {},
|
|
395
397
|
value: inputValue,
|
|
396
398
|
onChange: composeEventHandlers(consumerOnChange, handleChange),
|
|
@@ -421,6 +423,7 @@ function ComboboxTrigger(props) {
|
|
|
421
423
|
"aria-haspopup": "listbox",
|
|
422
424
|
...nativeButton ? { type: "button" } : {},
|
|
423
425
|
...className ? { className } : {},
|
|
426
|
+
"data-part": "trigger",
|
|
424
427
|
children,
|
|
425
428
|
onClick: composeEventHandlers(consumerOnClick, handleClick)
|
|
426
429
|
},
|
|
@@ -463,6 +466,7 @@ function ComboboxContent(props) {
|
|
|
463
466
|
role: "listbox",
|
|
464
467
|
"aria-multiselectable": multiple ? true : void 0,
|
|
465
468
|
"data-align": align,
|
|
469
|
+
"data-part": "content",
|
|
466
470
|
"data-side": side,
|
|
467
471
|
"data-state": openState ? "open" : "closed",
|
|
468
472
|
...className ? { className } : {},
|
|
@@ -493,6 +497,7 @@ function ComboboxItem(props) {
|
|
|
493
497
|
"data-disabled": item.disabled ? "" : void 0,
|
|
494
498
|
"data-highlighted": active ? "" : void 0,
|
|
495
499
|
"data-selected": multiple && selected ? "" : void 0,
|
|
500
|
+
"data-part": "item",
|
|
496
501
|
...className ? { className } : {},
|
|
497
502
|
children: item.label,
|
|
498
503
|
onMouseDown(event) {
|
|
@@ -511,6 +516,7 @@ function ComboboxEmpty(props) {
|
|
|
511
516
|
defaultTag: "div",
|
|
512
517
|
props: {
|
|
513
518
|
role: "presentation",
|
|
519
|
+
"data-part": "empty",
|
|
514
520
|
...className ? { className } : {},
|
|
515
521
|
children
|
|
516
522
|
},
|