@plitzi/sdk-dev-tools 0.37.9 → 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 (189) hide show
  1. package/CHANGELOG.md +591 -0
  2. package/dist/DevToolsContainer.d.ts +7 -1
  3. package/dist/DevToolsContainer.mjs +66 -60
  4. package/dist/agentInspector/flowRuns.d.ts +22 -0
  5. package/dist/agentInspector/flowRuns.mjs +26 -0
  6. package/dist/agentInspector/inspector.d.ts +27 -0
  7. package/dist/agentInspector/inspector.mjs +20 -0
  8. package/dist/agentInspector/report.d.ts +36 -0
  9. package/dist/agentInspector/report.mjs +53 -0
  10. package/dist/agentInspector/useAgentInspector.d.ts +15 -0
  11. package/dist/agentInspector/useAgentInspector.mjs +36 -0
  12. package/dist/components/DevToolsOverlay/DevToolsOverlay.d.ts +6 -1
  13. package/dist/components/DevToolsOverlay/DevToolsOverlay.mjs +25 -15
  14. package/dist/components/DevToolsPanel/DevToolsBody.d.ts +3 -1
  15. package/dist/components/DevToolsPanel/DevToolsBody.mjs +35 -31
  16. package/dist/components/DevToolsPanel/DevToolsHeader.d.ts +3 -1
  17. package/dist/components/DevToolsPanel/DevToolsHeader.mjs +20 -10
  18. package/dist/components/DevToolsPanel/DevToolsPanel.d.ts +3 -1
  19. package/dist/components/DevToolsPanel/DevToolsPanel.mjs +25 -23
  20. package/dist/components/DevToolsPanel/DevToolsSubHeader.mjs +41 -45
  21. package/dist/components/DevToolsPanel/tabs/ActionsViewer/ActionsViewer.mjs +10 -10
  22. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsViewer.d.ts +4 -0
  23. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsViewer.mjs +33 -18
  24. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsAttributes/DetailsAttributes.mjs +16 -0
  25. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsAttributes/index.d.ts +3 -0
  26. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsAttributes/index.mjs +5 -0
  27. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsDefinition/DetailsDefinition.mjs +18 -0
  28. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsDefinition/index.d.ts +3 -0
  29. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsDefinition/index.mjs +5 -0
  30. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRow/DetailsRow.d.ts +8 -0
  31. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRow/DetailsRow.mjs +14 -0
  32. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRow/index.d.ts +3 -0
  33. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRow/index.mjs +5 -0
  34. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRuntime/DetailsRuntime.d.ts +9 -0
  35. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRuntime/DetailsRuntime.mjs +54 -0
  36. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRuntime/index.d.ts +3 -0
  37. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsRuntime/index.mjs +5 -0
  38. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsValue/DetailsValue.d.ts +9 -0
  39. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsValue/DetailsValue.mjs +15 -0
  40. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsValue/index.d.ts +3 -0
  41. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/DetailsValue/index.mjs +5 -0
  42. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementDetails/ElementDetails.d.ts +7 -0
  43. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementDetails/ElementDetails.mjs +46 -0
  44. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementDetails/index.d.ts +3 -0
  45. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementDetails/index.mjs +5 -0
  46. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementLink/ElementLink.d.ts +7 -0
  47. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementLink/ElementLink.mjs +14 -0
  48. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementLink/index.d.ts +3 -0
  49. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementLink/index.mjs +5 -0
  50. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/ElementsTree.d.ts +12 -0
  51. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/ElementsTree.mjs +39 -0
  52. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/index.d.ts +3 -0
  53. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/index.mjs +5 -0
  54. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/TreeRow.d.ts +10 -0
  55. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/TreeRow.mjs +36 -0
  56. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/index.d.ts +3 -0
  57. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/index.mjs +5 -0
  58. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/TreeSection.d.ts +13 -0
  59. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/TreeSection.mjs +39 -0
  60. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/index.d.ts +3 -0
  61. package/dist/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/index.mjs +5 -0
  62. package/dist/components/DevToolsPanel/tabs/ElementsViewer/helpers/renderTree.d.ts +31 -0
  63. package/dist/components/DevToolsPanel/tabs/ElementsViewer/helpers/renderTree.mjs +61 -0
  64. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagSource.d.ts +7 -0
  65. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagSource.mjs +23 -0
  66. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagsListItem.d.ts +11 -0
  67. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagsListItem.mjs +66 -0
  68. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagsViewer.d.ts +10 -0
  69. package/dist/components/DevToolsPanel/tabs/FlagsViewer/FlagsViewer.mjs +43 -0
  70. package/dist/components/DevToolsPanel/tabs/FlagsViewer/index.d.ts +3 -0
  71. package/dist/components/DevToolsPanel/tabs/FlagsViewer/index.mjs +5 -0
  72. package/dist/components/DevToolsPanel/tabs/Logs/Log.d.ts +3 -8
  73. package/dist/components/DevToolsPanel/tabs/Logs/Log.mjs +42 -31
  74. package/dist/components/DevToolsPanel/tabs/Logs/Logs.mjs +1 -6
  75. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogInteraction/BodyHeader.mjs +53 -54
  76. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogInteraction/LogInteraction.mjs +17 -17
  77. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogNavigation/LogNavigationBody.mjs +26 -26
  78. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogRealtime/LogRealtime.d.ts +10 -0
  79. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogRealtime/LogRealtime.mjs +58 -0
  80. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogRealtime/index.d.ts +3 -0
  81. package/dist/components/DevToolsPanel/tabs/Logs/categories/LogRealtime/index.mjs +5 -0
  82. package/dist/components/DevToolsPanel/tabs/QaViewer/QaAllChecksButton.d.ts +3 -0
  83. package/dist/components/DevToolsPanel/tabs/QaViewer/QaAllChecksButton.mjs +16 -0
  84. package/dist/components/DevToolsPanel/tabs/QaViewer/QaCheckRow.d.ts +7 -0
  85. package/dist/components/DevToolsPanel/tabs/QaViewer/QaCheckRow.mjs +47 -0
  86. package/dist/components/DevToolsPanel/tabs/QaViewer/QaChecks.d.ts +3 -0
  87. package/dist/components/DevToolsPanel/tabs/QaViewer/QaChecks.mjs +24 -0
  88. package/dist/components/DevToolsPanel/tabs/QaViewer/QaDivider.d.ts +3 -0
  89. package/dist/components/DevToolsPanel/tabs/QaViewer/QaDivider.mjs +5 -0
  90. package/dist/components/DevToolsPanel/tabs/QaViewer/QaFindingItem.d.ts +7 -0
  91. package/dist/components/DevToolsPanel/tabs/QaViewer/QaFindingItem.mjs +32 -0
  92. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorDetails.d.ts +9 -0
  93. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorDetails.mjs +135 -0
  94. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorEmpty.d.ts +3 -0
  95. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorEmpty.mjs +17 -0
  96. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorPanel.d.ts +3 -0
  97. package/dist/components/DevToolsPanel/tabs/QaViewer/QaInspectorPanel.mjs +22 -0
  98. package/dist/components/DevToolsPanel/tabs/QaViewer/QaProperty.d.ts +8 -0
  99. package/dist/components/DevToolsPanel/tabs/QaViewer/QaProperty.mjs +14 -0
  100. package/dist/components/DevToolsPanel/tabs/QaViewer/QaRescanButton.d.ts +3 -0
  101. package/dist/components/DevToolsPanel/tabs/QaViewer/QaRescanButton.mjs +15 -0
  102. package/dist/components/DevToolsPanel/tabs/QaViewer/QaRuleItem.d.ts +7 -0
  103. package/dist/components/DevToolsPanel/tabs/QaViewer/QaRuleItem.mjs +38 -0
  104. package/dist/components/DevToolsPanel/tabs/QaViewer/QaToolChip.d.ts +13 -0
  105. package/dist/components/DevToolsPanel/tabs/QaViewer/QaToolChip.mjs +27 -0
  106. package/dist/components/DevToolsPanel/tabs/QaViewer/QaToolbar.d.ts +3 -0
  107. package/dist/components/DevToolsPanel/tabs/QaViewer/QaToolbar.mjs +58 -0
  108. package/dist/components/DevToolsPanel/tabs/QaViewer/QaViewer.d.ts +8 -0
  109. package/dist/components/DevToolsPanel/tabs/QaViewer/QaViewer.mjs +14 -0
  110. package/dist/components/DevToolsPanel/tabs/QaViewer/QaVisionSelect.d.ts +3 -0
  111. package/dist/components/DevToolsPanel/tabs/QaViewer/QaVisionSelect.mjs +50 -0
  112. package/dist/components/DevToolsPanel/tabs/QaViewer/index.d.ts +3 -0
  113. package/dist/components/DevToolsPanel/tabs/QaViewer/index.mjs +5 -0
  114. package/dist/components/DevToolsPanel/tabs/TracingViewer/TracingViewer.mjs +31 -31
  115. package/dist/components/DevToolsPanel/tabs/VariablesViewer/VariablesViewer.mjs +12 -12
  116. package/dist/highlight/index.d.ts +2 -0
  117. package/dist/highlight/index.mjs +5 -0
  118. package/dist/highlight/useHighlightElement.d.ts +6 -0
  119. package/dist/{components/DevToolsPanel/tabs/TracingViewer → highlight}/useHighlightElement.mjs +1 -1
  120. package/dist/qa/QaContext.d.ts +29 -0
  121. package/dist/qa/QaContext.mjs +73 -0
  122. package/dist/qa/QaLayer.d.ts +9 -0
  123. package/dist/qa/QaLayer.mjs +69 -0
  124. package/dist/qa/checks/contrast.d.ts +6 -0
  125. package/dist/qa/checks/contrast.mjs +23 -0
  126. package/dist/qa/checks/dom.d.ts +15 -0
  127. package/dist/qa/checks/dom.mjs +4 -0
  128. package/dist/qa/checks/headings.d.ts +6 -0
  129. package/dist/qa/checks/headings.mjs +28 -0
  130. package/dist/qa/checks/images.d.ts +6 -0
  131. package/dist/qa/checks/images.mjs +20 -0
  132. package/dist/qa/checks/index.d.ts +15 -0
  133. package/dist/qa/checks/index.mjs +47 -0
  134. package/dist/qa/checks/names.d.ts +9 -0
  135. package/dist/qa/checks/names.mjs +27 -0
  136. package/dist/qa/checks/overflow.d.ts +3 -0
  137. package/dist/qa/checks/overflow.mjs +24 -0
  138. package/dist/qa/checks/targets.d.ts +8 -0
  139. package/dist/qa/checks/targets.mjs +17 -0
  140. package/dist/qa/findings.d.ts +5 -0
  141. package/dist/qa/findings.mjs +11 -0
  142. package/dist/qa/inspect/colour.d.ts +33 -0
  143. package/dist/qa/inspect/colour.mjs +111 -0
  144. package/dist/qa/inspect/describe.d.ts +32 -0
  145. package/dist/qa/inspect/describe.mjs +42 -0
  146. package/dist/qa/inspect/measure.d.ts +20 -0
  147. package/dist/qa/inspect/measure.mjs +23 -0
  148. package/dist/qa/inspect/rules.d.ts +12 -0
  149. package/dist/qa/inspect/rules.mjs +29 -0
  150. package/dist/qa/overlays/QaBoxModel.d.ts +9 -0
  151. package/dist/qa/overlays/QaBoxModel.mjs +49 -0
  152. package/dist/qa/overlays/QaContrastBadge.d.ts +7 -0
  153. package/dist/qa/overlays/QaContrastBadge.mjs +13 -0
  154. package/dist/qa/overlays/QaGrid.d.ts +10 -0
  155. package/dist/qa/overlays/QaGrid.mjs +24 -0
  156. package/dist/qa/overlays/QaInspector.d.ts +7 -0
  157. package/dist/qa/overlays/QaInspector.mjs +50 -0
  158. package/dist/qa/overlays/QaMeasure.d.ts +7 -0
  159. package/dist/qa/overlays/QaMeasure.mjs +39 -0
  160. package/dist/qa/overlays/QaSwatch.d.ts +6 -0
  161. package/dist/qa/overlays/QaSwatch.mjs +11 -0
  162. package/dist/qa/overlays/QaTabOrder.d.ts +6 -0
  163. package/dist/qa/overlays/QaTabOrder.mjs +39 -0
  164. package/dist/qa/overlays/QaTooltip.d.ts +6 -0
  165. package/dist/qa/overlays/QaTooltip.mjs +65 -0
  166. package/dist/qa/overlays/QaViewport.d.ts +10 -0
  167. package/dist/qa/overlays/QaViewport.mjs +27 -0
  168. package/dist/qa/qaCss.d.ts +12 -0
  169. package/dist/qa/qaCss.mjs +45 -0
  170. package/dist/qa/qaSettings.d.ts +38 -0
  171. package/dist/qa/qaSettings.mjs +28 -0
  172. package/dist/qa/tabOrder.d.ts +2 -0
  173. package/dist/qa/tabOrder.mjs +8 -0
  174. package/dist/qa/usePageBox.d.ts +13 -0
  175. package/dist/qa/usePageBox.mjs +23 -0
  176. package/package.json +371 -31
  177. package/dist/components/DevToolsPanel/tabs/ElementsViewer/DetailsAttributes.mjs +0 -19
  178. package/dist/components/DevToolsPanel/tabs/ElementsViewer/DetailsDefinition.mjs +0 -20
  179. package/dist/components/DevToolsPanel/tabs/ElementsViewer/DetailsValue.d.ts +0 -10
  180. package/dist/components/DevToolsPanel/tabs/ElementsViewer/DetailsValue.mjs +0 -31
  181. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementDetails.d.ts +0 -8
  182. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementDetails.mjs +0 -21
  183. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsList.d.ts +0 -8
  184. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsList.mjs +0 -42
  185. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsListItem.d.ts +0 -9
  186. package/dist/components/DevToolsPanel/tabs/ElementsViewer/ElementsListItem.mjs +0 -24
  187. package/dist/components/DevToolsPanel/tabs/TracingViewer/useHighlightElement.d.ts +0 -2
  188. /package/dist/components/DevToolsPanel/tabs/ElementsViewer/{DetailsAttributes.d.ts → components/DetailsAttributes/DetailsAttributes.d.ts} +0 -0
  189. /package/dist/components/DevToolsPanel/tabs/ElementsViewer/{DetailsDefinition.d.ts → components/DetailsDefinition/DetailsDefinition.d.ts} +0 -0
