@plitzi/sdk-elements 0.37.8 → 0.37.10

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 (247) hide show
  1. package/CHANGELOG.md +835 -0
  2. package/dist/Element/ElementContext.mjs +2 -3
  3. package/dist/Element/ElementParentContext.mjs +2 -3
  4. package/dist/Element/ElementWords.d.ts +16 -0
  5. package/dist/Element/ElementWords.mjs +19 -0
  6. package/dist/Element/LayoutBody.d.ts +12 -9
  7. package/dist/Element/LayoutBody.mjs +13 -14
  8. package/dist/Element/RootElement.mjs +15 -12
  9. package/dist/Element/helpers/elementConstants.mjs +27 -0
  10. package/dist/Element/helpers/renderStaticTag.d.ts +3 -1
  11. package/dist/Element/helpers/renderStaticTag.mjs +6 -5
  12. package/dist/Element/hooks/useElementDataSource.mjs +20 -19
  13. package/dist/Element/hooks/useElementInternal.mjs +21 -20
  14. package/dist/Element/hooks/useInternalClassName.mjs +1 -1
  15. package/dist/Element/hooks/useInternalItems.mjs +33 -31
  16. package/dist/Element/hooks/useIntervalTriggers.d.ts +17 -0
  17. package/dist/Element/hooks/useIntervalTriggers.mjs +37 -0
  18. package/dist/Element/hooks/useRootElementInteractions.d.ts +6 -2
  19. package/dist/Element/hooks/useRootElementInteractions.mjs +84 -63
  20. package/dist/Element/hooks/useScrollInteractions.d.ts +20 -0
  21. package/dist/Element/hooks/useScrollInteractions.mjs +58 -0
  22. package/dist/components/IconField/IconField.d.ts +8 -0
  23. package/dist/components/IconField/IconField.mjs +41 -0
  24. package/dist/components/IconField/index.d.ts +2 -0
  25. package/dist/components/IconField/index.mjs +2 -0
  26. package/dist/components/IconPicker/IconPicker.d.ts +11 -0
  27. package/dist/components/IconPicker/IconPicker.mjs +82 -0
  28. package/dist/components/IconPicker/index.d.ts +2 -0
  29. package/dist/components/IconPicker/index.mjs +2 -0
  30. package/dist/dataSource/GlobalSources.mjs +102 -83
  31. package/dist/dataSource/useFlag.d.ts +9 -0
  32. package/dist/dataSource/useFlag.mjs +8 -0
  33. package/dist/elements/advanced/BlockHtml/declaration.d.ts +1 -1
  34. package/dist/elements/advanced/BlockHtml/declaration.mjs +1 -1
  35. package/dist/elements/advanced/BlockHtml/index.d.ts +1 -1
  36. package/dist/elements/advanced/BlockJsx/Settings.mjs +2 -1
  37. package/dist/elements/advanced/BlockJsx/declaration.d.ts +1 -1
  38. package/dist/elements/advanced/BlockJsx/declaration.mjs +1 -1
  39. package/dist/elements/advanced/BlockJsx/index.d.ts +1 -1
  40. package/dist/elements/advanced/Custom/declaration.d.ts +1 -1
  41. package/dist/elements/advanced/Custom/declaration.mjs +1 -1
  42. package/dist/elements/advanced/Custom/index.d.ts +1 -1
  43. package/dist/elements/advanced/NodeHtml/declaration.d.ts +3 -3
  44. package/dist/elements/advanced/NodeHtml/declaration.mjs +1 -1
  45. package/dist/elements/advanced/NodeHtml/index.d.ts +3 -3
  46. package/dist/elements/advanced/Reference/PropField.d.ts +13 -0
  47. package/dist/elements/advanced/Reference/PropField.mjs +65 -0
  48. package/dist/elements/advanced/Reference/Reference.d.ts +5 -6
  49. package/dist/elements/advanced/Reference/Reference.mjs +128 -138
  50. package/dist/elements/advanced/Reference/Settings.d.ts +5 -4
  51. package/dist/elements/advanced/Reference/Settings.mjs +48 -87
  52. package/dist/elements/advanced/Reference/declaration.d.ts +3 -5
  53. package/dist/elements/advanced/Reference/declaration.mjs +3 -4
  54. package/dist/elements/advanced/Reference/index.d.ts +3 -5
  55. package/dist/elements/basic/Button/Button.d.ts +9 -1
  56. package/dist/elements/basic/Button/Button.mjs +31 -19
  57. package/dist/elements/basic/Button/Settings.d.ts +3 -1
  58. package/dist/elements/basic/Button/Settings.mjs +39 -33
  59. package/dist/elements/basic/Button/declaration.d.ts +7 -1
  60. package/dist/elements/basic/Button/declaration.mjs +10 -4
  61. package/dist/elements/basic/Button/index.d.ts +7 -1
  62. package/dist/elements/basic/Dropdown/DropdownPopup/declaration.d.ts +1 -1
  63. package/dist/elements/basic/Dropdown/DropdownPopup/declaration.mjs +1 -1
  64. package/dist/elements/basic/Dropdown/DropdownPopup/index.d.ts +1 -1
  65. package/dist/elements/basic/Dropdown/declaration.d.ts +1 -1
  66. package/dist/elements/basic/Dropdown/declaration.mjs +1 -1
  67. package/dist/elements/basic/Dropdown/index.d.ts +2 -2
  68. package/dist/elements/basic/Heading/declaration.d.ts +1 -1
  69. package/dist/elements/basic/Heading/declaration.mjs +1 -1
  70. package/dist/elements/basic/Heading/index.d.ts +1 -1
  71. package/dist/elements/basic/Link/Link.d.ts +20 -1
  72. package/dist/elements/basic/Link/Link.mjs +67 -47
  73. package/dist/elements/basic/Link/Settings.d.ts +6 -1
  74. package/dist/elements/basic/Link/Settings.mjs +91 -58
  75. package/dist/elements/basic/Link/declaration.d.ts +14 -1
  76. package/dist/elements/basic/Link/declaration.mjs +15 -5
  77. package/dist/elements/basic/Link/index.d.ts +14 -1
  78. package/dist/elements/basic/Link/isCurrentPage.d.ts +5 -0
  79. package/dist/elements/basic/Link/isCurrentPage.mjs +12 -0
  80. package/dist/elements/basic/Markdown/declaration.d.ts +1 -1
  81. package/dist/elements/basic/Markdown/declaration.mjs +1 -1
  82. package/dist/elements/basic/Markdown/index.d.ts +1 -1
  83. package/dist/elements/basic/Paragraph/declaration.d.ts +1 -1
  84. package/dist/elements/basic/Paragraph/declaration.mjs +1 -1
  85. package/dist/elements/basic/Paragraph/index.d.ts +1 -1
  86. package/dist/elements/basic/RichText/declaration.d.ts +1 -1
  87. package/dist/elements/basic/RichText/declaration.mjs +1 -1
  88. package/dist/elements/basic/RichText/index.d.ts +1 -1
  89. package/dist/elements/basic/Text/declaration.d.ts +1 -1
  90. package/dist/elements/basic/Text/declaration.mjs +1 -1
  91. package/dist/elements/basic/Text/index.d.ts +1 -1
  92. package/dist/elements/basic/ThemeToggle/declaration.d.ts +1 -1
  93. package/dist/elements/basic/ThemeToggle/declaration.mjs +1 -1
  94. package/dist/elements/basic/ThemeToggle/index.d.ts +1 -1
  95. package/dist/elements/declarations/index.d.ts +364 -44
  96. package/dist/elements/declarations/index.mjs +40 -32
  97. package/dist/elements/form/Form/declaration.d.ts +1 -1
  98. package/dist/elements/form/Form/declaration.mjs +1 -1
  99. package/dist/elements/form/Form/index.d.ts +1 -1
  100. package/dist/elements/form/FormControl/FormControl.mjs +1 -1
  101. package/dist/elements/form/FormControl/declaration.d.ts +1 -1
  102. package/dist/elements/form/FormControl/declaration.mjs +1 -1
  103. package/dist/elements/form/FormControl/index.d.ts +1 -1
  104. package/dist/elements/index.d.ts +7 -1
  105. package/dist/elements/index.mjs +30 -24
  106. package/dist/elements/internal/LayoutContainer/declaration.d.ts +1 -1
  107. package/dist/elements/internal/LayoutContainer/declaration.mjs +1 -1
  108. package/dist/elements/internal/LayoutContainer/index.d.ts +1 -1
  109. package/dist/elements/internal/Loading/declaration.d.ts +1 -1
  110. package/dist/elements/internal/Loading/declaration.mjs +1 -1
  111. package/dist/elements/internal/Loading/index.d.ts +1 -1
  112. package/dist/elements/internal/NotFound/declaration.d.ts +1 -1
  113. package/dist/elements/internal/NotFound/declaration.mjs +1 -1
  114. package/dist/elements/internal/NotFound/index.d.ts +1 -1
  115. package/dist/elements/internal/Page/Page.mjs +29 -29
  116. package/dist/elements/internal/Page/declaration.d.ts +1 -1
  117. package/dist/elements/internal/Page/declaration.mjs +1 -1
  118. package/dist/elements/internal/Page/index.d.ts +1 -1
  119. package/dist/elements/media/Embed/Embed.d.ts +22 -0
  120. package/dist/elements/media/Embed/Embed.mjs +29 -0
  121. package/dist/elements/media/Embed/Settings.d.ts +10 -0
  122. package/dist/elements/media/Embed/Settings.mjs +51 -0
  123. package/dist/elements/media/Embed/declaration.d.ts +70 -0
  124. package/dist/elements/media/Embed/declaration.mjs +54 -0
  125. package/dist/elements/media/Embed/embeddableSrc.d.ts +5 -0
  126. package/dist/elements/media/Embed/embeddableSrc.mjs +4 -0
  127. package/dist/elements/media/Embed/index.d.ts +69 -0
  128. package/dist/elements/media/Embed/index.mjs +6 -0
  129. package/dist/elements/media/FontAwesome/Settings.mjs +32 -100
  130. package/dist/elements/media/FontAwesome/declaration.d.ts +1 -1
  131. package/dist/elements/media/FontAwesome/declaration.mjs +1 -1
  132. package/dist/elements/media/FontAwesome/index.d.ts +1 -1
  133. package/dist/elements/media/Image/Image.d.ts +11 -1
  134. package/dist/elements/media/Image/Image.mjs +33 -23
  135. package/dist/elements/media/Image/Settings.d.ts +4 -1
  136. package/dist/elements/media/Image/Settings.mjs +32 -9
  137. package/dist/elements/media/Image/declaration.d.ts +4 -1
  138. package/dist/elements/media/Image/declaration.mjs +1 -1
  139. package/dist/elements/media/Image/index.d.ts +4 -1
  140. package/dist/elements/media/Svg/Settings.d.ts +7 -0
  141. package/dist/elements/media/Svg/Settings.mjs +24 -0
  142. package/dist/elements/media/Svg/Svg.d.ts +16 -0
  143. package/dist/elements/media/Svg/Svg.mjs +31 -0
  144. package/dist/elements/media/Svg/declaration.d.ts +61 -0
  145. package/dist/elements/media/Svg/declaration.mjs +49 -0
  146. package/dist/elements/media/Svg/index.d.ts +60 -0
  147. package/dist/elements/media/Svg/index.mjs +6 -0
  148. package/dist/elements/media/Svg/sanitizeSvg.d.ts +13 -0
  149. package/dist/elements/media/Svg/sanitizeSvg.mjs +5 -0
  150. package/dist/elements/media/Video/declaration.d.ts +1 -1
  151. package/dist/elements/media/Video/declaration.mjs +1 -1
  152. package/dist/elements/media/Video/index.d.ts +1 -1
  153. package/dist/elements/provider/ApiContainer/ApiContainer.d.ts +6 -1
  154. package/dist/elements/provider/ApiContainer/ApiContainer.mjs +118 -112
  155. package/dist/elements/provider/ApiContainer/Settings.d.ts +2 -1
  156. package/dist/elements/provider/ApiContainer/Settings.mjs +45 -37
  157. package/dist/elements/provider/ApiContainer/declaration.d.ts +1 -1
  158. package/dist/elements/provider/ApiContainer/declaration.mjs +1 -1
  159. package/dist/elements/provider/ApiContainer/helpers/loadingSlot.d.ts +6 -0
  160. package/dist/elements/provider/ApiContainer/helpers/loadingSlot.mjs +8 -0
  161. package/dist/elements/provider/ApiContainer/hooks/useApi.mjs +12 -12
  162. package/dist/elements/provider/ApiContainer/index.d.ts +1 -1
  163. package/dist/elements/provider/Channel/declaration.d.ts +1 -1
  164. package/dist/elements/provider/Channel/declaration.mjs +1 -1
  165. package/dist/elements/provider/Channel/index.d.ts +1 -1
  166. package/dist/elements/settings.mjs +40 -32
  167. package/dist/elements/structure/Carousel/Carousel.d.ts +32 -0
  168. package/dist/elements/structure/Carousel/Carousel.mjs +183 -0
  169. package/dist/elements/structure/Carousel/CarouselContext.d.ts +29 -0
  170. package/dist/elements/structure/Carousel/CarouselContext.mjs +6 -0
  171. package/dist/elements/structure/Carousel/CarouselTrack/CarouselTrack.d.ts +15 -0
  172. package/dist/elements/structure/Carousel/CarouselTrack/CarouselTrack.mjs +51 -0
  173. package/dist/elements/structure/Carousel/CarouselTrack/Settings.d.ts +2 -0
  174. package/dist/elements/structure/Carousel/CarouselTrack/Settings.mjs +8 -0
  175. package/dist/elements/structure/Carousel/CarouselTrack/components/CarouselSlide/CarouselSlide.d.ts +15 -0
  176. package/dist/elements/structure/Carousel/CarouselTrack/components/CarouselSlide/CarouselSlide.mjs +28 -0
  177. package/dist/elements/structure/Carousel/CarouselTrack/components/CarouselSlide/index.d.ts +2 -0
  178. package/dist/elements/structure/Carousel/CarouselTrack/components/CarouselSlide/index.mjs +2 -0
  179. package/dist/elements/structure/Carousel/CarouselTrack/components/MarqueeTrack/MarqueeTrack.d.ts +18 -0
  180. package/dist/elements/structure/Carousel/CarouselTrack/components/MarqueeTrack/MarqueeTrack.mjs +41 -0
  181. package/dist/elements/structure/Carousel/CarouselTrack/components/MarqueeTrack/index.d.ts +2 -0
  182. package/dist/elements/structure/Carousel/CarouselTrack/components/MarqueeTrack/index.mjs +2 -0
  183. package/dist/elements/structure/Carousel/CarouselTrack/components/ScrollTrack/ScrollTrack.d.ts +12 -0
  184. package/dist/elements/structure/Carousel/CarouselTrack/components/ScrollTrack/ScrollTrack.mjs +27 -0
  185. package/dist/elements/structure/Carousel/CarouselTrack/components/ScrollTrack/index.d.ts +2 -0
  186. package/dist/elements/structure/Carousel/CarouselTrack/components/ScrollTrack/index.mjs +2 -0
  187. package/dist/elements/structure/Carousel/CarouselTrack/declaration.d.ts +53 -0
  188. package/dist/elements/structure/Carousel/CarouselTrack/declaration.mjs +44 -0
  189. package/dist/elements/structure/Carousel/CarouselTrack/index.d.ts +52 -0
  190. package/dist/elements/structure/Carousel/CarouselTrack/index.mjs +6 -0
  191. package/dist/elements/structure/Carousel/Settings.d.ts +14 -0
  192. package/dist/elements/structure/Carousel/Settings.mjs +97 -0
  193. package/dist/elements/structure/Carousel/carouselIndex.d.ts +13 -0
  194. package/dist/elements/structure/Carousel/carouselIndex.mjs +16 -0
  195. package/dist/elements/structure/Carousel/declaration.d.ts +131 -0
  196. package/dist/elements/structure/Carousel/declaration.mjs +106 -0
  197. package/dist/elements/structure/Carousel/index.d.ts +184 -0
  198. package/dist/elements/structure/Carousel/index.mjs +10 -0
  199. package/dist/elements/structure/Carousel/useAutoplay.d.ts +18 -0
  200. package/dist/elements/structure/Carousel/useAutoplay.mjs +34 -0
  201. package/dist/elements/structure/Container/Container.d.ts +1 -1
  202. package/dist/elements/structure/Container/Settings.d.ts +1 -1
  203. package/dist/elements/structure/Container/Settings.mjs +4 -0
  204. package/dist/elements/structure/Container/declaration.d.ts +2 -2
  205. package/dist/elements/structure/Container/declaration.mjs +3 -2
  206. package/dist/elements/structure/Container/index.d.ts +2 -2
  207. package/dist/elements/structure/DialogContainer/declaration.d.ts +1 -1
  208. package/dist/elements/structure/DialogContainer/declaration.mjs +1 -1
  209. package/dist/elements/structure/DialogContainer/index.d.ts +1 -1
  210. package/dist/elements/structure/List/List.d.ts +6 -1
  211. package/dist/elements/structure/List/List.mjs +2 -1
  212. package/dist/elements/structure/List/ListItem/declaration.d.ts +1 -1
  213. package/dist/elements/structure/List/ListItem/declaration.mjs +1 -1
  214. package/dist/elements/structure/List/ListItem/index.d.ts +1 -1
  215. package/dist/elements/structure/List/Settings.d.ts +2 -1
  216. package/dist/elements/structure/List/Settings.mjs +41 -29
  217. package/dist/elements/structure/List/declaration.d.ts +2 -1
  218. package/dist/elements/structure/List/declaration.mjs +1 -1
  219. package/dist/elements/structure/List/index.d.ts +3 -2
  220. package/dist/elements/structure/List/modes/ListControlled/ListControlled.d.ts +2 -1
  221. package/dist/elements/structure/List/modes/ListControlled/ListControlled.mjs +36 -35
  222. package/dist/elements/structure/List/modes/ListControlled/ListControlledItem.mjs +1 -1
  223. package/dist/elements/structure/List/modes/ListControlled/rowKeys.d.ts +10 -0
  224. package/dist/elements/structure/List/modes/ListControlled/rowKeys.mjs +11 -0
  225. package/dist/elements/structure/ModalContainer/declaration.d.ts +1 -1
  226. package/dist/elements/structure/ModalContainer/declaration.mjs +1 -1
  227. package/dist/elements/structure/ModalContainer/index.d.ts +1 -1
  228. package/dist/elements/structure/ModalContainer/metadataFromText.d.ts +6 -0
  229. package/dist/elements/structure/ModalContainer/metadataFromText.mjs +2 -1
  230. package/dist/elements/structure/Pagination/declaration.d.ts +1 -1
  231. package/dist/elements/structure/Pagination/declaration.mjs +1 -1
  232. package/dist/elements/structure/Pagination/index.d.ts +1 -1
  233. package/dist/elements/structure/TabContainer/TabContainerBody/declaration.d.ts +1 -1
  234. package/dist/elements/structure/TabContainer/TabContainerBody/declaration.mjs +1 -1
  235. package/dist/elements/structure/TabContainer/TabContainerBody/index.d.ts +1 -1
  236. package/dist/elements/structure/TabContainer/TabContainerHeader/declaration.d.ts +1 -1
  237. package/dist/elements/structure/TabContainer/TabContainerHeader/declaration.mjs +1 -1
  238. package/dist/elements/structure/TabContainer/TabContainerHeader/index.d.ts +1 -1
  239. package/dist/elements/structure/TabContainer/TabContainerItem/declaration.d.ts +1 -1
  240. package/dist/elements/structure/TabContainer/TabContainerItem/declaration.mjs +1 -1
  241. package/dist/elements/structure/TabContainer/TabContainerItem/index.d.ts +1 -1
  242. package/dist/elements/structure/TabContainer/declaration.d.ts +1 -1
  243. package/dist/elements/structure/TabContainer/declaration.mjs +1 -1
  244. package/dist/elements/structure/TabContainer/index.d.ts +4 -4
  245. package/dist/index.d.ts +375 -43
  246. package/dist/index.mjs +34 -27
  247. package/package.json +202 -10
