@plitzi/sdk-elements 0.38.10 → 0.38.12

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 (228) hide show
  1. package/CHANGELOG.md +295 -0
  2. package/dist/Element/ElementWords.d.ts +6 -2
  3. package/dist/Element/ElementWords.mjs +18 -11
  4. package/dist/Element/JsxManager.mjs +8 -8
  5. package/dist/Element/PluginManager.mjs +4 -4
  6. package/dist/Element/ReplicaProvider.mjs +9 -9
  7. package/dist/Element/RootElement.mjs +60 -60
  8. package/dist/Element/helpers/declaredAttributes.d.ts +10 -0
  9. package/dist/Element/helpers/declaredAttributes.mjs +22 -0
  10. package/dist/Element/hocs/withElement.mjs +101 -100
  11. package/dist/Element/hooks/useEditableContent.d.ts +12 -0
  12. package/dist/Element/hooks/useEditableContent.mjs +21 -0
  13. package/dist/Element/hooks/useElementDataSource.mjs +9 -9
  14. package/dist/Element/hooks/useElementVisible.mjs +1 -1
  15. package/dist/Element/hooks/useInternalItems.mjs +22 -23
  16. package/dist/Element/hooks/useIntervalTriggers.d.ts +2 -3
  17. package/dist/Element/hooks/useKeyTriggers.d.ts +2 -3
  18. package/dist/Element/hooks/usePluginTrigger.d.ts +21 -0
  19. package/dist/Element/hooks/usePluginTrigger.mjs +18 -0
  20. package/dist/Element/hooks/useRootElementInteractions.d.ts +2 -4
  21. package/dist/Element/hooks/useRootElementInteractions.mjs +79 -76
  22. package/dist/Element/hooks/useScrollInteractions.d.ts +2 -3
  23. package/dist/canvas/useAnimationFrame.mjs +1 -1
  24. package/dist/dataSource/GlobalSources.mjs +1 -1
  25. package/dist/dataSource/pathFields.mjs +1 -1
  26. package/dist/dataSource/sourceStore.d.ts +7 -0
  27. package/dist/dataSource/sourceStore.mjs +5 -0
  28. package/dist/elements/advanced/BlockHtml/BlockHtml.mjs +1 -1
  29. package/dist/elements/advanced/BlockHtml/declaration.d.ts +2 -27
  30. package/dist/elements/advanced/BlockHtml/declaration.mjs +2 -25
  31. package/dist/elements/advanced/BlockHtml/index.d.ts +2 -25
  32. package/dist/elements/advanced/BlockJsx/Settings.mjs +37 -37
  33. package/dist/elements/advanced/BlockJsx/declaration.d.ts +2 -27
  34. package/dist/elements/advanced/BlockJsx/declaration.mjs +2 -25
  35. package/dist/elements/advanced/BlockJsx/index.d.ts +2 -25
  36. package/dist/elements/advanced/Custom/Custom.mjs +52 -42
  37. package/dist/elements/advanced/Custom/Settings.mjs +41 -40
  38. package/dist/elements/advanced/Custom/declaration.d.ts +2 -26
  39. package/dist/elements/advanced/Custom/declaration.mjs +2 -22
  40. package/dist/elements/advanced/Custom/index.d.ts +2 -24
  41. package/dist/elements/advanced/NodeHtml/Settings.mjs +3 -3
  42. package/dist/elements/advanced/NodeHtml/declaration.d.ts +19 -44
  43. package/dist/elements/advanced/NodeHtml/declaration.mjs +2 -23
  44. package/dist/elements/advanced/NodeHtml/index.d.ts +19 -42
  45. package/dist/elements/advanced/PlitziSdk/Settings.mjs +4 -4
  46. package/dist/elements/advanced/Reference/Reference.mjs +1 -1
  47. package/dist/elements/advanced/Reference/declaration.d.ts +3 -27
  48. package/dist/elements/advanced/Reference/declaration.mjs +2 -22
  49. package/dist/elements/advanced/Reference/index.d.ts +3 -25
  50. package/dist/elements/basic/Button/Button.mjs +24 -31
  51. package/dist/elements/basic/Button/declaration.d.ts +4 -27
  52. package/dist/elements/basic/Button/declaration.mjs +2 -25
  53. package/dist/elements/basic/Button/index.d.ts +4 -25
  54. package/dist/elements/basic/Dropdown/Dropdown.mjs +1 -1
  55. package/dist/elements/basic/Dropdown/DropdownPopup/declaration.d.ts +3 -19
  56. package/dist/elements/basic/Dropdown/DropdownPopup/declaration.mjs +2 -16
  57. package/dist/elements/basic/Dropdown/DropdownPopup/index.d.ts +3 -17
  58. package/dist/elements/basic/Dropdown/declaration.d.ts +3 -26
  59. package/dist/elements/basic/Dropdown/declaration.mjs +16 -41
  60. package/dist/elements/basic/Dropdown/index.d.ts +5 -42
  61. package/dist/elements/basic/Dropdown/useDropdown.mjs +23 -29
  62. package/dist/elements/basic/Heading/Heading.mjs +15 -17
  63. package/dist/elements/basic/Heading/Settings.mjs +4 -4
  64. package/dist/elements/basic/Heading/declaration.d.ts +2 -27
  65. package/dist/elements/basic/Heading/declaration.mjs +2 -23
  66. package/dist/elements/basic/Heading/index.d.ts +2 -25
  67. package/dist/elements/basic/Link/Link.mjs +52 -59
  68. package/dist/elements/basic/Link/Settings.mjs +52 -51
  69. package/dist/elements/basic/Link/declaration.d.ts +6 -26
  70. package/dist/elements/basic/Link/declaration.mjs +8 -32
  71. package/dist/elements/basic/Link/index.d.ts +6 -24
  72. package/dist/elements/basic/Markdown/Markdown.mjs +1 -1
  73. package/dist/elements/basic/Markdown/declaration.d.ts +2 -25
  74. package/dist/elements/basic/Markdown/declaration.mjs +2 -25
  75. package/dist/elements/basic/Markdown/index.d.ts +2 -23
  76. package/dist/elements/basic/Paragraph/Paragraph.mjs +15 -17
  77. package/dist/elements/basic/Paragraph/declaration.d.ts +2 -27
  78. package/dist/elements/basic/Paragraph/declaration.mjs +5 -28
  79. package/dist/elements/basic/Paragraph/index.d.ts +2 -25
  80. package/dist/elements/basic/RichText/RichText.mjs +1 -1
  81. package/dist/elements/basic/RichText/Settings.mjs +4 -4
  82. package/dist/elements/basic/RichText/declaration.d.ts +4 -27
  83. package/dist/elements/basic/RichText/declaration.mjs +2 -23
  84. package/dist/elements/basic/RichText/index.d.ts +4 -25
  85. package/dist/elements/basic/Text/Text.mjs +16 -18
  86. package/dist/elements/basic/Text/declaration.d.ts +3 -28
  87. package/dist/elements/basic/Text/declaration.mjs +2 -25
  88. package/dist/elements/basic/Text/index.d.ts +3 -26
  89. package/dist/elements/basic/ThemeToggle/Settings.d.ts +6 -0
  90. package/dist/elements/basic/ThemeToggle/Settings.mjs +49 -0
  91. package/dist/elements/basic/ThemeToggle/ThemeToggle.mjs +40 -39
  92. package/dist/elements/basic/ThemeToggle/declaration.d.ts +3 -26
  93. package/dist/elements/basic/ThemeToggle/declaration.mjs +2 -23
  94. package/dist/elements/basic/ThemeToggle/index.d.ts +3 -24
  95. package/dist/elements/declarations/index.d.ts +145 -1061
  96. package/dist/elements/form/Form/Form.mjs +65 -64
  97. package/dist/elements/form/Form/declaration.d.ts +3 -28
  98. package/dist/elements/form/Form/declaration.mjs +2 -25
  99. package/dist/elements/form/Form/index.d.ts +17 -25
  100. package/dist/elements/form/FormControl/FormControl.mjs +106 -105
  101. package/dist/elements/form/FormControl/declaration.d.ts +2 -22
  102. package/dist/elements/form/FormControl/declaration.mjs +4 -23
  103. package/dist/elements/form/FormControl/hocs/withFieldValue.mjs +1 -1
  104. package/dist/elements/form/FormControl/index.d.ts +16 -20
  105. package/dist/elements/internal/LayoutContainer/LayoutContainer.mjs +1 -1
  106. package/dist/elements/internal/LayoutContainer/declaration.d.ts +3 -25
  107. package/dist/elements/internal/LayoutContainer/declaration.mjs +3 -23
  108. package/dist/elements/internal/LayoutContainer/index.d.ts +3 -23
  109. package/dist/elements/internal/Loading/Settings.d.ts +2 -0
  110. package/dist/elements/internal/Loading/Settings.mjs +5 -0
  111. package/dist/elements/internal/Loading/declaration.d.ts +2 -24
  112. package/dist/elements/internal/Loading/declaration.mjs +3 -25
  113. package/dist/elements/internal/Loading/index.d.ts +2 -22
  114. package/dist/elements/internal/NotFound/NotFound.mjs +1 -1
  115. package/dist/elements/internal/NotFound/Settings.d.ts +2 -0
  116. package/dist/elements/internal/NotFound/Settings.mjs +5 -0
  117. package/dist/elements/internal/NotFound/declaration.d.ts +2 -24
  118. package/dist/elements/internal/NotFound/declaration.mjs +7 -29
  119. package/dist/elements/internal/NotFound/index.d.ts +2 -22
  120. package/dist/elements/internal/Page/Page.mjs +17 -16
  121. package/dist/elements/internal/Page/Settings.mjs +102 -101
  122. package/dist/elements/internal/Page/declaration.d.ts +3 -23
  123. package/dist/elements/internal/Page/declaration.mjs +14 -32
  124. package/dist/elements/internal/Page/index.d.ts +3 -21
  125. package/dist/elements/media/Embed/Embed.mjs +1 -1
  126. package/dist/elements/media/Embed/Settings.mjs +7 -7
  127. package/dist/elements/media/Embed/declaration.d.ts +2 -27
  128. package/dist/elements/media/Embed/declaration.mjs +10 -33
  129. package/dist/elements/media/Embed/index.d.ts +2 -25
  130. package/dist/elements/media/FontAwesome/Settings.mjs +8 -8
  131. package/dist/elements/media/FontAwesome/declaration.d.ts +2 -27
  132. package/dist/elements/media/FontAwesome/declaration.mjs +5 -28
  133. package/dist/elements/media/FontAwesome/index.d.ts +2 -25
  134. package/dist/elements/media/Image/Image.mjs +1 -1
  135. package/dist/elements/media/Image/Settings.mjs +47 -46
  136. package/dist/elements/media/Image/declaration.d.ts +2 -27
  137. package/dist/elements/media/Image/declaration.mjs +7 -30
  138. package/dist/elements/media/Image/index.d.ts +2 -25
  139. package/dist/elements/media/Svg/Settings.mjs +4 -4
  140. package/dist/elements/media/Svg/Svg.mjs +1 -1
  141. package/dist/elements/media/Svg/declaration.d.ts +3 -27
  142. package/dist/elements/media/Svg/declaration.mjs +2 -22
  143. package/dist/elements/media/Svg/index.d.ts +3 -25
  144. package/dist/elements/media/Video/Settings.mjs +7 -7
  145. package/dist/elements/media/Video/Video.mjs +1 -1
  146. package/dist/elements/media/Video/declaration.d.ts +2 -27
  147. package/dist/elements/media/Video/declaration.mjs +6 -29
  148. package/dist/elements/media/Video/index.d.ts +2 -25
  149. package/dist/elements/provider/ApiContainer/ApiContainer.mjs +151 -150
  150. package/dist/elements/provider/ApiContainer/Settings.mjs +135 -134
  151. package/dist/elements/provider/ApiContainer/declaration.d.ts +3 -28
  152. package/dist/elements/provider/ApiContainer/declaration.mjs +2 -23
  153. package/dist/elements/provider/ApiContainer/index.d.ts +3 -26
  154. package/dist/elements/provider/Channel/Channel.mjs +57 -55
  155. package/dist/elements/provider/Channel/declaration.d.ts +9 -28
  156. package/dist/elements/provider/Channel/declaration.mjs +10 -25
  157. package/dist/elements/provider/Channel/index.d.ts +9 -26
  158. package/dist/elements/settings.mjs +70 -62
  159. package/dist/elements/structure/Carousel/Carousel.mjs +36 -35
  160. package/dist/elements/structure/Carousel/CarouselTrack/declaration.d.ts +3 -25
  161. package/dist/elements/structure/Carousel/CarouselTrack/declaration.mjs +6 -28
  162. package/dist/elements/structure/Carousel/CarouselTrack/index.d.ts +3 -23
  163. package/dist/elements/structure/Carousel/Settings.mjs +40 -39
  164. package/dist/elements/structure/Carousel/declaration.d.ts +4 -29
  165. package/dist/elements/structure/Carousel/declaration.mjs +2 -25
  166. package/dist/elements/structure/Carousel/index.d.ts +6 -51
  167. package/dist/elements/structure/Container/Settings.mjs +40 -39
  168. package/dist/elements/structure/Container/declaration.d.ts +3 -28
  169. package/dist/elements/structure/Container/declaration.mjs +2 -23
  170. package/dist/elements/structure/Container/index.d.ts +3 -26
  171. package/dist/elements/structure/DialogContainer/DialogContainer.d.ts +8 -8
  172. package/dist/elements/structure/DialogContainer/DialogContainer.mjs +54 -173
  173. package/dist/elements/structure/DialogContainer/Settings.mjs +24 -23
  174. package/dist/elements/structure/DialogContainer/declaration.d.ts +8 -31
  175. package/dist/elements/structure/DialogContainer/declaration.mjs +2 -23
  176. package/dist/elements/structure/DialogContainer/index.d.ts +8 -29
  177. package/dist/elements/structure/List/ListItem/declaration.d.ts +4 -26
  178. package/dist/elements/structure/List/ListItem/declaration.mjs +3 -25
  179. package/dist/elements/structure/List/ListItem/index.d.ts +4 -24
  180. package/dist/elements/structure/List/Settings.mjs +6 -6
  181. package/dist/elements/structure/List/declaration.d.ts +3 -28
  182. package/dist/elements/structure/List/declaration.mjs +2 -23
  183. package/dist/elements/structure/List/index.d.ts +6 -51
  184. package/dist/elements/structure/List/modes/ListControlled/ListControlled.mjs +13 -12
  185. package/dist/elements/structure/List/modes/ListControlled/ListControlledItem.mjs +6 -6
  186. package/dist/elements/structure/ModalContainer/ModalContainer.mjs +27 -121
  187. package/dist/elements/structure/ModalContainer/Settings.mjs +15 -14
  188. package/dist/elements/structure/ModalContainer/declaration.d.ts +3 -26
  189. package/dist/elements/structure/ModalContainer/declaration.mjs +2 -23
  190. package/dist/elements/structure/ModalContainer/index.d.ts +3 -24
  191. package/dist/elements/structure/Overlay/OverlayShell.d.ts +24 -0
  192. package/dist/elements/structure/Overlay/OverlayShell.mjs +64 -0
  193. package/dist/elements/structure/Overlay/metadataOf.d.ts +8 -0
  194. package/dist/elements/structure/{ModalContainer/metadataFromText.mjs → Overlay/metadataOf.mjs} +5 -2
  195. package/dist/elements/structure/{ModalContainer → Overlay}/useModalDialog.mjs +1 -1
  196. package/dist/elements/structure/Overlay/useOverlay.d.ts +40 -0
  197. package/dist/elements/structure/Overlay/useOverlay.mjs +83 -0
  198. package/dist/elements/structure/Pagination/Pagination.mjs +28 -27
  199. package/dist/elements/structure/Pagination/Settings.mjs +10 -10
  200. package/dist/elements/structure/Pagination/declaration.d.ts +3 -26
  201. package/dist/elements/structure/Pagination/declaration.mjs +2 -23
  202. package/dist/elements/structure/Pagination/index.d.ts +3 -24
  203. package/dist/elements/structure/TabContainer/TabContainerBody/TabContainerBody.d.ts +3 -3
  204. package/dist/elements/structure/TabContainer/TabContainerBody/TabContainerBody.mjs +10 -32
  205. package/dist/elements/structure/TabContainer/TabContainerBody/declaration.d.ts +4 -22
  206. package/dist/elements/structure/TabContainer/TabContainerBody/declaration.mjs +3 -17
  207. package/dist/elements/structure/TabContainer/TabContainerBody/index.d.ts +4 -20
  208. package/dist/elements/structure/TabContainer/TabContainerHeader/TabContainerHeader.d.ts +3 -3
  209. package/dist/elements/structure/TabContainer/TabContainerHeader/TabContainerHeader.mjs +10 -34
  210. package/dist/elements/structure/TabContainer/TabContainerHeader/declaration.d.ts +4 -22
  211. package/dist/elements/structure/TabContainer/TabContainerHeader/declaration.mjs +3 -17
  212. package/dist/elements/structure/TabContainer/TabContainerHeader/index.d.ts +4 -20
  213. package/dist/elements/structure/TabContainer/TabContainerItem/declaration.d.ts +4 -26
  214. package/dist/elements/structure/TabContainer/TabContainerItem/declaration.mjs +7 -27
  215. package/dist/elements/structure/TabContainer/TabContainerItem/index.d.ts +4 -24
  216. package/dist/elements/structure/TabContainer/declaration.d.ts +4 -26
  217. package/dist/elements/structure/TabContainer/declaration.mjs +3 -23
  218. package/dist/elements/structure/TabContainer/index.d.ts +15 -89
  219. package/dist/elements/structure/TabContainer/useTabItems.d.ts +7 -0
  220. package/dist/elements/structure/TabContainer/useTabItems.mjs +35 -0
  221. package/dist/elements/useSettingsUpdate.d.ts +12 -0
  222. package/dist/elements/useSettingsUpdate.mjs +8 -0
  223. package/dist/index.d.ts +169 -984
  224. package/dist/realtime/useChannel.d.ts +4 -3
  225. package/dist/realtime/useChannel.mjs +36 -36
  226. package/package.json +58 -14
  227. package/dist/elements/structure/ModalContainer/metadataFromText.d.ts +0 -7
  228. /package/dist/elements/structure/{ModalContainer → Overlay}/useModalDialog.d.ts +0 -0
