@waypointjs/devtools 0.1.0 → 0.1.4

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.
package/dist/index.cjs CHANGED
@@ -415,7 +415,7 @@ function Section({
415
415
  !collapsed && /* @__PURE__ */ jsxRuntime.jsx("div", { style: sectionBody, children })
416
416
  ] });
417
417
  }
418
- function DevPanel({ position = "bottom-right", defaultOpen = false }) {
418
+ function DevPanel({ position = "bottom-right", defaultOpen = false, store: storeProp }) {
419
419
  const [isOpen, setIsOpen] = react.useState(defaultOpen);
420
420
  const [isMounted, setIsMounted] = react.useState(false);
421
421
  const [collapsed, setCollapsed] = react.useState({
@@ -426,7 +426,8 @@ function DevPanel({ position = "bottom-right", defaultOpen = false }) {
426
426
  raw: true
427
427
  });
428
428
  react.useEffect(() => setIsMounted(true), []);
429
- const { store } = next.useWaypointRuntimeContext();
429
+ const ctx = react.useContext(next.WaypointRuntimeContext);
430
+ const store = storeProp ?? ctx?.store;
430
431
  const schema = zustand.useStore(store, (s) => s.schema);
431
432
  const data = zustand.useStore(store, (s) => s.data);
432
433
  const externalVars = zustand.useStore(store, (s) => s.externalVars);
@@ -438,7 +439,7 @@ function DevPanel({ position = "bottom-right", defaultOpen = false }) {
438
439
  const tree = react.useMemo(() => core.getResolvedTree(fullState), [fullState]);
439
440
  const progress = react.useMemo(() => core.calculateProgressFromState(fullState), [fullState]);
440
441
  const missingVars = react.useMemo(() => core.getMissingBlockingVars(fullState), [fullState]);
441
- if (!isMounted || !schema) return null;
442
+ if (!isMounted || !store || !schema) return null;
442
443
  const side = position === "bottom-left" ? "left" : "right";
443
444
  function toggleSection(id) {
444
445
  setCollapsed((p) => ({ ...p, [id]: !p[id] }));
@@ -458,7 +459,7 @@ function DevPanel({ position = "bottom-right", defaultOpen = false }) {
458
459
  children: [
459
460
  "\u25C8 waypoint",
460
461
  isSubmitting && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { opacity: 0.7 }, children: "\u2026" }),
461
- missingVars.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { background: "#ef4444", borderRadius: "50%", width: "0.85rem", height: "0.85rem", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "0.55rem" }, children: "!" })
462
+ missingVars.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { style: { background: "#ef4444", borderRadius: "50%", width: "0.9rem", height: "0.9rem", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "0.65rem", fontWeight: 700 }, children: "!" })
462
463
  ]
463
464
  }
464
465
  ),
@@ -516,13 +517,14 @@ function DevPanel({ position = "bottom-right", defaultOpen = false }) {
516
517
  ] })
517
518
  ] });
518
519
  }