@@ -1,6 +1,5 @@
1
- import { createContext as e } from "react";
1
+ import { sharedContext as e } from "@plitzi/sdk-shared/helpers/sharedContext";
2
2
  //#region src/Element/ElementContext.tsx
3
- var t = e(void 0);
4
- t.displayName = "ElementContext";
3
+ var t = e("ElementContext", void 0);
5
4
  //#endregion
6
5
  export { t as default };
@@ -1,6 +1,5 @@
1
- import { createContext as e } from "react";
1
+ import { sharedContext as e } from "@plitzi/sdk-shared/helpers/sharedContext";
2
2
  //#region src/Element/ElementParentContext.ts
3
- var t = e(void 0);
4
- t.displayName = "ElementParentContext";
3
+ var t = e("ElementParentContext", void 0);
5
4
  //#endregion
6
5
  export { t as default };
@@ -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 };
@@ -1,21 +1,24 @@
1
1
  import { ReactNode } from 'react';
2
2
  export type LayoutBodyProps = {
3
- /** What the slot of the shell below renders: the page's content, or the shell nested inside this one. */
4
- body: ReactNode;
3
+ /**
4
+ * What each slot of the shell below renders, by the slot's id: a layout's one slot holds the page's content (or the
5
+ * shell nested inside this one), and a component instance's slots hold the children that name them.
6
+ */
7
+ bodies: Record<string, ReactNode>;
5
8
  children: ReactNode;
6
9
  };
