@namroodinc/liquid-editorial 0.1.7 → 0.1.9

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 (134) hide show
  1. package/AGENTS.md +2 -0
  2. package/README.md +1 -1
  3. package/UPGRADING.md +50 -0
  4. package/dist/chunks/Board-BLhB5_xx.cjs +2 -0
  5. package/dist/chunks/Board-BLhB5_xx.cjs.map +1 -0
  6. package/dist/chunks/Board-BTFSzn6c.js +239 -0
  7. package/dist/chunks/Board-BTFSzn6c.js.map +1 -0
  8. package/dist/chunks/EntryEditor-CcyYtH74.js +191 -0
  9. package/dist/chunks/EntryEditor-CcyYtH74.js.map +1 -0
  10. package/dist/chunks/EntryEditor-DIpc1iPF.cjs +2 -0
  11. package/dist/chunks/EntryEditor-DIpc1iPF.cjs.map +1 -0
  12. package/dist/chunks/{RichTextEditor-DC_0oN1s.cjs → RichTextEditor-BxtlbjXj.cjs} +2 -2
  13. package/dist/chunks/RichTextEditor-BxtlbjXj.cjs.map +1 -0
  14. package/dist/chunks/{RichTextEditor-CSpjsL1z.js → RichTextEditor-Dnx4i7bQ.js} +104 -93
  15. package/dist/chunks/RichTextEditor-Dnx4i7bQ.js.map +1 -0
  16. package/dist/chunks/mergeRefs-Bc3qS0Tt.cjs +2 -0
  17. package/dist/chunks/mergeRefs-Bc3qS0Tt.cjs.map +1 -0
  18. package/dist/chunks/mergeRefs-DGM402mE.js +10 -0
  19. package/dist/chunks/mergeRefs-DGM402mE.js.map +1 -0
  20. package/dist/components/AssetCard/index.cjs +2 -0
  21. package/dist/components/AssetCard/index.cjs.map +1 -0
  22. package/dist/components/AssetCard/index.d.cts +41 -0
  23. package/dist/components/AssetCard/index.d.cts.map +1 -0
  24. package/dist/components/AssetCard/index.d.ts +41 -0
  25. package/dist/components/AssetCard/index.d.ts.map +1 -0
  26. package/dist/components/AssetCard/index.js +159 -0
  27. package/dist/components/AssetCard/index.js.map +1 -0
  28. package/dist/components/AssetCard/style.css +204 -0
  29. package/dist/components/AssetGrid/index.cjs +1 -1
  30. package/dist/components/AssetGrid/index.cjs.map +1 -1
  31. package/dist/components/AssetGrid/index.d.cts +5 -30
  32. package/dist/components/AssetGrid/index.d.cts.map +1 -1
  33. package/dist/components/AssetGrid/index.d.ts +5 -30
  34. package/dist/components/AssetGrid/index.d.ts.map +1 -1
  35. package/dist/components/AssetGrid/index.js +20 -107
  36. package/dist/components/AssetGrid/index.js.map +1 -1
  37. package/dist/components/AssetGrid/style.css +0 -161
  38. package/dist/components/Board/index.cjs +1 -2
  39. package/dist/components/Board/index.d.cts.map +1 -1
  40. package/dist/components/Board/index.d.ts.map +1 -1
  41. package/dist/components/Board/index.js +1 -231
  42. package/dist/components/Board/keyboard.d.cts +7 -0
  43. package/dist/components/Board/keyboard.d.cts.map +1 -0
  44. package/dist/components/Board/keyboard.d.ts +7 -0
  45. package/dist/components/Board/keyboard.d.ts.map +1 -0
  46. package/dist/components/Board/keyboard.test.d.cts +2 -0
  47. package/dist/components/Board/keyboard.test.d.cts.map +1 -0
  48. package/dist/components/Board/keyboard.test.d.ts +2 -0
  49. package/dist/components/Board/keyboard.test.d.ts.map +1 -0
  50. package/dist/components/Board/moves.d.cts +5 -0
  51. package/dist/components/Board/moves.d.cts.map +1 -0
  52. package/dist/components/Board/moves.d.ts +5 -0
  53. package/dist/components/Board/moves.d.ts.map +1 -0
  54. package/dist/components/Board/moves.test.d.cts +2 -0
  55. package/dist/components/Board/moves.test.d.cts.map +1 -0
  56. package/dist/components/Board/moves.test.d.ts +2 -0
  57. package/dist/components/Board/moves.test.d.ts.map +1 -0
  58. package/dist/components/Button/index.cjs +1 -1
  59. package/dist/components/Button/index.cjs.map +1 -1
  60. package/dist/components/Button/index.js +1 -1
  61. package/dist/components/Button/index.js.map +1 -1
  62. package/dist/components/Button/style.css +0 -16
  63. package/dist/components/DatePicker/index.cjs +1 -1
  64. package/dist/components/DatePicker/index.cjs.map +1 -1
  65. package/dist/components/DatePicker/index.d.cts.map +1 -1
  66. package/dist/components/DatePicker/index.d.ts.map +1 -1
  67. package/dist/components/DatePicker/index.js +39 -36
  68. package/dist/components/DatePicker/index.js.map +1 -1
  69. package/dist/components/Drawer/index.cjs +1 -1
  70. package/dist/components/Drawer/index.cjs.map +1 -1
  71. package/dist/components/Drawer/index.d.cts.map +1 -1
  72. package/dist/components/Drawer/index.d.ts.map +1 -1
  73. package/dist/components/Drawer/index.js +69 -62
  74. package/dist/components/Drawer/index.js.map +1 -1
  75. package/dist/components/EntryEditor/index.cjs +1 -1
  76. package/dist/components/EntryEditor/index.d.cts.map +1 -1
  77. package/dist/components/EntryEditor/index.d.ts.map +1 -1
  78. package/dist/components/EntryEditor/index.js +1 -1
  79. package/dist/components/EntryEditor/model.d.cts.map +1 -1
  80. package/dist/components/EntryEditor/model.d.ts.map +1 -1
  81. package/dist/components/Icon/style.css +18 -0
  82. package/dist/components/ImageCropper/index.cjs +1 -1
  83. package/dist/components/ImageCropper/index.cjs.map +1 -1
  84. package/dist/components/ImageCropper/index.d.cts +16 -1
  85. package/dist/components/ImageCropper/index.d.cts.map +1 -1
  86. package/dist/components/ImageCropper/index.d.ts +16 -1
  87. package/dist/components/ImageCropper/index.d.ts.map +1 -1
  88. package/dist/components/ImageCropper/index.js +143 -107
  89. package/dist/components/ImageCropper/index.js.map +1 -1
  90. package/dist/components/Pagination/index.cjs +1 -1
  91. package/dist/components/Pagination/index.cjs.map +1 -1
  92. package/dist/components/Pagination/index.js +1 -1
  93. package/dist/components/Pagination/index.js.map +1 -1
  94. package/dist/components/Pagination/style.css +0 -1
  95. package/dist/components/RichTextEditor/index.cjs +1 -1
  96. package/dist/components/RichTextEditor/index.d.cts.map +1 -1
  97. package/dist/components/RichTextEditor/index.d.ts.map +1 -1
  98. package/dist/components/RichTextEditor/index.js +1 -1
  99. package/dist/components/Select/index.cjs +1 -1
  100. package/dist/components/Select/index.cjs.map +1 -1
  101. package/dist/components/Select/index.d.cts.map +1 -1
  102. package/dist/components/Select/index.d.ts.map +1 -1
  103. package/dist/components/Select/index.js +32 -18
  104. package/dist/components/Select/index.js.map +1 -1
  105. package/dist/components/SortableList/index.cjs +1 -1
  106. package/dist/components/SortableList/index.cjs.map +1 -1
  107. package/dist/components/SortableList/index.d.cts.map +1 -1
  108. package/dist/components/SortableList/index.d.ts.map +1 -1
  109. package/dist/components/SortableList/index.js +49 -50
  110. package/dist/components/SortableList/index.js.map +1 -1
  111. package/dist/index.cjs +1 -1
  112. package/dist/index.d.cts +3 -1
  113. package/dist/index.d.cts.map +1 -1
  114. package/dist/index.d.ts +3 -1
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +34 -33
  117. package/dist/internal/mergeRefs.d.cts +4 -0
  118. package/dist/internal/mergeRefs.d.cts.map +1 -0
  119. package/dist/internal/mergeRefs.d.ts +4 -0
  120. package/dist/internal/mergeRefs.d.ts.map +1 -0
  121. package/dist/styles.css +1 -0
  122. package/dist/test/dragEvent.d.cts +3 -0
  123. package/dist/test/dragEvent.d.cts.map +1 -0
  124. package/dist/test/dragEvent.d.ts +3 -0
  125. package/dist/test/dragEvent.d.ts.map +1 -0
  126. package/package.json +2 -2
  127. package/dist/chunks/EntryEditor-C32lKKnV.cjs +0 -2
  128. package/dist/chunks/EntryEditor-C32lKKnV.cjs.map +0 -1
  129. package/dist/chunks/EntryEditor-xVuiqtFo.js +0 -181
  130. package/dist/chunks/EntryEditor-xVuiqtFo.js.map +0 -1
  131. package/dist/chunks/RichTextEditor-CSpjsL1z.js.map +0 -1
  132. package/dist/chunks/RichTextEditor-DC_0oN1s.cjs.map +0 -1
  133. package/dist/components/Board/index.cjs.map +0 -1
  134. package/dist/components/Board/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -48,10 +48,12 @@ export { CheckboxCard, RadioCard, SelectionCardGroup, } from "./components/Selec
48
48
  export type { CheckboxCardProps, RadioCardProps, SelectionCardGroupProps, } from "./components/SelectionCard/index.js";
49
49
  export { Stepper } from "./components/Stepper/index.js";
50
50
  export type { StepperProps, StepperSize, Step, StepStatus } from "./components/Stepper/index.js";
51
+ export { AssetCard, AssetCardSkeleton } from "./components/AssetCard/index.js";
52
+ export type { AssetCardProps, AssetCardSkeletonProps } from "./components/AssetCard/index.js";
51
53
  export { AssetGrid, AssetTile, AssetTileSkeleton, AssetGridEmpty } from "./components/AssetGrid/index.js";
52
54
  export type { AssetGridProps, AssetTileProps, AssetTileSkeletonProps, AssetGridEmptyProps, } from "./components/AssetGrid/index.js";
53
55
  export { ImageCropper, cropToBlob } from "./components/ImageCropper/index.js";
54
- export type { ImageCropperProps, CropRect, CropState, CropToBlobOptions } from "./components/ImageCropper/index.js";
56
+ export type { ImageCropperProps, ImageCropperDefaultState, CropRect, CropState, CropToBlobOptions } from "./components/ImageCropper/index.js";
55
57
  export { Grid, GridItem, Stack } from "./components/Grid/index.js";
56
58
  export type { GridProps, GridItemProps, StackProps, GapSize, GridColumns, GridAlign, StackDirection, } from "./components/Grid/index.js";
57
59
  export { Container } from "./components/Container/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,35 +1,36 @@
