@plitzi/sdk-elements 0.37.9 → 0.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/CHANGELOG.md +630 -0
  2. package/dist/Element/ElementWords.d.ts +16 -0
  3. package/dist/Element/ElementWords.mjs +19 -0
  4. package/dist/Element/RootElement.mjs +15 -12
  5. package/dist/Element/helpers/elementConstants.mjs +27 -0
  6. package/dist/Element/helpers/renderStaticTag.d.ts +3 -1
  7. package/dist/Element/helpers/renderStaticTag.mjs +6 -5
  8. package/dist/Element/hooks/useElementDataSource.mjs +20 -19
  9. package/dist/Element/hooks/useInternalItems.mjs +33 -31
  10. package/dist/Element/hooks/useIntervalTriggers.d.ts +17 -0
  11. package/dist/Element/hooks/useIntervalTriggers.mjs +37 -0
  12. package/dist/Element/hooks/useRootElementInteractions.d.ts +6 -2
  13. package/dist/Element/hooks/useRootElementInteractions.mjs +84 -63
  14. package/dist/Element/hooks/useScrollInteractions.d.ts +20 -0
  15. package/dist/Element/hooks/useScrollInteractions.mjs +58 -0
  16. package/dist/components/IconField/IconField.d.ts +8 -0
  17. package/dist/components/IconField/IconField.mjs +41 -0
  18. package/dist/components/IconField/index.d.ts +2 -0
  19. package/dist/components/IconField/index.mjs +2 -0
  20. package/dist/components/IconPicker/IconPicker.d.ts +11 -0
  21. package/dist/components/IconPicker/IconPicker.mjs +82 -0
  22. package/dist/components/IconPicker/index.d.ts +2 -0
  23. package/dist/components/IconPicker/index.mjs +2 -0
  24. package/dist/dataSource/GlobalSources.mjs +102 -83
  25. package/dist/dataSource/useFlag.d.ts +9 -0
  26. package/dist/dataSource/useFlag.mjs +8 -0
  27. package/dist/elements/advanced/BlockHtml/declaration.d.ts +1 -1
  28. package/dist/elements/advanced/BlockHtml/declaration.mjs +1 -1
  29. package/dist/elements/advanced/BlockHtml/index.d.ts +1 -1
  30. package/dist/elements/advanced/BlockJsx/Settings.mjs +2 -1
  31. package/dist/elements/advanced/BlockJsx/declaration.d.ts +1 -1
  32. package/dist/elements/advanced/BlockJsx/declaration.mjs +1 -1
  33. package/dist/elements/advanced/BlockJsx/index.d.ts +1 -1
  34. package/dist/elements/advanced/Custom/declaration.d.ts +1 -1
  35. package/dist/elements/advanced/Custom/declaration.mjs +1 -1
  36. package/dist/elements/advanced/Custom/index.d.ts +1 -1
  37. package/dist/elements/advanced/NodeHtml/declaration.d.ts +3 -3
  38. package/dist/elements/advanced/NodeHtml/declaration.mjs +1 -1
  39. package/dist/elements/advanced/NodeHtml/index.d.ts +3 -3
  40. package/dist/elements/advanced/Reference/declaration.d.ts +1 -1
  41. package/dist/elements/advanced/Reference/declaration.mjs +1 -1
  42. package/dist/elements/advanced/Reference/index.d.ts +1 -1
  43. package/dist/elements/basic/Button/Button.d.ts +9 -1
  44. package/dist/elements/basic/Button/Button.mjs +31 -19
  45. package/dist/elements/basic/Button/Settings.d.ts +3 -1
  46. package/dist/elements/basic/Button/Settings.mjs +39 -33
  47. package/dist/elements/basic/Button/declaration.d.ts +7 -1
  48. package/dist/elements/basic/Button/declaration.mjs +10 -4
  49. package/dist/elements/basic/Button/index.d.ts +7 -1
  50. package/dist/elements/basic/Dropdown/DropdownPopup/declaration.d.ts +1 -1
  51. package/dist/elements/basic/Dropdown/DropdownPopup/declaration.mjs +1 -1
  52. package/dist/elements/basic/Dropdown/DropdownPopup/index.d.ts +1 -1
  53. package/dist/elements/basic/Dropdown/declaration.d.ts +1 -1
  54. package/dist/elements/basic/Dropdown/declaration.mjs +1 -1
  55. package/dist/elements/basic/Dropdown/index.d.ts +2 -2
  56. package/dist/elements/basic/Heading/declaration.d.ts +1 -1
  57. package/dist/elements/basic/Heading/declaration.mjs +1 -1
  58. package/dist/elements/basic/Heading/index.d.ts +1 -1
  59. package/dist/elements/basic/Link/Link.d.ts +20 -1
  60. package/dist/elements/basic/Link/Link.mjs +67 -47
  61. package/dist/elements/basic/Link/Settings.d.ts +6 -1
  62. package/dist/elements/basic/Link/Settings.mjs +91 -58
  63. package/dist/elements/basic/Link/declaration.d.ts +14 -1
  64. package/dist/elements/basic/Link/declaration.mjs +15 -5
  65. package/dist/elements/basic/Link/index.d.ts +14 -1
  66. package/dist/elements/basic/Link/isCurrentPage.d.ts +5 -0
  67. package/dist/elements/basic/Link/isCurrentPage.mjs +12 -0
  68. package/dist/elements/basic/Markdown/declaration.d.ts +1 -1
  69. package/dist/elements/basic/Markdown/declaration.mjs +1 -1
  70. package/dist/elements/basic/Markdown/index.d.ts +1 -1
  71. package/dist/elements/basic/Paragraph/declaration.d.ts +1 -1
  72. package/dist/elements/basic/Paragraph/declaration.mjs +1 -1
  73. package/dist/elements/basic/Paragraph/index.d.ts +1 -1
  74. package/dist/elements/basic/RichText/declaration.d.ts +1 -1
  75. package/dist/elements/basic/RichText/declaration.mjs +1 -1
  76. package/dist/elements/basic/RichText/index.d.ts +1 -1
  77. package/dist/elements/basic/Text/declaration.d.ts +1 -1
  78. package/dist/elements/basic/Text/declaration.mjs +1 -1
  79. package/dist/elements/basic/Text/index.d.ts +1 -1
  80. package/dist/elements/basic/ThemeToggle/declaration.d.ts +1 -1
  81. package/dist/elements/basic/ThemeToggle/declaration.mjs +1 -1
  82. package/dist/elements/basic/ThemeToggle/index.d.ts +1 -1
  83. package/dist/elements/declarations/index.d.ts +362 -40
  84. package/dist/elements/declarations/index.mjs +40 -32
  85. package/dist/elements/form/Form/declaration.d.ts +1 -1
  86. package/dist/elements/form/Form/declaration.mjs +1 -1
  87. package/dist/elements/form/Form/index.d.ts +1 -1
  88. package/dist/elements/form/FormControl/FormControl.mjs +1 -1
  89. package/dist/elements/form/FormControl/declaration.d.ts +1 -1
  90. package/dist/elements/form/FormControl/declaration.mjs +1 -1
  91. package/dist/elements/form/FormControl/index.d.ts +1 -1
  92. package/dist/elements/index.d.ts +7 -1
  93. package/dist/elements/index.mjs +30 -24
  94. package/dist/elements/internal/LayoutContainer/declaration.d.ts +1 -1
  95. package/dist/elements/internal/LayoutContainer/declaration.mjs +1 -1
  96. package/dist/elements/internal/LayoutContainer/index.d.ts +1 -1
  97. package/dist/elements/internal/Loading/declaration.d.ts +1 -1
  98. package/dist/elements/internal/Loading/declaration.mjs +1 -1
  99. package/dist/elements/internal/Loading/index.d.ts +1 -1
  100. package/dist/elements/internal/NotFound/declaration.d.ts +1 -1
  101. package/dist/elements/internal/NotFound/declaration.mjs +1 -1
  102. package/dist/elements/internal/NotFound/index.d.ts +1 -1
  103. package/dist/elements/internal/Page/declaration.d.ts +1 -1
  104. package/dist/elements/internal/Page/declaration.mjs +1 -1
  105. package/dist/elements/internal/Page/index.d.ts +1 -1
  106. package/dist/elements/media/Embed/Embed.d.ts +22 -0
  107. package/dist/elements/media/Embed/Embed.mjs +29 -0
  108. package/dist/elements/media/Embed/Settings.d.ts +10 -0
  109. package/dist/elements/media/Embed/Settings.mjs +51 -0
  110. package/dist/elements/media/Embed/declaration.d.ts +70 -0
  111. package/dist/elements/media/Embed/declaration.mjs +54 -0
  112. package/dist/elements/media/Embed/embeddableSrc.d.ts +5 -0
  113. package/dist/elements/media/Embed/embeddableSrc.mjs +4 -0
  114. package/dist/elements/media/Embed/index.d.ts +69 -0
  115. package/dist/elements/media/Embed/index.mjs +6 -0
  116. package/dist/elements/media/FontAwesome/Settings.mjs +32 -100
  117. package/dist/elements/media/FontAwesome/declaration.d.ts +1 -1
  118. package/dist/elements/media/FontAwesome/declaration.mjs +1 -1
  119. package/dist/elements/media/FontAwesome/index.d.ts +1 -1
  120. package/dist/elements/media/Image/Image.d.ts +11 -1
  121. package/dist/elements/media/Image/Image.mjs +33 -23
  122. package/dist/elements/media/Image/Settings.d.ts +4 -1
  123. package/dist/elements/media/Image/Settings.mjs +32 -9
  124. package/dist/elements/media/Image/declaration.d.ts +4 -1
  125. package/dist/elements/media/Image/declaration.mjs +1 -1
  126. package/dist/elements/media/Image/index.d.ts +4 -1
  127. package/dist/elements/media/Svg/Settings.d.ts +7 -0
  128. package/dist/elements/media/Svg/Settings.mjs +24 -0
  129. package/dist/elements/media/Svg/Svg.d.ts +16 -0
  130. package/dist/elements/media/Svg/Svg.mjs +31 -0
  131. package/dist/elements/media/Svg/declaration.d.ts +61 -0
  132. package/dist/elements/media/Svg/declaration.mjs +49 -0
  133. package/dist/elements/media/Svg/index.d.ts +60 -0
  134. package/dist/elements/media/Svg/index.mjs +6 -0
  135. package/dist/elements/media/Svg/sanitizeSvg.d.ts +13 -0
  136. package/dist/elements/media/Svg/sanitizeSvg.mjs +5 -0
  137. package/dist/elements/media/Video/declaration.d.ts +1 -1
  138. package/dist/elements/media/Video/declaration.mjs +1 -1
  139. package/dist/elements/media/Video/index.d.ts +1 -1
  140. package/dist/elements/provider/ApiContainer/ApiContainer.d.ts +6 -1
  141. package/dist/elements/provider/ApiContainer/ApiContainer.mjs +118 -112
  142. package/dist/elements/provider/ApiContainer/Settings.d.ts +2 -1
  143. package/dist/elements/provider/ApiContainer/Settings.mjs +45 -37
  144. package/dist/elements/provider/ApiContainer/declaration.d.ts +1 -1
  145. package/dist/elements/provider/ApiContainer/declaration.mjs +1 -1
  146. package/dist/elements/provider/ApiContainer/helpers/loadingSlot.d.ts +6 -0
  147. package/dist/elements/provider/ApiContainer/helpers/loadingSlot.mjs +8 -0
  148. package/dist/elements/provider/ApiContainer/index.d.ts +1 -1
  149. package/dist/elements/provider/Channel/declaration.d.ts +1 -1
  150. package/dist/elements/provider/Channel/declaration.mjs +1 -1
  151. package/dist/elements/provider/Channel/index.d.ts +1 -1
  152. package/dist/elements/settings.mjs +40 -32
  153. package/dist/elements/structure/Carousel/Carousel.d.ts +32 -0
  154. package/dist/elements/structure/Carousel/Carousel.mjs +183 -0
  155. package/dist/elements/structure/Carousel/CarouselContext.d.ts +29 -0
  156. package/dist/elements/structure/Carousel/CarouselContext.mjs +6 -0
  157. package/dist/elements/structure/Carousel/CarouselTrack/CarouselTrack.d.ts +15 -0
  158. package/dist/elements/structure/Carousel/CarouselTrack/CarouselTrack.mjs +51 -0
  159. package/dist/elements/structure/Carousel/CarouselTrack/Settings.d.ts +2 -0
  160. package/dist/elements/structure/Carousel/CarouselTrack/Settings.mjs +8 -0
  161. package/dist/elements/structure/Carousel/CarouselTrack/components/CarouselSlide/CarouselSlide.d.ts +15 -0
  162. package/dist/elements/structure/Carousel/CarouselTrack/components/CarouselSlide/CarouselSlide.mjs +28 -0
  163. package/dist/elements/structure/Carousel/CarouselTrack/components/CarouselSlide/index.d.ts +2 -0
  164. package/dist/elements/structure/Carousel/CarouselTrack/components/CarouselSlide/index.mjs +2 -0
  165. package/dist/elements/structure/Carousel/CarouselTrack/components/MarqueeTrack/MarqueeTrack.d.ts +18 -0
  166. package/dist/elements/structure/Carousel/CarouselTrack/components/MarqueeTrack/MarqueeTrack.mjs +41 -0
  167. package/dist/elements/structure/Carousel/CarouselTrack/components/MarqueeTrack/index.d.ts +2 -0
  168. package/dist/elements/structure/Carousel/CarouselTrack/components/MarqueeTrack/index.mjs +2 -0
  169. package/dist/elements/structure/Carousel/CarouselTrack/components/ScrollTrack/ScrollTrack.d.ts +12 -0
  170. package/dist/elements/structure/Carousel/CarouselTrack/components/ScrollTrack/ScrollTrack.mjs +27 -0
  171. package/dist/elements/structure/Carousel/CarouselTrack/components/ScrollTrack/index.d.ts +2 -0
  172. package/dist/elements/structure/Carousel/CarouselTrack/components/ScrollTrack/index.mjs +2 -0
  173. package/dist/elements/structure/Carousel/CarouselTrack/declaration.d.ts +53 -0
  174. package/dist/elements/structure/Carousel/CarouselTrack/declaration.mjs +44 -0
  175. package/dist/elements/structure/Carousel/CarouselTrack/index.d.ts +52 -0
  176. package/dist/elements/structure/Carousel/CarouselTrack/index.mjs +6 -0
  177. package/dist/elements/structure/Carousel/Settings.d.ts +14 -0
  178. package/dist/elements/structure/Carousel/Settings.mjs +97 -0
  179. package/dist/elements/structure/Carousel/carouselIndex.d.ts +13 -0
  180. package/dist/elements/structure/Carousel/carouselIndex.mjs +16 -0
  181. package/dist/elements/structure/Carousel/declaration.d.ts +131 -0
  182. package/dist/elements/structure/Carousel/declaration.mjs +106 -0
  183. package/dist/elements/structure/Carousel/index.d.ts +184 -0
  184. package/dist/elements/structure/Carousel/index.mjs +10 -0
  185. package/dist/elements/structure/Carousel/useAutoplay.d.ts +18 -0
  186. package/dist/elements/structure/Carousel/useAutoplay.mjs +34 -0
  187. package/dist/elements/structure/Container/Container.d.ts +1 -1
  188. package/dist/elements/structure/Container/Settings.d.ts +1 -1
  189. package/dist/elements/structure/Container/Settings.mjs +4 -0
  190. package/dist/elements/structure/Container/declaration.d.ts +2 -2
  191. package/dist/elements/structure/Container/declaration.mjs +3 -2
  192. package/dist/elements/structure/Container/index.d.ts +2 -2
  193. package/dist/elements/structure/DialogContainer/declaration.d.ts +1 -1
  194. package/dist/elements/structure/DialogContainer/declaration.mjs +1 -1
  195. package/dist/elements/structure/DialogContainer/index.d.ts +1 -1
  196. package/dist/elements/structure/List/List.d.ts +6 -1
  197. package/dist/elements/structure/List/List.mjs +2 -1
  198. package/dist/elements/structure/List/ListItem/declaration.d.ts +1 -1
  199. package/dist/elements/structure/List/ListItem/declaration.mjs +1 -1
  200. package/dist/elements/structure/List/ListItem/index.d.ts +1 -1
  201. package/dist/elements/structure/List/Settings.d.ts +2 -1
  202. package/dist/elements/structure/List/Settings.mjs +41 -29
  203. package/dist/elements/structure/List/declaration.d.ts +2 -1
  204. package/dist/elements/structure/List/declaration.mjs +1 -1
  205. package/dist/elements/structure/List/index.d.ts +3 -2
  206. package/dist/elements/structure/List/modes/ListControlled/ListControlled.d.ts +2 -1
  207. package/dist/elements/structure/List/modes/ListControlled/ListControlled.mjs +33 -35
  208. package/dist/elements/structure/List/modes/ListControlled/ListControlledItem.mjs +1 -1
  209. package/dist/elements/structure/List/modes/ListControlled/rowKeys.d.ts +10 -0
  210. package/dist/elements/structure/List/modes/ListControlled/rowKeys.mjs +11 -0
  211. package/dist/elements/structure/ModalContainer/declaration.d.ts +1 -1
  212. package/dist/elements/structure/ModalContainer/declaration.mjs +1 -1
  213. package/dist/elements/structure/ModalContainer/index.d.ts +1 -1
  214. package/dist/elements/structure/ModalContainer/metadataFromText.d.ts +6 -0
  215. package/dist/elements/structure/ModalContainer/metadataFromText.mjs +2 -1
  216. package/dist/elements/structure/Pagination/declaration.d.ts +1 -1
  217. package/dist/elements/structure/Pagination/declaration.mjs +1 -1
  218. package/dist/elements/structure/Pagination/index.d.ts +1 -1
  219. package/dist/elements/structure/TabContainer/TabContainerBody/declaration.d.ts +1 -1
  220. package/dist/elements/structure/TabContainer/TabContainerBody/declaration.mjs +1 -1
  221. package/dist/elements/structure/TabContainer/TabContainerBody/index.d.ts +1 -1
  222. package/dist/elements/structure/TabContainer/TabContainerHeader/declaration.d.ts +1 -1
  223. package/dist/elements/structure/TabContainer/TabContainerHeader/declaration.mjs +1 -1
  224. package/dist/elements/structure/TabContainer/TabContainerHeader/index.d.ts +1 -1
  225. package/dist/elements/structure/TabContainer/TabContainerItem/declaration.d.ts +1 -1
  226. package/dist/elements/structure/TabContainer/TabContainerItem/declaration.mjs +1 -1
  227. package/dist/elements/structure/TabContainer/TabContainerItem/index.d.ts +1 -1
  228. package/dist/elements/structure/TabContainer/declaration.d.ts +1 -1
  229. package/dist/elements/structure/TabContainer/declaration.mjs +1 -1
  230. package/dist/elements/structure/TabContainer/index.d.ts +4 -4
  231. package/dist/index.d.ts +373 -39
  232. package/dist/index.mjs +34 -27
  233. package/package.json +200 -12