@@ -0,0 +1,12 @@
1
+ import { TreeSection as Section } from '../../helpers/renderTree';
2
+ export type ElementsTreeProps = {
3
+ sections: Section[];
4
+ filter: string;
5
+ selected?: string;
6
+ onFilter: (filter: string) => void;
7
+ onSelect: (id: string) => void;
8
+ onHover: (id?: string) => void;
9
+ };
10
+ /** Every tree on screen, searched together: a match is kept with what holds it. */
11
+ declare const ElementsTree: ({ sections, filter, selected, onFilter, onSelect, onHover }: ElementsTreeProps) => import('react').JSX.Element;
12
+ export default ElementsTree;
@@ -0,0 +1,39 @@
1
+ import { filterRows as e } from "../../helpers/renderTree.mjs";
2
+ import t from "../TreeSection/index.mjs";
3
+ import { useMemo as n } from "react";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ import a from "@plitzi/plitzi-ui/Input";
6
+ //#region src/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/ElementsTree.tsx
7
+ var o = 200, s = ({ sections: s, filter: c, selected: l, onFilter: u, onSelect: d, onHover: f }) => {
8
+ let p = n(() => s.map((t) => ({
9
+ section: t,
10
+ rows: e(t.rows, c)
11
+ })).filter(({ rows: e }) => e.length > 0), [s, c]);
12
+ return /* @__PURE__ */ i("div", {
13
+ className: "flex h-full w-[320px] shrink-0 flex-col gap-2 border-r border-zinc-200 dark:border-zinc-700",
14
+ children: [/* @__PURE__ */ r("div", {
15
+ className: "px-2 pt-2",
16
+ children: /* @__PURE__ */ r(a, {
17
+ value: c,
18
+ onChange: u,
19
+ placeholder: "Search by name, id or type...",
20
+ size: "sm"
21
+ })
22
+ }), /* @__PURE__ */ i("div", {
23
+ className: "flex flex-col overflow-y-auto text-xs",
24
+ children: [p.length === 0 && /* @__PURE__ */ r("div", {
25
+ className: "p-4 text-center text-zinc-400 dark:text-zinc-600",
26
+ children: "No elements"
27
+ }), p.map(({ section: e, rows: n }) => /* @__PURE__ */ r(t, {
28
+ section: e,
29
+ rows: n.slice(0, o),
30
+ more: Math.max(n.length - o, 0),
31
+ selected: l,
32
+ onSelect: d,
33
+ onHover: f
34
+ }, `${e.kind}-${e.id}`))]
35
+ })]
36
+ });
37
+ };
38
+ //#endregion
39
+ export { s as default };
@@ -0,0 +1,3 @@
1
+ import { default as ElementsTree } from './ElementsTree';
2
+ export * from './ElementsTree';
3
+ export default ElementsTree;
@@ -0,0 +1,5 @@
1
+ import e from "./ElementsTree.mjs";
2
+ //#region src/components/DevToolsPanel/tabs/ElementsViewer/components/ElementsTree/index.ts
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,10 @@
1
+ import { TreeRow as Row } from '../../helpers/renderTree';
2
+ export type TreeRowProps = {
3
+ row: Row;
4
+ isSelected: boolean;
5
+ onSelect: (id: string) => void;
6
+ onHover: (id?: string) => void;
7
+ };
8
+ /** One element of a tree, at its depth: its label, its type, the component it places, and whether it starts hidden. */
9
+ declare const TreeRow: ({ row, isSelected, onSelect, onHover }: TreeRowProps) => import('react').JSX.Element;
10
+ export default TreeRow;
@@ -0,0 +1,36 @@
1
+ import e from "clsx";
2
+ import { useCallback as t } from "react";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ //#region src/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/TreeRow.tsx
5
+ var i = ({ row: i, isSelected: a, onSelect: o, onHover: s }) => {
6
+ let c = t(() => o(i.id), [o, i.id]), l = t(() => s(i.id), [s, i.id]), u = t(() => s(void 0), [s]);
7
+ return /* @__PURE__ */ r("div", {
8
+ className: e("flex w-full cursor-pointer items-center gap-2 border-l-2 py-1 pr-2 transition-colors", a ? "border-l-violet-500 bg-violet-50 text-violet-700 dark:bg-violet-500/15 dark:text-violet-300" : "border-l-transparent text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-300 dark:hover:bg-zinc-800 dark:hover:text-zinc-100"),
9
+ style: { paddingLeft: 8 + i.depth * 12 },
10
+ onClick: c,
11
+ onMouseEnter: l,
12
+ onMouseLeave: u,
13
+ children: [
14
+ /* @__PURE__ */ n("span", {
15
+ className: "truncate",
16
+ title: i.id,
17
+ children: i.label
18
+ }),
19
+ /* @__PURE__ */ n("span", {
20
+ className: "shrink-0 font-mono text-[10px] text-zinc-400 dark:text-zinc-500",
21
+ children: i.type
22
+ }),
23
+ i.instanceOf && /* @__PURE__ */ r("span", {
24
+ className: "shrink-0 rounded bg-violet-100 px-1 text-[10px] text-violet-700 dark:bg-violet-500/20 dark:text-violet-300",
25
+ children: ["◇ ", i.instanceOf]
26
+ }),
27
+ /* @__PURE__ */ n("span", { className: "grow" }),
28
+ i.hidden && /* @__PURE__ */ n("i", {
29
+ className: "fa-solid fa-eye-slash shrink-0 text-[10px] text-zinc-300 dark:text-zinc-600",
30
+ title: "Starts hidden"
31
+ })
32
+ ]
33
+ });
34
+ };
35
+ //#endregion
36
+ export { i as default };
@@ -0,0 +1,3 @@
1
+ import { default as TreeRow } from './TreeRow';
2
+ export * from './TreeRow';
3
+ export default TreeRow;
@@ -0,0 +1,5 @@
1
+ import e from "./TreeRow.mjs";
2
+ //#region src/components/DevToolsPanel/tabs/ElementsViewer/components/TreeRow/index.ts
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,13 @@
1
+ import { TreeRow as Row, TreeSection as Section } from '../../helpers/renderTree';
2
+ export type TreeSectionProps = {
3
+ section: Section;
4
+ rows: Row[];
5
+ /** Rows the section holds beyond those shown. */
6
+ more: number;
7
+ selected?: string;
8
+ onSelect: (id: string) => void;
9
+ onHover: (id?: string) => void;
10
+ };
11
+ /** One tree of what is on screen — a layout, the page, a component — headed by what it is. */
12
+ declare const TreeSection: ({ section, rows, more, selected, onSelect, onHover }: TreeSectionProps) => import('react').JSX.Element;
13
+ export default TreeSection;
@@ -0,0 +1,39 @@
1
+ import e from "../TreeRow/index.mjs";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/TreeSection.tsx
4
+ var r = {
5
+ layout: "fa-solid fa-table-columns",
6
+ page: "fa-regular fa-file",
7
+ component: "fa-solid fa-cube"
8
+ }, i = {
9
+ layout: "Layout",
10
+ page: "Page",
11
+ component: "Component"
12
+ }, a = ({ section: a, rows: o, more: s, selected: c, onSelect: l, onHover: u }) => /* @__PURE__ */ n("div", {
13
+ className: "flex flex-col",
14
+ children: [
15
+ /* @__PURE__ */ n("div", {
16
+ className: "sticky top-0 flex items-center gap-2 border-b border-zinc-200 bg-zinc-50 px-2 py-1 text-[10px] font-semibold tracking-wider text-zinc-500 uppercase dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-400",
17
+ children: [
18
+ /* @__PURE__ */ t("i", { className: r[a.kind] }),
19
+ /* @__PURE__ */ t("span", { children: i[a.kind] }),
20
+ /* @__PURE__ */ t("span", {
21
+ className: "truncate font-normal tracking-normal normal-case",
22
+ children: a.title
23
+ })
24
+ ]
25
+ }),
26
+ o.map((n) => /* @__PURE__ */ t(e, {
27
+ row: n,
28
+ isSelected: c === n.id,
29
+ onSelect: l,
30
+ onHover: u
31
+ }, n.id)),
32
+ s > 0 && /* @__PURE__ */ n("div", {
33
+ className: "p-2 text-center text-[11px] text-zinc-400 dark:text-zinc-600",
34
+ children: [s, " more — narrow the search to reach them"]
35
+ })
36
+ ]
37
+ });
38
+ //#endregion
39
+ export { a as default };
@@ -0,0 +1,3 @@
1
+ import { default as TreeSection } from './TreeSection';
2
+ export * from './TreeSection';
3
+ export default TreeSection;
@@ -0,0 +1,5 @@
1
+ import e from "./TreeSection.mjs";
2
+ //#region src/components/DevToolsPanel/tabs/ElementsViewer/components/TreeSection/index.ts
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -0,0 +1,31 @@
1
+ import { Schema } from '@plitzi/sdk-shared';
2
+ export type TreeRow = {
3
+ id: string;
4
+ label: string;
5
+ type: string;
6
+ depth: number;
7
+ /** Starts hidden: its initial visibility is off. */
8
+ hidden: boolean;
9
+ /** The component it places, when it is an instance. */
10
+ instanceOf?: string;
11
+ };
12
+ export type TreeSection = {
13
+ kind: 'layout' | 'page' | 'component';
14
+ /** The root's id: the layout, the page, the component. */
15
+ id: string;
16
+ title: string;
17
+ rows: TreeRow[];
18
+ };
19
+ type Document = Pick<Schema, 'flat' | 'components'>;
20
+ /**
21
+ * What renders on a page, as the trees it comes from: the layouts around it, outermost first, the page, and each
22
+ * component an instance places — the components an instance inside one of those places too. A layout's and a
23
+ * component's elements are not in the page's tree, and the page is not all that is on screen.
24
+ */
25
+ export declare const renderTree: (document: Document, pageId: string) => TreeSection[];
26
+ /**
27
+ * The rows a search keeps: each one it matches — by label, id or type — and the rows above it in its tree, so a match
28
+ * is read where it sits. Everything, for an empty search.
29
+ */
30
+ export declare const filterRows: (rows: readonly TreeRow[], query: string) => TreeRow[];
31
+ export {};
@@ -0,0 +1,61 @@
1
+ import { componentNamed as e, isInstance as t } from "@plitzi/sdk-schema/helpers/components";
2
+ import { resolveLayoutChain as n } from "@plitzi/sdk-shared/schema/layoutChain";
3
+ //#region src/components/DevToolsPanel/tabs/ElementsViewer/helpers/renderTree.ts
4
+ var r = (e) => typeof e == "string" ? e : "", i = (e, n) => {
5
+ let i = [], a = /* @__PURE__ */ new Set(), o = (n, s) => {
6
+ let c = Object.hasOwn(e, n) ? e[n] : void 0;
7
+ if (!c || a.has(n)) return;
8
+ a.add(n);
9
+ let l = t(c) ? r(c.attributes.referenceId) : "";
10
+ i.push({
11
+ id: n,
12
+ label: c.definition.label || n,
13
+ type: c.definition.type,
14
+ depth: s,
15
+ hidden: c.definition.initialState?.visibility === !1,
16
+ ...l ? { instanceOf: l } : {}
17
+ });
18
+ for (let e of c.definition.items ?? []) o(e, s + 1);
19
+ };
20
+ return o(n, 0), i;
21
+ }, a = (t, a) => {
22
+ let o = Object.hasOwn(t.flat, a) ? t.flat[a] : void 0;
23
+ if (!o) return [];
24
+ let s = [...n((e) => Object.hasOwn(t.flat, e) ? t.flat[e] : void 0, r(o.attributes.layout), r(o.attributes.layoutContainer)).toReversed().map(({ layout: e }) => ({
25
+ kind: "layout",
26
+ id: e,
27
+ title: t.flat[e].definition.label || e,
28
+ rows: i(t.flat, e)
29
+ })), {
30
+ kind: "page",
31
+ id: a,
32
+ title: r(o.attributes.name) || o.definition.label || a,
33
+ rows: i(t.flat, a)
34
+ }], c = /* @__PURE__ */ new Set();
35
+ for (let n = 0; n < s.length; n++) for (let r of s[n].rows) {
36
+ let n = r.instanceOf ? e(t, r.instanceOf) : void 0;
37
+ n && !c.has(n.id) && (c.add(n.id), s.push({
38
+ kind: "component",
39
+ id: n.id,
40
+ title: n.label ?? n.id,
41
+ rows: i(n.flat, n.rootId)
42
+ }));
43
+ }
44
+ return s;
45
+ }, o = (e, t) => {
46
+ let n = t.trim().toLowerCase();
47
+ if (!n) return [...e];
48
+ let r = /* @__PURE__ */ new Set();
49
+ return e.forEach((t, i) => {
50
+ if (![
51
+ t.label,
52
+ t.id,
53
+ t.type
54
+ ].some((e) => e.toLowerCase().includes(n))) return;
55
+ r.add(i);
56
+ let a = t.depth;
57
+ for (let t = i - 1; t >= 0 && a > 0; t--) e[t].depth < a && (r.add(t), a = e[t].depth);
58
+ }), e.filter((e, t) => r.has(t));
59
+ };
60
+ //#endregion
61
+ export { o as filterRows, a as renderTree };
@@ -0,0 +1,7 @@
1
+ import { FlagResolution } from '@plitzi/sdk-shared';
2
+ export type FlagSourceProps = {
3
+ resolution?: FlagResolution;
4
+ };
5
+ /** Which layer decided the flag — and, when the space did with a rule, which rule. */
6
+ declare const FlagSource: ({ resolution }: FlagSourceProps) => import('react').JSX.Element | null;
7
+ export default FlagSource;
@@ -0,0 +1,23 @@
1
+ import e from "clsx";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ //#region src/components/DevToolsPanel/tabs/FlagsViewer/FlagSource.tsx
4
+ var n = {
5
+ space: "default",
6
+ server: "server",
7
+ sdk: "sdk",
8
+ qa: "forced"
9
+ }, r = ({ resolution: r }) => {
10
+ if (!r) return null;
11
+ let { layer: i, rule: a } = r, o = i === "space" && a !== void 0 ? `rule ${a + 1}` : n[i];
12
+ return /* @__PURE__ */ t("span", {
13
+ className: e("rounded px-1.5 py-0.5 text-[10px] font-medium tracking-wider uppercase", {
14
+ "bg-zinc-100 text-zinc-500 dark:bg-zinc-800 dark:text-zinc-400": i === "space",
15
+ "bg-sky-100 text-sky-700 dark:bg-sky-950 dark:text-sky-300": i === "server" || i === "sdk",
16
+ "bg-amber-100 text-amber-700 dark:bg-amber-950 dark:text-amber-300": i === "qa"
17
+ }),
18
+ title: "Which layer decided this flag",
19
+ children: o
20
+ });
21
+ };
22
+ //#endregion
23
+ export { r as default };
@@ -0,0 +1,11 @@
1
+ import { FlagResolution, SchemaFlag } from '@plitzi/sdk-shared';
2
+ export type FlagsListItemProps = {
3
+ name: string;
4
+ flag: SchemaFlag;
5
+ resolution?: FlagResolution;
6
+ /** What a tester forced this flag to, if anything. */
7
+ forced?: boolean;
8
+ onForce: (name: string, value: boolean | undefined) => void;
9
+ };
10
+ declare const FlagsListItem: ({ name, flag, resolution, forced, onForce }: FlagsListItemProps) => import('react').JSX.Element;
11
+ export default FlagsListItem;
@@ -0,0 +1,66 @@
1
+ import e from "./FlagSource.mjs";
2
+ import t from "clsx";
3
+ import { useCallback as n } from "react";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ //#region src/components/DevToolsPanel/tabs/FlagsViewer/FlagsListItem.tsx
6
+ var a = ({ name: a, flag: o, resolution: s, forced: c, onForce: l }) => {
7
+ let u = s?.value ?? !1, d = n(() => l(a, !0), [a, l]), f = n(() => l(a, !1), [a, l]), p = n(() => l(a, void 0), [a, l]);
8
+ return /* @__PURE__ */ i("div", {
9
+ className: "grid grid-cols-[minmax(0,1fr)_auto] items-center gap-2 border-b border-zinc-100 px-3 py-1.5 transition-colors hover:bg-zinc-50 dark:border-zinc-800 dark:hover:bg-zinc-800/60",
10
+ children: [/* @__PURE__ */ i("div", {
11
+ className: "flex min-w-0 flex-col gap-0.5",
12
+ children: [/* @__PURE__ */ i("div", {
13
+ className: "flex min-w-0 items-center gap-2",
14
+ children: [
15
+ /* @__PURE__ */ r("span", { className: t("h-2 w-2 shrink-0 rounded-full", {
16
+ "bg-emerald-500": u,
17
+ "bg-zinc-300 dark:bg-zinc-600": !u
18
+ }) }),
19
+ /* @__PURE__ */ r("span", {
20
+ className: "truncate font-mono font-medium text-zinc-800 dark:text-zinc-200",
21
+ title: a,
22
+ children: a
23
+ }),
24
+ /* @__PURE__ */ r(e, { resolution: s })
25
+ ]
26
+ }), o.description && /* @__PURE__ */ r("span", {
27
+ className: "truncate text-[11px] text-zinc-400 dark:text-zinc-500",
28
+ title: o.description,
29
+ children: o.description
30
+ })]
31
+ }), /* @__PURE__ */ i("div", {
32
+ className: "flex items-center gap-1",
33
+ children: [
34
+ /* @__PURE__ */ r("button", {
35
+ type: "button",
36
+ className: t("rounded px-1.5 py-0.5 text-[10px] font-medium", {
37
+ "bg-emerald-600 text-white": c === !0,
38
+ "text-zinc-500 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800": c !== !0
39
+ }),
40
+ title: "Force this flag on for this browser",
41
+ onClick: d,
42
+ children: "On"
43
+ }),
44
+ /* @__PURE__ */ r("button", {
45
+ type: "button",
46
+ className: t("rounded px-1.5 py-0.5 text-[10px] font-medium", {
47
+ "bg-zinc-700 text-white dark:bg-zinc-300 dark:text-zinc-900": c === !1,
48
+ "text-zinc-500 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800": c !== !1
49
+ }),
50
+ title: "Force this flag off for this browser",
51
+ onClick: f,
52
+ children: "Off"
53
+ }),
54
+ c !== void 0 && /* @__PURE__ */ r("button", {
55
+ type: "button",
56
+ className: "rounded px-1.5 py-0.5 text-[10px] text-zinc-400 hover:bg-zinc-100 dark:text-zinc-500 dark:hover:bg-zinc-800",
57
+ title: "Stop forcing it: the space and its embedding decide again",
58
+ onClick: p,
59
+ children: /* @__PURE__ */ r("i", { className: "fa-solid fa-rotate-left" })
60
+ })
61
+ ]
62
+ })]
63
+ });
64
+ };
65
+ //#endregion
66
+ export { a as default };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The space's feature flags as this page resolved them — which layer decided each, and which rule matched — with a
3
+ * way to force any of them for this browser.
4
+ *
5
+ * Forcing is the `qa` layer: the strongest there is, written to the page that is open and to a cookie, so the next
6
+ * page this browser asks for is drawn with it on the server too. It is only ever offered here, and the dev tools are
7
+ * only ever shown where debugging is authorized — the same rule the server applies before honouring the cookie.
8
+ */
9
+ declare const FlagsViewer: () => import('react').JSX.Element;
10
+ export default FlagsViewer;
@@ -0,0 +1,43 @@
1
+ import e from "./FlagsListItem.mjs";
2
+ import { useCallback as t } from "react";
3
+ import { useCommonStore as n } from "@plitzi/sdk-shared/store";
4
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
5
+ import { withForcedFlag as a, writeForcedFlags as o } from "@plitzi/sdk-shared/flags";
6
+ //#region src/components/DevToolsPanel/tabs/FlagsViewer/FlagsViewer.tsx
7
+ var s = {}, c = () => {
8
+ let [[c, l]] = n(["schema.flags", "flags.resolved"]), [u = s, d] = n("flags.overrides.qa"), f = Object.keys(c ?? {}), p = t((e, t) => {
9
+ let n = a(u, e, t);
10
+ d(n), o(window.location.host, n);
11
+ }, [u, d]), m = t(() => {
12
+ d({}), o(window.location.host, {});
13
+ }, [d]);
14
+ return !c || f.length === 0 ? /* @__PURE__ */ r("div", {
15
+ className: "py-4 text-center text-xs text-zinc-400 italic dark:text-zinc-600",
16
+ children: "This space declares no feature flags"
17
+ }) : /* @__PURE__ */ i("div", {
18
+ className: "flex w-full flex-col gap-1.5 overflow-y-auto p-3",
19
+ children: [/* @__PURE__ */ i("div", {
20
+ className: "flex items-center justify-between gap-2 text-[10px] font-semibold tracking-wider text-zinc-400 uppercase dark:text-zinc-500",
21
+ children: [/* @__PURE__ */ i("span", {
22
+ className: "flex items-center gap-2",
23
+ children: [/* @__PURE__ */ r("i", { className: "fa-solid fa-flag" }), "Feature Flags"]
24
+ }), Object.keys(u).length > 0 && /* @__PURE__ */ r("button", {
25
+ type: "button",
26
+ className: "rounded px-1.5 py-0.5 font-medium normal-case hover:bg-zinc-100 dark:hover:bg-zinc-800",
27
+ onClick: m,
28
+ children: "Stop forcing all"
29
+ })]
30
+ }), /* @__PURE__ */ r("div", {
31
+ className: "w-full overflow-hidden rounded border border-zinc-200 dark:border-zinc-700",
32
+ children: f.map((t) => /* @__PURE__ */ r(e, {
33
+ name: t,
34
+ flag: c[t],
35
+ resolution: l?.[t],
36
+ forced: u[t],
37
+ onForce: p
38
+ }, t))
39
+ })]
40
+ });
41
+ };
42
+ //#endregion
43
+ export { c as default };
@@ -0,0 +1,3 @@
1
+ import { default as FlagsViewer } from './FlagsViewer';
2
+ export * from './FlagsViewer';
3
+ export default FlagsViewer;
@@ -0,0 +1,5 @@
1
+ import e from "./FlagsViewer.mjs";
2
+ //#region src/components/DevToolsPanel/tabs/FlagsViewer/index.ts
3
+ var t = e;
4
+ //#endregion
5
+ export { t as default };
@@ -1,11 +1,6 @@
1
- import { LogParams } from '@plitzi/sdk-shared';
2
- import { ReactNode } from 'react';
1
+ import { Log as TLog } from '@plitzi/sdk-shared';
3
2
  export type LogProps = {
4
- className?: string;
5
- category: string;
6
- time?: string;
7
- message?: ReactNode;
8
- params: LogParams;
3
+ log: TLog;
9
4
  };