1
- import { n as e, r as t, t as n } from "./chunks/Icon-CGY1FNXT.js";
2
- import { Button as r } from "./components/Button/index.js";
3
- import { Drawer as i } from "./components/Drawer/index.js";
4
- import { SideNav as a, SideNavFooter as o, SideNavHeader as s, SideNavItem as c, SideNavSection as l, useSideNavCollapsed as u } from "./components/SideNav/index.js";
5
- import { TopNav as d, TopNavItem as f } from "./components/TopNav/index.js";
6
- import { AppShell as p } from "./components/AppShell/index.js";
7
- import { ButtonGroup as m } from "./components/ButtonGroup/index.js";
8
- import { Field as h } from "./components/Field/index.js";
9
- import { Modal as g } from "./components/Modal/index.js";
10
- import { TextArea as _, TextField as v } from "./components/TextField/index.js";
11
- import { t as y } from "./chunks/RichTextEditor-CSpjsL1z.js";
12
- import { Badge as b } from "./components/Badge/index.js";
13
- import { FieldAffix as x } from "./components/FieldAffix/index.js";
14
- import { SearchField as S } from "./components/SearchField/index.js";
15
- import { SortableList as C, SortableListItem as w } from "./components/SortableList/index.js";
16
- import { EntryPicker as T } from "./components/EntryPicker/index.js";
17
- import { NumberField as E, NumberRangeField as D } from "./components/NumberField/index.js";
18
- import { Switch as O } from "./components/Switch/index.js";
19
- import { n as k, t as A } from "./chunks/EntryEditor-xVuiqtFo.js";
20
- import { Board as j, BoardCard as M, BoardColumn as N } from "./components/Board/index.js";
21
- import { Avatar as P, AvatarGroup as F } from "./components/Avatar/index.js";
22
- import { Grid as I, GridItem as L, Stack as R } from "./components/Grid/index.js";
23
- import { Checkbox as z, ChoiceGroup as B, Radio as V } from "./components/Choice/index.js";
24
- import { Table as H, TableBody as U, TableCell as W, TableEmpty as G, TableFrame as K, TableHead as q, TableHeaderCell as J, TableRow as Y, TableToolbar as X } from "./components/Table/index.js";
25
- import { Popover as Z } from "./components/Popover/index.js";
26
- import { Menu as Q, MenuItem as $, MenuLabel as ee, MenuSeparator as te } from "./components/Menu/index.js";
27
- import { Toast as ne, ToastProvider as re, useToast as ie } from "./components/Toast/index.js";
28
- import { Skeleton as ae, SkeletonText as oe } from "./components/Skeleton/index.js";
29
- import { SubNav as se, SubNavButton as ce, SubNavItem as le } from "./components/SubNav/index.js";
30
- import { CheckboxCard as ue, RadioCard as de, SelectionCardGroup as fe } from "./components/SelectionCard/index.js";
31
- import { Stepper as pe } from "./components/Stepper/index.js";
32
- import { AssetGrid as me, AssetGridEmpty as he, AssetTile as ge, AssetTileSkeleton as _e } from "./components/AssetGrid/index.js";
1
+ import { n as e, r as t, t as ee } from "./chunks/Icon-CGY1FNXT.js";
2
+ import { Button as te } from "./components/Button/index.js";
3
+ import { Drawer as n } from "./components/Drawer/index.js";
4
+ import { SideNav as r, SideNavFooter as i, SideNavHeader as a, SideNavItem as o, SideNavSection as s, useSideNavCollapsed as c } from "./components/SideNav/index.js";
5
+ import { TopNav as l, TopNavItem as u } from "./components/TopNav/index.js";
6
+ import { AppShell as d } from "./components/AppShell/index.js";
7
+ import { ButtonGroup as f } from "./components/ButtonGroup/index.js";
8
+ import { Field as p } from "./components/Field/index.js";
9
+ import { Modal as m } from "./components/Modal/index.js";
10
+ import { TextArea as h, TextField as g } from "./components/TextField/index.js";
11
+ import { t as _ } from "./chunks/RichTextEditor-Dnx4i7bQ.js";
12
+ import { Badge as v } from "./components/Badge/index.js";
13
+ import { FieldAffix as y } from "./components/FieldAffix/index.js";
14
+ import { SearchField as b } from "./components/SearchField/index.js";
15
+ import { SortableList as x, SortableListItem as S } from "./components/SortableList/index.js";
16
+ import { EntryPicker as C } from "./components/EntryPicker/index.js";
17
+ import { NumberField as w, NumberRangeField as T } from "./components/NumberField/index.js";
18
+ import { Switch as E } from "./components/Switch/index.js";
19
+ import { n as D, t as O } from "./chunks/EntryEditor-CcyYtH74.js";
20
+ import { n as k, r as A, t as j } from "./chunks/Board-BTFSzn6c.js";
21
+ import { Avatar as M, AvatarGroup as N } from "./components/Avatar/index.js";
22
+ import { Grid as P, GridItem as F, Stack as I } from "./components/Grid/index.js";
23
+ import { Checkbox as L, ChoiceGroup as R, Radio as z } from "./components/Choice/index.js";
24
+ import { Table as B, TableBody as V, TableCell as H, TableEmpty as U, TableFrame as W, TableHead as ne, TableHeaderCell as G, TableRow as K, TableToolbar as q } from "./components/Table/index.js";
25
+ import { Popover as J } from "./components/Popover/index.js";
26
+ import { Menu as Y, MenuItem as X, MenuLabel as Z, MenuSeparator as re } from "./components/Menu/index.js";
27
+ import { Toast as ie, ToastProvider as ae, useToast as oe } from "./components/Toast/index.js";
28
+ import { Skeleton as se, SkeletonText as ce } from "./components/Skeleton/index.js";
29
+ import { SubNav as le, SubNavButton as ue, SubNavItem as de } from "./components/SubNav/index.js";
30
+ import { CheckboxCard as fe, RadioCard as pe, SelectionCardGroup as me } from "./components/SelectionCard/index.js";
31
+ import { Stepper as he } from "./components/Stepper/index.js";
32
+ import { AssetCard as Q, AssetCardSkeleton as $ } from "./components/AssetCard/index.js";
33
+ import { AssetGrid as ge, AssetGridEmpty as _e } from "./components/AssetGrid/index.js";
33
34
  import { RangeSlider as ve, Slider as ye } from "./components/Slider/index.js";
34
35
  import { ImageCropper as be, cropToBlob as xe } from "./components/ImageCropper/index.js";
35
36
  import { Container as Se } from "./components/Container/index.js";
