@plitzi/sdk-elements 0.33.1 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/Component/ComponentProvider.mjs +20 -20
  3. package/dist/Component/index.mjs +3 -3
  4. package/dist/Element/ElementContext.d.ts +16 -4
  5. package/dist/Element/JsxManager.mjs +6 -7
  6. package/dist/Element/PluginRemote.d.ts +1 -2
  7. package/dist/Element/PluginRemote.mjs +14 -12
  8. package/dist/Element/RootElement.d.ts +1 -1
  9. package/dist/Element/RootElement.mjs +8 -6
  10. package/dist/Element/ServerStaticShell.d.ts +10 -10
  11. package/dist/Element/ServerStaticShell.mjs +8 -8
  12. package/dist/Element/helpers/elementConstants.mjs +35 -0
  13. package/dist/Element/helpers/elementUtils.d.ts +8 -1
  14. package/dist/Element/helpers/elementUtils.mjs +7 -34
  15. package/dist/Element/helpers/getInteractions.d.ts +1 -1
  16. package/dist/Element/helpers/getInteractions.mjs +61 -64
  17. package/dist/Element/helpers/loadComponent.d.ts +1 -1
  18. package/dist/Element/helpers/loadComponent.mjs +19 -19
  19. package/dist/Element/helpers/pluginSelector.d.ts +0 -1
  20. package/dist/Element/helpers/pluginSelector.mjs +2 -6
  21. package/dist/Element/helpers/renderStaticTag.d.ts +6 -2
  22. package/dist/Element/helpers/renderStaticTag.mjs +5 -4
  23. package/dist/Element/hocs/withElement.mjs +80 -77
  24. package/dist/Element/hooks/useElementInteractions.mjs +29 -18
  25. package/dist/Element/hooks/useElementInternal.d.ts +3 -1
  26. package/dist/Element/hooks/useElementInternal.mjs +82 -58
  27. package/dist/Element/hooks/useElementState.mjs +3 -2
  28. package/dist/Element/hooks/useInternalItems.d.ts +3 -1
  29. package/dist/Element/hooks/useInternalItems.mjs +47 -44
  30. package/dist/Element/hooks/useRootElementInteractions.mjs +30 -30
  31. package/dist/Element/hooks/useRscData.d.ts +10 -0
  32. package/dist/Element/hooks/useRscData.mjs +9 -5
  33. package/dist/components/ElementAdvancedEditor.mjs +19 -19
  34. package/dist/dataSource/GlobalSources.mjs +60 -51
  35. package/dist/elements/advanced/BlockHtml/BlockHtml.mjs +9 -9
  36. package/dist/elements/advanced/BlockHtml/declaration.d.ts +55 -0
  37. package/dist/elements/advanced/BlockHtml/declaration.mjs +42 -0
  38. package/dist/elements/advanced/BlockHtml/index.d.ts +39 -36
  39. package/dist/elements/advanced/BlockHtml/index.mjs +3 -38
  40. package/dist/elements/advanced/BlockJsx/BlockJsx.mjs +9 -9
  41. package/dist/elements/advanced/BlockJsx/Settings.mjs +8 -8
  42. package/dist/elements/advanced/BlockJsx/declaration.d.ts +59 -0
  43. package/dist/elements/advanced/BlockJsx/declaration.mjs +47 -0
  44. package/dist/elements/advanced/BlockJsx/index.d.ts +40 -39
  45. package/dist/elements/advanced/BlockJsx/index.mjs +3 -43
  46. package/dist/elements/advanced/Custom/Custom.d.ts +1 -2
  47. package/dist/elements/advanced/Custom/Custom.mjs +32 -33
  48. package/dist/elements/advanced/Custom/Settings.d.ts +1 -2
  49. package/dist/elements/advanced/Custom/Settings.mjs +44 -53
  50. package/dist/elements/advanced/Custom/declaration.d.ts +63 -0
  51. package/dist/elements/advanced/Custom/declaration.mjs +48 -0
  52. package/dist/elements/advanced/Custom/index.d.ts +47 -45
  53. package/dist/elements/advanced/Custom/index.mjs +3 -49
  54. package/dist/elements/advanced/NodeHtml/NodeHtml.mjs +6 -6
  55. package/dist/elements/advanced/NodeHtml/declaration.d.ts +353 -0
  56. package/dist/elements/advanced/NodeHtml/declaration.mjs +48 -0
  57. package/dist/elements/advanced/NodeHtml/index.d.ts +325 -49
  58. package/dist/elements/advanced/NodeHtml/index.mjs +4 -49
  59. package/dist/elements/advanced/Reference/Reference.mjs +13 -13
  60. package/dist/elements/advanced/Reference/declaration.d.ts +60 -0
  61. package/dist/elements/advanced/Reference/declaration.mjs +47 -0
  62. package/dist/elements/advanced/Reference/index.d.ts +44 -43
  63. package/dist/elements/advanced/Reference/index.mjs +4 -48
  64. package/dist/elements/basic/Button/Button.mjs +8 -8
  65. package/dist/elements/basic/Button/declaration.d.ts +127 -0
  66. package/dist/elements/basic/Button/declaration.mjs +101 -0
  67. package/dist/elements/basic/Button/index.d.ts +98 -98
  68. package/dist/elements/basic/Button/index.mjs +3 -103
  69. package/dist/elements/basic/Dropdown/Dropdown.mjs +13 -13
  70. package/dist/elements/basic/Dropdown/DropdownPopup/DropdownPopup.mjs +7 -7
  71. package/dist/elements/basic/Dropdown/DropdownPopup/Settings.mjs +5 -0
  72. package/dist/elements/basic/Dropdown/DropdownPopup/declaration.d.ts +67 -0
  73. package/dist/elements/basic/Dropdown/DropdownPopup/declaration.mjs +60 -0
  74. package/dist/elements/basic/Dropdown/DropdownPopup/index.d.ts +52 -54
  75. package/dist/elements/basic/Dropdown/DropdownPopup/index.mjs +4 -60
  76. package/dist/elements/basic/Dropdown/declaration.d.ts +86 -0
  77. package/dist/elements/basic/Dropdown/declaration.mjs +70 -0
  78. package/dist/elements/basic/Dropdown/index.d.ts +131 -124
  79. package/dist/elements/basic/Dropdown/index.mjs +7 -70
  80. package/dist/elements/basic/Dropdown/useDropdown.mjs +1 -1
  81. package/dist/elements/basic/Heading/Heading.mjs +8 -8
  82. package/dist/elements/basic/Heading/declaration.d.ts +149 -0
  83. package/dist/elements/basic/Heading/declaration.mjs +113 -0
  84. package/dist/elements/basic/Heading/index.d.ts +108 -104
  85. package/dist/elements/basic/Heading/index.mjs +4 -110
  86. package/dist/elements/basic/Link/Link.d.ts +8 -1
  87. package/dist/elements/basic/Link/Link.mjs +33 -31
  88. package/dist/elements/basic/Link/declaration.d.ts +66 -0
  89. package/dist/elements/basic/Link/declaration.mjs +52 -0
  90. package/dist/elements/basic/Link/index.d.ts +49 -45
  91. package/dist/elements/basic/Link/index.mjs +4 -51
  92. package/dist/elements/basic/Markdown/Markdown.mjs +6 -6
  93. package/dist/elements/basic/Markdown/declaration.d.ts +58 -0
  94. package/dist/elements/basic/Markdown/declaration.mjs +45 -0
  95. package/dist/elements/basic/Markdown/index.d.ts +41 -38
  96. package/dist/elements/basic/Markdown/index.mjs +4 -42
  97. package/dist/elements/basic/Paragraph/Paragraph.mjs +8 -8
  98. package/dist/elements/basic/Paragraph/declaration.d.ts +58 -0
  99. package/dist/elements/basic/Paragraph/declaration.mjs +45 -0
  100. package/dist/elements/basic/Paragraph/index.d.ts +41 -38
  101. package/dist/elements/basic/Paragraph/index.mjs +4 -42
  102. package/dist/elements/basic/RichText/RichText.mjs +8 -8
  103. package/dist/elements/basic/RichText/declaration.d.ts +61 -0
  104. package/dist/elements/basic/RichText/declaration.mjs +48 -0
  105. package/dist/elements/basic/RichText/index.d.ts +45 -44
  106. package/dist/elements/basic/RichText/index.mjs +4 -49
  107. package/dist/elements/basic/Text/Text.mjs +8 -8
  108. package/dist/elements/basic/Text/declaration.d.ts +59 -0
  109. package/dist/elements/basic/Text/declaration.mjs +46 -0
  110. package/dist/elements/basic/Text/index.d.ts +42 -39
  111. package/dist/elements/basic/Text/index.mjs +4 -43
  112. package/dist/elements/basic/ThemeToggle/ThemeToggle.d.ts +31 -0
  113. package/dist/elements/basic/ThemeToggle/ThemeToggle.mjs +114 -0
  114. package/dist/elements/basic/ThemeToggle/declaration.d.ts +71 -0
  115. package/dist/elements/basic/ThemeToggle/declaration.mjs +58 -0
  116. package/dist/elements/basic/ThemeToggle/index.d.ts +70 -0
  117. package/dist/elements/basic/ThemeToggle/index.mjs +6 -0
  118. package/dist/elements/declarations/index.d.ts +3098 -0
  119. package/dist/elements/declarations/index.mjs +75 -0
  120. package/dist/elements/form/Form/Form.d.ts +4 -0
  121. package/dist/elements/form/Form/Form.mjs +131 -100
  122. package/dist/elements/form/Form/declaration.d.ts +64 -0
  123. package/dist/elements/form/Form/declaration.mjs +49 -0
  124. package/dist/elements/form/Form/index.d.ts +44 -39
  125. package/dist/elements/form/Form/index.mjs +11 -48
  126. package/dist/elements/form/FormControl/FormControl.d.ts +21 -3
  127. package/dist/elements/form/FormControl/FormControl.mjs +142 -116
  128. package/dist/elements/form/FormControl/Settings.d.ts +7 -1
  129. package/dist/elements/form/FormControl/Settings.mjs +78 -33
  130. package/dist/elements/form/FormControl/declaration.d.ts +497 -0
  131. package/dist/elements/form/FormControl/declaration.mjs +197 -0
  132. package/dist/elements/form/FormControl/helpers/validateField.d.ts +27 -0
  133. package/dist/elements/form/FormControl/helpers/validateField.mjs +16 -0
  134. package/dist/elements/form/FormControl/hocs/withFieldValue.d.ts +6 -0
  135. package/dist/elements/form/FormControl/hocs/withFieldValue.mjs +73 -50
  136. package/dist/elements/form/FormControl/index.d.ts +186 -180
  137. package/dist/elements/form/FormControl/index.mjs +10 -186
  138. package/dist/elements/form/FormControl/inputs/Input.d.ts +3 -1
  139. package/dist/elements/form/FormControl/inputs/Input.mjs +16 -15
  140. package/dist/elements/form/FormControl/inputs/Select.mjs +16 -9
  141. package/dist/elements/form/FormControl/inputs/Textarea.d.ts +3 -1
  142. package/dist/elements/form/FormControl/inputs/Textarea.mjs +10 -9
  143. package/dist/elements/index.d.ts +3 -1
  144. package/dist/elements/index.mjs +36 -34
  145. package/dist/elements/internal/LayoutContainer/LayoutContainer.mjs +18 -18
  146. package/dist/elements/internal/LayoutContainer/declaration.d.ts +57 -0
  147. package/dist/elements/internal/LayoutContainer/declaration.mjs +44 -0
  148. package/dist/elements/internal/LayoutContainer/index.d.ts +41 -39
  149. package/dist/elements/internal/LayoutContainer/index.mjs +4 -42
  150. package/dist/elements/internal/Loading/Loading.mjs +8 -8
  151. package/dist/elements/internal/Loading/declaration.d.ts +51 -0
  152. package/dist/elements/internal/Loading/declaration.mjs +42 -0
  153. package/dist/elements/internal/Loading/index.d.ts +36 -36
  154. package/dist/elements/internal/Loading/index.mjs +4 -40
  155. package/dist/elements/internal/NotFound/NotFound.mjs +8 -8
  156. package/dist/elements/internal/NotFound/declaration.d.ts +51 -0
  157. package/dist/elements/internal/NotFound/declaration.mjs +42 -0
  158. package/dist/elements/internal/NotFound/index.d.ts +36 -36
  159. package/dist/elements/internal/NotFound/index.mjs +3 -39
  160. package/dist/elements/internal/Page/Page.mjs +26 -22
  161. package/dist/elements/internal/Page/declaration.d.ts +80 -0
  162. package/dist/elements/internal/Page/declaration.mjs +65 -0
  163. package/dist/elements/internal/Page/index.d.ts +63 -57
  164. package/dist/elements/internal/Page/index.mjs +4 -63
  165. package/dist/elements/media/FontAwesome/FontAwesome.mjs +10 -18
  166. package/dist/elements/media/FontAwesome/declaration.d.ts +62 -0
  167. package/dist/elements/media/FontAwesome/declaration.mjs +49 -0
  168. package/dist/elements/media/FontAwesome/index.d.ts +45 -40
  169. package/dist/elements/media/FontAwesome/index.mjs +4 -46
  170. package/dist/elements/media/Image/Image.d.ts +1 -1
  171. package/dist/elements/media/Image/Image.mjs +21 -21
  172. package/dist/elements/media/Image/declaration.d.ts +65 -0
  173. package/dist/elements/media/Image/declaration.mjs +51 -0
  174. package/dist/elements/media/Image/index.d.ts +48 -43
  175. package/dist/elements/media/Image/index.mjs +4 -49
  176. package/dist/elements/media/Video/Video.mjs +8 -8
  177. package/dist/elements/media/Video/declaration.d.ts +67 -0
  178. package/dist/elements/media/Video/declaration.mjs +52 -0
  179. package/dist/elements/media/Video/index.d.ts +50 -44
  180. package/dist/elements/media/Video/index.mjs +4 -50
  181. package/dist/elements/provider/ApiContainer/ApiContainer.d.ts +10 -1
  182. package/dist/elements/provider/ApiContainer/ApiContainer.mjs +95 -114
  183. package/dist/elements/provider/ApiContainer/Settings.d.ts +3 -2
  184. package/dist/elements/provider/ApiContainer/Settings.mjs +156 -119
  185. package/dist/elements/provider/ApiContainer/declaration.d.ts +77 -0
  186. package/dist/elements/provider/ApiContainer/declaration.mjs +60 -0
  187. package/dist/elements/provider/ApiContainer/hooks/useApi.d.ts +10 -0
  188. package/dist/elements/provider/ApiContainer/hooks/useApi.mjs +35 -30
  189. package/dist/elements/provider/ApiContainer/hooks/useProviderWrite.mjs +22 -15
  190. package/dist/elements/provider/ApiContainer/index.d.ts +53 -55
  191. package/dist/elements/provider/ApiContainer/index.mjs +4 -60
  192. package/dist/elements/structure/Container/Container.mjs +5 -5
  193. package/dist/elements/structure/Container/declaration.d.ts +57 -0
  194. package/dist/elements/structure/Container/declaration.mjs +44 -0
  195. package/dist/elements/structure/Container/index.d.ts +41 -42
  196. package/dist/elements/structure/Container/index.mjs +3 -44
  197. package/dist/elements/structure/DialogContainer/DialogContainer.mjs +65 -66
  198. package/dist/elements/structure/DialogContainer/declaration.d.ts +155 -0
  199. package/dist/elements/structure/DialogContainer/declaration.mjs +130 -0
  200. package/dist/elements/structure/DialogContainer/index.d.ts +124 -116
  201. package/dist/elements/structure/DialogContainer/index.mjs +4 -126
  202. package/dist/elements/structure/List/List.mjs +9 -9
  203. package/dist/elements/structure/List/ListItem/ListItem.mjs +5 -5
  204. package/dist/elements/structure/List/ListItem/declaration.d.ts +52 -0
  205. package/dist/elements/structure/List/ListItem/declaration.mjs +43 -0
  206. package/dist/elements/structure/List/ListItem/index.d.ts +37 -40
  207. package/dist/elements/structure/List/ListItem/index.mjs +4 -44
  208. package/dist/elements/structure/List/declaration.d.ts +90 -0
  209. package/dist/elements/structure/List/declaration.mjs +73 -0
  210. package/dist/elements/structure/List/index.d.ts +116 -117
  211. package/dist/elements/structure/List/index.mjs +7 -75
  212. package/dist/elements/structure/List/modes/ListControlled/ListControlled.mjs +30 -29
  213. package/dist/elements/structure/List/modes/ListControlled/ListControlledItem.d.ts +3 -2
  214. package/dist/elements/structure/List/modes/ListControlled/ListControlledItem.mjs +2 -2
  215. package/dist/elements/structure/ModalContainer/ModalContainer.mjs +47 -46
  216. package/dist/elements/structure/ModalContainer/declaration.d.ts +151 -0
  217. package/dist/elements/structure/ModalContainer/declaration.mjs +128 -0
  218. package/dist/elements/structure/ModalContainer/index.d.ts +117 -112
  219. package/dist/elements/structure/ModalContainer/index.mjs +4 -124
  220. package/dist/elements/structure/Pagination/Pagination.mjs +9 -9
  221. package/dist/elements/structure/Pagination/declaration.d.ts +76 -0
  222. package/dist/elements/structure/Pagination/declaration.mjs +58 -0
  223. package/dist/elements/structure/Pagination/index.d.ts +59 -51
  224. package/dist/elements/structure/Pagination/index.mjs +4 -57
  225. package/dist/elements/structure/TabContainer/TabContainer.mjs +8 -8
  226. package/dist/elements/structure/TabContainer/TabContainerBody/TabContainerBody.mjs +8 -8
  227. package/dist/elements/structure/TabContainer/TabContainerBody/declaration.d.ts +54 -0
  228. package/dist/elements/structure/TabContainer/TabContainerBody/declaration.mjs +49 -0
  229. package/dist/elements/structure/TabContainer/TabContainerBody/index.d.ts +39 -42
  230. package/dist/elements/structure/TabContainer/TabContainerBody/index.mjs +4 -50
  231. package/dist/elements/structure/TabContainer/TabContainerHeader/TabContainerHeader.mjs +8 -8
  232. package/dist/elements/structure/TabContainer/TabContainerHeader/declaration.d.ts +54 -0
  233. package/dist/elements/structure/TabContainer/TabContainerHeader/declaration.mjs +49 -0
  234. package/dist/elements/structure/TabContainer/TabContainerHeader/index.d.ts +39 -42
  235. package/dist/elements/structure/TabContainer/TabContainerHeader/index.mjs +4 -50
  236. package/dist/elements/structure/TabContainer/TabContainerItem/TabContainerItem.mjs +7 -7
  237. package/dist/elements/structure/TabContainer/TabContainerItem/declaration.d.ts +53 -0
  238. package/dist/elements/structure/TabContainer/TabContainerItem/declaration.mjs +48 -0
  239. package/dist/elements/structure/TabContainer/TabContainerItem/index.d.ts +38 -41
  240. package/dist/elements/structure/TabContainer/TabContainerItem/index.mjs +4 -49
  241. package/dist/elements/structure/TabContainer/declaration.d.ts +54 -0
  242. package/dist/elements/structure/TabContainer/declaration.mjs +45 -0
  243. package/dist/elements/structure/TabContainer/index.d.ts +163 -174
  244. package/dist/elements/structure/TabContainer/index.mjs +11 -51
  245. package/dist/index.d.ts +2618 -2200
  246. package/dist/index.mjs +38 -36
  247. package/package.json +182 -14