@@ -57,13 +57,10 @@ declare const ModalContainer: {
57
57
  };
58
58
  readonly definition: {
59
59
  readonly label: "Modal Container";
60
- readonly type: "modalContainer";
61
60
  readonly description: string;
62
- readonly items: readonly [];
63
- readonly bindings: {};
61
+ readonly items: [];
64
62
  readonly loadStrategy: "lazy";
65
63
  readonly styleSelectors: {
66
- readonly base: "";
67
64
  readonly backgroundContainer: "";
68
65
  readonly rootContainer: "";
69
66
  readonly headerContainer: "";
@@ -71,31 +68,12 @@ declare const ModalContainer: {
71
68
  readonly headerCloseButton: "";
72
69
  readonly bodyContainer: "";
73
70
  };
74
- readonly initialState: {
75
- readonly visibility: true;
76
- };
77
- };
78
- readonly builder: {
79
- readonly canDelete: true;
80
- readonly canSelect: true;
81
- readonly canDragDrop: true;
82
- readonly canMove: true;
83
- readonly canSnippet: true;
84
- readonly itemsAllowed: readonly [];
85
- readonly itemsNotAllowed: readonly [];
86
71
  };
87
72
  readonly market: {
88
73
  readonly category: "structure";
89
- readonly owner: "Plitzi";
90
- readonly verified: true;
91
- readonly license: "MIT";
92
- readonly website: "https://plitzi.com";
93
- readonly backgroundColor: "#4422ee";
94
74
  readonly icon: "fa-regular fa-clone";
95
75
  };
96
76
  readonly defaultStyle: {
97
- readonly name: "Modal Container";
98
- readonly displayMode: "desktop";
99
77
  readonly style: {
100
78
  readonly base: {
101
79
  readonly default: {
@@ -200,9 +178,10 @@ declare const ModalContainer: {
200
178
  };
201
179
  readonly subTypes: {};
202
180
  };
203
- readonly settings: {};
204
181
  };
205
182
  readonly initialItems: readonly ["container"];
183
+ } & {
184
+ content: import('@plitzi/sdk-shared/authoring/declare').ElementContentDefaults;
206
185
  } & import('@plitzi/sdk-shared/authoring/declare').ElementAttributesBrand<Partial<{
207
186
  title?: string | undefined;
208
187
  autoHideAfterClick?: boolean | undefined;
@@ -0,0 +1,24 @@
1
+ import { Overlay } from './useOverlay';
2
+ import { InteractionCallback } from '@plitzi/sdk-shared';
3
+ import { ReactNode, RefObject } from 'react';
4
+ export type OverlayShellProps = {
5
+ ref?: RefObject<HTMLElement>;
6
+ className?: string;
7
+ /** Its class names' stem: `modal-container` gives `plitzi-component__modal-container`, `modal-container__root`… */
8
+ block: string;
9
+ /** `alertdialog` for one that asks for an answer: a screen reader reads it out as it opens. */
10
+ role: 'dialog' | 'alertdialog';
11
+ /** What its store is called in the dev tools: `Modal:<id>`. */
12
+ storeName: string;
13
+ title: string;
14
+ overlay: Overlay;
15
+ triggers: Record<string, InteractionCallback>;
16
+ /** What the close button and Escape do. */
17
+ onDismiss: () => void;
18
+ children?: ReactNode;
19
+ /** Below the body: a dialog's answers. */
20
+ footer?: ReactNode;
21
+ };
22
+ /** A modal's and a dialog's markup: the backdrop, the panel the keyboard is kept in, its header and its body. */
23
+ declare const OverlayShell: ({ ref, className, block, role, storeName, title, overlay, triggers, onDismiss, children, footer }: OverlayShellProps) => import('react').JSX.Element;
24
+ export default OverlayShell;
@@ -0,0 +1,64 @@
1
+ import { RootElement as e } from "../../../Element/RootElement.mjs";
2
+ import t from "./useModalDialog.mjs";
3
+ import { useRef as n } from "react";
4
+ import { StoreProvider as r } from "@plitzi/nexus/react";
5
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
+ import o from "clsx";
7
+ //#region src/elements/structure/Overlay/OverlayShell.tsx
8
+ var s = ({ ref: s, className: c = "", block: l, role: u, storeName: d, title: f, overlay: p, triggers: m, onDismiss: h, children: g, footer: _ }) => {
9
+ let { id: v, titleId: y, styleSelectors: b, open: x, interactionCallbacks: S, storeValue: C, closeFromBackdrop: w } = p, T = n(null);
10
+ return t({
11
+ panelRef: T,
12
+ open: x,
13
+ onClose: h
14
+ }), /* @__PURE__ */ a(e, {
15
+ ref: s,
16
+ className: o(`plitzi-component__${l}`, c),
17
+ interactionTriggers: m,
18
+ interactionCallbacks: S,
19
+ children: [/* @__PURE__ */ i("div", {
20
+ className: o(`${l}__background`, b.backgroundContainer),
21
+ "aria-hidden": "true",
22
+ onClick: w
23
+ }), /* @__PURE__ */ a("div", {
24
+ ref: T,
25
+ className: o(`${l}__root`, b.rootContainer),
26
+ role: u,
27
+ "aria-modal": "true",
28
+ "aria-labelledby": y,
29
+ tabIndex: -1,
30
+ children: [
31
+ /* @__PURE__ */ a("div", {
32
+ className: o(`${l}__header`, b.headerContainer),
33
+ children: [/* @__PURE__ */ i("div", {
34
+ id: y,
35
+ className: o(`${l}__header__title`, b.headerTitle),
36
+ children: f
37
+ }), /* @__PURE__ */ i("button", {
38
+ type: "button",
39
+ className: o(`${l}__close`, b.headerCloseButton),
40
+ "aria-label": "Close",
41
+ title: "Close",
42
+ onClick: h,
43
+ children: /* @__PURE__ */ i("i", {
44
+ className: "fa-solid fa-xmark",
45
+ "aria-hidden": "true"
46
+ })
47
+ })]
48
+ }),
49
+ /* @__PURE__ */ i("div", {
50
+ className: o(`${l}__body`, b.bodyContainer),
51
+ children: /* @__PURE__ */ i(r, {
52
+ inherit: "live",
53
+ name: `${d}:${v}`,
54
+ value: C,
55
+ children: g
56
+ })
57
+ }),
58
+ _
59
+ ]
60
+ })]
61
+ });
62
+ };
63
+ //#endregion
64
+ export { s as default };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * What `openModal('modal', …)` — or `openDialog` — hands the container, as its data: an object is its fields, a JSON
3
+ * object in text is too, and anything else is `content`.
4
+ *
5
+ * Numeric ids are the common case, and `'42'` parses as JSON too — as the number. Set as the container's data whole, it
6
+ * had no `content` and every binding inside read nothing.
7
+ */
8
+ export declare const metadataOf: (metadata: unknown) => Record<string, unknown>;
@@ -1,6 +1,9 @@
1
1
  import { isRecord as e } from "@plitzi/sdk-shared/helpers/isRecord";
2
- //#region src/elements/structure/ModalContainer/metadataFromText.ts
2
+ //#region src/elements/structure/Overlay/metadataOf.ts
3
3
  var t = (t) => {
4
+ if (e(t)) return t;
5
+ if (t == null) return {};
6
+ if (typeof t != "string") return { content: t };
4
7
  try {
5
8
  let n = JSON.parse(t);
6
9
  if (e(n)) return n;
@@ -8,4 +11,4 @@ var t = (t) => {
8
11
  return { content: t };
9
12
  };
10
13
  //#endregion
11
- export { t as metadataFromText };
14
+ export { t as metadataOf };
@@ -1,5 +1,5 @@
1
1
  import { useEffect as e, useEffectEvent as t } from "react";
2
- //#region src/elements/structure/ModalContainer/useModalDialog.ts
2
+ //#region src/elements/structure/Overlay/useModalDialog.ts
3
3
  var n = "a[href], button:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"]), [contenteditable=\"true\"]", r = (e) => [...e.querySelectorAll(n)].filter((e) => typeof e.checkVisibility != "function" || e.checkVisibility()), i = ({ panelRef: n, open: i, onClose: a }) => {
4
4
  let o = t(a);
5
5
  e(() => {
@@ -0,0 +1,40 @@
1
+ import { InteractionCallback } from '@plitzi/sdk-shared';
2
+ export type UseOverlayProps = {
3
+ /** What it is called where it has no label of its own: `Modal`, `Dialog`. */
4
+ name: string;
5
+ sourceType: string;
6
+ /** The callbacks it answers — `openModal` and `closeModal` — as its declaration has them. */
7
+ callbacks: {
8
+ open: InteractionCallback;
9
+ close: InteractionCallback;
10
+ };
11
+ /** The events it fires as it opens and closes — `onModalOpen`, `onModalClose`. */
12
+ events: {
13
+ open: string;
14
+ close: string;
15
+ };
16
+ /** Whether a click on the backdrop closes it. */
17
+ autoHideAfterClick: boolean;
18
+ };
19
+ /**
20
+ * What a modal and a dialog share: the data they were opened with, published to what is inside them as their source;
21
+ * the callbacks that open and close them; and the events they fire as they do.
22
+ */
23
+ declare const useOverlay: ({ name, sourceType, callbacks, events, autoHideAfterClick }: UseOverlayProps) => {
24
+ id: string;
25
+ titleId: string;
26
+ styleSelectors: {
27
+ [selector: string]: string;
28
+ base: string;
29
+ };
30
+ /** Shown, and on a rendered page — never in the builder, where it is something being edited. */
31
+ open: boolean;
32
+ interactionCallbacks: Record<string, InteractionCallback>;
33
+ storeValue: {};
34
+ trigger: (event: string) => Promise<unknown[]> | undefined;
35
+ hide: () => void;
36
+ close: () => void;
37
+ closeFromBackdrop: () => void;
38
+ };
39
+ export type Overlay = ReturnType<typeof useOverlay>;
40
+ export default useOverlay;
@@ -0,0 +1,83 @@
1
+ import e from "../../../Element/hooks/useElement.mjs";
2
+ import t from "../../../dataSource/pathFields.mjs";
3
+ import n from "../../../dataSource/sourceStore.mjs";
4
+ import { metadataOf as r } from "./metadataOf.mjs";
5
+ import { use as i, useCallback as a, useEffect as o, useMemo as s, useState as c } from "react";
6
+ import l from "@plitzi/sdk-shared/hooks/usePlitzi";
7
+ import u from "@plitzi/sdk-interactions/InteractionsContext";
8
+ import d from "@plitzi/sdk-shared/dataSource/helpers/getSourceName";
9
+ import f from "@plitzi/sdk-shared/dataSource/hooks/useRegisterSource";
10
+ //#region src/elements/structure/Overlay/useOverlay.ts
11
+ var p = ({ name: p, sourceType: m, callbacks: h, events: g, autoHideAfterClick: _ }) => {
12
+ let { id: v, rootId: y, visible: b, definition: { styleSelectors: x, label: S = p }, elementState: C, setElementState: w } = e(), T = d(m, v), { settings: { previewMode: E } } = l(), { interactionsManager: D } = i(u), [O, k] = c({}), A = a((e) => D.interactionTrigger(v, e, { metadata: O }), [
13
+ v,
14
+ D,
15
+ O
16
+ ]), j = a(() => {
17
+ k({}), w((e) => ({
18
+ ...e,
19
+ visibility: !1
20
+ }));
21
+ }, [w]), M = a((e) => {
22
+ k(r(e.metadata)), w((e) => ({
23
+ ...e,
24
+ visibility: !0
25
+ }));
26
+ }, [w]), N = a(() => {
27
+ A(g.close), j();
28
+ }, [
29
+ g.close,
30
+ j,
31
+ A
32
+ ]), P = a(() => {
33
+ _ && N();
34
+ }, [_, N]), F = s(() => ({
35
+ [h.open.action]: {
36
+ ...h.open,
37
+ title: `Open ${S}`,
38
+ callback: M
39
+ },
40
+ [h.close.action]: {
41
+ ...h.close,
42
+ title: `Close ${S}`,
43
+ callback: N
44
+ }
45
+ }), [
46
+ h.close,
47
+ h.open,
48
+ N,
49
+ S,
50
+ M
51
+ ]);
52
+ o(() => {
53
+ C.visibility !== !1 && D.interactionTrigger(v, g.open, { metadata: O });
54
+ }, [
55
+ v,
56
+ D,
57
+ O,
58
+ C.visibility,
59
+ g.open
60
+ ]);
61
+ let I = a(() => t(O), [O]);
62
+ f({
63
+ id: v,
64
+ source: T,
65
+ name: S || `${p} - ${v}`,
66
+ fields: I
67
+ });
68
+ let L = s(() => n(T, O), [T, O]);
69
+ return {
70
+ id: v,
71
+ titleId: `${y}_${v}_title`,
72
+ styleSelectors: x,
73
+ open: !!E && b,
74
+ interactionCallbacks: F,
75
+ storeValue: L,
76
+ trigger: A,
77
+ hide: j,
78
+ close: N,
79
+ closeFromBackdrop: P
80
+ };
81
+ };
82
+ //#endregion
83
+ export { p as default };
@@ -4,77 +4,78 @@ import n from "../../../Element/hooks/useElement.mjs";
4
4
  import { RootElement as r } from "../../../Element/RootElement.mjs";
5
5
  import i from "./buildPageWindow.mjs";
6
6
  import { use as a, useCallback as o, useMemo as s } from "react";
7
- import c from "@plitzi/sdk-shared/hooks/usePlitziServiceContext";
7
+ import c from "@plitzi/sdk-shared/hooks/usePlitzi";
8
8
  import { useSdkStore as l } from "@plitzi/sdk-shared/store";
9
9
  import { emptyObject as u } from "@plitzi/sdk-shared/helpers/utils";
10
10
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
11
11
  import m from "clsx";
12
+ import h from "@plitzi/sdk-interactions/InteractionsContext";
12
13
  //#region src/elements/structure/Pagination/Pagination.tsx
13
- var h = (e, t) => {
14
+ var g = (e, t) => {
14
15
  if (typeof window > "u") return "";
15
16
  let n = new URL(window.location.href);
16
17
  return t <= 1 ? n.searchParams.delete(e) : n.searchParams.set(e, String(t)), `${n.pathname}${n.search}`;
17
- }, g = ({ ref: t, className: g = "", children: _, pageInfo: v = u, mode: y = "pages", pageParam: b = "page", target: x = "url", windowSize: S = 5, previousLabel: C = "Previous", nextLabel: w = "Next", loadMoreLabel: T = "Load more", label: E = "Pagination" }) => {
18
- let { id: D, definition: { styleSelectors: O } } = n(), { settings: { previewMode: k }, contexts: { InteractionsContext: A } } = c(), { interactionsManager: j } = a(A), [M] = l("navigation.navigate"), N = v.page ?? 1, P = v.pageCount ?? 0, F = v.hasPrevPage ?? N > 1, I = v.hasNextPage ?? !1, L = s(() => i(N, P, S), [
18
+ }, _ = ({ ref: t, className: _ = "", children: v, pageInfo: y = u, mode: b = "pages", pageParam: x = "page", target: S = "url", windowSize: C = 5, previousLabel: w = "Previous", nextLabel: T = "Next", loadMoreLabel: E = "Load more", label: D = "Pagination" }) => {
19
+ let { id: O, definition: { styleSelectors: k } } = n(), { settings: { previewMode: A } } = c(), { interactionsManager: j } = a(h), [M] = l("navigation.navigate"), N = y.page ?? 1, P = y.pageCount ?? 0, F = y.hasPrevPage ?? N > 1, I = y.hasNextPage ?? !1, L = s(() => i(N, P, C), [
19
20
  N,
20
21
  P,
21
- S
22
+ C
22
23
  ]), R = o((e) => {
23
24
  let t = Math.max(e, 1);
24
- D && j.interactionTrigger(D, "onPageChange", { page: t }), x === "url" && M(h(b, t));
25
+ O && j.interactionTrigger(O, "onPageChange", { page: t }), S === "url" && M(g(x, t));
25
26
  }, [
26
- D,
27
+ O,
27
28
  j,
28
- x,
29
+ S,
29
30
  M,
30
- b
31
+ x
31
32
  ]), z = o((e) => (t) => {
32
33
  t.preventDefault(), R(e);
33
34
  }, [R]), B = P === 0 && !I && !F;
34
35
  return /* @__PURE__ */ p(r, {
35
36
  ref: t,
36
37
  tag: "nav",
37
- "aria-label": E || void 0,
38
- className: m("plitzi-component__pagination", g),
38
+ "aria-label": D || void 0,
39
+ className: m("plitzi-component__pagination", _),
39
40
  interactionTriggers: e.triggers,
40
41
  children: [
41
- y === "loadMore" && /* @__PURE__ */ f("button", {
42
+ b === "loadMore" && /* @__PURE__ */ f("button", {
42
43
  type: "button",
43
- className: m("plitzi-component__pagination-more", O.loadMore),
44
- disabled: !I && k,
44
+ className: m("plitzi-component__pagination-more", k.loadMore),
45
+ disabled: !I && A,
45
46
  onClick: z(N + 1),
46
- children: T
47
+ children: E
47
48
  }),
48
- y === "pages" && /* @__PURE__ */ p(d, { children: [
49
+ b === "pages" && /* @__PURE__ */ p(d, { children: [
49
50
  /* @__PURE__ */ f("button", {
50
51
  type: "button",
51
- className: m("plitzi-component__pagination-prev", O.previous),
52
- disabled: !F && k,
52
+ className: m("plitzi-component__pagination-prev", k.previous),
53
+ disabled: !F && A,
53
54
  onClick: z(N - 1),
54
- children: C
55
+ children: w
55
56
  }),
56
57
  L.map((e) => /* @__PURE__ */ f("button", {
57
58
  type: "button",
58
- className: m("plitzi-component__pagination-page", { "plitzi-component__pagination-page--current": e === N }, O.page),
59
+ className: m("plitzi-component__pagination-page", { "plitzi-component__pagination-page--current": e === N }, k.page),
59
60
  "aria-current": e === N ? "page" : void 0,
60
61
  onClick: z(e),
61
62
  children: e
62
63
  }, e)),
63
64
  /* @__PURE__ */ f("button", {
64
65
  type: "button",
65
- className: m("plitzi-component__pagination-next", O.next),
66
- disabled: !I && k,
66
+ className: m("plitzi-component__pagination-next", k.next),
67
+ disabled: !I && A,
67
68
  onClick: z(N + 1),
68
- children: w
69
+ children: T
69
70
  })
70
71
  ] }),
71
- !k && B && /* @__PURE__ */ f("span", {
72
+ !A && B && /* @__PURE__ */ f("span", {
72
73
  className: "plitzi-component__pagination-hint",
73
74
  children: "Bind pageInfo"
74
75
  }),
75
- _
76
+ v
76
77
  ]
77
78
  });
78
- }, _ = t(g);
79
+ }, v = t(_);
79
80
  //#endregion
80
- export { g as Pagination, _ as default };
81
+ export { _ as Pagination, v as default };
@@ -1,17 +1,17 @@
1
- import { useCallback as e } from "react";
1
+ import e from "../../useSettingsUpdate.mjs";
2
2
  import { Fragment as t, jsx as n, jsxs as r } from "react/jsx-runtime";
3
3
  import i from "@plitzi/plitzi-ui/Input";
4
4
  import a from "@plitzi/plitzi-ui/Select";
5
5
  //#region src/elements/structure/Pagination/Settings.tsx
6
6
  var o = ({ mode: o = "pages", target: s = "url", pageParam: c = "page", windowSize: l = "5", previousLabel: u = "Previous", nextLabel: d = "Next", loadMoreLabel: f = "Load more", label: p = "Pagination", onUpdate: m }) => {
7
- let h = e((e) => (t) => m?.(e, t), [m]);
7
+ let h = e(m);
8
8
  return /* @__PURE__ */ r("div", {
9
9
  className: "flex grow flex-col gap-4 py-2",
10
10
  children: [
11
11
  /* @__PURE__ */ r(a, {
12
12
  value: o,
13
13
  label: "Mode",
14
- onChange: h("mode"),
14
+ onChange: h.text("mode"),
15
15
  size: "xs",
16
16
  children: [/* @__PURE__ */ n("option", {
17
17
  value: "pages",
@@ -24,7 +24,7 @@ var o = ({ mode: o = "pages", target: s = "url", pageParam: c = "page", windowSi
24
24
  /* @__PURE__ */ r(a, {
25
25
  value: s,
26
26
  label: "On Page Change",
27
- onChange: h("target"),
27
+ onChange: h.text("target"),
28
28
  size: "xs",
29
29
  children: [/* @__PURE__ */ n("option", {
30
30
  value: "url",
@@ -38,40 +38,40 @@ var o = ({ mode: o = "pages", target: s = "url", pageParam: c = "page", windowSi
38
38
  value: c,
39
39
  label: "Page parameter",
40
40
  title: "Must match the page parameter of the provider this pager belongs to.",
41
- onChange: h("pageParam"),
41
+ onChange: h.text("pageParam"),
42
42
  size: "xs"
43
43
  }),
44
44
  o === "pages" && /* @__PURE__ */ r(t, { children: [
45
45
  /* @__PURE__ */ n(i, {
46
46
  value: l,
47
47
  label: "Pages shown",
48
- onChange: h("windowSize"),
48
+ onChange: h.text("windowSize"),
49
49
  size: "xs"
50
50
  }),
51
51
  /* @__PURE__ */ n(i, {
52
52
  value: u,
53
53
  label: "Previous label",
54
- onChange: h("previousLabel"),
54
+ onChange: h.text("previousLabel"),
55
55
  size: "xs"
56
56
  }),
57
57
  /* @__PURE__ */ n(i, {
58
58
  value: d,
59
59
  label: "Next label",
60
- onChange: h("nextLabel"),
60
+ onChange: h.text("nextLabel"),
61
61
  size: "xs"
62
62
  })
63
63
  ] }),
64
64
  o === "loadMore" && /* @__PURE__ */ n(i, {
65
65
  value: f,
66
66
  label: "Button label",
67
- onChange: h("loadMoreLabel"),
67
+ onChange: h.text("loadMoreLabel"),
68
68
  size: "xs"
69
69
  }),
70
70
  /* @__PURE__ */ n(i, {
71
71
  value: p,
72
72
  label: "Navigation name",
73
73
  title: "What a screen reader calls this pager, in the site's language.",
74
- onChange: h("label"),
74
+ onChange: h.text("label"),
75
75
  size: "xs"
76
76
  }),
77
77
  /* @__PURE__ */ r("span", {
@@ -2,7 +2,7 @@ import { PaginationProps } from './Pagination';
2
2
  import { AuthorableAttributes } from '@plitzi/sdk-shared/authoring/declare';
3
3
  /** What this element can be authored with — its component's own props, minus what the runtime supplies. */
4
4
  export type PaginationAttributes = AuthorableAttributes<PaginationProps>;
5
- declare const declaration: {
5
+ declare const declaration: import('@plitzi/sdk-shared/authoring/declare').DeclaredElement<{
6
6
  readonly type: "pagination";
7
7
  readonly attributeValues: {
8
8
  readonly mode: readonly string[];
@@ -32,42 +32,20 @@ declare const declaration: {
32
32
  };
33
33
  readonly definition: {
34
34
  readonly label: "Pagination";
35
- readonly type: "pagination";
36
35
  readonly description: string;
37
- readonly items: readonly [];
38
- readonly bindings: {};
36
+ readonly items: [];
39
37
  readonly styleSelectors: {
40
- readonly base: "";
41
38
  readonly previous: "";
42
39
  readonly page: "";
43
40
  readonly next: "";
44
41
  readonly loadMore: "";
45
42
  };
46
- readonly initialState: {
47
- readonly visibility: true;
48
- };
49
- };
50
- readonly builder: {
51
- readonly canDelete: true;
52
- readonly canSelect: true;
53
- readonly canDragDrop: true;
54
- readonly canMove: true;
55
- readonly canSnippet: true;
56
- readonly itemsAllowed: readonly [];
57
- readonly itemsNotAllowed: readonly [];
58
43
  };
59
44
  readonly market: {
60
45
  readonly category: "structure";
61
- readonly owner: "Plitzi";
62
- readonly verified: true;
63
- readonly license: "MIT";
64
- readonly website: "https://plitzi.com";
65
- readonly backgroundColor: "#4422ee";
66
46
  readonly icon: "fa-solid fa-ellipsis";
67
47
  };
68
48
  readonly defaultStyle: {
69
- readonly name: "Pagination";
70
- readonly displayMode: "desktop";
71
49
  readonly style: {
72
50
  readonly base: {
73
51
  readonly default: {
@@ -80,9 +58,8 @@ declare const declaration: {
80
58
  };
81
59
  readonly subTypes: {};
82
60
  };
83
- readonly settings: {};
84
61
  };
85
- } & import('@plitzi/sdk-shared/authoring/declare').ElementAttributesBrand<Partial<{
62
+ }, Partial<{
86
63
  mode?: "pages" | "loadMore" | undefined;
87
64
  label?: string | undefined;
88
65
  target?: "url" | "interaction" | undefined;
@@ -26,40 +26,20 @@ var n = e()({
26
26
  },
27
27
  definition: {
28
28
  label: "Pagination",
29
- type: "pagination",
30
29
  description: "Pages through a list. Bind it to a provider page info: in URL mode it writes the page into the address bar so the result stays shareable and indexable, and in load-more mode it announces the next page for the provider to append. Its buttons take a class through their slots: `previous`, `page` (each numbered one — the page shown carries `aria-current=\"page\"`, so the class's `current` state dresses it), `next` and `loadMore`; one with nowhere to go is disabled, the `disabled` state.",
31
30
  items: [],
32
- bindings: {},
33
31
  styleSelectors: {
34
- base: "",
35
32
  previous: "",
36
33
  page: "",
37
34
  next: "",
38
35
  loadMore: ""
39
- },
40
- initialState: { visibility: !0 }
41
- },
42
- builder: {
43
- canDelete: !0,
44
- canSelect: !0,
45
- canDragDrop: !0,
46
- canMove: !0,
47
- canSnippet: !0,
48
- itemsAllowed: [],
49
- itemsNotAllowed: []
36
+ }
50
37
  },
51
38
  market: {
52
39
  category: "structure",
53
- owner: "Plitzi",
54
- verified: !0,
55
- license: "MIT",
56
- website: "https://plitzi.com",
57
- backgroundColor: "#4422ee",
58
40
  icon: "fa-solid fa-ellipsis"
59
41
  },
60
42
  defaultStyle: {
61
- name: "Pagination",
62
- displayMode: "desktop",
63
43
  style: { base: { default: {
64
44
  display: "flex",
65
45
  "align-items": "center",
@@ -67,8 +47,7 @@ var n = e()({
67
47
  "column-gap": "8px"
68
48
  } } },
69
49
  subTypes: {}
70
- },
71
- settings: {}
50
+ }
72
51
  }
73
52
  });
74
53
  //#endregion
@@ -31,42 +31,20 @@ declare const Pagination: {
31
31
  };
32
32
  readonly definition: {
33
33
  readonly label: "Pagination";
34
- readonly type: "pagination";
35
34
  readonly description: string;
36
- readonly items: readonly [];
37
- readonly bindings: {};
35
+ readonly items: [];
38
36
  readonly styleSelectors: {
39
- readonly base: "";
40
37
  readonly previous: "";
41
38
  readonly page: "";
42
39
  readonly next: "";
43
40
  readonly loadMore: "";
44
41
  };
45
- readonly initialState: {
46
- readonly visibility: true;
47
- };
48
- };
49
- readonly builder: {
50
- readonly canDelete: true;
51
- readonly canSelect: true;
52
- readonly canDragDrop: true;
53
- readonly canMove: true;
54
- readonly canSnippet: true;
55
- readonly itemsAllowed: readonly [];
56
- readonly itemsNotAllowed: readonly [];
57
42
  };
58
43
  readonly market: {
59
44
  readonly category: "structure";
60
- readonly owner: "Plitzi";
61
- readonly verified: true;
62
- readonly license: "MIT";
63
- readonly website: "https://plitzi.com";
64
- readonly backgroundColor: "#4422ee";
65
45
  readonly icon: "fa-solid fa-ellipsis";
66
46
  };
67
47
  readonly defaultStyle: {
68
- readonly name: "Pagination";
69
- readonly displayMode: "desktop";
70
48
  readonly style: {
71
49
  readonly base: {
72
50
  readonly default: {
@@ -79,8 +57,9 @@ declare const Pagination: {
79
57
  };
80
58
  readonly subTypes: {};
81
59
  };
82
- readonly settings: {};
83
60
  };
61
+ } & {
62
+ content: import('@plitzi/sdk-shared/authoring/declare').ElementContentDefaults;
84
63
  } & import('@plitzi/sdk-shared/authoring/declare').ElementAttributesBrand<Partial<{
85
64
  mode?: "pages" | "loadMore" | undefined;
86
65
  label?: string | undefined;