@@ -0,0 +1,16 @@
1
+ export type IconPlacement = 'before' | 'after';
2
+ export type ElementWordsProps = {
3
+ /** The element's own words. */
4
+ content?: string;
5
+ /** Font Awesome classes for an icon beside them (`'fa-solid fa-arrow-right'`); empty for none. */
6
+ icon?: string;
7
+ iconPlacement?: IconPlacement;
8
+ /** What the element's `icon` slot carries. */
9
+ iconClassName?: string;
10
+ };
11
+ /**
12
+ * What a button or a link says itself — its words and an icon beside them, one element instead of a `text` and a
13
+ * `fontAwesome` inside it. Each element places the whole beside its children with its own `contentPlacement`.
14
+ */
15
+ declare const ElementWords: ({ content, icon, iconPlacement, iconClassName }: ElementWordsProps) => import('react').JSX.Element;
16
+ export default ElementWords;
@@ -0,0 +1,19 @@
1
+ import { Fragment as e, jsx as t, jsxs as n } from "react/jsx-runtime";
2
+ import r from "clsx";
3
+ //#region src/Element/ElementWords.tsx
4
+ var i = ({ icon: e, className: n }) => e ? /* @__PURE__ */ t("i", {
5
+ className: r("plitzi-element-icon", e, n),
6
+ "aria-hidden": "true"
7
+ }) : null, a = ({ content: r = "", icon: a = "", iconPlacement: o = "before", iconClassName: s }) => /* @__PURE__ */ n(e, { children: [
8
+ o === "before" && /* @__PURE__ */ t(i, {
9
+ icon: a,
10
+ className: s
11
+ }),
12
+ r,
13
+ o === "after" && /* @__PURE__ */ t(i, {
14
+ icon: a,
15
+ className: s
16
+ })
17
+ ] });
18
+ //#endregion
19
+ export { a as default };
@@ -15,7 +15,7 @@ var o = ({ ref: o, children: s, tag: c = "div", className: l = "", interactionTr
15
15
  otherProps: p,
16
16
  children: s
17
17
  });