package/CHANGELOG.md CHANGED
@@ -1,5 +1,61 @@
1
1
  # @plitzi/sdk-elements
2
2
 
3
+ ## 0.34.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 5aceda0: `authorSpace` returns test handles, and every element carries its id in the DOM.
8
+
9
+ An end-to-end suite had nothing stable to address a rendered element by: a class is a styling decision that
10
+ changes with the design, a text match breaks when the copy is edited, and an `nth-child` chain is invalidated by
11
+ inserting a section above. What does not move is the element's id — which is also its name, chosen by whoever
12
+ authored it and unique across the document.
13
+
14
+ ```ts
15
+ const { schema, style, handles } = authorSpace(spec);
16
+ const el = locate(page, handles);
17
+
18
+ await expect(el('hero-title')).toBeVisible();
19
+ await page.goto(handles.page('pricing').path);
20
+ ```
21
+
22
+ Elements now render `data-plitzi-el="<id>"`. It ships by default — the ids are already in the page, since the
23
+ schema the browser hydrates from carries every one of them — and a deployment turns it off with
24
+ `render.testAttributes: false`.
25
+
26
+ Each handle reports whether the AUTHOR wrote the id or authoring derived a positional `<type>-<n>`, which is
27
+ what makes one generic assertion possible for any space: everything a space names must be on screen. A name that
28
+ does not exist throws at author time with a suggestion, rather than resolving to an empty locator at test time.
29
+
30
+ - v0.34.0
31
+
32
+ ### Patch Changes
33
+
34
+ - Updated dependencies [5aceda0]
35
+ - Updated dependencies
36
+ - Updated dependencies [5aceda0]
37
+ - @plitzi/sdk-shared@0.34.0
38
+ - @plitzi/sdk-auth@0.34.0
39
+ - @plitzi/sdk-dev-tools@0.34.0
40
+ - @plitzi/sdk-event-bridge@0.34.0
41
+ - @plitzi/sdk-interactions@0.34.0
42
+ - @plitzi/sdk-navigation@0.34.0
43
+ - @plitzi/sdk-schema@0.34.0
44
+
45
+ ## 0.33.2
46
+
47
+ ### Patch Changes
48
+
49
+ - v0.33.2
50
+ - Updated dependencies
51
+ - @plitzi/sdk-auth@0.33.2
52
+ - @plitzi/sdk-dev-tools@0.33.2
53
+ - @plitzi/sdk-event-bridge@0.33.2
54
+ - @plitzi/sdk-interactions@0.33.2
55
+ - @plitzi/sdk-navigation@0.33.2
56
+ - @plitzi/sdk-schema@0.33.2
57
+ - @plitzi/sdk-shared@0.33.2
58
+
3
59
  ## 0.33.1
