@ankhorage/zora 25.4.0 → 25.5.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 (83) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +2 -1
  3. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.d.ts.map +1 -1
  4. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js +2 -0
  5. package/dist/features/registry/ZORA_COMPONENT_REGISTRY.js.map +1 -1
  6. package/dist/features/registry/componentMeta.d.ts.map +1 -1
  7. package/dist/features/registry/componentMeta.js +2 -0
  8. package/dist/features/registry/componentMeta.js.map +1 -1
  9. package/dist/features/time-grid/adapters/inbound/TimeGrid.d.ts +5 -0
  10. package/dist/features/time-grid/adapters/inbound/TimeGrid.d.ts.map +1 -0
  11. package/dist/features/time-grid/adapters/inbound/TimeGrid.js +107 -0
  12. package/dist/features/time-grid/adapters/inbound/TimeGrid.js.map +1 -0
  13. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.d.ts +9 -0
  14. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.d.ts.map +1 -0
  15. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.js +5 -0
  16. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.js.map +1 -0
  17. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.native.d.ts +9 -0
  18. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.native.d.ts.map +1 -0
  19. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.native.js +5 -0
  20. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.native.js.map +1 -0
  21. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.web.d.ts +9 -0
  22. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.web.d.ts.map +1 -0
  23. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.web.js +10 -0
  24. package/dist/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.web.js.map +1 -0
  25. package/dist/features/time-grid/application/resolveTimeGridNextFocusId.d.ts +4 -0
  26. package/dist/features/time-grid/application/resolveTimeGridNextFocusId.d.ts.map +1 -0
  27. package/dist/features/time-grid/application/resolveTimeGridNextFocusId.js +31 -0
  28. package/dist/features/time-grid/application/resolveTimeGridNextFocusId.js.map +1 -0
  29. package/dist/features/time-grid/application/resolveTimeGridVisibleIntervals.d.ts +5 -0
  30. package/dist/features/time-grid/application/resolveTimeGridVisibleIntervals.d.ts.map +1 -0
  31. package/dist/features/time-grid/application/resolveTimeGridVisibleIntervals.js +6 -0
  32. package/dist/features/time-grid/application/resolveTimeGridVisibleIntervals.js.map +1 -0
  33. package/dist/features/time-grid/meta.d.ts +11 -0
  34. package/dist/features/time-grid/meta.d.ts.map +1 -0
  35. package/dist/features/time-grid/meta.js +11 -0
  36. package/dist/features/time-grid/meta.js.map +1 -0
  37. package/dist/features/time-grid/public.d.ts +5 -0
  38. package/dist/features/time-grid/public.d.ts.map +1 -0
  39. package/dist/features/time-grid/public.js +4 -0
  40. package/dist/features/time-grid/public.js.map +1 -0
  41. package/dist/index.d.ts +2 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/types/time-grid.d.ts +30 -0
  46. package/dist/types/time-grid.d.ts.map +1 -0
  47. package/dist/types/time-grid.js +2 -0
  48. package/dist/types/time-grid.js.map +1 -0
  49. package/package.json +1 -1
  50. package/src/features/registry/ZORA_COMPONENT_REGISTRY.ts +2 -0
  51. package/src/features/registry/componentMeta.ts +2 -0
  52. package/src/features/time-grid/adapters/inbound/TimeGrid.test.tsx +131 -0
  53. package/src/features/time-grid/adapters/inbound/TimeGrid.tsx +197 -0
  54. package/src/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.native.tsx +11 -0
  55. package/src/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.tsx +11 -0
  56. package/src/features/time-grid/adapters/inbound/TimeGridKeyboardProxy.web.tsx +20 -0
  57. package/src/features/time-grid/application/resolveTimeGridNextFocusId.test.ts +46 -0
  58. package/src/features/time-grid/application/resolveTimeGridNextFocusId.ts +41 -0
  59. package/src/features/time-grid/application/resolveTimeGridVisibleIntervals.test.ts +33 -0
  60. package/src/features/time-grid/application/resolveTimeGridVisibleIntervals.ts +13 -0
  61. package/src/features/time-grid/meta.ts +12 -0
  62. package/src/features/time-grid/public.ts +4 -0
  63. package/src/index.ts +2 -0
  64. package/src/types/time-grid.ts +33 -0
  65. package/web-dist/chunks/{Accordion-r2w86rwv.js → Accordion-0my2z6qe.js} +85 -1
  66. package/web-dist/chunks/{Accordion-60wn9xn9.js → Accordion-7qfd4cb4.js} +1 -1
  67. package/web-dist/chunks/{Accordion-s3d6g59s.js → Accordion-d6azgz09.js} +1 -1
  68. package/web-dist/chunks/{Accordion-nxsda1my.js → Accordion-gxj5qbpr.js} +1 -1
  69. package/web-dist/components/explorer/Explorer.js +2 -2
  70. package/web-dist/components/file-explorer/FileExplorer.js +2 -2
  71. package/web-dist/components/grid-line-overlay/GridLineOverlay.js +1 -1
  72. package/web-dist/components/grid-ruler/GridRuler.js +1 -1
  73. package/web-dist/components/grid-view/GridView.js +1 -1
  74. package/web-dist/components/media-explorer/MediaExplorer.js +2 -2
  75. package/web-dist/components/reader/Reader.js +1 -1
  76. package/web-dist/components/spatial-grid/SpatialGrid.js +1 -1
  77. package/web-dist/components/tile-grid/TileGrid.js +1 -1
  78. package/web-dist/components/time-grid/TimeGrid.d.ts +3 -0
  79. package/web-dist/components/time-grid/TimeGrid.js +208 -0
  80. package/web-dist/components/time-grid/index.d.ts +1 -0
  81. package/web-dist/components/time-grid/index.js +2 -0
  82. package/web-dist/components/uploader/Uploader.js +2 -2
  83. package/web-dist/manifest.json +38 -22