18
- let { root: { baseElementId: y }, contexts: b } = g, x = b.InteractionsContext, { id: S, rootId: C, style: w, definition: { type: T, label: E, runtime: D } } = h, O = D === "server" ? { "data-rsc-id": S } : void 0, k = g.settings.testAttributes === !1 ? void 0 : { "data-plitzi-el": S }, A = !v && (_ || !T || C !== y) ? {} : {
18
+ let { root: { baseElementId: y }, contexts: b } = g, x = b.InteractionsContext, { id: S, rootId: C, style: w, definition: { type: T, label: E, runtime: D, anchor: O } } = h, k = D === "server" ? { "data-rsc-id": S } : void 0, A = g.settings.testAttributes === !1 ? void 0 : { "data-plitzi-el": S }, j = !v && (_ || !T || C !== y) ? {} : {
19
19
  "data-id": S,
20
20
  "data-name": E || T || "unknown",
21
21
  "data-root-id": C,
@@ -31,12 +31,13 @@ var o = ({ ref: o, children: s, tag: c = "div", className: l = "", interactionTr
31
31
  },
32
32
  className: l,
33
33
  otherProps: p,
34
- params: A,
35
- serverMarker: O,
36
- testMarker: k,
34
+ anchor: O,
35
+ params: j,
36
+ serverMarker: k,
37
+ testMarker: A,
37
38
  children: s
38
39
  });
39
- let { className: j, events: M } = r({
40
+ let M = r({
40
41
  elementContext: h,
41
42
  InteractionsContext: x,
42
43
  previewMode: _,
@@ -45,21 +46,23 @@ var o = ({ ref: o, children: s, tag: c = "div", className: l = "", interactionTr
45
46
  className: l,
46
47
  interactionTriggers: u,
47
48
  interactionCallbacks: d,
48
- otherProps: p
49
+ otherProps: p,
50
+ ref: o
49
51
  });
50
52
  return n({
51
53
  tag: c,
52
- refProp: o,
54
+ refProp: M.nodeRef,
53
55
  style: {
54
56
  ...w,
55
57
  ...m
56
58
  },
57
- className: j,
59
+ className: M.className,
58
60
  otherProps: p,
59
- params: A,
60
- serverMarker: O,
61
- testMarker: k,
62
- events: M,
61
+ anchor: O,
62
+ params: j,
63
+ serverMarker: k,
64
+ testMarker: A,
65
+ events: M.events,
63
66
  children: s
64
67
  });
65
68
  };
@@ -91,6 +91,21 @@ var e = {
91
91
  label: "Propagate Event"
92
92
  } }
93
93
  },
94
+ onInterval: {
95
+ action: "onInterval",
96
+ title: "On Interval",
97
+ type: "trigger",
98
+ preview: {
99
+ interval: "",
100
+ count: ""
101
+ },
102
+ params: { interval: {
103
+ canBind: !1,
104
+ defaultValue: "5000",
105
+ type: "text",
106
+ label: "Every (milliseconds, at least 250)"
107
+ } }
108
+ },
94
109
  onKey: {
95
110
  action: "onKey",
96
111
  title: "On Key",
@@ -106,6 +121,18 @@ var e = {
106
121
  label: "Keys (e.g. f, shift+f, mod+k, escape)"
107
122
  } }
108
123
  },
124
+ onScroll: {
125
+ action: "onScroll",
126
+ title: "On Scroll",
127
+ type: "trigger",
128
+ preview: {
129
+ x: "",
130
+ y: "",
131
+ atStart: "",
132
+ atEnd: ""
133
+ },
134
+ params: {}
135
+ },
109
136
  onFlowEnd: {
110
137
  action: "onFlowEnd",
111
138
  title: "On Server Action End",
@@ -6,6 +6,8 @@ export type StaticTagProps = {
6
6
  style?: CSSProperties;
7
7
  className: string;
8
8
  otherProps: Record<string, unknown>;
9
+ /** The element's `anchor`: its `id` in the DOM, what `/page#anchor` scrolls to. */
10
+ anchor?: string;
9
11
  params?: DebugParams;
10
12
  serverMarker?: {
11
13
  'data-rsc-id': string;
@@ -17,5 +19,5 @@ export type StaticTagProps = {
17
19
  events?: Record<string, unknown>;
18
20
  children?: ReactNode;
19
21
  };
20
- declare const renderStaticTag: ({ tag, refProp, style, className, otherProps, params, serverMarker, testMarker, events, children }: StaticTagProps) => ReactElement;
22
+ declare const renderStaticTag: ({ tag, refProp, style, className, otherProps, anchor, params, serverMarker, testMarker, events, children }: StaticTagProps) => ReactElement;
21
23
  export default renderStaticTag;
@@ -1,14 +1,15 @@
1
1
  import { createElement as e } from "react";
2
2
  //#region src/Element/helpers/renderStaticTag.ts
3
- var t = ({ tag: t = "div", refProp: n, style: r, className: i, otherProps: a, params: o, serverMarker: s, testMarker: c, events: l, children: u }) => t === "" ? u : e(t, {
3
+ var t = ({ tag: t = "div", refProp: n, style: r, className: i, otherProps: a, anchor: o, params: s, serverMarker: c, testMarker: l, events: u, children: d }) => t === "" ? d : e(t, {
4
4
  ref: n,
5
5
  style: r,
6
6
  className: i,
7
7
  ...a,
8
- ...o,
9
- ...l,
8
+ ...o ? { id: o } : {},
10
9
  ...s,
11
- ...c
12
- }, u);
10
+ ...u,
11
+ ...c,
12
+ ...l
13
+ }, d);
13
14
  //#endregion
14
15
  export { t as default };
@@ -1,34 +1,35 @@
1
1
  import { useMemo as e } from "react";
2
2
  import { useCommonStore as t } from "@plitzi/sdk-shared/store";
3
3
  import { templatePaths as n } from "@plitzi/sdk-shared/helpers/twigWrapper";
4
+ import { isRecord as r } from "@plitzi/sdk-shared/helpers/isRecord";
4
5
  //#region src/Element/hooks/useElementDataSource.ts
5
- var r = ({ source: e, transformers: t, when: r }) => {
6
- let a = e ? [e] : [];
7
- for (let { action: e, params: r } of t ?? []) e === "twigTemplate" && typeof r.template == "string" && r.template && a.push(...n(r.template).filter((e) => e !== "source" && !e.startsWith("source.")));
8
- return r && a.push(...i(r)), a;
9
- }, i = (e) => e.rules.flatMap((e) => "rules" in e ? i(e) : [e.field, ...e.isBinding && typeof e.value == "string" ? [e.value] : []]), a = (e) => {
6
+ var i = ({ source: e, transformers: t, when: r }) => {
7
+ let i = e ? [e] : [];
8
+ for (let { action: e, params: r } of t ?? []) e === "twigTemplate" && typeof r.template == "string" && r.template && i.push(...n(r.template).filter((e) => e !== "source" && !e.startsWith("source.")));
9
+ return r && i.push(...a(r)), i;
10
+ }, a = (e) => e.rules.flatMap((e) => "rules" in e ? a(e) : [e.field, ...e.isBinding && typeof e.value == "string" ? [e.value] : []]), o = (e) => {
10
11
  let t = [];
11
12
  for (let n of [...new Set(e)].filter(Boolean).sort((e, t) => e.length - t.length)) t.some((e) => n.startsWith(`${e}.`)) || t.push(n);
12
13
  return t;
13
- }, o = (e) => typeof e == "object" && !!e && !Array.isArray(e), s = (e, t, n) => {
14
- let r = t.split("."), i = e;
15
- for (let e of r.slice(0, -1)) {
16
- let t = i[e], n = o(t) ? t : {};
17
- i[e] = n, i = n;
14
+ }, s = (e, t, n) => {
15
+ let i = t.split("."), a = e;
16
+ for (let e of i.slice(0, -1)) {
17
+ let t = a[e], n = r(t) ? t : {};
18
+ a[e] = n, a = n;
18
19
  }
19
- i[r[r.length - 1]] = n;
20
- }, c = ({ bindings: n, sources: i }) => {
21
- let o = e(() => {
22
- let e = new Set(i ?? []);
23
- for (let t of Object.values(n ?? {})) if (Array.isArray(t)) for (let n of t) for (let t of r(n)) e.add(t);
24
- return e.size > 0 && e.add("variables"), a(e);
25
- }, [n, i]), c = e(() => o.map((e) => `runtime.sources.${e}`), [o]), [l] = t(c);
20
+ a[i[i.length - 1]] = n;
21
+ }, c = ({ bindings: n, sources: r }) => {
22
+ let a = e(() => {
23
+ let e = new Set(r ?? []);
24
+ for (let t of Object.values(n ?? {})) if (Array.isArray(t)) for (let n of t) for (let t of i(n)) e.add(t);
25
+ return e.size > 0 && e.add("variables"), o(e);
26
+ }, [n, r]), c = e(() => a.map((e) => `runtime.sources.${e}`), [a]), [l] = t(c);
26
27
  return e(() => {
27
28
  let e = {};
28
- return o.forEach((t, n) => {
29
+ return a.forEach((t, n) => {
29
30
  l[n] !== void 0 && s(e, t, l[n]);
30
31
  }), e;
31
- }, [o, l]);
32
+ }, [a, l]);
32
33
  };
33
34
  //#endregion
34
35
  export { c as default };
@@ -6,58 +6,60 @@ import { useCommonStore as u } from "@plitzi/sdk-shared/store";
6
6
  import { get as d } from "@plitzi/plitzi-ui/helpers";
7
7
  import { usePlitziServiceContext as f } from "@plitzi/sdk-shared";
8
8
  import p from "@plitzi/sdk-shared/elements/ComponentContext";
9
- import { jsx as m } from "react/jsx-runtime";
9
+ import { passesFlagGate as m } from "@plitzi/sdk-shared/flags";
10
+ import { jsx as h } from "react/jsx-runtime";
10
11
  //#region src/Element/hooks/useInternalItems.tsx
11
- var h = typeof window > "u", g = "#layout-body", _ = "#children", v = () => () => {}, y = () => !0, b = () => !1, x = ({ id: x, definition: S, plitziElementLayout: C, children: w, previewMode: T, visible: E = !0 }) => {
12
- let [[D, O]] = u(["schema.flat", "rsc.enabled"], { mode: "mount" }), { components: k, componentDefinitions: A } = o(p), { contexts: { PluginsContext: j } } = f(), { plugins: M } = o(j), { items: N } = S, P = A.current[S.type], F = S.loadStrategy ?? P?.definition.loadStrategy ?? "eager", I = C || w || N?.length, L = c(!1);
13
- E && (L.current = !0);
14
- let R = !T || F === "eager" || E || F === "lazy" && L.current, z = C ? `${C.type}:${C.rootId}:${C.slots.join(",")}` : "", B = l(v, y, b), V = C?.slots.includes(x) ?? !1, H = n(V ? x : void 0);
12
+ var g = typeof window > "u", _ = "#layout-body", v = "#children", y = {}, b = () => () => {}, x = () => !0, S = () => !1, C = ({ id: C, definition: w, plitziElementLayout: T, children: E, previewMode: D, visible: O = !0 }) => {
13
+ let [[k, A]] = u(["schema.flat", "rsc.enabled"], { mode: "mount" }), [j = y] = u("runtime.sources.flags"), { components: M, componentDefinitions: N } = o(p), { contexts: { PluginsContext: P } } = f(), { plugins: F } = o(P), { items: I } = w, L = N.current[w.type], R = w.loadStrategy ?? L?.definition.loadStrategy ?? "eager", z = T || E || I?.length, B = c(!1);
14
+ O && (B.current = !0);
15
+ let V = !D || R === "eager" || O || R === "lazy" && B.current, H = T ? `${T.type}:${T.rootId}:${T.slots.join(",")}` : "", U = l(b, x, S), W = T?.slots.includes(C) ?? !1, G = n(W ? C : void 0);
15
16
  return s(() => {
16
- if (!I || !R) return;
17
- let n = (N ?? []).filter((e) => {
18
- let t = D[e];
19
- if (!t) return !1;
20
- if (!T || !O) return !0;
17
+ if (!z || !V) return;
18
+ let n = (I ?? []).filter((e) => {
19
+ let t = k[e];
20
+ if (!t || !m(t.definition.flag, j)) return !1;
21
+ if (!D || !A) return !0;
21
22
  let n = t.definition.runtime ?? "shared";
22
- return !(!B && n === "client");
23
+ return !(!U && n === "client");
23
24
  }).map((n) => {
24
- let { rootId: i, type: a, runtime: o } = d(D, `${n}.definition`, {}), s = d(C, "rootId", i), c = a in k.current || !!t({
25
+ let { rootId: i, type: a, runtime: o } = d(k, `${n}.definition`, {}), s = d(T, "rootId", i), c = a in M.current || !!t({
25
26
  type: a,
26
- plugins: M
27
+ plugins: F
27
28
  }), l = e({
28
- key: !T && C ? `${n}_${z}` : n,
29
- plitziElementLayout: C,
29
+ key: !D && T ? `${n}_${H}` : n,
30
+ plitziElementLayout: T,
30
31
  type: a,
31
32
  internalProps: {
32
33
  id: n,
33
34
  rootId: s
34
35
  },
35
- components: k.current,
36
- plugins: M
36
+ components: M.current,
37
+ plugins: F
37
38
  });
38
- return O && o === "server" && !h && T && !(B && c) ? /* @__PURE__ */ m(r, {
39
+ return A && o === "server" && !g && D && !(U && c) ? /* @__PURE__ */ h(r, {
39
40
  id: n,
40
41
  children: l
41
42
  }, n) : l;
42
43
  });
43
- if (V && n.push(/* @__PURE__ */ m(i, { children: H }, g)), Array.isArray(w) ? n.push(...w.filter(a)) : a(w) && n.push(/* @__PURE__ */ m(i, { children: w }, _)), N) return n.length === 1 ? n[0] : n;
44
+ if (W && n.push(/* @__PURE__ */ h(i, { children: G }, _)), Array.isArray(E) ? n.push(...E.filter(a)) : a(E) && n.push(/* @__PURE__ */ h(i, { children: E }, v)), I) return n.length === 1 ? n[0] : n;
44
45
  }, [
46
+ z,
47
+ V,
45
48
  I,
46
- R,
47
- N,
48
- C,
49
- w,
50
- D,
49
+ j,
51
50
  T,
52
- O,
53
- B,
54
- z,
51
+ E,
55
52
  k,
53
+ D,
54
+ A,
55
+ U,
56
+ H,
56
57
  M,
57
- x,
58
- V,
59
- H
58
+ F,
59
+ C,
60
+ W,
61
+ G
60
62
  ]);
61
63
  };
62
64
  //#endregion
63
- export { x as default };
65
+ export { C as default };
@@ -0,0 +1,17 @@
1
+ import { InteractionsManager } from '@plitzi/sdk-interactions';
2
+ import { ElementInteraction } from '@plitzi/sdk-shared';
3
+ export type UseIntervalTriggersProps = {
4
+ id: string;
5
+ interactions?: Record<string, ElementInteraction>;
6
+ previewMode: boolean;
7
+ interactionsManager: InteractionsManager;
8
+ };
9
+ /**
10
+ * The element's repeating flows: one clock per interval its `onInterval` flows declare, running while it is mounted.
11
+ *
12
+ * A clock ticks only while the tab is in view — a hidden tab is nobody watching, and an autoplay that kept turning
13
+ * would greet them three slides further on. It does not tick in the builder outside preview, like every other
14
+ * interaction. Each interval counts its own ticks, and a tick is for the flows declared with that interval alone.
15
+ */
16
+ declare const useIntervalTriggers: ({ id, interactions, previewMode, interactionsManager }: UseIntervalTriggersProps) => void;
17
+ export default useIntervalTriggers;
@@ -0,0 +1,37 @@
1
+ import { useEffect as e, useMemo as t } from "react";
2
+ import { INTERVAL_TRIGGER as n, intervalOf as r } from "@plitzi/sdk-shared/helpers/interval";
3
+ //#region src/Element/hooks/useIntervalTriggers.ts
4
+ var i = ({ id: i, interactions: a, previewMode: o, interactionsManager: s }) => {
5
+ let c = t(() => [...new Set(Object.values(a ?? {}).flatMap((e) => {
6
+ let t = r(e.params.interval);
7
+ return e.type === "trigger" && e.action === n && e.enabled && t ? [t] : [];
8
+ }))], [a]);
9
+ e(() => {
10
+ if (!o || !c.length || typeof document > "u") return;
11
+ let e = new Map(c.map((e) => [e, 0])), t = [], r = () => {
12
+ t = c.map((t) => setInterval(() => {
13
+ let r = (e.get(t) ?? 0) + 1;
14
+ e.set(t, r);
15
+ let a = {
16
+ interval: t,
17
+ count: r
18
+ };
19
+ s.interactionTrigger(i, n, a);
20
+ }, t));
21
+ }, a = () => {
22
+ t.forEach((e) => clearInterval(e)), t = [];
23
+ }, l = () => {
24
+ a(), document.visibilityState === "visible" && r();
25
+ };
26
+ return l(), document.addEventListener("visibilitychange", l), () => {
27
+ document.removeEventListener("visibilitychange", l), a();
28
+ };
29
+ }, [
30
+ i,
31
+ s,
32
+ o,
33
+ c
34
+ ]);
35
+ };
36
+ //#endregion
37
+ export { i as default };
@@ -1,7 +1,7 @@
1
1
  import { ElementContextValue } from '../ElementContext';
2
2
  import { InteractionsContextValue } from '@plitzi/sdk-interactions';
3
3
  import { InteractionCallback } from '@plitzi/sdk-shared';
4
- import { Context } from 'react';
4
+ import { Context, RefObject } from 'react';
5
5
  export type UseRootElementInteractionsProps = {
6
6
  elementContext: ElementContextValue;
7
7
  InteractionsContext: Context<InteractionsContextValue>;
@@ -12,10 +12,14 @@ export type UseRootElementInteractionsProps = {
12
12
  interactionTriggers?: Record<string, InteractionCallback>;
13
13
  interactionCallbacks?: Record<string, InteractionCallback>;
14
14
  otherProps: Record<string, unknown>;
15
+ /** The component's own ref to its root node, when it keeps one; the scroll steps read the same node. */
16
+ ref?: RefObject<HTMLElement | null>;
15
17
  };
16
18
  export type RootElementInteractions = {
17
19
  className: string;
18
20
  events: Record<string, unknown>;
21
+ /** The ref the root node is rendered with: the component's, or one of the element's own. */
22
+ nodeRef: RefObject<HTMLElement | null>;
19
23
  };
20
- declare const useRootElementInteractions: ({ elementContext, InteractionsContext, previewMode, debugMode, baseElementId, className, interactionTriggers, interactionCallbacks, otherProps }: UseRootElementInteractionsProps) => RootElementInteractions;
24
+ declare const useRootElementInteractions: ({ elementContext, InteractionsContext, previewMode, debugMode, baseElementId, className, interactionTriggers, interactionCallbacks, otherProps, ref }: UseRootElementInteractionsProps) => RootElementInteractions;
21
25
  export default useRootElementInteractions;
@@ -1,87 +1,108 @@
1
1
  import e from "./useElementInteractions.mjs";
2
2
  import t from "./useInternalClassName.mjs";
3
- import n from "./useKeyTriggers.mjs";
4
- import { interactionBasicTriggers as r, nativeEventsList as i } from "../helpers/elementConstants.mjs";
5
- import { use as a, useCallback as o, useContext as s, useEffect as c, useMemo as l } from "react";
6
- import { get as u } from "@plitzi/plitzi-ui/helpers";
7
- import { StoreContext as d } from "@plitzi/nexus/react";
8
- import { emptyObject as f } from "@plitzi/sdk-shared/helpers/utils";
9
- import p from "clsx";
10
- import { liveSources as m } from "@plitzi/sdk-shared/dataSource";
11
- import { pConsole as h } from "@plitzi/sdk-shared/devTools/utils/PlitziConsole";
3
+ import n from "./useIntervalTriggers.mjs";
4
+ import r from "./useKeyTriggers.mjs";
5
+ import i from "./useScrollInteractions.mjs";
6
+ import { interactionBasicTriggers as a, nativeEventsList as o } from "../helpers/elementConstants.mjs";
7
+ import { use as s, useCallback as c, useContext as l, useEffect as u, useMemo as d, useRef as f } from "react";
8
+ import { get as p } from "@plitzi/plitzi-ui/helpers";
9
+ import { isRecord as m } from "@plitzi/sdk-shared/helpers/isRecord";
10
+ import { StoreContext as h } from "@plitzi/nexus/react";
11
+ import { emptyObject as g } from "@plitzi/sdk-shared/helpers/utils";
12
+ import _ from "clsx";
13
+ import { liveSources as v } from "@plitzi/sdk-shared/dataSource";
14
+ import { pConsole as y } from "@plitzi/sdk-shared/devTools/utils/PlitziConsole";
12
15
  //#region src/Element/hooks/useRootElementInteractions.ts
13
- var g = (e) => typeof e == "object" && !!e, _ = /* @__PURE__ */ new WeakSet(), v = (e) => "nativeEvent" in e && g(e.nativeEvent) ? e.nativeEvent : e, y = ({ elementContext: y, InteractionsContext: b, previewMode: x, debugMode: S, baseElementId: C, className: w, interactionTriggers: T, interactionCallbacks: E, otherProps: D }) => {
14
- let { id: O, className: k, attributes: A, definition: j, definition: { interactions: M }, plitziElementLayout: N, elementState: P, setElementState: F } = y, { interactionsManager: I, useInteractions: L } = a(b), R = o((e, t, n, r, i = !1) => {
16
+ var b = /* @__PURE__ */ new WeakSet(), x = (e) => "nativeEvent" in e && m(e.nativeEvent) ? e.nativeEvent : e, S = ({ elementContext: S, InteractionsContext: C, previewMode: w, debugMode: T, baseElementId: E, className: D, interactionTriggers: O, interactionCallbacks: k, otherProps: A, ref: j }) => {
17
+ let { id: M, className: N, attributes: P, definition: F, definition: { interactions: I }, plitziElementLayout: L, elementState: R, setElementState: z } = S, { interactionsManager: B, useInteractions: V } = s(C), H = c((e, t, n, r, i = !1) => {
15
18
  i || e.preventDefault(), r && r(e);
16
- let a = v(e);
17
- _.has(a) || (i || _.add(a), I.interactionTrigger(t, n, { event: e }));
18
- }, [I]), z = l(() => !x || !M ? {} : Object.values(M).filter((e) => e.type === "trigger" && e.action && i.includes(e.action) && e.enabled).reduce((e, t) => {
19
- let n = u(t, "params.propagateEvent", !1);
19
+ let a = x(e);
20
+ b.has(a) || (i || b.add(a), B.interactionTrigger(t, n, { event: e }));
21
+ }, [B]), U = d(() => !w || !I ? {} : Object.values(I).filter((e) => e.type === "trigger" && e.action && o.includes(e.action) && e.enabled).reduce((e, t) => {
22
+ let n = p(t, "params.propagateEvent", !1);
20
23
  return {
21
24
  ...e,
22
- [t.action]: (e) => R(e, O, t.action, D[t.action], n)
25
+ [t.action]: (e) => H(e, M, t.action, A[t.action], n)
23
26
  };
24
27
  }, {}), [
25
- O,
26
28
  M,
27
- D,
28
- x,
29
- R
30
- ]), B = s(d), V = o(() => {
31
- let e = B?.getPath("runtime.sources");
32
- return m(g(e) ? e : f, B?.getPath("runtime.state"), B?.getPath("schema.settings.computed"));
33
- }, [B]), H = o(() => ({ dataSource: V() }), [V]), U = l(() => ({
34
- ...r,
35
- ...T
36
- }), [T]), W = e({
37
- attributes: A,
38
- definition: j,
39
- setElementState: F
29
+ I,
30
+ A,
31
+ w,
32
+ H
33
+ ]), W = l(h), G = c(() => {
34
+ let e = W?.getPath("runtime.sources");
35
+ return v(m(e) ? e : g, W?.getPath("runtime.state"), W?.getPath("schema.settings.computed"));
36
+ }, [W]), K = c(() => ({ dataSource: G() }), [G]), q = d(() => ({
37
+ ...a,
38
+ ...O
39
+ }), [O]), J = f(null), Y = j ?? J, X = e({
40
+ attributes: P,
41
+ definition: F,
42
+ setElementState: z
43
+ }), Z = i({
44
+ id: M,
45
+ label: F.label,
46
+ nodeRef: Y,
47
+ interactions: I,
48
+ previewMode: w,
49
+ interactionsManager: B
40
50
  });
41
- L({
42
- id: O,
43
- interactions: M,
44
- triggers: U,
45
- callbacks: l(() => ({
46
- ...E,
47
- ...W
48
- }), [E, W]),
49
- getAdditionalParams: H
51
+ V({
52
+ id: M,
53
+ interactions: I,
54
+ triggers: q,
55
+ callbacks: d(() => ({
56
+ ...k,
57
+ ...Z,
58
+ ...X
59
+ }), [
60
+ k,
61
+ Z,
62
+ X
63
+ ]),
64
+ getAdditionalParams: K
65
+ }), r({
66
+ id: M,
67
+ interactions: I,
68
+ previewMode: w,
69
+ interactionsManager: B
50
70
  }), n({
51
- id: O,
52
- interactions: M,
53
- previewMode: x,
54
- interactionsManager: I
55
- }), c(() => {
56
- if (!x || !M || !Object.keys(M).length) return;
71
+ id: M,
72
+ interactions: I,
73
+ previewMode: w,
74
+ interactionsManager: B
75
+ }), u(() => {
76
+ if (!w || !I || !Object.keys(I).length) return;
57
77
  let e = !1;
58
78
  return queueMicrotask(() => {
59
- e || I.interactionTrigger(O, "onLoad", {});
79
+ e || B.interactionTrigger(M, "onLoad", {});
60
80
  }), () => {
61
81
  e = !0;
62
82
  };
63
- }, []), c(() => {
64
- if (S) return h.addProviderMethod(`getElementDataSource-${O}`, V), () => {
65
- h.removeProviderMethod(`getElementDataSource-${O}`);
83
+ }, []), u(() => {
84
+ if (T) return y.addProviderMethod(`getElementDataSource-${M}`, G), () => {
85
+ y.removeProviderMethod(`getElementDataSource-${M}`);
66
86
  };
67
87
  }, [
68
- S,
69
- V,
70
- O
88
+ T,
89
+ G,
90
+ M
71
91
  ]);
72
- let G = t({
73
- id: O,
74
- className: w,
75
- previewMode: x,
76
- baseElementId: C,
77
- definition: j,
78
- elementState: P,
79
- plitziElementLayout: N
92
+ let Q = t({
93
+ id: M,
94
+ className: D,
95
+ previewMode: w,
96
+ baseElementId: E,
97
+ definition: F,
98
+ elementState: R,
99
+ plitziElementLayout: L
80
100
  });
81
101
  return {
82
- className: p(k, G),
83
- events: z
102
+ className: _(N, Q),
103
+ events: U,
104
+ nodeRef: Y
84
105
  };
85
106
  };
86
107
  //#endregion
87
- export { y as default };
108
+ export { S as default };
@@ -0,0 +1,20 @@
1
+ import { InteractionsManager } from '@plitzi/sdk-interactions';
2
+ import { ElementInteraction, InteractionCallback } from '@plitzi/sdk-shared';
3
+ import { RefObject } from 'react';
4
+ export type UseScrollInteractionsProps = {
5
+ id: string;
6
+ label: string;
7
+ nodeRef: RefObject<HTMLElement | null>;
8
+ interactions?: Record<string, ElementInteraction>;
9
+ previewMode: boolean;
10
+ interactionsManager: InteractionsManager;
11
+ };
12
+ /**
13
+ * The element's scroll steps, and its `onScroll` trigger.
14
+ *
15
+ * The steps move the element's own box — a row of cards with `overflow: auto` — or, `scrollIntoView`, the page to it;
16
+ * the node is read when a step runs, so one rendered after the flow was wired is still the one moved. `onScroll` fires
17
+ * at most once a frame, and once on mount so a flow can hide an arrow before anybody has scrolled.
18
+ */
19
+ declare const useScrollInteractions: ({ id, label, nodeRef, interactions, previewMode, interactionsManager }: UseScrollInteractionsProps) => Record<string, InteractionCallback>;
20
+ export default useScrollInteractions;