@accelint/design-toolkit 9.10.0 → 9.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/catalog-info.yaml +3 -3
- package/dist/components/accordion/context.d.ts +3 -3
- package/dist/components/accordion/context.js.map +1 -1
- package/dist/components/accordion/group.d.ts +2 -2
- package/dist/components/accordion/group.js +2 -1
- package/dist/components/accordion/group.js.map +1 -1
- package/dist/components/accordion/header.d.ts +2 -2
- package/dist/components/accordion/header.js +2 -1
- package/dist/components/accordion/header.js.map +1 -1
- package/dist/components/accordion/index.d.ts +2 -2
- package/dist/components/accordion/index.js +3 -1
- package/dist/components/accordion/index.js.map +1 -1
- package/dist/components/accordion/panel.d.ts +2 -2
- package/dist/components/accordion/panel.js +2 -1
- package/dist/components/accordion/panel.js.map +1 -1
- package/dist/components/accordion/trigger.d.ts +2 -2
- package/dist/components/accordion/trigger.js +4 -3
- package/dist/components/accordion/trigger.js.map +1 -1
- package/dist/components/accordion/types.d.ts +3 -1
- package/dist/components/action-bar/index.d.ts +2 -2
- package/dist/components/action-bar/index.js +1 -1
- package/dist/components/action-bar/index.js.map +1 -1
- package/dist/components/audio/index.d.ts +2 -2
- package/dist/components/avatar/context.d.ts +5 -5
- package/dist/components/avatar/context.js.map +1 -1
- package/dist/components/avatar/index.d.ts +2 -2
- package/dist/components/avatar/index.js +1 -1
- package/dist/components/avatar/index.js.map +1 -1
- package/dist/components/badge/context.d.ts +5 -5
- package/dist/components/badge/context.js.map +1 -1
- package/dist/components/badge/index.d.ts +2 -2
- package/dist/components/badge/index.js +1 -1
- package/dist/components/badge/index.js.map +1 -1
- package/dist/components/breadcrumbs/index.d.ts +3 -3
- package/dist/components/breadcrumbs/index.js +1 -1
- package/dist/components/breadcrumbs/index.js.map +1 -1
- package/dist/components/breadcrumbs/item.d.ts +2 -2
- package/dist/components/breadcrumbs/item.js +3 -1
- package/dist/components/breadcrumbs/item.js.map +1 -1
- package/dist/components/breadcrumbs/types.d.ts +2 -1
- package/dist/components/button/__internal__/clear.js +2 -1
- package/dist/components/button/__internal__/clear.js.map +1 -1
- package/dist/components/button/context.d.ts +10 -10
- package/dist/components/button/context.js.map +1 -1
- package/dist/components/button/index.d.ts +2 -2
- package/dist/components/button/index.js +3 -1
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/button/link.d.ts +2 -2
- package/dist/components/button/link.js +3 -1
- package/dist/components/button/link.js.map +1 -1
- package/dist/components/button/toggle.d.ts +2 -2
- package/dist/components/button/toggle.js +3 -1
- package/dist/components/button/toggle.js.map +1 -1
- package/dist/components/button/types.d.ts +3 -1
- package/dist/components/carousel/context.d.ts +4 -4
- package/dist/components/carousel/gallery.d.ts +2 -2
- package/dist/components/carousel/index.d.ts +2 -2
- package/dist/components/carousel/navigation.d.ts +3 -3
- package/dist/components/carousel/position.d.ts +2 -2
- package/dist/components/carousel/select.d.ts +2 -2
- package/dist/components/carousel/select.js.map +1 -1
- package/dist/components/carousel/viewer.d.ts +2 -2
- package/dist/components/checkbox/context.d.ts +5 -5
- package/dist/components/checkbox/context.js.map +1 -1
- package/dist/components/checkbox/group.d.ts +2 -2
- package/dist/components/checkbox/group.js +5 -3
- package/dist/components/checkbox/group.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +2 -2
- package/dist/components/checkbox/index.js +3 -1
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/types.d.ts +4 -3
- package/dist/components/chip/context.d.ts +5 -5
- package/dist/components/chip/context.js.map +1 -1
- package/dist/components/chip/deletable.d.ts +2 -2
- package/dist/components/chip/deletable.js +5 -3
- package/dist/components/chip/deletable.js.map +1 -1
- package/dist/components/chip/index.d.ts +2 -2
- package/dist/components/chip/index.js +2 -1
- package/dist/components/chip/index.js.map +1 -1
- package/dist/components/chip/list.d.ts +4 -4
- package/dist/components/chip/list.js +3 -1
- package/dist/components/chip/list.js.map +1 -1
- package/dist/components/chip/selectable.d.ts +2 -2
- package/dist/components/chip/selectable.js +3 -1
- package/dist/components/chip/selectable.js.map +1 -1
- package/dist/components/chip/types.d.ts +3 -2
- package/dist/components/classification-badge/context.d.ts +5 -5
- package/dist/components/classification-badge/context.js.map +1 -1
- package/dist/components/classification-badge/index.d.ts +2 -2
- package/dist/components/classification-badge/index.js +1 -1
- package/dist/components/classification-badge/index.js.map +1 -1
- package/dist/components/classification-banner/context.d.ts +5 -5
- package/dist/components/classification-banner/context.js.map +1 -1
- package/dist/components/classification-banner/index.d.ts +2 -2
- package/dist/components/classification-banner/index.js +1 -1
- package/dist/components/classification-banner/index.js.map +1 -1
- package/dist/components/clock/index.d.ts +2 -2
- package/dist/components/color-picker/index.d.ts +2 -2
- package/dist/components/color-picker/index.js +4 -3
- package/dist/components/color-picker/index.js.map +1 -1
- package/dist/components/color-picker/types.d.ts +2 -1
- package/dist/components/combobox-field/context.d.ts +5 -5
- package/dist/components/combobox-field/context.js.map +1 -1
- package/dist/components/combobox-field/index.d.ts +2 -2
- package/dist/components/combobox-field/index.js +11 -11
- package/dist/components/combobox-field/index.js.map +1 -1
- package/dist/components/combobox-field/styles.module.css +11 -2
- package/dist/components/combobox-field/types.d.ts +8 -4
- package/dist/components/coordinate-field/context.d.ts +7 -7
- package/dist/components/coordinate-field/context.js.map +1 -1
- package/dist/components/coordinate-field/coordinate-utils.js +2 -0
- package/dist/components/coordinate-field/coordinate-utils.js.map +1 -1
- package/dist/components/coordinate-field/index.d.ts +2 -2
- package/dist/components/coordinate-field/index.js +29 -23
- package/dist/components/coordinate-field/index.js.map +1 -1
- package/dist/components/coordinate-field/segment.d.ts +2 -2
- package/dist/components/coordinate-field/types.d.ts +3 -1
- package/dist/components/coordinate-field/types.js.map +1 -1
- package/dist/components/date-field/index.d.ts +2 -2
- package/dist/components/date-field/index.js +4 -3
- package/dist/components/date-field/index.js.map +1 -1
- package/dist/components/date-field/types.d.ts +1 -1
- package/dist/components/deferred-collection/index.d.ts +2 -2
- package/dist/components/details-list/context.d.ts +3 -3
- package/dist/components/details-list/context.js.map +1 -1
- package/dist/components/details-list/index.d.ts +2 -2
- package/dist/components/details-list/index.js +2 -1
- package/dist/components/details-list/index.js.map +1 -1
- package/dist/components/details-list/label.d.ts +2 -2
- package/dist/components/details-list/label.js +1 -1
- package/dist/components/details-list/label.js.map +1 -1
- package/dist/components/details-list/types.d.ts +1 -1
- package/dist/components/details-list/value.d.ts +2 -2
- package/dist/components/details-list/value.js +1 -1
- package/dist/components/details-list/value.js.map +1 -1
- package/dist/components/dialog/content.d.ts +2 -2
- package/dist/components/dialog/context.d.ts +3 -3
- package/dist/components/dialog/context.js.map +1 -1
- package/dist/components/dialog/footer.d.ts +2 -2
- package/dist/components/dialog/footer.js +1 -1
- package/dist/components/dialog/footer.js.map +1 -1
- package/dist/components/dialog/index.d.ts +2 -2
- package/dist/components/dialog/index.js +3 -1
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/dialog/title.d.ts +3 -3
- package/dist/components/dialog/title.js +1 -1
- package/dist/components/dialog/title.js.map +1 -1
- package/dist/components/dialog/trigger.d.ts +1 -1
- package/dist/components/dialog/trigger.js +1 -1
- package/dist/components/dialog/trigger.js.map +1 -1
- package/dist/components/dialog/types.d.ts +1 -1
- package/dist/components/divider/context.d.ts +5 -5
- package/dist/components/divider/context.js.map +1 -1
- package/dist/components/divider/index.d.ts +2 -2
- package/dist/components/divider/index.js +1 -1
- package/dist/components/divider/index.js.map +1 -1
- package/dist/components/drawer/back.d.ts +2 -2
- package/dist/components/drawer/close.d.ts +2 -2
- package/dist/components/drawer/content.d.ts +2 -2
- package/dist/components/drawer/context.d.ts +2 -2
- package/dist/components/drawer/footer.d.ts +2 -2
- package/dist/components/drawer/header-title.d.ts +2 -2
- package/dist/components/drawer/header-title.js +1 -1
- package/dist/components/drawer/header-title.js.map +1 -1
- package/dist/components/drawer/header.d.ts +2 -2
- package/dist/components/drawer/header.js +3 -3
- package/dist/components/drawer/header.js.map +1 -1
- package/dist/components/drawer/index.d.ts +2 -2
- package/dist/components/drawer/layout-main.d.ts +2 -2
- package/dist/components/drawer/layout.d.ts +2 -2
- package/dist/components/drawer/menu-item.d.ts +2 -2
- package/dist/components/drawer/menu-item.js +7 -7
- package/dist/components/drawer/menu-item.js.map +1 -1
- package/dist/components/drawer/menu.d.ts +2 -2
- package/dist/components/drawer/panel.d.ts +2 -2
- package/dist/components/drawer/styles.module.css +60 -113
- package/dist/components/drawer/trigger.d.ts +2 -2
- package/dist/components/drawer/trigger.js +1 -1
- package/dist/components/drawer/trigger.js.map +1 -1
- package/dist/components/drawer/types.d.ts +3 -3
- package/dist/components/drawer/view.d.ts +2 -2
- package/dist/components/flashcard/index.d.ts +9 -9
- package/dist/components/flashcard/index.js +2 -1
- package/dist/components/flashcard/index.js.map +1 -1
- package/dist/components/floating-card/context.d.ts +4 -29
- package/dist/components/floating-card/context.js.map +1 -1
- package/dist/components/floating-card/index.d.ts +3 -48
- package/dist/components/floating-card/index.js.map +1 -1
- package/dist/components/floating-card/provider.d.ts +5 -84
- package/dist/components/floating-card/provider.js +6 -41
- package/dist/components/floating-card/provider.js.map +1 -1
- package/dist/components/floating-card/styles.module.css +15 -2
- package/dist/components/floating-card/types.d.ts +161 -0
- package/dist/components/floating-card/types.js +12 -0
- package/dist/components/floating-card/utils.d.ts +104 -0
- package/dist/components/floating-card/utils.js +60 -0
- package/dist/components/floating-card/utils.js.map +1 -0
- package/dist/components/gantt/components/base-elements/point.d.ts +2 -2
- package/dist/components/gantt/components/base-elements/range.d.ts +2 -2
- package/dist/components/gantt/components/containers/external/gantt-content-container/index.d.ts +2 -2
- package/dist/components/gantt/components/containers/external/gantt-panel-container/index.d.ts +2 -2
- package/dist/components/gantt/components/containers/internal/index.d.ts +2 -2
- package/dist/components/gantt/components/containers/internal/layout-container/index.d.ts +2 -2
- package/dist/components/gantt/components/containers/internal/virtualized-content-height-container/index.d.ts +2 -2
- package/dist/components/gantt/components/content-row/block.d.ts +2 -2
- package/dist/components/gantt/components/content-row/bracket.d.ts +3 -3
- package/dist/components/gantt/components/content-row/icon-marker.d.ts +2 -2
- package/dist/components/gantt/components/content-row/index.d.ts +2 -2
- package/dist/components/gantt/components/content-row/marker.d.ts +2 -2
- package/dist/components/gantt/components/content-row/spacer.d.ts +2 -2
- package/dist/components/gantt/components/current-time/index.d.ts +2 -2
- package/dist/components/gantt/components/header/index.d.ts +3 -3
- package/dist/components/gantt/components/panel-row/index.d.ts +2 -2
- package/dist/components/gantt/components/rows-virtualizer/index.d.ts +3 -3
- package/dist/components/gantt/components/timeline/index.d.ts +2 -2
- package/dist/components/gantt/components/timeline-chunk/index.d.ts +3 -3
- package/dist/components/gantt/context/index.d.ts +4 -4
- package/dist/components/gantt/context/store/index.d.ts +4 -4
- package/dist/components/gantt/context/temporal-data/index.d.ts +4 -4
- package/dist/components/hero/context.d.ts +3 -3
- package/dist/components/hero/context.js.map +1 -1
- package/dist/components/hero/index.d.ts +2 -2
- package/dist/components/hero/index.js +4 -1
- package/dist/components/hero/index.js.map +1 -1
- package/dist/components/hero/subtitle.d.ts +3 -3
- package/dist/components/hero/subtitle.js +1 -1
- package/dist/components/hero/subtitle.js.map +1 -1
- package/dist/components/hero/title.d.ts +3 -3
- package/dist/components/hero/title.js +1 -1
- package/dist/components/hero/title.js.map +1 -1
- package/dist/components/hotkey/context.d.ts +5 -5
- package/dist/components/hotkey/context.js.map +1 -1
- package/dist/components/hotkey/index.d.ts +2 -2
- package/dist/components/hotkey/index.js +2 -1
- package/dist/components/hotkey/index.js.map +1 -1
- package/dist/components/hotkey/set.d.ts +2 -2
- package/dist/components/icon/context.d.ts +5 -5
- package/dist/components/icon/context.js.map +1 -1
- package/dist/components/icon/index.d.ts +2 -2
- package/dist/components/icon/index.js +1 -1
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/input/context.d.ts +4 -4
- package/dist/components/input/context.js.map +1 -1
- package/dist/components/input/index.d.ts +2 -2
- package/dist/components/input/index.js +4 -2
- package/dist/components/input/index.js.map +1 -1
- package/dist/components/input/types.d.ts +3 -3
- package/dist/components/kanban/card-body.d.ts +2 -2
- package/dist/components/kanban/card-header-actions.d.ts +2 -2
- package/dist/components/kanban/card-header-title.d.ts +2 -2
- package/dist/components/kanban/card.d.ts +2 -2
- package/dist/components/kanban/column-actions.d.ts +2 -2
- package/dist/components/kanban/column-container.d.ts +2 -2
- package/dist/components/kanban/column-content.d.ts +2 -2
- package/dist/components/kanban/column-header-actions.d.ts +2 -2
- package/dist/components/kanban/column-header-drag-handle.d.ts +2 -2
- package/dist/components/kanban/column-header-title.d.ts +2 -2
- package/dist/components/kanban/column-header.d.ts +2 -2
- package/dist/components/kanban/column.d.ts +2 -2
- package/dist/components/kanban/context.d.ts +2 -2
- package/dist/components/kanban/header-actions.d.ts +2 -2
- package/dist/components/kanban/header-search.d.ts +2 -2
- package/dist/components/kanban/header-title.d.ts +2 -2
- package/dist/components/kanban/header-title.js +1 -1
- package/dist/components/kanban/header-title.js.map +1 -1
- package/dist/components/kanban/header.d.ts +2 -2
- package/dist/components/kanban/kanban.d.ts +4 -4
- package/dist/components/label/context.d.ts +6 -6
- package/dist/components/label/context.js.map +1 -1
- package/dist/components/label/index.d.ts +2 -2
- package/dist/components/label/index.js +2 -1
- package/dist/components/label/index.js.map +1 -1
- package/dist/components/label/types.d.ts +1 -1
- package/dist/components/lines/index.d.ts +2 -2
- package/dist/components/link/context.d.ts +2 -2
- package/dist/components/link/context.js +1 -1
- package/dist/components/link/context.js.map +1 -1
- package/dist/components/link/index.d.ts +2 -2
- package/dist/components/link/index.js +3 -1
- package/dist/components/link/index.js.map +1 -1
- package/dist/components/link/types.d.ts +1 -1
- package/dist/components/list/context.d.ts +3 -3
- package/dist/components/list/context.js.map +1 -1
- package/dist/components/list/index.d.ts +2 -2
- package/dist/components/list/index.js +3 -1
- package/dist/components/list/index.js.map +1 -1
- package/dist/components/list/item-content.d.ts +2 -2
- package/dist/components/list/item-description.d.ts +2 -2
- package/dist/components/list/item-title.d.ts +2 -2
- package/dist/components/list/item.d.ts +2 -2
- package/dist/components/list/item.js +2 -1
- package/dist/components/list/item.js.map +1 -1
- package/dist/components/list/types.d.ts +1 -1
- package/dist/components/media-controls/context.d.ts +4 -4
- package/dist/components/media-controls/fullscreen-button.d.ts +2 -2
- package/dist/components/media-controls/index.d.ts +2 -2
- package/dist/components/media-controls/mute-button.d.ts +2 -2
- package/dist/components/media-controls/play-button.d.ts +2 -2
- package/dist/components/media-controls/playback-rate.d.ts +2 -2
- package/dist/components/media-controls/seek-button.d.ts +2 -2
- package/dist/components/media-controls/time-display.d.ts +2 -2
- package/dist/components/media-controls/time-range.d.ts +2 -2
- package/dist/components/media-controls/volume-slider.d.ts +2 -2
- package/dist/components/menu/context.d.ts +4 -4
- package/dist/components/menu/context.js.map +1 -1
- package/dist/components/menu/index.d.ts +2 -2
- package/dist/components/menu/index.js +4 -1
- package/dist/components/menu/index.js.map +1 -1
- package/dist/components/menu/item-description.d.ts +3 -3
- package/dist/components/menu/item-description.js +1 -1
- package/dist/components/menu/item-description.js.map +1 -1
- package/dist/components/menu/item-label.d.ts +3 -3
- package/dist/components/menu/item-label.js +1 -1
- package/dist/components/menu/item-label.js.map +1 -1
- package/dist/components/menu/item.d.ts +2 -2
- package/dist/components/menu/item.js +5 -1
- package/dist/components/menu/item.js.map +1 -1
- package/dist/components/menu/section.d.ts +2 -2
- package/dist/components/menu/section.js +1 -1
- package/dist/components/menu/section.js.map +1 -1
- package/dist/components/menu/separator.d.ts +3 -3
- package/dist/components/menu/separator.js +1 -1
- package/dist/components/menu/separator.js.map +1 -1
- package/dist/components/menu/submenu.d.ts +3 -3
- package/dist/components/menu/submenu.js +1 -1
- package/dist/components/menu/submenu.js.map +1 -1
- package/dist/components/menu/trigger.d.ts +1 -1
- package/dist/components/menu/trigger.js +1 -1
- package/dist/components/menu/trigger.js.map +1 -1
- package/dist/components/menu/types.d.ts +1 -1
- package/dist/components/notice/index.d.ts +2 -2
- package/dist/components/notice/index.js +5 -5
- package/dist/components/notice/index.js.map +1 -1
- package/dist/components/notice/list.d.ts +2 -2
- package/dist/components/notice/list.js +7 -6
- package/dist/components/notice/list.js.map +1 -1
- package/dist/components/notice/notice-icon.d.ts +2 -2
- package/dist/components/notice/types.d.ts +4 -4
- package/dist/components/options/context.d.ts +3 -3
- package/dist/components/options/context.js.map +1 -1
- package/dist/components/options/index.d.ts +2 -2
- package/dist/components/options/index.js +3 -1
- package/dist/components/options/index.js.map +1 -1
- package/dist/components/options/item-content.d.ts +3 -3
- package/dist/components/options/item-content.js.map +1 -1
- package/dist/components/options/item-description.d.ts +3 -3
- package/dist/components/options/item-description.js +1 -1
- package/dist/components/options/item-description.js.map +1 -1
- package/dist/components/options/item-label.d.ts +3 -3
- package/dist/components/options/item-label.js +2 -1
- package/dist/components/options/item-label.js.map +1 -1
- package/dist/components/options/item.d.ts +2 -2
- package/dist/components/options/item.js +2 -1
- package/dist/components/options/item.js.map +1 -1
- package/dist/components/options/section.d.ts +2 -2
- package/dist/components/options/section.js +1 -1
- package/dist/components/options/section.js.map +1 -1
- package/dist/components/options/types.d.ts +2 -2
- package/dist/components/pagination/context.d.ts +2 -2
- package/dist/components/pagination/index.d.ts +2 -2
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/pagination/index.js.map +1 -1
- package/dist/components/pagination/next.d.ts +2 -2
- package/dist/components/pagination/next.js +3 -3
- package/dist/components/pagination/next.js.map +1 -1
- package/dist/components/pagination/pages.d.ts +2 -2
- package/dist/components/pagination/pages.js +3 -3
- package/dist/components/pagination/pages.js.map +1 -1
- package/dist/components/pagination/prev.d.ts +2 -2
- package/dist/components/pagination/prev.js +3 -3
- package/dist/components/pagination/prev.js.map +1 -1
- package/dist/components/popover/content.d.ts +2 -2
- package/dist/components/popover/footer.d.ts +2 -2
- package/dist/components/popover/index.d.ts +2 -2
- package/dist/components/popover/index.js +1 -1
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/popover/title.d.ts +3 -3
- package/dist/components/popover/title.js +1 -1
- package/dist/components/popover/title.js.map +1 -1
- package/dist/components/popover/trigger.d.ts +2 -2
- package/dist/components/popover/trigger.js +3 -3
- package/dist/components/popover/trigger.js.map +1 -1
- package/dist/components/popover/types.d.ts +1 -1
- package/dist/components/query-builder/action-element.d.ts +2 -2
- package/dist/components/query-builder/actions.d.ts +4 -4
- package/dist/components/query-builder/combinator-selector.d.ts +2 -2
- package/dist/components/query-builder/index.d.ts +2 -2
- package/dist/components/query-builder/rule-group.d.ts +4 -4
- package/dist/components/query-builder/rule.d.ts +2 -2
- package/dist/components/query-builder/value-editor.d.ts +2 -2
- package/dist/components/query-builder/value-selector.d.ts +2 -2
- package/dist/components/radio/context.d.ts +5 -5
- package/dist/components/radio/context.js.map +1 -1
- package/dist/components/radio/group.d.ts +2 -2
- package/dist/components/radio/group.js +5 -3
- package/dist/components/radio/group.js.map +1 -1
- package/dist/components/radio/index.d.ts +2 -2
- package/dist/components/radio/index.js +3 -1
- package/dist/components/radio/index.js.map +1 -1
- package/dist/components/radio/types.d.ts +3 -3
- package/dist/components/search-field/context.d.ts +6 -6
- package/dist/components/search-field/context.js.map +1 -1
- package/dist/components/search-field/index.d.ts +2 -2
- package/dist/components/search-field/index.js +3 -1
- package/dist/components/search-field/index.js.map +1 -1
- package/dist/components/search-field/types.d.ts +3 -3
- package/dist/components/select-field/context.d.ts +5 -5
- package/dist/components/select-field/context.js.map +1 -1
- package/dist/components/select-field/index.d.ts +2 -2
- package/dist/components/select-field/index.js +6 -3
- package/dist/components/select-field/index.js.map +1 -1
- package/dist/components/select-field/types.d.ts +8 -5
- package/dist/components/sidenav/avatar.d.ts +2 -2
- package/dist/components/sidenav/avatar.js +3 -1
- package/dist/components/sidenav/avatar.js.map +1 -1
- package/dist/components/sidenav/content.d.ts +2 -2
- package/dist/components/sidenav/content.js +1 -1
- package/dist/components/sidenav/content.js.map +1 -1
- package/dist/components/sidenav/context.d.ts +2 -2
- package/dist/components/sidenav/footer.d.ts +2 -2
- package/dist/components/sidenav/header.d.ts +2 -2
- package/dist/components/sidenav/header.js +3 -1
- package/dist/components/sidenav/header.js.map +1 -1
- package/dist/components/sidenav/index.d.ts +2 -2
- package/dist/components/sidenav/index.js +2 -1
- package/dist/components/sidenav/index.js.map +1 -1
- package/dist/components/sidenav/item.d.ts +2 -2
- package/dist/components/sidenav/item.js +8 -5
- package/dist/components/sidenav/item.js.map +1 -1
- package/dist/components/sidenav/link.d.ts +2 -2
- package/dist/components/sidenav/link.js +8 -5
- package/dist/components/sidenav/link.js.map +1 -1
- package/dist/components/sidenav/menu-item.d.ts +2 -2
- package/dist/components/sidenav/menu-item.js +2 -1
- package/dist/components/sidenav/menu-item.js.map +1 -1
- package/dist/components/sidenav/menu.d.ts +2 -2
- package/dist/components/sidenav/menu.js +10 -5
- package/dist/components/sidenav/menu.js.map +1 -1
- package/dist/components/sidenav/trigger.d.ts +2 -2
- package/dist/components/sidenav/trigger.js +1 -1
- package/dist/components/sidenav/trigger.js.map +1 -1
- package/dist/components/sidenav/types.d.ts +6 -1
- package/dist/components/skeleton/index.d.ts +2 -2
- package/dist/components/slider/index.d.ts +2 -2
- package/dist/components/slider/index.js +9 -6
- package/dist/components/slider/index.js.map +1 -1
- package/dist/components/slider/types.d.ts +1 -1
- package/dist/components/status-indicator/index.d.ts +2 -2
- package/dist/components/switch/context.d.ts +6 -6
- package/dist/components/switch/context.js.map +1 -1
- package/dist/components/switch/index.d.ts +2 -2
- package/dist/components/switch/index.js +3 -1
- package/dist/components/switch/index.js.map +1 -1
- package/dist/components/switch/types.d.ts +1 -1
- package/dist/components/table/body.d.ts +2 -2
- package/dist/components/table/cell.d.ts +2 -2
- package/dist/components/table/header-cell.d.ts +2 -2
- package/dist/components/table/header.d.ts +2 -2
- package/dist/components/table/index.d.ts +2 -2
- package/dist/components/table/index.js +2 -2
- package/dist/components/table/index.js.map +1 -1
- package/dist/components/table/row.d.ts +2 -2
- package/dist/components/tabs/context.d.ts +8 -8
- package/dist/components/tabs/context.js.map +1 -1
- package/dist/components/tabs/index.d.ts +2 -2
- package/dist/components/tabs/index.js +3 -1
- package/dist/components/tabs/index.js.map +1 -1
- package/dist/components/tabs/list.d.ts +3 -3
- package/dist/components/tabs/list.js +2 -1
- package/dist/components/tabs/list.js.map +1 -1
- package/dist/components/tabs/panel.d.ts +3 -3
- package/dist/components/tabs/panel.js +2 -1
- package/dist/components/tabs/panel.js.map +1 -1
- package/dist/components/tabs/tab.d.ts +2 -2
- package/dist/components/tabs/tab.js +3 -1
- package/dist/components/tabs/tab.js.map +1 -1
- package/dist/components/tabs/types.d.ts +1 -1
- package/dist/components/text-area-field/context.d.ts +5 -5
- package/dist/components/text-area-field/context.js.map +1 -1
- package/dist/components/text-area-field/index.d.ts +2 -2
- package/dist/components/text-area-field/index.js +8 -3
- package/dist/components/text-area-field/index.js.map +1 -1
- package/dist/components/text-area-field/types.d.ts +3 -1
- package/dist/components/text-field/context.d.ts +6 -6
- package/dist/components/text-field/context.js.map +1 -1
- package/dist/components/text-field/index.d.ts +2 -2
- package/dist/components/text-field/index.js +9 -5
- package/dist/components/text-field/index.js.map +1 -1
- package/dist/components/text-field/types.d.ts +7 -6
- package/dist/components/time-field/index.d.ts +3 -3
- package/dist/components/time-field/index.js +4 -3
- package/dist/components/time-field/index.js.map +1 -1
- package/dist/components/time-field/types.d.ts +1 -1
- package/dist/components/tooltip/context.d.ts +3 -3
- package/dist/components/tooltip/context.js.map +1 -1
- package/dist/components/tooltip/index.d.ts +2 -2
- package/dist/components/tooltip/index.js +3 -2
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tooltip/trigger.d.ts +2 -2
- package/dist/components/tooltip/trigger.js +6 -3
- package/dist/components/tooltip/trigger.js.map +1 -1
- package/dist/components/tooltip/types.d.ts +8 -3
- package/dist/components/tree/context.d.ts +3 -3
- package/dist/components/tree/index.d.ts +4 -2
- package/dist/components/tree/index.js +11 -6
- package/dist/components/tree/index.js.map +1 -1
- package/dist/components/tree/item-actions.d.ts +2 -2
- package/dist/components/tree/item-content.d.ts +2 -2
- package/dist/components/tree/item-content.js +7 -7
- package/dist/components/tree/item-content.js.map +1 -1
- package/dist/components/tree/item-description.d.ts +3 -3
- package/dist/components/tree/item-description.js +1 -1
- package/dist/components/tree/item-description.js.map +1 -1
- package/dist/components/tree/item-label.d.ts +3 -3
- package/dist/components/tree/item-label.js +1 -1
- package/dist/components/tree/item-label.js.map +1 -1
- package/dist/components/tree/item-prefix-icon.d.ts +2 -2
- package/dist/components/tree/item.d.ts +2 -2
- package/dist/components/tree/item.js +14 -7
- package/dist/components/tree/item.js.map +1 -1
- package/dist/components/tree/lines.d.ts +2 -2
- package/dist/components/tree/types.d.ts +30 -16
- package/dist/components/video/index.d.ts +2 -2
- package/dist/components/view-stack/context.d.ts +2 -2
- package/dist/components/view-stack/index.d.ts +2 -2
- package/dist/components/view-stack/trigger.d.ts +2 -2
- package/dist/components/view-stack/trigger.js +1 -1
- package/dist/components/view-stack/trigger.js.map +1 -1
- package/dist/components/view-stack/types.d.ts +1 -1
- package/dist/components/view-stack/view.d.ts +2 -2
- package/dist/hooks/coordinate-field/use-coordinate-field-state.d.ts +2 -0
- package/dist/hooks/coordinate-field/use-coordinate-field-state.js +15 -2
- package/dist/hooks/coordinate-field/use-coordinate-field-state.js.map +1 -1
- package/dist/hooks/coordinate-field/use-coordinate-field.d.ts +1 -1
- package/dist/hooks/coordinate-field/use-coordinate-field.js +1 -1
- package/dist/hooks/coordinate-field/use-coordinate-field.js.map +1 -1
- package/dist/hooks/coordinate-field/use-coordinate-paste.js +27 -4
- package/dist/hooks/coordinate-field/use-coordinate-paste.js.map +1 -1
- package/dist/hooks/use-tree/actions/cache.d.ts +390 -18
- package/dist/hooks/use-tree/actions/cache.js +382 -18
- package/dist/hooks/use-tree/actions/cache.js.map +1 -1
- package/dist/hooks/use-tree/actions/index.d.ts +34 -21
- package/dist/hooks/use-tree/actions/index.js +34 -26
- package/dist/hooks/use-tree/actions/index.js.map +1 -1
- package/dist/hooks/use-tree/state/index.d.ts +5 -1
- package/dist/hooks/use-tree/state/index.js +5 -1
- package/dist/hooks/use-tree/state/index.js.map +1 -1
- package/dist/hooks/use-tree/state/utils.d.ts +28 -0
- package/dist/hooks/use-tree/state/utils.js +29 -1
- package/dist/hooks/use-tree/state/utils.js.map +1 -1
- package/dist/hooks/use-tree/types.d.ts +52 -24
- package/dist/index.d.ts +5 -4
- package/dist/lib/utils.d.ts +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/providers/portal.d.ts +2 -2
- package/dist/providers/portal.js +2 -2
- package/dist/providers/portal.js.map +1 -1
- package/dist/providers/theme-provider.d.ts +4 -4
- package/dist/providers/theme-provider.js +6 -7
- package/dist/providers/theme-provider.js.map +1 -1
- package/package.json +22 -39
- package/dist/node_modules/.pnpm/@react-aria_collections@3.0.0-rc.7_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@react-aria/collections/dist/BaseCollection.js +0 -134
- package/dist/node_modules/.pnpm/@react-aria_collections@3.0.0-rc.7_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@react-aria/collections/dist/BaseCollection.js.map +0 -1
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import
|
|
14
|
-
import
|
|
13
|
+
import * as react_jsx_runtime203 from "react/jsx-runtime";
|
|
14
|
+
import { TextProps } from "react-aria-components/Text";
|
|
15
15
|
|
|
16
16
|
//#region src/components/tree/item-description.d.ts
|
|
17
17
|
/**
|
|
@@ -33,7 +33,7 @@ import * as react_jsx_runtime187 from "react/jsx-runtime";
|
|
|
33
33
|
declare function TreeItemDescription({
|
|
34
34
|
children,
|
|
35
35
|
className
|
|
36
|
-
}: TextProps):
|
|
36
|
+
}: TextProps): react_jsx_runtime203.JSX.Element | null;
|
|
37
37
|
//#endregion
|
|
38
38
|
export { TreeItemDescription };
|
|
39
39
|
//# sourceMappingURL=item-description.d.ts.map
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
import { TreeContext } from "./context.js";
|
|
15
15
|
import { useContext } from "react";
|
|
16
16
|
import { clsx } from "@accelint/design-foundation/lib/utils";
|
|
17
|
-
import { Text } from "react-aria-components";
|
|
18
17
|
import { jsx } from "react/jsx-runtime";
|
|
18
|
+
import { Text } from "react-aria-components/Text";
|
|
19
19
|
import styles from "./styles.module.css";
|
|
20
20
|
|
|
21
21
|
//#region src/components/tree/item-description.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-description.js","names":[],"sources":["../../../src/components/tree/item-description.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport { useContext } from 'react';\nimport { Text, type TextProps } from 'react-aria-components';\nimport { TreeContext } from './context';\nimport styles from './styles.module.css';\n\n/**\n * TreeItemDescription - Secondary descriptive text for a tree item\n *\n * @example\n * ```tsx\n * <TreeItemContent>\n * <TreeItemLabel>Project Files</TreeItemLabel>\n * <TreeItemDescription>Last modified 2 hours ago</TreeItemDescription>\n * </TreeItemContent>\n * ```\n *\n * @param props - TextProps from react-aria-components.\n * @param props.children - Description text content.\n * @param props.className - CSS class for the description.\n * @returns The rendered TreeItemDescription component, or null if variant is 'crammed'.\n */\nexport function TreeItemDescription({ children, className }: TextProps) {\n const { variant } = useContext(TreeContext);\n\n return variant !== 'crammed' ? (\n <Text\n data-slot='description'\n className={clsx(styles.description, className)}\n >\n {children}\n </Text>\n ) : null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,SAAgB,oBAAoB,EAAE,UAAU,aAAwB;CACtE,MAAM,EAAE,YAAY,WAAW,YAAY;AAE3C,QAAO,YAAY,YACjB,oBAAC;EACC,aAAU;EACV,WAAW,KAAK,OAAO,aAAa,UAAU;EAE7C;GACI,GACL"}
|
|
1
|
+
{"version":3,"file":"item-description.js","names":[],"sources":["../../../src/components/tree/item-description.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport { useContext } from 'react';\nimport { Text, type TextProps } from 'react-aria-components/Text';\nimport { TreeContext } from './context';\nimport styles from './styles.module.css';\n\n/**\n * TreeItemDescription - Secondary descriptive text for a tree item\n *\n * @example\n * ```tsx\n * <TreeItemContent>\n * <TreeItemLabel>Project Files</TreeItemLabel>\n * <TreeItemDescription>Last modified 2 hours ago</TreeItemDescription>\n * </TreeItemContent>\n * ```\n *\n * @param props - TextProps from react-aria-components.\n * @param props.children - Description text content.\n * @param props.className - CSS class for the description.\n * @returns The rendered TreeItemDescription component, or null if variant is 'crammed'.\n */\nexport function TreeItemDescription({ children, className }: TextProps) {\n const { variant } = useContext(TreeContext);\n\n return variant !== 'crammed' ? (\n <Text\n data-slot='description'\n className={clsx(styles.description, className)}\n >\n {children}\n </Text>\n ) : null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,SAAgB,oBAAoB,EAAE,UAAU,aAAwB;CACtE,MAAM,EAAE,YAAY,WAAW,YAAY;AAE3C,QAAO,YAAY,YACjB,oBAAC;EACC,aAAU;EACV,WAAW,KAAK,OAAO,aAAa,UAAU;EAE7C;GACI,GACL"}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import
|
|
14
|
-
import
|
|
13
|
+
import * as react_jsx_runtime204 from "react/jsx-runtime";
|
|
14
|
+
import { TextProps } from "react-aria-components/Text";
|
|
15
15
|
|
|
16
16
|
//#region src/components/tree/item-label.d.ts
|
|
17
17
|
/**
|
|
@@ -33,7 +33,7 @@ import * as react_jsx_runtime188 from "react/jsx-runtime";
|
|
|
33
33
|
declare function TreeItemLabel({
|
|
34
34
|
children,
|
|
35
35
|
className
|
|
36
|
-
}: TextProps):
|
|
36
|
+
}: TextProps): react_jsx_runtime204.JSX.Element;
|
|
37
37
|
//#endregion
|
|
38
38
|
export { TreeItemLabel };
|
|
39
39
|
//# sourceMappingURL=item-label.d.ts.map
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
import { clsx } from "@accelint/design-foundation/lib/utils";
|
|
15
|
-
import { Text } from "react-aria-components";
|
|
16
15
|
import { jsx } from "react/jsx-runtime";
|
|
16
|
+
import { Text } from "react-aria-components/Text";
|
|
17
17
|
import styles from "./styles.module.css";
|
|
18
18
|
|
|
19
19
|
//#region src/components/tree/item-label.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-label.js","names":[],"sources":["../../../src/components/tree/item-label.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport { Text, type TextProps } from 'react-aria-components';\nimport styles from './styles.module.css';\n\n/**\n * TreeItemLabel - Primary text label for a tree item\n *\n * @example\n * ```tsx\n * <TreeItemContent>\n * <TreeItemLabel>Documents</TreeItemLabel>\n * <TreeItemDescription>Folder</TreeItemDescription>\n * </TreeItemContent>\n * ```\n *\n * @param props - TextProps from react-aria-components.\n * @param props.children - Label text content.\n * @param props.className - CSS class for the label.\n * @returns The rendered TreeItemLabel component.\n */\nexport function TreeItemLabel({ children, className }: TextProps) {\n return <Text className={clsx(styles.label, className)}>{children}</Text>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,SAAgB,cAAc,EAAE,UAAU,aAAwB;AAChE,QAAO,oBAAC;EAAK,WAAW,KAAK,OAAO,OAAO,UAAU;EAAG;GAAgB"}
|
|
1
|
+
{"version":3,"file":"item-label.js","names":[],"sources":["../../../src/components/tree/item-label.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport { Text, type TextProps } from 'react-aria-components/Text';\nimport styles from './styles.module.css';\n\n/**\n * TreeItemLabel - Primary text label for a tree item\n *\n * @example\n * ```tsx\n * <TreeItemContent>\n * <TreeItemLabel>Documents</TreeItemLabel>\n * <TreeItemDescription>Folder</TreeItemDescription>\n * </TreeItemContent>\n * ```\n *\n * @param props - TextProps from react-aria-components.\n * @param props.children - Label text content.\n * @param props.className - CSS class for the label.\n * @returns The rendered TreeItemLabel component.\n */\nexport function TreeItemLabel({ children, className }: TextProps) {\n return <Text className={clsx(styles.label, className)}>{children}</Text>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,SAAgB,cAAc,EAAE,UAAU,aAAwB;AAChE,QAAO,oBAAC;EAAK,WAAW,KAAK,OAAO,OAAO,UAAU;EAAG;GAAgB"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { IconProps } from "../icon/types.js";
|
|
14
|
-
import * as
|
|
14
|
+
import * as react_jsx_runtime236 from "react/jsx-runtime";
|
|
15
15
|
|
|
16
16
|
//#region src/components/tree/item-prefix-icon.d.ts
|
|
17
17
|
/**
|
|
@@ -33,7 +33,7 @@ import * as react_jsx_runtime189 from "react/jsx-runtime";
|
|
|
33
33
|
declare function TreeItemPrefixIcon({
|
|
34
34
|
children,
|
|
35
35
|
className
|
|
36
|
-
}: IconProps):
|
|
36
|
+
}: IconProps): react_jsx_runtime236.JSX.Element;
|
|
37
37
|
//#endregion
|
|
38
38
|
export { TreeItemPrefixIcon };
|
|
39
39
|
//# sourceMappingURL=item-prefix-icon.d.ts.map
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { TreeItemProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime218 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/tree/item.d.ts
|
|
18
18
|
|
|
@@ -44,7 +44,7 @@ declare function TreeItem({
|
|
|
44
44
|
className,
|
|
45
45
|
id,
|
|
46
46
|
...rest
|
|
47
|
-
}: TreeItemProps):
|
|
47
|
+
}: TreeItemProps): react_jsx_runtime218.JSX.Element;
|
|
48
48
|
//#endregion
|
|
49
49
|
export { TreeItem };
|
|
50
50
|
//# sourceMappingURL=item.d.ts.map
|
|
@@ -15,10 +15,11 @@
|
|
|
15
15
|
|
|
16
16
|
import { TreeContext, TreeItemContext } from "./context.js";
|
|
17
17
|
import "client-only";
|
|
18
|
-
import { useContext } from "react";
|
|
18
|
+
import { useContext, useMemo } from "react";
|
|
19
19
|
import { clsx } from "@accelint/design-foundation/lib/utils";
|
|
20
|
-
import {
|
|
20
|
+
import { composeRenderProps } from "react-aria-components/composeRenderProps";
|
|
21
21
|
import { jsx } from "react/jsx-runtime";
|
|
22
|
+
import { TreeItem as TreeItem$1 } from "react-aria-components/Tree";
|
|
22
23
|
import styles from "./styles.module.css";
|
|
23
24
|
|
|
24
25
|
//#region src/components/tree/item.tsx
|
|
@@ -51,12 +52,18 @@ function TreeItem({ className, id, ...rest }) {
|
|
|
51
52
|
const { ancestors } = useContext(TreeItemContext);
|
|
52
53
|
const isViewable = visibilityComputedKeys?.has(id) || isStatic && ancestors.every((key) => visibleKeys?.has(key));
|
|
53
54
|
const isVisible = visibleKeys?.has(id);
|
|
55
|
+
const contextValue = useMemo(() => ({
|
|
56
|
+
isVisible,
|
|
57
|
+
isViewable,
|
|
58
|
+
ancestors: [...ancestors, id]
|
|
59
|
+
}), [
|
|
60
|
+
isVisible,
|
|
61
|
+
isViewable,
|
|
62
|
+
ancestors,
|
|
63
|
+
id
|
|
64
|
+
]);
|
|
54
65
|
return /* @__PURE__ */ jsx(TreeItemContext.Provider, {
|
|
55
|
-
value:
|
|
56
|
-
isVisible,
|
|
57
|
-
isViewable,
|
|
58
|
-
ancestors: [...ancestors, id]
|
|
59
|
-
},
|
|
66
|
+
value: contextValue,
|
|
60
67
|
children: /* @__PURE__ */ jsx(TreeItem$1, {
|
|
61
68
|
...rest,
|
|
62
69
|
id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","names":["AriaTreeItem","className"],"sources":["../../../src/components/tree/item.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport 'client-only';\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport { useContext } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"item.js","names":["AriaTreeItem","className"],"sources":["../../../src/components/tree/item.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport 'client-only';\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport { useContext, useMemo } from 'react';\nimport { composeRenderProps } from 'react-aria-components/composeRenderProps';\nimport { TreeItem as AriaTreeItem } from 'react-aria-components/Tree';\nimport { TreeContext, TreeItemContext } from './context';\nimport styles from './styles.module.css';\nimport type { TreeItemProps } from './types';\n\n/**\n * TreeItem - Individual node in the tree hierarchy\n *\n * @example\n * ```tsx\n * <Tree>\n * <TreeItem id=\"root\" textValue=\"Root\">\n * <TreeItemContent>\n * <TreeItemLabel>Root Node</TreeItemLabel>\n * </TreeItemContent>\n * <TreeItem id=\"child\" textValue=\"Child\">\n * <TreeItemContent>\n * <TreeItemLabel>Child Node</TreeItemLabel>\n * </TreeItemContent>\n * </TreeItem>\n * </TreeItem>\n * </Tree>\n * ```\n *\n * @param props - {@link TreeItemProps}\n * @param props.className - CSS class for the tree item.\n * @param props.id - Unique identifier for the tree item.\n * @returns The rendered TreeItem component.\n */\nexport function TreeItem({ className, id, ...rest }: TreeItemProps) {\n const { visibilityComputedKeys, visibleKeys, isStatic } =\n useContext(TreeContext);\n const { ancestors } = useContext(TreeItemContext);\n const isViewable =\n visibilityComputedKeys?.has(id) ||\n (isStatic && ancestors.every((key) => visibleKeys?.has(key)));\n const isVisible = visibleKeys?.has(id);\n\n const contextValue = useMemo(\n () => ({\n isVisible,\n isViewable,\n ancestors: [...ancestors, id],\n }),\n [isVisible, isViewable, ancestors, id],\n );\n\n return (\n <TreeItemContext.Provider value={contextValue}>\n <AriaTreeItem\n {...rest}\n id={id}\n className={composeRenderProps(className, (className) =>\n clsx('group/tree-item', styles.item, className),\n )}\n data-viewable={isViewable || null}\n data-visible={isVisible || null}\n />\n </TreeItemContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,SAAgB,SAAS,EAAE,WAAW,IAAI,GAAG,QAAuB;CAClE,MAAM,EAAE,wBAAwB,aAAa,aAC3C,WAAW,YAAY;CACzB,MAAM,EAAE,cAAc,WAAW,gBAAgB;CACjD,MAAM,aACJ,wBAAwB,IAAI,GAAG,IAC9B,YAAY,UAAU,OAAO,QAAQ,aAAa,IAAI,IAAI,CAAC;CAC9D,MAAM,YAAY,aAAa,IAAI,GAAG;CAEtC,MAAM,eAAe,eACZ;EACL;EACA;EACA,WAAW,CAAC,GAAG,WAAW,GAAG;EAC9B,GACD;EAAC;EAAW;EAAY;EAAW;EAAG,CACvC;AAED,QACE,oBAAC,gBAAgB;EAAS,OAAO;YAC/B,oBAACA;GACC,GAAI;GACA;GACJ,WAAW,mBAAmB,YAAY,gBACxC,KAAK,mBAAmB,OAAO,MAAMC,YAAU,CAChD;GACD,iBAAe,cAAc;GAC7B,gBAAc,aAAa;IAC3B;GACuB"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* governing permissions and limitations under the License.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import * as
|
|
13
|
+
import * as react53 from "react";
|
|
14
14
|
|
|
15
15
|
//#region src/components/tree/lines.d.ts
|
|
16
16
|
/**
|
|
@@ -22,7 +22,7 @@ import * as react44 from "react";
|
|
|
22
22
|
* @param props.ancestorLastOfSet - Array tracking which ancestors are last of set at each level.
|
|
23
23
|
* @returns An array of Line components representing the tree structure.
|
|
24
24
|
*/
|
|
25
|
-
declare const TreeLines:
|
|
25
|
+
declare const TreeLines: react53.NamedExoticComponent<{
|
|
26
26
|
level: number;
|
|
27
27
|
isLastOfSet: boolean;
|
|
28
28
|
ancestorLastOfSet: boolean[];
|
|
@@ -11,25 +11,28 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { DragAndDropConfig, TreeNode } from "../../hooks/use-tree/types.js";
|
|
14
|
-
import {
|
|
15
|
-
import { Key
|
|
14
|
+
import { TreeItemContentRenderProps as TreeItemContentRenderProps$1, TreeItemProps as TreeItemProps$1, TreeProps as TreeProps$1 } from "react-aria-components/Tree";
|
|
15
|
+
import { Key } from "@react-types/shared";
|
|
16
|
+
import { RenderProps } from "react-aria-components/useRenderProps";
|
|
16
17
|
|
|
17
18
|
//#region src/components/tree/types.d.ts
|
|
18
19
|
/** Visual density variant for Tree components. */
|
|
19
20
|
type TreeStyleVariant = 'cozy' | 'compact' | 'crammed';
|
|
20
21
|
/**
|
|
21
22
|
* Props for the Tree component.
|
|
23
|
+
*
|
|
24
|
+
* @template T - The type of custom values stored in tree nodes (accessed via `node.values`).
|
|
22
25
|
*/
|
|
23
26
|
type TreeProps<T> = Omit<TreeProps$1<TreeNode<T>>, 'defaultExpandedKeys' | 'defaultSelectedKeys' | 'disabledKeys' | 'expandedKeys' | 'selectedKeys' | 'onSelectionChange'> & {
|
|
24
|
-
disabledKeys?: Set<Key
|
|
27
|
+
disabledKeys?: Set<Key>;
|
|
25
28
|
dragAndDropConfig?: DragAndDropConfig;
|
|
26
|
-
expandedKeys?: Set<Key
|
|
27
|
-
selectedKeys?: Set<Key
|
|
28
|
-
visibleKeys?: Set<Key
|
|
29
|
+
expandedKeys?: Set<Key>;
|
|
30
|
+
selectedKeys?: Set<Key>;
|
|
31
|
+
visibleKeys?: Set<Key>;
|
|
29
32
|
showRuleLines?: boolean;
|
|
30
33
|
showVisibility?: boolean;
|
|
31
|
-
onVisibilityChange?: (keys: Set<Key
|
|
32
|
-
onSelectionChange?: (keys: Set<Key
|
|
34
|
+
onVisibilityChange?: (keys: Set<Key>) => void;
|
|
35
|
+
onSelectionChange?: (keys: Set<Key>) => void;
|
|
33
36
|
variant?: TreeStyleVariant;
|
|
34
37
|
};
|
|
35
38
|
/**
|
|
@@ -37,10 +40,14 @@ type TreeProps<T> = Omit<TreeProps$1<TreeNode<T>>, 'defaultExpandedKeys' | 'defa
|
|
|
37
40
|
*/
|
|
38
41
|
type TreeItemProps = Omit<TreeItemProps$1, 'id'> & {
|
|
39
42
|
/** Unique identifier for the tree item. */
|
|
40
|
-
id: Key
|
|
43
|
+
id: Key;
|
|
41
44
|
};
|
|
42
45
|
/**
|
|
43
46
|
* Props for the TreeItemContent component.
|
|
47
|
+
*
|
|
48
|
+
* The `children` prop accepts either a ReactNode or a render function
|
|
49
|
+
* receiving {@link TreeItemContentRenderProps} — use the render function form
|
|
50
|
+
* to access `isVisible`, `isViewable`, and `variant` from context.
|
|
44
51
|
*/
|
|
45
52
|
type TreeItemContentProps = Pick<RenderProps<TreeItemContentRenderProps>, 'children'>;
|
|
46
53
|
/**
|
|
@@ -58,12 +65,19 @@ type TreeItemContentRenderProps = TreeItemContentRenderProps$1 & {
|
|
|
58
65
|
* Context value for the Tree component.
|
|
59
66
|
*/
|
|
60
67
|
type TreeContextValue = Required<Pick<TreeProps<unknown>, 'showRuleLines' | 'showVisibility' | 'variant' | 'onVisibilityChange'>> & {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
/** Keys of items explicitly disabled. */
|
|
69
|
+
disabledKeys?: Set<Key>;
|
|
70
|
+
/** Keys of items currently expanded. */
|
|
71
|
+
expandedKeys?: Set<Key>;
|
|
72
|
+
/** Keys of items currently selected. */
|
|
73
|
+
selectedKeys?: Set<Key>;
|
|
74
|
+
/** Keys of items whose own `isVisible` flag is true. */
|
|
75
|
+
visibleKeys?: Set<Key>;
|
|
76
|
+
/** Keys of items that are visible after accounting for ancestor visibility. */
|
|
77
|
+
visibilityComputedKeys?: Set<Key>;
|
|
78
|
+
/** Keys of items in an indeterminate selection state (cascade mode only). */
|
|
79
|
+
indeterminateKeys?: Set<Key>;
|
|
80
|
+
/** Whether the tree uses a static (hard-coded) rather than dynamic (data-driven) collection. */
|
|
67
81
|
isStatic: boolean;
|
|
68
82
|
};
|
|
69
83
|
/**
|
|
@@ -75,7 +89,7 @@ type TreeItemContextValue = {
|
|
|
75
89
|
/** Whether the item is viewable based on ancestor visibility. */
|
|
76
90
|
isViewable?: boolean;
|
|
77
91
|
/** Array of ancestor item keys. */
|
|
78
|
-
ancestors: Key
|
|
92
|
+
ancestors: Key[];
|
|
79
93
|
};
|
|
80
94
|
//#endregion
|
|
81
95
|
export { TreeContextValue, TreeItemContentProps, TreeItemContentRenderProps, TreeItemContextValue, TreeItemProps, TreeProps, TreeStyleVariant };
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { VideoProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime237 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/video/index.d.ts
|
|
18
18
|
|
|
@@ -91,7 +91,7 @@ declare function Video({
|
|
|
91
91
|
noMutedPref,
|
|
92
92
|
lang,
|
|
93
93
|
...rest
|
|
94
|
-
}: VideoProps):
|
|
94
|
+
}: VideoProps): react_jsx_runtime237.JSX.Element;
|
|
95
95
|
//#endregion
|
|
96
96
|
export { Video };
|
|
97
97
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
|
|
13
13
|
import { ViewStackContextValue } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react52 from "react";
|
|
16
16
|
import { UniqueId } from "@accelint/core";
|
|
17
17
|
|
|
18
18
|
//#region src/components/view-stack/context.d.ts
|
|
19
19
|
/** Context for sharing state across ViewStack components */
|
|
20
|
-
declare const ViewStackContext:
|
|
20
|
+
declare const ViewStackContext: react52.Context<ViewStackContextValue>;
|
|
21
21
|
/** Event handlers for ViewStack events */
|
|
22
22
|
declare const ViewStackEventHandlers: {
|
|
23
23
|
readonly back: (stack: UniqueId) => void;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { ViewStackProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime209 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/view-stack/index.d.ts
|
|
18
18
|
|
|
@@ -47,7 +47,7 @@ declare function ViewStack({
|
|
|
47
47
|
children,
|
|
48
48
|
defaultView,
|
|
49
49
|
onChange
|
|
50
|
-
}: ViewStackProps):
|
|
50
|
+
}: ViewStackProps): react_jsx_runtime209.JSX.Element;
|
|
51
51
|
//#endregion
|
|
52
52
|
export { ViewStack };
|
|
53
53
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { ViewStackTriggerProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime211 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/view-stack/trigger.d.ts
|
|
18
18
|
|
|
@@ -45,7 +45,7 @@ import * as react_jsx_runtime234 from "react/jsx-runtime";
|
|
|
45
45
|
declare function ViewStackTrigger({
|
|
46
46
|
children,
|
|
47
47
|
for: types
|
|
48
|
-
}: ViewStackTriggerProps):
|
|
48
|
+
}: ViewStackTriggerProps): react_jsx_runtime211.JSX.Element;
|
|
49
49
|
//#endregion
|
|
50
50
|
export { ViewStackTrigger };
|
|
51
51
|
//# sourceMappingURL=trigger.d.ts.map
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
import { ViewStackContext, useViewStackEmit } from "./context.js";
|
|
17
17
|
import "client-only";
|
|
18
18
|
import { useContext } from "react";
|
|
19
|
-
import { Pressable } from "react-aria-components";
|
|
20
19
|
import { jsx } from "react/jsx-runtime";
|
|
21
20
|
import { isUUID } from "@accelint/core";
|
|
21
|
+
import { Pressable } from "react-aria-components/Pressable";
|
|
22
22
|
|
|
23
23
|
//#region src/components/view-stack/trigger.tsx
|
|
24
24
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.js","names":[],"sources":["../../../src/components/view-stack/trigger.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport 'client-only';\nimport { isUUID, type UniqueId } from '@accelint/core';\nimport { useContext } from 'react';\nimport { Pressable } from 'react-aria-components';\nimport { useViewStackEmit, ViewStackContext } from './context';\nimport type { ViewStackTriggerProps } from './types';\n\n/**\n * ViewStackTrigger - Pressable element that triggers ViewStack navigation actions\n *\n * @example\n * ```tsx\n * <ViewStack id=\"main-stack\">\n * <ViewStackView id=\"home\">\n * <h1>Home</h1>\n * <ViewStackTrigger for=\"settings-view-id\">\n * <Button>Go to Settings</Button>\n * </ViewStackTrigger>\n * </ViewStackView>\n * <ViewStackView id=\"settings-view-id\">\n * <h1>Settings</h1>\n * <ViewStackTrigger for=\"back:main-stack\">\n * <Button>Back</Button>\n * </ViewStackTrigger>\n * </ViewStackView>\n * </ViewStack>\n * ```\n *\n * @param props - {@link ViewStackTriggerProps}\n * @param props.children - Pressable children content.\n * @param props.for - Navigation action(s) to trigger on press.\n * @returns The rendered ViewStackTrigger component.\n */\nexport function ViewStackTrigger({\n children,\n for: types,\n}: ViewStackTriggerProps) {\n const { parent } = useContext(ViewStackContext);\n const viewStackEmit = useViewStackEmit();\n\n function handlePress() {\n for (const type of Array.isArray(types) ? types : [types]) {\n let [event, id] = (isUUID(type) ? ['push', type] : type.split(':')) as [\n 'back' | 'clear' | 'reset' | 'push',\n UniqueId | undefined | null,\n ];\n\n id ??= parent;\n\n if (!id) {\n continue;\n }\n\n viewStackEmit[event](id);\n }\n }\n\n return <Pressable onPress={handlePress}>{children}</Pressable>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,SAAgB,iBAAiB,EAC/B,UACA,KAAK,SACmB;CACxB,MAAM,EAAE,WAAW,WAAW,iBAAiB;CAC/C,MAAM,gBAAgB,kBAAkB;CAExC,SAAS,cAAc;AACrB,OAAK,MAAM,QAAQ,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;GACzD,IAAI,CAAC,OAAO,MAAO,OAAO,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,KAAK,MAAM,IAAI;AAKlE,UAAO;AAEP,OAAI,CAAC,GACH;AAGF,iBAAc,OAAO,GAAG;;;AAI5B,QAAO,oBAAC;EAAU,SAAS;EAAc;GAAqB"}
|
|
1
|
+
{"version":3,"file":"trigger.js","names":[],"sources":["../../../src/components/view-stack/trigger.tsx"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\n\nimport 'client-only';\nimport { isUUID, type UniqueId } from '@accelint/core';\nimport { useContext } from 'react';\nimport { Pressable } from 'react-aria-components/Pressable';\nimport { useViewStackEmit, ViewStackContext } from './context';\nimport type { ViewStackTriggerProps } from './types';\n\n/**\n * ViewStackTrigger - Pressable element that triggers ViewStack navigation actions\n *\n * @example\n * ```tsx\n * <ViewStack id=\"main-stack\">\n * <ViewStackView id=\"home\">\n * <h1>Home</h1>\n * <ViewStackTrigger for=\"settings-view-id\">\n * <Button>Go to Settings</Button>\n * </ViewStackTrigger>\n * </ViewStackView>\n * <ViewStackView id=\"settings-view-id\">\n * <h1>Settings</h1>\n * <ViewStackTrigger for=\"back:main-stack\">\n * <Button>Back</Button>\n * </ViewStackTrigger>\n * </ViewStackView>\n * </ViewStack>\n * ```\n *\n * @param props - {@link ViewStackTriggerProps}\n * @param props.children - Pressable children content.\n * @param props.for - Navigation action(s) to trigger on press.\n * @returns The rendered ViewStackTrigger component.\n */\nexport function ViewStackTrigger({\n children,\n for: types,\n}: ViewStackTriggerProps) {\n const { parent } = useContext(ViewStackContext);\n const viewStackEmit = useViewStackEmit();\n\n function handlePress() {\n for (const type of Array.isArray(types) ? types : [types]) {\n let [event, id] = (isUUID(type) ? ['push', type] : type.split(':')) as [\n 'back' | 'clear' | 'reset' | 'push',\n UniqueId | undefined | null,\n ];\n\n id ??= parent;\n\n if (!id) {\n continue;\n }\n\n viewStackEmit[event](id);\n }\n }\n\n return <Pressable onPress={handlePress}>{children}</Pressable>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,SAAgB,iBAAiB,EAC/B,UACA,KAAK,SACmB;CACxB,MAAM,EAAE,WAAW,WAAW,iBAAiB;CAC/C,MAAM,gBAAgB,kBAAkB;CAExC,SAAS,cAAc;AACrB,OAAK,MAAM,QAAQ,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;GACzD,IAAI,CAAC,OAAO,MAAO,OAAO,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,KAAK,MAAM,IAAI;AAKlE,UAAO;AAEP,OAAI,CAAC,GACH;AAGF,iBAAc,OAAO,GAAG;;;AAI5B,QAAO,oBAAC;EAAU,SAAS;EAAc;GAAqB"}
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
import { ViewStackEventTypes } from "./events.js";
|
|
14
14
|
import { ComponentProps, PropsWithChildren, RefAttributes } from "react";
|
|
15
|
-
import { Pressable } from "react-aria-components";
|
|
16
15
|
import { UniqueId } from "@accelint/core";
|
|
17
16
|
import { Payload } from "@accelint/bus";
|
|
17
|
+
import { Pressable } from "react-aria-components/Pressable";
|
|
18
18
|
|
|
19
19
|
//#region src/components/view-stack/types.d.ts
|
|
20
20
|
/**
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
import { ViewStackViewProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime212 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/view-stack/view.d.ts
|
|
18
18
|
|
|
@@ -43,7 +43,7 @@ import * as react_jsx_runtime191 from "react/jsx-runtime";
|
|
|
43
43
|
declare function ViewStackView({
|
|
44
44
|
id,
|
|
45
45
|
children
|
|
46
|
-
}: ViewStackViewProps):
|
|
46
|
+
}: ViewStackViewProps): react_jsx_runtime212.JSX.Element | null;
|
|
47
47
|
//#endregion
|
|
48
48
|
export { ViewStackView };
|
|
49
49
|
//# sourceMappingURL=view.d.ts.map
|
|
@@ -43,6 +43,8 @@ interface UseCoordinateFieldStateResult {
|
|
|
43
43
|
editableSegmentConfigs: SegmentConfig[];
|
|
44
44
|
/** Handle change of a single segment */
|
|
45
45
|
handleSegmentChange: (index: number, newValue: string) => void;
|
|
46
|
+
/** Handle blur event for a segment */
|
|
47
|
+
handleSegmentBlur: (index: number) => void;
|
|
46
48
|
/** Set all segment values at once */
|
|
47
49
|
setSegmentValues: (values: string[]) => void;
|
|
48
50
|
/** Set validation errors */
|
|
@@ -146,12 +146,14 @@ function useCoordinateFieldState({ value, defaultValue, format, onChange, onErro
|
|
|
146
146
|
};
|
|
147
147
|
const handleSegmentChange = (index, newValue) => {
|
|
148
148
|
const updatedValues = [...segmentValues];
|
|
149
|
-
updatedValues[index] = newValue;
|
|
149
|
+
if (format === "mgrs" && (index === 1 || index === 2) && /^[a-zA-Z]+$/.test(newValue)) updatedValues[index] = newValue.toUpperCase();
|
|
150
|
+
else updatedValues[index] = newValue;
|
|
150
151
|
setSegmentValues(updatedValues);
|
|
151
152
|
if (areAllSegmentsFilled(updatedValues)) {
|
|
152
153
|
clearValidationTimeout();
|
|
154
|
+
const capturedValues = [...updatedValues];
|
|
153
155
|
const timeoutId = setTimeout(() => {
|
|
154
|
-
validateAndUpdateCoordinate(
|
|
156
|
+
validateAndUpdateCoordinate(capturedValues);
|
|
155
157
|
validationTimeoutRef.current = null;
|
|
156
158
|
}, 400);
|
|
157
159
|
validationTimeoutRef.current = timeoutId;
|
|
@@ -162,6 +164,16 @@ function useCoordinateFieldState({ value, defaultValue, format, onChange, onErro
|
|
|
162
164
|
if (currentValue !== null) handleChange(null);
|
|
163
165
|
}
|
|
164
166
|
};
|
|
167
|
+
const handleSegmentBlur = (index) => {
|
|
168
|
+
if (format === "mgrs" && index === 0) {
|
|
169
|
+
const currentVal = segmentValues[0];
|
|
170
|
+
if (currentVal && currentVal.length === 1 && /^\d$/.test(currentVal)) {
|
|
171
|
+
const updatedValues = [...segmentValues];
|
|
172
|
+
updatedValues[0] = currentVal.padStart(2, "0");
|
|
173
|
+
setSegmentValues(updatedValues);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
};
|
|
165
177
|
const applyPastedCoordinate = (pastedValue) => {
|
|
166
178
|
clearValidationTimeout();
|
|
167
179
|
const segments = convertDDToDisplaySegments(pastedValue, format);
|
|
@@ -184,6 +196,7 @@ function useCoordinateFieldState({ value, defaultValue, format, onChange, onErro
|
|
|
184
196
|
segmentConfigs,
|
|
185
197
|
editableSegmentConfigs,
|
|
186
198
|
handleSegmentChange,
|
|
199
|
+
handleSegmentBlur,
|
|
187
200
|
setSegmentValues,
|
|
188
201
|
setValidationErrors,
|
|
189
202
|
effectiveErrorMessage: useMemo(() => validationErrors[0] || null, [validationErrors]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-coordinate-field-state.js","names":[],"sources":["../../../src/hooks/coordinate-field/use-coordinate-field-state.ts"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n areAllSegmentsFilled,\n convertDDToDisplaySegments,\n convertDisplaySegmentsToDD,\n validateCoordinateSegments,\n} from '../../components/coordinate-field/coordinate-utils';\nimport { getSegmentConfigs } from '../../components/coordinate-field/segment-configs';\nimport type {\n CoordinateSystem,\n CoordinateValue,\n SegmentConfig,\n} from '../../components/coordinate-field/types';\n\n/** Options for the useCoordinateFieldState hook */\nexport interface UseCoordinateFieldStateOptions {\n /** Controlled coordinate value */\n value?: CoordinateValue | null;\n /** Default value for uncontrolled mode */\n defaultValue?: CoordinateValue;\n /** Coordinate format system (dd, ddm, dms, mgrs, utm) */\n format: CoordinateSystem;\n /** Callback when coordinate value changes */\n onChange?:\n | Dispatch<SetStateAction<CoordinateValue | null>>\n | ((value: CoordinateValue | null) => void);\n /** Callback for validation errors */\n onError?: (message: string, context?: Record<string, unknown>) => void;\n /** Register timeouts for cleanup on unmount */\n registerTimeout?: (timeoutId: NodeJS.Timeout) => void;\n}\n\n/** Return value from the useCoordinateFieldState hook */\nexport interface UseCoordinateFieldStateResult {\n /** Current coordinate value (null if incomplete/invalid) */\n currentValue: CoordinateValue | null;\n /** Array of display values for each segment */\n segmentValues: string[];\n /** Array of validation error messages */\n validationErrors: string[];\n /** All segment configurations including literals */\n segmentConfigs: SegmentConfig[];\n /** Only editable segment configurations */\n editableSegmentConfigs: SegmentConfig[];\n /** Handle change of a single segment */\n handleSegmentChange: (index: number, newValue: string) => void;\n /** Set all segment values at once */\n setSegmentValues: (values: string[]) => void;\n /** Set validation errors */\n setValidationErrors: (errors: string[]) => void;\n /** First validation error or null */\n effectiveErrorMessage: string | null;\n /** Apply a pasted coordinate value */\n applyPastedCoordinate: (pastedValue: CoordinateValue) => void;\n /** Immediately run pending validation */\n flushPendingValidation: () => void;\n}\n\n/**\n * Manages coordinate segment values, validation, and format conversion\n *\n * @example\n * ```tsx\n * function CoordinateInputs() {\n * const [value, setValue] = useState<CoordinateValue | null>(null);\n * const { registerTimeout } = useTimeoutCleanup();\n *\n * const {\n * currentValue,\n * segmentValues,\n * validationErrors,\n * editableSegmentConfigs,\n * handleSegmentChange,\n * } = useCoordinateFieldState({\n * value,\n * format: 'ddm',\n * onChange: setValue,\n * onError: (msg) => console.error(msg),\n * registerTimeout,\n * });\n *\n * return (\n * <div>\n * {editableSegmentConfigs.map((config, i) => (\n * <input\n * key={i}\n * value={segmentValues[i]}\n * onChange={(e) => handleSegmentChange(i, e.target.value)}\n * placeholder={config.placeholder}\n * />\n * ))}\n * {validationErrors.map((error, i) => (\n * <span key={i}>{error}</span>\n * ))}\n * </div>\n * );\n * }\n * ```\n *\n * @param options - {@link UseCoordinateFieldStateOptions}\n * @param options.value - Controlled coordinate value.\n * @param options.defaultValue - Default value for uncontrolled mode.\n * @param options.format - Coordinate format system (dd, ddm, dms, mgrs, utm).\n * @param options.onChange - Callback when coordinate value changes.\n * @param options.onError - Callback for validation errors.\n * @param options.registerTimeout - Register timeouts for cleanup on unmount.\n * @returns {@link UseCoordinateFieldStateResult} Segment state, validation, and change handlers.\n */\nexport function useCoordinateFieldState({\n value,\n defaultValue,\n format,\n onChange,\n onError,\n registerTimeout,\n}: UseCoordinateFieldStateOptions): UseCoordinateFieldStateResult {\n const [internalValue, setInternalValue] = useState<CoordinateValue | null>(\n defaultValue || null,\n );\n const [validationErrors, setValidationErrors] = useState<string[]>([]);\n const validationTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const currentValue = value !== undefined ? value : internalValue;\n\n const clearValidationTimeout = () => {\n if (validationTimeoutRef.current) {\n clearTimeout(validationTimeoutRef.current);\n validationTimeoutRef.current = null;\n }\n };\n\n const handleChange = (newValue: CoordinateValue | null) => {\n if (value === undefined) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n const segmentConfigs = useMemo(() => getSegmentConfigs(format), [format]);\n\n const editableSegmentConfigs = useMemo(\n () => segmentConfigs.flat().filter((config) => config.type !== 'literal'),\n [segmentConfigs],\n );\n\n const [segmentValues, setSegmentValues] = useState<string[]>(() => {\n const initialValue = value !== undefined ? value : defaultValue;\n if (!initialValue) {\n return new Array(editableSegmentConfigs.length).fill('');\n }\n\n const segments = convertDDToDisplaySegments(initialValue, format);\n if (!segments) {\n return new Array(editableSegmentConfigs.length).fill('');\n }\n\n return segments;\n });\n\n const convertValueToSegmentsOrClear = useCallback(\n (valueToConvert: CoordinateValue | null) => {\n // Clear any pending validation when value changes\n clearValidationTimeout();\n\n const segments = valueToConvert\n ? convertDDToDisplaySegments(valueToConvert, format)\n : null;\n\n setSegmentValues(\n segments || new Array(editableSegmentConfigs.length).fill(''),\n );\n setValidationErrors([]);\n },\n [format, editableSegmentConfigs.length],\n );\n\n const prevFormatRef = useRef(format);\n\n useEffect(() => {\n if (prevFormatRef.current !== format) {\n prevFormatRef.current = format;\n const valueToConvert = value !== undefined ? value : internalValue;\n convertValueToSegmentsOrClear(valueToConvert);\n }\n }, [format, value, internalValue, convertValueToSegmentsOrClear]);\n\n useEffect(() => {\n if (value !== undefined) {\n convertValueToSegmentsOrClear(value);\n }\n }, [value, convertValueToSegmentsOrClear]);\n\n /**\n * Validates segment values and updates the coordinate state\n *\n * When validation fails, calls onError with \"Invalid coordinate value\" message\n * and context containing the detailed validation errors from @accelint/geo.\n *\n * @param updatedValues - Array of segment values to validate\n */\n const validateAndUpdateCoordinate = (updatedValues: string[]) => {\n const errors = validateCoordinateSegments(updatedValues, format);\n\n if (errors.length > 0) {\n setValidationErrors(errors);\n onError?.('Invalid coordinate value', {\n errors,\n format,\n segments: updatedValues,\n });\n handleChange(null);\n return;\n }\n\n const ddValue = convertDisplaySegmentsToDD(updatedValues, format);\n if (!ddValue) {\n const errorMsg = 'Invalid coordinate value';\n setValidationErrors([errorMsg]);\n onError?.(errorMsg, { format, segments: updatedValues });\n handleChange(null);\n return;\n }\n\n setValidationErrors([]);\n handleChange(ddValue);\n };\n\n const handleSegmentChange = (index: number, newValue: string) => {\n const updatedValues = [...segmentValues];\n updatedValues[index] = newValue;\n setSegmentValues(updatedValues);\n\n if (areAllSegmentsFilled(updatedValues)) {\n // Clear any pending validation timeout\n clearValidationTimeout();\n\n // Debounce validation by 400ms when all segments are full\n const timeoutId = setTimeout(() => {\n validateAndUpdateCoordinate(updatedValues);\n validationTimeoutRef.current = null;\n }, 400);\n\n validationTimeoutRef.current = timeoutId;\n registerTimeout?.(timeoutId);\n } else {\n // Clear any pending validation when segments become incomplete\n clearValidationTimeout();\n setValidationErrors([]);\n if (currentValue !== null) {\n handleChange(null);\n }\n }\n };\n\n const applyPastedCoordinate = (pastedValue: CoordinateValue) => {\n // Clear any pending validation when applying pasted coordinate\n clearValidationTimeout();\n\n const segments = convertDDToDisplaySegments(pastedValue, format);\n\n if (segments) {\n setSegmentValues(segments);\n setValidationErrors([]);\n handleChange(pastedValue);\n }\n };\n\n const flushPendingValidation = () => {\n if (validationTimeoutRef.current) {\n clearValidationTimeout();\n\n // Immediately validate if all segments are filled\n if (areAllSegmentsFilled(segmentValues)) {\n validateAndUpdateCoordinate(segmentValues);\n }\n }\n };\n\n const effectiveErrorMessage = useMemo(\n () => validationErrors[0] || null,\n [validationErrors],\n );\n\n return {\n currentValue,\n segmentValues,\n validationErrors,\n segmentConfigs,\n editableSegmentConfigs,\n handleSegmentChange,\n setSegmentValues,\n setValidationErrors,\n effectiveErrorMessage,\n applyPastedCoordinate,\n flushPendingValidation,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-coordinate-field-state.js","names":[],"sources":["../../../src/hooks/coordinate-field/use-coordinate-field-state.ts"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n areAllSegmentsFilled,\n convertDDToDisplaySegments,\n convertDisplaySegmentsToDD,\n validateCoordinateSegments,\n} from '../../components/coordinate-field/coordinate-utils';\nimport { getSegmentConfigs } from '../../components/coordinate-field/segment-configs';\nimport type {\n CoordinateSystem,\n CoordinateValue,\n SegmentConfig,\n} from '../../components/coordinate-field/types';\n\n/** Options for the useCoordinateFieldState hook */\nexport interface UseCoordinateFieldStateOptions {\n /** Controlled coordinate value */\n value?: CoordinateValue | null;\n /** Default value for uncontrolled mode */\n defaultValue?: CoordinateValue;\n /** Coordinate format system (dd, ddm, dms, mgrs, utm) */\n format: CoordinateSystem;\n /** Callback when coordinate value changes */\n onChange?:\n | Dispatch<SetStateAction<CoordinateValue | null>>\n | ((value: CoordinateValue | null) => void);\n /** Callback for validation errors */\n onError?: (message: string, context?: Record<string, unknown>) => void;\n /** Register timeouts for cleanup on unmount */\n registerTimeout?: (timeoutId: NodeJS.Timeout) => void;\n}\n\n/** Return value from the useCoordinateFieldState hook */\nexport interface UseCoordinateFieldStateResult {\n /** Current coordinate value (null if incomplete/invalid) */\n currentValue: CoordinateValue | null;\n /** Array of display values for each segment */\n segmentValues: string[];\n /** Array of validation error messages */\n validationErrors: string[];\n /** All segment configurations including literals */\n segmentConfigs: SegmentConfig[];\n /** Only editable segment configurations */\n editableSegmentConfigs: SegmentConfig[];\n /** Handle change of a single segment */\n handleSegmentChange: (index: number, newValue: string) => void;\n /** Handle blur event for a segment */\n handleSegmentBlur: (index: number) => void;\n /** Set all segment values at once */\n setSegmentValues: (values: string[]) => void;\n /** Set validation errors */\n setValidationErrors: (errors: string[]) => void;\n /** First validation error or null */\n effectiveErrorMessage: string | null;\n /** Apply a pasted coordinate value */\n applyPastedCoordinate: (pastedValue: CoordinateValue) => void;\n /** Immediately run pending validation */\n flushPendingValidation: () => void;\n}\n\n/**\n * Manages coordinate segment values, validation, and format conversion\n *\n * @example\n * ```tsx\n * function CoordinateInputs() {\n * const [value, setValue] = useState<CoordinateValue | null>(null);\n * const { registerTimeout } = useTimeoutCleanup();\n *\n * const {\n * currentValue,\n * segmentValues,\n * validationErrors,\n * editableSegmentConfigs,\n * handleSegmentChange,\n * } = useCoordinateFieldState({\n * value,\n * format: 'ddm',\n * onChange: setValue,\n * onError: (msg) => console.error(msg),\n * registerTimeout,\n * });\n *\n * return (\n * <div>\n * {editableSegmentConfigs.map((config, i) => (\n * <input\n * key={i}\n * value={segmentValues[i]}\n * onChange={(e) => handleSegmentChange(i, e.target.value)}\n * placeholder={config.placeholder}\n * />\n * ))}\n * {validationErrors.map((error, i) => (\n * <span key={i}>{error}</span>\n * ))}\n * </div>\n * );\n * }\n * ```\n *\n * @param options - {@link UseCoordinateFieldStateOptions}\n * @param options.value - Controlled coordinate value.\n * @param options.defaultValue - Default value for uncontrolled mode.\n * @param options.format - Coordinate format system (dd, ddm, dms, mgrs, utm).\n * @param options.onChange - Callback when coordinate value changes.\n * @param options.onError - Callback for validation errors.\n * @param options.registerTimeout - Register timeouts for cleanup on unmount.\n * @returns {@link UseCoordinateFieldStateResult} Segment state, validation, and change handlers.\n */\nexport function useCoordinateFieldState({\n value,\n defaultValue,\n format,\n onChange,\n onError,\n registerTimeout,\n}: UseCoordinateFieldStateOptions): UseCoordinateFieldStateResult {\n const [internalValue, setInternalValue] = useState<CoordinateValue | null>(\n defaultValue || null,\n );\n const [validationErrors, setValidationErrors] = useState<string[]>([]);\n const validationTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const currentValue = value !== undefined ? value : internalValue;\n\n const clearValidationTimeout = () => {\n if (validationTimeoutRef.current) {\n clearTimeout(validationTimeoutRef.current);\n validationTimeoutRef.current = null;\n }\n };\n\n const handleChange = (newValue: CoordinateValue | null) => {\n if (value === undefined) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n const segmentConfigs = useMemo(() => getSegmentConfigs(format), [format]);\n\n const editableSegmentConfigs = useMemo(\n () => segmentConfigs.flat().filter((config) => config.type !== 'literal'),\n [segmentConfigs],\n );\n\n const [segmentValues, setSegmentValues] = useState<string[]>(() => {\n const initialValue = value !== undefined ? value : defaultValue;\n if (!initialValue) {\n return new Array(editableSegmentConfigs.length).fill('');\n }\n\n const segments = convertDDToDisplaySegments(initialValue, format);\n if (!segments) {\n return new Array(editableSegmentConfigs.length).fill('');\n }\n\n return segments;\n });\n\n const convertValueToSegmentsOrClear = useCallback(\n (valueToConvert: CoordinateValue | null) => {\n // Clear any pending validation when value changes\n clearValidationTimeout();\n\n const segments = valueToConvert\n ? convertDDToDisplaySegments(valueToConvert, format)\n : null;\n\n setSegmentValues(\n segments || new Array(editableSegmentConfigs.length).fill(''),\n );\n setValidationErrors([]);\n },\n [format, editableSegmentConfigs.length],\n );\n\n const prevFormatRef = useRef(format);\n\n useEffect(() => {\n if (prevFormatRef.current !== format) {\n prevFormatRef.current = format;\n const valueToConvert = value !== undefined ? value : internalValue;\n convertValueToSegmentsOrClear(valueToConvert);\n }\n }, [format, value, internalValue, convertValueToSegmentsOrClear]);\n\n useEffect(() => {\n if (value !== undefined) {\n convertValueToSegmentsOrClear(value);\n }\n }, [value, convertValueToSegmentsOrClear]);\n\n /**\n * Validates segment values and updates the coordinate state\n *\n * When validation fails, calls onError with \"Invalid coordinate value\" message\n * and context containing the detailed validation errors from @accelint/geo.\n *\n * @param updatedValues - Array of segment values to validate\n */\n const validateAndUpdateCoordinate = (updatedValues: string[]) => {\n const errors = validateCoordinateSegments(updatedValues, format);\n\n if (errors.length > 0) {\n setValidationErrors(errors);\n onError?.('Invalid coordinate value', {\n errors,\n format,\n segments: updatedValues,\n });\n handleChange(null);\n return;\n }\n\n const ddValue = convertDisplaySegmentsToDD(updatedValues, format);\n if (!ddValue) {\n const errorMsg = 'Invalid coordinate value';\n setValidationErrors([errorMsg]);\n onError?.(errorMsg, { format, segments: updatedValues });\n handleChange(null);\n return;\n }\n\n setValidationErrors([]);\n handleChange(ddValue);\n };\n\n const handleSegmentChange = (index: number, newValue: string) => {\n const updatedValues = [...segmentValues];\n\n // Normalize MGRS letter inputs (Band/Grid): uppercase only\n if (\n format === 'mgrs' &&\n (index === 1 || index === 2) &&\n /^[a-zA-Z]+$/.test(newValue)\n ) {\n updatedValues[index] = newValue.toUpperCase();\n } else {\n updatedValues[index] = newValue;\n }\n\n setSegmentValues(updatedValues);\n\n if (areAllSegmentsFilled(updatedValues)) {\n // Clear any pending validation timeout\n clearValidationTimeout();\n\n // Capture segment values at timeout creation\n const capturedValues = [...updatedValues];\n\n // Debounce validation by 400ms when all segments are full\n const timeoutId = setTimeout(() => {\n validateAndUpdateCoordinate(capturedValues);\n validationTimeoutRef.current = null;\n }, 400);\n\n validationTimeoutRef.current = timeoutId;\n registerTimeout?.(timeoutId);\n } else {\n // Clear any pending validation when segments become incomplete\n clearValidationTimeout();\n setValidationErrors([]);\n if (currentValue !== null) {\n handleChange(null);\n }\n }\n };\n\n const handleSegmentBlur = (index: number) => {\n // MGRS zone field: add leading zero to single-digit values on blur\n if (format === 'mgrs' && index === 0) {\n const currentVal = segmentValues[0];\n if (currentVal && currentVal.length === 1 && /^\\d$/.test(currentVal)) {\n const updatedValues = [...segmentValues];\n updatedValues[0] = currentVal.padStart(2, '0');\n setSegmentValues(updatedValues);\n }\n }\n };\n\n const applyPastedCoordinate = (pastedValue: CoordinateValue) => {\n // Clear any pending validation when applying pasted coordinate\n clearValidationTimeout();\n\n const segments = convertDDToDisplaySegments(pastedValue, format);\n\n if (segments) {\n setSegmentValues(segments);\n setValidationErrors([]);\n handleChange(pastedValue);\n }\n };\n\n const flushPendingValidation = () => {\n if (validationTimeoutRef.current) {\n clearValidationTimeout();\n\n // Immediately validate if all segments are filled\n if (areAllSegmentsFilled(segmentValues)) {\n validateAndUpdateCoordinate(segmentValues);\n }\n }\n };\n\n const effectiveErrorMessage = useMemo(\n () => validationErrors[0] || null,\n [validationErrors],\n );\n\n return {\n currentValue,\n segmentValues,\n validationErrors,\n segmentConfigs,\n editableSegmentConfigs,\n handleSegmentChange,\n handleSegmentBlur,\n setSegmentValues,\n setValidationErrors,\n effectiveErrorMessage,\n applyPastedCoordinate,\n flushPendingValidation,\n };\n}\n"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ import { useCoordinateCopy } from "./use-coordinate-copy.js";
|
|
|
15
15
|
import { useCoordinateFieldState } from "./use-coordinate-field-state.js";
|
|
16
16
|
import { useCoordinateFocus } from "./use-coordinate-focus.js";
|
|
17
17
|
import { useCoordinatePaste } from "./use-coordinate-paste.js";
|
|
18
|
-
import { ValidationResult } from "react-aria-components";
|
|
18
|
+
import { ValidationResult } from "react-aria-components/TextField";
|
|
19
19
|
|
|
20
20
|
//#region src/hooks/coordinate-field/use-coordinate-field.d.ts
|
|
21
21
|
/** Return value from the useCoordinateField hook */
|
|
@@ -17,7 +17,7 @@ import { useCoordinateFocus } from "./use-coordinate-focus.js";
|
|
|
17
17
|
import { useCoordinatePaste } from "./use-coordinate-paste.js";
|
|
18
18
|
import { useTimeoutCleanup } from "./use-timeout-cleanup.js";
|
|
19
19
|
import { useMemo } from "react";
|
|
20
|
-
import { useId } from "
|
|
20
|
+
import { useId } from "react-aria/useId";
|
|
21
21
|
|
|
22
22
|
//#region src/hooks/coordinate-field/use-coordinate-field.ts
|
|
23
23
|
const FOCUS_DELAY_MS = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-coordinate-field.js","names":[],"sources":["../../../src/hooks/coordinate-field/use-coordinate-field.ts"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { useId } from '
|
|
1
|
+
{"version":3,"file":"use-coordinate-field.js","names":[],"sources":["../../../src/hooks/coordinate-field/use-coordinate-field.ts"],"sourcesContent":["/*\n * Copyright 2026 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { useId } from 'react-aria/useId';\nimport { useMemo } from 'react';\nimport { useCoordinateCopy } from './use-coordinate-copy';\nimport { useCoordinateFieldState } from './use-coordinate-field-state';\nimport { useCoordinateFocus } from './use-coordinate-focus';\nimport { useCoordinatePaste } from './use-coordinate-paste';\nimport { useTimeoutCleanup } from './use-timeout-cleanup';\nimport type { ValidationResult } from 'react-aria-components/TextField';\nimport type {\n CoordinateFieldProps,\n CoordinateSystem,\n CoordinateValue,\n} from '../../components/coordinate-field/types';\n\nconst FOCUS_DELAY_MS = 0;\n\n/** Return value from the useCoordinateField hook */\nexport interface UseCoordinateFieldResult {\n /** Coordinate state management utilities */\n state: ReturnType<typeof useCoordinateFieldState>;\n /** Focus management utilities */\n focus: ReturnType<typeof useCoordinateFocus>;\n /** Paste handling utilities */\n paste: ReturnType<typeof useCoordinatePaste>;\n /** Copy handling utilities */\n copy: ReturnType<typeof useCoordinateCopy>;\n /** Register timeouts for cleanup */\n registerTimeout: (timeoutId: NodeJS.Timeout) => void;\n /** ARIA props for the field container */\n fieldProps: {\n id: string;\n role: 'group';\n 'aria-labelledby': string | undefined;\n 'aria-describedby': string | undefined;\n 'aria-label': string | undefined;\n 'aria-details': string | undefined;\n 'aria-invalid': boolean | undefined;\n 'aria-required': boolean | undefined;\n 'aria-disabled': boolean | undefined;\n };\n /** Props for the label element */\n labelProps: {\n id: string;\n htmlFor: string;\n };\n /** Props for the description element */\n descriptionProps: {\n id: string;\n };\n /** Props for the error message element */\n errorProps: {\n id: string;\n };\n /** Validation result for react-aria */\n validation: ValidationResult;\n /** Generated element IDs */\n ids: {\n fieldId: string;\n labelId: string;\n descriptionId: string;\n errorId: string;\n };\n /** First error message or null */\n effectiveErrorMessage: string | null;\n /** Whether the field is in an invalid state */\n isInvalid: boolean;\n}\n\n/**\n * Manages coordinate field state, focus, copy, paste, and accessibility props\n *\n * @example\n * ```tsx\n * function CoordinateFieldComponent() {\n * const [value, setValue] = useState<CoordinateValue | null>(null);\n *\n * const {\n * state,\n * focus,\n * paste,\n * copy,\n * fieldProps,\n * labelProps,\n * isInvalid,\n * effectiveErrorMessage,\n * } = useCoordinateField({\n * value,\n * onChange: setValue,\n * format: 'dd',\n * label: 'Location',\n * });\n *\n * return (\n * <div {...fieldProps}>\n * <label {...labelProps}>Location</label>\n * {state.editableSegmentConfigs.map((config, index) => (\n * <input\n * key={index}\n * ref={focus.segmentRefs[index]}\n * value={state.segmentValues[index]}\n * onChange={(e) => state.handleSegmentChange(index, e.target.value)}\n * />\n * ))}\n * {isInvalid && <span>{effectiveErrorMessage}</span>}\n * </div>\n * );\n * }\n * ```\n *\n * @param props - {@link CoordinateFieldProps}\n * @param customAriaLabel - Custom aria-label for the field.\n * @param customAriaDescribedby - Custom aria-describedby IDs.\n * @param customAriaDetails - Custom aria-details ID.\n * @returns {@link UseCoordinateFieldResult} Combined state, focus, copy, paste utilities and accessibility props.\n */\nexport function useCoordinateField(\n props: CoordinateFieldProps,\n customAriaLabel?: string,\n customAriaDescribedby?: string,\n customAriaDetails?: string,\n): UseCoordinateFieldResult {\n const {\n description,\n errorMessage: errorMessageProp,\n format = 'dd' as CoordinateSystem,\n value,\n defaultValue,\n onChange,\n onError,\n isDisabled = false,\n isInvalid: isInvalidProp = false,\n isRequired = false,\n id: idProp,\n } = props;\n\n const fieldId = useId(idProp);\n const labelId = useId();\n const descriptionId = useId();\n const errorId = useId();\n\n const { registerTimeout } = useTimeoutCleanup();\n\n const state = useCoordinateFieldState({\n value,\n defaultValue,\n format,\n onChange,\n onError,\n registerTimeout,\n });\n\n const focus = useCoordinateFocus({\n editableSegmentConfigs: state.editableSegmentConfigs,\n });\n\n const handlePasteValueApplied = (pastedValue: CoordinateValue) => {\n state.applyPastedCoordinate(pastedValue);\n\n // Defer focus until after React commits state updates to the DOM.\n // applyPastedCoordinate triggers setSegmentValues which updates the input\n // elements, and we need those updates to complete before focusing.\n registerTimeout(\n setTimeout(() => {\n focus.focusFirstSegment();\n }, FOCUS_DELAY_MS),\n );\n };\n\n const paste = useCoordinatePaste({\n onValueApplied: handlePasteValueApplied,\n onError,\n });\n\n const copy = useCoordinateCopy({\n currentValue: state.currentValue,\n validationErrors: state.validationErrors,\n isDisabled,\n registerTimeout,\n });\n\n const effectiveErrorMessage = useMemo(\n () => errorMessageProp || state.effectiveErrorMessage,\n [errorMessageProp, state.effectiveErrorMessage],\n );\n\n const isInvalid = isInvalidProp || effectiveErrorMessage !== null;\n\n const describedByIds = [\n description && descriptionId,\n effectiveErrorMessage && errorId,\n customAriaDescribedby,\n ].filter(Boolean);\n const describedBy =\n describedByIds.length > 0 ? describedByIds.join(' ') : undefined;\n\n const labelProps = {\n id: labelId,\n htmlFor: fieldId,\n };\n\n // Only use aria-labelledby when we have a visible label (not using aria-label)\n // When aria-label is provided (e.g., in small size), it takes precedence\n const ariaLabelledBy = customAriaLabel ? undefined : labelId;\n\n const fieldProps = {\n id: fieldId,\n role: 'group' as const,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': describedBy,\n 'aria-label': customAriaLabel || undefined,\n 'aria-details': customAriaDetails || undefined,\n 'aria-invalid': isInvalid || undefined,\n 'aria-required': isRequired || undefined,\n 'aria-disabled': isDisabled || undefined,\n };\n\n const descriptionProps = {\n id: descriptionId,\n };\n\n const errorProps = {\n id: errorId,\n };\n\n const validation: ValidationResult = useMemo(\n () => ({\n isInvalid,\n validationErrors: effectiveErrorMessage ? [effectiveErrorMessage] : [],\n validationDetails: {} as ValidityState,\n }),\n [isInvalid, effectiveErrorMessage],\n );\n\n return {\n state,\n focus,\n paste,\n copy,\n registerTimeout,\n fieldProps,\n labelProps,\n descriptionProps,\n errorProps,\n validation,\n ids: {\n fieldId,\n labelId,\n descriptionId,\n errorId,\n },\n effectiveErrorMessage,\n isInvalid,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqGvB,SAAgB,mBACd,OACA,iBACA,uBACA,mBAC0B;CAC1B,MAAM,EACJ,aACA,cAAc,kBACd,SAAS,MACT,OACA,cACA,UACA,SACA,aAAa,OACb,WAAW,gBAAgB,OAC3B,aAAa,OACb,IAAI,WACF;CAEJ,MAAM,UAAU,MAAM,OAAO;CAC7B,MAAM,UAAU,OAAO;CACvB,MAAM,gBAAgB,OAAO;CAC7B,MAAM,UAAU,OAAO;CAEvB,MAAM,EAAE,oBAAoB,mBAAmB;CAE/C,MAAM,QAAQ,wBAAwB;EACpC;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,QAAQ,mBAAmB,EAC/B,wBAAwB,MAAM,wBAC/B,CAAC;CAEF,MAAM,2BAA2B,gBAAiC;AAChE,QAAM,sBAAsB,YAAY;AAKxC,kBACE,iBAAiB;AACf,SAAM,mBAAmB;KACxB,eAAe,CACnB;;CAGH,MAAM,QAAQ,mBAAmB;EAC/B,gBAAgB;EAChB;EACD,CAAC;CAEF,MAAM,OAAO,kBAAkB;EAC7B,cAAc,MAAM;EACpB,kBAAkB,MAAM;EACxB;EACA;EACD,CAAC;CAEF,MAAM,wBAAwB,cACtB,oBAAoB,MAAM,uBAChC,CAAC,kBAAkB,MAAM,sBAAsB,CAChD;CAED,MAAM,YAAY,iBAAiB,0BAA0B;CAE7D,MAAM,iBAAiB;EACrB,eAAe;EACf,yBAAyB;EACzB;EACD,CAAC,OAAO,QAAQ;CACjB,MAAM,cACJ,eAAe,SAAS,IAAI,eAAe,KAAK,IAAI,GAAG;CAEzD,MAAM,aAAa;EACjB,IAAI;EACJ,SAAS;EACV;CAID,MAAM,iBAAiB,kBAAkB,SAAY;AA+BrD,QAAO;EACL;EACA;EACA;EACA;EACA;EACA,YAnCiB;GACjB,IAAI;GACJ,MAAM;GACN,mBAAmB;GACnB,oBAAoB;GACpB,cAAc,mBAAmB;GACjC,gBAAgB,qBAAqB;GACrC,gBAAgB,aAAa;GAC7B,iBAAiB,cAAc;GAC/B,iBAAiB,cAAc;GAChC;EA0BC;EACA,kBAzBuB,EACvB,IAAI,eACL;EAwBC,YAtBiB,EACjB,IAAI,SACL;EAqBC,YAnBmC,eAC5B;GACL;GACA,kBAAkB,wBAAwB,CAAC,sBAAsB,GAAG,EAAE;GACtE,mBAAmB,EAAE;GACtB,GACD,CAAC,WAAW,sBAAsB,CACnC;EAaC,KAAK;GACH;GACA;GACA;GACA;GACD;EACD;EACA;EACD"}
|