4
60
 
5
61
  ### Patch Changes
@@ -1,5 +1,5 @@
1
- import { defaultElements as e } from "../index.mjs";
2
- import { getPlugins as t, processLocalCustomPlugins as n, processLocalPlugins as r } from "./ComponentHelper.mjs";
1
+ import { getPlugins as e, processLocalCustomPlugins as t, processLocalPlugins as n } from "./ComponentHelper.mjs";
2
+ import { defaultElements as r } from "../index.mjs";
3
3
  import { useCallback as i, useMemo as a, useRef as o } from "react";
4
4
  import { get as s, omit as c } from "@plitzi/plitzi-ui/helpers";
5
5
  import l from "@plitzi/sdk-shared/elements/ComponentContext";
@@ -7,36 +7,36 @@ import { jsx as u } from "react/jsx-runtime";
7
7
  //#region src/Component/ComponentProvider.tsx
8
8
  var d = ({ localComponents: d, localCustomComponents: f, children: p }) => {
9
9
  let m = a(() => ({
10
- ...r(e),
11
- ...r(d),
12
- ...n(f)
10
+ ...n(r),
11
+ ...n(d),
12
+ ...t(f)
13
13
  }), [d, f]), h = o({}), g = o({
14
14
  ...h.current,
15
15
  ...m
16
- }), _ = i((e = [], n = !1) => {
17
- if (typeof e == "string" && !n) return g.current[e];
18
- if (typeof e == "string" && n) {
19
- let n = g.current[e];
16
+ }), _ = i((t = [], n = !1) => {
17
+ if (typeof t == "string" && !n) return g.current[t];
18
+ if (typeof t == "string" && n) {
19
+ let n = g.current[t];
20
20
  return n ? {
21
- [e]: n,
22
- ...c(t(n), [e])
21
+ [t]: n,
22
+ ...c(e(n), [t])
23
23
  } : {};
24
24
  }
25
25
  let r = {};
26
- return e.forEach((e) => {
27
- let i = g.current[e];
26
+ return t.forEach((t) => {
27
+ let i = g.current[t];
28
28
  i && (n ? r = {
29
29
  ...r,
30
- ...c(t(i), [e])
31
- } : r[e] = i);
30
+ ...c(e(i), [t])
31
+ } : r[t] = i);
32
32
  }), r;
33
- }, []), v = i((e = []) => {
33
+ }, []), v = i((t = []) => {
34
34
  let n = {};
35
- return Array.isArray(e) || (e = [e]), e.forEach((e) => {
36
- e.type && !g.current[e.type] && (n = {
35
+ return Array.isArray(t) || (t = [t]), t.forEach((t) => {
36
+ t.type && !g.current[t.type] && (n = {
37
37
  ...n,
38
- [e.type]: e,
39
- ...t(e)
38
+ [t.type]: t,
39
+ ...e(t)
40
40
  });
41
41
  }), Object.keys(n).length === 0 ? n : (g.current = {
42
42
  ...h.current,
@@ -1,3 +1,3 @@
1
- import e from "./ComponentProvider.mjs";
2
- import { ComponentHelper_exports as t, getPlugins as n, nestedInject as r, processLocalCustomPlugins as i, processLocalPlugins as a } from "./ComponentHelper.mjs";
3
- export { t as ComponentHelper, e as ComponentProvider, n as getPlugins, r as nestedInject, i as processLocalCustomPlugins, a as processLocalPlugins };
1
+ import { ComponentHelper_exports as e, getPlugins as t, nestedInject as n, processLocalCustomPlugins as r, processLocalPlugins as i } from "./ComponentHelper.mjs";
2
+ import a from "./ComponentProvider.mjs";
3
+ export { e as ComponentHelper, a as ComponentProvider, t as getPlugins, n as nestedInject, r as processLocalCustomPlugins, i as processLocalPlugins };
@@ -1,16 +1,28 @@
1
1
  import { Element, ElementLayout } from '@plitzi/sdk-shared';
2
2
  import { CSSProperties } from 'react';
3
3
  export type ElementContextValue<T extends 'skipHOC' | 'full' = 'full'> = {
4
+ /** The one name this element answers to: its key in the schema, the `<type>_<id>` it publishes its data source
5
+ * under, and the target an interaction wires to. */
4
6
  id: string;
5
- idRef?: string;
6
7
  rootId?: string;
7
8
  /**
8
9
  * Whether this element is on screen: its own `visibility` state AND every ancestor's, chained through this context.
9
- * A hidden element still renders its subtree (it is hidden in CSS, not unmounted), so anything that DOES something
10
- * rather than just paint — fetching, polling, submitting — reads this instead of its own state to stay inert while
11
- * the branch it lives in is hidden.
10
+ * A hidden element is hidden in CSS by default, subtree and all, so anything that DOES something rather than just
11
+ * paint — fetching, polling, submitting — reads this instead of its own state to stay inert while the branch it
12
+ * lives in is hidden. An element whose `loadStrategy` unmounts its items is the exception, and it does not change
13
+ * what this means: the ones still mounted must still go quiet.
12
14
  */
13
15
  visible: boolean;
16
+ /**
17
+ * This INSTANCE, for tracing — and only for tracing.
18
+ *
19
+ * `id` names the element; a controlled list renders that same element once per row, and the render tree the
20
+ * dev-tools draw has to tell those rows apart or it collapses them into one. React's own identity is per mounted
21
+ * component, so this comes from `useId` and is what `withElement` labels its `Profiler` with and links parents by.
22
+ *
23
+ * Nothing that is not the tracing panel should read it: it is an opaque handle with no meaning in the schema.
24
+ */
25
+ traceId: string;
14
26
  } & (T extends 'skipHOC' ? {
15
27
  plitziJsxSkipHOC: true;
16
28
  } : {
@@ -1,12 +1,12 @@
1
- import e from "../elements/internal/NotFound/NotFound.mjs";
2
- import t from "./PluginRemote.mjs";
3
- import { getRemoteSettings as n } from "./helpers/pluginSelector.mjs";
1
+ import e from "./PluginRemote.mjs";
2
+ import { getRemoteSettings as t } from "./helpers/pluginSelector.mjs";
3
+ import n from "../elements/internal/NotFound/NotFound.mjs";
4
4
  import { memo as r, use as i, useMemo as a } from "react";
5
5
  import o from "@plitzi/sdk-shared/hooks/usePlitziServiceContext";
6
6
  import s from "@plitzi/sdk-shared/elements/ComponentContext";
7
7
  import { jsx as c } from "react/jsx-runtime";
8
8
  var l = r(({ plitziJsxSkipHOC: r = !0, as: l = "", internalProps: u, children: d, ...f }) => {
9
- let { contexts: { PluginsContext: p } } = o(), { components: m } = i(s), { plugins: h } = i(p), g = l ? m.current[l] : void 0, _ = a(() => g ? void 0 : n({
9
+ let { contexts: { PluginsContext: p } } = o(), { components: m } = i(s), { plugins: h } = i(p), g = l ? m.current[l] : void 0, _ = a(() => g ? void 0 : t({
10
10
  type: l,
11
11
  plugins: h
12
12
  }), [
@@ -14,13 +14,12 @@ var l = r(({ plitziJsxSkipHOC: r = !0, as: l = "", internalProps: u, children: d
14
14
  h,
15
15
  l
16
16
  ]);
17
- return l ? !g && _ ? /* @__PURE__ */ c(t, {
17
+ return l ? !g && _ ? /* @__PURE__ */ c(e, {
18
18
  internalProps: u,
19
19
  url: _.url,
20
- scope: _.scope,
21
20
  plitziJsxSkipHOC: r,
22
21
  plitziJsxProps: f
23
- }) : (g ||= e, /* @__PURE__ */ c(g, {
22
+ }) : (g ||= n, /* @__PURE__ */ c(g, {
24
23
  plitziJsxSkipHOC: r,
25
24
  ...f,
26
25
  internalProps: u,
@@ -1,11 +1,10 @@
1
1
  import { InternalPropsSTG1 } from '@plitzi/sdk-shared';
2
2
  export type PluginRemoteProps = {
3
3
  url: string;
4
- scope: string;
5
4
  internalProps: InternalPropsSTG1;
6
5
  autoRegister?: boolean;
7
6
  plitziJsxSkipHOC?: boolean;
8
7
  plitziJsxProps?: Record<string, unknown>;
9
8
  };
10
- declare const PluginRemote: ({ url, scope, internalProps, autoRegister, plitziJsxSkipHOC, plitziJsxProps }: PluginRemoteProps) => import("react").JSX.Element;
9
+ declare const PluginRemote: ({ url, internalProps, autoRegister, plitziJsxSkipHOC, plitziJsxProps }: PluginRemoteProps) => import("react").JSX.Element | null;
11
10
  export default PluginRemote;
@@ -1,16 +1,18 @@
1
1
  import e from "./helpers/loadComponent.mjs";
2
- import { Suspense as t, lazy as n, use as r, useMemo as i } from "react";
3
- import a from "@plitzi/sdk-shared/elements/ComponentContext";
4
- import { emptyObject as o } from "@plitzi/sdk-shared/helpers/utils";
5
- import { jsx as s } from "react/jsx-runtime";
2
+ import { Suspense as t, lazy as n, use as r, useEffect as i, useMemo as a, useState as o } from "react";
3
+ import s from "@plitzi/sdk-shared/elements/ComponentContext";
4
+ import { emptyObject as c } from "@plitzi/sdk-shared/helpers/utils";
5
+ import { jsx as l } from "react/jsx-runtime";
6
6
  //#region src/Element/PluginRemote.tsx
7
- var c = ({ url: c = "", scope: l = "", internalProps: u, autoRegister: d = !0, plitziJsxSkipHOC: f = !1, plitziJsxProps: p = o }) => {
8
- let { register: m } = r(a), h = i(() => n(e(c, l, m, d, f)), [c, l]);
9
- return f ? /* @__PURE__ */ s(t, { children: /* @__PURE__ */ s(h, {
10
- internalProps: u,
11
- plitziJsxSkipHOC: f,
12
- ...p
13
- }) }) : /* @__PURE__ */ s(t, { children: /* @__PURE__ */ s(h, { internalProps: u }) });
7
+ var u = ({ url: u = "", internalProps: d, autoRegister: f = !0, plitziJsxSkipHOC: p = !1, plitziJsxProps: m = c }) => {
8
+ let { register: h } = r(s), [g, _] = o(!1);
9
+ i(() => _(!0), []);
10
+ let v = a(() => n(e(u, h, f, p)), [u]);
11
+ return g ? p ? /* @__PURE__ */ l(t, { children: /* @__PURE__ */ l(v, {
12
+ internalProps: d,
13
+ plitziJsxSkipHOC: p,
14
+ ...m
15
+ }) }) : /* @__PURE__ */ l(t, { children: /* @__PURE__ */ l(v, { internalProps: d }) }) : null;
14
16
  };
15
17
  //#endregion
16
- export { c as default };
18
+ export { u as default };
@@ -3,7 +3,7 @@ import { CSSProperties, JSX, ReactNode, RefObject } from 'react';
3
3
  export type RootElementProps<T extends keyof JSX.IntrinsicElements> = {
4
4
  ref?: RefObject<HTMLElement | null>;
5
5
  children?: ReactNode;
6
- tag?: T;
6
+ tag?: T | '';
7
7
  className?: string;
8
8
  interactionTriggers?: Record<string, InteractionCallback>;
9
9
  interactionCallbacks?: Record<string, InteractionCallback>;
@@ -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 = !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 } } = 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) ? {} : {
19
19
  "data-id": S,
20
20
  "data-name": E || T || "unknown",
21
21
  "data-root-id": C,
@@ -31,11 +31,12 @@ var o = ({ ref: o, children: s, tag: c = "div", className: l = "", interactionTr
31
31
  },
32
32
  className: l,
33
33
  otherProps: p,
34
- params: k,
34
+ params: A,
35
35
  serverMarker: O,
36
+ testMarker: k,
36
37
  children: s
37
38
  });
38
- let { className: A, events: j } = r({
39
+ let { className: j, events: M } = r({
39
40
  elementContext: h,
40
41
  InteractionsContext: x,
41
42
  previewMode: _,
@@ -53,11 +54,12 @@ var o = ({ ref: o, children: s, tag: c = "div", className: l = "", interactionTr
53
54
  ...w,
54
55
  ...m
55
56
  },
56
- className: A,
57
+ className: j,
57
58
  otherProps: p,
58
- params: k,
59
+ params: A,
59
60
  serverMarker: O,
60
- events: j,
61
+ testMarker: k,
62
+ events: M,
61
63
  children: s
62
64
  });
63
65
  };
@@ -1,4 +1,4 @@
1
- import { CSSProperties } from 'react';
1
+ import { ReactNode } from 'react';
2
2
  /**
3
3
  * Renders a runtime:'server' element as frozen server HTML.
4
4
  *
@@ -10,15 +10,15 @@ import { CSSProperties } from 'react';
10
10
  * The actual plugin component is never mounted in the browser, so no useEffect or
11
11
  * useState from the plugin ever runs. React hydrates the snapshot element without
12
12
  * touching its children (dangerouslySetInnerHTML takes ownership of innerHTML).
13
+ *
14
+ * When there is nothing to freeze, `children` — the element itself — is rendered instead. That is not the
15
+ * hydration case, where the server always sent the markup; it is the SPA one: a route change mounts a page whose
16
+ * server elements were never in this document, and freezing an element against markup that does not exist used to
17
+ * render nothing at all. The element then resolves the way it does anywhere else, from the payload `useRscSync`
18
+ * fetches for the new location.
13
19
  */
14
- declare const ServerStaticShell: ({ id }: {
20
+ declare const ServerStaticShell: ({ id, children }: {
15
21
  id: string;
16
- }) => import('react').DOMElement<{
17
- dangerouslySetInnerHTML: {
18
- __html: string;
19
- };
20
- 'data-rsc-id': string;
21
- className: string | undefined;
22
- style: CSSProperties | undefined;
23
- }, Element> | null;
22
+ children?: ReactNode;
23
+ }) => ReactNode;
24
24
  export default ServerStaticShell;
@@ -12,8 +12,8 @@ var n = (e) => {
12
12
  }
13
13
  }
14
14
  return t;
15
- }, r = ({ id: r }) => {
16
- let [i] = t(() => {
15
+ }, r = ({ id: r, children: i }) => {
16
+ let [a] = t(() => {
17
17
  if (typeof document > "u") return null;
18
18
  let e = document.querySelector(`[data-rsc-id="${r}"]`);
19
19
  if (!e) return null;
@@ -31,13 +31,13 @@ var n = (e) => {
31
31
  html: e.innerHTML
32
32
  };
33
33
  });
34
- return i ? e(i.tag, {
34
+ return a ? e(a.tag, {
35
35
  "data-rsc-id": r,
36
- className: i.className || void 0,
37
- style: i.style,
38
- ...i.attrs,
39
- dangerouslySetInnerHTML: { __html: i.html }
40
- }) : null;
36
+ className: a.className || void 0,
37
+ style: a.style,
38
+ ...a.attrs,
39
+ dangerouslySetInnerHTML: { __html: a.html }
40
+ }) : i;
41
41
  };
42
42
  //#endregion
43
43
  export { r as default };
@@ -78,6 +78,41 @@ var e = {
78
78
  type: "boolean",
79
79
  label: "Propagate Event"
80
80
  } }
81
+ },
82
+ onFlowEnd: {
83
+ action: "onFlowEnd",
84
+ title: "On Server Action End",
85
+ type: "trigger",
86
+ preview: {
87
+ actionId: "",
88
+ runId: "",
89
+ status: "",
90
+ output: {}
91
+ },
92
+ params: {}
93
+ },
94
+ onFlowError: {
95
+ action: "onFlowError",
96
+ title: "On Server Action Error",
97
+ type: "trigger",
98
+ preview: {
99
+ actionId: "",
100
+ runId: "",
101
+ error: "",
102
+ reason: ""
103
+ },
104
+ params: {}
105
+ },
106
+ onFlowProgress: {
107
+ action: "onFlowProgress",
108
+ title: "On Server Action Progress",
109
+ type: "trigger",
110
+ preview: {
111
+ actionId: "",
112
+ runId: "",
113
+ chunk: ""
114
+ },
115
+ params: {}
81
116
  }
82
117
  }, t = [
83
118
  "onClick",
@@ -5,4 +5,11 @@ export type PlitziModule = {
5
5
  initialItems?: string[];
6
6
  plugins?: Record<string, ComponentPlugin>;
7
7
  };
8
- export declare const generatePluginModule: (url: string, asESM?: boolean, pluginScope?: string) => Promise<PlitziModule | undefined>;
8
+ /**
9
+ * A remote plugin, fetched and imported as an ES module.
10
+ *
11
+ * Always as a module, whatever the URL is called: nothing about an address says which format it serves, and every
12
+ * plugin the template builds is ESM. There is no second path for the webpack bundles that registered themselves on a
13
+ * `window` global — nothing produces those any more.
14
+ */
15
+ export declare const generatePluginModule: (url: string) => Promise<PlitziModule | undefined>;
@@ -1,43 +1,16 @@
1
- import { RootElement as e } from "../RootElement.mjs";
2
- import t from "../../Component/ComponentProvider.mjs";
3
- import * as n from "react";
4
- import r from "@plitzi/sdk-shared/hooks/usePlitziServiceContext";
5
- import { get as i } from "@plitzi/plitzi-ui/helpers";
6
- import a from "@plitzi/sdk-shared/elements/ComponentContext";
7
- import * as o from "react/jsx-runtime";
8
- import * as s from "react-dom";
9
1
  //#region src/Element/helpers/elementUtils.ts
10
- var c = async (c, l = !0, u = "") => {
11
- let d;
2
+ var e = async (e) => {
12
3
  try {
13
- if (l) {
14
- let e = await fetch(c), t = new Blob([await e.text()], { type: "text/javascript" });
15
- d = await import(
16
- /* @vite-ignore */
17
- /* webpackIgnore: true */
18
- URL.createObjectURL(t)
4
+ let t = await fetch(e), n = new Blob([await t.text()], { type: "text/javascript" });
5
+ return await import(
6
+ /* @vite-ignore */
7
+ /* webpackIgnore: true */
8
+ URL.createObjectURL(n)
19
9
  );
20
- } else {
21
- let c = {
22
- default: void 0,
23
- ComponentProvider: t,
24
- ComponentContext: a,
25
- usePlitziServiceContext: r,
26
- RootElement: e
27
- }, l = {
28
- __WEBPACK_EXTERNAL_MODULE_react__: n,
29
- __WEBPACK_EXTERNAL_MODULE_react_dom__: s,
30
- __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime__: o,
31
- __WEBPACK_EXTERNAL_MODULE__plitzi_plitzi_sdk__: c
32
- }, f = i(window, `plitziPlugins.${u}`);
33
- if (!f || typeof f != "function") return;
34
- d = await f(c, void 0, l);
35
- }
36
10
  } catch (e) {
37
11
  console.log(e);
38
12
  return;
39
13
  }
40
- return d;
41
14
  };
42
15
  //#endregion
43
- export { c as generatePluginModule };
16
+ export { e as generatePluginModule };
@@ -1,3 +1,3 @@
1
1
  import { Element, InteractionCallback, InteractionPostCallback } from '@plitzi/sdk-shared';
2
- declare const getInteractions: (attributes: Element["attributes"], definition: Element["definition"], callback: InteractionCallback["callback"], postCallback: InteractionPostCallback) => Record<string, InteractionCallback>;
2
+ declare const getInteractions: (attributes: Element["attributes"], definition: Element["definition"], callback: InteractionCallback["callback"], postCallback: InteractionPostCallback, toggleCallback: InteractionCallback["callback"]) => Record<string, InteractionCallback>;
3
3
  export default getInteractions;
@@ -1,68 +1,65 @@
1
+ import { toBuilderParams as e, toInteractionCallback as t } from "@plitzi/sdk-shared/authoring/builder";
2
+ import { BUILTIN_ELEMENT_CALLBACKS as n } from "@plitzi/sdk-shared/authoring/elementCallbacks";
1
3
  //#region src/Element/helpers/getInteractions.ts
2
- var e = (e, t, n, r) => ({ setState: {
3
- action: "setState",
4
- title: `Update ${t.label}`,
5
- type: "callback",
6
- callback: n,
7
- postCallback: r,
8
- preview: {},
9
- params: {
10
- category: {
11
- label: "Category",
12
- defaultValue: "attribute",
13
- type: "select",
14
- options: [{
15
- value: "attribute",
16
- label: "Attribute"
17
- }, {
18
- value: "state",
19
- label: "State"
20
- }]
21
- },
22
- key: {
23
- label: "Key",
24
- defaultValue: void 0,
25
- type: "select",
26
- when: (e) => e.category === "attribute" || e.category === "state",
27
- options: (n) => {
28
- let { category: r } = n;
29
- return r === "attribute" ? Object.keys(e).map((e) => ({
30
- value: e,
31
- label: e
32
- })) : r === "state" ? [{
33
- value: "visibility",
34
- label: "Visibility"
35
- }, ...Object.keys(t.styleSelectors).map((e) => ({
36
- value: `styleSelectors.${e}`,
37
- label: `Selector - ${e}`
38
- }))] : [];
4
+ var r = (e, t) => (n) => {
5
+ let { category: r } = n;
6
+ return r === "attribute" ? Object.keys(e).map((e) => ({
7
+ value: e,
8
+ label: e
9
+ })) : r === "state" ? [{
10
+ value: "visibility",
11
+ label: "Visibility"
12
+ }, ...Object.keys(t.styleSelectors).map((e) => ({
13
+ value: `styleSelectors.${e}`,
14
+ label: `Selector - ${e}`
15
+ }))] : [];
16
+ }, i = (i, a, o, s, c) => {
17
+ let l = n.setState, u = e(l.params), d = n.toggleState, f = e(d.params), p = {
18
+ type: "select",
19
+ options: r(i, a),
20
+ when: (e) => e.category === "attribute" || e.category === "state"
21
+ };
22
+ return {
23
+ setState: t("setState", l, o, {
24
+ title: `Update ${a.label}`,
25
+ postCallback: s,
26
+ params: {
27
+ ...u,
28
+ key: {
29
+ ...u.key,
30
+ ...p
31
+ },
32
+ value: {
33
+ ...u.value,
34
+ type: (e) => typeof i[e.key] == "boolean" ? "select" : "text",
35
+ options: (e) => {
36
+ let { key: t } = e;
37
+ return typeof i[t] == "boolean" ? [{
38
+ value: "true",
39
+ label: "True"
40
+ }, {
41
+ value: "false",
42
+ label: "False"
43
+ }] : Object.keys(i).map((e) => ({
44
+ value: e,
45
+ label: e
46
+ }));
47
+ }
48
+ }
39
49
  }
40
- },
41
- value: {
42
- label: "Value",
43
- defaultValue: void 0,
44
- type: (t) => typeof e[t.key] == "boolean" ? "select" : "text",
45
- when: (e) => !!e.category,
46
- options: (t) => {
47
- let { key: n } = t;
48
- return typeof e[n] == "boolean" ? [{
49
- value: "true",
50
- label: "True"
51
- }, {
52
- value: "false",
53
- label: "False"
54
- }] : Object.keys(e).map((e) => ({
55
- value: e,
56
- label: e
57
- }));
50
+ }),
51
+ toggleState: t("toggleState", d, c, {
52
+ title: `Toggle ${a.label}`,
53
+ postCallback: s,
54
+ params: {
55
+ ...f,
56
+ key: {
57
+ ...f.key,
58
+ ...p
59
+ }
58
60
  }
59
- },
60
- revertOnFinish: {
61
- label: "Revert changes after interaction",
62
- defaultValue: !1,
63
- type: "boolean"
64
- }
65
- }
66
- } });
61
+ })
62
+ };
63
+ };
67
64
  //#endregion
68
- export { e as default };
65
+ export { i as default };
@@ -1,5 +1,5 @@
1
1
  import { ComponentContextValue, ComponentPluginWithHOC } from '@plitzi/sdk-shared';
2
- declare const loadComponent: (url: string, pluginScope: string, registerCallback: ComponentContextValue["register"], autoRegister?: boolean, plitziJsxSkipHOC?: boolean) => () => Promise<{
2
+ declare const loadComponent: (url: string, registerCallback: ComponentContextValue["register"], autoRegister?: boolean, plitziJsxSkipHOC?: boolean) => () => Promise<{
3
3
  default: ComponentPluginWithHOC;
4
4
  }>;
5
5
  export default loadComponent;