@@ -0,0 +1,20 @@
1
+ import type React from 'react';
2
+
3
+ /*** Bridges DOM arrow keys into portable interval focus navigation on React Native Web. */
4
+ export function TimeGridKeyboardProxy({ children, onKeyDown }: TimeGridKeyboardProxyProps) {
5
+ return (
6
+ <div
7
+ onKeyDown={(event) => {
8
+ if (onKeyDown(event.key)) event.preventDefault();
9
+ }}
10
+ style={{ display: 'flex', flex: 1 }}
11
+ >
12
+ {children}
13
+ </div>
14
+ );
15
+ }
16
+
17
+ interface TimeGridKeyboardProxyProps {
18
+ readonly children: React.ReactNode;
19
+ readonly onKeyDown: (key: string) => boolean;
20
+ }
@@ -0,0 +1,46 @@
1
+ import { expect, test } from 'bun:test';
2
+
3
+ import { resolveTimeGridNextFocusId } from './resolveTimeGridNextFocusId';
4
+
5
+ const placements = [
6
+ {
7
+ extent: 4,
8
+ height: 20,
9
+ id: 'drums-a',
10
+ laneId: 'drums',
11
+ laneIndex: 0,
12
+ start: 2,
13
+ width: 4,
14
+ x: 2,
15
+ y: 0,
16
+ },
17
+ {
18
+ extent: 4,
19
+ height: 20,
20
+ id: 'drums-b',
21
+ laneId: 'drums',
22
+ laneIndex: 0,
23
+ start: 12,
24
+ width: 4,
25
+ x: 12,
26
+ y: 0,
27
+ },
28
+ {
29
+ extent: 4,
30
+ height: 20,
31
+ id: 'bass-a',
32
+ laneId: 'bass',
33
+ laneIndex: 1,
34
+ start: 3,
35
+ width: 4,
36
+ x: 3,
37
+ y: 20,
38
+ },
39
+ ] as const;
40
+
41
+ test('moves keyboard focus by interval geometry without calendar or music semantics', () => {
42
+ expect(resolveTimeGridNextFocusId(placements, 'drums-a', 'right')).toBe('drums-b');
43
+ expect(resolveTimeGridNextFocusId(placements, 'drums-b', 'left')).toBe('drums-a');
44
+ expect(resolveTimeGridNextFocusId(placements, 'drums-a', 'down')).toBe('bass-a');
45
+ expect(resolveTimeGridNextFocusId(placements, 'bass-a', 'up')).toBe('drums-a');
46
+ });
@@ -0,0 +1,41 @@
1
+ import type { GridLaneIntervalPlacement } from '@ankhorage/grid-view';
2
+
3
+ /*** Resolves a neighboring interval for keyboard movement without attaching domain meaning to lanes. */
4
+ export function resolveTimeGridNextFocusId(
5
+ placements: readonly GridLaneIntervalPlacement[],
6
+ focusedId: string,
7
+ direction: 'down' | 'left' | 'right' | 'up',
8
+ ): string | undefined {
9
+ const focused = placements.find((placement) => placement.id === focusedId);
10
+ if (!focused) return undefined;
11
+ const candidates = placements.filter((placement) => {
12
+ if (direction === 'left') return placement.laneId === focused.laneId && placement.x < focused.x;
13
+ if (direction === 'right')
14
+ return placement.laneId === focused.laneId && placement.x > focused.x;
15
+ if (direction === 'up') return placement.laneIndex < focused.laneIndex;
16
+ return placement.laneIndex > focused.laneIndex;
17
+ });
18
+ return candidates
19
+ .sort(
20
+ (first, second) =>
21
+ resolveFocusDistance(first, focused, direction) -
22
+ resolveFocusDistance(second, focused, direction),
23
+ )
24
+ .at(0)?.id;
25
+ }
26
+
27
+ /*** Measures nearby candidates by axis first and timeline/lane offset second. */
28
+ function resolveFocusDistance(
29
+ candidate: GridLaneIntervalPlacement,
30
+ focused: GridLaneIntervalPlacement,
31
+ direction: 'down' | 'left' | 'right' | 'up',
32
+ ): number {
33
+ const horizontal = direction === 'left' || direction === 'right';
34
+ const primary = horizontal
35
+ ? Math.abs(candidate.x - focused.x)
36
+ : Math.abs(candidate.laneIndex - focused.laneIndex);
37
+ const secondary = horizontal
38
+ ? Math.abs(candidate.laneIndex - focused.laneIndex)
39
+ : Math.abs(candidate.x - focused.x);
40
+ return primary * 1_000_000 + secondary;
41
+ }
@@ -0,0 +1,33 @@
1
+ import { expect, test } from 'bun:test';
2
+
3
+ import { resolveTimeGridVisibleIntervals } from './resolveTimeGridVisibleIntervals';
4
+
5
+ test('culls sparse intervals across both time and lane axes', () => {
6
+ expect(
7
+ resolveTimeGridVisibleIntervals(
8
+ [
9
+ { height: 20, id: 'drums' },
10
+ { height: 40, id: 'bass' },
11
+ { height: 30, id: 'strings' },
12
+ ],
13
+ [
14
+ { extent: 4, id: 'intro', laneId: 'drums', start: 2 },
15
+ { extent: 4, id: 'verse', laneId: 'bass', start: 20 },
16
+ { extent: 4, id: 'outro', laneId: 'strings', start: 2 },
17
+ ],
18
+ { height: 45, offsetX: 0, offsetY: 0, pixelsPerUnitX: 1, pixelsPerUnitY: 1, width: 12 },
19
+ ),
20
+ ).toEqual([
21
+ {
22
+ extent: 4,
23
+ height: 20,
24
+ id: 'intro',
25
+ laneId: 'drums',
26
+ laneIndex: 0,
27
+ start: 2,
28
+ width: 4,
29
+ x: 2,
30
+ y: 0,
31
+ },
32
+ ]);
33
+ });
@@ -0,0 +1,13 @@
1
+ import { getVisibleLaneIntervals, type GridViewport } from '@ankhorage/grid-view';
2
+
3
+ import type { TimeGridInterval, TimeGridLane } from '../../../types/time-grid';
4
+
5
+ /*** Resolves the ordered interval placements visible in both world-space axes. */
6
+ export function resolveTimeGridVisibleIntervals(
7
+ lanes: readonly TimeGridLane[],
8
+ intervals: readonly TimeGridInterval[],
9
+ viewport: GridViewport,
10
+ overscanPixels?: number,
11
+ ) {
12
+ return getVisibleLaneIntervals(lanes, intervals, viewport, overscanPixels);
13
+ }
@@ -0,0 +1,12 @@
1
+ import type { ZoraComponentMeta } from '../../types/authoring';
2
+
3
+ /** TimeGrid remains code-only because interval and lane presentation require executable renderers. */
4
+ export const timeGridMeta = {
5
+ name: 'TimeGrid',
6
+ category: 'foundation',
7
+ description: 'Virtualized variable-height world-space interval lanes for code-defined timelines.',
8
+ directManifestNode: false,
9
+ note: 'Requires executable interval and optional lane-label renderers; available through code APIs, not a serializable manifest node.',
10
+ allowedChildren: [],
11
+ props: {},
12
+ } as const satisfies ZoraComponentMeta;
@@ -0,0 +1,4 @@
1
+ export type { TimeGridInterval, TimeGridLane, TimeGridProps } from '../../types/time-grid';
2
+ export { TimeGrid } from './adapters/inbound/TimeGrid';
3
+ export { resolveTimeGridNextFocusId } from './application/resolveTimeGridNextFocusId';
4
+ export { resolveTimeGridVisibleIntervals } from './application/resolveTimeGridVisibleIntervals';
package/src/index.ts CHANGED
@@ -484,6 +484,8 @@ export {
484
484
  } from './features/theme/colorModel';