@@ -38,4 +39,4 @@ import { Calendar as we, DateField as Te, DateRangeField as Ee, formatIsoDate as
38
39
  import { TagsInput as Oe } from "./components/TagsInput/index.js";
39
40
  import { Time as ke, formatAbsoluteDate as Ae, formatAbsoluteTime as je, formatRelativeTime as Me } from "./components/Time/index.js";
40
41
  import { Pagination as Ne } from "./components/Pagination/index.js";
41
- export { p as AppShell, me as AssetGrid, he as AssetGridEmpty, ge as AssetTile, _e as AssetTileSkeleton, P as Avatar, F as AvatarGroup, b as Badge, j as Board, M as BoardCard, N as BoardColumn, r as Button, m as ButtonGroup, we as Calendar, z as Checkbox, ue as CheckboxCard, B as ChoiceGroup, Se as Container, Te as DateField, Ee as DateRangeField, i as Drawer, A as EntryEditor, T as EntryPicker, h as Field, x as FieldAffix, I as Grid, L as GridItem, n as Icon, be as ImageCropper, Q as Menu, $ as MenuItem, ee as MenuLabel, te as MenuSeparator, g as Modal, E as NumberField, D as NumberRangeField, Ne as Pagination, Z as Popover, V as Radio, de as RadioCard, ve as RangeSlider, y as RichTextEditor, S as SearchField, Ce as Select, fe as SelectionCardGroup, a as SideNav, o as SideNavFooter, s as SideNavHeader, c as SideNavItem, l as SideNavSection, ae as Skeleton, oe as SkeletonText, ye as Slider, C as SortableList, w as SortableListItem, R as Stack, pe as Stepper, se as SubNav, ce as SubNavButton, le as SubNavItem, O as Switch, H as Table, U as TableBody, W as TableCell, G as TableEmpty, K as TableFrame, q as TableHead, J as TableHeaderCell, Y as TableRow, X as TableToolbar, Oe as TagsInput, _ as TextArea, v as TextField, ke as Time, ne as Toast, re as ToastProvider, d as TopNav, f as TopNavItem, xe as cropToBlob, Ae as formatAbsoluteDate, je as formatAbsoluteTime, De as formatIsoDate, Me as formatRelativeTime, e as iconNames, t as icons, u as useSideNavCollapsed, ie as useToast, k as validateEntryValues };
42
+ export { d as AppShell, Q as AssetCard, Q as AssetTile, $ as AssetCardSkeleton, $ as AssetTileSkeleton, ge as AssetGrid, _e as AssetGridEmpty, M as Avatar, N as AvatarGroup, v as Badge, j as Board, k as BoardCard, A as BoardColumn, te as Button, f as ButtonGroup, we as Calendar, L as Checkbox, fe as CheckboxCard, R as ChoiceGroup, Se as Container, Te as DateField, Ee as DateRangeField, n as Drawer, O as EntryEditor, C as EntryPicker, p as Field, y as FieldAffix, P as Grid, F as GridItem, ee as Icon, be as ImageCropper, Y as Menu, X as MenuItem, Z as MenuLabel, re as MenuSeparator, m as Modal, w as NumberField, T as NumberRangeField, Ne as Pagination, J as Popover, z as Radio, pe as RadioCard, ve as RangeSlider, _ as RichTextEditor, b as SearchField, Ce as Select, me as SelectionCardGroup, r as SideNav, i as SideNavFooter, a as SideNavHeader, o as SideNavItem, s as SideNavSection, se as Skeleton, ce as SkeletonText, ye as Slider, x as SortableList, S as SortableListItem, I as Stack, he as Stepper, le as SubNav, ue as SubNavButton, de as SubNavItem, E as Switch, B as Table, V as TableBody, H as TableCell, U as TableEmpty, W as TableFrame, ne as TableHead, G as TableHeaderCell, K as TableRow, q as TableToolbar, Oe as TagsInput, h as TextArea, g as TextField, ke as Time, ie as Toast, ae as ToastProvider, l as TopNav, u as TopNavItem, xe as cropToBlob, Ae as formatAbsoluteDate, je as formatAbsoluteTime, De as formatIsoDate, Me as formatRelativeTime, e as iconNames, t as icons, c as useSideNavCollapsed, oe as useToast, D as validateEntryValues };
@@ -0,0 +1,4 @@
1
+ import type { Ref, RefCallback } from "react";
2
+ /** Send the same node (and unmount notification) to internal and forwarded refs. */
3
+ export declare function mergeRefs<T>(...refs: (Ref<T> | undefined)[]): RefCallback<T>;
4
+ //# sourceMappingURL=mergeRefs.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeRefs.d.cts","sourceRoot":"","sources":["../../src/internal/mergeRefs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9C,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAO5E"}
@@ -0,0 +1,4 @@
1
+ import type { Ref, RefCallback } from "react";
2
+ /** Send the same node (and unmount notification) to internal and forwarded refs. */
3
+ export declare function mergeRefs<T>(...refs: (Ref<T> | undefined)[]): RefCallback<T>;
4
+ //# sourceMappingURL=mergeRefs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeRefs.d.ts","sourceRoot":"","sources":["../../src/internal/mergeRefs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9C,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAO5E"}
package/dist/styles.css CHANGED
@@ -1,6 +1,7 @@
1
1
  @layer reset, tokens, components;
2
2
  @import "./tokens.css";
3
3
  @import "./components/AppShell/style.css";
4
+ @import "./components/AssetCard/style.css";
4
5
  @import "./components/AssetGrid/style.css";
5
6
  @import "./components/Avatar/style.css";
6
7
  @import "./components/Badge/style.css";
@@ -0,0 +1,3 @@
1
+ import type { DragEndEvent } from "@dnd-kit/core";
2
+ export declare function dragEndEvent(overId: string | number | null, overData?: Record<string, unknown>, activeId?: string | number): DragEndEvent;
3
+ //# sourceMappingURL=dragEvent.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dragEvent.d.cts","sourceRoot":"","sources":["../../src/test/dragEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAE,MAAM,GAAG,MAAgB,GAAG,YAAY,CAiBlJ"}
@@ -0,0 +1,3 @@
1
+ import type { DragEndEvent } from "@dnd-kit/core";
2
+ export declare function dragEndEvent(overId: string | number | null, overData?: Record<string, unknown>, activeId?: string | number): DragEndEvent;
3
+ //# sourceMappingURL=dragEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dragEvent.d.ts","sourceRoot":"","sources":["../../src/test/dragEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAE,MAAM,GAAG,MAAgB,GAAG,YAAY,CAiBlJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namroodinc/liquid-editorial",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "A bold, accessible React component library for editorial products.",
5
5
  "author": "Namrood Inc",
6
6
  "license": "MIT",
@@ -98,7 +98,7 @@
98
98
  "test": "vitest run",
99
99
  "test:watch": "vitest",
100
100
  "test:coverage": "vitest run --coverage",
101
- "fallow": "fallow dead-code --no-cache --fail-on-issues",
101
+ "fallow": "fallow dead-code --no-cache --fail-on-issues && fallow dupes --no-cache --fail-on-issues",
102
102
  "fallow:report": "node scripts/generate-fallow-report.mjs",
103
103
  "package:smoke": "node scripts/package-smoke.mjs",
104
104
  "package:lint": "publint --strict",
@@ -1,2 +0,0 @@
1
- const e=require("../components/Field/index.cjs"),t=require("../components/TextField/index.cjs"),n=require("./RichTextEditor-DC_0oN1s.cjs"),r=require("../components/EntryPicker/index.cjs"),i=require("../components/NumberField/index.cjs"),a=require("../components/Switch/index.cjs");let o=require("react"),s=require("react/jsx-runtime");var c=new Set([`shortText`,`longText`,`richText`,`number`,`boolean`,`dateTime`,`asset`,`reference`]);function l(e){let t=new Set;for(let n of e.fields){if(!n.id?.trim()||t.has(n.id))throw Error(`Content model field IDs must be nonempty and unique.`);if(!c.has(n.type))throw Error(`Unsupported content field type: ${n.type}`);t.add(n.id)}}function u(e){if(typeof e!=`string`)return;let t=/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2})(?::(\d{2})(?:\.(\d{1,3}))?)?(?:Z|\+00:00)$/.exec(e);if(!t)return;let n=`${t[1]}:${t[2]??`00`}.${(t[3]??``).padEnd(3,`0`)}Z`,r=new Date(n);if(Number.isFinite(r.getTime())&&r.toISOString()===n)return n}function d(e,t){return!!e&&typeof e==`object`&&t in e&&typeof e[t]==`string`&&e[t].trim().length>0}function f(e){return!!e.text?.trim()||e.type===`horizontalRule`||!!e.content?.some(f)}function p(e,t){return l(e),Object.fromEntries(e.fields.flatMap(e=>{let r=Object.hasOwn(t,e.id)?t[e.id]:void 0,i;if(r===void 0)e.required&&(i=`${e.label} is required.`);else switch(e.type){case`shortText`:case`longText`:typeof r==`string`?e.required&&!r.trim()&&(i=`${e.label} is required.`):i=`Enter text.`;break;case`richText`:i=n.n(r),!i&&e.required&&!f(r)&&(i=`${e.label} is required.`);break;case`number`:(typeof r!=`number`||!Number.isFinite(r))&&(i=`Enter a finite number.`);break;case`boolean`:typeof r!=`boolean`&&(i=`Choose a boolean value.`);break;case`dateTime`:u(r)||(i=`Enter a valid UTC date and time.`);break;case`asset`:case`reference`:{let t=e.type===`asset`?`assetId`:`entryId`;(e.multiple?!Array.isArray(r)||!r.every(e=>d(e,t)):!d(r,t))?i=e.multiple?`Choose a list of ${e.type===`asset`?`assets`:`entries`}.`:`Choose an ${e.type===`asset`?`asset`:`entry`}.`:e.required&&Array.isArray(r)&&r.length===0&&(i=`${e.label} is required.`);break}}return i?[[e.id,i]]:[]}))}function m(e,t){let n=e.type===`asset`?`assetId`:`entryId`;return(Array.isArray(t)?t:t===void 0?[]:[t]).flatMap(e=>{if(!e||typeof e!=`object`||!(n in e))return[];let t=e[n];return typeof t==`string`?[t]:[]})}function h({model:c,value:l,defaultValue:d={},onValueChange:f,pickerItems:h={},errors:g={},isDisabled:_=!1,showAllErrors:v=!1,className:y,...b}){let[x,S]=(0,o.useState)(d),[C,w]=(0,o.useState)(()=>new Set),T=l??x,E=p(c,T),D=(e,t)=>{if(_)return;let n={...T};t===void 0?delete n[e]:n[e]=t,l===void 0&&S(n),w(t=>new Set(t).add(e)),f?.(n)};return(0,s.jsx)(`div`,{className:[`ds-entry-editor`,y].filter(Boolean).join(` `),...b,children:c.fields.map(o=>{let c=Object.hasOwn(T,o.id)?T[o.id]:void 0,l=o.type===`asset`||o.type===`reference`,d=o.type===`dateTime`?`${o.label} (UTC)`:o.label,f=g[o.id]??(v||C.has(o.id)?E[o.id]:void 0);return(0,s.jsx)(e.Field,{label:d,hint:o.hint,error:f,isRequired:o.required,isGroup:l,children:({required:e,...l})=>{switch(o.type){case`shortText`:case`longText`:{let n=o.type===`shortText`?t.TextField:t.TextArea;return(0,s.jsx)(n,{...l,required:e,disabled:_,placeholder:o.placeholder,value:typeof c==`string`?c:``,onChange:e=>D(o.id,e.target.value)})}case`number`:return(0,s.jsx)(i.NumberField,{...l,required:e,isDisabled:_,placeholder:o.placeholder,step:`any`,hasSteppers:!1,value:typeof c==`number`&&Number.isFinite(c)?c:``,onValueChange:e=>{(e===``||Number.isFinite(e))&&D(o.id,e===``?void 0:e)}});case`boolean`:return(0,s.jsx)(a.Switch,{...l,isDisabled:_,isSelected:c===!0,onSelectedChange:e=>D(o.id,e)});case`dateTime`:return(0,s.jsx)(t.TextField,{...l,required:e,disabled:_,type:`datetime-local`,step:`0.001`,value:u(c)?.slice(0,-1)??``,onChange:e=>D(o.id,u(`${e.target.value}Z`))});case`richText`:return(0,s.jsx)(n.t,{...l,label:o.label,isRequired:e,isDisabled:_,placeholder:o.placeholder,format:`json`,value:c===void 0?n.r:c,onChange:e=>D(o.id,e)});case`asset`:case`reference`:return(0,s.jsx)(`div`,{...l,role:`group`,children:(0,s.jsx)(r.EntryPicker,{items:h[o.id]??[],value:m(o,c),label:o.type===`asset`?`Assets`:`Entries`,addLabel:`Choose ${o.label}`,mode:o.multiple?`multiple`:`single`,isDisabled:_,onValueChange:e=>{if(o.type===`asset`){let t=e.map(e=>({assetId:e}));D(o.id,o.multiple?t:t[0])}else{let t=e.map(e=>({entryId:e}));D(o.id,o.multiple?t:t[0])}}})})}}},o.id)})})}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return h}});
2
- //# sourceMappingURL=EntryEditor-C32lKKnV.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntryEditor-C32lKKnV.cjs","names":["documentError","useState","Field","TextField","TextArea","NumberField","Switch","RichTextEditor","emptyDocument","EntryPicker","require_components_Field_index","require_components_TextField_index","require_RichTextEditor","require_components_EntryPicker_index","require_components_NumberField_index","require_components_Switch_index","react","react_jsx_runtime","fieldTypes","assertModel","ids","field","model","parseUtcDateTime","value","match","canonical","date","isLink","key","hasRichText","node","validateEntryValues","values","error","item","selectedIds","link","id","EntryEditor","rest","internal","setInternal","defaultValue","changed","setChanged","current","validation","commit","isDisabled","next","previous","onValueChange","className","stored","isPicker","label","errors","showAllErrors","accessibility","Control","event","required","pickerItems","links"],"sources":["../../src/components/EntryEditor/model.ts","../../src/components/EntryEditor/index.tsx"],"sourcesContent":["import type { JSONContent } from \"@tiptap/react\";\nimport { documentError } from \"../RichTextEditor/document\";\nimport type { RichTextDocument } from \"../RichTextEditor\";\n\ninterface ContentFieldBase {\n id: string;\n label: string;\n hint?: string;\n placeholder?: string;\n required?: boolean;\n}\n\nexport type ContentField = ContentFieldBase & (\n | { type: \"shortText\" | \"longText\" | \"richText\" | \"number\" | \"boolean\" | \"dateTime\"; multiple?: never }\n | { type: \"asset\" | \"reference\"; multiple?: boolean }\n);\n\nexport interface ContentModel {\n fields: readonly ContentField[];\n}\n\nexport interface AssetValue { assetId: string }\nexport interface ReferenceValue { entryId: string }\nexport type EntryFieldValue = string | number | boolean | RichTextDocument | AssetValue | ReferenceValue | AssetValue[] | ReferenceValue[];\nexport type EntryValues = Record<string, EntryFieldValue | undefined>;\nexport type EntryErrors = Partial<Record<string, string>>;\n\nconst fieldTypes = new Set([\"shortText\", \"longText\", \"richText\", \"number\", \"boolean\", \"dateTime\", \"asset\", \"reference\"]);\n\nfunction assertModel(model: ContentModel) {\n const ids = new Set<string>();\n for (const field of model.fields) {\n if (!field.id?.trim() || ids.has(field.id)) throw new Error(\"Content model field IDs must be nonempty and unique.\");\n if (!fieldTypes.has(field.type)) throw new Error(`Unsupported content field type: ${field.type}`);\n ids.add(field.id);\n }\n}\n\n/** Accept UTC ISO strings without rolling invalid dates into the next month. */\nexport function parseUtcDateTime(value: unknown): string | undefined {\n if (typeof value !== \"string\") return;\n const match = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?(?:Z|\\+00:00)$/.exec(value);\n if (!match) return;\n const canonical = `${match[1]}:${match[2] ?? \"00\"}.${(match[3] ?? \"\").padEnd(3, \"0\")}Z`;\n const date = new Date(canonical);\n if (Number.isFinite(date.getTime()) && date.toISOString() === canonical) return canonical;\n}\n\nfunction isLink(value: unknown, key: \"assetId\" | \"entryId\"): boolean {\n return !!value && typeof value === \"object\" && key in value &&\n typeof (value as Record<string, unknown>)[key] === \"string\" &&\n ((value as Record<string, string>)[key]).trim().length > 0;\n}\n\nfunction hasRichText(node: JSONContent): boolean {\n return !!node.text?.trim() || node.type === \"horizontalRule\" || !!node.content?.some(hasRichText);\n}\n\n/** Validate data loaded from JSON as well as values emitted by EntryEditor. */\nexport function validateEntryValues(model: ContentModel, values: Record<string, unknown>): EntryErrors {\n assertModel(model);\n return Object.fromEntries(model.fields.flatMap((field): [string, string][] => {\n const value = Object.hasOwn(values, field.id) ? values[field.id] : undefined;\n let error: string | undefined;\n if (value === undefined) {\n if (field.required) error = `${field.label} is required.`;\n } else {\n switch (field.type) {\n case \"shortText\":\n case \"longText\":\n if (typeof value !== \"string\") error = \"Enter text.\";\n else if (field.required && !value.trim()) error = `${field.label} is required.`;\n break;\n case \"richText\":\n error = documentError(value);\n if (!error && field.required && !hasRichText(value as RichTextDocument)) error = `${field.label} is required.`;\n break;\n case \"number\":\n if (typeof value !== \"number\" || !Number.isFinite(value)) error = \"Enter a finite number.\";\n break;\n case \"boolean\":\n if (typeof value !== \"boolean\") error = \"Choose a boolean value.\";\n break;\n case \"dateTime\":\n if (!parseUtcDateTime(value)) error = \"Enter a valid UTC date and time.\";\n break;\n case \"asset\":\n case \"reference\": {\n const key = field.type === \"asset\" ? \"assetId\" : \"entryId\";\n if (field.multiple ? !Array.isArray(value) || !value.every((item) => isLink(item, key)) : !isLink(value, key)) {\n error = field.multiple\n ? `Choose a list of ${field.type === \"asset\" ? \"assets\" : \"entries\"}.`\n : `Choose an ${field.type === \"asset\" ? \"asset\" : \"entry\"}.`;\n } else if (field.required && Array.isArray(value) && value.length === 0) error = `${field.label} is required.`;\n break;\n }\n }\n }\n return error ? [[field.id, error]] : [];\n }));\n}\n","import { useState, type HTMLAttributes, type ReactNode } from \"react\";\nimport { EntryPicker, type EntryItem } from \"../EntryPicker\";\nimport { Field } from \"../Field\";\nimport { NumberField } from \"../NumberField\";\nimport { RichTextEditor, type RichTextDocument } from \"../RichTextEditor\";\nimport { emptyDocument } from \"../RichTextEditor/document\";\nimport { Switch } from \"../Switch\";\nimport { TextArea, TextField } from \"../TextField\";\nimport { parseUtcDateTime, validateEntryValues, type ContentField, type ContentModel, type EntryErrors, type EntryFieldValue, type EntryValues } from \"./model\";\nimport \"./style.css\";\n\nexport { validateEntryValues } from \"./model\";\nexport type { AssetValue, ContentField, ContentModel, EntryErrors, EntryFieldValue, EntryValues, ReferenceValue } from \"./model\";\n\nexport interface EntryEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"onChange\"> {\n model: ContentModel;\n value?: EntryValues;\n defaultValue?: EntryValues;\n onValueChange?: (values: EntryValues) => void;\n /** Available assets or entries, keyed by content field ID. */\n pickerItems?: Record<string, EntryItem[]>;\n /** App-provided messages take precedence over built-in validation. */\n errors?: EntryErrors;\n isDisabled?: boolean;\n /** Reveal validation for untouched fields, for example after a submit attempt. */\n showAllErrors?: boolean;\n}\n\nfunction selectedIds(field: ContentField, value: EntryFieldValue | undefined): string[] {\n const key = field.type === \"asset\" ? \"assetId\" : \"entryId\";\n const links = Array.isArray(value) ? value : value === undefined ? [] : [value];\n return links.flatMap((link) => {\n if (!link || typeof link !== \"object\" || !(key in link)) return [];\n const id = (link as unknown as Record<string, unknown>)[key];\n return typeof id === \"string\" ? [id] : [];\n });\n}\n\n/** An ordered set of content inputs; submission and persistence belong to the app. */\nexport function EntryEditor({\n model,\n value,\n defaultValue = {},\n onValueChange,\n pickerItems = {},\n errors = {},\n isDisabled = false,\n showAllErrors = false,\n className,\n ...rest\n}: EntryEditorProps) {\n const [internal, setInternal] = useState<EntryValues>(defaultValue);\n const [changed, setChanged] = useState<Set<string>>(() => new Set());\n const current = value ?? internal;\n const validation = validateEntryValues(model, current);\n\n const commit = (id: string, next: EntryFieldValue | undefined) => {\n if (isDisabled) return;\n const values = { ...current };\n if (next === undefined) delete values[id];\n else values[id] = next;\n if (value === undefined) setInternal(values);\n setChanged((previous) => new Set(previous).add(id));\n onValueChange?.(values);\n };\n\n return (\n <div className={[\"ds-entry-editor\", className].filter(Boolean).join(\" \")} {...rest}>\n {model.fields.map((field) => {\n const stored = Object.hasOwn(current, field.id) ? current[field.id] : undefined;\n const isPicker = field.type === \"asset\" || field.type === \"reference\";\n const label = field.type === \"dateTime\" ? `${field.label} (UTC)` : field.label;\n const error = errors[field.id] ?? (showAllErrors || changed.has(field.id) ? validation[field.id] : undefined);\n return (\n <Field key={field.id} label={label} hint={field.hint} error={error} isRequired={field.required} isGroup={isPicker}>\n {({ required, ...accessibility }): ReactNode => {\n switch (field.type) {\n case \"shortText\":\n case \"longText\": {\n const Control = field.type === \"shortText\" ? TextField : TextArea;\n return <Control {...accessibility} required={required} disabled={isDisabled} placeholder={field.placeholder}\n value={typeof stored === \"string\" ? stored : \"\"} onChange={(event) => commit(field.id, event.target.value)} />;\n }\n case \"number\":\n return <NumberField {...accessibility} required={required} isDisabled={isDisabled} placeholder={field.placeholder} step=\"any\"\n hasSteppers={false} value={typeof stored === \"number\" && Number.isFinite(stored) ? stored : \"\"}\n onValueChange={(next) => { if (next === \"\" || Number.isFinite(next)) commit(field.id, next === \"\" ? undefined : next); }} />;\n case \"boolean\":\n return <Switch {...accessibility} isDisabled={isDisabled} isSelected={stored === true}\n onSelectedChange={(next) => commit(field.id, next)} />;\n case \"dateTime\":\n return <TextField {...accessibility} required={required} disabled={isDisabled} type=\"datetime-local\" step=\"0.001\"\n value={parseUtcDateTime(stored)?.slice(0, -1) ?? \"\"}\n onChange={(event) => commit(field.id, parseUtcDateTime(`${event.target.value}Z`))} />;\n case \"richText\":\n return <RichTextEditor {...accessibility} label={field.label} isRequired={required} isDisabled={isDisabled}\n placeholder={field.placeholder} format=\"json\" value={stored === undefined ? emptyDocument : stored as RichTextDocument}\n onChange={(next) => commit(field.id, next)} />;\n case \"asset\":\n case \"reference\":\n return <div {...accessibility} role=\"group\">\n <EntryPicker items={pickerItems[field.id] ?? []} value={selectedIds(field, stored)}\n label={field.type === \"asset\" ? \"Assets\" : \"Entries\"} addLabel={`Choose ${field.label}`}\n mode={field.multiple ? \"multiple\" : \"single\"} isDisabled={isDisabled}\n onValueChange={(ids) => {\n if (field.type === \"asset\") {\n const links = ids.map((assetId) => ({ assetId }));\n commit(field.id, field.multiple ? links : links[0]);\n } else {\n const links = ids.map((entryId) => ({ entryId }));\n commit(field.id, field.multiple ? links : links[0]);\n }\n }} />\n </div>;\n }\n }}\n </Field>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,181 +0,0 @@
1
- import { Field as e } from "../components/Field/index.js";
2
- import { TextArea as t, TextField as n } from "../components/TextField/index.js";
3
- import { n as r, r as i, t as a } from "./RichTextEditor-CSpjsL1z.js";
4
- import { EntryPicker as o } from "../components/EntryPicker/index.js";
5
- import { NumberField as s } from "../components/NumberField/index.js";
6
- import { Switch as c } from "../components/Switch/index.js";
7
- import { useState as l } from "react";
8
- import { jsx as u } from "react/jsx-runtime";
9
- //#region src/components/EntryEditor/model.ts
10
- var d = /* @__PURE__ */ new Set([
11
- "shortText",
12
- "longText",
13
- "richText",
14
- "number",
15
- "boolean",
16
- "dateTime",
17
- "asset",
18
- "reference"
19
- ]);
20
- function f(e) {
21
- let t = /* @__PURE__ */ new Set();
22
- for (let n of e.fields) {
23
- if (!n.id?.trim() || t.has(n.id)) throw Error("Content model field IDs must be nonempty and unique.");
24
- if (!d.has(n.type)) throw Error(`Unsupported content field type: ${n.type}`);
25
- t.add(n.id);
26
- }
27
- }
28
- function p(e) {
29
- if (typeof e != "string") return;
30
- let t = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2})(?::(\d{2})(?:\.(\d{1,3}))?)?(?:Z|\+00:00)$/.exec(e);
31
- if (!t) return;
32
- let n = `${t[1]}:${t[2] ?? "00"}.${(t[3] ?? "").padEnd(3, "0")}Z`, r = new Date(n);
33
- if (Number.isFinite(r.getTime()) && r.toISOString() === n) return n;
34
- }
35
- function m(e, t) {
36
- return !!e && typeof e == "object" && t in e && typeof e[t] == "string" && e[t].trim().length > 0;
37
- }
38
- function h(e) {
39
- return !!e.text?.trim() || e.type === "horizontalRule" || !!e.content?.some(h);
40
- }
41
- function g(e, t) {
42
- return f(e), Object.fromEntries(e.fields.flatMap((e) => {
43
- let n = Object.hasOwn(t, e.id) ? t[e.id] : void 0, i;
44
- if (n === void 0) e.required && (i = `${e.label} is required.`);
45
- else switch (e.type) {
46
- case "shortText":
47
- case "longText":
48
- typeof n == "string" ? e.required && !n.trim() && (i = `${e.label} is required.`) : i = "Enter text.";
49
- break;
50
- case "richText":
51
- i = r(n), !i && e.required && !h(n) && (i = `${e.label} is required.`);
52
- break;
53
- case "number":
54
- (typeof n != "number" || !Number.isFinite(n)) && (i = "Enter a finite number.");
55
- break;
56
- case "boolean":
57
- typeof n != "boolean" && (i = "Choose a boolean value.");
58
- break;
59
- case "dateTime":
60
- p(n) || (i = "Enter a valid UTC date and time.");
61
- break;
62
- case "asset":
63
- case "reference": {
64
- let t = e.type === "asset" ? "assetId" : "entryId";
65
- (e.multiple ? !Array.isArray(n) || !n.every((e) => m(e, t)) : !m(n, t)) ? i = e.multiple ? `Choose a list of ${e.type === "asset" ? "assets" : "entries"}.` : `Choose an ${e.type === "asset" ? "asset" : "entry"}.` : e.required && Array.isArray(n) && n.length === 0 && (i = `${e.label} is required.`);
66
- break;
67
- }
68
- }
69
- return i ? [[e.id, i]] : [];
70
- }));
71
- }
72
- //#endregion
73
- //#region src/components/EntryEditor/index.tsx
74
- function _(e, t) {
75
- let n = e.type === "asset" ? "assetId" : "entryId";
76
- return (Array.isArray(t) ? t : t === void 0 ? [] : [t]).flatMap((e) => {
77
- if (!e || typeof e != "object" || !(n in e)) return [];
78
- let t = e[n];
79
- return typeof t == "string" ? [t] : [];
80
- });
81
- }
82
- function v({ model: r, value: d, defaultValue: f = {}, onValueChange: m, pickerItems: h = {}, errors: v = {}, isDisabled: y = !1, showAllErrors: b = !1, className: x, ...S }) {
83
- let [C, w] = l(f), [T, E] = l(() => /* @__PURE__ */ new Set()), D = d ?? C, O = g(r, D), k = (e, t) => {
84
- if (y) return;
85
- let n = { ...D };
86
- t === void 0 ? delete n[e] : n[e] = t, d === void 0 && w(n), E((t) => new Set(t).add(e)), m?.(n);
87
- };
88
- return /* @__PURE__ */ u("div", {
89
- className: ["ds-entry-editor", x].filter(Boolean).join(" "),
90
- ...S,
91
- children: r.fields.map((r) => {
92
- let l = Object.hasOwn(D, r.id) ? D[r.id] : void 0, d = r.type === "asset" || r.type === "reference", f = r.type === "dateTime" ? `${r.label} (UTC)` : r.label, m = v[r.id] ?? (b || T.has(r.id) ? O[r.id] : void 0);
93
- return /* @__PURE__ */ u(e, {
94
- label: f,
95
- hint: r.hint,
96
- error: m,
97
- isRequired: r.required,
98
- isGroup: d,
99
- children: ({ required: e, ...d }) => {
100
- switch (r.type) {
101
- case "shortText":
102
- case "longText": {
103
- let i = r.type === "shortText" ? n : t;
104
- return /* @__PURE__ */ u(i, {
105
- ...d,
106
- required: e,
107
- disabled: y,
108
- placeholder: r.placeholder,
109
- value: typeof l == "string" ? l : "",
110
- onChange: (e) => k(r.id, e.target.value)
111
- });
112
- }
113
- case "number": return /* @__PURE__ */ u(s, {
114
- ...d,
115
- required: e,
116
- isDisabled: y,
117
- placeholder: r.placeholder,
118
- step: "any",
119
- hasSteppers: !1,
120
- value: typeof l == "number" && Number.isFinite(l) ? l : "",
121
- onValueChange: (e) => {
122
- (e === "" || Number.isFinite(e)) && k(r.id, e === "" ? void 0 : e);
123
- }
124
- });
125
- case "boolean": return /* @__PURE__ */ u(c, {
126
- ...d,
127
- isDisabled: y,
128
- isSelected: l === !0,
129
- onSelectedChange: (e) => k(r.id, e)
130
- });
131
- case "dateTime": return /* @__PURE__ */ u(n, {
132
- ...d,
133
- required: e,
134
- disabled: y,
135
- type: "datetime-local",
136
- step: "0.001",
137
- value: p(l)?.slice(0, -1) ?? "",
138
- onChange: (e) => k(r.id, p(`${e.target.value}Z`))
139
- });
140
- case "richText": return /* @__PURE__ */ u(a, {
141
- ...d,
142
- label: r.label,
143
- isRequired: e,
144
- isDisabled: y,
145
- placeholder: r.placeholder,
146
- format: "json",
147
- value: l === void 0 ? i : l,
148
- onChange: (e) => k(r.id, e)
149
- });
150
- case "asset":
151
- case "reference": return /* @__PURE__ */ u("div", {
152
- ...d,
153
- role: "group",
154
- children: /* @__PURE__ */ u(o, {
155
- items: h[r.id] ?? [],
156
- value: _(r, l),
157
- label: r.type === "asset" ? "Assets" : "Entries",
158
- addLabel: `Choose ${r.label}`,
159
- mode: r.multiple ? "multiple" : "single",
160
- isDisabled: y,
161
- onValueChange: (e) => {
162
- if (r.type === "asset") {
163
- let t = e.map((e) => ({ assetId: e }));
164
- k(r.id, r.multiple ? t : t[0]);
165
- } else {
166
- let t = e.map((e) => ({ entryId: e }));
167
- k(r.id, r.multiple ? t : t[0]);
168
- }
169
- }
170
- })
171
- });
172
- }
173
- }
174
- }, r.id);
175
- })
176
- });
177
- }
178
- //#endregion
179
- export { g as n, v as t };
180
-
181
- //# sourceMappingURL=EntryEditor-xVuiqtFo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EntryEditor-xVuiqtFo.js","names":["documentError","emptyDocument","RichTextEditor","fieldTypes","assertModel","ids","field","model","parseUtcDateTime","value","match","canonical","date","isLink","key","hasRichText","node","validateEntryValues","values","error","item","selectedIds","link","id","EntryEditor","rest","internal","setInternal","useState","defaultValue","changed","setChanged","current","validation","commit","isDisabled","next","previous","onValueChange","className","stored","isPicker","label","errors","showAllErrors","Field","accessibility","Control","TextField","TextArea","event","NumberField","Switch","required","EntryPicker","pickerItems","links"],"sources":["../../src/components/EntryEditor/model.ts","../../src/components/EntryEditor/index.tsx"],"sourcesContent":["import type { JSONContent } from \"@tiptap/react\";\nimport { documentError } from \"../RichTextEditor/document\";\nimport type { RichTextDocument } from \"../RichTextEditor\";\n\ninterface ContentFieldBase {\n id: string;\n label: string;\n hint?: string;\n placeholder?: string;\n required?: boolean;\n}\n\nexport type ContentField = ContentFieldBase & (\n | { type: \"shortText\" | \"longText\" | \"richText\" | \"number\" | \"boolean\" | \"dateTime\"; multiple?: never }\n | { type: \"asset\" | \"reference\"; multiple?: boolean }\n);\n\nexport interface ContentModel {\n fields: readonly ContentField[];\n}\n\nexport interface AssetValue { assetId: string }\nexport interface ReferenceValue { entryId: string }\nexport type EntryFieldValue = string | number | boolean | RichTextDocument | AssetValue | ReferenceValue | AssetValue[] | ReferenceValue[];\nexport type EntryValues = Record<string, EntryFieldValue | undefined>;\nexport type EntryErrors = Partial<Record<string, string>>;\n\nconst fieldTypes = new Set([\"shortText\", \"longText\", \"richText\", \"number\", \"boolean\", \"dateTime\", \"asset\", \"reference\"]);\n\nfunction assertModel(model: ContentModel) {\n const ids = new Set<string>();\n for (const field of model.fields) {\n if (!field.id?.trim() || ids.has(field.id)) throw new Error(\"Content model field IDs must be nonempty and unique.\");\n if (!fieldTypes.has(field.type)) throw new Error(`Unsupported content field type: ${field.type}`);\n ids.add(field.id);\n }\n}\n\n/** Accept UTC ISO strings without rolling invalid dates into the next month. */\nexport function parseUtcDateTime(value: unknown): string | undefined {\n if (typeof value !== \"string\") return;\n const match = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?(?:Z|\\+00:00)$/.exec(value);\n if (!match) return;\n const canonical = `${match[1]}:${match[2] ?? \"00\"}.${(match[3] ?? \"\").padEnd(3, \"0\")}Z`;\n const date = new Date(canonical);\n if (Number.isFinite(date.getTime()) && date.toISOString() === canonical) return canonical;\n}\n\nfunction isLink(value: unknown, key: \"assetId\" | \"entryId\"): boolean {\n return !!value && typeof value === \"object\" && key in value &&\n typeof (value as Record<string, unknown>)[key] === \"string\" &&\n ((value as Record<string, string>)[key]).trim().length > 0;\n}\n\nfunction hasRichText(node: JSONContent): boolean {\n return !!node.text?.trim() || node.type === \"horizontalRule\" || !!node.content?.some(hasRichText);\n}\n\n/** Validate data loaded from JSON as well as values emitted by EntryEditor. */\nexport function validateEntryValues(model: ContentModel, values: Record<string, unknown>): EntryErrors {\n assertModel(model);\n return Object.fromEntries(model.fields.flatMap((field): [string, string][] => {\n const value = Object.hasOwn(values, field.id) ? values[field.id] : undefined;\n let error: string | undefined;\n if (value === undefined) {\n if (field.required) error = `${field.label} is required.`;\n } else {\n switch (field.type) {\n case \"shortText\":\n case \"longText\":\n if (typeof value !== \"string\") error = \"Enter text.\";\n else if (field.required && !value.trim()) error = `${field.label} is required.`;\n break;\n case \"richText\":\n error = documentError(value);\n if (!error && field.required && !hasRichText(value as RichTextDocument)) error = `${field.label} is required.`;\n break;\n case \"number\":\n if (typeof value !== \"number\" || !Number.isFinite(value)) error = \"Enter a finite number.\";\n break;\n case \"boolean\":\n if (typeof value !== \"boolean\") error = \"Choose a boolean value.\";\n break;\n case \"dateTime\":\n if (!parseUtcDateTime(value)) error = \"Enter a valid UTC date and time.\";\n break;\n case \"asset\":\n case \"reference\": {\n const key = field.type === \"asset\" ? \"assetId\" : \"entryId\";\n if (field.multiple ? !Array.isArray(value) || !value.every((item) => isLink(item, key)) : !isLink(value, key)) {\n error = field.multiple\n ? `Choose a list of ${field.type === \"asset\" ? \"assets\" : \"entries\"}.`\n : `Choose an ${field.type === \"asset\" ? \"asset\" : \"entry\"}.`;\n } else if (field.required && Array.isArray(value) && value.length === 0) error = `${field.label} is required.`;\n break;\n }\n }\n }\n return error ? [[field.id, error]] : [];\n }));\n}\n","import { useState, type HTMLAttributes, type ReactNode } from \"react\";\nimport { EntryPicker, type EntryItem } from \"../EntryPicker\";\nimport { Field } from \"../Field\";\nimport { NumberField } from \"../NumberField\";\nimport { RichTextEditor, type RichTextDocument } from \"../RichTextEditor\";\nimport { emptyDocument } from \"../RichTextEditor/document\";\nimport { Switch } from \"../Switch\";\nimport { TextArea, TextField } from \"../TextField\";\nimport { parseUtcDateTime, validateEntryValues, type ContentField, type ContentModel, type EntryErrors, type EntryFieldValue, type EntryValues } from \"./model\";\nimport \"./style.css\";\n\nexport { validateEntryValues } from \"./model\";\nexport type { AssetValue, ContentField, ContentModel, EntryErrors, EntryFieldValue, EntryValues, ReferenceValue } from \"./model\";\n\nexport interface EntryEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"onChange\"> {\n model: ContentModel;\n value?: EntryValues;\n defaultValue?: EntryValues;\n onValueChange?: (values: EntryValues) => void;\n /** Available assets or entries, keyed by content field ID. */\n pickerItems?: Record<string, EntryItem[]>;\n /** App-provided messages take precedence over built-in validation. */\n errors?: EntryErrors;\n isDisabled?: boolean;\n /** Reveal validation for untouched fields, for example after a submit attempt. */\n showAllErrors?: boolean;\n}\n\nfunction selectedIds(field: ContentField, value: EntryFieldValue | undefined): string[] {\n const key = field.type === \"asset\" ? \"assetId\" : \"entryId\";\n const links = Array.isArray(value) ? value : value === undefined ? [] : [value];\n return links.flatMap((link) => {\n if (!link || typeof link !== \"object\" || !(key in link)) return [];\n const id = (link as unknown as Record<string, unknown>)[key];\n return typeof id === \"string\" ? [id] : [];\n });\n}\n\n/** An ordered set of content inputs; submission and persistence belong to the app. */\nexport function EntryEditor({\n model,\n value,\n defaultValue = {},\n onValueChange,\n pickerItems = {},\n errors = {},\n isDisabled = false,\n showAllErrors = false,\n className,\n ...rest\n}: EntryEditorProps) {\n const [internal, setInternal] = useState<EntryValues>(defaultValue);\n const [changed, setChanged] = useState<Set<string>>(() => new Set());\n const current = value ?? internal;\n const validation = validateEntryValues(model, current);\n\n const commit = (id: string, next: EntryFieldValue | undefined) => {\n if (isDisabled) return;\n const values = { ...current };\n if (next === undefined) delete values[id];\n else values[id] = next;\n if (value === undefined) setInternal(values);\n setChanged((previous) => new Set(previous).add(id));\n onValueChange?.(values);\n };\n\n return (\n <div className={[\"ds-entry-editor\", className].filter(Boolean).join(\" \")} {...rest}>\n {model.fields.map((field) => {\n const stored = Object.hasOwn(current, field.id) ? current[field.id] : undefined;\n const isPicker = field.type === \"asset\" || field.type === \"reference\";\n const label = field.type === \"dateTime\" ? `${field.label} (UTC)` : field.label;\n const error = errors[field.id] ?? (showAllErrors || changed.has(field.id) ? validation[field.id] : undefined);\n return (\n <Field key={field.id} label={label} hint={field.hint} error={error} isRequired={field.required} isGroup={isPicker}>\n {({ required, ...accessibility }): ReactNode => {\n switch (field.type) {\n case \"shortText\":\n case \"longText\": {\n const Control = field.type === \"shortText\" ? TextField : TextArea;\n return <Control {...accessibility} required={required} disabled={isDisabled} placeholder={field.placeholder}\n value={typeof stored === \"string\" ? stored : \"\"} onChange={(event) => commit(field.id, event.target.value)} />;\n }\n case \"number\":\n return <NumberField {...accessibility} required={required} isDisabled={isDisabled} placeholder={field.placeholder} step=\"any\"\n hasSteppers={false} value={typeof stored === \"number\" && Number.isFinite(stored) ? stored : \"\"}\n onValueChange={(next) => { if (next === \"\" || Number.isFinite(next)) commit(field.id, next === \"\" ? undefined : next); }} />;\n case \"boolean\":\n return <Switch {...accessibility} isDisabled={isDisabled} isSelected={stored === true}\n onSelectedChange={(next) => commit(field.id, next)} />;\n case \"dateTime\":\n return <TextField {...accessibility} required={required} disabled={isDisabled} type=\"datetime-local\" step=\"0.001\"\n value={parseUtcDateTime(stored)?.slice(0, -1) ?? \"\"}\n onChange={(event) => commit(field.id, parseUtcDateTime(`${event.target.value}Z`))} />;\n case \"richText\":\n return <RichTextEditor {...accessibility} label={field.label} isRequired={required} isDisabled={isDisabled}\n placeholder={field.placeholder} format=\"json\" value={stored === undefined ? emptyDocument : stored as RichTextDocument}\n onChange={(next) => commit(field.id, next)} />;\n case \"asset\":\n case \"reference\":\n return <div {...accessibility} role=\"group\">\n <EntryPicker items={pickerItems[field.id] ?? []} value={selectedIds(field, stored)}\n label={field.type === \"asset\" ? \"Assets\" : \"Entries\"} addLabel={`Choose ${field.label}`}\n mode={field.multiple ? \"multiple\" : \"single\"} isDisabled={isDisabled}\n onValueChange={(ids) => {\n if (field.type === \"asset\") {\n const links = ids.map((assetId) => ({ assetId }));\n commit(field.id, field.multiple ? links : links[0]);\n } else {\n const links = ids.map((entryId) => ({ entryId }));\n commit(field.id, field.multiple ? links : links[0]);\n }\n }} />\n </div>;\n }\n }}\n </Field>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AA2BA,IAAMG,oBAAa,IAAI,IAAI;CAAC;CAAa;CAAY;CAAY;CAAU;CAAW;CAAY;CAAS;AAAW,CAAC;AAEvH,SAASC,EAAY,GAAqB;CACxC,IAAMC,oBAAM,IAAI,IAAY;CAC5B,KAAK,IAAMC,KAASC,EAAM,QAAQ;EAChC,IAAI,CAACD,EAAM,IAAI,KAAK,KAAKD,EAAI,IAAIC,EAAM,EAAE,GAAG,MAAU,MAAM,sDAAsD;EAClH,IAAI,CAACH,EAAW,IAAIG,EAAM,IAAI,GAAG,MAAU,MAAM,mCAAmCA,EAAM,MAAM;EAChG,EAAI,IAAIA,EAAM,EAAE;CAClB;AACF;AAGA,SAAgBE,EAAiB,GAAoC;CACnE,IAAI,OAAOC,KAAU,UAAU;CAC/B,IAAMC,IAAQ,8EAA8E,KAAKD,CAAK;CACtG,IAAI,CAACC,GAAO;CACZ,IAAMC,IAAY,GAAGD,EAAM,GAAG,GAAGA,EAAM,MAAM,KAAK,IAAIA,EAAM,MAAM,GAAA,CAAI,OAAO,GAAG,GAAG,EAAE,IAC/EE,IAAO,IAAI,KAAKD,CAAS;CAC/B,IAAI,OAAO,SAASC,EAAK,QAAQ,CAAC,KAAKA,EAAK,YAAY,MAAMD,GAAW,OAAOA;AAClF;AAEA,SAASE,EAAO,GAAgB,GAAqC;CACnE,OAAO,CAAC,CAACJ,KAAS,OAAOA,KAAU,YAAYK,KAAOL,KACpD,OAAQA,EAAkCK,MAAS,YACjDL,EAAiCK,EAAI,CAAE,KAAK,CAAC,CAAC,SAAS;AAC7D;AAEA,SAASC,EAAY,GAA4B;CAC/C,OAAO,CAAC,CAACC,EAAK,MAAM,KAAK,KAAKA,EAAK,SAAS,oBAAoB,CAAC,CAACA,EAAK,SAAS,KAAKD,CAAW;AAClG;AAGA,SAAgBE,EAAoB,GAAqB,GAA8C;CAErG,OADAb,EAAYG,CAAK,GACV,OAAO,YAAYA,EAAM,OAAO,SAAS,MAA8B;EAC5E,IAAME,IAAQ,OAAO,OAAOS,GAAQZ,EAAM,EAAE,IAAIY,EAAOZ,EAAM,MAAM,KAAA,GAC/Da;EACJ,IAAIV,MAAU,KAAA,GACR,AAAAH,EAAM,aAAU,IAAQ,GAAGA,EAAM,MAAM;OAE3C,QAAQA,EAAM,MAAd;GACE,KAAK;GACL,KAAK;IACH,AAAI,OAAOG,KAAU,WACZH,EAAM,YAAY,CAACG,EAAM,KAAK,MAAG,IAAQ,GAAGH,EAAM,MAAM,kBADlC,IAAQ;IAEvC;GACF,KAAK;IAEH,AADA,IAAQN,EAAcS,CAAK,GACvB,CAACU,KAASb,EAAM,YAAY,CAACS,EAAYN,CAAyB,MAAG,IAAQ,GAAGH,EAAM,MAAM;IAChG;GACF,KAAK;IACH,CAAI,OAAOG,KAAU,YAAY,CAAC,OAAO,SAASA,CAAK,OAAG,IAAQ;IAClE;GACF,KAAK;IACH,AAAI,OAAOA,KAAU,cAAW,IAAQ;IACxC;GACF,KAAK;IACH,AAAKD,EAAiBC,CAAK,MAAG,IAAQ;IACtC;GACF,KAAK;GACL,KAAK,aAAa;IAChB,IAAMK,IAAMR,EAAM,SAAS,UAAU,YAAY;IACjD,CAAIA,EAAM,WAAW,CAAC,MAAM,QAAQG,CAAK,KAAK,CAACA,EAAM,OAAO,MAASI,EAAOO,GAAMN,CAAG,CAAC,IAAI,CAACD,EAAOJ,GAAOK,CAAG,KAC1G,IAAQR,EAAM,WACV,oBAAoBA,EAAM,SAAS,UAAU,WAAW,UAAU,KAClE,aAAaA,EAAM,SAAS,UAAU,UAAU,QAAQ,KACnDA,EAAM,YAAY,MAAM,QAAQG,CAAK,KAAKA,EAAM,WAAW,MAAG,IAAQ,GAAGH,EAAM,MAAM;IAChG;GACF;EACF;EAEF,OAAOa,IAAQ,CAAC,CAACb,EAAM,IAAIa,CAAK,CAAC,IAAI,CAAC;CACxC,CAAC,CAAC;AACJ;;;ACxEA,SAASE,EAAY,GAAqB,GAA8C;CACtF,IAAMP,IAAMR,EAAM,SAAS,UAAU,YAAY;CAEjD,QADc,MAAM,QAAQG,CAAK,IAAIA,IAAQA,MAAU,KAAA,IAAY,CAAC,IAAI,CAACA,CAAK,EAAA,CACjE,SAAS,MAAS;EAC7B,IAAI,CAACa,KAAQ,OAAOA,KAAS,YAAY,EAAER,KAAOQ,IAAO,OAAO,CAAC;EACjE,IAAMC,IAAMD,EAA4CR;EACxD,OAAO,OAAOS,KAAO,WAAW,CAACA,CAAE,IAAI,CAAC;CAC1C,CAAC;AACH;AAGA,SAAgBC,EAAY,EAC1B,UACA,UACA,kBAAe,CAAC,GAChB,kBACA,iBAAc,CAAC,GACf,YAAS,CAAC,GACV,gBAAa,IACb,mBAAgB,IAChB,cACA,GAAGC,KACgB;CACnB,IAAM,CAACC,GAAUC,KAAeC,EAAsBC,CAAY,GAC5D,CAACC,GAASC,KAAcH,wBAA4B,IAAI,IAAI,CAAC,GAC7DI,IAAUvB,KAASiB,GACnBO,IAAahB,EAAoBV,GAAOyB,CAAO,GAE/CE,KAAU,GAAY,MAAsC;EAChE,IAAIC,GAAY;EAChB,IAAMjB,IAAS,EAAE,GAAGc,EAAQ;EAK5B,AAJII,MAAS,KAAA,IAAW,OAAOlB,EAAOK,KACjC,EAAOA,KAAMa,GACd3B,MAAU,KAAA,KAAWkB,EAAYT,CAAM,GAC3Ca,GAAY,MAAa,IAAI,IAAIM,CAAQ,CAAC,CAAC,IAAId,CAAE,CAAC,GAClDe,IAAgBpB,CAAM;CACxB;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,CAAC,mBAAmBqB,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAAG,GAAId;EAC3E,UAAAlB,EAAM,OAAO,KAAK,MAAU;GAC3B,IAAMiC,IAAS,OAAO,OAAOR,GAAS1B,EAAM,EAAE,IAAI0B,EAAQ1B,EAAM,MAAM,KAAA,GAChEmC,IAAWnC,EAAM,SAAS,WAAWA,EAAM,SAAS,aACpDoC,IAAQpC,EAAM,SAAS,aAAa,GAAGA,EAAM,MAAM,UAAUA,EAAM,OACnEa,IAAQwB,EAAOrC,EAAM,QAAQsC,KAAiBd,EAAQ,IAAIxB,EAAM,EAAE,IAAI2B,EAAW3B,EAAM,MAAM,KAAA;GACnG,OACE,kBAACuC,GAAD;IAA6B;IAAO,MAAMvC,EAAM;IAAa;IAAO,YAAYA,EAAM;IAAU,SAASmC;IACrG,WAAA,EAAE,aAAU,GAAGK,QAA+B;KAC9C,QAAQxC,EAAM,MAAd;MACE,KAAK;MACL,KAAK,YAAY;OACf,IAAMyC,IAAUzC,EAAM,SAAS,cAAc0C,IAAYC;OACzD,OAAO,kBAACF,GAAD;QAAS,GAAID;QAAyB;QAAU,UAAUX;QAAY,aAAa7B,EAAM;QAC9F,OAAO,OAAOkC,KAAW,WAAWA,IAAS;QAAI,WAAW,MAAUN,EAAO5B,EAAM,IAAI4C,EAAM,OAAO,KAAK;OAAI,CAAA;MACjH;MACA,KAAK,UACH,OAAO,kBAACC,GAAD;OAAa,GAAIL;OAAyB;OAAsB;OAAY,aAAaxC,EAAM;OAAa,MAAK;OACtH,aAAa;OAAO,OAAO,OAAOkC,KAAW,YAAY,OAAO,SAASA,CAAM,IAAIA,IAAS;OAC5F,gBAAgB,MAAS;QAAE,CAAIJ,MAAS,MAAM,OAAO,SAASA,CAAI,MAAGF,EAAO5B,EAAM,IAAI8B,MAAS,KAAK,KAAA,IAAYA,CAAI;OAAG;MAAI,CAAA;MAC/H,KAAK,WACH,OAAO,kBAACgB,GAAD;OAAQ,GAAIN;OAA2B;OAAY,YAAYN,MAAW;OAC/E,mBAAmB,MAASN,EAAO5B,EAAM,IAAI8B,CAAI;MAAI,CAAA;MACzD,KAAK,YACH,OAAO,kBAACY,GAAD;OAAW,GAAIF;OAAyB;OAAU,UAAUX;OAAY,MAAK;OAAiB,MAAK;OACxG,OAAO3B,EAAiBgC,CAAM,CAAC,EAAE,MAAM,GAAG,EAAE,KAAK;OACjD,WAAW,MAAUN,EAAO5B,EAAM,IAAIE,EAAiB,GAAG0C,EAAM,OAAO,MAAM,EAAE,CAAC;MAAI,CAAA;MACxF,KAAK,YACH,OAAO,kBAAChD,GAAD;OAAgB,GAAI4C;OAAe,OAAOxC,EAAM;OAAO,YAAY+C;OAAsB;OAC9F,aAAa/C,EAAM;OAAa,QAAO;OAAO,OAAOkC,MAAW,KAAA,IAAYvC,IAAgBuC;OAC5F,WAAW,MAASN,EAAO5B,EAAM,IAAI8B,CAAI;MAAI,CAAA;MACjD,KAAK;MACL,KAAK,aACH,OAAO,kBAAC,OAAD;OAAK,GAAIU;OAAe,MAAK;OAClC,UAAA,kBAACQ,GAAD;QAAa,OAAOC,EAAYjD,EAAM,OAAO,CAAC;QAAG,OAAOe,EAAYf,GAAOkC,CAAM;QAC/E,OAAOlC,EAAM,SAAS,UAAU,WAAW;QAAW,UAAU,UAAUA,EAAM;QAChF,MAAMA,EAAM,WAAW,aAAa;QAAsB;QAC1D,gBAAgB,MAAQ;SACtB,IAAIA,EAAM,SAAS,SAAS;UAC1B,IAAMkD,IAAQnD,EAAI,KAAK,OAAa,EAAE,WAAQ,EAAE;UAChD,EAAOC,EAAM,IAAIA,EAAM,WAAWkD,IAAQA,EAAM,EAAE;SACpD,OAAO;UACL,IAAMA,IAAQnD,EAAI,KAAK,OAAa,EAAE,WAAQ,EAAE;UAChD,EAAOC,EAAM,IAAIA,EAAM,WAAWkD,IAAQA,EAAM,EAAE;SACpD;QACF;OAAI,CAAA;MACH,CAAA;KACT;IACF;GACK,GA1CKlD,EAAM,EA0CX;EAEX,CAAC;CACE,CAAA;AAET"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RichTextEditor-CSpjsL1z.js","names":["_Fragment","Fragment$1","emptyDocument","richTextExtensions","StarterKit","Link","schema","getSchema","normalizeDocument","document","documentError","value","check","type","node","key","mark","markType","LinkDialog","href","setHref","useState","selection","error","setError","formId","useId","onTransaction","editor","onClose","canEdit","save","url","chain","Modal","Button","event","Field","TextField","field","GROUPS","RichTextEditor","forwardRef","labelledBy","describedBy","ariaInvalid","props","isFocused","setIsFocused","linkSelection","setLinkSelection","closeLink","useCallback","initialValue","content","contentError","useMemo","errorId","invalid","isInvalid","disabled","isDisabled","openLink","range","position","getMarkRange","state","link","attributes","label","id","isRequired","editorProps","anchor","view","useEditor","Placeholder","useEffect","next","createDocument","useEditorState","className","ButtonGroup","i","group","tool","toolbarExtra","size","EditorContent"],"sources":["../../src/components/RichTextEditor/document.ts","../../src/components/RichTextEditor/index.tsx"],"sourcesContent":["import { getSchema, type JSONContent } from \"@tiptap/react\";\nimport { StarterKit } from \"@tiptap/starter-kit\";\nimport { Link } from \"@tiptap/extension-link\";\n\nexport type RichTextDocument = JSONContent & { type: \"doc\" };\n\nexport const emptyDocument: RichTextDocument = { type: \"doc\", content: [{ type: \"paragraph\" }] };\n\nexport function richTextExtensions() {\n return [StarterKit.configure({ link: false }), Link.configure({ openOnClick: false, autolink: true })];\n}\n\nconst schema = getSchema(richTextExtensions());\n\n/** ProseMirror represents an empty writing surface with one empty paragraph. */\nexport function normalizeDocument(document: RichTextDocument): RichTextDocument {\n return !document.content?.length ? { ...document, content: emptyDocument.content } : document;\n}\n\nexport function documentError(value: unknown): string | undefined {\n try {\n if (!value || typeof value !== \"object\" || !(\"type\" in value) || value.type !== \"doc\") throw new Error();\n const check = (node: JSONContent) => {\n const type = schema.nodes[node.type ?? \"\"];\n if (!type || Object.keys(node).some((key) => ![\"type\", \"attrs\", \"content\", \"marks\", \"text\"].includes(key)) ||\n (node.text !== undefined && node.type !== \"text\") ||\n (node.attrs && Object.keys(node.attrs).some((key) => !Object.hasOwn(type.spec.attrs ?? {}, key)))) {\n throw new Error();\n }\n for (const mark of node.marks ?? []) {\n const markType = schema.marks[mark.type];\n if (!markType || Object.keys(mark).some((key) => ![\"type\", \"attrs\"].includes(key)) ||\n Object.keys(mark.attrs ?? {}).some((key) => !Object.hasOwn(markType.spec.attrs ?? {}, key))) {\n throw new Error();\n }\n }\n node.content?.forEach(check);\n };\n const document = value as RichTextDocument;\n check(document);\n schema.nodeFromJSON(normalizeDocument(document)).check();\n } catch {\n return \"Unsupported or invalid rich-text document.\";\n }\n}\n","import { forwardRef, useCallback, useEffect, useId, useMemo, useState, type AriaAttributes, type ReactNode } from \"react\";\nimport { createDocument, EditorContent, getMarkRange, useEditor, useEditorState, type Editor, type EditorOptions } from \"@tiptap/react\";\nimport { Placeholder } from \"@tiptap/extension-placeholder\";\nimport { Button } from \"../Button\";\nimport { ButtonGroup } from \"../ButtonGroup\";\nimport { Field } from \"../Field\";\nimport { Modal } from \"../Modal\";\nimport { TextField } from \"../TextField\";\nimport type { IconName } from \"../Icon/icons\";\nimport { documentError, emptyDocument, normalizeDocument, richTextExtensions, type RichTextDocument } from \"./document\";\nimport \"../Field/style.css\";\nimport \"./style.css\";\n\nexport type RichTextEditorSize = \"sm\" | \"md\" | \"lg\";\n\nexport type { RichTextDocument } from \"./document\";\n\ninterface RichTextEditorCommonProps {\n placeholder?: string;\n size?: RichTextEditorSize;\n isDisabled?: boolean;\n isInvalid?: boolean;\n /** Accessible name for the editing surface. */\n label?: string;\n className?: string;\n /** Extra controls appended to the toolbar, e.g. a word count. */\n toolbarExtra?: ReactNode;\n /** Applied to the editable surface. */\n id?: string;\n isRequired?: boolean;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n \"aria-invalid\"?: AriaAttributes[\"aria-invalid\"];\n}\n\nexport type RichTextEditorProps = RichTextEditorCommonProps & (\n | { format?: \"html\"; value?: string; defaultValue?: string; onChange?: (html: string) => void }\n | { format: \"json\"; value?: RichTextDocument; defaultValue?: RichTextDocument; onChange?: (document: RichTextDocument) => void }\n);\n\ninterface ToolItem {\n id: string;\n icon: IconName;\n label: string;\n run: (editor: Editor) => void;\n active?: (editor: Editor) => boolean;\n}\n\ninterface LinkSelection {\n from: number;\n to: number;\n href: string;\n isEditing: boolean;\n document: Editor[\"state\"][\"doc\"];\n}\n\nfunction LinkDialog({ editor, selection, onClose }: {\n editor: Editor;\n selection: LinkSelection;\n onClose: () => void;\n}) {\n const [href, setHref] = useState(selection.href);\n const [error, setError] = useState<string>();\n const formId = useId();\n\n useEffect(() => {\n const onTransaction = () => {\n if (!editor.state.doc.eq(selection.document)) onClose();\n };\n editor.on(\"transaction\", onTransaction);\n return () => { editor.off(\"transaction\", onTransaction); };\n }, [editor, selection, onClose]);\n\n const canEdit = () => !editor.isDestroyed && editor.isEditable && editor.state.doc.eq(selection.document);\n const save = () => {\n if (!canEdit()) { onClose(); return; }\n const url = href.trim();\n if (!url || !editor.can().setLink({ href: url })) {\n setError(url ? \"Enter a valid link URL.\" : \"Enter a link URL.\");\n return;\n }\n const chain = editor.chain().focus().setTextSelection({ from: selection.from, to: selection.to });\n if (selection.from === selection.to && !selection.isEditing) {\n chain.setLink({ href: url }).insertContent({ type: \"text\", text: url, marks: [{ type: \"link\", attrs: { href: url } }] }).run();\n } else {\n chain.setLink({ href: url }).run();\n }\n onClose();\n };\n\n return (\n <Modal isOpen title={selection.isEditing ? \"Edit link\" : \"Add link\"} size=\"dialog\" onClose={onClose}\n footer={<>\n {selection.isEditing && <Button variant=\"danger\" onClick={() => {\n if (canEdit()) editor.chain().focus().setTextSelection({ from: selection.from, to: selection.to }).unsetLink().run();\n onClose();\n }}>Remove link</Button>}\n <Button onClick={onClose}>Cancel</Button>\n <Button variant=\"primary\" type=\"submit\" form={formId}>Save</Button>\n </>}>\n <form id={formId} noValidate onSubmit={(event) => { event.preventDefault(); event.stopPropagation(); save(); }}>\n <Field label=\"URL\" isRequired error={error}>\n {(field) => <TextField {...field} value={href} inputMode=\"url\" autoComplete=\"url\"\n placeholder=\"https://example.com\" onChange={(event) => { setHref(event.target.value); setError(undefined); }} />}\n </Field>\n </form>\n </Modal>\n );\n}\n\nconst GROUPS: ToolItem[][] = [\n [\n {\n id: \"bold\",\n icon: \"bold\",\n label: \"Bold\",\n run: (e) => e.chain().focus().toggleBold().run(),\n active: (e) => e.isActive(\"bold\"),\n },\n {\n id: \"italic\",\n icon: \"italic\",\n label: \"Italic\",\n run: (e) => e.chain().focus().toggleItalic().run(),\n active: (e) => e.isActive(\"italic\"),\n },\n {\n id: \"strike\",\n icon: \"strikethrough\",\n label: \"Strikethrough\",\n run: (e) => e.chain().focus().toggleStrike().run(),\n active: (e) => e.isActive(\"strike\"),\n },\n {\n id: \"code\",\n icon: \"code\",\n label: \"Inline code\",\n run: (e) => e.chain().focus().toggleCode().run(),\n active: (e) => e.isActive(\"code\"),\n },\n ],\n [\n {\n id: \"h2\",\n icon: \"heading-2\",\n label: \"Heading\",\n run: (e) => e.chain().focus().toggleHeading({ level: 2 }).run(),\n active: (e) => e.isActive(\"heading\", { level: 2 }),\n },\n {\n id: \"h3\",\n icon: \"heading-3\",\n label: \"Subheading\",\n run: (e) => e.chain().focus().toggleHeading({ level: 3 }).run(),\n active: (e) => e.isActive(\"heading\", { level: 3 }),\n },\n {\n id: \"quote\",\n icon: \"quote\",\n label: \"Quote\",\n run: (e) => e.chain().focus().toggleBlockquote().run(),\n active: (e) => e.isActive(\"blockquote\"),\n },\n ],\n [\n {\n id: \"ul\",\n icon: \"list\",\n label: \"Bulleted list\",\n run: (e) => e.chain().focus().toggleBulletList().run(),\n active: (e) => e.isActive(\"bulletList\"),\n },\n {\n id: \"ol\",\n icon: \"list-ordered\",\n label: \"Numbered list\",\n run: (e) => e.chain().focus().toggleOrderedList().run(),\n active: (e) => e.isActive(\"orderedList\"),\n },\n ],\n [\n {\n id: \"undo\",\n icon: \"undo\",\n label: \"Undo\",\n run: (e) => e.chain().focus().undo().run(),\n },\n {\n id: \"redo\",\n icon: \"redo\",\n label: \"Redo\",\n run: (e) => e.chain().focus().redo().run(),\n },\n ],\n];\n\n/**\n * The editorial writing surface. Rich text plus links — the same field skin,\n * radius and states as `TextField`, with the toolbar inside the frame.\n */\nexport const RichTextEditor = forwardRef<HTMLDivElement, RichTextEditorProps>(\n function RichTextEditor(\n props,\n ref,\n ) {\n const {\n placeholder = \"Write something…\",\n size = \"md\",\n isDisabled = false,\n isInvalid = false,\n label = \"Rich text editor\",\n className,\n toolbarExtra,\n id,\n isRequired,\n \"aria-labelledby\": labelledBy,\n \"aria-describedby\": describedBy,\n \"aria-invalid\": ariaInvalid,\n } = props;\n const [isFocused, setIsFocused] = useState(false);\n const [linkSelection, setLinkSelection] = useState<LinkSelection | null>(null);\n const closeLink = useCallback(() => setLinkSelection(null), []);\n const [initialValue] = useState(() => props.defaultValue ?? (props.format === \"json\" ? emptyDocument : \"\"));\n const content = props.value !== undefined ? props.value : initialValue;\n const contentError = useMemo(() => props.format === \"json\" ? documentError(content) : undefined, [props.format, content]);\n const errorId = useId();\n const invalid = isInvalid || !!contentError || ariaInvalid;\n const disabled = isDisabled || !!contentError;\n if (disabled && linkSelection) setLinkSelection(null);\n const openLink = useCallback((state: Editor[\"state\"], position?: number) => {\n if (disabled) return;\n const range = position === undefined ? undefined : getMarkRange(state.doc.resolve(position), state.schema.marks.link);\n const link = range && state.doc.nodeAt(range.from)?.marks.find((mark) => mark.type === state.schema.marks.link);\n setLinkSelection({\n from: range?.from ?? state.selection.from,\n to: range?.to ?? state.selection.to,\n href: link?.attrs.href ?? \"\",\n isEditing: !!link,\n document: state.doc,\n });\n }, [disabled]);\n const attributes = useMemo(() => ({\n role: \"textbox\",\n \"aria-label\": label,\n \"aria-multiline\": \"true\",\n ...(id ? { id } : {}),\n ...(labelledBy ? { \"aria-labelledby\": labelledBy } : {}),\n ...(describedBy ? { \"aria-describedby\": describedBy } : {}),\n ...(invalid ? { \"aria-invalid\": String(invalid) } : {}),\n ...(isRequired ? { \"aria-required\": \"true\" } : {}),\n }), [label, id, labelledBy, describedBy, invalid, isRequired]);\n const editorProps = useMemo<EditorOptions[\"editorProps\"]>(() => ({\n attributes,\n handleDOMEvents: { click: (view, event) => {\n const anchor = event.target instanceof Element ? event.target.closest(\"a\") : null;\n if (!anchor || !view.dom.contains(anchor)) return false;\n event.preventDefault();\n if (view.editable) openLink(view.state, view.posAtDOM(anchor, 0));\n return true;\n } },\n }), [attributes, openLink]);\n\n const editor = useEditor({\n immediatelyRender: false,\n editable: !disabled,\n content: contentError ? emptyDocument : typeof content === \"string\" ? content : normalizeDocument(content),\n extensions: [\n ...richTextExtensions(),\n Placeholder.configure({ placeholder }),\n ],\n editorProps,\n onFocus: () => setIsFocused(true),\n onBlur: () => setIsFocused(false),\n onUpdate: ({ editor: e }) => {\n if (disabled) return;\n if (props.format === \"json\") props.onChange?.(e.getJSON() as RichTextDocument);\n else props.onChange?.(e.getHTML());\n },\n });\n\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!disabled, false);\n editor.setOptions({ editorProps });\n }, [editor, disabled, editorProps]);\n\n useEffect(() => {\n if (!editor || props.value === undefined || contentError) return;\n const next = typeof props.value === \"string\"\n ? createDocument(props.value, editor.schema)\n : editor.schema.nodeFromJSON(normalizeDocument(props.value));\n // Parent echoes should preserve the current selection and undo history.\n if (!next.eq(editor.state.doc)) {\n editor.commands.setContent(next, { emitUpdate: false });\n }\n }, [editor, props.value, contentError]);\n\n const state = useEditorState({\n editor,\n selector: ({ editor: e }) =>\n e\n ? {\n active: Object.fromEntries(\n GROUPS.flat().map((t) => [t.id, t.active?.(e) ?? false]),\n ),\n linkActive: e.isActive(\"link\"),\n }\n : null,\n });\n\n return (\n <div\n ref={ref}\n className={[\"ds-rte\", className].filter(Boolean).join(\" \")}\n data-focused={isFocused || undefined}\n data-disabled={disabled || undefined}\n aria-invalid={invalid || undefined}\n >\n {contentError && <p id={errorId} role=\"alert\" className=\"ds-field__error\">{contentError}</p>}\n <div hidden={!!contentError}>\n <div className=\"ds-rte__toolbar\" role=\"toolbar\" aria-label={`${label} formatting`}>\n {GROUPS.map((group, i) => (\n <ButtonGroup key={i} aria-label={`Formatting ${i + 1}`}>\n {group.map((tool) => (\n <Button\n key={tool.id}\n size=\"sm\"\n isIconOnly\n iconStart={tool.icon}\n aria-label={tool.label}\n title={tool.label}\n aria-pressed={tool.active ? state?.active[tool.id] : undefined}\n variant={state?.active[tool.id] ? \"active\" : \"neutral\"}\n isDisabled={disabled || !editor}\n onClick={() => editor && tool.run(editor)}\n />\n ))}\n </ButtonGroup>\n ))}\n <ButtonGroup aria-label=\"Link\">\n <Button\n size=\"sm\"\n isIconOnly\n iconStart=\"link\"\n aria-label={state?.linkActive ? \"Edit link\" : \"Add link\"}\n title={state?.linkActive ? \"Edit link\" : \"Add link\"}\n variant={state?.linkActive ? \"active\" : \"neutral\"}\n isDisabled={disabled || !editor}\n onClick={() => editor && openLink(editor.state, editor.isActive(\"link\") ? editor.state.selection.from : undefined)}\n />\n </ButtonGroup>\n {toolbarExtra}\n </div>\n <div className=\"ds-rte__content\" data-size={size}>\n <EditorContent editor={editor} />\n </div>\n </div>\n {editor && linkSelection && !disabled && <LinkDialog editor={editor} selection={linkSelection} onClose={closeLink} />}\n </div>\n );\n },\n);\n"],"mappings":"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"}