@iris-ui-kit/react 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/LICENSE +21 -0
  2. package/dist/SidebarLayout-fWQRvK0a.d.cts +26 -0
  3. package/dist/SidebarLayout-fWQRvK0a.d.ts +26 -0
  4. package/dist/admin.cjs +1583 -0
  5. package/dist/admin.cjs.map +1 -0
  6. package/dist/admin.d.cts +183 -0
  7. package/dist/admin.d.ts +183 -0
  8. package/dist/admin.js +9 -0
  9. package/dist/admin.js.map +1 -0
  10. package/dist/async.cjs +97 -0
  11. package/dist/async.cjs.map +1 -0
  12. package/dist/async.d.cts +57 -0
  13. package/dist/async.d.ts +57 -0
  14. package/dist/async.js +5 -0
  15. package/dist/async.js.map +1 -0
  16. package/dist/behaviors.cjs +569 -0
  17. package/dist/behaviors.cjs.map +1 -0
  18. package/dist/behaviors.d.cts +188 -0
  19. package/dist/behaviors.d.ts +188 -0
  20. package/dist/behaviors.js +4 -0
  21. package/dist/behaviors.js.map +1 -0
  22. package/dist/chunk-2TQSTINK.js +541 -0
  23. package/dist/chunk-2TQSTINK.js.map +1 -0
  24. package/dist/chunk-53KFLVIZ.js +68 -0
  25. package/dist/chunk-53KFLVIZ.js.map +1 -0
  26. package/dist/chunk-6BMFMCMQ.js +140 -0
  27. package/dist/chunk-6BMFMCMQ.js.map +1 -0
  28. package/dist/chunk-AUA5GBT6.js +143 -0
  29. package/dist/chunk-AUA5GBT6.js.map +1 -0
  30. package/dist/chunk-DE6V6NOI.js +122 -0
  31. package/dist/chunk-DE6V6NOI.js.map +1 -0
  32. package/dist/chunk-HEJGN6UI.js +78 -0
  33. package/dist/chunk-HEJGN6UI.js.map +1 -0
  34. package/dist/chunk-IDD35UJ6.js +83 -0
  35. package/dist/chunk-IDD35UJ6.js.map +1 -0
  36. package/dist/chunk-J5FB2UB2.js +166 -0
  37. package/dist/chunk-J5FB2UB2.js.map +1 -0
  38. package/dist/chunk-OMOTUHYI.js +66 -0
  39. package/dist/chunk-OMOTUHYI.js.map +1 -0
  40. package/dist/chunk-RZNYIFV2.js +34 -0
  41. package/dist/chunk-RZNYIFV2.js.map +1 -0
  42. package/dist/chunk-SJO74IB3.js +54 -0
  43. package/dist/chunk-SJO74IB3.js.map +1 -0
  44. package/dist/chunk-SORLRLS4.js +53 -0
  45. package/dist/chunk-SORLRLS4.js.map +1 -0
  46. package/dist/chunk-TO7YVSAI.js +64 -0
  47. package/dist/chunk-TO7YVSAI.js.map +1 -0
  48. package/dist/chunk-TQ33XJIK.js +22 -0
  49. package/dist/chunk-TQ33XJIK.js.map +1 -0
  50. package/dist/chunk-UWUUEZCD.js +950 -0
  51. package/dist/chunk-UWUUEZCD.js.map +1 -0
  52. package/dist/chunk-VWCJJRSC.js +1200 -0
  53. package/dist/chunk-VWCJJRSC.js.map +1 -0
  54. package/dist/chunk-WIHBIDVJ.js +54 -0
  55. package/dist/chunk-WIHBIDVJ.js.map +1 -0
  56. package/dist/chunk-XCK4RIXB.js +66 -0
  57. package/dist/chunk-XCK4RIXB.js.map +1 -0
  58. package/dist/chunk-YAHXR2CJ.js +48 -0
  59. package/dist/chunk-YAHXR2CJ.js.map +1 -0
  60. package/dist/chunk-YXIO5THG.js +4 -0
  61. package/dist/chunk-YXIO5THG.js.map +1 -0
  62. package/dist/chunk-ZKBDUWUD.js +156 -0
  63. package/dist/chunk-ZKBDUWUD.js.map +1 -0
  64. package/dist/data.cjs +112 -0
  65. package/dist/data.cjs.map +1 -0
  66. package/dist/data.d.cts +53 -0
  67. package/dist/data.d.ts +53 -0
  68. package/dist/data.js +5 -0
  69. package/dist/data.js.map +1 -0
  70. package/dist/error-boundary.cjs +106 -0
  71. package/dist/error-boundary.cjs.map +1 -0
  72. package/dist/error-boundary.d.cts +41 -0
  73. package/dist/error-boundary.d.ts +41 -0
  74. package/dist/error-boundary.js +6 -0
  75. package/dist/error-boundary.js.map +1 -0
  76. package/dist/floating.cjs +163 -0
  77. package/dist/floating.cjs.map +1 -0
  78. package/dist/floating.d.cts +92 -0
  79. package/dist/floating.d.ts +92 -0
  80. package/dist/floating.js +5 -0
  81. package/dist/floating.js.map +1 -0
  82. package/dist/form.cjs +159 -0
  83. package/dist/form.cjs.map +1 -0
  84. package/dist/form.d.cts +120 -0
  85. package/dist/form.d.ts +120 -0
  86. package/dist/form.js +5 -0
  87. package/dist/form.js.map +1 -0
  88. package/dist/i18n.cjs +100 -0
  89. package/dist/i18n.cjs.map +1 -0
  90. package/dist/i18n.d.cts +50 -0
  91. package/dist/i18n.d.ts +50 -0
  92. package/dist/i18n.js +5 -0
  93. package/dist/i18n.js.map +1 -0
  94. package/dist/index.cjs +16635 -0
  95. package/dist/index.cjs.map +1 -0
  96. package/dist/index.d.cts +2964 -0
  97. package/dist/index.d.ts +2964 -0
  98. package/dist/index.js +12217 -0
  99. package/dist/index.js.map +1 -0
  100. package/dist/layouts.cjs +386 -0
  101. package/dist/layouts.cjs.map +1 -0
  102. package/dist/layouts.d.cts +92 -0
  103. package/dist/layouts.d.ts +92 -0
  104. package/dist/layouts.js +6 -0
  105. package/dist/layouts.js.map +1 -0
  106. package/dist/modal-utils.cjs +168 -0
  107. package/dist/modal-utils.cjs.map +1 -0
  108. package/dist/modal-utils.d.cts +43 -0
  109. package/dist/modal-utils.d.ts +43 -0
  110. package/dist/modal-utils.js +4 -0
  111. package/dist/modal-utils.js.map +1 -0
  112. package/dist/motion.cjs +104 -0
  113. package/dist/motion.cjs.map +1 -0
  114. package/dist/motion.d.cts +41 -0
  115. package/dist/motion.d.ts +41 -0
  116. package/dist/motion.js +4 -0
  117. package/dist/motion.js.map +1 -0
  118. package/dist/provider.cjs +191 -0
  119. package/dist/provider.cjs.map +1 -0
  120. package/dist/provider.d.cts +62 -0
  121. package/dist/provider.d.ts +62 -0
  122. package/dist/provider.js +8 -0
  123. package/dist/provider.js.map +1 -0
  124. package/dist/resource.cjs +61 -0
  125. package/dist/resource.cjs.map +1 -0
  126. package/dist/resource.d.cts +21 -0
  127. package/dist/resource.d.ts +21 -0
  128. package/dist/resource.js +5 -0
  129. package/dist/resource.js.map +1 -0
  130. package/dist/skeletons.cjs +1304 -0
  131. package/dist/skeletons.cjs.map +1 -0
  132. package/dist/skeletons.d.cts +70 -0
  133. package/dist/skeletons.d.ts +70 -0
  134. package/dist/skeletons.js +8 -0
  135. package/dist/skeletons.js.map +1 -0
  136. package/dist/skins.cjs +134 -0
  137. package/dist/skins.cjs.map +1 -0
  138. package/dist/skins.d.cts +45 -0
  139. package/dist/skins.d.ts +45 -0
  140. package/dist/skins.js +5 -0
  141. package/dist/skins.js.map +1 -0
  142. package/dist/theme.cjs +100 -0
  143. package/dist/theme.cjs.map +1 -0
  144. package/dist/theme.d.cts +71 -0
  145. package/dist/theme.d.ts +71 -0
  146. package/dist/theme.js +5 -0
  147. package/dist/theme.js.map +1 -0
  148. package/dist/undo.cjs +73 -0
  149. package/dist/undo.cjs.map +1 -0
  150. package/dist/undo.d.cts +47 -0
  151. package/dist/undo.d.ts +47 -0
  152. package/dist/undo.js +4 -0
  153. package/dist/undo.js.map +1 -0
  154. package/package.json +61 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/layouts/Stack.tsx","../src/layouts/Container.tsx","../src/layouts/DashboardGrid.tsx"],"names":["IrisStack","React2","IrisContainer","jsx"],"mappings":"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","file":"chunk-ZKBDUWUD.js","sourcesContent":["import * as React from 'react'\n\nexport type IrisStackDirection = 'row' | 'column'\nexport type IrisStackAlign = 'start' | 'center' | 'end' | 'stretch'\nexport type IrisStackJustify = 'start' | 'center' | 'end' | 'between' | 'around'\n\nconst ALIGN_MAP: Record<IrisStackAlign, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n}\n\nconst JUSTIFY_MAP: Record<IrisStackJustify, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n}\n\nfunction toCssSpacing(spacing: string | number): string {\n if (typeof spacing === 'number') return `${spacing}px`\n if (spacing === 'sm' || spacing === 'md' || spacing === 'lg') {\n return `var(--iris-gap-${spacing})`\n }\n return spacing\n}\n\nexport interface IrisStackProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: IrisStackDirection\n spacing?: string | number\n align?: IrisStackAlign\n justify?: IrisStackJustify\n wrap?: boolean\n /** When true, renders as `inline-flex`. */\n inline?: boolean\n}\n\n/**\n * Flex container with token-driven spacing. The lightest possible layout\n * primitive — saves hand-writing `display: flex` everywhere.\n */\nexport const IrisStack = React.forwardRef<HTMLDivElement, IrisStackProps>(function IrisStack(\n {\n direction = 'column',\n spacing = 'md',\n align = 'stretch',\n justify = 'start',\n wrap = false,\n inline = false,\n style,\n children,\n ...rest\n },\n ref,\n) {\n return (\n <div\n {...rest}\n ref={ref}\n data-iris-stack=\"\"\n data-iris-stack-direction={direction}\n style={{\n display: inline ? 'inline-flex' : 'flex',\n flexDirection: direction,\n gap: toCssSpacing(spacing),\n alignItems: ALIGN_MAP[align],\n justifyContent: JUSTIFY_MAP[justify],\n flexWrap: wrap ? 'wrap' : 'nowrap',\n ...style,\n }}\n >\n {children}\n </div>\n )\n})\n","import * as React from 'react'\n\nexport type IrisContainerMaxWidth = 'sm' | 'md' | 'lg' | 'xl' | 'full' | string\n\nconst WIDTH_MAP: Record<'sm' | 'md' | 'lg' | 'xl' | 'full', string> = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n full: '100%',\n}\n\nfunction resolveMaxWidth(input: IrisContainerMaxWidth): string {\n if (input === 'sm' || input === 'md' || input === 'lg' || input === 'xl' || input === 'full') {\n return WIDTH_MAP[input]\n }\n return input\n}\n\nfunction resolvePadding(input: string | number): string {\n if (typeof input === 'number') return `${input}px`\n if (input === 'sm' || input === 'md' || input === 'lg') {\n return `var(--iris-padding-${input})`\n }\n return input\n}\n\nexport interface IrisContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n maxWidth?: IrisContainerMaxWidth\n padding?: string | number\n center?: boolean\n}\n\n/**\n * Centered max-width wrapper. Use to bound content width on large screens\n * without rewriting flex/grid plumbing.\n */\nexport const IrisContainer = React.forwardRef<HTMLDivElement, IrisContainerProps>(\n function IrisContainer(\n { maxWidth = 'lg', padding = 'md', center = true, style, children, ...rest },\n ref,\n ) {\n return (\n <div\n {...rest}\n ref={ref}\n data-iris-container=\"\"\n data-iris-container-max-width={maxWidth}\n style={{\n width: '100%',\n maxWidth: resolveMaxWidth(maxWidth),\n padding: `0 ${resolvePadding(padding)}`,\n ...(center ? { marginInlineStart: 'auto', marginInlineEnd: 'auto' } : {}),\n ...style,\n }}\n >\n {children}\n </div>\n )\n },\n)\n","import * as React from 'react'\n\nexport interface IrisDashboardGridProps extends React.HTMLAttributes<HTMLDivElement> {\n columns?: number\n gap?: number | string\n /** Use `repeat(auto-fill, minmax(<minColWidth>, 1fr))` instead of fixed `columns`. */\n minColWidth?: number | string\n}\n\n/**\n * 12-column responsive grid for dashboard composition. Each child controls\n * its span via `gridColumn` style or by wrapping with `IrisDashboardCard`.\n */\nexport function IrisDashboardGrid({\n columns = 12,\n gap = 16,\n minColWidth,\n style,\n children,\n ...rest\n}: IrisDashboardGridProps): React.ReactElement {\n const gapCss = typeof gap === 'number' ? `${gap}px` : gap\n const gridTemplateColumns = minColWidth\n ? `repeat(auto-fill, minmax(${\n typeof minColWidth === 'number' ? `${minColWidth}px` : minColWidth\n }, 1fr))`\n : `repeat(${columns}, 1fr)`\n\n return (\n <div\n {...rest}\n data-iris-dashboard-grid=\"\"\n style={{\n display: 'grid',\n gap: gapCss,\n gridTemplateColumns,\n width: '100%',\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n\nexport interface IrisDashboardCardProps extends React.HTMLAttributes<HTMLDivElement> {\n colSpan?: number | 'full'\n rowSpan?: number\n /** Show the styled card surface (background + border). Default true. */\n surface?: boolean\n}\n\n/**\n * A single dashboard grid cell. `colSpan='full'` makes it fill the row.\n */\nexport function IrisDashboardCard({\n colSpan = 1,\n rowSpan = 1,\n surface = true,\n style,\n children,\n ...rest\n}: IrisDashboardCardProps): React.ReactElement {\n const gridColumn = colSpan === 'full' ? '1 / -1' : `span ${colSpan}`\n const gridRow = rowSpan > 1 ? `span ${rowSpan}` : undefined\n\n return (\n <div\n {...rest}\n data-iris-dashboard-card=\"\"\n style={{\n gridColumn,\n gridRow,\n background: surface ? 'var(--iris-surface)' : 'transparent',\n border: surface ? '1px solid var(--iris-border)' : 'none',\n borderRadius: 'var(--iris-radius-md, 6px)',\n padding: surface ? 'var(--iris-padding-lg, 20px)' : 0,\n minWidth: 0,\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n"]}
package/dist/data.cjs ADDED
@@ -0,0 +1,112 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ var React3 = require('react');
5
+ var core = require('@iris-ui-kit/core');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
26
+
27
+ // src/data/useDataSource.ts
28
+ function useStore(store) {
29
+ return React3.useSyncExternalStore(
30
+ store.subscribe,
31
+ store.getState,
32
+ store.getState
33
+ // SSR fallback — same as client snapshot in our case.
34
+ );
35
+ }
36
+
37
+ // src/data/useDataSource.ts
38
+ function useDataSource(config) {
39
+ const ref = React3__namespace.useRef(null);
40
+ if (ref.current === null) ref.current = core.createDataSource({ ...config, immediate: false });
41
+ const controller = ref.current;
42
+ const immediate = config.immediate !== false;
43
+ React3__namespace.useEffect(() => {
44
+ if (immediate) void controller.load();
45
+ return () => controller.destroy();
46
+ }, [controller, immediate]);
47
+ const state = useStore(controller.store);
48
+ return React3__namespace.useMemo(() => ({ ...controller, state }), [controller, state]);
49
+ }
50
+ function useGroupedView(config) {
51
+ const ref = React3__namespace.useRef(null);
52
+ if (ref.current === null) ref.current = core.createGroupedView(config);
53
+ const controller = ref.current;
54
+ const storeState = useStore(controller.store);
55
+ const state = storeState.state;
56
+ const setRows = React3__namespace.useCallback(
57
+ (rows, columns) => {
58
+ controller.setRows(rows, columns);
59
+ },
60
+ [controller]
61
+ );
62
+ const toggleGroup = React3__namespace.useCallback((key) => controller.toggleGroup(key), [controller]);
63
+ const expandGroup = React3__namespace.useCallback((key) => controller.expandGroup(key), [controller]);
64
+ const collapseGroup = React3__namespace.useCallback((key) => controller.collapseGroup(key), [controller]);
65
+ const expandAll = React3__namespace.useCallback(() => controller.expandAll(), [controller]);
66
+ const collapseAll = React3__namespace.useCallback(() => controller.collapseAll(), [controller]);
67
+ const setConfig = React3__namespace.useCallback(
68
+ (partial) => controller.setConfig(partial),
69
+ [controller]
70
+ );
71
+ return React3__namespace.useMemo(
72
+ () => ({
73
+ store: controller.store,
74
+ setRows,
75
+ toggleGroup,
76
+ expandGroup,
77
+ collapseGroup,
78
+ expandAll,
79
+ collapseAll,
80
+ state,
81
+ setConfig
82
+ }),
83
+ [
84
+ controller,
85
+ setRows,
86
+ toggleGroup,
87
+ expandGroup,
88
+ collapseGroup,
89
+ expandAll,
90
+ collapseAll,
91
+ state,
92
+ setConfig
93
+ ]
94
+ );
95
+ }
96
+
97
+ Object.defineProperty(exports, "createClientDataSource", {
98
+ enumerable: true,
99
+ get: function () { return core.createClientDataSource; }
100
+ });
101
+ Object.defineProperty(exports, "createDataSource", {
102
+ enumerable: true,
103
+ get: function () { return core.createDataSource; }
104
+ });
105
+ Object.defineProperty(exports, "createGroupedView", {
106
+ enumerable: true,
107
+ get: function () { return core.createGroupedView; }
108
+ });
109
+ exports.useDataSource = useDataSource;
110
+ exports.useGroupedView = useGroupedView;
111
+ //# sourceMappingURL=data.cjs.map
112
+ //# sourceMappingURL=data.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/useStore.ts","../src/data/useDataSource.ts","../src/data/useGroupedView.ts"],"names":["useSyncExternalStore","React2","createDataSource","React3","createGroupedView"],"mappings":"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","file":"data.cjs","sourcesContent":["import * as React from 'react'\nimport { useSyncExternalStore } from 'react'\nimport type { ReadonlyStore, Store } from '@iris-ui-kit/core'\n\n/**\n * Bridge a framework-agnostic `@iris-ui-kit/core` store into React reactivity.\n * Uses React 18's `useSyncExternalStore` — the contract is identical to the\n * one Vue uses via `ref + onMounted` and Solid uses via `createSignal`. The\n * **same** store can power Button, Popover, Dialog, etc. on any framework.\n */\nexport function useStore<T>(store: ReadonlyStore<T>): T {\n return useSyncExternalStore(\n store.subscribe,\n store.getState,\n store.getState, // SSR fallback — same as client snapshot in our case.\n )\n}\n\n/**\n * Subscribe to a DERIVED slice of a core store — the component re-renders only\n * when `selector(state)` changes per `isEqual` (default `Object.is`), not on\n * every store emission. Built on {@link Store.subscribeWith}. Inline closures\n * for `selector`/`isEqual` are fine (captured via refs; the subscription is not\n * re-created between renders).\n */\nexport function useStoreSelector<T, U>(\n store: Store<T>,\n selector: (state: T) => U,\n isEqual?: (a: U, b: U) => boolean,\n): U {\n const [slice, setSlice] = React.useState(() => selector(store.getState()))\n const selRef = React.useRef(selector)\n selRef.current = selector\n const eqRef = React.useRef(isEqual)\n eqRef.current = isEqual\n React.useEffect(() => {\n const read = (s: T): U => selRef.current(s)\n const eq = (a: U, b: U): boolean => (eqRef.current ?? Object.is)(a, b)\n // Re-sync in case the store moved between render and this effect.\n setSlice((prev) => {\n const next = read(store.getState())\n return eq(prev, next) ? prev : next\n })\n return store.subscribeWith(read, setSlice, eq)\n }, [store])\n return slice\n}\n","import * as React from 'react'\nimport {\n createDataSource,\n type DataSourceController,\n type DataSourceConfig,\n type DataSourceState,\n} from '@iris-ui-kit/core'\nimport { useStore } from '../useStore'\n\nexport interface UseDataSource<T> extends DataSourceController<T> {\n /**\n * The live data-source state: rows, total, page/pageSize, sort/multiSort,\n * filters/filterRules, loading/loadingMore, hasMore, selectedKeys, and the\n * per-row pendingRows/rowErrors.\n */\n state: DataSourceState<T>\n}\n\n/**\n * React bridge over the framework-agnostic {@link createDataSource} — the unified\n * data engine (paged/infinite + multi-sort + typed filters + selection +\n * per-row + optimistic mutate). Creates the controller once, subscribes to its\n * store, and returns the controller plus its live `state`. A thin bridge — all\n * logic lives in `@iris-ui-kit/core`.\n *\n * Constructed with `immediate: false` so no fetch fires during render; the\n * initial load is kicked from an effect and the controller is torn down on\n * unmount (aborting any in-flight request) so a late response never writes back.\n */\nexport function useDataSource<T>(config: DataSourceConfig<T>): UseDataSource<T> {\n const ref = React.useRef<DataSourceController<T> | null>(null)\n if (ref.current === null) ref.current = createDataSource({ ...config, immediate: false })\n const controller = ref.current\n const immediate = config.immediate !== false\n\n React.useEffect(() => {\n if (immediate) void controller.load()\n return () => controller.destroy()\n }, [controller, immediate])\n\n const state = useStore(controller.store)\n return React.useMemo(() => ({ ...controller, state }), [controller, state])\n}\n","import * as React from 'react'\nimport { createGroupedView, type GroupedViewConfig, type GroupedViewState } from '@iris-ui-kit/core'\nimport { useStore } from '../useStore'\n\nexport interface UseGroupedView<Row, K = string> {\n /** Subscribable store with the full grouped state. */\n store: ReturnType<typeof createGroupedView<Row, K>>['store']\n /** Set the source rows (re-computes groups and aggregates). */\n setRows: (\n rows: readonly Row[],\n columns?: readonly import('@iris-ui-kit/core').DataViewColumn<Row>[],\n ) => void\n /** Toggle a group's expanded state. */\n toggleGroup: (key: K) => void\n /** Expand a specific group. */\n expandGroup: (key: K) => void\n /** Collapse a specific group. */\n collapseGroup: (key: K) => void\n /** Expand all groups. */\n expandAll: () => void\n /** Collapse all groups. */\n collapseAll: () => void\n /** The live grouped-view state snapshot. */\n state: GroupedViewState<Row, K>\n /** Update config. */\n setConfig: (partial: Partial<GroupedViewConfig<Row, K>>) => void\n}\n\n/**\n * React bridge over the framework-agnostic {@link createGroupedView}.\n * Creates the controller once (ref), subscribes to its store, and returns\n * the controller plus its live `state`.\n */\nexport function useGroupedView<Row, K = string>(\n config: GroupedViewConfig<Row, K>,\n): UseGroupedView<Row, K> {\n const ref = React.useRef<ReturnType<typeof createGroupedView<Row, K>> | null>(null)\n if (ref.current === null) ref.current = createGroupedView<Row, K>(config)\n const controller = ref.current\n\n const storeState = useStore(controller.store)\n const state: GroupedViewState<Row, K> = storeState.state\n\n const setRows = React.useCallback(\n (\n rows: readonly Row[],\n columns?: readonly import('@iris-ui-kit/core').DataViewColumn<Row>[],\n ) => {\n controller.setRows(rows, columns)\n },\n [controller],\n )\n\n const toggleGroup = React.useCallback((key: K) => controller.toggleGroup(key), [controller])\n const expandGroup = React.useCallback((key: K) => controller.expandGroup(key), [controller])\n const collapseGroup = React.useCallback((key: K) => controller.collapseGroup(key), [controller])\n const expandAll = React.useCallback(() => controller.expandAll(), [controller])\n const collapseAll = React.useCallback(() => controller.collapseAll(), [controller])\n const setConfig = React.useCallback(\n (partial: Partial<GroupedViewConfig<Row, K>>) => controller.setConfig(partial),\n [controller],\n )\n\n return React.useMemo(\n () => ({\n store: controller.store,\n setRows,\n toggleGroup,\n expandGroup,\n collapseGroup,\n expandAll,\n collapseAll,\n state,\n setConfig,\n }),\n [\n controller,\n setRows,\n toggleGroup,\n expandGroup,\n collapseGroup,\n expandAll,\n collapseAll,\n state,\n setConfig,\n ],\n )\n}\n"]}
@@ -0,0 +1,53 @@
1
+ import * as _iris_ui_kit_core from '@iris-ui-kit/core';
2
+ import { DataSourceController, DataSourceState, DataSourceConfig, createGroupedView, GroupedViewState, GroupedViewConfig } from '@iris-ui-kit/core';
3
+ export { DataSourceConfig, DataSourceController, DataSourceMode, DataSourceMutateOptions, DataSourceQuery, DataSourceState, GroupedViewConfig, GroupedViewState, GroupedViewStore, RowMutateOptions, createClientDataSource, createDataSource, createGroupedView } from '@iris-ui-kit/core';
4
+
5
+ interface UseDataSource<T> extends DataSourceController<T> {
6
+ /**
7
+ * The live data-source state: rows, total, page/pageSize, sort/multiSort,
8
+ * filters/filterRules, loading/loadingMore, hasMore, selectedKeys, and the
9
+ * per-row pendingRows/rowErrors.
10
+ */
11
+ state: DataSourceState<T>;
12
+ }
13
+ /**
14
+ * React bridge over the framework-agnostic {@link createDataSource} — the unified
15
+ * data engine (paged/infinite + multi-sort + typed filters + selection +
16
+ * per-row + optimistic mutate). Creates the controller once, subscribes to its
17
+ * store, and returns the controller plus its live `state`. A thin bridge — all
18
+ * logic lives in `@iris-ui-kit/core`.
19
+ *
20
+ * Constructed with `immediate: false` so no fetch fires during render; the
21
+ * initial load is kicked from an effect and the controller is torn down on
22
+ * unmount (aborting any in-flight request) so a late response never writes back.
23
+ */
24
+ declare function useDataSource<T>(config: DataSourceConfig<T>): UseDataSource<T>;
25
+
26
+ interface UseGroupedView<Row, K = string> {
27
+ /** Subscribable store with the full grouped state. */
28
+ store: ReturnType<typeof createGroupedView<Row, K>>['store'];
29
+ /** Set the source rows (re-computes groups and aggregates). */
30
+ setRows: (rows: readonly Row[], columns?: readonly _iris_ui_kit_core.DataViewColumn<Row>[]) => void;
31
+ /** Toggle a group's expanded state. */
32
+ toggleGroup: (key: K) => void;
33
+ /** Expand a specific group. */
34
+ expandGroup: (key: K) => void;
35
+ /** Collapse a specific group. */
36
+ collapseGroup: (key: K) => void;
37
+ /** Expand all groups. */
38
+ expandAll: () => void;
39
+ /** Collapse all groups. */
40
+ collapseAll: () => void;
41
+ /** The live grouped-view state snapshot. */
42
+ state: GroupedViewState<Row, K>;
43
+ /** Update config. */
44
+ setConfig: (partial: Partial<GroupedViewConfig<Row, K>>) => void;
45
+ }
46
+ /**
47
+ * React bridge over the framework-agnostic {@link createGroupedView}.
48
+ * Creates the controller once (ref), subscribes to its store, and returns
49
+ * the controller plus its live `state`.
50
+ */
51
+ declare function useGroupedView<Row, K = string>(config: GroupedViewConfig<Row, K>): UseGroupedView<Row, K>;
52
+
53
+ export { type UseDataSource, type UseGroupedView, useDataSource, useGroupedView };
package/dist/data.d.ts ADDED
@@ -0,0 +1,53 @@
1
+ import * as _iris_ui_kit_core from '@iris-ui-kit/core';
2
+ import { DataSourceController, DataSourceState, DataSourceConfig, createGroupedView, GroupedViewState, GroupedViewConfig } from '@iris-ui-kit/core';
3
+ export { DataSourceConfig, DataSourceController, DataSourceMode, DataSourceMutateOptions, DataSourceQuery, DataSourceState, GroupedViewConfig, GroupedViewState, GroupedViewStore, RowMutateOptions, createClientDataSource, createDataSource, createGroupedView } from '@iris-ui-kit/core';
4
+
5
+ interface UseDataSource<T> extends DataSourceController<T> {
6
+ /**
7
+ * The live data-source state: rows, total, page/pageSize, sort/multiSort,
8
+ * filters/filterRules, loading/loadingMore, hasMore, selectedKeys, and the
9
+ * per-row pendingRows/rowErrors.
10
+ */
11
+ state: DataSourceState<T>;
12
+ }
13
+ /**
14
+ * React bridge over the framework-agnostic {@link createDataSource} — the unified
15
+ * data engine (paged/infinite + multi-sort + typed filters + selection +
16
+ * per-row + optimistic mutate). Creates the controller once, subscribes to its
17
+ * store, and returns the controller plus its live `state`. A thin bridge — all
18
+ * logic lives in `@iris-ui-kit/core`.
19
+ *
20
+ * Constructed with `immediate: false` so no fetch fires during render; the
21
+ * initial load is kicked from an effect and the controller is torn down on
22
+ * unmount (aborting any in-flight request) so a late response never writes back.
23
+ */
24
+ declare function useDataSource<T>(config: DataSourceConfig<T>): UseDataSource<T>;
25
+
26
+ interface UseGroupedView<Row, K = string> {
27
+ /** Subscribable store with the full grouped state. */
28
+ store: ReturnType<typeof createGroupedView<Row, K>>['store'];
29
+ /** Set the source rows (re-computes groups and aggregates). */
30
+ setRows: (rows: readonly Row[], columns?: readonly _iris_ui_kit_core.DataViewColumn<Row>[]) => void;
31
+ /** Toggle a group's expanded state. */
32
+ toggleGroup: (key: K) => void;
33
+ /** Expand a specific group. */
34
+ expandGroup: (key: K) => void;
35
+ /** Collapse a specific group. */
36
+ collapseGroup: (key: K) => void;
37
+ /** Expand all groups. */
38
+ expandAll: () => void;
39
+ /** Collapse all groups. */
40
+ collapseAll: () => void;
41
+ /** The live grouped-view state snapshot. */
42
+ state: GroupedViewState<Row, K>;
43
+ /** Update config. */
44
+ setConfig: (partial: Partial<GroupedViewConfig<Row, K>>) => void;
45
+ }
46
+ /**
47
+ * React bridge over the framework-agnostic {@link createGroupedView}.
48
+ * Creates the controller once (ref), subscribes to its store, and returns
49
+ * the controller plus its live `state`.
50
+ */
51
+ declare function useGroupedView<Row, K = string>(config: GroupedViewConfig<Row, K>): UseGroupedView<Row, K>;
52
+
53
+ export { type UseDataSource, type UseGroupedView, useDataSource, useGroupedView };
package/dist/data.js ADDED
@@ -0,0 +1,5 @@
1
+ 'use client'
2
+ export { createClientDataSource, createDataSource, createGroupedView, useDataSource, useGroupedView } from './chunk-53KFLVIZ.js';
3
+ import './chunk-RZNYIFV2.js';
4
+ //# sourceMappingURL=data.js.map
5
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":";","file":"data.js"}
@@ -0,0 +1,106 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+ var core = require('@iris-ui-kit/core');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n.default = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
+
28
+ // src/error-boundary/ErrorBoundary.tsx
29
+ var I18nContext = React__namespace.createContext(null);
30
+ function useStore(store) {
31
+ return React.useSyncExternalStore(
32
+ store.subscribe,
33
+ store.getState,
34
+ store.getState
35
+ // SSR fallback — same as client snapshot in our case.
36
+ );
37
+ }
38
+
39
+ // src/i18n/useI18n.ts
40
+ var fallbackI18n = null;
41
+ function getFallback() {
42
+ if (fallbackI18n === null) fallbackI18n = core.createI18n();
43
+ return fallbackI18n;
44
+ }
45
+ function useI18n() {
46
+ const ctx = React__namespace.useContext(I18nContext);
47
+ const i18n = ctx ?? getFallback();
48
+ const state = useStore(i18n.store);
49
+ return {
50
+ locale: state.locale,
51
+ t: i18n.t,
52
+ formatDate: i18n.formatDate,
53
+ formatNumber: i18n.formatNumber,
54
+ formatRelativeTime: i18n.formatRelativeTime,
55
+ setLocale: i18n.setLocale,
56
+ setMessages: i18n.setMessages
57
+ };
58
+ }
59
+ function DefaultErrorFallback({
60
+ error,
61
+ reset
62
+ }) {
63
+ const { t } = useI18n();
64
+ return /* @__PURE__ */ jsxRuntime.jsxs(
65
+ "div",
66
+ {
67
+ "data-iris-error-boundary": "",
68
+ role: "alert",
69
+ style: {
70
+ padding: 16,
71
+ border: "1px solid var(--iris-danger)",
72
+ borderRadius: "var(--iris-radius-md, 6px)",
73
+ color: "var(--iris-danger)"
74
+ },
75
+ children: [
76
+ /* @__PURE__ */ jsxRuntime.jsx("div", { "data-iris-error-boundary-message": "", children: error.message || t("errorBoundary.message") }),
77
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", "data-iris-error-boundary-retry": "", onClick: reset, children: t("errorBoundary.retry") })
78
+ ]
79
+ }
80
+ );
81
+ }
82
+ var IrisErrorBoundary = class extends React__namespace.Component {
83
+ state = { error: null };
84
+ static getDerivedStateFromError(error) {
85
+ return { error };
86
+ }
87
+ componentDidCatch(error, info) {
88
+ this.props.onError?.(error, info);
89
+ }
90
+ reset = () => {
91
+ this.setState({ error: null });
92
+ };
93
+ render() {
94
+ const { error } = this.state;
95
+ if (error !== null) {
96
+ const { fallback } = this.props;
97
+ if (fallback) return fallback({ error, reset: this.reset });
98
+ return /* @__PURE__ */ jsxRuntime.jsx(DefaultErrorFallback, { error, reset: this.reset });
99
+ }
100
+ return this.props.children;
101
+ }
102
+ };
103
+
104
+ exports.IrisErrorBoundary = IrisErrorBoundary;
105
+ //# sourceMappingURL=error-boundary.cjs.map
106
+ //# sourceMappingURL=error-boundary.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i18n/context.ts","../src/useStore.ts","../src/i18n/useI18n.ts","../src/error-boundary/ErrorBoundary.tsx"],"names":["React","useSyncExternalStore","createI18n","React3","jsxs","jsx","React4"],"mappings":"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","file":"error-boundary.cjs","sourcesContent":["import * as React from 'react'\nimport type { I18n } from '@iris-ui-kit/core'\n\n/** Carries the active {@link I18n} instance to descendants via `useI18n`. */\nexport const I18nContext = React.createContext<I18n | null>(null)\n","import * as React from 'react'\nimport { useSyncExternalStore } from 'react'\nimport type { ReadonlyStore, Store } from '@iris-ui-kit/core'\n\n/**\n * Bridge a framework-agnostic `@iris-ui-kit/core` store into React reactivity.\n * Uses React 18's `useSyncExternalStore` — the contract is identical to the\n * one Vue uses via `ref + onMounted` and Solid uses via `createSignal`. The\n * **same** store can power Button, Popover, Dialog, etc. on any framework.\n */\nexport function useStore<T>(store: ReadonlyStore<T>): T {\n return useSyncExternalStore(\n store.subscribe,\n store.getState,\n store.getState, // SSR fallback — same as client snapshot in our case.\n )\n}\n\n/**\n * Subscribe to a DERIVED slice of a core store — the component re-renders only\n * when `selector(state)` changes per `isEqual` (default `Object.is`), not on\n * every store emission. Built on {@link Store.subscribeWith}. Inline closures\n * for `selector`/`isEqual` are fine (captured via refs; the subscription is not\n * re-created between renders).\n */\nexport function useStoreSelector<T, U>(\n store: Store<T>,\n selector: (state: T) => U,\n isEqual?: (a: U, b: U) => boolean,\n): U {\n const [slice, setSlice] = React.useState(() => selector(store.getState()))\n const selRef = React.useRef(selector)\n selRef.current = selector\n const eqRef = React.useRef(isEqual)\n eqRef.current = isEqual\n React.useEffect(() => {\n const read = (s: T): U => selRef.current(s)\n const eq = (a: U, b: U): boolean => (eqRef.current ?? Object.is)(a, b)\n // Re-sync in case the store moved between render and this effect.\n setSlice((prev) => {\n const next = read(store.getState())\n return eq(prev, next) ? prev : next\n })\n return store.subscribeWith(read, setSlice, eq)\n }, [store])\n return slice\n}\n","import * as React from 'react'\nimport { createI18n, type I18n } from '@iris-ui-kit/core'\nimport { useStore } from '../useStore'\nimport { I18nContext } from './context'\n\nexport interface UseI18nReturn {\n locale: string\n t: I18n['t']\n formatDate: I18n['formatDate']\n formatNumber: I18n['formatNumber']\n formatRelativeTime: I18n['formatRelativeTime']\n setLocale: I18n['setLocale']\n setMessages: I18n['setMessages']\n}\n\n// Shared fallback so components can call `useI18n()` without an enclosing\n// provider — they get English defaults rather than throwing.\nlet fallbackI18n: I18n | null = null\nfunction getFallback(): I18n {\n if (fallbackI18n === null) fallbackI18n = createI18n()\n return fallbackI18n\n}\n\n/**\n * Reactive access to the active locale + translation/formatting helpers.\n * Re-renders the host when the locale or messages change. Works with or\n * without an `<IrisI18nProvider>` (falls back to English defaults).\n */\nexport function useI18n(): UseI18nReturn {\n const ctx = React.useContext(I18nContext)\n const i18n = ctx ?? getFallback()\n const state = useStore(i18n.store)\n\n return {\n locale: state.locale,\n t: i18n.t,\n formatDate: i18n.formatDate,\n formatNumber: i18n.formatNumber,\n formatRelativeTime: i18n.formatRelativeTime,\n setLocale: i18n.setLocale,\n setMessages: i18n.setMessages,\n }\n}\n","import * as React from 'react'\nimport { useI18n } from '../i18n'\n\nexport interface IrisErrorBoundaryFallbackProps {\n /** The caught error. */\n error: Error\n /** Clears the error and re-attempts rendering the children. */\n reset: () => void\n}\n\nexport interface IrisErrorBoundaryProps {\n /** The guarded subtree. */\n children?: React.ReactNode\n /**\n * Custom fallback UI. Receives `{ error, reset }`. When omitted, the\n * default themed, accessible fallback is rendered.\n */\n fallback?: (props: IrisErrorBoundaryFallbackProps) => React.ReactNode\n /** Invoked with the caught error (and React error info) for logging. */\n onError?: (error: Error, info: React.ErrorInfo) => void\n}\n\ninterface IrisErrorBoundaryState {\n error: Error | null\n}\n\n/**\n * Default themed, accessible fallback. A function sub-component so it can call\n * `useI18n()` — the class boundary can't use hooks. Falls back to English\n * without a provider.\n */\nfunction DefaultErrorFallback({\n error,\n reset,\n}: IrisErrorBoundaryFallbackProps): React.ReactElement {\n const { t } = useI18n()\n return (\n <div\n data-iris-error-boundary=\"\"\n role=\"alert\"\n style={{\n padding: 16,\n border: '1px solid var(--iris-danger)',\n borderRadius: 'var(--iris-radius-md, 6px)',\n color: 'var(--iris-danger)',\n }}\n >\n <div data-iris-error-boundary-message=\"\">{error.message || t('errorBoundary.message')}</div>\n <button type=\"button\" data-iris-error-boundary-retry=\"\" onClick={reset}>\n {t('errorBoundary.retry')}\n </button>\n </div>\n )\n}\n\n/**\n * Catches errors thrown while rendering its subtree and switches to a fallback\n * UI instead of crashing the whole React tree. Exposes `reset()` (passed to the\n * fallback) that clears the error and re-attempts rendering the children.\n *\n * Standalone component — it does NOT wrap `IrisProvider`'s children, so error\n * semantics for existing consumers are unchanged.\n *\n * React port of {@link import('@iris-ui-kit/vue').IrisErrorBoundary}.\n */\nexport class IrisErrorBoundary extends React.Component<\n IrisErrorBoundaryProps,\n IrisErrorBoundaryState\n> {\n override state: IrisErrorBoundaryState = { error: null }\n\n static getDerivedStateFromError(error: Error): IrisErrorBoundaryState {\n return { error }\n }\n\n override componentDidCatch(error: Error, info: React.ErrorInfo): void {\n this.props.onError?.(error, info)\n }\n\n reset = (): void => {\n this.setState({ error: null })\n }\n\n override render(): React.ReactNode {\n const { error } = this.state\n if (error !== null) {\n const { fallback } = this.props\n if (fallback) return fallback({ error, reset: this.reset })\n return <DefaultErrorFallback error={error} reset={this.reset} />\n }\n return this.props.children\n }\n}\n"]}
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+
3
+ interface IrisErrorBoundaryFallbackProps {
4
+ /** The caught error. */
5
+ error: Error;
6
+ /** Clears the error and re-attempts rendering the children. */
7
+ reset: () => void;
8
+ }
9
+ interface IrisErrorBoundaryProps {
10
+ /** The guarded subtree. */
11
+ children?: React.ReactNode;
12
+ /**
13
+ * Custom fallback UI. Receives `{ error, reset }`. When omitted, the
14
+ * default themed, accessible fallback is rendered.
15
+ */
16
+ fallback?: (props: IrisErrorBoundaryFallbackProps) => React.ReactNode;
17
+ /** Invoked with the caught error (and React error info) for logging. */
18
+ onError?: (error: Error, info: React.ErrorInfo) => void;
19
+ }
20
+ interface IrisErrorBoundaryState {
21
+ error: Error | null;
22
+ }
23
+ /**
24
+ * Catches errors thrown while rendering its subtree and switches to a fallback
25
+ * UI instead of crashing the whole React tree. Exposes `reset()` (passed to the
26
+ * fallback) that clears the error and re-attempts rendering the children.
27
+ *
28
+ * Standalone component — it does NOT wrap `IrisProvider`'s children, so error
29
+ * semantics for existing consumers are unchanged.
30
+ *
31
+ * React port of {@link import('@iris-ui-kit/vue').IrisErrorBoundary}.
32
+ */
33
+ declare class IrisErrorBoundary extends React.Component<IrisErrorBoundaryProps, IrisErrorBoundaryState> {
34
+ state: IrisErrorBoundaryState;
35
+ static getDerivedStateFromError(error: Error): IrisErrorBoundaryState;
36
+ componentDidCatch(error: Error, info: React.ErrorInfo): void;
37
+ reset: () => void;
38
+ render(): React.ReactNode;
39
+ }
40
+
41
+ export { IrisErrorBoundary, type IrisErrorBoundaryFallbackProps, type IrisErrorBoundaryProps };
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+
3
+ interface IrisErrorBoundaryFallbackProps {
4
+ /** The caught error. */
5
+ error: Error;
6
+ /** Clears the error and re-attempts rendering the children. */
7
+ reset: () => void;
8
+ }
9
+ interface IrisErrorBoundaryProps {
10
+ /** The guarded subtree. */
11
+ children?: React.ReactNode;
12
+ /**
13
+ * Custom fallback UI. Receives `{ error, reset }`. When omitted, the
14
+ * default themed, accessible fallback is rendered.
15
+ */
16
+ fallback?: (props: IrisErrorBoundaryFallbackProps) => React.ReactNode;
17
+ /** Invoked with the caught error (and React error info) for logging. */
18
+ onError?: (error: Error, info: React.ErrorInfo) => void;
19
+ }
20
+ interface IrisErrorBoundaryState {
21
+ error: Error | null;
22
+ }
23
+ /**
24
+ * Catches errors thrown while rendering its subtree and switches to a fallback
25
+ * UI instead of crashing the whole React tree. Exposes `reset()` (passed to the
26
+ * fallback) that clears the error and re-attempts rendering the children.
27
+ *
28
+ * Standalone component — it does NOT wrap `IrisProvider`'s children, so error
29
+ * semantics for existing consumers are unchanged.
30
+ *
31
+ * React port of {@link import('@iris-ui-kit/vue').IrisErrorBoundary}.
32
+ */
33
+ declare class IrisErrorBoundary extends React.Component<IrisErrorBoundaryProps, IrisErrorBoundaryState> {
34
+ state: IrisErrorBoundaryState;
35
+ static getDerivedStateFromError(error: Error): IrisErrorBoundaryState;
36
+ componentDidCatch(error: Error, info: React.ErrorInfo): void;
37
+ reset: () => void;
38
+ render(): React.ReactNode;
39
+ }
40
+
41
+ export { IrisErrorBoundary, type IrisErrorBoundaryFallbackProps, type IrisErrorBoundaryProps };
@@ -0,0 +1,6 @@
1
+ 'use client'
2
+ export { IrisErrorBoundary } from './chunk-SORLRLS4.js';
3
+ import './chunk-OMOTUHYI.js';
4
+ import './chunk-RZNYIFV2.js';
5
+ //# sourceMappingURL=error-boundary.js.map
6
+ //# sourceMappingURL=error-boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":";","file":"error-boundary.js"}
@@ -0,0 +1,163 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+ var dom = require('@floating-ui/dom');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
26
+
27
+ // src/floating/useFloating.ts
28
+ function useFloating(options) {
29
+ const {
30
+ anchor,
31
+ floating,
32
+ open,
33
+ placement = "bottom",
34
+ strategy = "absolute",
35
+ offset,
36
+ flip = true,
37
+ shift = true,
38
+ size = false,
39
+ middleware: extraMiddleware,
40
+ arrow
41
+ } = options;
42
+ const [x, setX] = React__namespace.useState(0);
43
+ const [y, setY] = React__namespace.useState(0);
44
+ const [finalPlacement, setFinalPlacement] = React__namespace.useState(placement);
45
+ const [arrowX, setArrowX] = React__namespace.useState();
46
+ const [arrowY, setArrowY] = React__namespace.useState();
47
+ const middleware = React__namespace.useMemo(() => {
48
+ const mw = [];
49
+ if (offset !== void 0) mw.push(dom.offset(offset));
50
+ if (flip) mw.push(dom.flip());
51
+ if (shift) mw.push(dom.shift({ padding: 8 }));
52
+ if (size) {
53
+ const padding = typeof size === "number" ? size : 8;
54
+ mw.push(
55
+ dom.size({
56
+ padding,
57
+ apply({ availableWidth, availableHeight, elements }) {
58
+ Object.assign(elements.floating.style, {
59
+ maxWidth: `${Math.max(0, Math.floor(availableWidth))}px`,
60
+ maxHeight: `${Math.max(0, Math.floor(availableHeight))}px`
61
+ });
62
+ }
63
+ })
64
+ );
65
+ }
66
+ if (arrow?.current) mw.push(dom.arrow({ element: arrow.current }));
67
+ if (extraMiddleware) mw.push(...extraMiddleware);
68
+ return mw;
69
+ }, [offset, flip, shift, size, extraMiddleware, arrow]);
70
+ const middlewareRef = React__namespace.useRef(middleware);
71
+ middlewareRef.current = middleware;
72
+ const epochRef = React__namespace.useRef(0);
73
+ const update = React__namespace.useCallback(async () => {
74
+ const a = anchor.current;
75
+ const f = floating.current;
76
+ if (!a || !f) return;
77
+ const token = ++epochRef.current;
78
+ const result = await dom.computePosition(a, f, {
79
+ placement,
80
+ strategy,
81
+ middleware: middlewareRef.current
82
+ });
83
+ if (token !== epochRef.current) return;
84
+ setX(result.x);
85
+ setY(result.y);
86
+ setFinalPlacement(result.placement);
87
+ const arrowData = result.middlewareData.arrow;
88
+ setArrowX(arrowData?.x);
89
+ setArrowY(arrowData?.y);
90
+ }, [anchor, floating, placement, strategy]);
91
+ React__namespace.useEffect(() => {
92
+ if (!open) return;
93
+ const a = anchor.current;
94
+ const f = floating.current;
95
+ if (!a || !f) return;
96
+ const cleanup = dom.autoUpdate(a, f, () => {
97
+ void update();
98
+ });
99
+ return () => {
100
+ epochRef.current++;
101
+ cleanup();
102
+ };
103
+ }, [open, anchor, floating, update]);
104
+ const floatingStyles = React__namespace.useMemo(
105
+ () => ({
106
+ position: strategy,
107
+ top: 0,
108
+ left: 0,
109
+ transform: `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`,
110
+ width: "max-content"
111
+ }),
112
+ [strategy, x, y]
113
+ );
114
+ const OPPOSITE = {
115
+ top: "bottom",
116
+ bottom: "top",
117
+ left: "right",
118
+ right: "left"
119
+ };
120
+ const arrowSide = OPPOSITE[finalPlacement.split("-")[0]];
121
+ return { x, y, strategy, finalPlacement, floatingStyles, update, arrowX, arrowY, arrowSide };
122
+ }
123
+ function useDismiss(options) {
124
+ const { enabled, escape = true, outsidePointerDown = true } = options;
125
+ const onDismissRef = React__namespace.useRef(options.onDismiss);
126
+ const excludeRef = React__namespace.useRef(options.exclude);
127
+ React__namespace.useEffect(() => {
128
+ onDismissRef.current = options.onDismiss;
129
+ excludeRef.current = options.exclude;
130
+ });
131
+ React__namespace.useEffect(() => {
132
+ if (!enabled || typeof document === "undefined") return;
133
+ const isExcluded = (target) => {
134
+ if (!target || !(target instanceof Node)) return false;
135
+ for (const r of excludeRef.current) {
136
+ const el = r.current;
137
+ if (el && (el === target || el.contains(target))) return true;
138
+ }
139
+ return false;
140
+ };
141
+ const onPointerDown = (event) => {
142
+ if (isExcluded(event.target)) return;
143
+ onDismissRef.current();
144
+ };
145
+ const onKeyDown = (event) => {
146
+ if (event.key === "Escape") {
147
+ event.stopPropagation();
148
+ onDismissRef.current();
149
+ }
150
+ };
151
+ if (outsidePointerDown) document.addEventListener("pointerdown", onPointerDown, true);
152
+ if (escape) document.addEventListener("keydown", onKeyDown);
153
+ return () => {
154
+ document.removeEventListener("pointerdown", onPointerDown, true);
155
+ document.removeEventListener("keydown", onKeyDown);
156
+ };
157
+ }, [enabled, escape, outsidePointerDown]);
158
+ }
159
+
160
+ exports.useDismiss = useDismiss;
161
+ exports.useFloating = useFloating;
162
+ //# sourceMappingURL=floating.cjs.map
163
+ //# sourceMappingURL=floating.cjs.map