485
485
  export * from './features/theme/public';
486
486
  export * from './features/theme/runtime';
487
+ export type { TimeGridInterval, TimeGridLane, TimeGridProps } from './features/time-grid/public';
488
+ export { resolveTimeGridVisibleIntervals, TimeGrid } from './features/time-grid/public';
487
489
  export {
488
490
  TimePicker,
489
491
  type TimePickerProps,
@@ -0,0 +1,33 @@
1
+ import type { GridLane, GridLaneInterval, GridViewport } from '@ankhorage/grid-view';
2
+ import type React from 'react';
3
+
4
+ import type { ZoraBaseProps } from './base';
5
+
6
+ /** An ordered, variable-height track rendered by the generic TimeGrid. */
7
+ export type TimeGridLane = GridLane;
8
+
9
+ /** A stable world-space interval rendered by the generic TimeGrid. */
10
+ export type TimeGridInterval = GridLaneInterval;
11
+
12
+ /**
13
+ * Code API for virtualized interval lanes. Domain adapters map dates, PPQ ticks, and other units
14
+ * to numeric world coordinates before reaching this boundary.
15
+ */
16
+ export interface TimeGridProps extends ZoraBaseProps {
17
+ readonly lanes: readonly TimeGridLane[];
18
+ readonly intervals: readonly TimeGridInterval[];
19
+ readonly contentWidth: number;
20
+ readonly width: number;
21
+ readonly height: number;
22
+ readonly zoom?: number;
23
+ readonly overscanPixels?: number;
24
+ readonly focusedIntervalId?: string;
25
+ readonly onFocusedIntervalIdChange?: (id: string) => void;
26
+ readonly revealPaddingPixels?: number;
27
+ readonly selectedIntervalIds?: readonly string[];
28
+ readonly onIntervalPress?: (interval: TimeGridInterval) => void;
29
+ readonly onViewportChange?: (viewport: GridViewport) => void;
30
+ readonly onVisibleIntervalIdsChange?: (ids: readonly string[]) => void;
31
+ readonly renderInterval: (interval: TimeGridInterval, selected: boolean) => React.ReactNode;
32
+ readonly renderLaneLabel?: (lane: TimeGridLane) => React.ReactNode;
33
+ }
@@ -47,6 +47,68 @@ function getVisibleGridItems(items, viewport, overscanPixels = 0) {
47
47
  return items.filter((item) => item.x <= bounds.x + bounds.width && item.x + item.width >= bounds.x && item.y <= bounds.y + bounds.height && item.y + item.height >= bounds.y);
48
48
  }
49
49
 
50
+ // node_modules/@ankhorage/grid-view/dist/features/layout/createGridAxisMetrics.js
51
+ function createGridAxisMetrics(entries) {
52
+ const indexes = new Map;
53
+ const offsets = [];
54
+ const sizes = [];
55
+ let offset = 0;
56
+ entries.forEach((entry, index) => {
57
+ if (!entry.id || indexes.has(entry.id)) {
58
+ throw new RangeError("Layout axis entries require unique nonempty IDs.");
59
+ }
60
+ if (!Number.isFinite(entry.size) || entry.size <= 0) {
61
+ throw new RangeError("Layout axis entry sizes must be finite positive numbers.");
62
+ }
63
+ const end = offset + entry.size;
64
+ if (!Number.isFinite(end)) {
65
+ throw new RangeError("Layout axis cumulative world coordinates must be finite.");
66
+ }
67
+ indexes.set(entry.id, index);
68
+ offsets.push(offset);
69
+ sizes.push(entry.size);
70
+ offset = end;
71
+ });
72
+ return { indexes, offsets, sizes };
73
+ }
74
+
75
+ // node_modules/@ankhorage/grid-view/dist/features/layout/utils/readGridAxisMetric.js
76
+ function readGridAxisMetric(values, index) {
77
+ const value = values.at(index);
78
+ if (value === undefined) {
79
+ throw new RangeError("Layout axis metric indexes must reference an existing entry.");
80
+ }
81
+ return value;
82
+ }
83
+
84
+ // node_modules/@ankhorage/grid-view/dist/features/layout/utils/resolveLaneIntervalPlacement.js
85
+ function resolveLaneIntervalPlacement(interval, lanes) {
86
+ if (!interval.id || !Number.isFinite(interval.start) || !Number.isFinite(interval.extent) || interval.extent <= 0) {
87
+ throw new RangeError("Lane intervals require an ID, finite start, and positive extent.");
88
+ }
89
+ if (!Number.isFinite(interval.start + interval.extent)) {
90
+ throw new RangeError("Lane interval end coordinates must be finite.");
91
+ }
92
+ const laneIndex = lanes.indexes.get(interval.laneId);
93
+ if (laneIndex === undefined) {
94
+ throw new RangeError("Lane intervals must reference an existing lane.");
95
+ }
96
+ return {
97
+ ...interval,
98
+ laneIndex,
99
+ x: interval.start,
100
+ y: readGridAxisMetric(lanes.offsets, laneIndex),
101
+ width: interval.extent,
102
+ height: readGridAxisMetric(lanes.sizes, laneIndex)
103
+ };
104
+ }
105
+
106
+ // node_modules/@ankhorage/grid-view/dist/features/layout/getLaneIntervalPlacement.js
107
+ function getLaneIntervalPlacement(lanes, interval) {
108
+ const laneMetrics = createGridAxisMetrics(lanes.map(({ id, height }) => ({ id, size: height })));
109
+ return resolveLaneIntervalPlacement(interval, laneMetrics);
110
+ }
111
+
50
112
  // node_modules/@ankhorage/grid-view/dist/features/viewport/constrainViewport.js
51
113
  function constrainViewport(viewport, constraints) {
52
114
  assertValidViewport(viewport);
@@ -206,4 +268,26 @@ function adaptiveStep(minimum) {
206
268
  const multiplier = [1, 2, 5, 10].find((candidate) => candidate * magnitude >= minimum) ?? 10;
207
269
  return multiplier * magnitude;
208
270
  }
209
- export { getAxisCategoryTicks, getAxisTicks, getVisibleGridItems, revealWorldRect, worldToViewport };
271
+ // node_modules/@ankhorage/grid-view/dist/features/layout/getVisibleLaneIntervals.js
272
+ function getVisibleLaneIntervals(lanes, intervals, viewport, overscanPixels = 0) {
273
+ const laneMetrics = createGridAxisMetrics(lanes.map(({ id, height }) => ({ id, size: height })));
274
+ const bounds = getVisibleWorldBounds(viewport, overscanPixels);
275
+ validateUniqueIds(intervals);
276
+ return intervals.flatMap((interval) => {
277
+ const placement = resolveLaneIntervalPlacement(interval, laneMetrics);
278
+ return intersects(placement.x, placement.width, bounds.x, bounds.width) && intersects(placement.y, placement.height, bounds.y, bounds.height) ? [placement] : [];
279
+ });
280
+ }
281
+ function validateUniqueIds(intervals) {
282
+ const ids = new Set;
283
+ intervals.forEach(({ id }) => {
284
+ if (ids.has(id)) {
285
+ throw new RangeError("Lane intervals require unique IDs.");
286
+ }
287
+ ids.add(id);
288
+ });
289
+ }
290
+ function intersects(firstStart, firstExtent, secondStart, secondExtent) {
291
+ return firstStart <= secondStart + secondExtent && firstStart + firstExtent >= secondStart;
292
+ }
293
+ export { getAxisCategoryTicks, getAxisTicks, getVisibleGridItems, getLaneIntervalPlacement, getVisibleLaneIntervals, revealWorldRect, worldToViewport };
@@ -6,7 +6,7 @@ import {
6
6
  getAxisCategoryTicks,
7
7
  getAxisTicks,
8
8
  worldToViewport
9
- } from "./Accordion-r2w86rwv.js";
9
+ } from "./Accordion-0my2z6qe.js";
10
10
  import {
11
11
  useZoraTheme2
12
12
  } from "./Accordion-srjya6dz.js";
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import {
3
3
  TileGrid2
4
- } from "./Accordion-nxsda1my.js";
4
+ } from "./Accordion-gxj5qbpr.js";
5
5
  import {
6
6
  withZoraThemeScope
7
7
  } from "./Accordion-42jfy1a1.js";