519
- function WaypointDevtools(props) {
520
- if (process.env.NODE_ENV !== "development") {
520
+ function WaypointDevtools({ forceShow, ...props }) {
521
+ if (process.env.NODE_ENV !== "development" && !forceShow) {
521
522
  return null;
522
523
  }
523
524
  return /* @__PURE__ */ jsxRuntime.jsx(DevPanel, { ...props });
524
525
  }
525
526
 
527
+ exports.DevPanel = DevPanel;
526
528
  exports.WaypointDevtools = WaypointDevtools;
527
529
  //# sourceMappingURL=index.cjs.map
528
530
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/styles.ts","../src/components/StepTree.tsx","../src/components/JsonView.tsx","../src/components/DataInspector.tsx","../src/components/ExternalVarsView.tsx","../src/components/HistoryView.tsx","../src/DevPanel.tsx","../src/WaypointDevtools.tsx"],"names":["jsxs","jsx","useState","useEffect","useWaypointRuntimeContext","useStore","useMemo","getResolvedTree","calculateProgressFromState","getMissingBlockingVars","Fragment"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport const PANEL_WIDTH = 340;\nexport const Z_INDEX = 999999;\nexport const ACCENT = \"#6366f1\";\nexport const BG = \"rgba(13, 13, 18, 0.97)\";\nexport const BORDER = \"rgba(255,255,255,0.08)\";\nexport const TEXT_DIM = \"#64748b\";\nexport const TEXT_BASE = \"#cbd5e1\";\nexport const TEXT_BRIGHT = \"#f1f5f9\";\n\nexport function panelContainer(isOpen: boolean, side: \"left\" | \"right\"): CSSProperties {\n return {\n position: \"fixed\",\n top: 0,\n [side]: 0,\n bottom: 0,\n width: `${PANEL_WIDTH}px`,\n zIndex: Z_INDEX - 1,\n background: BG,\n color: TEXT_BASE,\n fontFamily: \"'ui-monospace','SFMono-Regular','Menlo',monospace\",\n fontSize: \"0.75rem\",\n lineHeight: 1.5,\n transform: isOpen\n ? \"translateX(0)\"\n : `translateX(${side === \"right\" ? PANEL_WIDTH : -PANEL_WIDTH}px)`,\n transition: \"transform 220ms ease-in-out\",\n overflowY: \"auto\",\n boxShadow: side === \"right\"\n ? \"-4px 0 24px rgba(0,0,0,0.6)\"\n : \"4px 0 24px rgba(0,0,0,0.6)\",\n display: \"flex\",\n flexDirection: \"column\",\n borderLeft: side === \"right\" ? `1px solid ${BORDER}` : undefined,\n borderRight: side === \"left\" ? `1px solid ${BORDER}` : undefined,\n };\n}\n\nexport const toggleBtn: CSSProperties = {\n position: \"fixed\",\n bottom: \"1.25rem\",\n right: \"1.25rem\",\n zIndex: Z_INDEX,\n background: ACCENT,\n color: \"#fff\",\n border: \"none\",\n borderRadius: \"2rem\",\n padding: \"0.375rem 0.875rem\",\n fontSize: \"0.72rem\",\n fontFamily: \"'ui-monospace','SFMono-Regular','Menlo',monospace\",\n cursor: \"pointer\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.5)\",\n userSelect: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.375rem\",\n};\n\nexport const panelHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0.75rem 1rem\",\n borderBottom: `1px solid ${BORDER}`,\n background: \"rgba(99,102,241,0.12)\",\n flexShrink: 0,\n};\n\nexport const sectionHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0.4rem 1rem\",\n background: \"rgba(255,255,255,0.03)\",\n cursor: \"pointer\",\n borderBottom: `1px solid ${BORDER}`,\n fontWeight: \"bold\",\n fontSize: \"0.68rem\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.08em\",\n color: TEXT_DIM,\n userSelect: \"none\",\n};\n\nexport const sectionBody: CSSProperties = {\n padding: \"0.5rem 1rem\",\n borderBottom: `1px solid ${BORDER}`,\n};\n\nexport function badge(color: string): CSSProperties {\n return {\n display: \"inline-block\",\n background: color,\n color: \"#fff\",\n borderRadius: \"0.25rem\",\n padding: \"0.05rem 0.35rem\",\n fontSize: \"0.62rem\",\n fontWeight: \"bold\",\n marginLeft: \"0.3rem\",\n verticalAlign: \"middle\",\n };\n}\n\nexport const progressTrack: CSSProperties = {\n height: \"4px\",\n background: \"rgba(255,255,255,0.08)\",\n borderRadius: \"2px\",\n overflow: \"hidden\",\n margin: \"0.5rem 0\",\n};\n\nexport function progressBar(pct: number): CSSProperties {\n return {\n height: \"100%\",\n width: `${pct}%`,\n background: ACCENT,\n borderRadius: \"2px\",\n transition: \"width 300ms ease\",\n };\n}\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport type { ResolvedTree } from \"@waypointjs/core\";\nimport { badge, progressBar, progressTrack, TEXT_DIM, TEXT_BRIGHT, ACCENT } from \"../styles\";\n\ninterface StepTreeProps {\n schema: WaypointSchema;\n tree: ResolvedTree;\n currentStepId: string | null;\n progress: number;\n completed: boolean;\n}\n\nexport function StepTree({ schema, tree, currentStepId, progress, completed }: StepTreeProps) {\n const currentIdx = tree.steps.findIndex((s) => s.definition.id === currentStepId);\n\n return (\n <div>\n {/* Schema info */}\n <div style={{ marginBottom: \"0.75rem\" }}>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>schema</div>\n <div style={{ color: TEXT_BRIGHT, fontWeight: \"bold\" }}>{schema.name}</div>\n <div style={{ color: TEXT_DIM }}>{schema.id} · v{schema.version}</div>\n </div>\n\n {/* Progress */}\n <div style={{ marginBottom: \"0.75rem\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", color: TEXT_DIM, fontSize: \"0.65rem\" }}>\n <span>progression</span>\n <span>{completed ? \"✓ terminé\" : `${progress}%`}</span>\n </div>\n <div style={progressTrack}>\n <div style={progressBar(completed ? 100 : progress)} />\n </div>\n </div>\n\n {/* Visible steps */}\n <div style={{ marginBottom: \"0.5rem\" }}>\n {tree.steps.map((step, i) => {\n const isCurrent = step.definition.id === currentStepId;\n const isDone = completed || i < currentIdx;\n return (\n <div\n key={step.definition.id}\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.5rem\",\n padding: \"0.3rem 0\",\n borderLeft: isCurrent ? `2px solid ${ACCENT}` : \"2px solid transparent\",\n paddingLeft: \"0.5rem\",\n marginLeft: \"-0.5rem\",\n opacity: (!isDone && !isCurrent) ? 0.45 : 1,\n }}\n >\n <div style={{\n width: \"1.1rem\",\n height: \"1.1rem\",\n borderRadius: \"50%\",\n background: isDone ? \"#22c55e\" : isCurrent ? ACCENT : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"0.6rem\",\n flexShrink: 0,\n marginTop: \"0.1rem\",\n }}>\n {isDone ? \"✓\" : i + 1}\n </div>\n <div>\n <div style={{ color: isCurrent ? TEXT_BRIGHT : TEXT_DIM, fontWeight: isCurrent ? \"bold\" : \"normal\" }}>\n {step.definition.title}\n </div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>{step.definition.url}</div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Hidden steps */}\n {tree.hiddenSteps.length > 0 && (\n <div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\", marginBottom: \"0.25rem\" }}>\n steps cachées ({tree.hiddenSteps.length})\n </div>\n {tree.hiddenSteps.map((step) => (\n <div key={step.definition.id} style={{ display: \"flex\", alignItems: \"center\", gap: \"0.4rem\", padding: \"0.15rem 0\", opacity: 0.5 }}>\n <span style={{ fontSize: \"0.65rem\" }}>⊘</span>\n <span style={{ color: TEXT_DIM }}>{step.definition.title}</span>\n <span style={badge(\"#94a3b8\")}>hidden</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\n\ninterface JsonViewProps {\n data: unknown;\n depth?: number;\n}\n\nconst COLOR = {\n string: \"#86efac\", // green-300\n number: \"#93c5fd\", // blue-300\n boolean: \"#fdba74\", // orange-300\n null: \"#f87171\", // red-400\n key: \"#c4b5fd\", // violet-300\n bracket: \"#94a3b8\", // slate-400\n toggle: \"#6366f1\", // indigo-500\n};\n\nfunction Primitive({ value }: { value: string | number | boolean | null }) {\n if (value === null) return <span style={{ color: COLOR.null }}>null</span>;\n if (typeof value === \"boolean\")\n return <span style={{ color: COLOR.boolean }}>{String(value)}</span>;\n if (typeof value === \"number\")\n return <span style={{ color: COLOR.number }}>{value}</span>;\n return <span style={{ color: COLOR.string }}>\"{value}\"</span>;\n}\n\nexport function JsonView({ data, depth = 0 }: JsonViewProps) {\n const [open, setOpen] = useState(depth === 0);\n\n if (data === null || typeof data !== \"object\") {\n return <Primitive value={data as string | number | boolean | null} />;\n }\n\n const isArray = Array.isArray(data);\n const entries = isArray\n ? (data as unknown[]).map((v, i) => [String(i), v] as [string, unknown])\n : Object.entries(data as Record<string, unknown>);\n\n const count = entries.length;\n const open_b = isArray ? \"[\" : \"{\";\n const close_b = isArray ? \"]\" : \"}\";\n\n if (count === 0) {\n return (\n <span style={{ color: COLOR.bracket }}>\n {open_b}{close_b}\n </span>\n );\n }\n\n return (\n <span>\n <button\n onClick={() => setOpen((o) => !o)}\n style={{\n background: \"none\",\n border: \"none\",\n color: COLOR.toggle,\n cursor: \"pointer\",\n padding: 0,\n fontSize: \"0.72rem\",\n fontFamily: \"inherit\",\n }}\n >\n {open ? \"▾\" : \"▸\"}\n </button>\n <span style={{ color: COLOR.bracket }}>{open_b}</span>\n {!open && (\n <span style={{ color: COLOR.bracket, opacity: 0.6 }}>\n {count} {isArray ? \"item\" : \"key\"}{count > 1 ? \"s\" : \"\"}\n </span>\n )}\n <span style={{ color: COLOR.bracket }}>{!open ? close_b : \"\"}</span>\n\n {open && (\n <span>\n {entries.map(([k, v]) => (\n <div\n key={k}\n style={{ paddingLeft: \"1rem\" }}\n >\n {!isArray && (\n <span style={{ color: COLOR.key }}>\"{k}\"</span>\n )}\n {!isArray && <span style={{ color: COLOR.bracket }}>: </span>}\n <JsonView data={v} depth={depth + 1} />\n <span style={{ color: COLOR.bracket }}>,</span>\n </div>\n ))}\n <span style={{ color: COLOR.bracket }}>{close_b}</span>\n </span>\n )}\n </span>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { JsonView } from \"./JsonView\";\nimport { TEXT_DIM, TEXT_BRIGHT, ACCENT, BORDER } from \"../styles\";\n\ninterface DataInspectorProps {\n data: Record<string, Record<string, unknown>>;\n currentStepId: string | null;\n}\n\nexport function DataInspector({ data, currentStepId }: DataInspectorProps) {\n const entries = Object.entries(data);\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({});\n\n if (entries.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune donnée</div>;\n }\n\n return (\n <div>\n {entries.map(([stepId, stepData]) => {\n const isCurrent = stepId === currentStepId;\n const isCollapsed = collapsed[stepId] ?? !isCurrent;\n const fieldCount = Object.keys(stepData).length;\n\n return (\n <div key={stepId} style={{ marginBottom: \"0.4rem\" }}>\n <button\n onClick={() => setCollapsed((p) => ({ ...p, [stepId]: !isCollapsed }))}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.4rem\",\n width: \"100%\",\n background: isCurrent ? \"rgba(99,102,241,0.12)\" : \"rgba(255,255,255,0.03)\",\n border: `1px solid ${isCurrent ? ACCENT : BORDER}`,\n borderRadius: \"0.25rem\",\n color: isCurrent ? TEXT_BRIGHT : TEXT_DIM,\n cursor: \"pointer\",\n padding: \"0.3rem 0.5rem\",\n fontSize: \"0.72rem\",\n fontFamily: \"inherit\",\n textAlign: \"left\",\n }}\n >\n <span>{isCollapsed ? \"▸\" : \"▾\"}</span>\n <span style={{ fontWeight: isCurrent ? \"bold\" : \"normal\" }}>{stepId}</span>\n <span style={{ color: TEXT_DIM, marginLeft: \"auto\" }}>\n {fieldCount} champ{fieldCount > 1 ? \"s\" : \"\"}\n </span>\n {isCurrent && (\n <span style={{\n background: ACCENT,\n color: \"#fff\",\n borderRadius: \"0.2rem\",\n padding: \"0 0.3rem\",\n fontSize: \"0.6rem\",\n }}>\n actuel\n </span>\n )}\n </button>\n\n {!isCollapsed && (\n <div style={{ paddingLeft: \"0.75rem\", paddingTop: \"0.25rem\" }}>\n <JsonView data={stepData} depth={0} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport { JsonView } from \"./JsonView\";\nimport { badge, TEXT_DIM, BORDER } from \"../styles\";\n\ninterface ExternalVarsViewProps {\n schema: WaypointSchema;\n externalVars: Record<string, unknown>;\n missingVars: string[];\n}\n\nexport function ExternalVarsView({ schema, externalVars, missingVars }: ExternalVarsViewProps) {\n const vars = schema.externalVariables ?? [];\n\n if (vars.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune variable externe déclarée</div>;\n }\n\n return (\n <div>\n {vars.map((v) => {\n const value = externalVars[v.id];\n const isMissing = missingVars.includes(v.id);\n const hasValue = value !== undefined;\n\n return (\n <div\n key={v.id}\n style={{\n padding: \"0.4rem 0\",\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: \"0.2rem\", marginBottom: \"0.2rem\" }}>\n <span style={{ fontWeight: \"bold\" }}>{v.id}</span>\n {v.label && v.label !== v.id && (\n <span style={{ color: TEXT_DIM }}>— {v.label}</span>\n )}\n {v.blocking && <span style={badge(\"#f97316\")}>blocking</span>}\n {isMissing && <span style={badge(\"#ef4444\")}>missing</span>}\n {!hasValue && !isMissing && <span style={badge(\"#64748b\")}>undefined</span>}\n </div>\n {hasValue && (\n <div style={{ paddingLeft: \"0.5rem\" }}>\n <JsonView data={value} depth={0} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport { TEXT_DIM, TEXT_BRIGHT, ACCENT } from \"../styles\";\n\ninterface HistoryViewProps {\n history: string[];\n currentStepId: string | null;\n}\n\nexport function HistoryView({ history, currentStepId }: HistoryViewProps) {\n if (history.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune navigation</div>;\n }\n\n return (\n <ol style={{ listStyle: \"none\", margin: 0, padding: 0 }}>\n {history.map((stepId, i) => {\n const isCurrent = stepId === currentStepId;\n return (\n <li\n key={`${stepId}-${i}`}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n padding: \"0.2rem 0\",\n color: isCurrent ? TEXT_BRIGHT : TEXT_DIM,\n fontWeight: isCurrent ? \"bold\" : \"normal\",\n }}\n >\n <span style={{ color: ACCENT, minWidth: \"1.2rem\", fontSize: \"0.65rem\" }}>\n {i + 1}.\n </span>\n <span>{stepId}</span>\n {isCurrent && (\n <span style={{\n fontSize: \"0.6rem\",\n background: ACCENT,\n color: \"#fff\",\n borderRadius: \"0.2rem\",\n padding: \"0 0.3rem\",\n }}>\n ici\n </span>\n )}\n </li>\n );\n })}\n </ol>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect, useMemo } from \"react\";\nimport { useStore } from \"zustand\";\nimport { useWaypointRuntimeContext } from \"@waypointjs/next\";\nimport {\n getResolvedTree,\n calculateProgressFromState,\n getMissingBlockingVars,\n} from \"@waypointjs/core\";\nimport type { WaypointRuntimeStore } from \"@waypointjs/core\";\n\nimport { StepTree } from \"./components/StepTree\";\nimport { DataInspector } from \"./components/DataInspector\";\nimport { ExternalVarsView } from \"./components/ExternalVarsView\";\nimport { HistoryView } from \"./components/HistoryView\";\nimport { JsonView } from \"./components/JsonView\";\nimport {\n panelContainer,\n panelHeader,\n sectionHeader,\n sectionBody,\n toggleBtn,\n TEXT_DIM,\n TEXT_BRIGHT,\n} from \"./styles\";\n\nexport interface DevPanelProps {\n position?: \"bottom-right\" | \"bottom-left\";\n defaultOpen?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Collapsible section\n// ---------------------------------------------------------------------------\n\nfunction Section({\n id,\n label,\n collapsed,\n onToggle,\n children,\n}: {\n id: string;\n label: string;\n collapsed: boolean;\n onToggle: (id: string) => void;\n children: React.ReactNode;\n}) {\n return (\n <div>\n <div style={sectionHeader} onClick={() => onToggle(id)}>\n <span>{label}</span>\n <span style={{ fontSize: \"0.65rem\" }}>{collapsed ? \"▸\" : \"▾\"}</span>\n </div>\n {!collapsed && <div style={sectionBody}>{children}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DevPanel\n// ---------------------------------------------------------------------------\n\nexport function DevPanel({ position = \"bottom-right\", defaultOpen = false }: DevPanelProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const [isMounted, setIsMounted] = useState(false);\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({\n nav: false,\n data: false,\n vars: true,\n history: true,\n raw: true,\n });\n\n // SSR safety — don't render until client-side hydration is complete\n useEffect(() => setIsMounted(true), []);\n\n const { store } = useWaypointRuntimeContext();\n\n const schema = useStore(store, (s: WaypointRuntimeStore) => s.schema);\n const data = useStore(store, (s: WaypointRuntimeStore) => s.data);\n const externalVars = useStore(store, (s: WaypointRuntimeStore) => s.externalVars);\n const currentStepId = useStore(store, (s: WaypointRuntimeStore) => s.currentStepId);\n const history = useStore(store, (s: WaypointRuntimeStore) => s.history);\n const isSubmitting = useStore(store, (s: WaypointRuntimeStore) => s.isSubmitting);\n const completed = useStore(store, (s: WaypointRuntimeStore) => s.completed);\n\n const fullState = useStore(store, (s: WaypointRuntimeStore) => s);\n const tree = useMemo(() => getResolvedTree(fullState), [fullState]);\n const progress = useMemo(() => calculateProgressFromState(fullState), [fullState]);\n const missingVars = useMemo(() => getMissingBlockingVars(fullState), [fullState]);\n\n if (!isMounted || !schema) return null;\n\n const side = position === \"bottom-left\" ? \"left\" : \"right\";\n\n function toggleSection(id: string) {\n setCollapsed((p) => ({ ...p, [id]: !p[id] }));\n }\n\n return (\n <>\n {/* Toggle button */}\n <button\n style={{\n ...toggleBtn,\n [side]: \"1.25rem\",\n right: side === \"right\" ? \"1.25rem\" : undefined,\n left: side === \"left\" ? \"1.25rem\" : undefined,\n }}\n onClick={() => setIsOpen((o) => !o)}\n title=\"Waypoint DevTools\"\n >\n ◈ waypoint\n {isSubmitting && (\n <span style={{ opacity: 0.7 }}>…</span>\n )}\n {missingVars.length > 0 && (\n <span style={{ background: \"#ef4444\", borderRadius: \"50%\", width: \"0.85rem\", height: \"0.85rem\", display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: \"0.55rem\" }}>\n !\n </span>\n )}\n </button>\n\n {/* Panel */}\n <div style={panelContainer(isOpen, side)}>\n {/* Header */}\n <div style={panelHeader}>\n <div>\n <div style={{ color: TEXT_BRIGHT, fontWeight: \"bold\", fontSize: \"0.8rem\" }}>\n ◈ Waypoint DevTools\n </div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>\n {completed ? \"✓ completed\" : isSubmitting ? \"⟳ submitting…\" : \"running\"}\n </div>\n </div>\n <button\n onClick={() => setIsOpen(false)}\n style={{ background: \"none\", border: \"none\", color: TEXT_DIM, cursor: \"pointer\", fontSize: \"1rem\", lineHeight: 1 }}\n >\n ×\n </button>\n </div>\n\n {/* Sections */}\n <Section id=\"nav\" label=\"Navigation\" collapsed={collapsed.nav ?? false} onToggle={toggleSection}>\n <StepTree\n schema={schema}\n tree={tree}\n currentStepId={currentStepId}\n progress={progress}\n completed={completed}\n />\n </Section>\n\n <Section id=\"data\" label=\"Données\" collapsed={collapsed.data ?? false} onToggle={toggleSection}>\n <DataInspector data={data} currentStepId={currentStepId} />\n </Section>\n\n <Section id=\"vars\" label=\"Variables externes\" collapsed={collapsed.vars ?? true} onToggle={toggleSection}>\n <ExternalVarsView\n schema={schema}\n externalVars={externalVars}\n missingVars={missingVars}\n />\n </Section>\n\n <Section id=\"history\" label=\"Historique\" collapsed={collapsed.history ?? true} onToggle={toggleSection}>\n <HistoryView history={history} currentStepId={currentStepId} />\n </Section>\n\n <Section id=\"raw\" label=\"État brut\" collapsed={collapsed.raw ?? true} onToggle={toggleSection}>\n <div style={{ fontSize: \"0.68rem\" }}>\n <JsonView\n data={{\n schema: schema.id,\n currentStepId,\n progress,\n completed,\n isSubmitting,\n data,\n externalVars,\n history,\n }}\n depth={0}\n />\n </div>\n </Section>\n </div>\n </>\n );\n}\n","\"use client\";\n\nimport { DevPanel } from \"./DevPanel\";\nimport type { DevPanelProps } from \"./DevPanel\";\n\nexport type WaypointDevtoolsProps = DevPanelProps;\n\n/**\n * Drop-in debug panel for Waypoint Runtime.\n *\n * - **Dev-only** : renders nothing in production (NODE_ENV !== \"development\").\n * - Must be placed **inside** a `<WaypointRunner>` to access the runtime context.\n *\n * @example\n * <WaypointRunner schema={mySchema} onComplete={...}>\n * {children}\n * <WaypointDevtools />\n * </WaypointRunner>\n */\nexport function WaypointDevtools(props: WaypointDevtoolsProps) {\n if (process.env.NODE_ENV !== \"development\") {\n return null;\n }\n return <DevPanel {...props} />;\n}\n"]}
1
+ {"version":3,"sources":["../src/styles.ts","../src/components/StepTree.tsx","../src/components/JsonView.tsx","../src/components/DataInspector.tsx","../src/components/ExternalVarsView.tsx","../src/components/HistoryView.tsx","../src/DevPanel.tsx","../src/WaypointDevtools.tsx"],"names":["jsxs","jsx","useState","useEffect","useContext","WaypointRuntimeContext","useStore","useMemo","getResolvedTree","calculateProgressFromState","getMissingBlockingVars","Fragment"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport const PANEL_WIDTH = 340;\nexport const Z_INDEX = 999999;\nexport const ACCENT = \"#6366f1\";\nexport const BG = \"rgba(13, 13, 18, 0.97)\";\nexport const BORDER = \"rgba(255,255,255,0.08)\";\nexport const TEXT_DIM = \"#64748b\";\nexport const TEXT_BASE = \"#cbd5e1\";\nexport const TEXT_BRIGHT = \"#f1f5f9\";\n\nexport function panelContainer(isOpen: boolean, side: \"left\" | \"right\"): CSSProperties {\n return {\n position: \"fixed\",\n top: 0,\n [side]: 0,\n bottom: 0,\n width: `${PANEL_WIDTH}px`,\n zIndex: Z_INDEX - 1,\n background: BG,\n color: TEXT_BASE,\n fontFamily: \"'ui-monospace','SFMono-Regular','Menlo',monospace\",\n fontSize: \"0.75rem\",\n lineHeight: 1.5,\n transform: isOpen\n ? \"translateX(0)\"\n : `translateX(${side === \"right\" ? PANEL_WIDTH : -PANEL_WIDTH}px)`,\n transition: \"transform 220ms ease-in-out\",\n overflowY: \"auto\",\n boxShadow: side === \"right\"\n ? \"-4px 0 24px rgba(0,0,0,0.6)\"\n : \"4px 0 24px rgba(0,0,0,0.6)\",\n display: \"flex\",\n flexDirection: \"column\",\n borderLeft: side === \"right\" ? `1px solid ${BORDER}` : undefined,\n borderRight: side === \"left\" ? `1px solid ${BORDER}` : undefined,\n };\n}\n\nexport const toggleBtn: CSSProperties = {\n position: \"fixed\",\n bottom: \"1.25rem\",\n right: \"1.25rem\",\n zIndex: Z_INDEX,\n background: ACCENT,\n color: \"#fff\",\n border: \"none\",\n borderRadius: \"2rem\",\n padding: \"0.375rem 0.875rem\",\n fontSize: \"0.72rem\",\n fontFamily: \"'ui-monospace','SFMono-Regular','Menlo',monospace\",\n cursor: \"pointer\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.5)\",\n userSelect: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.375rem\",\n};\n\nexport const panelHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0.75rem 1rem\",\n borderBottom: `1px solid ${BORDER}`,\n background: \"rgba(99,102,241,0.12)\",\n flexShrink: 0,\n};\n\nexport const sectionHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0.4rem 1rem\",\n background: \"rgba(255,255,255,0.03)\",\n cursor: \"pointer\",\n borderBottom: `1px solid ${BORDER}`,\n fontWeight: \"bold\",\n fontSize: \"0.68rem\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.08em\",\n color: TEXT_DIM,\n userSelect: \"none\",\n};\n\nexport const sectionBody: CSSProperties = {\n padding: \"0.5rem 1rem\",\n borderBottom: `1px solid ${BORDER}`,\n};\n\nexport function badge(color: string): CSSProperties {\n return {\n display: \"inline-block\",\n background: color,\n color: \"#fff\",\n borderRadius: \"0.25rem\",\n padding: \"0.05rem 0.35rem\",\n fontSize: \"0.62rem\",\n fontWeight: \"bold\",\n marginLeft: \"0.3rem\",\n verticalAlign: \"middle\",\n };\n}\n\nexport const progressTrack: CSSProperties = {\n height: \"4px\",\n background: \"rgba(255,255,255,0.08)\",\n borderRadius: \"2px\",\n overflow: \"hidden\",\n margin: \"0.5rem 0\",\n};\n\nexport function progressBar(pct: number): CSSProperties {\n return {\n height: \"100%\",\n width: `${pct}%`,\n background: ACCENT,\n borderRadius: \"2px\",\n transition: \"width 300ms ease\",\n };\n}\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport type { ResolvedTree } from \"@waypointjs/core\";\nimport { badge, progressBar, progressTrack, TEXT_DIM, TEXT_BRIGHT, ACCENT } from \"../styles\";\n\ninterface StepTreeProps {\n schema: WaypointSchema;\n tree: ResolvedTree;\n currentStepId: string | null;\n progress: number;\n completed: boolean;\n}\n\nexport function StepTree({ schema, tree, currentStepId, progress, completed }: StepTreeProps) {\n const currentIdx = tree.steps.findIndex((s) => s.definition.id === currentStepId);\n\n return (\n <div>\n {/* Schema info */}\n <div style={{ marginBottom: \"0.75rem\" }}>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>schema</div>\n <div style={{ color: TEXT_BRIGHT, fontWeight: \"bold\" }}>{schema.name}</div>\n <div style={{ color: TEXT_DIM }}>{schema.id} · v{schema.version}</div>\n </div>\n\n {/* Progress */}\n <div style={{ marginBottom: \"0.75rem\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", color: TEXT_DIM, fontSize: \"0.65rem\" }}>\n <span>progression</span>\n <span>{completed ? \"✓ terminé\" : `${progress}%`}</span>\n </div>\n <div style={progressTrack}>\n <div style={progressBar(completed ? 100 : progress)} />\n </div>\n </div>\n\n {/* Visible steps */}\n <div style={{ marginBottom: \"0.5rem\" }}>\n {tree.steps.map((step, i) => {\n const isCurrent = step.definition.id === currentStepId;\n const isDone = completed || i < currentIdx;\n return (\n <div\n key={step.definition.id}\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.5rem\",\n padding: \"0.3rem 0\",\n borderLeft: isCurrent ? `2px solid ${ACCENT}` : \"2px solid transparent\",\n paddingLeft: \"0.5rem\",\n marginLeft: \"-0.5rem\",\n opacity: (!isDone && !isCurrent) ? 0.45 : 1,\n }}\n >\n <div style={{\n width: \"1.1rem\",\n height: \"1.1rem\",\n borderRadius: \"50%\",\n background: isDone ? \"#22c55e\" : isCurrent ? ACCENT : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"0.6rem\",\n flexShrink: 0,\n marginTop: \"0.1rem\",\n }}>\n {isDone ? \"✓\" : i + 1}\n </div>\n <div>\n <div style={{ color: isCurrent ? TEXT_BRIGHT : TEXT_DIM, fontWeight: isCurrent ? \"bold\" : \"normal\" }}>\n {step.definition.title}\n </div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>{step.definition.url}</div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Hidden steps */}\n {tree.hiddenSteps.length > 0 && (\n <div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\", marginBottom: \"0.25rem\" }}>\n steps cachées ({tree.hiddenSteps.length})\n </div>\n {tree.hiddenSteps.map((step) => (\n <div key={step.definition.id} style={{ display: \"flex\", alignItems: \"center\", gap: \"0.4rem\", padding: \"0.15rem 0\", opacity: 0.5 }}>\n <span style={{ fontSize: \"0.65rem\" }}>⊘</span>\n <span style={{ color: TEXT_DIM }}>{step.definition.title}</span>\n <span style={badge(\"#94a3b8\")}>hidden</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\n\ninterface JsonViewProps {\n data: unknown;\n depth?: number;\n}\n\nconst COLOR = {\n string: \"#86efac\", // green-300\n number: \"#93c5fd\", // blue-300\n boolean: \"#fdba74\", // orange-300\n null: \"#f87171\", // red-400\n key: \"#c4b5fd\", // violet-300\n bracket: \"#94a3b8\", // slate-400\n toggle: \"#6366f1\", // indigo-500\n};\n\nfunction Primitive({ value }: { value: string | number | boolean | null }) {\n if (value === null) return <span style={{ color: COLOR.null }}>null</span>;\n if (typeof value === \"boolean\")\n return <span style={{ color: COLOR.boolean }}>{String(value)}</span>;\n if (typeof value === \"number\")\n return <span style={{ color: COLOR.number }}>{value}</span>;\n return <span style={{ color: COLOR.string }}>\"{value}\"</span>;\n}\n\nexport function JsonView({ data, depth = 0 }: JsonViewProps) {\n const [open, setOpen] = useState(depth === 0);\n\n if (data === null || typeof data !== \"object\") {\n return <Primitive value={data as string | number | boolean | null} />;\n }\n\n const isArray = Array.isArray(data);\n const entries = isArray\n ? (data as unknown[]).map((v, i) => [String(i), v] as [string, unknown])\n : Object.entries(data as Record<string, unknown>);\n\n const count = entries.length;\n const open_b = isArray ? \"[\" : \"{\";\n const close_b = isArray ? \"]\" : \"}\";\n\n if (count === 0) {\n return (\n <span style={{ color: COLOR.bracket }}>\n {open_b}{close_b}\n </span>\n );\n }\n\n return (\n <span>\n <button\n onClick={() => setOpen((o) => !o)}\n style={{\n background: \"none\",\n border: \"none\",\n color: COLOR.toggle,\n cursor: \"pointer\",\n padding: 0,\n fontSize: \"0.72rem\",\n fontFamily: \"inherit\",\n }}\n >\n {open ? \"▾\" : \"▸\"}\n </button>\n <span style={{ color: COLOR.bracket }}>{open_b}</span>\n {!open && (\n <span style={{ color: COLOR.bracket, opacity: 0.6 }}>\n {count} {isArray ? \"item\" : \"key\"}{count > 1 ? \"s\" : \"\"}\n </span>\n )}\n <span style={{ color: COLOR.bracket }}>{!open ? close_b : \"\"}</span>\n\n {open && (\n <span>\n {entries.map(([k, v]) => (\n <div\n key={k}\n style={{ paddingLeft: \"1rem\" }}\n >\n {!isArray && (\n <span style={{ color: COLOR.key }}>\"{k}\"</span>\n )}\n {!isArray && <span style={{ color: COLOR.bracket }}>: </span>}\n <JsonView data={v} depth={depth + 1} />\n <span style={{ color: COLOR.bracket }}>,</span>\n </div>\n ))}\n <span style={{ color: COLOR.bracket }}>{close_b}</span>\n </span>\n )}\n </span>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { JsonView } from \"./JsonView\";\nimport { TEXT_DIM, TEXT_BRIGHT, ACCENT, BORDER } from \"../styles\";\n\ninterface DataInspectorProps {\n data: Record<string, Record<string, unknown>>;\n currentStepId: string | null;\n}\n\nexport function DataInspector({ data, currentStepId }: DataInspectorProps) {\n const entries = Object.entries(data);\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({});\n\n if (entries.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune donnée</div>;\n }\n\n return (\n <div>\n {entries.map(([stepId, stepData]) => {\n const isCurrent = stepId === currentStepId;\n const isCollapsed = collapsed[stepId] ?? !isCurrent;\n const fieldCount = Object.keys(stepData).length;\n\n return (\n <div key={stepId} style={{ marginBottom: \"0.4rem\" }}>\n <button\n onClick={() => setCollapsed((p) => ({ ...p, [stepId]: !isCollapsed }))}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.4rem\",\n width: \"100%\",\n background: isCurrent ? \"rgba(99,102,241,0.12)\" : \"rgba(255,255,255,0.03)\",\n border: `1px solid ${isCurrent ? ACCENT : BORDER}`,\n borderRadius: \"0.25rem\",\n color: isCurrent ? TEXT_BRIGHT : TEXT_DIM,\n cursor: \"pointer\",\n padding: \"0.3rem 0.5rem\",\n fontSize: \"0.72rem\",\n fontFamily: \"inherit\",\n textAlign: \"left\",\n }}\n >\n <span>{isCollapsed ? \"▸\" : \"▾\"}</span>\n <span style={{ fontWeight: isCurrent ? \"bold\" : \"normal\" }}>{stepId}</span>\n <span style={{ color: TEXT_DIM, marginLeft: \"auto\" }}>\n {fieldCount} champ{fieldCount > 1 ? \"s\" : \"\"}\n </span>\n {isCurrent && (\n <span style={{\n background: ACCENT,\n color: \"#fff\",\n borderRadius: \"0.2rem\",\n padding: \"0 0.3rem\",\n fontSize: \"0.6rem\",\n }}>\n actuel\n </span>\n )}\n </button>\n\n {!isCollapsed && (\n <div style={{ paddingLeft: \"0.75rem\", paddingTop: \"0.25rem\" }}>\n <JsonView data={stepData} depth={0} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport { JsonView } from \"./JsonView\";\nimport { badge, TEXT_DIM, BORDER } from \"../styles\";\n\ninterface ExternalVarsViewProps {\n schema: WaypointSchema;\n externalVars: Record<string, unknown>;\n missingVars: string[];\n}\n\nexport function ExternalVarsView({ schema, externalVars, missingVars }: ExternalVarsViewProps) {\n const vars = schema.externalVariables ?? [];\n\n if (vars.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune variable externe déclarée</div>;\n }\n\n return (\n <div>\n {vars.map((v) => {\n const value = externalVars[v.id];\n const isMissing = missingVars.includes(v.id);\n const hasValue = value !== undefined;\n\n return (\n <div\n key={v.id}\n style={{\n padding: \"0.4rem 0\",\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: \"0.2rem\", marginBottom: \"0.2rem\" }}>\n <span style={{ fontWeight: \"bold\" }}>{v.id}</span>\n {v.label && v.label !== v.id && (\n <span style={{ color: TEXT_DIM }}>— {v.label}</span>\n )}\n {v.blocking && <span style={badge(\"#f97316\")}>blocking</span>}\n {isMissing && <span style={badge(\"#ef4444\")}>missing</span>}\n {!hasValue && !isMissing && <span style={badge(\"#64748b\")}>undefined</span>}\n </div>\n {hasValue && (\n <div style={{ paddingLeft: \"0.5rem\" }}>\n <JsonView data={value} depth={0} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport { TEXT_DIM, TEXT_BRIGHT, ACCENT } from \"../styles\";\n\ninterface HistoryViewProps {\n history: string[];\n currentStepId: string | null;\n}\n\nexport function HistoryView({ history, currentStepId }: HistoryViewProps) {\n if (history.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune navigation</div>;\n }\n\n return (\n <ol style={{ listStyle: \"none\", margin: 0, padding: 0 }}>\n {history.map((stepId, i) => {\n const isCurrent = stepId === currentStepId;\n return (\n <li\n key={`${stepId}-${i}`}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n padding: \"0.2rem 0\",\n color: isCurrent ? TEXT_BRIGHT : TEXT_DIM,\n fontWeight: isCurrent ? \"bold\" : \"normal\",\n }}\n >\n <span style={{ color: ACCENT, minWidth: \"1.2rem\", fontSize: \"0.65rem\" }}>\n {i + 1}.\n </span>\n <span>{stepId}</span>\n {isCurrent && (\n <span style={{\n fontSize: \"0.6rem\",\n background: ACCENT,\n color: \"#fff\",\n borderRadius: \"0.2rem\",\n padding: \"0 0.3rem\",\n }}>\n ici\n </span>\n )}\n </li>\n );\n })}\n </ol>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect, useMemo, useContext } from \"react\";\nimport { useStore } from \"zustand\";\nimport { WaypointRuntimeContext } from \"@waypointjs/next\";\nimport {\n getResolvedTree,\n calculateProgressFromState,\n getMissingBlockingVars,\n} from \"@waypointjs/core\";\nimport type { WaypointRuntimeStore } from \"@waypointjs/core\";\n\nimport { StepTree } from \"./components/StepTree\";\nimport { DataInspector } from \"./components/DataInspector\";\nimport { ExternalVarsView } from \"./components/ExternalVarsView\";\nimport { HistoryView } from \"./components/HistoryView\";\nimport { JsonView } from \"./components/JsonView\";\nimport {\n panelContainer,\n panelHeader,\n sectionHeader,\n sectionBody,\n toggleBtn,\n TEXT_DIM,\n TEXT_BRIGHT,\n} from \"./styles\";\n\nexport interface DevPanelProps {\n position?: \"bottom-right\" | \"bottom-left\";\n defaultOpen?: boolean;\n /** Pass a store directly instead of reading from WaypointRuntimeContext */\n store?: import(\"zustand\").StoreApi<WaypointRuntimeStore>;\n}\n\n// ---------------------------------------------------------------------------\n// Collapsible section\n// ---------------------------------------------------------------------------\n\nfunction Section({\n id,\n label,\n collapsed,\n onToggle,\n children,\n}: {\n id: string;\n label: string;\n collapsed: boolean;\n onToggle: (id: string) => void;\n children: React.ReactNode;\n}) {\n return (\n <div>\n <div style={sectionHeader} onClick={() => onToggle(id)}>\n <span>{label}</span>\n <span style={{ fontSize: \"0.65rem\" }}>{collapsed ? \"▸\" : \"▾\"}</span>\n </div>\n {!collapsed && <div style={sectionBody}>{children}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DevPanel\n// ---------------------------------------------------------------------------\n\nexport function DevPanel({ position = \"bottom-right\", defaultOpen = false, store: storeProp }: DevPanelProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const [isMounted, setIsMounted] = useState(false);\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({\n nav: false,\n data: false,\n vars: true,\n history: true,\n raw: true,\n });\n\n // SSR safety — don't render until client-side hydration is complete\n useEffect(() => setIsMounted(true), []);\n\n const ctx = useContext(WaypointRuntimeContext);\n const store = storeProp ?? ctx?.store;\n\n const schema = useStore(store!, (s: WaypointRuntimeStore) => s.schema);\n const data = useStore(store!, (s: WaypointRuntimeStore) => s.data);\n const externalVars = useStore(store!, (s: WaypointRuntimeStore) => s.externalVars);\n const currentStepId = useStore(store!, (s: WaypointRuntimeStore) => s.currentStepId);\n const history = useStore(store!, (s: WaypointRuntimeStore) => s.history);\n const isSubmitting = useStore(store!, (s: WaypointRuntimeStore) => s.isSubmitting);\n const completed = useStore(store!, (s: WaypointRuntimeStore) => s.completed);\n\n const fullState = useStore(store!, (s: WaypointRuntimeStore) => s);\n const tree = useMemo(() => getResolvedTree(fullState), [fullState]);\n const progress = useMemo(() => calculateProgressFromState(fullState), [fullState]);\n const missingVars = useMemo(() => getMissingBlockingVars(fullState), [fullState]);\n\n if (!isMounted || !store || !schema) return null;\n\n const side = position === \"bottom-left\" ? \"left\" : \"right\";\n\n function toggleSection(id: string) {\n setCollapsed((p) => ({ ...p, [id]: !p[id] }));\n }\n\n return (\n <>\n {/* Toggle button */}\n <button\n style={{\n ...toggleBtn,\n [side]: \"1.25rem\",\n right: side === \"right\" ? \"1.25rem\" : undefined,\n left: side === \"left\" ? \"1.25rem\" : undefined,\n }}\n onClick={() => setIsOpen((o) => !o)}\n title=\"Waypoint DevTools\"\n >\n ◈ waypoint\n {isSubmitting && (\n <span style={{ opacity: 0.7 }}>…</span>\n )}\n {missingVars.length > 0 && (\n <span style={{ background: \"#ef4444\", borderRadius: \"50%\", width: \"0.9rem\", height: \"0.9rem\", display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: \"0.65rem\", fontWeight: 700 }}>\n !\n </span>\n )}\n </button>\n\n {/* Panel */}\n <div style={panelContainer(isOpen, side)}>\n {/* Header */}\n <div style={panelHeader}>\n <div>\n <div style={{ color: TEXT_BRIGHT, fontWeight: \"bold\", fontSize: \"0.8rem\" }}>\n ◈ Waypoint DevTools\n </div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>\n {completed ? \"✓ completed\" : isSubmitting ? \"⟳ submitting…\" : \"running\"}\n </div>\n </div>\n <button\n onClick={() => setIsOpen(false)}\n style={{ background: \"none\", border: \"none\", color: TEXT_DIM, cursor: \"pointer\", fontSize: \"1rem\", lineHeight: 1 }}\n >\n ×\n </button>\n </div>\n\n {/* Sections */}\n <Section id=\"nav\" label=\"Navigation\" collapsed={collapsed.nav ?? false} onToggle={toggleSection}>\n <StepTree\n schema={schema}\n tree={tree}\n currentStepId={currentStepId}\n progress={progress}\n completed={completed}\n />\n </Section>\n\n <Section id=\"data\" label=\"Données\" collapsed={collapsed.data ?? false} onToggle={toggleSection}>\n <DataInspector data={data} currentStepId={currentStepId} />\n </Section>\n\n <Section id=\"vars\" label=\"Variables externes\" collapsed={collapsed.vars ?? true} onToggle={toggleSection}>\n <ExternalVarsView\n schema={schema}\n externalVars={externalVars}\n missingVars={missingVars}\n />\n </Section>\n\n <Section id=\"history\" label=\"Historique\" collapsed={collapsed.history ?? true} onToggle={toggleSection}>\n <HistoryView history={history} currentStepId={currentStepId} />\n </Section>\n\n <Section id=\"raw\" label=\"État brut\" collapsed={collapsed.raw ?? true} onToggle={toggleSection}>\n <div style={{ fontSize: \"0.68rem\" }}>\n <JsonView\n data={{\n schema: schema.id,\n currentStepId,\n progress,\n completed,\n isSubmitting,\n data,\n externalVars,\n history,\n }}\n depth={0}\n />\n </div>\n </Section>\n </div>\n </>\n );\n}\n","\"use client\";\n\nimport { DevPanel } from \"./DevPanel\";\nimport type { DevPanelProps } from \"./DevPanel\";\n\nexport type WaypointDevtoolsProps = DevPanelProps & {\n /** Force display even in production. Useful for demo/staging environments. */\n forceShow?: boolean;\n};\n\n/**\n * Drop-in debug panel for Waypoint Runtime.\n *\n * - **Dev-only** by default: renders nothing in production (NODE_ENV !== \"development\").\n * - Use `forceShow` to display in production (e.g. demo environments).\n * - Must be placed **inside** a `<WaypointRunner>` to access the runtime context.\n *\n * @example\n * <WaypointRunner schema={mySchema} onComplete={...}>\n * {children}\n * <WaypointDevtools /> // dev only\n * <WaypointDevtools forceShow /> // always visible\n * </WaypointRunner>\n */\nexport function WaypointDevtools({ forceShow, ...props }: WaypointDevtoolsProps) {\n if (process.env.NODE_ENV !== \"development\" && !forceShow) {\n return null;\n }\n return <DevPanel {...props} />;\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -1,23 +1,33 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as zustand from 'zustand';
3
+ import { WaypointRuntimeStore } from '@waypointjs/core';
2
4
 
3
5
  interface DevPanelProps {
4
6
  position?: "bottom-right" | "bottom-left";
5
7
  defaultOpen?: boolean;
8
+ /** Pass a store directly instead of reading from WaypointRuntimeContext */
9
+ store?: zustand.StoreApi<WaypointRuntimeStore>;
6
10
  }
11
+ declare function DevPanel({ position, defaultOpen, store: storeProp }: DevPanelProps): react_jsx_runtime.JSX.Element | null;
7
12
 
8
- type WaypointDevtoolsProps = DevPanelProps;
13
+ type WaypointDevtoolsProps = DevPanelProps & {
14
+ /** Force display even in production. Useful for demo/staging environments. */
15
+ forceShow?: boolean;
16
+ };
9
17
  /**
10
18
  * Drop-in debug panel for Waypoint Runtime.
11
19
  *
12
- * - **Dev-only** : renders nothing in production (NODE_ENV !== "development").
20
+ * - **Dev-only** by default: renders nothing in production (NODE_ENV !== "development").
21
+ * - Use `forceShow` to display in production (e.g. demo environments).
13
22
  * - Must be placed **inside** a `<WaypointRunner>` to access the runtime context.
14
23
  *
15
24
  * @example
16
25
  * <WaypointRunner schema={mySchema} onComplete={...}>
17
26
  * {children}
18
- * <WaypointDevtools />
27
+ * <WaypointDevtools /> // dev only
28
+ * <WaypointDevtools forceShow /> // always visible
19
29
  * </WaypointRunner>
20
30
  */
21
- declare function WaypointDevtools(props: WaypointDevtoolsProps): react_jsx_runtime.JSX.Element | null;
31
+ declare function WaypointDevtools({ forceShow, ...props }: WaypointDevtoolsProps): react_jsx_runtime.JSX.Element | null;
22
32
 
23
- export { WaypointDevtools, type WaypointDevtoolsProps };
33
+ export { DevPanel, type DevPanelProps, WaypointDevtools, type WaypointDevtoolsProps };
package/dist/index.d.ts CHANGED
@@ -1,23 +1,33 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as zustand from 'zustand';
3
+ import { WaypointRuntimeStore } from '@waypointjs/core';
2
4
 
3
5
  interface DevPanelProps {
4
6
  position?: "bottom-right" | "bottom-left";
5
7
  defaultOpen?: boolean;
8
+ /** Pass a store directly instead of reading from WaypointRuntimeContext */
9
+ store?: zustand.StoreApi<WaypointRuntimeStore>;
6
10
  }
11
+ declare function DevPanel({ position, defaultOpen, store: storeProp }: DevPanelProps): react_jsx_runtime.JSX.Element | null;
7
12
 
8
- type WaypointDevtoolsProps = DevPanelProps;
13
+ type WaypointDevtoolsProps = DevPanelProps & {
14
+ /** Force display even in production. Useful for demo/staging environments. */
15
+ forceShow?: boolean;
16
+ };
9
17
  /**
10
18
  * Drop-in debug panel for Waypoint Runtime.
11
19
  *
12
- * - **Dev-only** : renders nothing in production (NODE_ENV !== "development").
20
+ * - **Dev-only** by default: renders nothing in production (NODE_ENV !== "development").
21
+ * - Use `forceShow` to display in production (e.g. demo environments).
13
22
  * - Must be placed **inside** a `<WaypointRunner>` to access the runtime context.
14
23
  *
15
24
  * @example
16
25
  * <WaypointRunner schema={mySchema} onComplete={...}>
17
26
  * {children}
18
- * <WaypointDevtools />
27
+ * <WaypointDevtools /> // dev only
28
+ * <WaypointDevtools forceShow /> // always visible
19
29
  * </WaypointRunner>
20
30
  */
21
- declare function WaypointDevtools(props: WaypointDevtoolsProps): react_jsx_runtime.JSX.Element | null;
31
+ declare function WaypointDevtools({ forceShow, ...props }: WaypointDevtoolsProps): react_jsx_runtime.JSX.Element | null;
22
32
 
23
- export { WaypointDevtools, type WaypointDevtoolsProps };
33
+ export { DevPanel, type DevPanelProps, WaypointDevtools, type WaypointDevtoolsProps };
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { useState, useEffect, useMemo } from 'react';
1
+ import { useState, useEffect, useContext, useMemo } from 'react';
2
2
  import { useStore } from 'zustand';
3
- import { useWaypointRuntimeContext } from '@waypointjs/next';
3
+ import { WaypointRuntimeContext } from '@waypointjs/next';
4
4
  import { getResolvedTree, calculateProgressFromState, getMissingBlockingVars } from '@waypointjs/core';
5
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
5
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
6
6
 
7
7
  // src/DevPanel.tsx
8
8
 
@@ -413,7 +413,7 @@ function Section({
413
413
  !collapsed && /* @__PURE__ */ jsx("div", { style: sectionBody, children })
414
414
  ] });
415
415
  }