7
10
  /**
8
- * Hands a shell's slot its body without handing it to every element of the shell.
11
+ * Hands a shell's slots their bodies without handing them to every element of the shell.
9
12
  *
10
13
  * The body used to travel inside `plitziElementLayout`, which every element of the shell receives as a prop. The body
11
14
  * is a new node on every navigation — it IS the page — so the whole shell rendered again each time, sidebar and all,
12
- * to show the one container that holds the page. Here the value every element reads never changes; only the slot
15
+ * to show the one container that holds the page. Here the value every element reads never changes; only a slot
13
16
  * subscribes to what it holds.
14
17
  *
15
- * `current` is the body as of the first render, which is what the server renders and what hydration reads. Later
16
- * bodies are announced after the commit, and the slot renders them before the browser paints.
18
+ * `current` is the bodies as of the first render, which is what the server renders and what hydration reads. Later
19
+ * ones are announced after the commit, and the slots render them before the browser paints.
17
20
  */
18
- declare const LayoutBody: ({ body, children }: LayoutBodyProps) => import('react').JSX.Element;
19
- /** The body of the nearest shell, for the element that is its slot; nothing, and no subscription, for any other. */
20
- export declare const useLayoutBody: (isSlot: boolean) => ReactNode;
21
+ declare const LayoutBody: ({ bodies, children }: LayoutBodyProps) => import('react').JSX.Element;
22
+ /** The body of the nearest shell's slot `slotId`; nothing, and no subscription, for an element that is not a slot. */
23
+ export declare const useLayoutBody: (slotId: string | undefined) => ReactNode;
21
24
  export default LayoutBody;