@@ -3,7 +3,7 @@ import {
3
3
  getVisibleGridItems,
4
4
  revealWorldRect,
5
5
  worldToViewport
6
- } from "./Accordion-r2w86rwv.js";
6
+ } from "./Accordion-0my2z6qe.js";
7
7
  import {
8
8
  require_cjs
9
9
  } from "./Accordion-xgpzh4wq.js";
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import"../../chunks/Accordion-nxsda1my.js";
2
+ import"../../chunks/Accordion-gxj5qbpr.js";
3
3
  import"../../chunks/Accordion-bfzeab9x.js";
4
4
  import"../../chunks/Accordion-6wrr910w.js";
5
5
  import"../../chunks/Accordion-8f0nekwe.js";
@@ -14,7 +14,7 @@ import {
14
14
  Explorer2,
15
15
  FileExplorer2,
16
16
  MediaExplorer2
17
- } from "../../chunks/Accordion-s3d6g59s.js";
17
+ } from "../../chunks/Accordion-d6azgz09.js";
18
18
  import"../../chunks/Accordion-bff0p3x4.js";
19
19
  import"../../chunks/Accordion-srjya6dz.js";
20
20
  import"../../chunks/Accordion-184r2r82.js";
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import"../../chunks/Accordion-nxsda1my.js";
2
+ import"../../chunks/Accordion-gxj5qbpr.js";
3
3
  import"../../chunks/Accordion-bfzeab9x.js";