416
- function DevPanel({ position = "bottom-right", defaultOpen = false }) {
416
+ function DevPanel({ position = "bottom-right", defaultOpen = false, store: storeProp }) {
417
417
  const [isOpen, setIsOpen] = useState(defaultOpen);
418
418
  const [isMounted, setIsMounted] = useState(false);
419
419
  const [collapsed, setCollapsed] = useState({
@@ -424,7 +424,8 @@ function DevPanel({ position = "bottom-right", defaultOpen = false }) {
424
424
  raw: true
425
425
  });
426
426
  useEffect(() => setIsMounted(true), []);
427
- const { store } = useWaypointRuntimeContext();
427
+ const ctx = useContext(WaypointRuntimeContext);
428
+ const store = storeProp ?? ctx?.store;
428
429
  const schema = useStore(store, (s) => s.schema);
429
430
  const data = useStore(store, (s) => s.data);
430
431
  const externalVars = useStore(store, (s) => s.externalVars);
@@ -436,7 +437,7 @@ function DevPanel({ position = "bottom-right", defaultOpen = false }) {
436
437
  const tree = useMemo(() => getResolvedTree(fullState), [fullState]);
437
438
  const progress = useMemo(() => calculateProgressFromState(fullState), [fullState]);
438
439
  const missingVars = useMemo(() => getMissingBlockingVars(fullState), [fullState]);
439
- if (!isMounted || !schema) return null;
440
+ if (!isMounted || !store || !schema) return null;
440
441
  const side = position === "bottom-left" ? "left" : "right";
441
442
  function toggleSection(id) {
442
443
  setCollapsed((p) => ({ ...p, [id]: !p[id] }));
@@ -456,7 +457,7 @@ function DevPanel({ position = "bottom-right", defaultOpen = false }) {
456
457
  children: [
457
458
  "\u25C8 waypoint",
458
459
  isSubmitting && /* @__PURE__ */ jsx("span", { style: { opacity: 0.7 }, children: "\u2026" }),
459
- missingVars.length > 0 && /* @__PURE__ */ jsx("span", { style: { background: "#ef4444", borderRadius: "50%", width: "0.85rem", height: "0.85rem", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "0.55rem" }, children: "!" })
460
+ missingVars.length > 0 && /* @__PURE__ */ jsx("span", { style: { background: "#ef4444", borderRadius: "50%", width: "0.9rem", height: "0.9rem", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "0.65rem", fontWeight: 700 }, children: "!" })
460
461
  ]
461
462
  }
462
463
  ),
@@ -514,13 +515,13 @@ function DevPanel({ position = "bottom-right", defaultOpen = false }) {
514
515
  ] })
515
516
  ] });
516
517
  }