@@ -1,24 +1,23 @@
1
- import { createContext as e, use as t, useCallback as n, useLayoutEffect as r, useState as i, useSyncExternalStore as a } from "react";
1
+ import { use as e, useCallback as t, useLayoutEffect as n, useState as r, useSyncExternalStore as i } from "react";
2
+ import { sharedContext as a } from "@plitzi/sdk-shared/helpers/sharedContext";
2
3
  import { jsx as o } from "react/jsx-runtime";
3
4
  //#region src/Element/LayoutBody.tsx
4
- var s = e(void 0);
5
- s.displayName = "LayoutBodyContext";
6
- var c = () => void 0, l = ({ body: e, children: t }) => {
7
- let [n] = i(() => ({
5
+ var s = a("LayoutBodyContext", void 0), c = () => void 0, l = ({ bodies: e, children: t }) => {
6
+ let [i] = r(() => ({
8
7
  current: e,
9
8
  listeners: /* @__PURE__ */ new Set()
10
9
  }));
11
- return r(() => {
12
- n.current !== e && (n.current = e, n.listeners.forEach((e) => e()));
13
- }, [e, n]), /* @__PURE__ */ o(s, {
14
- value: n,
10
+ return n(() => {
11
+ i.current !== e && (i.current = e, i.listeners.forEach((e) => e()));
12
+ }, [e, i]), /* @__PURE__ */ o(s, {
13
+ value: i,
15
14
  children: t
16
15
  });
17
- }, u = (e) => {
18
- let r = t(s), i = n((t) => !e || !r ? c : (r.listeners.add(t), () => {
19
- r.listeners.delete(t);
20
- }), [e, r]), o = n(() => e && r ? r.current : void 0, [e, r]);
21
- return a(i, o, o);
16
+ }, u = (n) => {
17
+ let r = e(s), a = t((e) => n === void 0 || !r ? c : (r.listeners.add(e), () => {
18
+ r.listeners.delete(e);
19
+ }), [n, r]), o = t(() => n !== void 0 && r ? r.current[n] : void 0, [n, r]);
20
+ return i(a, o, o);
22
21
  };
23
22
  //#endregion
24
23
  export { l as default, u as useLayoutBody };
@@ -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 };
@@ -9,8 +9,9 @@ import { useCommonStore as s } from "@plitzi/sdk-shared/store";
9
9
  import { get as c } from "@plitzi/plitzi-ui/helpers";
10
10
  import l from "@plitzi/sdk-shared/dataSource/getBindingsDetails";
11
11
  import { hasValidToken as u, processTwig as d, templatePaths as f } from "@plitzi/sdk-shared/helpers/twigWrapper";
12
+ import { COMPONENT_PROPS_SOURCE as p } from "@plitzi/sdk-shared/schema/schemaConstants";
12
13
  //#region src/Element/hooks/useElementInternal.ts
13
- var p = (e, t, n) => {
14
+ var m = { settled: /* @__PURE__ */ new Set([p]) }, h = (e, t, n) => {
14
15
  let { queryParams: r = {}, routeParams: i = {}, variables: a = {}, origin: o = "", navigation: s, ...c } = n, l = {
15
16
  ...a,
16
17
  ...i,
@@ -23,17 +24,17 @@ var p = (e, t, n) => {
23
24
  origin: o
24
25
  }
25
26
  }, u = { ...e };
26
- for (let n of t) u[n] = d(e[n], l, !0);
27
+ for (let n of t) u[n] = d(e[n], l, m);
27
28
  return u;
28
- }, m = (e) => !!e && Object.values(e).some((e) => Array.isArray(e) && e.length > 0), h = (e, n, r = {}, i = {}) => {
29
- let o, { attributes: s, definition: d } = e, { rootId: f, plitziElementLayout: h } = n;
29
+ }, g = (e) => !!e && Object.values(e).some((e) => Array.isArray(e) && e.length > 0), _ = (e, n, r = {}, i = {}) => {
30
+ let o, { attributes: s, definition: d } = e, { rootId: f, plitziElementLayout: p } = n;
30
31
  n.attributes && (s = {
31
32
  ...s,
32
33
  ...n.attributes
33
34
  });
34
- let g = s;
35
+ let m = s;
35
36
  if (Object.keys(r).length > 0) {
36
- if (m(d.bindings)) {
37
+ if (g(d.bindings)) {
37
38
  let t = l(r, {
38
39
  ...e,
39
40
  attributes: s
@@ -43,9 +44,9 @@ var p = (e, t, n) => {
43
44
  }
44
45
  let _ = Object.keys(s).filter((e) => {
45
46
  let t = s[e];
46
- return typeof t == "string" && t === g[e] && u(t);
47
+ return typeof t == "string" && t === m[e] && u(t);
47
48
  });
48
- return _.length > 0 && (s = p(s, _, r)), s = {
49
+ return _.length > 0 && (s = h(s, _, r)), s = {
49
50
  ...s,
50
51
  ...t(i, ["visibility", "styleSelectors"])
51
52
  }, d = {
@@ -57,7 +58,7 @@ var p = (e, t, n) => {
57
58
  }
58
59
  }, d.styleSelectors = a(d), {
59
60
  ...n,
60
- rootId: c(h, "rootId", f),
61
+ rootId: c(p, "rootId", f),
61
62
  attributes: {
62
63
  ...s,
63
64
  ...t(n, [
@@ -75,25 +76,25 @@ var p = (e, t, n) => {
75
76
  },
76
77
  style: o
77
78
  };
78
- }, g = (e) => Object.values(e ?? {}).filter((e) => typeof e == "string" && u(e)), _ = (e) => ["variables", ...new Set(e.flatMap((e) => f(e)))], v = ({ element: a, children: c, internalProps: l, previewMode: u = !1, parentVisible: d = !0 }) => {
79
+ }, v = (e) => Object.values(e ?? {}).filter((e) => typeof e == "string" && u(e)), y = (e) => ["variables", ...new Set(e.flatMap((e) => f(e)))], b = ({ element: a, children: c, internalProps: l, previewMode: u = !1, parentVisible: d = !0 }) => {
79
80
  let { id: f } = l, { state: p, setElementState: m } = r({
80
81
  id: f,
81
82
  bindings: a.definition.bindings,
82
83
  previewMode: u
83
- }), v = o(() => {
84
- let e = [...g(a.attributes), ...g(l.attributes)];
85
- return e.length > 0 ? _(e) : void 0;
86
- }, [a.attributes, l.attributes]), [[y, b, x]] = s([
84
+ }), h = o(() => {
85
+ let e = [...v(a.attributes), ...v(l.attributes)];
86
+ return e.length > 0 ? y(e) : void 0;
87
+ }, [a.attributes, l.attributes]), [[g, b, x]] = s([
87
88
  "navigation.routeParams",
88
89
  "navigation.queryParams",
89
90
  "navigation.origin"
90
- ], { enabled: v !== void 0 }), S = n({
91
+ ], { enabled: h !== void 0 }), S = n({
91
92
  bindings: a.definition.bindings,
92
- sources: v
93
+ sources: h
93
94
  }), C = o(() => ({
94
- ...h(a, l, {
95
+ ..._(a, l, {
95
96
  ...S,
96
- routeParams: y,
97
+ routeParams: g,
97
98
  queryParams: b,
98
99
  origin: x
99
100
  }, p),
@@ -102,7 +103,7 @@ var p = (e, t, n) => {
102
103
  a,
103
104
  l,
104
105
  S,
105
- y,
106
+ g,
106
107
  b,
107
108
  x,
108
109
  p,
@@ -131,4 +132,4 @@ var p = (e, t, n) => {
131
132
  };
132
133
  };
133
134
  //#endregion
134
- export { v as default, h as getProps };
135
+ export { b as default, _ as getProps };
@@ -12,7 +12,7 @@ var i = ({ id: i, className: a, previewMode: o, baseElementId: s, plitziElementL
12
12
  with__container: !o && !!d,
13
13
  "container--empty": !o && !!d && d.length === 0 && !c,
14
14
  "container--base-element": !o && !!d && s === i,
15
- "plitzi-component--layout-body": c && i === c.containerId
15
+ "plitzi-component--layout-body": c?.slots.includes(i)
16
16
  }, l.styleSelectors.base), [
17
17
  a,
18
18
  f,
@@ -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.containerId}` : "", B = l(v, y, b), V = C?.containerId === x, H = n(V);
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;