4
4
  import"../../chunks/Accordion-6wrr910w.js";
5
5
  import"../../chunks/Accordion-8f0nekwe.js";
@@ -14,7 +14,7 @@ import {
14
14
  Explorer2,
15
15
  FileExplorer2,
16
16
  MediaExplorer2
17
- } from "../../chunks/Accordion-s3d6g59s.js";
17
+ } from "../../chunks/Accordion-d6azgz09.js";
18
18
  import"../../chunks/Accordion-bff0p3x4.js";
19
19
  import"../../chunks/Accordion-srjya6dz.js";
20
20
  import"../../chunks/Accordion-184r2r82.js";
@@ -4,7 +4,7 @@ import"../../chunks/Accordion-42jfy1a1.js";
4
4
  import {
5
5
  GridLineOverlay2,
6
6
  GridRuler2
7
- } from "../../chunks/Accordion-60wn9xn9.js";
7
+ } from "../../chunks/Accordion-7qfd4cb4.js";
8
8
  import"../../chunks/Accordion-srjya6dz.js";
9
9
  import"../../chunks/Accordion-xgpzh4wq.js";
10
10
  export {
@@ -4,7 +4,7 @@ import"../../chunks/Accordion-42jfy1a1.js";
4
4
  import {
5
5
  GridLineOverlay2,
6
6
  GridRuler2
7
- } from "../../chunks/Accordion-60wn9xn9.js";
7
+ } from "../../chunks/Accordion-7qfd4cb4.js";
8
8
  import"../../chunks/Accordion-srjya6dz.js";