517
- function WaypointDevtools(props) {
518
- if (process.env.NODE_ENV !== "development") {
518
+ function WaypointDevtools({ forceShow, ...props }) {
519
+ if (process.env.NODE_ENV !== "development" && !forceShow) {
519
520
  return null;
520
521
  }
521
522
  return /* @__PURE__ */ jsx(DevPanel, { ...props });
522
523
  }
523
524
 
524
- export { WaypointDevtools };
525
+ export { DevPanel, WaypointDevtools };
525
526
  //# sourceMappingURL=index.js.map
526
527
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/styles.ts","../src/components/StepTree.tsx","../src/components/JsonView.tsx","../src/components/DataInspector.tsx","../src/components/ExternalVarsView.tsx","../src/components/HistoryView.tsx","../src/DevPanel.tsx","../src/WaypointDevtools.tsx"],"names":["jsx","jsxs","useState"],"mappings":";;;;;;;;;AAEO,IAAM,WAAA,GAAc,GAAA;AACpB,IAAM,OAAA,GAAU,MAAA;AAChB,IAAM,MAAA,GAAS,SAAA;AACf,IAAM,EAAA,GAAK,wBAAA;AACX,IAAM,MAAA,GAAS,wBAAA;AACf,IAAM,QAAA,GAAW,SAAA;AACjB,IAAM,SAAA,GAAY,SAAA;AAClB,IAAM,WAAA,GAAc,SAAA;AAEpB,SAAS,cAAA,CAAe,QAAiB,IAAA,EAAuC;AACrF,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,OAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,CAAC,IAAI,GAAG,CAAA;AAAA,IACR,MAAA,EAAQ,CAAA;AAAA,IACR,KAAA,EAAO,GAAG,WAAW,CAAA,EAAA,CAAA;AAAA,IACrB,QAAQ,OAAA,GAAU,CAAA;AAAA,IAClB,UAAA,EAAY,EAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,UAAA,EAAY,mDAAA;AAAA,IACZ,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,SAAA,EAAW,SACP,eAAA,GACA,CAAA,WAAA,EAAc,SAAS,OAAA,GAAU,WAAA,GAAc,CAAC,WAAW,CAAA,GAAA,CAAA;AAAA,IAC/D,UAAA,EAAY,6BAAA;AAAA,IACZ,SAAA,EAAW,MAAA;AAAA,IACX,SAAA,EAAW,IAAA,KAAS,OAAA,GAChB,6BAAA,GACA,4BAAA;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,UAAA,EAAY,IAAA,KAAS,OAAA,GAAU,CAAA,UAAA,EAAa,MAAM,CAAA,CAAA,GAAK,MAAA;AAAA,IACvD,WAAA,EAAa,IAAA,KAAS,MAAA,GAAS,CAAA,UAAA,EAAa,MAAM,CAAA,CAAA,GAAK;AAAA,GACzD;AACF;AAEO,IAAM,SAAA,GAA2B;AAAA,EACtC,QAAA,EAAU,OAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,EAAQ,OAAA;AAAA,EACR,UAAA,EAAY,MAAA;AAAA,EACZ,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,YAAA,EAAc,MAAA;AAAA,EACd,OAAA,EAAS,mBAAA;AAAA,EACT,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,mDAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,SAAA,EAAW,4BAAA;AAAA,EACX,UAAA,EAAY,MAAA;AAAA,EACZ,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,GAAA,EAAK;AACP,CAAA;AAEO,IAAM,WAAA,GAA6B;AAAA,EACxC,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,cAAA,EAAgB,eAAA;AAAA,EAChB,OAAA,EAAS,cAAA;AAAA,EACT,YAAA,EAAc,aAAa,MAAM,CAAA,CAAA;AAAA,EACjC,UAAA,EAAY,uBAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAA;AAEO,IAAM,aAAA,GAA+B;AAAA,EAC1C,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,cAAA,EAAgB,eAAA;AAAA,EAChB,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,wBAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,YAAA,EAAc,aAAa,MAAM,CAAA,CAAA;AAAA,EACjC,UAAA,EAAY,MAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,aAAA,EAAe,WAAA;AAAA,EACf,aAAA,EAAe,QAAA;AAAA,EACf,KAAA,EAAO,QAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;AAEO,IAAM,WAAA,GAA6B;AAAA,EACxC,OAAA,EAAS,aAAA;AAAA,EACT,YAAA,EAAc,aAAa,MAAM,CAAA;AACnC,CAAA;AAEO,SAAS,MAAM,KAAA,EAA8B;AAClD,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,cAAA;AAAA,IACT,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,MAAA;AAAA,IACP,YAAA,EAAc,SAAA;AAAA,IACd,OAAA,EAAS,iBAAA;AAAA,IACT,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,MAAA;AAAA,IACZ,UAAA,EAAY,QAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AACF;AAEO,IAAM,aAAA,GAA+B;AAAA,EAC1C,MAAA,EAAQ,KAAA;AAAA,EACR,UAAA,EAAY,wBAAA;AAAA,EACZ,YAAA,EAAc,KAAA;AAAA,EACd,QAAA,EAAU,QAAA;AAAA,EACV,MAAA,EAAQ;AACV,CAAA;AAEO,SAAS,YAAY,GAAA,EAA4B;AACtD,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,MAAA;AAAA,IACR,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,IACb,UAAA,EAAY,MAAA;AAAA,IACZ,YAAA,EAAc,KAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AACF;AC1GO,SAAS,SAAS,EAAE,MAAA,EAAQ,MAAM,aAAA,EAAe,QAAA,EAAU,WAAU,EAAkB;AAC5F,EAAA,MAAM,UAAA,GAAa,KAAK,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,EAAA,KAAO,aAAa,CAAA;AAEhF,EAAA,4BACG,KAAA,EAAA,EAEC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAA,EAAc,WAAU,EACpC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,KAAA,EAAO,UAAU,QAAA,EAAU,SAAA,IAAa,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,sBAC5D,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,aAAa,UAAA,EAAY,MAAA,EAAO,EAAI,QAAA,EAAA,MAAA,CAAO,IAAA,EAAK,CAAA;AAAA,2BACpE,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,UAAS,EAAI,QAAA,EAAA;AAAA,QAAA,MAAA,CAAO,EAAA;AAAA,QAAG,SAAA;AAAA,QAAK,MAAA,CAAO;AAAA,OAAA,EAAQ;AAAA,KAAA,EAClE,CAAA;AAAA,yBAGC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAA,EAAc,WAAU,EACpC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAA,EAAgB,eAAA,EAAiB,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,SAAA,EAAU,EACnG,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAK,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,4BAChB,MAAA,EAAA,EAAM,QAAA,EAAA,SAAA,GAAY,mBAAA,GAAc,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA,EAAI;AAAA,OAAA,EAClD,CAAA;AAAA,sBACA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,aAAA,EACV,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,WAAA,CAAY,SAAA,GAAY,GAAA,GAAM,QAAQ,CAAA,EAAG,CAAA,EACvD;AAAA,KAAA,EACF,CAAA;AAAA,oBAGA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAA,EAAc,QAAA,EAAS,EAClC,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,KAAM;AAC3B,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,UAAA,CAAW,EAAA,KAAO,aAAA;AACzC,MAAA,MAAM,MAAA,GAAS,aAAa,CAAA,GAAI,UAAA;AAChC,MAAA,uBACE,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,YAAA;AAAA,YACZ,GAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,UAAA;AAAA,YACT,UAAA,EAAY,SAAA,GAAY,CAAA,UAAA,EAAa,MAAM,CAAA,CAAA,GAAK,uBAAA;AAAA,YAChD,WAAA,EAAa,QAAA;AAAA,YACb,UAAA,EAAY,SAAA;AAAA,YACZ,OAAA,EAAU,CAAC,MAAA,IAAU,CAAC,YAAa,IAAA,GAAO;AAAA,WAC5C;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,SAAI,KAAA,EAAO;AAAA,cACV,KAAA,EAAO,QAAA;AAAA,cACP,MAAA,EAAQ,QAAA;AAAA,cACR,YAAA,EAAc,KAAA;AAAA,cACd,UAAA,EAAY,MAAA,GAAS,SAAA,GAAY,SAAA,GAAY,MAAA,GAAS,uBAAA;AAAA,cACtD,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,QAAA,EAAU,QAAA;AAAA,cACV,UAAA,EAAY,CAAA;AAAA,cACZ,SAAA,EAAW;AAAA,aACb,EACG,QAAA,EAAA,MAAA,GAAS,QAAA,GAAM,CAAA,GAAI,CAAA,EACtB,CAAA;AAAA,iCACC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,YAAY,WAAA,GAAc,QAAA,EAAU,UAAA,EAAY,SAAA,GAAY,MAAA,GAAS,QAAA,EAAS,EAChG,QAAA,EAAA,IAAA,CAAK,WAAW,KAAA,EACnB,CAAA;AAAA,8BACA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,SAAA,EAAU,EAAI,QAAA,EAAA,IAAA,CAAK,UAAA,CAAW,GAAA,EAAI;AAAA,aAAA,EAC7E;AAAA;AAAA,SAAA;AAAA,QA/BK,KAAK,UAAA,CAAW;AAAA,OAgCvB;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IAGC,IAAA,CAAK,WAAA,CAAY,MAAA,GAAS,CAAA,yBACxB,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,KAAA,EAAO,UAAU,QAAA,EAAU,SAAA,EAAW,YAAA,EAAc,SAAA,EAAU,EAAG,QAAA,EAAA;AAAA,QAAA,oBAAA;AAAA,QAC7D,KAAK,WAAA,CAAY,MAAA;AAAA,QAAO;AAAA,OAAA,EAC1C,CAAA;AAAA,MACC,KAAK,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,qBACrB,IAAA,CAAC,SAA6B,KAAA,EAAO,EAAE,SAAS,MAAA,EAAQ,UAAA,EAAY,UAAU,GAAA,EAAK,QAAA,EAAU,SAAS,WAAA,EAAa,OAAA,EAAS,KAAI,EAC9H,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAK,KAAA,EAAO,EAAE,QAAA,EAAU,SAAA,IAAa,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,wBACvC,GAAA,CAAC,UAAK,KAAA,EAAO,EAAE,OAAO,QAAA,EAAS,EAAI,QAAA,EAAA,IAAA,CAAK,UAAA,CAAW,KAAA,EAAM,CAAA;AAAA,4BACxD,MAAA,EAAA,EAAK,KAAA,EAAO,KAAA,CAAM,SAAS,GAAG,QAAA,EAAA,QAAA,EAAM;AAAA,OAAA,EAAA,EAH7B,IAAA,CAAK,UAAA,CAAW,EAI1B,CACD;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;ACzFA,IAAM,KAAA,GAAQ;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA;AAAA,EACT,IAAA,EAAM,SAAA;AAAA;AAAA,EACN,GAAA,EAAK,SAAA;AAAA;AAAA,EACL,OAAA,EAAS,SAAA;AAAA;AAAA,EACT,MAAA,EAAQ;AAAA;AACV,CAAA;AAEA,SAAS,SAAA,CAAU,EAAE,KAAA,EAAM,EAAgD;AACzE,EAAA,IAAI,KAAA,KAAU,IAAA,EAAM,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,IAAA,EAAK,EAAG,QAAA,EAAA,MAAA,EAAI,CAAA;AACnE,EAAA,IAAI,OAAO,KAAA,KAAU,SAAA;AACnB,IAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAI,QAAA,EAAA,MAAA,CAAO,KAAK,CAAA,EAAE,CAAA;AAC/D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA;AACnB,IAAA,uBAAOA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,MAAA,EAAO,EAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AACtD,EAAA,uBAAOC,KAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,QAAO,EAAG,QAAA,EAAA;AAAA,IAAA,GAAA;AAAA,IAAE,KAAA;AAAA,IAAM;AAAA,GAAA,EAAC,CAAA;AACxD;AAEO,SAAS,QAAA,CAAS,EAAE,IAAA,EAAM,KAAA,GAAQ,GAAE,EAAkB;AAC3D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,CAAS,UAAU,CAAC,CAAA;AAE5C,EAAA,IAAI,IAAA,KAAS,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,EAAU;AAC7C,IAAA,uBAAOD,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAO,IAAA,EAA0C,CAAA;AAAA,EACrE;AAEA,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAClC,EAAA,MAAM,UAAU,OAAA,GACX,IAAA,CAAmB,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM,CAAC,MAAA,CAAO,CAAC,GAAG,CAAC,CAAsB,CAAA,GACrE,MAAA,CAAO,QAAQ,IAA+B,CAAA;AAElD,EAAA,MAAM,QAAQ,OAAA,CAAQ,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,UAAU,GAAA,GAAM,GAAA;AAC/B,EAAA,MAAM,OAAA,GAAU,UAAU,GAAA,GAAM,GAAA;AAEhC,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,uBACEC,KAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,SAAQ,EACjC,QAAA,EAAA;AAAA,MAAA,MAAA;AAAA,MAAQ;AAAA,KAAA,EACX,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,KAAC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QAChC,KAAA,EAAO;AAAA,UACL,UAAA,EAAY,MAAA;AAAA,UACZ,MAAA,EAAQ,MAAA;AAAA,UACR,OAAO,KAAA,CAAM,MAAA;AAAA,UACb,MAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAS,CAAA;AAAA,UACT,QAAA,EAAU,SAAA;AAAA,UACV,UAAA,EAAY;AAAA,SACd;AAAA,QAEC,iBAAO,QAAA,GAAM;AAAA;AAAA,KAChB;AAAA,oBACAA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAI,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,IAC9C,CAAC,IAAA,oBACAC,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAS,OAAA,EAAS,GAAA,EAAI,EAC/C,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MAAM,GAAA;AAAA,MAAE,UAAU,MAAA,GAAS,KAAA;AAAA,MAAO,KAAA,GAAQ,IAAI,GAAA,GAAM;AAAA,KAAA,EACvD,CAAA;AAAA,oBAEFD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAI,QAAA,EAAA,CAAC,IAAA,GAAO,OAAA,GAAU,EAAA,EAAG,CAAA;AAAA,IAE5D,IAAA,oBACCC,IAAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,OAAA,CAAQ,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,sBACjBA,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO,EAAE,WAAA,EAAa,MAAA,EAAO;AAAA,UAE5B,QAAA,EAAA;AAAA,YAAA,CAAC,OAAA,oBACAA,IAAAA,CAAC,MAAA,EAAA,EAAK,OAAO,EAAE,KAAA,EAAO,KAAA,CAAM,GAAA,EAAI,EAAG,QAAA,EAAA;AAAA,cAAA,GAAA;AAAA,cAAE,CAAA;AAAA,cAAE;AAAA,aAAA,EAAC,CAAA;AAAA,YAEzC,CAAC,OAAA,oBAAWD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAG,QAAA,EAAA,IAAA,EAAE,CAAA;AAAA,4BACtDA,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAM,CAAA,EAAG,KAAA,EAAO,QAAQ,CAAA,EAAG,CAAA;AAAA,4BACrCA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAG,QAAA,EAAA,GAAA,EAAC;AAAA;AAAA,SAAA;AAAA,QARnC;AAAA,OAUR,CAAA;AAAA,sBACDA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAI,QAAA,EAAA,OAAA,EAAQ;AAAA,KAAA,EAClD;AAAA,GAAA,EAEJ,CAAA;AAEJ;ACrFO,SAAS,aAAA,CAAc,EAAE,IAAA,EAAM,aAAA,EAAc,EAAuB;AACzE,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AACnC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIE,QAAAA,CAAkC,EAAE,CAAA;AAEtE,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,uBAAOF,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAO,QAAA,EAAU,SAAA,EAAW,QAAA,EAAS,EAAG,QAAA,EAAA,kBAAA,EAAa,CAAA;AAAA,EAC5E;AAEA,EAAA,uBACEA,IAAC,KAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,CAAC,MAAA,EAAQ,QAAQ,CAAA,KAAM;AACnC,IAAA,MAAM,YAAY,MAAA,KAAW,aAAA;AAC7B,IAAA,MAAM,WAAA,GAAc,SAAA,CAAU,MAAM,CAAA,IAAK,CAAC,SAAA;AAC1C,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAA;AAEzC,IAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAiB,OAAO,EAAE,YAAA,EAAc,UAAS,EAChD,QAAA,EAAA;AAAA,sBAAAA,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,MAAM,YAAA,CAAa,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,CAAC,MAAM,GAAG,CAAC,aAAY,CAAE,CAAA;AAAA,UACrE,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,QAAA;AAAA,YACZ,GAAA,EAAK,QAAA;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,UAAA,EAAY,YAAY,uBAAA,GAA0B,wBAAA;AAAA,YAClD,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAA,GAAY,MAAA,GAAS,MAAM,CAAA,CAAA;AAAA,YAChD,YAAA,EAAc,SAAA;AAAA,YACd,KAAA,EAAO,YAAY,WAAA,GAAc,QAAA;AAAA,YACjC,MAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,eAAA;AAAA,YACT,QAAA,EAAU,SAAA;AAAA,YACV,UAAA,EAAY,SAAA;AAAA,YACZ,SAAA,EAAW;AAAA,WACb;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,WAAA,GAAc,QAAA,GAAM,QAAA,EAAI,CAAA;AAAA,4BAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,YAAY,SAAA,GAAY,MAAA,GAAS,QAAA,EAAS,EAAI,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,4BACpEC,KAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,MAAA,EAAO,EAChD,QAAA,EAAA;AAAA,cAAA,UAAA;AAAA,cAAW,QAAA;AAAA,cAAO,UAAA,GAAa,IAAI,GAAA,GAAM;AAAA,aAAA,EAC5C,CAAA;AAAA,YACC,SAAA,oBACCD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,cACX,UAAA,EAAY,MAAA;AAAA,cACZ,KAAA,EAAO,MAAA;AAAA,cACP,YAAA,EAAc,QAAA;AAAA,cACd,OAAA,EAAS,UAAA;AAAA,cACT,QAAA,EAAU;AAAA,eACT,QAAA,EAAA,QAAA,EAEH;AAAA;AAAA;AAAA,OAEJ;AAAA,MAEC,CAAC,WAAA,oBACAA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,WAAA,EAAa,SAAA,EAAW,YAAY,SAAA,EAAU,EAC1D,0BAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAM,QAAA,EAAU,KAAA,EAAO,GAAG,CAAA,EACtC;AAAA,KAAA,EAAA,EAxCM,MA0CV,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AC9DO,SAAS,gBAAA,CAAiB,EAAE,MAAA,EAAQ,YAAA,EAAc,aAAY,EAA0B;AAC7F,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,iBAAA,IAAqB,EAAC;AAE1C,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAO,QAAA,EAAU,SAAA,EAAW,QAAA,EAAS,EAAG,QAAA,EAAA,wCAAA,EAAgC,CAAA;AAAA,EAC/F;AAEA,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACf,IAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,CAAA,CAAE,EAAE,CAAA;AAC/B,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,QAAA,CAAS,CAAA,CAAE,EAAE,CAAA;AAC3C,IAAA,MAAM,WAAW,KAAA,KAAU,MAAA;AAE3B,IAAA,uBACEC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,UAAA;AAAA,UACT,YAAA,EAAc,aAAa,MAAM,CAAA;AAAA,SACnC;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,UAAS,EAC3G,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,UAAK,KAAA,EAAO,EAAE,YAAY,MAAA,EAAO,EAAI,YAAE,EAAA,EAAG,CAAA;AAAA,YAC1C,CAAA,CAAE,KAAA,IAAS,CAAA,CAAE,KAAA,KAAU,CAAA,CAAE,EAAA,oBACxBC,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,UAAS,EAAG,QAAA,EAAA;AAAA,cAAA,SAAA;AAAA,cAAG,CAAA,CAAE;AAAA,aAAA,EAAM,CAAA;AAAA,YAE9C,CAAA,CAAE,4BAAYD,GAAAA,CAAC,UAAK,KAAA,EAAO,KAAA,CAAM,SAAS,CAAA,EAAG,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,YACrD,SAAA,oBAAaA,GAAAA,CAAC,MAAA,EAAA,EAAK,OAAO,KAAA,CAAM,SAAS,GAAG,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,YACnD,CAAC,QAAA,IAAY,CAAC,SAAA,oBAAaA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,KAAA,CAAM,SAAS,CAAA,EAAG,QAAA,EAAA,WAAA,EAAS;AAAA,WAAA,EACtE,CAAA;AAAA,UACC,4BACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,WAAA,EAAa,QAAA,EAAS,EAClC,QAAA,kBAAAA,IAAC,QAAA,EAAA,EAAS,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,GAAG,CAAA,EACnC;AAAA;AAAA,OAAA;AAAA,MAlBG,CAAA,CAAE;AAAA,KAoBT;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AC5CO,SAAS,WAAA,CAAY,EAAE,OAAA,EAAS,aAAA,EAAc,EAAqB;AACxE,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAO,QAAA,EAAU,SAAA,EAAW,QAAA,EAAS,EAAG,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAAA,EAChF;AAEA,EAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,WAAW,MAAA,EAAQ,MAAA,EAAQ,CAAA,EAAG,OAAA,EAAS,GAAE,EACnD,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,QAAQ,CAAA,KAAM;AAC1B,IAAA,MAAM,YAAY,MAAA,KAAW,aAAA;AAC7B,IAAA,uBACEC,IAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QAEC,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,MAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,UAAA;AAAA,UACT,KAAA,EAAO,YAAY,WAAA,GAAc,QAAA;AAAA,UACjC,UAAA,EAAY,YAAY,MAAA,GAAS;AAAA,SACnC;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,QAAQ,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,SAAA,EAAU,EACnE,QAAA,EAAA;AAAA,YAAA,CAAA,GAAI,CAAA;AAAA,YAAE;AAAA,WAAA,EACT,CAAA;AAAA,0BACAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,UACb,SAAA,oBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,YACX,QAAA,EAAU,QAAA;AAAA,YACV,UAAA,EAAY,MAAA;AAAA,YACZ,KAAA,EAAO,MAAA;AAAA,YACP,YAAA,EAAc,QAAA;AAAA,YACd,OAAA,EAAS;AAAA,aACR,QAAA,EAAA,KAAA,EAEH;AAAA;AAAA,OAAA;AAAA,MAvBG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,CAAC,CAAA;AAAA,KAyBrB;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;ACdA,SAAS,OAAA,CAAQ;AAAA,EACf,EAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,uBACEC,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,SAAI,KAAA,EAAO,aAAA,EAAe,SAAS,MAAM,QAAA,CAAS,EAAE,CAAA,EACnD,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,UAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBACbA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAU,SAAA,EAAU,EAAI,QAAA,EAAA,SAAA,GAAY,QAAA,GAAM,QAAA,EAAI;AAAA,KAAA,EAC/D,CAAA;AAAA,IACC,CAAC,SAAA,oBAAaA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,aAAc,QAAA,EAAS;AAAA,GAAA,EACpD,CAAA;AAEJ;AAMO,SAAS,SAAS,EAAE,QAAA,GAAW,cAAA,EAAgB,WAAA,GAAc,OAAM,EAAkB;AAC1F,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIE,SAAS,WAAW,CAAA;AAChD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,QAAAA,CAAkC;AAAA,IAClE,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,KAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,OAAA,EAAS,IAAA;AAAA,IACT,GAAA,EAAK;AAAA,GACN,CAAA;AAGD,EAAA,SAAA,CAAU,MAAM,YAAA,CAAa,IAAI,CAAA,EAAG,EAAE,CAAA;AAEtC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,yBAAA,EAA0B;AAE5C,EAAA,MAAM,SAAa,QAAA,CAAS,KAAA,EAAO,CAAC,CAAA,KAA4B,EAAE,MAAM,CAAA;AACxE,EAAA,MAAM,OAAa,QAAA,CAAS,KAAA,EAAO,CAAC,CAAA,KAA4B,EAAE,IAAI,CAAA;AACtE,EAAA,MAAM,eAAe,QAAA,CAAS,KAAA,EAAO,CAAC,CAAA,KAA4B,EAAE,YAAY,CAAA;AAChF,EAAA,MAAM,gBAAgB,QAAA,CAAS,KAAA,EAAO,CAAC,CAAA,KAA4B,EAAE,aAAa,CAAA;AAClF,EAAA,MAAM,UAAa,QAAA,CAAS,KAAA,EAAO,CAAC,CAAA,KAA4B,EAAE,OAAO,CAAA;AACzE,EAAA,MAAM,eAAe,QAAA,CAAS,KAAA,EAAO,CAAC,CAAA,KAA4B,EAAE,YAAY,CAAA;AAChF,EAAA,MAAM,YAAa,QAAA,CAAS,KAAA,EAAO,CAAC,CAAA,KAA4B,EAAE,SAAS,CAAA;AAE3E,EAAA,MAAM,SAAA,GAAa,QAAA,CAAS,KAAA,EAAO,CAAC,MAA4B,CAAC,CAAA;AACjE,EAAA,MAAM,IAAA,GAAa,QAAQ,MAAM,eAAA,CAAgB,SAAS,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AACxE,EAAA,MAAM,QAAA,GAAa,QAAQ,MAAM,0BAAA,CAA2B,SAAS,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AACnF,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM,sBAAA,CAAuB,SAAS,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEhF,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,MAAA,EAAQ,OAAO,IAAA;AAElC,EAAA,MAAM,IAAA,GAAO,QAAA,KAAa,aAAA,GAAgB,MAAA,GAAS,OAAA;AAEnD,EAAA,SAAS,cAAc,EAAA,EAAY;AACjC,IAAA,YAAA,CAAa,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,EAAE,CAAA,EAAE,CAAE,CAAA;AAAA,EAC9C;AAEA,EAAA,uBACED,KAAA,QAAA,EAAA,EAEE,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,GAAG,SAAA;AAAA,UACH,CAAC,IAAI,GAAG,SAAA;AAAA,UACR,KAAA,EAAO,IAAA,KAAS,OAAA,GAAU,SAAA,GAAY,MAAA;AAAA,UACtC,IAAA,EAAM,IAAA,KAAS,MAAA,GAAS,SAAA,GAAY;AAAA,SACtC;AAAA,QACA,SAAS,MAAM,SAAA,CAAU,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QAClC,KAAA,EAAM,mBAAA;AAAA,QACP,QAAA,EAAA;AAAA,UAAA,iBAAA;AAAA,UAEE,YAAA,oBACCD,GAAAA,CAAC,MAAA,EAAA,EAAK,OAAO,EAAE,OAAA,EAAS,GAAA,EAAI,EAAG,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,UAEjC,WAAA,CAAY,MAAA,GAAS,CAAA,oBACpBA,GAAAA,CAAC,UAAK,KAAA,EAAO,EAAE,UAAA,EAAY,SAAA,EAAW,YAAA,EAAc,KAAA,EAAO,OAAO,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAS,aAAA,EAAe,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,QAAA,EAAU,QAAA,EAAU,SAAA,EAAU,EAAG,QAAA,EAAA,GAAA,EAE/L;AAAA;AAAA;AAAA,KAEJ;AAAA,oBAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,cAAA,CAAe,MAAA,EAAQ,IAAI,CAAA,EAErC,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,WAAA,EACV,QAAA,EAAA;AAAA,wBAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAS,EAAG,QAAA,EAAA,0BAAA,EAE5E,CAAA;AAAA,0BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,SAAA,EAAU,EAChD,QAAA,EAAA,SAAA,GAAY,kBAAA,GAAgB,YAAA,GAAe,4BAAkB,SAAA,EAChE;AAAA,SAAA,EACF,CAAA;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,YAC9B,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,YAAY,CAAA,EAAE;AAAA,YAClH,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF,CAAA;AAAA,sBAGAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,EAAA,EAAG,KAAA,EAAM,KAAA,EAAM,YAAA,EAAa,SAAA,EAAW,SAAA,CAAU,GAAA,IAAO,KAAA,EAAO,QAAA,EAAU,eAChF,QAAA,kBAAAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACA,IAAA;AAAA,UACA,aAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA;AAAA,OACF,EACF,CAAA;AAAA,sBAEAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,IAAG,MAAA,EAAO,KAAA,EAAM,cAAU,SAAA,EAAW,SAAA,CAAU,IAAA,IAAQ,KAAA,EAAO,UAAU,aAAA,EAC/E,QAAA,kBAAAA,IAAC,aAAA,EAAA,EAAc,IAAA,EAAY,eAA8B,CAAA,EAC3D,CAAA;AAAA,sBAEAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,EAAA,EAAG,MAAA,EAAO,KAAA,EAAM,oBAAA,EAAqB,SAAA,EAAW,SAAA,CAAU,IAAA,IAAQ,IAAA,EAAM,QAAA,EAAU,eACzF,QAAA,kBAAAA,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA;AAAA,OACF,EACF,CAAA;AAAA,sBAEAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,IAAG,SAAA,EAAU,KAAA,EAAM,cAAa,SAAA,EAAW,SAAA,CAAU,OAAA,IAAW,IAAA,EAAM,UAAU,aAAA,EACvF,QAAA,kBAAAA,IAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,eAA8B,CAAA,EAC/D,CAAA;AAAA,sBAEAA,IAAC,OAAA,EAAA,EAAQ,EAAA,EAAG,OAAM,KAAA,EAAM,cAAA,EAAY,WAAW,SAAA,CAAU,GAAA,IAAO,MAAM,QAAA,EAAU,aAAA,EAC9E,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,QAAA,EAAU,SAAA,EAAU,EAChC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,QAAQ,MAAA,CAAO,EAAA;AAAA,YACf,aAAA;AAAA,YACA,QAAA;AAAA,YACA,SAAA;AAAA,YACA,YAAA;AAAA,YACA,IAAA;AAAA,YACA,YAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAO;AAAA;AAAA,SAEX,CAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC7KO,SAAS,iBAAiB,KAAA,EAA8B;AAC7D,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,aAAA,EAAe;AAC1C,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,uBAAOA,GAAAA,CAAC,QAAA,EAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAC9B","file":"index.js","sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport const PANEL_WIDTH = 340;\nexport const Z_INDEX = 999999;\nexport const ACCENT = \"#6366f1\";\nexport const BG = \"rgba(13, 13, 18, 0.97)\";\nexport const BORDER = \"rgba(255,255,255,0.08)\";\nexport const TEXT_DIM = \"#64748b\";\nexport const TEXT_BASE = \"#cbd5e1\";\nexport const TEXT_BRIGHT = \"#f1f5f9\";\n\nexport function panelContainer(isOpen: boolean, side: \"left\" | \"right\"): CSSProperties {\n return {\n position: \"fixed\",\n top: 0,\n [side]: 0,\n bottom: 0,\n width: `${PANEL_WIDTH}px`,\n zIndex: Z_INDEX - 1,\n background: BG,\n color: TEXT_BASE,\n fontFamily: \"'ui-monospace','SFMono-Regular','Menlo',monospace\",\n fontSize: \"0.75rem\",\n lineHeight: 1.5,\n transform: isOpen\n ? \"translateX(0)\"\n : `translateX(${side === \"right\" ? PANEL_WIDTH : -PANEL_WIDTH}px)`,\n transition: \"transform 220ms ease-in-out\",\n overflowY: \"auto\",\n boxShadow: side === \"right\"\n ? \"-4px 0 24px rgba(0,0,0,0.6)\"\n : \"4px 0 24px rgba(0,0,0,0.6)\",\n display: \"flex\",\n flexDirection: \"column\",\n borderLeft: side === \"right\" ? `1px solid ${BORDER}` : undefined,\n borderRight: side === \"left\" ? `1px solid ${BORDER}` : undefined,\n };\n}\n\nexport const toggleBtn: CSSProperties = {\n position: \"fixed\",\n bottom: \"1.25rem\",\n right: \"1.25rem\",\n zIndex: Z_INDEX,\n background: ACCENT,\n color: \"#fff\",\n border: \"none\",\n borderRadius: \"2rem\",\n padding: \"0.375rem 0.875rem\",\n fontSize: \"0.72rem\",\n fontFamily: \"'ui-monospace','SFMono-Regular','Menlo',monospace\",\n cursor: \"pointer\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.5)\",\n userSelect: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.375rem\",\n};\n\nexport const panelHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0.75rem 1rem\",\n borderBottom: `1px solid ${BORDER}`,\n background: \"rgba(99,102,241,0.12)\",\n flexShrink: 0,\n};\n\nexport const sectionHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0.4rem 1rem\",\n background: \"rgba(255,255,255,0.03)\",\n cursor: \"pointer\",\n borderBottom: `1px solid ${BORDER}`,\n fontWeight: \"bold\",\n fontSize: \"0.68rem\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.08em\",\n color: TEXT_DIM,\n userSelect: \"none\",\n};\n\nexport const sectionBody: CSSProperties = {\n padding: \"0.5rem 1rem\",\n borderBottom: `1px solid ${BORDER}`,\n};\n\nexport function badge(color: string): CSSProperties {\n return {\n display: \"inline-block\",\n background: color,\n color: \"#fff\",\n borderRadius: \"0.25rem\",\n padding: \"0.05rem 0.35rem\",\n fontSize: \"0.62rem\",\n fontWeight: \"bold\",\n marginLeft: \"0.3rem\",\n verticalAlign: \"middle\",\n };\n}\n\nexport const progressTrack: CSSProperties = {\n height: \"4px\",\n background: \"rgba(255,255,255,0.08)\",\n borderRadius: \"2px\",\n overflow: \"hidden\",\n margin: \"0.5rem 0\",\n};\n\nexport function progressBar(pct: number): CSSProperties {\n return {\n height: \"100%\",\n width: `${pct}%`,\n background: ACCENT,\n borderRadius: \"2px\",\n transition: \"width 300ms ease\",\n };\n}\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport type { ResolvedTree } from \"@waypointjs/core\";\nimport { badge, progressBar, progressTrack, TEXT_DIM, TEXT_BRIGHT, ACCENT } from \"../styles\";\n\ninterface StepTreeProps {\n schema: WaypointSchema;\n tree: ResolvedTree;\n currentStepId: string | null;\n progress: number;\n completed: boolean;\n}\n\nexport function StepTree({ schema, tree, currentStepId, progress, completed }: StepTreeProps) {\n const currentIdx = tree.steps.findIndex((s) => s.definition.id === currentStepId);\n\n return (\n <div>\n {/* Schema info */}\n <div style={{ marginBottom: \"0.75rem\" }}>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>schema</div>\n <div style={{ color: TEXT_BRIGHT, fontWeight: \"bold\" }}>{schema.name}</div>\n <div style={{ color: TEXT_DIM }}>{schema.id} · v{schema.version}</div>\n </div>\n\n {/* Progress */}\n <div style={{ marginBottom: \"0.75rem\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", color: TEXT_DIM, fontSize: \"0.65rem\" }}>\n <span>progression</span>\n <span>{completed ? \"✓ terminé\" : `${progress}%`}</span>\n </div>\n <div style={progressTrack}>\n <div style={progressBar(completed ? 100 : progress)} />\n </div>\n </div>\n\n {/* Visible steps */}\n <div style={{ marginBottom: \"0.5rem\" }}>\n {tree.steps.map((step, i) => {\n const isCurrent = step.definition.id === currentStepId;\n const isDone = completed || i < currentIdx;\n return (\n <div\n key={step.definition.id}\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.5rem\",\n padding: \"0.3rem 0\",\n borderLeft: isCurrent ? `2px solid ${ACCENT}` : \"2px solid transparent\",\n paddingLeft: \"0.5rem\",\n marginLeft: \"-0.5rem\",\n opacity: (!isDone && !isCurrent) ? 0.45 : 1,\n }}\n >\n <div style={{\n width: \"1.1rem\",\n height: \"1.1rem\",\n borderRadius: \"50%\",\n background: isDone ? \"#22c55e\" : isCurrent ? ACCENT : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"0.6rem\",\n flexShrink: 0,\n marginTop: \"0.1rem\",\n }}>\n {isDone ? \"✓\" : i + 1}\n </div>\n <div>\n <div style={{ color: isCurrent ? TEXT_BRIGHT : TEXT_DIM, fontWeight: isCurrent ? \"bold\" : \"normal\" }}>\n {step.definition.title}\n </div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>{step.definition.url}</div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Hidden steps */}\n {tree.hiddenSteps.length > 0 && (\n <div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\", marginBottom: \"0.25rem\" }}>\n steps cachées ({tree.hiddenSteps.length})\n </div>\n {tree.hiddenSteps.map((step) => (\n <div key={step.definition.id} style={{ display: \"flex\", alignItems: \"center\", gap: \"0.4rem\", padding: \"0.15rem 0\", opacity: 0.5 }}>\n <span style={{ fontSize: \"0.65rem\" }}>⊘</span>\n <span style={{ color: TEXT_DIM }}>{step.definition.title}</span>\n <span style={badge(\"#94a3b8\")}>hidden</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\n\ninterface JsonViewProps {\n data: unknown;\n depth?: number;\n}\n\nconst COLOR = {\n string: \"#86efac\", // green-300\n number: \"#93c5fd\", // blue-300\n boolean: \"#fdba74\", // orange-300\n null: \"#f87171\", // red-400\n key: \"#c4b5fd\", // violet-300\n bracket: \"#94a3b8\", // slate-400\n toggle: \"#6366f1\", // indigo-500\n};\n\nfunction Primitive({ value }: { value: string | number | boolean | null }) {\n if (value === null) return <span style={{ color: COLOR.null }}>null</span>;\n if (typeof value === \"boolean\")\n return <span style={{ color: COLOR.boolean }}>{String(value)}</span>;\n if (typeof value === \"number\")\n return <span style={{ color: COLOR.number }}>{value}</span>;\n return <span style={{ color: COLOR.string }}>\"{value}\"</span>;\n}\n\nexport function JsonView({ data, depth = 0 }: JsonViewProps) {\n const [open, setOpen] = useState(depth === 0);\n\n if (data === null || typeof data !== \"object\") {\n return <Primitive value={data as string | number | boolean | null} />;\n }\n\n const isArray = Array.isArray(data);\n const entries = isArray\n ? (data as unknown[]).map((v, i) => [String(i), v] as [string, unknown])\n : Object.entries(data as Record<string, unknown>);\n\n const count = entries.length;\n const open_b = isArray ? \"[\" : \"{\";\n const close_b = isArray ? \"]\" : \"}\";\n\n if (count === 0) {\n return (\n <span style={{ color: COLOR.bracket }}>\n {open_b}{close_b}\n </span>\n );\n }\n\n return (\n <span>\n <button\n onClick={() => setOpen((o) => !o)}\n style={{\n background: \"none\",\n border: \"none\",\n color: COLOR.toggle,\n cursor: \"pointer\",\n padding: 0,\n fontSize: \"0.72rem\",\n fontFamily: \"inherit\",\n }}\n >\n {open ? \"▾\" : \"▸\"}\n </button>\n <span style={{ color: COLOR.bracket }}>{open_b}</span>\n {!open && (\n <span style={{ color: COLOR.bracket, opacity: 0.6 }}>\n {count} {isArray ? \"item\" : \"key\"}{count > 1 ? \"s\" : \"\"}\n </span>\n )}\n <span style={{ color: COLOR.bracket }}>{!open ? close_b : \"\"}</span>\n\n {open && (\n <span>\n {entries.map(([k, v]) => (\n <div\n key={k}\n style={{ paddingLeft: \"1rem\" }}\n >\n {!isArray && (\n <span style={{ color: COLOR.key }}>\"{k}\"</span>\n )}\n {!isArray && <span style={{ color: COLOR.bracket }}>: </span>}\n <JsonView data={v} depth={depth + 1} />\n <span style={{ color: COLOR.bracket }}>,</span>\n </div>\n ))}\n <span style={{ color: COLOR.bracket }}>{close_b}</span>\n </span>\n )}\n </span>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { JsonView } from \"./JsonView\";\nimport { TEXT_DIM, TEXT_BRIGHT, ACCENT, BORDER } from \"../styles\";\n\ninterface DataInspectorProps {\n data: Record<string, Record<string, unknown>>;\n currentStepId: string | null;\n}\n\nexport function DataInspector({ data, currentStepId }: DataInspectorProps) {\n const entries = Object.entries(data);\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({});\n\n if (entries.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune donnée</div>;\n }\n\n return (\n <div>\n {entries.map(([stepId, stepData]) => {\n const isCurrent = stepId === currentStepId;\n const isCollapsed = collapsed[stepId] ?? !isCurrent;\n const fieldCount = Object.keys(stepData).length;\n\n return (\n <div key={stepId} style={{ marginBottom: \"0.4rem\" }}>\n <button\n onClick={() => setCollapsed((p) => ({ ...p, [stepId]: !isCollapsed }))}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.4rem\",\n width: \"100%\",\n background: isCurrent ? \"rgba(99,102,241,0.12)\" : \"rgba(255,255,255,0.03)\",\n border: `1px solid ${isCurrent ? ACCENT : BORDER}`,\n borderRadius: \"0.25rem\",\n color: isCurrent ? TEXT_BRIGHT : TEXT_DIM,\n cursor: \"pointer\",\n padding: \"0.3rem 0.5rem\",\n fontSize: \"0.72rem\",\n fontFamily: \"inherit\",\n textAlign: \"left\",\n }}\n >\n <span>{isCollapsed ? \"▸\" : \"▾\"}</span>\n <span style={{ fontWeight: isCurrent ? \"bold\" : \"normal\" }}>{stepId}</span>\n <span style={{ color: TEXT_DIM, marginLeft: \"auto\" }}>\n {fieldCount} champ{fieldCount > 1 ? \"s\" : \"\"}\n </span>\n {isCurrent && (\n <span style={{\n background: ACCENT,\n color: \"#fff\",\n borderRadius: \"0.2rem\",\n padding: \"0 0.3rem\",\n fontSize: \"0.6rem\",\n }}>\n actuel\n </span>\n )}\n </button>\n\n {!isCollapsed && (\n <div style={{ paddingLeft: \"0.75rem\", paddingTop: \"0.25rem\" }}>\n <JsonView data={stepData} depth={0} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport { JsonView } from \"./JsonView\";\nimport { badge, TEXT_DIM, BORDER } from \"../styles\";\n\ninterface ExternalVarsViewProps {\n schema: WaypointSchema;\n externalVars: Record<string, unknown>;\n missingVars: string[];\n}\n\nexport function ExternalVarsView({ schema, externalVars, missingVars }: ExternalVarsViewProps) {\n const vars = schema.externalVariables ?? [];\n\n if (vars.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune variable externe déclarée</div>;\n }\n\n return (\n <div>\n {vars.map((v) => {\n const value = externalVars[v.id];\n const isMissing = missingVars.includes(v.id);\n const hasValue = value !== undefined;\n\n return (\n <div\n key={v.id}\n style={{\n padding: \"0.4rem 0\",\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: \"0.2rem\", marginBottom: \"0.2rem\" }}>\n <span style={{ fontWeight: \"bold\" }}>{v.id}</span>\n {v.label && v.label !== v.id && (\n <span style={{ color: TEXT_DIM }}>— {v.label}</span>\n )}\n {v.blocking && <span style={badge(\"#f97316\")}>blocking</span>}\n {isMissing && <span style={badge(\"#ef4444\")}>missing</span>}\n {!hasValue && !isMissing && <span style={badge(\"#64748b\")}>undefined</span>}\n </div>\n {hasValue && (\n <div style={{ paddingLeft: \"0.5rem\" }}>\n <JsonView data={value} depth={0} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport { TEXT_DIM, TEXT_BRIGHT, ACCENT } from \"../styles\";\n\ninterface HistoryViewProps {\n history: string[];\n currentStepId: string | null;\n}\n\nexport function HistoryView({ history, currentStepId }: HistoryViewProps) {\n if (history.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune navigation</div>;\n }\n\n return (\n <ol style={{ listStyle: \"none\", margin: 0, padding: 0 }}>\n {history.map((stepId, i) => {\n const isCurrent = stepId === currentStepId;\n return (\n <li\n key={`${stepId}-${i}`}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n padding: \"0.2rem 0\",\n color: isCurrent ? TEXT_BRIGHT : TEXT_DIM,\n fontWeight: isCurrent ? \"bold\" : \"normal\",\n }}\n >\n <span style={{ color: ACCENT, minWidth: \"1.2rem\", fontSize: \"0.65rem\" }}>\n {i + 1}.\n </span>\n <span>{stepId}</span>\n {isCurrent && (\n <span style={{\n fontSize: \"0.6rem\",\n background: ACCENT,\n color: \"#fff\",\n borderRadius: \"0.2rem\",\n padding: \"0 0.3rem\",\n }}>\n ici\n </span>\n )}\n </li>\n );\n })}\n </ol>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect, useMemo } from \"react\";\nimport { useStore } from \"zustand\";\nimport { useWaypointRuntimeContext } from \"@waypointjs/next\";\nimport {\n getResolvedTree,\n calculateProgressFromState,\n getMissingBlockingVars,\n} from \"@waypointjs/core\";\nimport type { WaypointRuntimeStore } from \"@waypointjs/core\";\n\nimport { StepTree } from \"./components/StepTree\";\nimport { DataInspector } from \"./components/DataInspector\";\nimport { ExternalVarsView } from \"./components/ExternalVarsView\";\nimport { HistoryView } from \"./components/HistoryView\";\nimport { JsonView } from \"./components/JsonView\";\nimport {\n panelContainer,\n panelHeader,\n sectionHeader,\n sectionBody,\n toggleBtn,\n TEXT_DIM,\n TEXT_BRIGHT,\n} from \"./styles\";\n\nexport interface DevPanelProps {\n position?: \"bottom-right\" | \"bottom-left\";\n defaultOpen?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Collapsible section\n// ---------------------------------------------------------------------------\n\nfunction Section({\n id,\n label,\n collapsed,\n onToggle,\n children,\n}: {\n id: string;\n label: string;\n collapsed: boolean;\n onToggle: (id: string) => void;\n children: React.ReactNode;\n}) {\n return (\n <div>\n <div style={sectionHeader} onClick={() => onToggle(id)}>\n <span>{label}</span>\n <span style={{ fontSize: \"0.65rem\" }}>{collapsed ? \"▸\" : \"▾\"}</span>\n </div>\n {!collapsed && <div style={sectionBody}>{children}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DevPanel\n// ---------------------------------------------------------------------------\n\nexport function DevPanel({ position = \"bottom-right\", defaultOpen = false }: DevPanelProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const [isMounted, setIsMounted] = useState(false);\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({\n nav: false,\n data: false,\n vars: true,\n history: true,\n raw: true,\n });\n\n // SSR safety — don't render until client-side hydration is complete\n useEffect(() => setIsMounted(true), []);\n\n const { store } = useWaypointRuntimeContext();\n\n const schema = useStore(store, (s: WaypointRuntimeStore) => s.schema);\n const data = useStore(store, (s: WaypointRuntimeStore) => s.data);\n const externalVars = useStore(store, (s: WaypointRuntimeStore) => s.externalVars);\n const currentStepId = useStore(store, (s: WaypointRuntimeStore) => s.currentStepId);\n const history = useStore(store, (s: WaypointRuntimeStore) => s.history);\n const isSubmitting = useStore(store, (s: WaypointRuntimeStore) => s.isSubmitting);\n const completed = useStore(store, (s: WaypointRuntimeStore) => s.completed);\n\n const fullState = useStore(store, (s: WaypointRuntimeStore) => s);\n const tree = useMemo(() => getResolvedTree(fullState), [fullState]);\n const progress = useMemo(() => calculateProgressFromState(fullState), [fullState]);\n const missingVars = useMemo(() => getMissingBlockingVars(fullState), [fullState]);\n\n if (!isMounted || !schema) return null;\n\n const side = position === \"bottom-left\" ? \"left\" : \"right\";\n\n function toggleSection(id: string) {\n setCollapsed((p) => ({ ...p, [id]: !p[id] }));\n }\n\n return (\n <>\n {/* Toggle button */}\n <button\n style={{\n ...toggleBtn,\n [side]: \"1.25rem\",\n right: side === \"right\" ? \"1.25rem\" : undefined,\n left: side === \"left\" ? \"1.25rem\" : undefined,\n }}\n onClick={() => setIsOpen((o) => !o)}\n title=\"Waypoint DevTools\"\n >\n ◈ waypoint\n {isSubmitting && (\n <span style={{ opacity: 0.7 }}>…</span>\n )}\n {missingVars.length > 0 && (\n <span style={{ background: \"#ef4444\", borderRadius: \"50%\", width: \"0.85rem\", height: \"0.85rem\", display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: \"0.55rem\" }}>\n !\n </span>\n )}\n </button>\n\n {/* Panel */}\n <div style={panelContainer(isOpen, side)}>\n {/* Header */}\n <div style={panelHeader}>\n <div>\n <div style={{ color: TEXT_BRIGHT, fontWeight: \"bold\", fontSize: \"0.8rem\" }}>\n ◈ Waypoint DevTools\n </div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>\n {completed ? \"✓ completed\" : isSubmitting ? \"⟳ submitting…\" : \"running\"}\n </div>\n </div>\n <button\n onClick={() => setIsOpen(false)}\n style={{ background: \"none\", border: \"none\", color: TEXT_DIM, cursor: \"pointer\", fontSize: \"1rem\", lineHeight: 1 }}\n >\n ×\n </button>\n </div>\n\n {/* Sections */}\n <Section id=\"nav\" label=\"Navigation\" collapsed={collapsed.nav ?? false} onToggle={toggleSection}>\n <StepTree\n schema={schema}\n tree={tree}\n currentStepId={currentStepId}\n progress={progress}\n completed={completed}\n />\n </Section>\n\n <Section id=\"data\" label=\"Données\" collapsed={collapsed.data ?? false} onToggle={toggleSection}>\n <DataInspector data={data} currentStepId={currentStepId} />\n </Section>\n\n <Section id=\"vars\" label=\"Variables externes\" collapsed={collapsed.vars ?? true} onToggle={toggleSection}>\n <ExternalVarsView\n schema={schema}\n externalVars={externalVars}\n missingVars={missingVars}\n />\n </Section>\n\n <Section id=\"history\" label=\"Historique\" collapsed={collapsed.history ?? true} onToggle={toggleSection}>\n <HistoryView history={history} currentStepId={currentStepId} />\n </Section>\n\n <Section id=\"raw\" label=\"État brut\" collapsed={collapsed.raw ?? true} onToggle={toggleSection}>\n <div style={{ fontSize: \"0.68rem\" }}>\n <JsonView\n data={{\n schema: schema.id,\n currentStepId,\n progress,\n completed,\n isSubmitting,\n data,\n externalVars,\n history,\n }}\n depth={0}\n />\n </div>\n </Section>\n </div>\n </>\n );\n}\n","\"use client\";\n\nimport { DevPanel } from \"./DevPanel\";\nimport type { DevPanelProps } from \"./DevPanel\";\n\nexport type WaypointDevtoolsProps = DevPanelProps;\n\n/**\n * Drop-in debug panel for Waypoint Runtime.\n *\n * - **Dev-only** : renders nothing in production (NODE_ENV !== \"development\").\n * - Must be placed **inside** a `<WaypointRunner>` to access the runtime context.\n *\n * @example\n * <WaypointRunner schema={mySchema} onComplete={...}>\n * {children}\n * <WaypointDevtools />\n * </WaypointRunner>\n */\nexport function WaypointDevtools(props: WaypointDevtoolsProps) {\n if (process.env.NODE_ENV !== \"development\") {\n return null;\n }\n return <DevPanel {...props} />;\n}\n"]}
1
+ {"version":3,"sources":["../src/styles.ts","../src/components/StepTree.tsx","../src/components/JsonView.tsx","../src/components/DataInspector.tsx","../src/components/ExternalVarsView.tsx","../src/components/HistoryView.tsx","../src/DevPanel.tsx","../src/WaypointDevtools.tsx"],"names":["jsx","jsxs","useState"],"mappings":";;;;;;;;;AAEO,IAAM,WAAA,GAAc,GAAA;AACpB,IAAM,OAAA,GAAU,MAAA;AAChB,IAAM,MAAA,GAAS,SAAA;AACf,IAAM,EAAA,GAAK,wBAAA;AACX,IAAM,MAAA,GAAS,wBAAA;AACf,IAAM,QAAA,GAAW,SAAA;AACjB,IAAM,SAAA,GAAY,SAAA;AAClB,IAAM,WAAA,GAAc,SAAA;AAEpB,SAAS,cAAA,CAAe,QAAiB,IAAA,EAAuC;AACrF,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,OAAA;AAAA,IACV,GAAA,EAAK,CAAA;AAAA,IACL,CAAC,IAAI,GAAG,CAAA;AAAA,IACR,MAAA,EAAQ,CAAA;AAAA,IACR,KAAA,EAAO,GAAG,WAAW,CAAA,EAAA,CAAA;AAAA,IACrB,QAAQ,OAAA,GAAU,CAAA;AAAA,IAClB,UAAA,EAAY,EAAA;AAAA,IACZ,KAAA,EAAO,SAAA;AAAA,IACP,UAAA,EAAY,mDAAA;AAAA,IACZ,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,GAAA;AAAA,IACZ,SAAA,EAAW,SACP,eAAA,GACA,CAAA,WAAA,EAAc,SAAS,OAAA,GAAU,WAAA,GAAc,CAAC,WAAW,CAAA,GAAA,CAAA;AAAA,IAC/D,UAAA,EAAY,6BAAA;AAAA,IACZ,SAAA,EAAW,MAAA;AAAA,IACX,SAAA,EAAW,IAAA,KAAS,OAAA,GAChB,6BAAA,GACA,4BAAA;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,UAAA,EAAY,IAAA,KAAS,OAAA,GAAU,CAAA,UAAA,EAAa,MAAM,CAAA,CAAA,GAAK,MAAA;AAAA,IACvD,WAAA,EAAa,IAAA,KAAS,MAAA,GAAS,CAAA,UAAA,EAAa,MAAM,CAAA,CAAA,GAAK;AAAA,GACzD;AACF;AAEO,IAAM,SAAA,GAA2B;AAAA,EACtC,QAAA,EAAU,OAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,KAAA,EAAO,SAAA;AAAA,EACP,MAAA,EAAQ,OAAA;AAAA,EACR,UAAA,EAAY,MAAA;AAAA,EACZ,KAAA,EAAO,MAAA;AAAA,EACP,MAAA,EAAQ,MAAA;AAAA,EACR,YAAA,EAAc,MAAA;AAAA,EACd,OAAA,EAAS,mBAAA;AAAA,EACT,QAAA,EAAU,SAAA;AAAA,EACV,UAAA,EAAY,mDAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,SAAA,EAAW,4BAAA;AAAA,EACX,UAAA,EAAY,MAAA;AAAA,EACZ,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,GAAA,EAAK;AACP,CAAA;AAEO,IAAM,WAAA,GAA6B;AAAA,EACxC,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,cAAA,EAAgB,eAAA;AAAA,EAChB,OAAA,EAAS,cAAA;AAAA,EACT,YAAA,EAAc,aAAa,MAAM,CAAA,CAAA;AAAA,EACjC,UAAA,EAAY,uBAAA;AAAA,EACZ,UAAA,EAAY;AACd,CAAA;AAEO,IAAM,aAAA,GAA+B;AAAA,EAC1C,OAAA,EAAS,MAAA;AAAA,EACT,UAAA,EAAY,QAAA;AAAA,EACZ,cAAA,EAAgB,eAAA;AAAA,EAChB,OAAA,EAAS,aAAA;AAAA,EACT,UAAA,EAAY,wBAAA;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA,EACR,YAAA,EAAc,aAAa,MAAM,CAAA,CAAA;AAAA,EACjC,UAAA,EAAY,MAAA;AAAA,EACZ,QAAA,EAAU,SAAA;AAAA,EACV,aAAA,EAAe,WAAA;AAAA,EACf,aAAA,EAAe,QAAA;AAAA,EACf,KAAA,EAAO,QAAA;AAAA,EACP,UAAA,EAAY;AACd,CAAA;AAEO,IAAM,WAAA,GAA6B;AAAA,EACxC,OAAA,EAAS,aAAA;AAAA,EACT,YAAA,EAAc,aAAa,MAAM,CAAA;AACnC,CAAA;AAEO,SAAS,MAAM,KAAA,EAA8B;AAClD,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,cAAA;AAAA,IACT,UAAA,EAAY,KAAA;AAAA,IACZ,KAAA,EAAO,MAAA;AAAA,IACP,YAAA,EAAc,SAAA;AAAA,IACd,OAAA,EAAS,iBAAA;AAAA,IACT,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,MAAA;AAAA,IACZ,UAAA,EAAY,QAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GACjB;AACF;AAEO,IAAM,aAAA,GAA+B;AAAA,EAC1C,MAAA,EAAQ,KAAA;AAAA,EACR,UAAA,EAAY,wBAAA;AAAA,EACZ,YAAA,EAAc,KAAA;AAAA,EACd,QAAA,EAAU,QAAA;AAAA,EACV,MAAA,EAAQ;AACV,CAAA;AAEO,SAAS,YAAY,GAAA,EAA4B;AACtD,EAAA,OAAO;AAAA,IACL,MAAA,EAAQ,MAAA;AAAA,IACR,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,IACb,UAAA,EAAY,MAAA;AAAA,IACZ,YAAA,EAAc,KAAA;AAAA,IACd,UAAA,EAAY;AAAA,GACd;AACF;AC1GO,SAAS,SAAS,EAAE,MAAA,EAAQ,MAAM,aAAA,EAAe,QAAA,EAAU,WAAU,EAAkB;AAC5F,EAAA,MAAM,UAAA,GAAa,KAAK,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,CAAW,EAAA,KAAO,aAAa,CAAA;AAEhF,EAAA,4BACG,KAAA,EAAA,EAEC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAA,EAAc,WAAU,EACpC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,KAAA,EAAO,UAAU,QAAA,EAAU,SAAA,IAAa,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,sBAC5D,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,aAAa,UAAA,EAAY,MAAA,EAAO,EAAI,QAAA,EAAA,MAAA,CAAO,IAAA,EAAK,CAAA;AAAA,2BACpE,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,UAAS,EAAI,QAAA,EAAA;AAAA,QAAA,MAAA,CAAO,EAAA;AAAA,QAAG,SAAA;AAAA,QAAK,MAAA,CAAO;AAAA,OAAA,EAAQ;AAAA,KAAA,EAClE,CAAA;AAAA,yBAGC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAA,EAAc,WAAU,EACpC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAA,EAAgB,eAAA,EAAiB,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,SAAA,EAAU,EACnG,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAK,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,4BAChB,MAAA,EAAA,EAAM,QAAA,EAAA,SAAA,GAAY,mBAAA,GAAc,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAA,EAAI;AAAA,OAAA,EAClD,CAAA;AAAA,sBACA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,aAAA,EACV,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,WAAA,CAAY,SAAA,GAAY,GAAA,GAAM,QAAQ,CAAA,EAAG,CAAA,EACvD;AAAA,KAAA,EACF,CAAA;AAAA,oBAGA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,YAAA,EAAc,QAAA,EAAS,EAClC,QAAA,EAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,CAAA,KAAM;AAC3B,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,UAAA,CAAW,EAAA,KAAO,aAAA;AACzC,MAAA,MAAM,MAAA,GAAS,aAAa,CAAA,GAAI,UAAA;AAChC,MAAA,uBACE,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,YAAA;AAAA,YACZ,GAAA,EAAK,QAAA;AAAA,YACL,OAAA,EAAS,UAAA;AAAA,YACT,UAAA,EAAY,SAAA,GAAY,CAAA,UAAA,EAAa,MAAM,CAAA,CAAA,GAAK,uBAAA;AAAA,YAChD,WAAA,EAAa,QAAA;AAAA,YACb,UAAA,EAAY,SAAA;AAAA,YACZ,OAAA,EAAU,CAAC,MAAA,IAAU,CAAC,YAAa,IAAA,GAAO;AAAA,WAC5C;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,SAAI,KAAA,EAAO;AAAA,cACV,KAAA,EAAO,QAAA;AAAA,cACP,MAAA,EAAQ,QAAA;AAAA,cACR,YAAA,EAAc,KAAA;AAAA,cACd,UAAA,EAAY,MAAA,GAAS,SAAA,GAAY,SAAA,GAAY,MAAA,GAAS,uBAAA;AAAA,cACtD,OAAA,EAAS,MAAA;AAAA,cACT,UAAA,EAAY,QAAA;AAAA,cACZ,cAAA,EAAgB,QAAA;AAAA,cAChB,QAAA,EAAU,QAAA;AAAA,cACV,UAAA,EAAY,CAAA;AAAA,cACZ,SAAA,EAAW;AAAA,aACb,EACG,QAAA,EAAA,MAAA,GAAS,QAAA,GAAM,CAAA,GAAI,CAAA,EACtB,CAAA;AAAA,iCACC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,YAAY,WAAA,GAAc,QAAA,EAAU,UAAA,EAAY,SAAA,GAAY,MAAA,GAAS,QAAA,EAAS,EAChG,QAAA,EAAA,IAAA,CAAK,WAAW,KAAA,EACnB,CAAA;AAAA,8BACA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,SAAA,EAAU,EAAI,QAAA,EAAA,IAAA,CAAK,UAAA,CAAW,GAAA,EAAI;AAAA,aAAA,EAC7E;AAAA;AAAA,SAAA;AAAA,QA/BK,KAAK,UAAA,CAAW;AAAA,OAgCvB;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IAGC,IAAA,CAAK,WAAA,CAAY,MAAA,GAAS,CAAA,yBACxB,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,KAAA,EAAO,UAAU,QAAA,EAAU,SAAA,EAAW,YAAA,EAAc,SAAA,EAAU,EAAG,QAAA,EAAA;AAAA,QAAA,oBAAA;AAAA,QAC7D,KAAK,WAAA,CAAY,MAAA;AAAA,QAAO;AAAA,OAAA,EAC1C,CAAA;AAAA,MACC,KAAK,WAAA,CAAY,GAAA,CAAI,CAAC,IAAA,qBACrB,IAAA,CAAC,SAA6B,KAAA,EAAO,EAAE,SAAS,MAAA,EAAQ,UAAA,EAAY,UAAU,GAAA,EAAK,QAAA,EAAU,SAAS,WAAA,EAAa,OAAA,EAAS,KAAI,EAC9H,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,UAAK,KAAA,EAAO,EAAE,QAAA,EAAU,SAAA,IAAa,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,wBACvC,GAAA,CAAC,UAAK,KAAA,EAAO,EAAE,OAAO,QAAA,EAAS,EAAI,QAAA,EAAA,IAAA,CAAK,UAAA,CAAW,KAAA,EAAM,CAAA;AAAA,4BACxD,MAAA,EAAA,EAAK,KAAA,EAAO,KAAA,CAAM,SAAS,GAAG,QAAA,EAAA,QAAA,EAAM;AAAA,OAAA,EAAA,EAH7B,IAAA,CAAK,UAAA,CAAW,EAI1B,CACD;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;ACzFA,IAAM,KAAA,GAAQ;AAAA,EACZ,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,MAAA,EAAQ,SAAA;AAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA;AAAA,EACT,IAAA,EAAM,SAAA;AAAA;AAAA,EACN,GAAA,EAAK,SAAA;AAAA;AAAA,EACL,OAAA,EAAS,SAAA;AAAA;AAAA,EACT,MAAA,EAAQ;AAAA;AACV,CAAA;AAEA,SAAS,SAAA,CAAU,EAAE,KAAA,EAAM,EAAgD;AACzE,EAAA,IAAI,KAAA,KAAU,IAAA,EAAM,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,IAAA,EAAK,EAAG,QAAA,EAAA,MAAA,EAAI,CAAA;AACnE,EAAA,IAAI,OAAO,KAAA,KAAU,SAAA;AACnB,IAAA,uBAAOA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAI,QAAA,EAAA,MAAA,CAAO,KAAK,CAAA,EAAE,CAAA;AAC/D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA;AACnB,IAAA,uBAAOA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,MAAA,EAAO,EAAI,QAAA,EAAA,KAAA,EAAM,CAAA;AACtD,EAAA,uBAAOC,KAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,QAAO,EAAG,QAAA,EAAA;AAAA,IAAA,GAAA;AAAA,IAAE,KAAA;AAAA,IAAM;AAAA,GAAA,EAAC,CAAA;AACxD;AAEO,SAAS,QAAA,CAAS,EAAE,IAAA,EAAM,KAAA,GAAQ,GAAE,EAAkB;AAC3D,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,CAAS,UAAU,CAAC,CAAA;AAE5C,EAAA,IAAI,IAAA,KAAS,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,EAAU;AAC7C,IAAA,uBAAOD,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAO,IAAA,EAA0C,CAAA;AAAA,EACrE;AAEA,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA;AAClC,EAAA,MAAM,UAAU,OAAA,GACX,IAAA,CAAmB,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM,CAAC,MAAA,CAAO,CAAC,GAAG,CAAC,CAAsB,CAAA,GACrE,MAAA,CAAO,QAAQ,IAA+B,CAAA;AAElD,EAAA,MAAM,QAAQ,OAAA,CAAQ,MAAA;AACtB,EAAA,MAAM,MAAA,GAAS,UAAU,GAAA,GAAM,GAAA;AAC/B,EAAA,MAAM,OAAA,GAAU,UAAU,GAAA,GAAM,GAAA;AAEhC,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,uBACEC,KAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,SAAQ,EACjC,QAAA,EAAA;AAAA,MAAA,MAAA;AAAA,MAAQ;AAAA,KAAA,EACX,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,KAAC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAD,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QAChC,KAAA,EAAO;AAAA,UACL,UAAA,EAAY,MAAA;AAAA,UACZ,MAAA,EAAQ,MAAA;AAAA,UACR,OAAO,KAAA,CAAM,MAAA;AAAA,UACb,MAAA,EAAQ,SAAA;AAAA,UACR,OAAA,EAAS,CAAA;AAAA,UACT,QAAA,EAAU,SAAA;AAAA,UACV,UAAA,EAAY;AAAA,SACd;AAAA,QAEC,iBAAO,QAAA,GAAM;AAAA;AAAA,KAChB;AAAA,oBACAA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAI,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,IAC9C,CAAC,IAAA,oBACAC,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAS,OAAA,EAAS,GAAA,EAAI,EAC/C,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MAAM,GAAA;AAAA,MAAE,UAAU,MAAA,GAAS,KAAA;AAAA,MAAO,KAAA,GAAQ,IAAI,GAAA,GAAM;AAAA,KAAA,EACvD,CAAA;AAAA,oBAEFD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAI,QAAA,EAAA,CAAC,IAAA,GAAO,OAAA,GAAU,EAAA,EAAG,CAAA;AAAA,IAE5D,IAAA,oBACCC,IAAAA,CAAC,MAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,OAAA,CAAQ,IAAI,CAAC,CAAC,CAAA,EAAG,CAAC,sBACjBA,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO,EAAE,WAAA,EAAa,MAAA,EAAO;AAAA,UAE5B,QAAA,EAAA;AAAA,YAAA,CAAC,OAAA,oBACAA,IAAAA,CAAC,MAAA,EAAA,EAAK,OAAO,EAAE,KAAA,EAAO,KAAA,CAAM,GAAA,EAAI,EAAG,QAAA,EAAA;AAAA,cAAA,GAAA;AAAA,cAAE,CAAA;AAAA,cAAE;AAAA,aAAA,EAAC,CAAA;AAAA,YAEzC,CAAC,OAAA,oBAAWD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAG,QAAA,EAAA,IAAA,EAAE,CAAA;AAAA,4BACtDA,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAM,CAAA,EAAG,KAAA,EAAO,QAAQ,CAAA,EAAG,CAAA;AAAA,4BACrCA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAG,QAAA,EAAA,GAAA,EAAC;AAAA;AAAA,SAAA;AAAA,QARnC;AAAA,OAUR,CAAA;AAAA,sBACDA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,OAAA,EAAQ,EAAI,QAAA,EAAA,OAAA,EAAQ;AAAA,KAAA,EAClD;AAAA,GAAA,EAEJ,CAAA;AAEJ;ACrFO,SAAS,aAAA,CAAc,EAAE,IAAA,EAAM,aAAA,EAAc,EAAuB;AACzE,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA;AACnC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIE,QAAAA,CAAkC,EAAE,CAAA;AAEtE,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,uBAAOF,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAO,QAAA,EAAU,SAAA,EAAW,QAAA,EAAS,EAAG,QAAA,EAAA,kBAAA,EAAa,CAAA;AAAA,EAC5E;AAEA,EAAA,uBACEA,IAAC,KAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,CAAC,MAAA,EAAQ,QAAQ,CAAA,KAAM;AACnC,IAAA,MAAM,YAAY,MAAA,KAAW,aAAA;AAC7B,IAAA,MAAM,WAAA,GAAc,SAAA,CAAU,MAAM,CAAA,IAAK,CAAC,SAAA;AAC1C,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAA;AAEzC,IAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAiB,OAAO,EAAE,YAAA,EAAc,UAAS,EAChD,QAAA,EAAA;AAAA,sBAAAA,IAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,MAAM,YAAA,CAAa,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,CAAC,MAAM,GAAG,CAAC,aAAY,CAAE,CAAA;AAAA,UACrE,KAAA,EAAO;AAAA,YACL,OAAA,EAAS,MAAA;AAAA,YACT,UAAA,EAAY,QAAA;AAAA,YACZ,GAAA,EAAK,QAAA;AAAA,YACL,KAAA,EAAO,MAAA;AAAA,YACP,UAAA,EAAY,YAAY,uBAAA,GAA0B,wBAAA;AAAA,YAClD,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAA,GAAY,MAAA,GAAS,MAAM,CAAA,CAAA;AAAA,YAChD,YAAA,EAAc,SAAA;AAAA,YACd,KAAA,EAAO,YAAY,WAAA,GAAc,QAAA;AAAA,YACjC,MAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS,eAAA;AAAA,YACT,QAAA,EAAU,SAAA;AAAA,YACV,UAAA,EAAY,SAAA;AAAA,YACZ,SAAA,EAAW;AAAA,WACb;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,WAAA,GAAc,QAAA,GAAM,QAAA,EAAI,CAAA;AAAA,4BAC/BA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,YAAY,SAAA,GAAY,MAAA,GAAS,QAAA,EAAS,EAAI,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,4BACpEC,KAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,MAAA,EAAO,EAChD,QAAA,EAAA;AAAA,cAAA,UAAA;AAAA,cAAW,QAAA;AAAA,cAAO,UAAA,GAAa,IAAI,GAAA,GAAM;AAAA,aAAA,EAC5C,CAAA;AAAA,YACC,SAAA,oBACCD,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,cACX,UAAA,EAAY,MAAA;AAAA,cACZ,KAAA,EAAO,MAAA;AAAA,cACP,YAAA,EAAc,QAAA;AAAA,cACd,OAAA,EAAS,UAAA;AAAA,cACT,QAAA,EAAU;AAAA,eACT,QAAA,EAAA,QAAA,EAEH;AAAA;AAAA;AAAA,OAEJ;AAAA,MAEC,CAAC,WAAA,oBACAA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,WAAA,EAAa,SAAA,EAAW,YAAY,SAAA,EAAU,EAC1D,0BAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,MAAM,QAAA,EAAU,KAAA,EAAO,GAAG,CAAA,EACtC;AAAA,KAAA,EAAA,EAxCM,MA0CV,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AC9DO,SAAS,gBAAA,CAAiB,EAAE,MAAA,EAAQ,YAAA,EAAc,aAAY,EAA0B;AAC7F,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,iBAAA,IAAqB,EAAC;AAE1C,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAO,QAAA,EAAU,SAAA,EAAW,QAAA,EAAS,EAAG,QAAA,EAAA,wCAAA,EAAgC,CAAA;AAAA,EAC/F;AAEA,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACf,IAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,CAAA,CAAE,EAAE,CAAA;AAC/B,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,QAAA,CAAS,CAAA,CAAE,EAAE,CAAA;AAC3C,IAAA,MAAM,WAAW,KAAA,KAAU,MAAA;AAE3B,IAAA,uBACEC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,UAAA;AAAA,UACT,YAAA,EAAc,aAAa,MAAM,CAAA;AAAA,SACnC;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,SAAS,MAAA,EAAQ,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,GAAA,EAAK,QAAA,EAAU,YAAA,EAAc,UAAS,EAC3G,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,UAAK,KAAA,EAAO,EAAE,YAAY,MAAA,EAAO,EAAI,YAAE,EAAA,EAAG,CAAA;AAAA,YAC1C,CAAA,CAAE,KAAA,IAAS,CAAA,CAAE,KAAA,KAAU,CAAA,CAAE,EAAA,oBACxBC,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,UAAS,EAAG,QAAA,EAAA;AAAA,cAAA,SAAA;AAAA,cAAG,CAAA,CAAE;AAAA,aAAA,EAAM,CAAA;AAAA,YAE9C,CAAA,CAAE,4BAAYD,GAAAA,CAAC,UAAK,KAAA,EAAO,KAAA,CAAM,SAAS,CAAA,EAAG,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,YACrD,SAAA,oBAAaA,GAAAA,CAAC,MAAA,EAAA,EAAK,OAAO,KAAA,CAAM,SAAS,GAAG,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,YACnD,CAAC,QAAA,IAAY,CAAC,SAAA,oBAAaA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,KAAA,CAAM,SAAS,CAAA,EAAG,QAAA,EAAA,WAAA,EAAS;AAAA,WAAA,EACtE,CAAA;AAAA,UACC,4BACCA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,WAAA,EAAa,QAAA,EAAS,EAClC,QAAA,kBAAAA,IAAC,QAAA,EAAA,EAAS,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,GAAG,CAAA,EACnC;AAAA;AAAA,OAAA;AAAA,MAlBG,CAAA,CAAE;AAAA,KAoBT;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AC5CO,SAAS,WAAA,CAAY,EAAE,OAAA,EAAS,aAAA,EAAc,EAAqB;AACxE,EAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACxB,IAAA,uBAAOA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,OAAO,QAAA,EAAU,SAAA,EAAW,QAAA,EAAS,EAAG,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAAA,EAChF;AAEA,EAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAO,EAAE,WAAW,MAAA,EAAQ,MAAA,EAAQ,CAAA,EAAG,OAAA,EAAS,GAAE,EACnD,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,QAAQ,CAAA,KAAM;AAC1B,IAAA,MAAM,YAAY,MAAA,KAAW,aAAA;AAC7B,IAAA,uBACEC,IAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QAEC,KAAA,EAAO;AAAA,UACL,OAAA,EAAS,MAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,GAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,UAAA;AAAA,UACT,KAAA,EAAO,YAAY,WAAA,GAAc,QAAA;AAAA,UACjC,UAAA,EAAY,YAAY,MAAA,GAAS;AAAA,SACnC;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,KAAA,EAAO,QAAQ,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,SAAA,EAAU,EACnE,QAAA,EAAA;AAAA,YAAA,CAAA,GAAI,CAAA;AAAA,YAAE;AAAA,WAAA,EACT,CAAA;AAAA,0BACAD,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,UACb,SAAA,oBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO;AAAA,YACX,QAAA,EAAU,QAAA;AAAA,YACV,UAAA,EAAY,MAAA;AAAA,YACZ,KAAA,EAAO,MAAA;AAAA,YACP,YAAA,EAAc,QAAA;AAAA,YACd,OAAA,EAAS;AAAA,aACR,QAAA,EAAA,KAAA,EAEH;AAAA;AAAA,OAAA;AAAA,MAvBG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,CAAC,CAAA;AAAA,KAyBrB;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;ACZA,SAAS,OAAA,CAAQ;AAAA,EACf,EAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAMG;AACD,EAAA,uBACEC,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,SAAI,KAAA,EAAO,aAAA,EAAe,SAAS,MAAM,QAAA,CAAS,EAAE,CAAA,EACnD,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,UAAM,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBACbA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAU,SAAA,EAAU,EAAI,QAAA,EAAA,SAAA,GAAY,QAAA,GAAM,QAAA,EAAI;AAAA,KAAA,EAC/D,CAAA;AAAA,IACC,CAAC,SAAA,oBAAaA,IAAC,KAAA,EAAA,EAAI,KAAA,EAAO,aAAc,QAAA,EAAS;AAAA,GAAA,EACpD,CAAA;AAEJ;AAMO,SAAS,QAAA,CAAS,EAAE,QAAA,GAAW,cAAA,EAAgB,cAAc,KAAA,EAAO,KAAA,EAAO,WAAU,EAAkB;AAC5G,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIE,SAAS,WAAW,CAAA;AAChD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,QAAAA,CAAkC;AAAA,IAClE,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,KAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,OAAA,EAAS,IAAA;AAAA,IACT,GAAA,EAAK;AAAA,GACN,CAAA;AAGD,EAAA,SAAA,CAAU,MAAM,YAAA,CAAa,IAAI,CAAA,EAAG,EAAE,CAAA;AAEtC,EAAA,MAAM,GAAA,GAAM,WAAW,sBAAsB,CAAA;AAC7C,EAAA,MAAM,KAAA,GAAQ,aAAa,GAAA,EAAK,KAAA;AAEhC,EAAA,MAAM,SAAe,QAAA,CAAS,KAAA,EAAQ,CAAC,CAAA,KAA4B,EAAE,MAAM,CAAA;AAC3E,EAAA,MAAM,OAAe,QAAA,CAAS,KAAA,EAAQ,CAAC,CAAA,KAA4B,EAAE,IAAI,CAAA;AACzE,EAAA,MAAM,eAAe,QAAA,CAAS,KAAA,EAAQ,CAAC,CAAA,KAA4B,EAAE,YAAY,CAAA;AACjF,EAAA,MAAM,gBAAgB,QAAA,CAAS,KAAA,EAAQ,CAAC,CAAA,KAA4B,EAAE,aAAa,CAAA;AACnF,EAAA,MAAM,UAAe,QAAA,CAAS,KAAA,EAAQ,CAAC,CAAA,KAA4B,EAAE,OAAO,CAAA;AAC5E,EAAA,MAAM,eAAe,QAAA,CAAS,KAAA,EAAQ,CAAC,CAAA,KAA4B,EAAE,YAAY,CAAA;AACjF,EAAA,MAAM,YAAe,QAAA,CAAS,KAAA,EAAQ,CAAC,CAAA,KAA4B,EAAE,SAAS,CAAA;AAE9E,EAAA,MAAM,SAAA,GAAc,QAAA,CAAS,KAAA,EAAQ,CAAC,MAA4B,CAAC,CAAA;AACnE,EAAA,MAAM,IAAA,GAAc,QAAQ,MAAM,eAAA,CAAgB,SAAS,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AACzE,EAAA,MAAM,QAAA,GAAc,QAAQ,MAAM,0BAAA,CAA2B,SAAS,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AACpF,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAM,sBAAA,CAAuB,SAAS,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEhF,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,KAAA,IAAS,CAAC,QAAQ,OAAO,IAAA;AAE5C,EAAA,MAAM,IAAA,GAAO,QAAA,KAAa,aAAA,GAAgB,MAAA,GAAS,OAAA;AAEnD,EAAA,SAAS,cAAc,EAAA,EAAY;AACjC,IAAA,YAAA,CAAa,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,EAAE,CAAA,EAAE,CAAE,CAAA;AAAA,EAC9C;AAEA,EAAA,uBACED,KAAA,QAAA,EAAA,EAEE,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,GAAG,SAAA;AAAA,UACH,CAAC,IAAI,GAAG,SAAA;AAAA,UACR,KAAA,EAAO,IAAA,KAAS,OAAA,GAAU,SAAA,GAAY,MAAA;AAAA,UACtC,IAAA,EAAM,IAAA,KAAS,MAAA,GAAS,SAAA,GAAY;AAAA,SACtC;AAAA,QACA,SAAS,MAAM,SAAA,CAAU,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA;AAAA,QAClC,KAAA,EAAM,mBAAA;AAAA,QACP,QAAA,EAAA;AAAA,UAAA,iBAAA;AAAA,UAEE,YAAA,oBACCD,GAAAA,CAAC,MAAA,EAAA,EAAK,OAAO,EAAE,OAAA,EAAS,GAAA,EAAI,EAAG,QAAA,EAAA,QAAA,EAAC,CAAA;AAAA,UAEjC,WAAA,CAAY,MAAA,GAAS,CAAA,oBACpBA,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,UAAA,EAAY,SAAA,EAAW,YAAA,EAAc,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,aAAA,EAAe,UAAA,EAAY,QAAA,EAAU,cAAA,EAAgB,QAAA,EAAU,QAAA,EAAU,SAAA,EAAW,UAAA,EAAY,GAAA,EAAI,EAAG,QAAA,EAAA,GAAA,EAE9M;AAAA;AAAA;AAAA,KAEJ;AAAA,oBAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,cAAA,CAAe,MAAA,EAAQ,IAAI,CAAA,EAErC,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,WAAA,EACV,QAAA,EAAA;AAAA,wBAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAS,EAAG,QAAA,EAAA,0BAAA,EAE5E,CAAA;AAAA,0BACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAO,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,SAAA,EAAU,EAChD,QAAA,EAAA,SAAA,GAAY,kBAAA,GAAgB,YAAA,GAAe,4BAAkB,SAAA,EAChE;AAAA,SAAA,EACF,CAAA;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,YAC9B,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,SAAA,EAAW,QAAA,EAAU,MAAA,EAAQ,YAAY,CAAA,EAAE;AAAA,YAClH,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF,CAAA;AAAA,sBAGAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,EAAA,EAAG,KAAA,EAAM,KAAA,EAAM,YAAA,EAAa,SAAA,EAAW,SAAA,CAAU,GAAA,IAAO,KAAA,EAAO,QAAA,EAAU,eAChF,QAAA,kBAAAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACA,IAAA;AAAA,UACA,aAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA;AAAA,OACF,EACF,CAAA;AAAA,sBAEAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,IAAG,MAAA,EAAO,KAAA,EAAM,cAAU,SAAA,EAAW,SAAA,CAAU,IAAA,IAAQ,KAAA,EAAO,UAAU,aAAA,EAC/E,QAAA,kBAAAA,IAAC,aAAA,EAAA,EAAc,IAAA,EAAY,eAA8B,CAAA,EAC3D,CAAA;AAAA,sBAEAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,EAAA,EAAG,MAAA,EAAO,KAAA,EAAM,oBAAA,EAAqB,SAAA,EAAW,SAAA,CAAU,IAAA,IAAQ,IAAA,EAAM,QAAA,EAAU,eACzF,QAAA,kBAAAA,GAAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACA,YAAA;AAAA,UACA;AAAA;AAAA,OACF,EACF,CAAA;AAAA,sBAEAA,GAAAA,CAAC,OAAA,EAAA,EAAQ,IAAG,SAAA,EAAU,KAAA,EAAM,cAAa,SAAA,EAAW,SAAA,CAAU,OAAA,IAAW,IAAA,EAAM,UAAU,aAAA,EACvF,QAAA,kBAAAA,IAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,eAA8B,CAAA,EAC/D,CAAA;AAAA,sBAEAA,IAAC,OAAA,EAAA,EAAQ,EAAA,EAAG,OAAM,KAAA,EAAM,cAAA,EAAY,WAAW,SAAA,CAAU,GAAA,IAAO,MAAM,QAAA,EAAU,aAAA,EAC9E,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAI,OAAO,EAAE,QAAA,EAAU,SAAA,EAAU,EAChC,QAAA,kBAAAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM;AAAA,YACJ,QAAQ,MAAA,CAAO,EAAA;AAAA,YACf,aAAA;AAAA,YACA,QAAA;AAAA,YACA,SAAA;AAAA,YACA,YAAA;AAAA,YACA,IAAA;AAAA,YACA,YAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAO;AAAA;AAAA,SAEX,CAAA,EACF;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AC3KO,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA0B;AAC/E,EAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,QAAA,KAAa,aAAA,IAAiB,CAAC,SAAA,EAAW;AACxD,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,uBAAOA,GAAAA,CAAC,QAAA,EAAA,EAAU,GAAG,KAAA,EAAO,CAAA;AAC9B","file":"index.js","sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport const PANEL_WIDTH = 340;\nexport const Z_INDEX = 999999;\nexport const ACCENT = \"#6366f1\";\nexport const BG = \"rgba(13, 13, 18, 0.97)\";\nexport const BORDER = \"rgba(255,255,255,0.08)\";\nexport const TEXT_DIM = \"#64748b\";\nexport const TEXT_BASE = \"#cbd5e1\";\nexport const TEXT_BRIGHT = \"#f1f5f9\";\n\nexport function panelContainer(isOpen: boolean, side: \"left\" | \"right\"): CSSProperties {\n return {\n position: \"fixed\",\n top: 0,\n [side]: 0,\n bottom: 0,\n width: `${PANEL_WIDTH}px`,\n zIndex: Z_INDEX - 1,\n background: BG,\n color: TEXT_BASE,\n fontFamily: \"'ui-monospace','SFMono-Regular','Menlo',monospace\",\n fontSize: \"0.75rem\",\n lineHeight: 1.5,\n transform: isOpen\n ? \"translateX(0)\"\n : `translateX(${side === \"right\" ? PANEL_WIDTH : -PANEL_WIDTH}px)`,\n transition: \"transform 220ms ease-in-out\",\n overflowY: \"auto\",\n boxShadow: side === \"right\"\n ? \"-4px 0 24px rgba(0,0,0,0.6)\"\n : \"4px 0 24px rgba(0,0,0,0.6)\",\n display: \"flex\",\n flexDirection: \"column\",\n borderLeft: side === \"right\" ? `1px solid ${BORDER}` : undefined,\n borderRight: side === \"left\" ? `1px solid ${BORDER}` : undefined,\n };\n}\n\nexport const toggleBtn: CSSProperties = {\n position: \"fixed\",\n bottom: \"1.25rem\",\n right: \"1.25rem\",\n zIndex: Z_INDEX,\n background: ACCENT,\n color: \"#fff\",\n border: \"none\",\n borderRadius: \"2rem\",\n padding: \"0.375rem 0.875rem\",\n fontSize: \"0.72rem\",\n fontFamily: \"'ui-monospace','SFMono-Regular','Menlo',monospace\",\n cursor: \"pointer\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.5)\",\n userSelect: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.375rem\",\n};\n\nexport const panelHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0.75rem 1rem\",\n borderBottom: `1px solid ${BORDER}`,\n background: \"rgba(99,102,241,0.12)\",\n flexShrink: 0,\n};\n\nexport const sectionHeader: CSSProperties = {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0.4rem 1rem\",\n background: \"rgba(255,255,255,0.03)\",\n cursor: \"pointer\",\n borderBottom: `1px solid ${BORDER}`,\n fontWeight: \"bold\",\n fontSize: \"0.68rem\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.08em\",\n color: TEXT_DIM,\n userSelect: \"none\",\n};\n\nexport const sectionBody: CSSProperties = {\n padding: \"0.5rem 1rem\",\n borderBottom: `1px solid ${BORDER}`,\n};\n\nexport function badge(color: string): CSSProperties {\n return {\n display: \"inline-block\",\n background: color,\n color: \"#fff\",\n borderRadius: \"0.25rem\",\n padding: \"0.05rem 0.35rem\",\n fontSize: \"0.62rem\",\n fontWeight: \"bold\",\n marginLeft: \"0.3rem\",\n verticalAlign: \"middle\",\n };\n}\n\nexport const progressTrack: CSSProperties = {\n height: \"4px\",\n background: \"rgba(255,255,255,0.08)\",\n borderRadius: \"2px\",\n overflow: \"hidden\",\n margin: \"0.5rem 0\",\n};\n\nexport function progressBar(pct: number): CSSProperties {\n return {\n height: \"100%\",\n width: `${pct}%`,\n background: ACCENT,\n borderRadius: \"2px\",\n transition: \"width 300ms ease\",\n };\n}\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport type { ResolvedTree } from \"@waypointjs/core\";\nimport { badge, progressBar, progressTrack, TEXT_DIM, TEXT_BRIGHT, ACCENT } from \"../styles\";\n\ninterface StepTreeProps {\n schema: WaypointSchema;\n tree: ResolvedTree;\n currentStepId: string | null;\n progress: number;\n completed: boolean;\n}\n\nexport function StepTree({ schema, tree, currentStepId, progress, completed }: StepTreeProps) {\n const currentIdx = tree.steps.findIndex((s) => s.definition.id === currentStepId);\n\n return (\n <div>\n {/* Schema info */}\n <div style={{ marginBottom: \"0.75rem\" }}>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>schema</div>\n <div style={{ color: TEXT_BRIGHT, fontWeight: \"bold\" }}>{schema.name}</div>\n <div style={{ color: TEXT_DIM }}>{schema.id} · v{schema.version}</div>\n </div>\n\n {/* Progress */}\n <div style={{ marginBottom: \"0.75rem\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", color: TEXT_DIM, fontSize: \"0.65rem\" }}>\n <span>progression</span>\n <span>{completed ? \"✓ terminé\" : `${progress}%`}</span>\n </div>\n <div style={progressTrack}>\n <div style={progressBar(completed ? 100 : progress)} />\n </div>\n </div>\n\n {/* Visible steps */}\n <div style={{ marginBottom: \"0.5rem\" }}>\n {tree.steps.map((step, i) => {\n const isCurrent = step.definition.id === currentStepId;\n const isDone = completed || i < currentIdx;\n return (\n <div\n key={step.definition.id}\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"0.5rem\",\n padding: \"0.3rem 0\",\n borderLeft: isCurrent ? `2px solid ${ACCENT}` : \"2px solid transparent\",\n paddingLeft: \"0.5rem\",\n marginLeft: \"-0.5rem\",\n opacity: (!isDone && !isCurrent) ? 0.45 : 1,\n }}\n >\n <div style={{\n width: \"1.1rem\",\n height: \"1.1rem\",\n borderRadius: \"50%\",\n background: isDone ? \"#22c55e\" : isCurrent ? ACCENT : \"rgba(255,255,255,0.1)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"0.6rem\",\n flexShrink: 0,\n marginTop: \"0.1rem\",\n }}>\n {isDone ? \"✓\" : i + 1}\n </div>\n <div>\n <div style={{ color: isCurrent ? TEXT_BRIGHT : TEXT_DIM, fontWeight: isCurrent ? \"bold\" : \"normal\" }}>\n {step.definition.title}\n </div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>{step.definition.url}</div>\n </div>\n </div>\n );\n })}\n </div>\n\n {/* Hidden steps */}\n {tree.hiddenSteps.length > 0 && (\n <div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\", marginBottom: \"0.25rem\" }}>\n steps cachées ({tree.hiddenSteps.length})\n </div>\n {tree.hiddenSteps.map((step) => (\n <div key={step.definition.id} style={{ display: \"flex\", alignItems: \"center\", gap: \"0.4rem\", padding: \"0.15rem 0\", opacity: 0.5 }}>\n <span style={{ fontSize: \"0.65rem\" }}>⊘</span>\n <span style={{ color: TEXT_DIM }}>{step.definition.title}</span>\n <span style={badge(\"#94a3b8\")}>hidden</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\n\ninterface JsonViewProps {\n data: unknown;\n depth?: number;\n}\n\nconst COLOR = {\n string: \"#86efac\", // green-300\n number: \"#93c5fd\", // blue-300\n boolean: \"#fdba74\", // orange-300\n null: \"#f87171\", // red-400\n key: \"#c4b5fd\", // violet-300\n bracket: \"#94a3b8\", // slate-400\n toggle: \"#6366f1\", // indigo-500\n};\n\nfunction Primitive({ value }: { value: string | number | boolean | null }) {\n if (value === null) return <span style={{ color: COLOR.null }}>null</span>;\n if (typeof value === \"boolean\")\n return <span style={{ color: COLOR.boolean }}>{String(value)}</span>;\n if (typeof value === \"number\")\n return <span style={{ color: COLOR.number }}>{value}</span>;\n return <span style={{ color: COLOR.string }}>\"{value}\"</span>;\n}\n\nexport function JsonView({ data, depth = 0 }: JsonViewProps) {\n const [open, setOpen] = useState(depth === 0);\n\n if (data === null || typeof data !== \"object\") {\n return <Primitive value={data as string | number | boolean | null} />;\n }\n\n const isArray = Array.isArray(data);\n const entries = isArray\n ? (data as unknown[]).map((v, i) => [String(i), v] as [string, unknown])\n : Object.entries(data as Record<string, unknown>);\n\n const count = entries.length;\n const open_b = isArray ? \"[\" : \"{\";\n const close_b = isArray ? \"]\" : \"}\";\n\n if (count === 0) {\n return (\n <span style={{ color: COLOR.bracket }}>\n {open_b}{close_b}\n </span>\n );\n }\n\n return (\n <span>\n <button\n onClick={() => setOpen((o) => !o)}\n style={{\n background: \"none\",\n border: \"none\",\n color: COLOR.toggle,\n cursor: \"pointer\",\n padding: 0,\n fontSize: \"0.72rem\",\n fontFamily: \"inherit\",\n }}\n >\n {open ? \"▾\" : \"▸\"}\n </button>\n <span style={{ color: COLOR.bracket }}>{open_b}</span>\n {!open && (\n <span style={{ color: COLOR.bracket, opacity: 0.6 }}>\n {count} {isArray ? \"item\" : \"key\"}{count > 1 ? \"s\" : \"\"}\n </span>\n )}\n <span style={{ color: COLOR.bracket }}>{!open ? close_b : \"\"}</span>\n\n {open && (\n <span>\n {entries.map(([k, v]) => (\n <div\n key={k}\n style={{ paddingLeft: \"1rem\" }}\n >\n {!isArray && (\n <span style={{ color: COLOR.key }}>\"{k}\"</span>\n )}\n {!isArray && <span style={{ color: COLOR.bracket }}>: </span>}\n <JsonView data={v} depth={depth + 1} />\n <span style={{ color: COLOR.bracket }}>,</span>\n </div>\n ))}\n <span style={{ color: COLOR.bracket }}>{close_b}</span>\n </span>\n )}\n </span>\n );\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { JsonView } from \"./JsonView\";\nimport { TEXT_DIM, TEXT_BRIGHT, ACCENT, BORDER } from \"../styles\";\n\ninterface DataInspectorProps {\n data: Record<string, Record<string, unknown>>;\n currentStepId: string | null;\n}\n\nexport function DataInspector({ data, currentStepId }: DataInspectorProps) {\n const entries = Object.entries(data);\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({});\n\n if (entries.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune donnée</div>;\n }\n\n return (\n <div>\n {entries.map(([stepId, stepData]) => {\n const isCurrent = stepId === currentStepId;\n const isCollapsed = collapsed[stepId] ?? !isCurrent;\n const fieldCount = Object.keys(stepData).length;\n\n return (\n <div key={stepId} style={{ marginBottom: \"0.4rem\" }}>\n <button\n onClick={() => setCollapsed((p) => ({ ...p, [stepId]: !isCollapsed }))}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.4rem\",\n width: \"100%\",\n background: isCurrent ? \"rgba(99,102,241,0.12)\" : \"rgba(255,255,255,0.03)\",\n border: `1px solid ${isCurrent ? ACCENT : BORDER}`,\n borderRadius: \"0.25rem\",\n color: isCurrent ? TEXT_BRIGHT : TEXT_DIM,\n cursor: \"pointer\",\n padding: \"0.3rem 0.5rem\",\n fontSize: \"0.72rem\",\n fontFamily: \"inherit\",\n textAlign: \"left\",\n }}\n >\n <span>{isCollapsed ? \"▸\" : \"▾\"}</span>\n <span style={{ fontWeight: isCurrent ? \"bold\" : \"normal\" }}>{stepId}</span>\n <span style={{ color: TEXT_DIM, marginLeft: \"auto\" }}>\n {fieldCount} champ{fieldCount > 1 ? \"s\" : \"\"}\n </span>\n {isCurrent && (\n <span style={{\n background: ACCENT,\n color: \"#fff\",\n borderRadius: \"0.2rem\",\n padding: \"0 0.3rem\",\n fontSize: \"0.6rem\",\n }}>\n actuel\n </span>\n )}\n </button>\n\n {!isCollapsed && (\n <div style={{ paddingLeft: \"0.75rem\", paddingTop: \"0.25rem\" }}>\n <JsonView data={stepData} depth={0} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport type { WaypointSchema } from \"@waypointjs/core\";\nimport { JsonView } from \"./JsonView\";\nimport { badge, TEXT_DIM, BORDER } from \"../styles\";\n\ninterface ExternalVarsViewProps {\n schema: WaypointSchema;\n externalVars: Record<string, unknown>;\n missingVars: string[];\n}\n\nexport function ExternalVarsView({ schema, externalVars, missingVars }: ExternalVarsViewProps) {\n const vars = schema.externalVariables ?? [];\n\n if (vars.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune variable externe déclarée</div>;\n }\n\n return (\n <div>\n {vars.map((v) => {\n const value = externalVars[v.id];\n const isMissing = missingVars.includes(v.id);\n const hasValue = value !== undefined;\n\n return (\n <div\n key={v.id}\n style={{\n padding: \"0.4rem 0\",\n borderBottom: `1px solid ${BORDER}`,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", flexWrap: \"wrap\", gap: \"0.2rem\", marginBottom: \"0.2rem\" }}>\n <span style={{ fontWeight: \"bold\" }}>{v.id}</span>\n {v.label && v.label !== v.id && (\n <span style={{ color: TEXT_DIM }}>— {v.label}</span>\n )}\n {v.blocking && <span style={badge(\"#f97316\")}>blocking</span>}\n {isMissing && <span style={badge(\"#ef4444\")}>missing</span>}\n {!hasValue && !isMissing && <span style={badge(\"#64748b\")}>undefined</span>}\n </div>\n {hasValue && (\n <div style={{ paddingLeft: \"0.5rem\" }}>\n <JsonView data={value} depth={0} />\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n}\n","\"use client\";\n\nimport { TEXT_DIM, TEXT_BRIGHT, ACCENT } from \"../styles\";\n\ninterface HistoryViewProps {\n history: string[];\n currentStepId: string | null;\n}\n\nexport function HistoryView({ history, currentStepId }: HistoryViewProps) {\n if (history.length === 0) {\n return <div style={{ color: TEXT_DIM, fontStyle: \"italic\" }}>Aucune navigation</div>;\n }\n\n return (\n <ol style={{ listStyle: \"none\", margin: 0, padding: 0 }}>\n {history.map((stepId, i) => {\n const isCurrent = stepId === currentStepId;\n return (\n <li\n key={`${stepId}-${i}`}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n padding: \"0.2rem 0\",\n color: isCurrent ? TEXT_BRIGHT : TEXT_DIM,\n fontWeight: isCurrent ? \"bold\" : \"normal\",\n }}\n >\n <span style={{ color: ACCENT, minWidth: \"1.2rem\", fontSize: \"0.65rem\" }}>\n {i + 1}.\n </span>\n <span>{stepId}</span>\n {isCurrent && (\n <span style={{\n fontSize: \"0.6rem\",\n background: ACCENT,\n color: \"#fff\",\n borderRadius: \"0.2rem\",\n padding: \"0 0.3rem\",\n }}>\n ici\n </span>\n )}\n </li>\n );\n })}\n </ol>\n );\n}\n","\"use client\";\n\nimport { useState, useEffect, useMemo, useContext } from \"react\";\nimport { useStore } from \"zustand\";\nimport { WaypointRuntimeContext } from \"@waypointjs/next\";\nimport {\n getResolvedTree,\n calculateProgressFromState,\n getMissingBlockingVars,\n} from \"@waypointjs/core\";\nimport type { WaypointRuntimeStore } from \"@waypointjs/core\";\n\nimport { StepTree } from \"./components/StepTree\";\nimport { DataInspector } from \"./components/DataInspector\";\nimport { ExternalVarsView } from \"./components/ExternalVarsView\";\nimport { HistoryView } from \"./components/HistoryView\";\nimport { JsonView } from \"./components/JsonView\";\nimport {\n panelContainer,\n panelHeader,\n sectionHeader,\n sectionBody,\n toggleBtn,\n TEXT_DIM,\n TEXT_BRIGHT,\n} from \"./styles\";\n\nexport interface DevPanelProps {\n position?: \"bottom-right\" | \"bottom-left\";\n defaultOpen?: boolean;\n /** Pass a store directly instead of reading from WaypointRuntimeContext */\n store?: import(\"zustand\").StoreApi<WaypointRuntimeStore>;\n}\n\n// ---------------------------------------------------------------------------\n// Collapsible section\n// ---------------------------------------------------------------------------\n\nfunction Section({\n id,\n label,\n collapsed,\n onToggle,\n children,\n}: {\n id: string;\n label: string;\n collapsed: boolean;\n onToggle: (id: string) => void;\n children: React.ReactNode;\n}) {\n return (\n <div>\n <div style={sectionHeader} onClick={() => onToggle(id)}>\n <span>{label}</span>\n <span style={{ fontSize: \"0.65rem\" }}>{collapsed ? \"▸\" : \"▾\"}</span>\n </div>\n {!collapsed && <div style={sectionBody}>{children}</div>}\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// DevPanel\n// ---------------------------------------------------------------------------\n\nexport function DevPanel({ position = \"bottom-right\", defaultOpen = false, store: storeProp }: DevPanelProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const [isMounted, setIsMounted] = useState(false);\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({\n nav: false,\n data: false,\n vars: true,\n history: true,\n raw: true,\n });\n\n // SSR safety — don't render until client-side hydration is complete\n useEffect(() => setIsMounted(true), []);\n\n const ctx = useContext(WaypointRuntimeContext);\n const store = storeProp ?? ctx?.store;\n\n const schema = useStore(store!, (s: WaypointRuntimeStore) => s.schema);\n const data = useStore(store!, (s: WaypointRuntimeStore) => s.data);\n const externalVars = useStore(store!, (s: WaypointRuntimeStore) => s.externalVars);\n const currentStepId = useStore(store!, (s: WaypointRuntimeStore) => s.currentStepId);\n const history = useStore(store!, (s: WaypointRuntimeStore) => s.history);\n const isSubmitting = useStore(store!, (s: WaypointRuntimeStore) => s.isSubmitting);\n const completed = useStore(store!, (s: WaypointRuntimeStore) => s.completed);\n\n const fullState = useStore(store!, (s: WaypointRuntimeStore) => s);\n const tree = useMemo(() => getResolvedTree(fullState), [fullState]);\n const progress = useMemo(() => calculateProgressFromState(fullState), [fullState]);\n const missingVars = useMemo(() => getMissingBlockingVars(fullState), [fullState]);\n\n if (!isMounted || !store || !schema) return null;\n\n const side = position === \"bottom-left\" ? \"left\" : \"right\";\n\n function toggleSection(id: string) {\n setCollapsed((p) => ({ ...p, [id]: !p[id] }));\n }\n\n return (\n <>\n {/* Toggle button */}\n <button\n style={{\n ...toggleBtn,\n [side]: \"1.25rem\",\n right: side === \"right\" ? \"1.25rem\" : undefined,\n left: side === \"left\" ? \"1.25rem\" : undefined,\n }}\n onClick={() => setIsOpen((o) => !o)}\n title=\"Waypoint DevTools\"\n >\n ◈ waypoint\n {isSubmitting && (\n <span style={{ opacity: 0.7 }}>…</span>\n )}\n {missingVars.length > 0 && (\n <span style={{ background: \"#ef4444\", borderRadius: \"50%\", width: \"0.9rem\", height: \"0.9rem\", display: \"inline-flex\", alignItems: \"center\", justifyContent: \"center\", fontSize: \"0.65rem\", fontWeight: 700 }}>\n !\n </span>\n )}\n </button>\n\n {/* Panel */}\n <div style={panelContainer(isOpen, side)}>\n {/* Header */}\n <div style={panelHeader}>\n <div>\n <div style={{ color: TEXT_BRIGHT, fontWeight: \"bold\", fontSize: \"0.8rem\" }}>\n ◈ Waypoint DevTools\n </div>\n <div style={{ color: TEXT_DIM, fontSize: \"0.65rem\" }}>\n {completed ? \"✓ completed\" : isSubmitting ? \"⟳ submitting…\" : \"running\"}\n </div>\n </div>\n <button\n onClick={() => setIsOpen(false)}\n style={{ background: \"none\", border: \"none\", color: TEXT_DIM, cursor: \"pointer\", fontSize: \"1rem\", lineHeight: 1 }}\n >\n ×\n </button>\n </div>\n\n {/* Sections */}\n <Section id=\"nav\" label=\"Navigation\" collapsed={collapsed.nav ?? false} onToggle={toggleSection}>\n <StepTree\n schema={schema}\n tree={tree}\n currentStepId={currentStepId}\n progress={progress}\n completed={completed}\n />\n </Section>\n\n <Section id=\"data\" label=\"Données\" collapsed={collapsed.data ?? false} onToggle={toggleSection}>\n <DataInspector data={data} currentStepId={currentStepId} />\n </Section>\n\n <Section id=\"vars\" label=\"Variables externes\" collapsed={collapsed.vars ?? true} onToggle={toggleSection}>\n <ExternalVarsView\n schema={schema}\n externalVars={externalVars}\n missingVars={missingVars}\n />\n </Section>\n\n <Section id=\"history\" label=\"Historique\" collapsed={collapsed.history ?? true} onToggle={toggleSection}>\n <HistoryView history={history} currentStepId={currentStepId} />\n </Section>\n\n <Section id=\"raw\" label=\"État brut\" collapsed={collapsed.raw ?? true} onToggle={toggleSection}>\n <div style={{ fontSize: \"0.68rem\" }}>\n <JsonView\n data={{\n schema: schema.id,\n currentStepId,\n progress,\n completed,\n isSubmitting,\n data,\n externalVars,\n history,\n }}\n depth={0}\n />\n </div>\n </Section>\n </div>\n </>\n );\n}\n","\"use client\";\n\nimport { DevPanel } from \"./DevPanel\";\nimport type { DevPanelProps } from \"./DevPanel\";\n\nexport type WaypointDevtoolsProps = DevPanelProps & {\n /** Force display even in production. Useful for demo/staging environments. */\n forceShow?: boolean;\n};\n\n/**\n * Drop-in debug panel for Waypoint Runtime.\n *\n * - **Dev-only** by default: renders nothing in production (NODE_ENV !== \"development\").\n * - Use `forceShow` to display in production (e.g. demo environments).\n * - Must be placed **inside** a `<WaypointRunner>` to access the runtime context.\n *\n * @example\n * <WaypointRunner schema={mySchema} onComplete={...}>\n * {children}\n * <WaypointDevtools /> // dev only\n * <WaypointDevtools forceShow /> // always visible\n * </WaypointRunner>\n */\nexport function WaypointDevtools({ forceShow, ...props }: WaypointDevtoolsProps) {\n if (process.env.NODE_ENV !== \"development\" && !forceShow) {\n return null;\n }\n return <DevPanel {...props} />;\n}\n"]}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@waypointjs/devtools",
3
- "version": "0.1.0",
3
+ "version": "0.1.4",
4
4
  "description": "Dev-only debug panel for Waypoint Runtime",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