10
- declare const _default: import('react').MemoExoticComponent<({ category, message, time, params }: LogProps) => import('react').JSX.Element>;
5
+ declare const _default: import('react').MemoExoticComponent<({ log }: LogProps) => import('react').JSX.Element | null>;
11
6
  export default _default;
@@ -2,35 +2,46 @@ import e from "./categories/LogAction/index.mjs";
2
2
  import t from "./categories/LogInteraction/index.mjs";
3
3
  import n from "./categories/LogNavigation/index.mjs";
4
4
  import r from "./categories/LogNetwork/index.mjs";
5
- import i from "./categories/LogStore/LogStore.mjs";
6
- import { memo as a } from "react";
7
- import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
8
- var l = a(({ category: a, message: l, time: u, params: d }) => /* @__PURE__ */ c(o, { children: [
9
- a === "interactions" && /* @__PURE__ */ s(t, {
10
- message: l,
11
- params: d,
12
- time: u
13
- }),
14
- a === "navigation" && /* @__PURE__ */ s(n, {
15
- message: l,
16
- params: d,
17
- time: u
18
- }),
19
- a === "store" && /* @__PURE__ */ s(i, {
20
- message: l,
21
- params: d,
22
- time: u
23
- }),
24
- a === "network" && /* @__PURE__ */ s(r, {
25
- message: l,
26
- params: d,
27
- time: u
28
- }),
29
- a === "actions" && /* @__PURE__ */ s(e, {
30
- message: l,
31
- params: d,
32
- time: u
33
- })
34
- ] }));
5
+ import i from "./categories/LogRealtime/index.mjs";
6
+ import a from "./categories/LogStore/LogStore.mjs";
7
+ import { memo as o } from "react";
8
+ import { jsx as s } from "react/jsx-runtime";
9
+ var c = o(({ log: o }) => {
10
+ let { message: c, time: l } = o;
11
+ switch (o.category) {
12
+ case "interactions": return /* @__PURE__ */ s(t, {
13
+ message: c,
14
+ params: o.params,
15
+ time: l
16
+ });
17
+ case "navigation": return /* @__PURE__ */ s(n, {
18
+ message: c,
19
+ params: o.params,
20
+ time: l
21
+ });
22
+ case "store": return /* @__PURE__ */ s(a, {
23
+ message: c,
24
+ params: o.params,
25
+ time: l
26
+ });
27
+ case "network": return /* @__PURE__ */ s(r, {
28
+ message: c,
29
+ params: o.params,
30
+ time: l
31
+ });
32
+ case "actions": return /* @__PURE__ */ s(e, {
33
+ message: c,
34
+ params: o.params,
35
+ time: l
36
+ });
37
+ case "realtime": return /* @__PURE__ */ s(i, {
38
+ logType: o.logType,
39
+ message: c,
40
+ params: o.params,
41
+ time: l
42
+ });
43
+ case "eventBridge": return null;
44
+ }
45
+ });
35
46
  //#endregion
36
- export { l as default };
47
+ export { c as default };
@@ -50,12 +50,7 @@ var l = ({ items: l = [], autoScrollOffset: u = 40, orientation: d = "horizontal
50
50
  }) : l.map((e, t) => ({
51
51
  item: e,
52
52
  key: t
53
- })).filter(({ item: e }) => !m || e.logType === m).reverse().map(({ item: t, key: n }) => /* @__PURE__ */ s(e, {
54
- category: t.category,
55
- time: t.time,
56
- params: t.params,
57
- message: t.message
58
- }, n))
53
+ })).filter(({ item: e }) => !m || e.logType === m).reverse().map(({ item: t, key: n }) => /* @__PURE__ */ s(e, { log: t }, n))
59
54
  })]
60
55
  })]
61
56
  });