9
9
  import"../../chunks/Accordion-xgpzh4wq.js";
10
10
  export {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  GridView2,
4
4
  TileGrid2
5
- } from "../../chunks/Accordion-nxsda1my.js";
5
+ } from "../../chunks/Accordion-gxj5qbpr.js";
6
6
  import"../../chunks/Accordion-xgpzh4wq.js";
7
7
  export {
8
8
  GridView2 as GridView,
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import"../../chunks/Accordion-nxsda1my.js";
2
+ import"../../chunks/Accordion-gxj5qbpr.js";
3
3
  import"../../chunks/Accordion-bfzeab9x.js";
4
4
  import"../../chunks/Accordion-6wrr910w.js";
5
5
  import"../../chunks/Accordion-8f0nekwe.js";
@@ -14,7 +14,7 @@ import {
14
14
  Explorer2,
15
15
  FileExplorer2,
16
16
  MediaExplorer2
17
- } from "../../chunks/Accordion-s3d6g59s.js";
17
+ } from "../../chunks/Accordion-d6azgz09.js";
18
18
  import"../../chunks/Accordion-bff0p3x4.js";
19
19
  import"../../chunks/Accordion-srjya6dz.js";
20
20
  import"../../chunks/Accordion-184r2r82.js";
@@ -79,7 +79,7 @@ import {
79
79
  __preload,
80
80
  __chunks
81
81
  } from "../../chunks/Accordion-nh0cs9hq.js";