- "main": "./src/index.ts",
8
- "module": "./src/index.ts",
7
+ "main": "./dist/index.cjs",
8
+ "module": "./dist/index.js",
9
9
  "types": "./dist/index.d.ts",
10
10
  "exports": {
11
11
  ".": {
12
12
  "types": "./dist/index.d.ts",
13
- "import": "./src/index.ts",
14
- "require": "./src/index.ts"
13
+ "import": "./dist/index.js",
14
+ "require": "./dist/index.cjs"
15
15
  }
16
16
  },
17
17
  "files": [
@@ -19,8 +19,8 @@
19
19
  ],
20
20
  "dependencies": {
21
21
  "zustand": "^4.5.2",
22
- "@waypointjs/core": "0.1.0",
23
- "@waypointjs/next": "0.1.0"
22
+ "@waypointjs/core": "0.1.4",
23
+ "@waypointjs/next": "0.1.4"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@types/node": "^20.19.33",
@@ -33,6 +33,10 @@
33
33
  "react": ">=18",
34
34
  "react-dom": ">=18"
35
35
  },
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/tmauc/waypoint"
39
+ },
36
40
  "scripts": {
37
41
  "build": "tsup",
38
42
  "dev": "tsup --watch",
package/src/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export { WaypointDevtools } from "./WaypointDevtools";
2
- export type { WaypointDevtoolsProps } from "./WaypointDevtools";