82
- __chunks(import.meta.url,["xqvqxdap","rg94gstv","z23c32jh","50yy1az9","x15y26r7","1t98py7y","m8ts96nj","8se5z2w3","mjvegqjq","8gxjy9na","2389epxb","pnpxcrwx","hszzyv5p","y8p5hk56","vgkvvdvg","ewf1zen9","09qs8gt1","z5a0tx18","6wrr910w","bfzeab9x","8f0nekwe","nnv76yff","wyxmd0n0","6rrqpb2h","42jfy1a1","7tjz25jh","6zb9d92y","be2yhfqz","mnac2z83","0gfsj9qh","fzcpm4xf","2nesr9cv","h7zsx9eg","b96evb46","9w8wg9mf","pvj5npzc","w6qedeba","eqvdv7tt","61e19g3e","ys214jt5","bff0p3x4","srjya6dz","184r2r82","fre84yaq","xgpzh4wq","nh0cs9hq","6a2hscrx","n7y08rz5","59pa0677","961ncx4e"],[["./Reader.js",14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],["../../chunks/ReadiumCSS-default.css-rg94gstv.js"],["../../chunks/ReadiumCSS-after.css-z23c32jh.js"],["../../chunks/ReadiumCSS-ebpaj_fonts_patch.css-50yy1az9.js"],["../../chunks/ReadiumCSS-after.css-x15y26r7.js"],["../../chunks/ReadiumCSS-before.css-1t98py7y.js"],["../../chunks/ReadiumCSS-default.css-m8ts96nj.js"],["../../chunks/ReadiumCSS-after.css-8se5z2w3.js"],["../../chunks/ReadiumCSS-before.css-mjvegqjq.js"],["../../chunks/ReadiumCSS-default.css-8gxjy9na.js"],["../../chunks/ReadiumCSS-after.css-2389epxb.js"],["../../chunks/ReadiumCSS-before.css-pnpxcrwx.js"],["../../chunks/ReadiumCSS-before.css-hszzyv5p.js"],["../../chunks/ReadiumCSS-default.css-y8p5hk56.js"],["../../chunks/Accordion-vgkvvdvg.js"],["../../chunks/Accordion-ewf1zen9.js",17,18,23,24,25,32,34,41,44,45],["../../chunks/Accordion-09qs8gt1.js",44,45],["../../chunks/Accordion-z5a0tx18.js",16,18,42,44,45],["../../chunks/Accordion-6wrr910w.js"],["../../chunks/Accordion-bfzeab9x.js"],["../../chunks/Accordion-8f0nekwe.js",19,18,46,43,44,45],["../../chunks/Accordion-nnv76yff.js",16,18,47,42,44,45],["../../chunks/Accordion-wyxmd0n0.js",18,47,46,44,45],["../../chunks/Accordion-6rrqpb2h.js",18,20,17,21,22,24,25,47,40,44,45],["../../chunks/Accordion-42jfy1a1.js",18,48],["../../chunks/Accordion-7tjz25jh.js",16,17,18,24,42,44,45],["../../chunks/Accordion-6zb9d92y.js"],["../../chunks/Accordion-be2yhfqz.js",26,44,45],["../../chunks/Accordion-mnac2z83.js"],["../../chunks/Accordion-0gfsj9qh.js",47],["../../chunks/Accordion-fzcpm4xf.js",28,29,44,45],["../../chunks/Accordion-2nesr9cv.js",17,18],["../../chunks/Accordion-h7zsx9eg.js",26,27,17,18,30,31,22,24,33,25,49,41,44,45],["../../chunks/Accordion-b96evb46.js",20,24],["../../chunks/Accordion-9w8wg9mf.js",16,24,40,41,44,45],["../../chunks/Accordion-pvj5npzc.js",24,25,34,41,44,45],["../../chunks/Accordion-w6qedeba.js",31,24],["../../chunks/Accordion-eqvdv7tt.js"],["../../chunks/Accordion-61e19g3e.js"],["../../chunks/Accordion-ys214jt5.js"],["../../chunks/Accordion-bff0p3x4.js",19,41],["../../chunks/Accordion-srjya6dz.js",18],["../../chunks/Accordion-184r2r82.js",16,43],["../../chunks/Accordion-fre84yaq.js"],["../../chunks/Accordion-xgpzh4wq.js",45],["../../chunks/Accordion-nh0cs9hq.js"],["../../chunks/Accordion-6a2hscrx.js"],["../../chunks/Accordion-n7y08rz5.js",46],["../../chunks/Accordion-59pa0677.js"],["../../chunks/Accordion-961ncx4e.js"]],0);
82
+ __chunks(import.meta.url,["rfa5chwq","pnpxcrwx","rg94gstv","z23c32jh","50yy1az9","y8p5hk56","x15y26r7","1t98py7y","m8ts96nj","8se5z2w3","mjvegqjq","8gxjy9na","2389epxb","hszzyv5p","vgkvvdvg","ewf1zen9","09qs8gt1","z5a0tx18","6wrr910w","bfzeab9x","8f0nekwe","nnv76yff","wyxmd0n0","6rrqpb2h","42jfy1a1","7tjz25jh","6zb9d92y","be2yhfqz","mnac2z83","0gfsj9qh","fzcpm4xf","2nesr9cv","h7zsx9eg","b96evb46","9w8wg9mf","pvj5npzc","w6qedeba","eqvdv7tt","61e19g3e","ys214jt5","bff0p3x4","srjya6dz","184r2r82","fre84yaq","xgpzh4wq","nh0cs9hq","6a2hscrx","n7y08rz5","59pa0677","961ncx4e"],[["./Reader.js",14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],["../../chunks/ReadiumCSS-before.css-pnpxcrwx.js"],["../../chunks/ReadiumCSS-default.css-rg94gstv.js"],["../../chunks/ReadiumCSS-after.css-z23c32jh.js"],["../../chunks/ReadiumCSS-ebpaj_fonts_patch.css-50yy1az9.js"],["../../chunks/ReadiumCSS-default.css-y8p5hk56.js"],["../../chunks/ReadiumCSS-after.css-x15y26r7.js"],["../../chunks/ReadiumCSS-before.css-1t98py7y.js"],["../../chunks/ReadiumCSS-default.css-m8ts96nj.js"],["../../chunks/ReadiumCSS-after.css-8se5z2w3.js"],["../../chunks/ReadiumCSS-before.css-mjvegqjq.js"],["../../chunks/ReadiumCSS-default.css-8gxjy9na.js"],["../../chunks/ReadiumCSS-after.css-2389epxb.js"],["../../chunks/ReadiumCSS-before.css-hszzyv5p.js"],["../../chunks/Accordion-vgkvvdvg.js"],["../../chunks/Accordion-ewf1zen9.js",17,18,23,24,25,32,34,41,44,45],["../../chunks/Accordion-09qs8gt1.js",44,45],["../../chunks/Accordion-z5a0tx18.js",16,18,42,44,45],["../../chunks/Accordion-6wrr910w.js"],["../../chunks/Accordion-bfzeab9x.js"],["../../chunks/Accordion-8f0nekwe.js",19,18,46,43,44,45],["../../chunks/Accordion-nnv76yff.js",16,18,47,42,44,45],["../../chunks/Accordion-wyxmd0n0.js",18,47,46,44,45],["../../chunks/Accordion-6rrqpb2h.js",18,20,17,21,22,24,25,47,40,44,45],["../../chunks/Accordion-42jfy1a1.js",18,48],["../../chunks/Accordion-7tjz25jh.js",16,17,18,24,42,44,45],["../../chunks/Accordion-6zb9d92y.js"],["../../chunks/Accordion-be2yhfqz.js",26,44,45],["../../chunks/Accordion-mnac2z83.js"],["../../chunks/Accordion-0gfsj9qh.js",47],["../../chunks/Accordion-fzcpm4xf.js",28,29,44,45],["../../chunks/Accordion-2nesr9cv.js",17,18],["../../chunks/Accordion-h7zsx9eg.js",26,27,17,18,30,31,22,24,33,25,49,41,44,45],["../../chunks/Accordion-b96evb46.js",20,24],["../../chunks/Accordion-9w8wg9mf.js",16,24,40,41,44,45],["../../chunks/Accordion-pvj5npzc.js",24,25,34,41,44,45],["../../chunks/Accordion-w6qedeba.js",31,24],["../../chunks/Accordion-eqvdv7tt.js"],["../../chunks/Accordion-61e19g3e.js"],["../../chunks/Accordion-ys214jt5.js"],["../../chunks/Accordion-bff0p3x4.js",19,41],["../../chunks/Accordion-srjya6dz.js",18],["../../chunks/Accordion-184r2r82.js",16,43],["../../chunks/Accordion-fre84yaq.js"],["../../chunks/Accordion-xgpzh4wq.js",45],["../../chunks/Accordion-nh0cs9hq.js"],["../../chunks/Accordion-6a2hscrx.js"],["../../chunks/Accordion-n7y08rz5.js",46],["../../chunks/Accordion-59pa0677.js"],["../../chunks/Accordion-961ncx4e.js"]],0);
83
83
 
84
84
  // node_modules/@ankhorage/reader/dist/features/reader/adapters/ReaderView.web.js
85
85
  import { jsx as _jsx2 } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import {
3
3
  GridView2
4
- } from "../../chunks/Accordion-nxsda1my.js";
4
+ } from "../../chunks/Accordion-gxj5qbpr.js";
5
5
  import {
6
6
  require_cjs
7
7
  } from "../../chunks/Accordion-xgpzh4wq.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  GridView2,
4
4
  TileGrid2
5
- } from "../../chunks/Accordion-nxsda1my.js";
5
+ } from "../../chunks/Accordion-gxj5qbpr.js";
6
6
  import"../../chunks/Accordion-xgpzh4wq.js";
7
7
  export {
8
8
  GridView2 as GridView,
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+
3
+ export declare const TimeGrid: React.ComponentType<Record<string, unknown>>;