@k2b/ui 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/browser/actions/index.js +2 -2
  2. package/dist/browser/actions/index.js.map +1 -1
  3. package/dist/browser/chat/ChatComposer.js +1 -1
  4. package/dist/browser/chat/ChatComposer.js.map +1 -1
  5. package/dist/browser/chat/ChatContextPopup.js.map +1 -1
  6. package/dist/browser/chat/ChatPrimitives.js +2 -2
  7. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  8. package/dist/browser/chat/ChatTasks.js +1 -1
  9. package/dist/browser/chat/ChatTasks.js.map +1 -1
  10. package/dist/browser/chat/ChatTimeline.js +1 -1
  11. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  12. package/dist/browser/chat/composer-document.js.map +1 -1
  13. package/dist/browser/chat/index.js.map +1 -1
  14. package/dist/browser/content/Chart.js +3 -3
  15. package/dist/browser/content/Chart.js.map +1 -1
  16. package/dist/browser/content/ChartExplorer.js +4 -4
  17. package/dist/browser/content/ChartExplorer.js.map +1 -1
  18. package/dist/browser/content/ChartExplorerControls.js +1 -1
  19. package/dist/browser/content/ChartExplorerControls.js.map +1 -1
  20. package/dist/browser/content/ChartFilterControls.js +2 -2
  21. package/dist/browser/content/ChartFilterControls.js.map +1 -1
  22. package/dist/browser/content/ChartSnapshotView.js +2 -1
  23. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  24. package/dist/browser/content/FileView.js +7 -3
  25. package/dist/browser/content/FileView.js.map +1 -1
  26. package/dist/browser/content/MarkdownView.js.map +1 -1
  27. package/dist/browser/content/Pagination.js.map +1 -1
  28. package/dist/browser/content/chart-explorer.js.map +1 -1
  29. package/dist/browser/content/chart-inspection.js.map +1 -1
  30. package/dist/browser/content/chart-line-gaps.js.map +1 -1
  31. package/dist/browser/content/chart-snapshot.js.map +1 -1
  32. package/dist/browser/content/file-view-preview.js.map +1 -1
  33. package/dist/browser/content/index.js +9 -9
  34. package/dist/browser/content/index.js.map +1 -1
  35. package/dist/browser/feedback/toast.js.map +1 -1
  36. package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
  37. package/dist/browser/inputs/Select.js.map +1 -1
  38. package/dist/browser/inputs/markdown/behaviors.js +1 -1
  39. package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
  40. package/dist/browser/layout/AppWorkspace.js +3 -3
  41. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  42. package/dist/browser/layout/DetailPanel.js +1 -1
  43. package/dist/browser/layout/DetailPanel.js.map +1 -1
  44. package/dist/browser/layout/ScrollArea.js.map +1 -1
  45. package/dist/browser/layout/SidebarItemPreview.js +1 -1
  46. package/dist/browser/layout/SidebarItemPreview.js.map +1 -1
  47. package/dist/browser/layout/app-workspace-controller.js +1 -1
  48. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  49. package/dist/browser/layout/app-workspace-state.js.map +1 -1
  50. package/dist/browser/layout/index.js +3 -3
  51. package/dist/browser/layout/index.js.map +1 -1
  52. package/dist/ssr/actions/index.js +2 -2
  53. package/dist/ssr/actions/index.js.map +1 -1
  54. package/dist/ssr/chat/ChatComposer.js +1 -1
  55. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  56. package/dist/ssr/chat/ChatContextPopup.js.map +1 -1
  57. package/dist/ssr/chat/ChatPrimitives.js +2 -2
  58. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  59. package/dist/ssr/chat/ChatTasks.js +1 -1
  60. package/dist/ssr/chat/ChatTasks.js.map +1 -1
  61. package/dist/ssr/chat/ChatTimeline.js +1 -1
  62. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  63. package/dist/ssr/chat/composer-document.js.map +1 -1
  64. package/dist/ssr/chat/index.js.map +1 -1
  65. package/dist/ssr/content/Chart.js +3 -3
  66. package/dist/ssr/content/Chart.js.map +1 -1
  67. package/dist/ssr/content/ChartExplorer.js +4 -4
  68. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  69. package/dist/ssr/content/ChartExplorerControls.js +1 -1
  70. package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
  71. package/dist/ssr/content/ChartFilterControls.js +2 -2
  72. package/dist/ssr/content/ChartFilterControls.js.map +1 -1
  73. package/dist/ssr/content/ChartSnapshotView.js +2 -1
  74. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  75. package/dist/ssr/content/FileView.js +7 -3
  76. package/dist/ssr/content/FileView.js.map +1 -1
  77. package/dist/ssr/content/MarkdownView.js.map +1 -1
  78. package/dist/ssr/content/Pagination.js.map +1 -1
  79. package/dist/ssr/content/chart-explorer.js.map +1 -1
  80. package/dist/ssr/content/chart-inspection.js.map +1 -1
  81. package/dist/ssr/content/chart-line-gaps.js.map +1 -1
  82. package/dist/ssr/content/chart-snapshot.js.map +1 -1
  83. package/dist/ssr/content/file-view-preview.js.map +1 -1
  84. package/dist/ssr/content/index.js +9 -9
  85. package/dist/ssr/content/index.js.map +1 -1
  86. package/dist/ssr/feedback/toast.js.map +1 -1
  87. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
  88. package/dist/ssr/inputs/Select.js.map +1 -1
  89. package/dist/ssr/inputs/markdown/behaviors.js +1 -1
  90. package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
  91. package/dist/ssr/layout/AppWorkspace.js +3 -3
  92. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  93. package/dist/ssr/layout/DetailPanel.js +1 -1
  94. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  95. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  96. package/dist/ssr/layout/SidebarItemPreview.js +1 -1
  97. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -1
  98. package/dist/ssr/layout/app-workspace-controller.js +1 -1
  99. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  100. package/dist/ssr/layout/app-workspace-state.js.map +1 -1
  101. package/dist/ssr/layout/index.js +3 -3
  102. package/dist/ssr/layout/index.js.map +1 -1
  103. package/dist/types/actions/index.d.ts +4 -4
  104. package/dist/types/chat/ChatComposer.d.ts +1 -1
  105. package/dist/types/chat/index.d.ts +1 -1
  106. package/dist/types/content/Chart.d.ts +2 -2
  107. package/dist/types/content/ChartExplorer.d.ts +2 -2
  108. package/dist/types/content/ChartExplorerControls.d.ts +1 -1
  109. package/dist/types/content/ChartSnapshotView.d.ts +1 -1
  110. package/dist/types/content/chart-inspection.d.ts +1 -1
  111. package/dist/types/content/index.d.ts +15 -15
  112. package/dist/types/layout/AppWorkspace.d.ts +1 -1
  113. package/dist/types/layout/SidebarItemPreview.d.ts +1 -1
  114. package/dist/types/layout/index.d.ts +3 -3
  115. package/package.json +1 -3
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","createUniqueId","onCleanup","onMount","isServer","selectedChartSvg","useUiMessages","createChartInspection","sameChartDatum","ChartSnapshotView","props","messages","container","tooltip","anchor","id","inspection","cursor","kind","snapshot","enabled","format","datum","marks","find","m","rows","select","mark","onSelect","rowKey","invalidate","selectData","filter","selectedKey","map","outside","event","target","Node","contains","close","window","addEventListener","removeEventListener","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_$addEventListener","key","focus","leave","click","move","down","_ref$","_$use","_ref$2","_ref$3","_$setAttribute","_$effect","_p$","_v$","_v$2","style","_v$3","interactiveChart","_v$4","stretch","undefined","_v$5","width","_v$6","height","_v$7","_v$8","svg","e","t","_$style","a","o","i","_$setStyleProperty","n","s","h","_$setProperty","_$runHydrationEvents","_$delegateEvents"],"sources":["content/ChartSnapshotView.tsx"],"sourcesContent":["import type { ChartCursor } from \"./chart-cursor\";\nimport { createEffect, createUniqueId, onCleanup, onMount, type JSX } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { selectedChartSvg } from \"./chart-svg\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { createChartInspection, sameChartDatum } from \"./chart-inspection\";\nimport type { ChartSnapshot } from \"./chart-snapshot\";\n\n/** Internal display for server-prepared geometry. Viewports are snapshot-owned. */\nexport function ChartSnapshotView(props: {\n snapshot: ChartSnapshot;\n cursor?: ChartCursor;\n selectedKey: string | null;\n onSelect: (key: string) => void;\n style?: JSX.CSSProperties;\n}) {\n const messages = useUiMessages();\n let container: HTMLDivElement | undefined;\n let tooltip: HTMLSpanElement | undefined;\n let anchor: HTMLSpanElement | undefined;\n const id = `k2b-chart-tooltip-${createUniqueId()}`;\n const inspection = createChartInspection({\n container: () => container,\n cursor: () => props.cursor,\n tooltip: () => tooltip,\n anchor: () => anchor,\n kind: () => props.snapshot.kind,\n enabled: () => true,\n format: ({ datum }) => props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum))?.tooltip ?? { rows: [] },\n select: ({ datum }) => {\n const mark = props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum));\n if (mark) props.onSelect(mark.rowKey);\n },\n });\n createEffect(() => {\n props.snapshot;\n inspection.invalidate();\n });\n createEffect(() => inspection.selectData(props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum)));\n onMount(() => {\n const outside = (event: Event) => {\n if (event.target instanceof Node && !container?.contains(event.target)) inspection.close();\n };\n window.addEventListener(\"pointerdown\", outside);\n window.addEventListener(\"scroll\", inspection.close, true);\n onCleanup(() => {\n window.removeEventListener(\"pointerdown\", outside);\n window.removeEventListener(\"scroll\", inspection.close, true);\n });\n });\n onCleanup(inspection.close);\n return (\n <div\n ref={container}\n class=\"k2b-chart\"\n data-chart-kind={props.snapshot.kind}\n data-interactive=\"true\"\n style={props.style}\n role=\"group\"\n aria-label={messages().interactiveChart}\n tabIndex={0}\n onPointerDown={inspection.down}\n onPointerMove={inspection.move}\n onClick={inspection.click}\n onPointerLeave={inspection.leave}\n onFocusIn={inspection.focus}\n onFocusOut={inspection.close}\n onKeyDown={inspection.key}\n >\n <div\n class=\"k2b-chart__svg\"\n data-stretch={props.snapshot.stretch ? \"true\" : undefined}\n style={{\n \"--k2b-chart-width\": `${props.snapshot.width}px`,\n \"--k2b-chart-height\": `${props.snapshot.height}px`,\n \"aspect-ratio\": `${props.snapshot.width}/${props.snapshot.height}`,\n }}\n innerHTML={\n isServer\n ? selectedChartSvg(\n props.snapshot.svg,\n props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum),\n )\n : props.snapshot.svg\n }\n />\n <span ref={anchor} class=\"k2b-chart__anchor\" aria-hidden=\"true\" />\n <span ref={tooltip} id={id} class=\"k2b-chart__tooltip k2b-tooltip\" role=\"tooltip\" popover=\"manual\" data-instant=\"true\" />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;AACA,SAASA,YAAY,EAAEC,cAAc,EAAEC,SAAS,EAAEC,OAAO,QAAkB,UAAU;AACrF,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,gBAAgB,QAAQ,aAAa;AAC9C,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,qBAAqB,EAAEC,cAAc,QAAQ,oBAAoB;AAG1E;AACA,OAAO,SAASC,iBAAiBA,CAACC,KAMjC,EAAE;EACD,MAAMC,QAAQ,GAAGL,aAAa,CAAC,CAAC;EAChC,IAAIM,SAAqC;EACzC,IAAIC,OAAoC;EACxC,IAAIC,MAAmC;EACvC,MAAMC,EAAE,GAAG,qBAAqBd,cAAc,CAAC,CAAC,EAAE;EAClD,MAAMe,UAAU,GAAGT,qBAAqB,CAAC;IACvCK,SAAS,EAAEA,CAAA,KAAMA,SAAS;IAC1BK,MAAM,EAAEA,CAAA,KAAMP,KAAK,CAACO,MAAM;IAC1BJ,OAAO,EAAEA,CAAA,KAAMA,OAAO;IACtBC,MAAM,EAAEA,CAAA,KAAMA,MAAM;IACpBI,IAAI,EAAEA,CAAA,KAAMR,KAAK,CAACS,QAAQ,CAACD,IAAI;IAC/BE,OAAO,EAAEA,CAAA,KAAM,IAAI;IACnBC,MAAM,EAAEA,CAAC;MAAEC;IAAM,CAAC,KAAKZ,KAAK,CAACS,QAAQ,CAACI,KAAK,CAACC,IAAI,CAAEC,CAAC,IAAKjB,cAAc,CAACiB,CAAC,CAACH,KAAK,EAAEA,KAAK,CAAC,CAAC,EAAET,OAAO,IAAI;MAAEa,IAAI,EAAE;IAAG,CAAC;IAChHC,MAAM,EAAEA,CAAC;MAAEL;IAAM,CAAC,KAAK;MACrB,MAAMM,IAAI,GAAGlB,KAAK,CAACS,QAAQ,CAACI,KAAK,CAACC,IAAI,CAAEC,CAAC,IAAKjB,cAAc,CAACiB,CAAC,CAACH,KAAK,EAAEA,KAAK,CAAC,CAAC;MAC7E,IAAIM,IAAI,EAAElB,KAAK,CAACmB,QAAQ,CAACD,IAAI,CAACE,MAAM,CAAC;IACvC;EACF,CAAC,CAAC;EACF9B,YAAY,CAAC,MAAM;IACjBU,KAAK,CAACS,QAAQ;IACdH,UAAU,CAACe,UAAU,CAAC,CAAC;EACzB,CAAC,CAAC;EACF/B,YAAY,CAAC,MAAMgB,UAAU,CAACgB,UAAU,CAACtB,KAAK,CAACS,QAAQ,CAACI,KAAK,CAACU,MAAM,CAAER,CAAC,IAAKA,CAAC,CAACK,MAAM,KAAKpB,KAAK,CAACwB,WAAW,CAAC,CAACC,GAAG,CAAEV,CAAC,IAAKA,CAAC,CAACH,KAAK,CAAC,CAAC,CAAC;EACjInB,OAAO,CAAC,MAAM;IACZ,MAAMiC,OAAO,GAAIC,KAAY,IAAK;MAChC,IAAIA,KAAK,CAACC,MAAM,YAAYC,IAAI,IAAI,CAAC3B,SAAS,EAAE4B,QAAQ,CAACH,KAAK,CAACC,MAAM,CAAC,EAAEtB,UAAU,CAACyB,KAAK,CAAC,CAAC;IAC5F,CAAC;IACDC,MAAM,CAACC,gBAAgB,CAAC,aAAa,EAAEP,OAAO,CAAC;IAC/CM,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAE3B,UAAU,CAACyB,KAAK,EAAE,IAAI,CAAC;IACzDvC,SAAS,CAAC,MAAM;MACdwC,MAAM,CAACE,mBAAmB,CAAC,aAAa,EAAER,OAAO,CAAC;MAClDM,MAAM,CAACE,mBAAmB,CAAC,QAAQ,EAAE5B,UAAU,CAACyB,KAAK,EAAE,IAAI,CAAC;IAC9D,CAAC,CAAC;EACJ,CAAC,CAAC;EACFvC,SAAS,CAACc,UAAU,CAACyB,KAAK,CAAC;EAC3B;IAAA,IAAAI,IAAA,GAAAC,gBAAA,CAAAC,MAAA;MAAAC,KAAA,GAAAH,IAAA,CAAAI,UAAA;MAAAC,KAAA,GAAAF,KAAA,CAAAG,WAAA;MAAAC,KAAA,GAAAF,KAAA,CAAAC,WAAA;IAAAE,kBAAA,CAAAR,IAAA,aAgBe7B,UAAU,CAACsC,GAAG;IAAAD,kBAAA,CAAAR,IAAA,cADb7B,UAAU,CAACyB,KAAK;IAAAY,kBAAA,CAAAR,IAAA,aADjB7B,UAAU,CAACuC,KAAK;IAAAF,kBAAA,CAAAR,IAAA,kBADX7B,UAAU,CAACwC,KAAK;IAAAH,kBAAA,CAAAR,IAAA,WADvB7B,UAAU,CAACyC,KAAK;IAAAJ,kBAAA,CAAAR,IAAA,iBADV7B,UAAU,CAAC0C,IAAI;IAAAL,kBAAA,CAAAR,IAAA,iBADf7B,UAAU,CAAC2C,IAAI;IAAA,IAAAC,KAAA,GARzBhD,SAAS;IAAA,OAAAgD,KAAA,kBAAAC,KAAA,CAAAD,KAAA,EAAAf,IAAA,IAATjC,SAAS,GAAAiC,IAAA;IAAA,IAAAiB,MAAA,GAiCHhD,MAAM;IAAA,OAAAgD,MAAA,kBAAAD,KAAA,CAAAC,MAAA,EAAAZ,KAAA,IAANpC,MAAM,GAAAoC,KAAA;IAAA,IAAAa,MAAA,GACNlD,OAAO;IAAA,OAAAkD,MAAA,kBAAAF,KAAA,CAAAE,MAAA,EAAAX,KAAA,IAAPvC,OAAO,GAAAuC,KAAA;IAAAY,cAAA,CAAAZ,KAAA,QAAMrC,EAAE;IAAAkD,QAAA,CAAAC,GAAA;MAAA,IAAAC,GAAA,GAhCTzD,KAAK,CAACS,QAAQ,CAACD,IAAI;QAAAkD,IAAA,GAE7B1D,KAAK,CAAC2D,KAAK;QAAAC,IAAA,GAEN3D,QAAQ,CAAC,CAAC,CAAC4D,gBAAgB;QAAAC,IAAA,GAYvB9D,KAAK,CAACS,QAAQ,CAACsD,OAAO,GAAG,MAAM,GAAGC,SAAS;QAAAC,IAAA,GAElC,GAAGjE,KAAK,CAACS,QAAQ,CAACyD,KAAK,IAAI;QAAAC,IAAA,GAC1B,GAAGnE,KAAK,CAACS,QAAQ,CAAC2D,MAAM,IAAI;QAAAC,IAAA,GAClC,GAAGrE,KAAK,CAACS,QAAQ,CAACyD,KAAK,IAAIlE,KAAK,CAACS,QAAQ,CAAC2D,MAAM,EAAE;QAAAE,IAAA,GAGlE5E,QAAQ,GACJC,gBAAgB,CACdK,KAAK,CAACS,QAAQ,CAAC8D,GAAG,EAClBvE,KAAK,CAACS,QAAQ,CAACI,KAAK,CAACU,MAAM,CAAER,CAAC,IAAKA,CAAC,CAACK,MAAM,KAAKpB,KAAK,CAACwB,WAAW,CAAC,CAACC,GAAG,CAAEV,CAAC,IAAKA,CAAC,CAACH,KAAK,CACvF,CAAC,GACDZ,KAAK,CAACS,QAAQ,CAAC8D,GAAG;MAAAd,GAAA,KAAAD,GAAA,CAAAgB,CAAA,IAAAlB,cAAA,CAAAnB,IAAA,qBAAAqB,GAAA,CAAAgB,CAAA,GAAAf,GAAA;MAAAD,GAAA,CAAAiB,CAAA,GAAAC,OAAA,CAAAvC,IAAA,EAAAuB,IAAA,EAAAF,GAAA,CAAAiB,CAAA;MAAAb,IAAA,KAAAJ,GAAA,CAAAmB,CAAA,IAAArB,cAAA,CAAAnB,IAAA,gBAAAqB,GAAA,CAAAmB,CAAA,GAAAf,IAAA;MAAAE,IAAA,KAAAN,GAAA,CAAAoB,CAAA,IAAAtB,cAAA,CAAAhB,KAAA,kBAAAkB,GAAA,CAAAoB,CAAA,GAAAd,IAAA;MAAAG,IAAA,KAAAT,GAAA,CAAAqB,CAAA,IAAAC,kBAAA,CAAAxC,KAAA,uBAAAkB,GAAA,CAAAqB,CAAA,GAAAZ,IAAA;MAAAE,IAAA,KAAAX,GAAA,CAAAuB,CAAA,IAAAD,kBAAA,CAAAxC,KAAA,wBAAAkB,GAAA,CAAAuB,CAAA,GAAAZ,IAAA;MAAAE,IAAA,KAAAb,GAAA,CAAAwB,CAAA,IAAAF,kBAAA,CAAAxC,KAAA,kBAAAkB,GAAA,CAAAwB,CAAA,GAAAX,IAAA;MAAAC,IAAA,KAAAd,GAAA,CAAAyB,CAAA,IAAAC,aAAA,CAAA5C,KAAA,eAAAkB,GAAA,CAAAyB,CAAA,GAAAX,IAAA;MAAA,OAAAd,GAAA;IAAA;MAAAgB,CAAA,EAAAR,SAAA;MAAAS,CAAA,EAAAT,SAAA;MAAAW,CAAA,EAAAX,SAAA;MAAAY,CAAA,EAAAZ,SAAA;MAAAa,CAAA,EAAAb,SAAA;MAAAe,CAAA,EAAAf,SAAA;MAAAgB,CAAA,EAAAhB,SAAA;MAAAiB,CAAA,EAAAjB;IAAA;IAAAmB,oBAAA;IAAA,OAAAhD,IAAA;EAAA;AAOhC;AAACiD,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","createUniqueId","onCleanup","onMount","isServer","useUiMessages","createChartInspection","sameChartDatum","selectedChartSvg","ChartSnapshotView","props","messages","container","tooltip","anchor","id","inspection","cursor","kind","snapshot","enabled","format","datum","marks","find","m","rows","select","mark","onSelect","rowKey","invalidate","selectData","filter","selectedKey","map","outside","event","target","Node","contains","close","window","addEventListener","removeEventListener","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_el$4","_$addEventListener","key","focus","leave","click","move","down","_ref$","_$use","_ref$2","_ref$3","_$setAttribute","_$effect","_p$","_v$","_v$2","style","_v$3","interactiveChart","_v$4","stretch","undefined","_v$5","width","_v$6","height","_v$7","_v$8","svg","e","t","_$style","a","o","i","_$setStyleProperty","n","s","h","_$setProperty","_$runHydrationEvents","_$delegateEvents"],"sources":["content/ChartSnapshotView.tsx"],"sourcesContent":["import { createEffect, createUniqueId, type JSX, onCleanup, onMount } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { ChartCursor } from \"./chart-cursor\";\nimport { createChartInspection, sameChartDatum } from \"./chart-inspection\";\nimport type { ChartSnapshot } from \"./chart-snapshot\";\nimport { selectedChartSvg } from \"./chart-svg\";\n\n/** Internal display for server-prepared geometry. Viewports are snapshot-owned. */\nexport function ChartSnapshotView(props: {\n snapshot: ChartSnapshot;\n cursor?: ChartCursor;\n selectedKey: string | null;\n onSelect: (key: string) => void;\n style?: JSX.CSSProperties;\n}) {\n const messages = useUiMessages();\n let container: HTMLDivElement | undefined;\n let tooltip: HTMLSpanElement | undefined;\n let anchor: HTMLSpanElement | undefined;\n const id = `k2b-chart-tooltip-${createUniqueId()}`;\n const inspection = createChartInspection({\n container: () => container,\n cursor: () => props.cursor,\n tooltip: () => tooltip,\n anchor: () => anchor,\n kind: () => props.snapshot.kind,\n enabled: () => true,\n format: ({ datum }) => props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum))?.tooltip ?? { rows: [] },\n select: ({ datum }) => {\n const mark = props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum));\n if (mark) props.onSelect(mark.rowKey);\n },\n });\n createEffect(() => {\n props.snapshot;\n inspection.invalidate();\n });\n createEffect(() => inspection.selectData(props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum)));\n onMount(() => {\n const outside = (event: Event) => {\n if (event.target instanceof Node && !container?.contains(event.target)) inspection.close();\n };\n window.addEventListener(\"pointerdown\", outside);\n window.addEventListener(\"scroll\", inspection.close, true);\n onCleanup(() => {\n window.removeEventListener(\"pointerdown\", outside);\n window.removeEventListener(\"scroll\", inspection.close, true);\n });\n });\n onCleanup(inspection.close);\n return (\n <div\n ref={container}\n class=\"k2b-chart\"\n data-chart-kind={props.snapshot.kind}\n data-interactive=\"true\"\n style={props.style}\n role=\"group\"\n aria-label={messages().interactiveChart}\n tabIndex={0}\n onPointerDown={inspection.down}\n onPointerMove={inspection.move}\n onClick={inspection.click}\n onPointerLeave={inspection.leave}\n onFocusIn={inspection.focus}\n onFocusOut={inspection.close}\n onKeyDown={inspection.key}\n >\n <div\n class=\"k2b-chart__svg\"\n data-stretch={props.snapshot.stretch ? \"true\" : undefined}\n style={{\n \"--k2b-chart-width\": `${props.snapshot.width}px`,\n \"--k2b-chart-height\": `${props.snapshot.height}px`,\n \"aspect-ratio\": `${props.snapshot.width}/${props.snapshot.height}`,\n }}\n innerHTML={\n isServer\n ? selectedChartSvg(\n props.snapshot.svg,\n props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum),\n )\n : props.snapshot.svg\n }\n />\n <span ref={anchor} class=\"k2b-chart__anchor\" aria-hidden=\"true\" />\n <span ref={tooltip} id={id} class=\"k2b-chart__tooltip k2b-tooltip\" role=\"tooltip\" popover=\"manual\" data-instant=\"true\" />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -46,10 +46,10 @@ var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=k2b-content-file
46
46
 
47
47
  import { mutation } from "@k2b/stdlib/solid";
48
48
  import { createEffect, createMemo, createResource, createSignal, For, Match, onCleanup, onMount, Show, Switch, untrack } from "solid-js";
49
+ import { Button } from "../actions/Button";
49
50
  import { prompts } from "../feedback/prompts";
50
51
  import { toast } from "../feedback/toast";
51
52
  import { MarkdownEditor } from "../inputs/markdown/MarkdownEditor";
52
- import { Button } from "../actions/Button";
53
53
  import { Select } from "../inputs/Select";
54
54
  import { useUiMessages } from "../intl/messages";
55
55
  import Placeholder from "../surfaces/Placeholder";
@@ -526,7 +526,9 @@ function DelimitedTextRenderer(props) {
526
526
  if (!props.previewPreferencesKey) return;
527
527
  try {
528
528
  setPreferences(readDelimitedPreferences(localStorage.getItem(props.previewPreferencesKey)));
529
- } catch {/* Storage may be disabled. */}
529
+ } catch {
530
+ /* Storage may be disabled. */
531
+ }
530
532
  });
531
533
  const update = patch => {
532
534
  const next = {
@@ -537,7 +539,9 @@ function DelimitedTextRenderer(props) {
537
539
  if (props.previewPreferencesKey) {
538
540
  try {
539
541
  localStorage.setItem(props.previewPreferencesKey, JSON.stringify(next));
540
- } catch {/* Keep the local selection. */}
542
+ } catch {
543
+ /* Keep the local selection. */
544
+ }
541
545
  }
542
546
  };
543
547
  const text = createMemo(() => decodeDelimitedContent(props.content, preferences().encoding));
@@ -1 +1 @@
1
- {"version":3,"names":["mutation","createEffect","createMemo","createResource","createSignal","For","Match","onCleanup","onMount","Show","Switch","untrack","prompts","toast","MarkdownEditor","Button","Select","useUiMessages","Placeholder","CodeDisplay","decodeDelimitedContent","readDelimitedPreferences","fileViewExtension","getFileViewPreviewKind","parseDelimitedText","MarkdownView","StructuredDataPreview","canPreviewFile","codeLanguage","path","extension","isMarkdown","file","content","encoding","mediaType","stripFrontmatter","text","match","exec","trimStart","slice","length","OverlayAction","props","classes","_$createComponent","when","href","fallback","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$addEventListener","onClick","_$effect","_p$","_v$","title","_v$2","_v$3","icon","e","_$setAttribute","t","a","_$className","undefined","_$runHydrationEvents","children","_el$3","_tmpl$2","_el$4","_el$5","nextSibling","_$insert","_v$4","_v$5","download","_v$6","_v$7","_v$8","o","i","OverlayPanel","_el$6","_tmpl$4","_el$7","_el$9","_el$0","_co$","_$getNextMarker","actions","_el$8","_tmpl$3","DownloadAction","messages","downloadHref","lastIndexOf","EditorToolButton","_el$1","_tmpl$5","_el$10","$$mousedown","preventDefault","_v$9","_v$0","_v$1","disabled","_v$10","_$setProperty","MoreLines","count","_el$11","_tmpl$6","_el$12","_tmpl$7","previewMoreLines","size","variant","TextExcerpt","lines","replace","split","limit","renderer","previewLines","Math","max","join","_el$13","_tmpl$8","markdown","code","language","headingScale","classList","toggle","onExpandPreview","MarkdownRenderer","editing","setEditing","_$memo","editor","edit","_el$14","_tmpl$9","draft","_","_el$15","_tmpl$0","aria-label","fill","value","onValueChange","setDraft","showStats","onSave","save","saveDisabled","dirty","saving","toolbarTrailing","preview","TextRenderer","_el$16","_tmpl$1","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_co$2","_el$23","_el$24","_co$3","_el$25","_el$26","$$keydown","event","metaKey","ctrlKey","key","toLowerCase","_el$27","_tmpl$10","_v$11","_v$12","_v$13","_v$14","saveShortcut","$$input","currentTarget","textEditor","JsonRenderer","parsed","ok","JSON","parse","parsedValue","result","_el$28","stringify","data","maxRows","DelimitedTextRenderer","preferences","setPreferences","delimiter","view","previewPreferencesKey","localStorage","getItem","update","patch","next","setItem","page","setPage","pageSize","rows","offset","settings","dialog","_el$29","_tmpl$11","_el$30","_el$31","_co$4","_el$32","_el$33","_co$5","_el$34","_el$35","_co$6","label","csvEncoding","options","csvSeparator","csvDefaultSeparator","csvComma","csvSemicolon","csvTab","csvView","dataTable","csvRaw","csvSettings","headers","emptyFile","description","delimitedFileEmpty","_el$36","_tmpl$12","_el$37","_el$38","_el$39","_el$40","_el$42","_el$43","_co$7","_el$44","_el$45","_co$8","each","header","index","_el$46","_tmpl$13","_el$47","column","number","row","_el$48","_tmpl$14","_el$49","_tmpl$15","columnsTruncated","_el$41","previewColumnsLimited","totalRows","_el$50","_tmpl$16","_el$60","_el$61","_co$10","_el$51","_el$54","_el$55","_co$9","_el$52","_el$56","_el$57","_co$0","_el$53","_el$58","_el$59","_co$1","_el$62","_el$63","_co$11","previous","min","mediaSource","previewHref","ImageRenderer","_el$64","_tmpl$17","_el$65","onPreviewError","_v$15","crossOrigin","_v$16","_v$17","PdfRenderer","noInlinePreview","_el$66","_tmpl$18","_v$18","_v$19","AudioRenderer","_el$67","_tmpl$19","_el$68","audioUnsupported","_v$20","_v$21","_v$22","VideoRenderer","_el$69","_tmpl$20","_el$70","videoUnsupported","_v$23","_v$24","_v$25","BinaryRenderer","noPreview","binaryFile","action","_el$71","_tmpl$21","_el$72","_el$73","_el$74","_co$12","BUILTIN_RENDERERS","id","component","editable","_file","formatFileViewSize","bytes","toFixed","FileView","savedDraft","setSavedDraft","nativeRevision","setNativeRevision","instanceRenderers","renderers","saveMutation","create","input","onSuccess","saved","success","fileSaved","onError","error","message","nativePreviewHref","kind","separator","includes","browserPreviewContent","candidate","some","refetch","revision","abort","loaded","load","loadedDraft","registerRefresh","unregister","resolvedContent","find","onDirtyChange","loading","mutate","_el$75","failedLoadFile","String","active","Renderer","_v$26","class","_v$27","_v$28","_$delegateEvents"],"sources":["content/FileView.tsx"],"sourcesContent":["/**\n * FileView — renders one file through a small renderer registry keyed by\n * media type / path. Editing is enabled purely by the presence of `save`;\n * without it every renderer is read-only. IDE-style chrome: editors reuse\n * the markdown editor's surface (toolbar with an in-toolbar save, Ctrl/Cmd+S),\n * previews are quiet paper panels with icon-only actions overlaid top-right.\n * Custom renderers are passed per instance, which keeps SSR requests and\n * independently mounted applications isolated.\n */\n\nimport { mutation } from \"@k2b/stdlib/solid\";\nimport {\n type Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n For,\n type JSX,\n Match,\n onCleanup,\n onMount,\n Show,\n Switch,\n untrack,\n} from \"solid-js\";\nimport { prompts } from \"../feedback/prompts\";\nimport { toast } from \"../feedback/toast\";\nimport { MarkdownEditor } from \"../inputs/markdown/MarkdownEditor\";\nimport { Button } from \"../actions/Button\";\nimport { Select } from \"../inputs/Select\";\nimport { useUiMessages } from \"../intl/messages\";\nimport Placeholder from \"../surfaces/Placeholder\";\nimport CodeDisplay, { type CodeDisplayLanguage } from \"./CodeDisplay\";\nimport { type DelimitedPreferences, decodeDelimitedContent, readDelimitedPreferences } from \"./delimited-preferences\";\nimport { type FileViewFile, fileViewExtension, getFileViewPreviewKind, parseDelimitedText } from \"./file-view-preview\";\nimport MarkdownView from \"./MarkdownView\";\nimport StructuredDataPreview, { type StructuredDataValue } from \"./StructuredDataPreview\";\n\nexport type { FileViewFile, FileViewPreviewKind } from \"./file-view-preview\";\nexport { canPreviewFile, getFileViewPreviewKind } from \"./file-view-preview\";\nexport type FileViewContent = { encoding: \"utf8\" | \"base64\"; content: string; mediaType: string };\n\nexport type FileViewProps = {\n /** Plain previews inherit the surrounding surface without a frame or inset padding. */\n variant?: \"default\" | \"plain\";\n /** Read-only excerpt limit; omitted renders the complete preview. */\n previewLines?: number;\n onExpandPreview?: () => void;\n headingScale?: \"compact\" | \"normal\" | \"large\";\n /** Optional browser-local preference scope, owned by the host. */\n previewPreferencesKey?: string;\n file: FileViewFile;\n load: () => Promise<FileViewContent>;\n /** Refetch the current path when this host-owned revision changes. */\n revision?: unknown;\n /** Register an awaitable refresh for the currently visible preview. */\n registerRefresh?: (refresh: () => Promise<void>) => void | (() => void);\n /** Presence enables editing for text-based renderers. */\n save?: (content: string) => Promise<void>;\n /** Authenticated inline URL used by browser-native image, PDF, audio, and video previews. */\n previewHref?: string | null;\n /** CORS mode for native image/audio/video previews. Omit to preserve browser defaults. */\n crossOrigin?: \"anonymous\" | \"use-credentials\";\n /** Native media failed to load; the host can renew a signed URL and offer retry. */\n onPreviewError?: () => void;\n downloadHref?: string | null;\n /** App-specific renderers matched before the built-ins for this instance. */\n renderers?: readonly FileViewRenderer[];\n /** Reports local edit state so a parent browser can guard navigation. */\n onDirtyChange?: (dirty: boolean) => void;\n class?: string;\n};\n\nexport type FileViewRendererProps = {\n /** Read-only excerpt limit; omitted renders the complete preview. */\n previewLines?: number;\n onExpandPreview?: () => void;\n headingScale?: \"compact\" | \"normal\" | \"large\";\n /** Optional browser-local preference scope, owned by the host. */\n previewPreferencesKey?: string;\n file: FileViewFile;\n content: FileViewContent;\n previewHref: string | null;\n crossOrigin?: \"anonymous\" | \"use-credentials\";\n onPreviewError?: () => void;\n downloadHref: string | null;\n /** Null when the file is read-only. */\n editor: {\n draft: () => string;\n setDraft: (value: string) => void;\n dirty: () => boolean;\n saving: () => boolean;\n save: () => Promise<void>;\n } | null;\n};\n\nexport type FileViewRenderer = {\n id: string;\n match: (file: FileViewFile, content: FileViewContent) => boolean;\n component: Component<FileViewRendererProps>;\n /** Text renderers that support the edit affordance when `save` is present. */\n editable?: boolean;\n};\n\nconst codeLanguage = (path: string): CodeDisplayLanguage => {\n const extension = fileViewExtension(path);\n if (extension === \"ts\" || extension === \"mts\" || extension === \"cts\") return \"ts\";\n if (extension === \"tsx\") return \"tsx\";\n if (extension === \"js\" || extension === \"mjs\" || extension === \"cjs\") return \"js\";\n if (extension === \"jsx\") return \"jsx\";\n if (extension === \"md\" || extension === \"markdown\") return \"md\";\n return \"text\";\n};\n\nconst isMarkdown = (file: FileViewFile, content: FileViewContent) =>\n content.encoding === \"utf8\" && getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"markdown\";\n\n/** Rendered previews hide a leading YAML frontmatter block — it's metadata, not content. */\nconst stripFrontmatter = (text: string): string => {\n const match = /^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n?/.exec(text.trimStart());\n return match ? text.trimStart().slice(match[0].length) : text;\n};\n\n/** Icon-only action, IDE style — sits in the floating top-right cluster of previews. */\nfunction OverlayAction(props: { icon: string; title: string; onClick?: () => void; href?: string; download?: string }) {\n const classes = \"k2b-content-file-view__action\";\n return (\n <Show\n when={props.href}\n fallback={\n <button type=\"button\" class={classes} title={props.title} aria-label={props.title} onClick={props.onClick}>\n <i class={`ti ${props.icon}`} aria-hidden=\"true\" />\n </button>\n }\n >\n {(href) => (\n <a class={classes} href={href()} download={props.download ?? \"\"} title={props.title} aria-label={props.title}>\n <i class={`ti ${props.icon}`} aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{props.title}</span>\n </a>\n )}\n </Show>\n );\n}\n\n/** Scrollable preview panel with the floating action cluster overlaid top-right. */\nfunction OverlayPanel(props: { actions?: JSX.Element; children: JSX.Element }) {\n return (\n <div class=\"k2b-content-file-view__panel\">\n <div class=\"k2b-content-file-view__preview\">{props.children}</div>\n <Show when={props.actions}>\n <div class=\"k2b-content-file-view__overlay\">{props.actions}</div>\n </Show>\n </div>\n );\n}\n\nconst DownloadAction = (props: FileViewRendererProps): JSX.Element => {\n const messages = useUiMessages();\n return (\n <Show when={props.downloadHref}>\n {(href) => (\n <OverlayAction\n icon=\"ti-download\"\n title={messages().download}\n href={href()}\n download={props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}\n />\n )}\n </Show>\n );\n};\n\n/** Toolbar-styled icon button — reuses the package markdown-editor tool primitive. */\nfunction EditorToolButton(props: { icon: string; title: string; onClick: () => void; disabled?: boolean }) {\n return (\n <button\n type=\"button\"\n class=\"k2b-markdown-editor__tool\"\n title={props.title}\n aria-label={props.title}\n tabIndex={-1}\n disabled={props.disabled}\n onMouseDown={(e) => e.preventDefault()}\n onClick={props.onClick}\n >\n <i class={props.icon} />\n </button>\n );\n}\n\n// ── Built-in renderers ──────────────────────────────────────────────────────\n\nfunction MoreLines(props: { count: number; onClick?: () => void }) {\n const messages = useUiMessages();\n return <Show when={props.count > 0}><div class=\"k2b-content-file-view__truncated\">\n <Show when={props.onClick} fallback={<span>{messages().previewMoreLines(props.count)}</span>}>\n <Button size=\"sm\" variant=\"ghost\" onClick={props.onClick}>{messages().previewMoreLines(props.count)}</Button>\n </Show>\n </div></Show>;\n}\nfunction TextExcerpt(props: { renderer: FileViewRendererProps; text: string; markdown?: boolean }) {\n const lines = createMemo(() => props.text.replace(/\\r\\n?/g, \"\\n\").replace(/\\n$/, \"\").split(\"\\n\"));\n const limit = () => props.renderer.previewLines === undefined ? lines().length : Math.max(1, props.renderer.previewLines);\n const text = () => lines().slice(0, limit()).join(\"\\n\");\n return <>\n <div classList={{ \"k2b-content-file-view__excerpt\": props.renderer.previewLines !== undefined }}>\n <Show when={props.markdown} fallback={<CodeDisplay code={text()} language={codeLanguage(props.renderer.file.path)} />}>\n <MarkdownView markdown={text()} headingScale={props.renderer.headingScale ?? \"compact\"} />\n </Show>\n </div>\n <MoreLines count={lines().length - limit()} onClick={props.renderer.onExpandPreview} />\n </>;\n}\n\nfunction MarkdownRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const [editing, setEditing] = createSignal(false);\n return (\n <Show\n when={props.editor && editing()}\n fallback={\n <OverlayPanel\n actions={\n <>\n <Show when={props.editor}>\n <OverlayAction icon=\"ti-pencil\" title={messages().edit} onClick={() => setEditing(true)} />\n </Show>\n <DownloadAction {...props} />\n </>\n }\n >\n <div class=\"k2b-content-file-view__document\">\n <TextExcerpt renderer={props} text={stripFrontmatter(props.editor?.draft() ?? props.content.content)} markdown />\n </div>\n </OverlayPanel>\n }\n >\n {(_) => {\n const editor = props.editor!;\n return (\n <div class=\"k2b-content-file-view__editor\">\n <MarkdownEditor\n class=\"k2b-content-file-view__markdown-field\"\n aria-label={`Edit ${props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}`}\n fill\n value={editor.draft()}\n onValueChange={editor.setDraft}\n showStats={false}\n onSave={() => void editor.save()}\n saveDisabled={!editor.dirty()}\n saving={editor.saving()}\n toolbarTrailing={<EditorToolButton icon=\"ti ti-eye\" title={messages().preview} onClick={() => setEditing(false)} />}\n />\n </div>\n );\n }}\n </Show>\n );\n}\n\nfunction TextRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <Show\n when={props.editor}\n fallback={\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <TextExcerpt renderer={props} text={props.content.content} />\n </OverlayPanel>\n }\n >\n {(editor) => (\n // Same chrome as the markdown editor — literally the same classes, so\n // border, radius, focus ring, toolbar height and text metrics cannot drift.\n <div class=\"k2b-content-file-view__editor\">\n <div\n class=\"k2b-markdown-editor\"\n data-fill=\"true\"\n role=\"group\"\n aria-label={messages().textEditor}\n onKeyDown={(event) => {\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === \"s\") {\n event.preventDefault();\n if (editor().dirty() && !editor().saving()) void editor().save();\n }\n }}\n >\n {/* No formatting tools here — the divider under an actions-only bar reads lost. */}\n <div class=\"k2b-markdown-editor__toolbar k2b-content-file-view__code-toolbar\">\n <span class=\"k2b-content-file-view__code-language\">{codeLanguage(props.file.path)}</span>\n <span class=\"k2b-markdown-editor__trailing\">\n <Show when={props.downloadHref}>\n {(href) => (\n <a\n class=\"k2b-markdown-editor__tool\"\n href={href()}\n download={props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}\n title={messages().download}\n aria-label={messages().download}\n >\n <i class=\"ti ti-download\" />\n </a>\n )}\n </Show>\n <EditorToolButton\n icon={editor().saving() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-device-floppy\"}\n title={messages().saveShortcut}\n disabled={!editor().dirty() || editor().saving()}\n onClick={() => void editor().save()}\n />\n </span>\n </div>\n <div class=\"k2b-markdown-editor__surface\">\n <textarea\n class=\"k2b-content-file-view__code-input\"\n value={editor().draft()}\n spellcheck={false}\n onInput={(event) => editor().setDraft(event.currentTarget.value)}\n />\n </div>\n </div>\n </div>\n )}\n </Show>\n );\n}\n\nfunction JsonRenderer(props: FileViewRendererProps) {\n const parsed = createMemo(() => {\n try {\n return { ok: true as const, value: JSON.parse(props.content.content) as StructuredDataValue };\n } catch {\n return { ok: false as const };\n }\n });\n const parsedValue = (): StructuredDataValue => {\n const result = parsed();\n return result.ok ? result.value : null;\n };\n\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__document\">\n <Show when={parsed().ok} fallback={<TextExcerpt renderer={props} text={props.content.content} />}>\n <Show when={props.previewLines === undefined} fallback={<TextExcerpt renderer={props} text={JSON.stringify(parsedValue(), null, 2)} />}><StructuredDataPreview data={parsedValue()} maxRows={200} /></Show>\n </Show>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction DelimitedTextRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const [preferences, setPreferences] = createSignal<DelimitedPreferences>({ encoding: \"utf-8\", delimiter: \"auto\", view: \"table\" });\n onMount(() => {\n if (!props.previewPreferencesKey) return;\n try { setPreferences(readDelimitedPreferences(localStorage.getItem(props.previewPreferencesKey))); } catch { /* Storage may be disabled. */ }\n });\n const update = (patch: Partial<DelimitedPreferences>) => {\n const next = { ...preferences(), ...patch };\n setPreferences(next);\n if (props.previewPreferencesKey) {\n try { localStorage.setItem(props.previewPreferencesKey, JSON.stringify(next)); } catch { /* Keep the local selection. */ }\n }\n };\n const text = createMemo(() => decodeDelimitedContent(props.content, preferences().encoding));\n const delimiter = () => preferences().delimiter === \"auto\"\n ? (fileViewExtension(props.file.path) === \"tsv\" || props.content.mediaType === \"text/tab-separated-values\" ? \"\\t\" : \",\")\n : preferences().delimiter;\n const [page, setPage] = createSignal(0);\n createEffect(() => { text(); delimiter(); props.previewLines; setPage(0); });\n const pageSize = () => props.previewLines === undefined ? 200 : Math.max(1, props.previewLines);\n const preview = createMemo(() => parseDelimitedText(text(), delimiter(), { rows: pageSize() + 1, offset: page() * pageSize() }));\n const settings = () => prompts.dialog(() => <div class=\"k2b-content-file-view__settings\">\n <Select label={messages().csvEncoding} value={preferences().encoding} disabled={props.content.encoding !== \"base64\"}\n options={[\"utf-8\", \"windows-1252\", \"utf-16le\", \"utf-16be\"]} onValueChange={(value) => { if (value) update({ encoding: value }); }} />\n <Select label={messages().csvSeparator} value={preferences().delimiter} options={[\n { value: \"auto\", label: messages().csvDefaultSeparator }, { value: \",\", label: messages().csvComma },\n { value: \";\", label: messages().csvSemicolon }, { value: \"\\t\", label: messages().csvTab }, { value: \"|\", label: \"|\" },\n ]} onValueChange={(value) => { if (value) update({ delimiter: value }); }} />\n <Select label={messages().csvView} value={preferences().view} options={[\n { value: \"table\", label: messages().dataTable }, { value: \"raw\", label: messages().csvRaw },\n ]} onValueChange={(value) => { if (value === \"table\" || value === \"raw\") update({ view: value }); }} />\n </div>, { title: messages().csvSettings });\n const headers = createMemo(() => preview().rows[0] ?? []);\n const rows = createMemo(() => preview().rows.slice(1));\n\n return (\n <OverlayPanel actions={<><OverlayAction icon=\"ti-adjustments-horizontal\" title={messages().csvSettings} onClick={() => void settings()} /><DownloadAction {...props} /></>}>\n <Show when={preferences().view === \"table\"} fallback={<TextExcerpt renderer={props} text={text()} />}>\n <Show\n when={headers().length > 0}\n fallback={<Placeholder icon=\"ti ti-table\" title={messages().emptyFile} description={messages().delimitedFileEmpty} />}\n >\n <div class=\"k2b-content-file-view__sheet\">\n <table class=\"k2b-content-file-view__table\">\n <thead>\n <tr>\n <For each={headers()}>\n {(header, index) => (\n <th scope=\"col\">\n <span>{header || messages().column({ number: index() + 1 })}</span>\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody>\n <For each={rows()}>\n {(row) => (\n <tr>\n <For each={headers()}>{(_, index) => <td>{row[index()] ?? \"\"}</td>}</For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n <Show when={preview().columnsTruncated}><div class=\"k2b-content-file-view__truncated\">{messages().previewColumnsLimited}</div></Show>\n <Show when={props.previewLines !== undefined} fallback={\n <Show when={preview().totalRows > 201}><div class=\"k2b-content-file-view__pagination\">\n <Button size=\"sm\" variant=\"ghost\" disabled={page() === 0} onClick={() => setPage(page() - 1)}>{messages().previous}</Button>\n <span>{page() * pageSize() + 1}–{Math.min((page() + 1) * pageSize(), preview().totalRows - 1)} / {preview().totalRows - 1}</span>\n <Button size=\"sm\" variant=\"ghost\" disabled={(page() + 1) * pageSize() >= preview().totalRows - 1} onClick={() => setPage(page() + 1)}>{messages().next}</Button>\n </div></Show>\n }><MoreLines count={preview().totalRows - rows().length - 1} onClick={props.onExpandPreview} /></Show>\n </div>\n </Show>\n </Show>\n </OverlayPanel>\n );\n}\n\nconst mediaSource = (props: FileViewRendererProps): string =>\n props.previewHref ?? `data:${props.content.mediaType};base64,${props.content.content}`;\n\nfunction ImageRenderer(props: FileViewRendererProps) {\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\">\n <img crossOrigin={props.crossOrigin} onError={props.onPreviewError} src={mediaSource(props)} alt={props.file.path} />\n </div>\n </OverlayPanel>\n );\n}\n\nfunction PdfRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const href = () => props.previewHref ?? props.downloadHref;\n return (\n <Show when={href()} fallback={<Placeholder icon=\"ti ti-file-type-pdf\" title=\"PDF\" description={messages().noInlinePreview} />}>\n {(href) => <object data={href()} type=\"application/pdf\" class=\"k2b-content-file-view__pdf\" aria-label={props.file.path} />}\n </Show>\n );\n}\n\nfunction AudioRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\" data-kind=\"audio\">\n <audio\n crossOrigin={props.crossOrigin}\n onError={props.onPreviewError}\n controls\n preload=\"metadata\"\n src={mediaSource(props)}\n aria-label={props.file.path}\n >\n {messages().audioUnsupported}\n </audio>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction VideoRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\" data-kind=\"video\">\n <video\n crossOrigin={props.crossOrigin}\n onError={props.onPreviewError}\n controls\n preload=\"metadata\"\n playsinline\n src={mediaSource(props)}\n aria-label={props.file.path}\n >\n {messages().videoUnsupported}\n </video>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction BinaryRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <Placeholder\n icon=\"ti ti-file-unknown\"\n title={messages().noPreview}\n description={props.content.mediaType || messages().binaryFile}\n action={\n <Show when={props.downloadHref}>\n {(href) => (\n <a class=\"k2b-button\" data-variant=\"secondary\" data-size=\"sm\" href={href()} download=\"\">\n <i class=\"ti ti-download\" aria-hidden=\"true\" />\n {messages().download}\n </a>\n )}\n </Show>\n }\n />\n );\n}\n\nconst BUILTIN_RENDERERS: FileViewRenderer[] = [\n { id: \"markdown\", match: isMarkdown, component: MarkdownRenderer, editable: true },\n {\n id: \"image\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"image\",\n component: ImageRenderer,\n },\n {\n id: \"pdf\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"pdf\",\n component: PdfRenderer,\n },\n {\n id: \"json\",\n match: (file, content) =>\n content.encoding === \"utf8\" && getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"json\",\n component: JsonRenderer,\n },\n {\n id: \"delimited-text\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"delimited-text\",\n component: DelimitedTextRenderer,\n },\n {\n id: \"audio\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"audio\",\n component: AudioRenderer,\n },\n {\n id: \"video\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"video\",\n component: VideoRenderer,\n },\n { id: \"text\", match: (_file, content) => content.encoding === \"utf8\", component: TextRenderer, editable: true },\n { id: \"binary\", match: () => true, component: BinaryRenderer },\n];\n\n// ── Component ───────────────────────────────────────────────────────────────\n\nexport const formatFileViewSize = (bytes: number): string => {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n};\n\nexport default function FileView(props: FileViewProps) {\n const messages = useUiMessages();\n const [draft, setDraft] = createSignal(\"\");\n const [savedDraft, setSavedDraft] = createSignal(\"\");\n const [nativeRevision, setNativeRevision] = createSignal(0);\n const dirty = createMemo(() => draft() !== savedDraft());\n const instanceRenderers = () => props.renderers ?? [];\n const saveMutation = mutation.create<{ path: string; content: string }, { path: string; content: string }>({\n mutation: async (input) => {\n await props.save!(input.content);\n return input;\n },\n onSuccess: (saved) => {\n if (props.file.path === saved.path) setSavedDraft(saved.content);\n toast.success(messages().fileSaved);\n },\n onError: (error) => toast.error(error.message),\n });\n const nativePreviewHref = createMemo(() => {\n const kind = getFileViewPreviewKind(props.file);\n const href = props.previewHref ?? (kind === \"pdf\" ? props.downloadHref : null);\n if (!href) return null;\n const separator = href.includes(\"?\") ? \"&\" : \"?\";\n return `${href}${separator}preview-revision=${nativeRevision()}`;\n });\n const browserPreviewContent = createMemo<FileViewContent | null>(() => {\n const kind = getFileViewPreviewKind(props.file);\n if (kind !== \"image\" && kind !== \"pdf\" && kind !== \"audio\" && kind !== \"video\") return null;\n const href = nativePreviewHref();\n if (!href) return null;\n\n const candidate: FileViewContent = {\n encoding: \"base64\",\n content: \"\",\n mediaType: props.file.mediaType ?? \"application/octet-stream\",\n };\n return instanceRenderers().some((renderer) => renderer.match(props.file, candidate)) ? null : candidate;\n });\n const [content, { refetch }] = createResource(\n () => (browserPreviewContent() ? null : { path: props.file.path, revision: props.revision }),\n async () => {\n saveMutation.abort();\n // `load` is an imperative source adapter. Host signal reads inside it\n // must not turn this resource into a hidden reactive feedback loop.\n const loaded = await untrack(() => props.load());\n const loadedDraft = loaded.encoding === \"utf8\" ? loaded.content : \"\";\n setDraft(loadedDraft);\n setSavedDraft(loadedDraft);\n return loaded;\n },\n );\n createEffect(() => {\n if (!props.registerRefresh) return;\n const unregister = props.registerRefresh(async () => {\n if (browserPreviewContent()) setNativeRevision((value) => value + 1);\n else await refetch();\n });\n if (unregister) onCleanup(unregister);\n });\n const resolvedContent = createMemo(() => browserPreviewContent() ?? content());\n\n const renderer = createMemo(() => {\n const loaded = resolvedContent();\n if (!loaded) return null;\n return [...instanceRenderers(), ...BUILTIN_RENDERERS].find((candidate) => candidate.match(props.file, loaded)) ?? null;\n });\n\n createEffect(() => {\n props.onDirtyChange?.(dirty());\n });\n\n const save = async () => {\n if (!props.save || saveMutation.loading()) return;\n await saveMutation.mutate({ path: props.file.path, content: draft() });\n };\n\n const editor = () =>\n props.save && renderer()?.editable && resolvedContent()?.encoding === \"utf8\"\n ? {\n draft,\n setDraft,\n dirty,\n saving: saveMutation.loading,\n save,\n }\n : null;\n\n return (\n <div class={`k2b-content-file-view ${props.class ?? \"\"}`} data-variant={props.variant} data-excerpt={props.previewLines !== undefined ? \"true\" : undefined}>\n <Switch>\n <Match when={content.loading && content() === undefined}>\n <Placeholder icon=\"ti ti-loader-2\" title={messages().loading} />\n </Match>\n <Match when={content.error}>\n <Placeholder icon=\"ti ti-alert-circle\" title={messages().failedLoadFile} description={String(content.error?.message ?? \"\")} />\n </Match>\n <Match when={resolvedContent() && renderer()}>\n {(active) => {\n const Renderer = active().component;\n return (\n <Renderer\n previewLines={props.previewLines}\n onExpandPreview={props.onExpandPreview}\n headingScale={props.headingScale}\n previewPreferencesKey={props.previewPreferencesKey}\n file={props.file}\n content={resolvedContent()!}\n previewHref={nativePreviewHref()}\n crossOrigin={props.crossOrigin}\n onPreviewError={props.onPreviewError}\n downloadHref={props.downloadHref ?? null}\n editor={editor()}\n />\n );\n }}\n </Match>\n </Switch>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["mutation","createEffect","createMemo","createResource","createSignal","For","Match","onCleanup","onMount","Show","Switch","untrack","Button","prompts","toast","MarkdownEditor","Select","useUiMessages","Placeholder","CodeDisplay","decodeDelimitedContent","readDelimitedPreferences","fileViewExtension","getFileViewPreviewKind","parseDelimitedText","MarkdownView","StructuredDataPreview","canPreviewFile","codeLanguage","path","extension","isMarkdown","file","content","encoding","mediaType","stripFrontmatter","text","match","exec","trimStart","slice","length","OverlayAction","props","classes","_$createComponent","when","href","fallback","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$addEventListener","onClick","_$effect","_p$","_v$","title","_v$2","_v$3","icon","e","_$setAttribute","t","a","_$className","undefined","_$runHydrationEvents","children","_el$3","_tmpl$2","_el$4","_el$5","nextSibling","_$insert","_v$4","_v$5","download","_v$6","_v$7","_v$8","o","i","OverlayPanel","_el$6","_tmpl$4","_el$7","_el$9","_el$0","_co$","_$getNextMarker","actions","_el$8","_tmpl$3","DownloadAction","messages","downloadHref","lastIndexOf","EditorToolButton","_el$1","_tmpl$5","_el$10","$$mousedown","preventDefault","_v$9","_v$0","_v$1","disabled","_v$10","_$setProperty","MoreLines","count","_el$11","_tmpl$6","_el$12","_tmpl$7","previewMoreLines","size","variant","TextExcerpt","lines","replace","split","limit","renderer","previewLines","Math","max","join","_el$13","_tmpl$8","markdown","code","language","headingScale","classList","toggle","onExpandPreview","MarkdownRenderer","editing","setEditing","_$memo","editor","edit","_el$14","_tmpl$9","draft","_","_el$15","_tmpl$0","aria-label","fill","value","onValueChange","setDraft","showStats","onSave","save","saveDisabled","dirty","saving","toolbarTrailing","preview","TextRenderer","_el$16","_tmpl$1","_el$17","_el$18","_el$19","_el$20","_el$21","_el$22","_co$2","_el$23","_el$24","_co$3","_el$25","_el$26","$$keydown","event","metaKey","ctrlKey","key","toLowerCase","_el$27","_tmpl$10","_v$11","_v$12","_v$13","_v$14","saveShortcut","$$input","currentTarget","textEditor","JsonRenderer","parsed","ok","JSON","parse","parsedValue","result","_el$28","stringify","data","maxRows","DelimitedTextRenderer","preferences","setPreferences","delimiter","view","previewPreferencesKey","localStorage","getItem","update","patch","next","setItem","page","setPage","pageSize","rows","offset","settings","dialog","_el$29","_tmpl$11","_el$30","_el$31","_co$4","_el$32","_el$33","_co$5","_el$34","_el$35","_co$6","label","csvEncoding","options","csvSeparator","csvDefaultSeparator","csvComma","csvSemicolon","csvTab","csvView","dataTable","csvRaw","csvSettings","headers","emptyFile","description","delimitedFileEmpty","_el$36","_tmpl$12","_el$37","_el$38","_el$39","_el$40","_el$42","_el$43","_co$7","_el$44","_el$45","_co$8","each","header","index","_el$46","_tmpl$13","_el$47","column","number","row","_el$48","_tmpl$14","_el$49","_tmpl$15","columnsTruncated","_el$41","previewColumnsLimited","totalRows","_el$50","_tmpl$16","_el$60","_el$61","_co$10","_el$51","_el$54","_el$55","_co$9","_el$52","_el$56","_el$57","_co$0","_el$53","_el$58","_el$59","_co$1","_el$62","_el$63","_co$11","previous","min","mediaSource","previewHref","ImageRenderer","_el$64","_tmpl$17","_el$65","onPreviewError","_v$15","crossOrigin","_v$16","_v$17","PdfRenderer","noInlinePreview","_el$66","_tmpl$18","_v$18","_v$19","AudioRenderer","_el$67","_tmpl$19","_el$68","audioUnsupported","_v$20","_v$21","_v$22","VideoRenderer","_el$69","_tmpl$20","_el$70","videoUnsupported","_v$23","_v$24","_v$25","BinaryRenderer","noPreview","binaryFile","action","_el$71","_tmpl$21","_el$72","_el$73","_el$74","_co$12","BUILTIN_RENDERERS","id","component","editable","_file","formatFileViewSize","bytes","toFixed","FileView","savedDraft","setSavedDraft","nativeRevision","setNativeRevision","instanceRenderers","renderers","saveMutation","create","input","onSuccess","saved","success","fileSaved","onError","error","message","nativePreviewHref","kind","separator","includes","browserPreviewContent","candidate","some","refetch","revision","abort","loaded","load","loadedDraft","registerRefresh","unregister","resolvedContent","find","onDirtyChange","loading","mutate","_el$75","failedLoadFile","String","active","Renderer","_v$26","class","_v$27","_v$28","_$delegateEvents"],"sources":["content/FileView.tsx"],"sourcesContent":["/**\n * FileView — renders one file through a small renderer registry keyed by\n * media type / path. Editing is enabled purely by the presence of `save`;\n * without it every renderer is read-only. IDE-style chrome: editors reuse\n * the markdown editor's surface (toolbar with an in-toolbar save, Ctrl/Cmd+S),\n * previews are quiet paper panels with icon-only actions overlaid top-right.\n * Custom renderers are passed per instance, which keeps SSR requests and\n * independently mounted applications isolated.\n */\n\nimport { mutation } from \"@k2b/stdlib/solid\";\nimport {\n type Component,\n createEffect,\n createMemo,\n createResource,\n createSignal,\n For,\n type JSX,\n Match,\n onCleanup,\n onMount,\n Show,\n Switch,\n untrack,\n} from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport { prompts } from \"../feedback/prompts\";\nimport { toast } from \"../feedback/toast\";\nimport { MarkdownEditor } from \"../inputs/markdown/MarkdownEditor\";\nimport { Select } from \"../inputs/Select\";\nimport { useUiMessages } from \"../intl/messages\";\nimport Placeholder from \"../surfaces/Placeholder\";\nimport CodeDisplay, { type CodeDisplayLanguage } from \"./CodeDisplay\";\nimport { type DelimitedPreferences, decodeDelimitedContent, readDelimitedPreferences } from \"./delimited-preferences\";\nimport { type FileViewFile, fileViewExtension, getFileViewPreviewKind, parseDelimitedText } from \"./file-view-preview\";\nimport MarkdownView from \"./MarkdownView\";\nimport StructuredDataPreview, { type StructuredDataValue } from \"./StructuredDataPreview\";\n\nexport type { FileViewFile, FileViewPreviewKind } from \"./file-view-preview\";\nexport { canPreviewFile, getFileViewPreviewKind } from \"./file-view-preview\";\nexport type FileViewContent = { encoding: \"utf8\" | \"base64\"; content: string; mediaType: string };\n\nexport type FileViewProps = {\n /** Plain previews inherit the surrounding surface without a frame or inset padding. */\n variant?: \"default\" | \"plain\";\n /** Read-only excerpt limit; omitted renders the complete preview. */\n previewLines?: number;\n onExpandPreview?: () => void;\n headingScale?: \"compact\" | \"normal\" | \"large\";\n /** Optional browser-local preference scope, owned by the host. */\n previewPreferencesKey?: string;\n file: FileViewFile;\n load: () => Promise<FileViewContent>;\n /** Refetch the current path when this host-owned revision changes. */\n revision?: unknown;\n /** Register an awaitable refresh for the currently visible preview. */\n registerRefresh?: (refresh: () => Promise<void>) => void | (() => void);\n /** Presence enables editing for text-based renderers. */\n save?: (content: string) => Promise<void>;\n /** Authenticated inline URL used by browser-native image, PDF, audio, and video previews. */\n previewHref?: string | null;\n /** CORS mode for native image/audio/video previews. Omit to preserve browser defaults. */\n crossOrigin?: \"anonymous\" | \"use-credentials\";\n /** Native media failed to load; the host can renew a signed URL and offer retry. */\n onPreviewError?: () => void;\n downloadHref?: string | null;\n /** App-specific renderers matched before the built-ins for this instance. */\n renderers?: readonly FileViewRenderer[];\n /** Reports local edit state so a parent browser can guard navigation. */\n onDirtyChange?: (dirty: boolean) => void;\n class?: string;\n};\n\nexport type FileViewRendererProps = {\n /** Read-only excerpt limit; omitted renders the complete preview. */\n previewLines?: number;\n onExpandPreview?: () => void;\n headingScale?: \"compact\" | \"normal\" | \"large\";\n /** Optional browser-local preference scope, owned by the host. */\n previewPreferencesKey?: string;\n file: FileViewFile;\n content: FileViewContent;\n previewHref: string | null;\n crossOrigin?: \"anonymous\" | \"use-credentials\";\n onPreviewError?: () => void;\n downloadHref: string | null;\n /** Null when the file is read-only. */\n editor: {\n draft: () => string;\n setDraft: (value: string) => void;\n dirty: () => boolean;\n saving: () => boolean;\n save: () => Promise<void>;\n } | null;\n};\n\nexport type FileViewRenderer = {\n id: string;\n match: (file: FileViewFile, content: FileViewContent) => boolean;\n component: Component<FileViewRendererProps>;\n /** Text renderers that support the edit affordance when `save` is present. */\n editable?: boolean;\n};\n\nconst codeLanguage = (path: string): CodeDisplayLanguage => {\n const extension = fileViewExtension(path);\n if (extension === \"ts\" || extension === \"mts\" || extension === \"cts\") return \"ts\";\n if (extension === \"tsx\") return \"tsx\";\n if (extension === \"js\" || extension === \"mjs\" || extension === \"cjs\") return \"js\";\n if (extension === \"jsx\") return \"jsx\";\n if (extension === \"md\" || extension === \"markdown\") return \"md\";\n return \"text\";\n};\n\nconst isMarkdown = (file: FileViewFile, content: FileViewContent) =>\n content.encoding === \"utf8\" && getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"markdown\";\n\n/** Rendered previews hide a leading YAML frontmatter block — it's metadata, not content. */\nconst stripFrontmatter = (text: string): string => {\n const match = /^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n?/.exec(text.trimStart());\n return match ? text.trimStart().slice(match[0].length) : text;\n};\n\n/** Icon-only action, IDE style — sits in the floating top-right cluster of previews. */\nfunction OverlayAction(props: { icon: string; title: string; onClick?: () => void; href?: string; download?: string }) {\n const classes = \"k2b-content-file-view__action\";\n return (\n <Show\n when={props.href}\n fallback={\n <button type=\"button\" class={classes} title={props.title} aria-label={props.title} onClick={props.onClick}>\n <i class={`ti ${props.icon}`} aria-hidden=\"true\" />\n </button>\n }\n >\n {(href) => (\n <a class={classes} href={href()} download={props.download ?? \"\"} title={props.title} aria-label={props.title}>\n <i class={`ti ${props.icon}`} aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">{props.title}</span>\n </a>\n )}\n </Show>\n );\n}\n\n/** Scrollable preview panel with the floating action cluster overlaid top-right. */\nfunction OverlayPanel(props: { actions?: JSX.Element; children: JSX.Element }) {\n return (\n <div class=\"k2b-content-file-view__panel\">\n <div class=\"k2b-content-file-view__preview\">{props.children}</div>\n <Show when={props.actions}>\n <div class=\"k2b-content-file-view__overlay\">{props.actions}</div>\n </Show>\n </div>\n );\n}\n\nconst DownloadAction = (props: FileViewRendererProps): JSX.Element => {\n const messages = useUiMessages();\n return (\n <Show when={props.downloadHref}>\n {(href) => (\n <OverlayAction\n icon=\"ti-download\"\n title={messages().download}\n href={href()}\n download={props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}\n />\n )}\n </Show>\n );\n};\n\n/** Toolbar-styled icon button — reuses the package markdown-editor tool primitive. */\nfunction EditorToolButton(props: { icon: string; title: string; onClick: () => void; disabled?: boolean }) {\n return (\n <button\n type=\"button\"\n class=\"k2b-markdown-editor__tool\"\n title={props.title}\n aria-label={props.title}\n tabIndex={-1}\n disabled={props.disabled}\n onMouseDown={(e) => e.preventDefault()}\n onClick={props.onClick}\n >\n <i class={props.icon} />\n </button>\n );\n}\n\n// ── Built-in renderers ──────────────────────────────────────────────────────\n\nfunction MoreLines(props: { count: number; onClick?: () => void }) {\n const messages = useUiMessages();\n return (\n <Show when={props.count > 0}>\n <div class=\"k2b-content-file-view__truncated\">\n <Show when={props.onClick} fallback={<span>{messages().previewMoreLines(props.count)}</span>}>\n <Button size=\"sm\" variant=\"ghost\" onClick={props.onClick}>\n {messages().previewMoreLines(props.count)}\n </Button>\n </Show>\n </div>\n </Show>\n );\n}\nfunction TextExcerpt(props: { renderer: FileViewRendererProps; text: string; markdown?: boolean }) {\n const lines = createMemo(() => props.text.replace(/\\r\\n?/g, \"\\n\").replace(/\\n$/, \"\").split(\"\\n\"));\n const limit = () => (props.renderer.previewLines === undefined ? lines().length : Math.max(1, props.renderer.previewLines));\n const text = () => lines().slice(0, limit()).join(\"\\n\");\n return (\n <>\n <div classList={{ \"k2b-content-file-view__excerpt\": props.renderer.previewLines !== undefined }}>\n <Show when={props.markdown} fallback={<CodeDisplay code={text()} language={codeLanguage(props.renderer.file.path)} />}>\n <MarkdownView markdown={text()} headingScale={props.renderer.headingScale ?? \"compact\"} />\n </Show>\n </div>\n <MoreLines count={lines().length - limit()} onClick={props.renderer.onExpandPreview} />\n </>\n );\n}\n\nfunction MarkdownRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const [editing, setEditing] = createSignal(false);\n return (\n <Show\n when={props.editor && editing()}\n fallback={\n <OverlayPanel\n actions={\n <>\n <Show when={props.editor}>\n <OverlayAction icon=\"ti-pencil\" title={messages().edit} onClick={() => setEditing(true)} />\n </Show>\n <DownloadAction {...props} />\n </>\n }\n >\n <div class=\"k2b-content-file-view__document\">\n <TextExcerpt renderer={props} text={stripFrontmatter(props.editor?.draft() ?? props.content.content)} markdown />\n </div>\n </OverlayPanel>\n }\n >\n {(_) => {\n const editor = props.editor!;\n return (\n <div class=\"k2b-content-file-view__editor\">\n <MarkdownEditor\n class=\"k2b-content-file-view__markdown-field\"\n aria-label={`Edit ${props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}`}\n fill\n value={editor.draft()}\n onValueChange={editor.setDraft}\n showStats={false}\n onSave={() => void editor.save()}\n saveDisabled={!editor.dirty()}\n saving={editor.saving()}\n toolbarTrailing={<EditorToolButton icon=\"ti ti-eye\" title={messages().preview} onClick={() => setEditing(false)} />}\n />\n </div>\n );\n }}\n </Show>\n );\n}\n\nfunction TextRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <Show\n when={props.editor}\n fallback={\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <TextExcerpt renderer={props} text={props.content.content} />\n </OverlayPanel>\n }\n >\n {(editor) => (\n // Same chrome as the markdown editor — literally the same classes, so\n // border, radius, focus ring, toolbar height and text metrics cannot drift.\n <div class=\"k2b-content-file-view__editor\">\n <div\n class=\"k2b-markdown-editor\"\n data-fill=\"true\"\n role=\"group\"\n aria-label={messages().textEditor}\n onKeyDown={(event) => {\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === \"s\") {\n event.preventDefault();\n if (editor().dirty() && !editor().saving()) void editor().save();\n }\n }}\n >\n {/* No formatting tools here — the divider under an actions-only bar reads lost. */}\n <div class=\"k2b-markdown-editor__toolbar k2b-content-file-view__code-toolbar\">\n <span class=\"k2b-content-file-view__code-language\">{codeLanguage(props.file.path)}</span>\n <span class=\"k2b-markdown-editor__trailing\">\n <Show when={props.downloadHref}>\n {(href) => (\n <a\n class=\"k2b-markdown-editor__tool\"\n href={href()}\n download={props.file.path.slice(props.file.path.lastIndexOf(\"/\") + 1)}\n title={messages().download}\n aria-label={messages().download}\n >\n <i class=\"ti ti-download\" />\n </a>\n )}\n </Show>\n <EditorToolButton\n icon={editor().saving() ? \"ti ti-loader-2 k2b-spin\" : \"ti ti-device-floppy\"}\n title={messages().saveShortcut}\n disabled={!editor().dirty() || editor().saving()}\n onClick={() => void editor().save()}\n />\n </span>\n </div>\n <div class=\"k2b-markdown-editor__surface\">\n <textarea\n class=\"k2b-content-file-view__code-input\"\n value={editor().draft()}\n spellcheck={false}\n onInput={(event) => editor().setDraft(event.currentTarget.value)}\n />\n </div>\n </div>\n </div>\n )}\n </Show>\n );\n}\n\nfunction JsonRenderer(props: FileViewRendererProps) {\n const parsed = createMemo(() => {\n try {\n return { ok: true as const, value: JSON.parse(props.content.content) as StructuredDataValue };\n } catch {\n return { ok: false as const };\n }\n });\n const parsedValue = (): StructuredDataValue => {\n const result = parsed();\n return result.ok ? result.value : null;\n };\n\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__document\">\n <Show when={parsed().ok} fallback={<TextExcerpt renderer={props} text={props.content.content} />}>\n <Show\n when={props.previewLines === undefined}\n fallback={<TextExcerpt renderer={props} text={JSON.stringify(parsedValue(), null, 2)} />}\n >\n <StructuredDataPreview data={parsedValue()} maxRows={200} />\n </Show>\n </Show>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction DelimitedTextRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const [preferences, setPreferences] = createSignal<DelimitedPreferences>({ encoding: \"utf-8\", delimiter: \"auto\", view: \"table\" });\n onMount(() => {\n if (!props.previewPreferencesKey) return;\n try {\n setPreferences(readDelimitedPreferences(localStorage.getItem(props.previewPreferencesKey)));\n } catch {\n /* Storage may be disabled. */\n }\n });\n const update = (patch: Partial<DelimitedPreferences>) => {\n const next = { ...preferences(), ...patch };\n setPreferences(next);\n if (props.previewPreferencesKey) {\n try {\n localStorage.setItem(props.previewPreferencesKey, JSON.stringify(next));\n } catch {\n /* Keep the local selection. */\n }\n }\n };\n const text = createMemo(() => decodeDelimitedContent(props.content, preferences().encoding));\n const delimiter = () =>\n preferences().delimiter === \"auto\"\n ? fileViewExtension(props.file.path) === \"tsv\" || props.content.mediaType === \"text/tab-separated-values\"\n ? \"\\t\"\n : \",\"\n : preferences().delimiter;\n const [page, setPage] = createSignal(0);\n createEffect(() => {\n text();\n delimiter();\n props.previewLines;\n setPage(0);\n });\n const pageSize = () => (props.previewLines === undefined ? 200 : Math.max(1, props.previewLines));\n const preview = createMemo(() => parseDelimitedText(text(), delimiter(), { rows: pageSize() + 1, offset: page() * pageSize() }));\n const settings = () =>\n prompts.dialog(\n () => (\n <div class=\"k2b-content-file-view__settings\">\n <Select\n label={messages().csvEncoding}\n value={preferences().encoding}\n disabled={props.content.encoding !== \"base64\"}\n options={[\"utf-8\", \"windows-1252\", \"utf-16le\", \"utf-16be\"]}\n onValueChange={(value) => {\n if (value) update({ encoding: value });\n }}\n />\n <Select\n label={messages().csvSeparator}\n value={preferences().delimiter}\n options={[\n { value: \"auto\", label: messages().csvDefaultSeparator },\n { value: \",\", label: messages().csvComma },\n { value: \";\", label: messages().csvSemicolon },\n { value: \"\\t\", label: messages().csvTab },\n { value: \"|\", label: \"|\" },\n ]}\n onValueChange={(value) => {\n if (value) update({ delimiter: value });\n }}\n />\n <Select\n label={messages().csvView}\n value={preferences().view}\n options={[\n { value: \"table\", label: messages().dataTable },\n { value: \"raw\", label: messages().csvRaw },\n ]}\n onValueChange={(value) => {\n if (value === \"table\" || value === \"raw\") update({ view: value });\n }}\n />\n </div>\n ),\n { title: messages().csvSettings },\n );\n const headers = createMemo(() => preview().rows[0] ?? []);\n const rows = createMemo(() => preview().rows.slice(1));\n\n return (\n <OverlayPanel\n actions={\n <>\n <OverlayAction icon=\"ti-adjustments-horizontal\" title={messages().csvSettings} onClick={() => void settings()} />\n <DownloadAction {...props} />\n </>\n }\n >\n <Show when={preferences().view === \"table\"} fallback={<TextExcerpt renderer={props} text={text()} />}>\n <Show\n when={headers().length > 0}\n fallback={<Placeholder icon=\"ti ti-table\" title={messages().emptyFile} description={messages().delimitedFileEmpty} />}\n >\n <div class=\"k2b-content-file-view__sheet\">\n <table class=\"k2b-content-file-view__table\">\n <thead>\n <tr>\n <For each={headers()}>\n {(header, index) => (\n <th scope=\"col\">\n <span>{header || messages().column({ number: index() + 1 })}</span>\n </th>\n )}\n </For>\n </tr>\n </thead>\n <tbody>\n <For each={rows()}>\n {(row) => (\n <tr>\n <For each={headers()}>{(_, index) => <td>{row[index()] ?? \"\"}</td>}</For>\n </tr>\n )}\n </For>\n </tbody>\n </table>\n <Show when={preview().columnsTruncated}>\n <div class=\"k2b-content-file-view__truncated\">{messages().previewColumnsLimited}</div>\n </Show>\n <Show\n when={props.previewLines !== undefined}\n fallback={\n <Show when={preview().totalRows > 201}>\n <div class=\"k2b-content-file-view__pagination\">\n <Button size=\"sm\" variant=\"ghost\" disabled={page() === 0} onClick={() => setPage(page() - 1)}>\n {messages().previous}\n </Button>\n <span>\n {page() * pageSize() + 1}–{Math.min((page() + 1) * pageSize(), preview().totalRows - 1)} / {preview().totalRows - 1}\n </span>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={(page() + 1) * pageSize() >= preview().totalRows - 1}\n onClick={() => setPage(page() + 1)}\n >\n {messages().next}\n </Button>\n </div>\n </Show>\n }\n >\n <MoreLines count={preview().totalRows - rows().length - 1} onClick={props.onExpandPreview} />\n </Show>\n </div>\n </Show>\n </Show>\n </OverlayPanel>\n );\n}\n\nconst mediaSource = (props: FileViewRendererProps): string =>\n props.previewHref ?? `data:${props.content.mediaType};base64,${props.content.content}`;\n\nfunction ImageRenderer(props: FileViewRendererProps) {\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\">\n <img crossOrigin={props.crossOrigin} onError={props.onPreviewError} src={mediaSource(props)} alt={props.file.path} />\n </div>\n </OverlayPanel>\n );\n}\n\nfunction PdfRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n const href = () => props.previewHref ?? props.downloadHref;\n return (\n <Show when={href()} fallback={<Placeholder icon=\"ti ti-file-type-pdf\" title=\"PDF\" description={messages().noInlinePreview} />}>\n {(href) => <object data={href()} type=\"application/pdf\" class=\"k2b-content-file-view__pdf\" aria-label={props.file.path} />}\n </Show>\n );\n}\n\nfunction AudioRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\" data-kind=\"audio\">\n <audio\n crossOrigin={props.crossOrigin}\n onError={props.onPreviewError}\n controls\n preload=\"metadata\"\n src={mediaSource(props)}\n aria-label={props.file.path}\n >\n {messages().audioUnsupported}\n </audio>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction VideoRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <OverlayPanel actions={<DownloadAction {...props} />}>\n <div class=\"k2b-content-file-view__media\" data-kind=\"video\">\n <video\n crossOrigin={props.crossOrigin}\n onError={props.onPreviewError}\n controls\n preload=\"metadata\"\n playsinline\n src={mediaSource(props)}\n aria-label={props.file.path}\n >\n {messages().videoUnsupported}\n </video>\n </div>\n </OverlayPanel>\n );\n}\n\nfunction BinaryRenderer(props: FileViewRendererProps) {\n const messages = useUiMessages();\n return (\n <Placeholder\n icon=\"ti ti-file-unknown\"\n title={messages().noPreview}\n description={props.content.mediaType || messages().binaryFile}\n action={\n <Show when={props.downloadHref}>\n {(href) => (\n <a class=\"k2b-button\" data-variant=\"secondary\" data-size=\"sm\" href={href()} download=\"\">\n <i class=\"ti ti-download\" aria-hidden=\"true\" />\n {messages().download}\n </a>\n )}\n </Show>\n }\n />\n );\n}\n\nconst BUILTIN_RENDERERS: FileViewRenderer[] = [\n { id: \"markdown\", match: isMarkdown, component: MarkdownRenderer, editable: true },\n {\n id: \"image\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"image\",\n component: ImageRenderer,\n },\n {\n id: \"pdf\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"pdf\",\n component: PdfRenderer,\n },\n {\n id: \"json\",\n match: (file, content) =>\n content.encoding === \"utf8\" && getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"json\",\n component: JsonRenderer,\n },\n {\n id: \"delimited-text\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"delimited-text\",\n component: DelimitedTextRenderer,\n },\n {\n id: \"audio\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"audio\",\n component: AudioRenderer,\n },\n {\n id: \"video\",\n match: (file, content) => getFileViewPreviewKind({ ...file, mediaType: content.mediaType || file.mediaType }) === \"video\",\n component: VideoRenderer,\n },\n { id: \"text\", match: (_file, content) => content.encoding === \"utf8\", component: TextRenderer, editable: true },\n { id: \"binary\", match: () => true, component: BinaryRenderer },\n];\n\n// ── Component ───────────────────────────────────────────────────────────────\n\nexport const formatFileViewSize = (bytes: number): string => {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n};\n\nexport default function FileView(props: FileViewProps) {\n const messages = useUiMessages();\n const [draft, setDraft] = createSignal(\"\");\n const [savedDraft, setSavedDraft] = createSignal(\"\");\n const [nativeRevision, setNativeRevision] = createSignal(0);\n const dirty = createMemo(() => draft() !== savedDraft());\n const instanceRenderers = () => props.renderers ?? [];\n const saveMutation = mutation.create<{ path: string; content: string }, { path: string; content: string }>({\n mutation: async (input) => {\n await props.save!(input.content);\n return input;\n },\n onSuccess: (saved) => {\n if (props.file.path === saved.path) setSavedDraft(saved.content);\n toast.success(messages().fileSaved);\n },\n onError: (error) => toast.error(error.message),\n });\n const nativePreviewHref = createMemo(() => {\n const kind = getFileViewPreviewKind(props.file);\n const href = props.previewHref ?? (kind === \"pdf\" ? props.downloadHref : null);\n if (!href) return null;\n const separator = href.includes(\"?\") ? \"&\" : \"?\";\n return `${href}${separator}preview-revision=${nativeRevision()}`;\n });\n const browserPreviewContent = createMemo<FileViewContent | null>(() => {\n const kind = getFileViewPreviewKind(props.file);\n if (kind !== \"image\" && kind !== \"pdf\" && kind !== \"audio\" && kind !== \"video\") return null;\n const href = nativePreviewHref();\n if (!href) return null;\n\n const candidate: FileViewContent = {\n encoding: \"base64\",\n content: \"\",\n mediaType: props.file.mediaType ?? \"application/octet-stream\",\n };\n return instanceRenderers().some((renderer) => renderer.match(props.file, candidate)) ? null : candidate;\n });\n const [content, { refetch }] = createResource(\n () => (browserPreviewContent() ? null : { path: props.file.path, revision: props.revision }),\n async () => {\n saveMutation.abort();\n // `load` is an imperative source adapter. Host signal reads inside it\n // must not turn this resource into a hidden reactive feedback loop.\n const loaded = await untrack(() => props.load());\n const loadedDraft = loaded.encoding === \"utf8\" ? loaded.content : \"\";\n setDraft(loadedDraft);\n setSavedDraft(loadedDraft);\n return loaded;\n },\n );\n createEffect(() => {\n if (!props.registerRefresh) return;\n const unregister = props.registerRefresh(async () => {\n if (browserPreviewContent()) setNativeRevision((value) => value + 1);\n else await refetch();\n });\n if (unregister) onCleanup(unregister);\n });\n const resolvedContent = createMemo(() => browserPreviewContent() ?? content());\n\n const renderer = createMemo(() => {\n const loaded = resolvedContent();\n if (!loaded) return null;\n return [...instanceRenderers(), ...BUILTIN_RENDERERS].find((candidate) => candidate.match(props.file, loaded)) ?? null;\n });\n\n createEffect(() => {\n props.onDirtyChange?.(dirty());\n });\n\n const save = async () => {\n if (!props.save || saveMutation.loading()) return;\n await saveMutation.mutate({ path: props.file.path, content: draft() });\n };\n\n const editor = () =>\n props.save && renderer()?.editable && resolvedContent()?.encoding === \"utf8\"\n ? {\n draft,\n setDraft,\n dirty,\n saving: saveMutation.loading,\n save,\n }\n : null;\n\n return (\n <div\n class={`k2b-content-file-view ${props.class ?? \"\"}`}\n data-variant={props.variant}\n data-excerpt={props.previewLines !== undefined ? \"true\" : undefined}\n >\n <Switch>\n <Match when={content.loading && content() === undefined}>\n <Placeholder icon=\"ti ti-loader-2\" title={messages().loading} />\n </Match>\n <Match when={content.error}>\n <Placeholder icon=\"ti ti-alert-circle\" title={messages().failedLoadFile} description={String(content.error?.message ?? \"\")} />\n </Match>\n <Match when={resolvedContent() && renderer()}>\n {(active) => {\n const Renderer = active().component;\n return (\n <Renderer\n previewLines={props.previewLines}\n onExpandPreview={props.onExpandPreview}\n headingScale={props.headingScale}\n previewPreferencesKey={props.previewPreferencesKey}\n file={props.file}\n content={resolvedContent()!}\n previewHref={nativePreviewHref()}\n crossOrigin={props.crossOrigin}\n onPreviewError={props.onPreviewError}\n downloadHref={props.downloadHref ?? null}\n editor={editor()}\n />\n );\n }}\n </Match>\n </Switch>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["marked","Renderer","escapeHtml","value","replaceAll","safeUrl","normalized","trim","replace","test","normalizeInlineTokens","tokens","Set","filter","Boolean","sort","left","right","length","isStandaloneInlineToken","text","start","before","end","after","createSafeRenderer","options","renderer","inlineTokens","renderText","bind","renderTable","table","token","content","header","every","cell","html","link","href","title","body","parser","parseInline","url","linkProtocols","includes","URL","protocol","titleAttribute","target","linkTarget","image","allowImages","type","parts","plainStart","cursor","inlineToken","find","candidate","startsWith","slice","push","raw","join","renderSafeMarkdown","markdown","parse","async","MarkdownView","props","undefined","trustedHtml","_el$","_$getNextElement","_tmpl$","_$effect","_p$","_v$","class","_v$2","headingScale","_v$3","e","_$className","t","_$setAttribute","a","_$setProperty"],"sources":["content/MarkdownView.tsx"],"sourcesContent":["import { marked, Renderer, type Tokens } from \"marked\";\n\ntype CommonProps = MarkdownRenderOptions & {\n /** Optional additional CSS classes */\n class?: string;\n /**\n * Visual heading scale. Markdown heading levels and document structure stay\n * unchanged.\n */\n headingScale?: \"compact\" | \"normal\" | \"large\";\n};\n\nexport type MarkdownViewProps = CommonProps &\n (\n | {\n /** Untrusted Markdown. Raw HTML and unsafe link protocols are escaped. */\n markdown: string;\n /** Exact standalone text tokens to emphasize without changing Markdown parsing or trusted-HTML boundaries. */\n inlineTokens?: readonly string[];\n trustedHtml?: never;\n }\n | {\n /** Explicitly trusted, already-rendered HTML. The caller owns sanitization. */\n trustedHtml: string;\n markdown?: never;\n inlineTokens?: never;\n }\n );\n\nexport type MarkdownRenderOptions = {\n inlineTokens?: readonly string[];\n /** Whether to render images. False renders alt text without resource requests. Defaults to true. */\n allowImages?: boolean;\n /** Optional protocol allowlist, including trailing colons. Relative URLs resolve as HTTPS. */\n linkProtocols?: readonly string[];\n linkTarget?: \"_blank\";\n};\n\nconst escapeHtml = (value: string): string =>\n value.replaceAll(\"&\", \"&amp;\").replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\").replaceAll('\"', \"&quot;\").replaceAll(\"'\", \"&#39;\");\n\nconst safeUrl = (value: string): string | null => {\n const normalized = value.trim().replace(/[\\u0000-\\u001f\\u007f-\\u009f\\s]+/g, \"\");\n if (/^(?:javascript|vbscript|data):/i.test(normalized)) return null;\n return value;\n};\n\nconst normalizeInlineTokens = (tokens: readonly string[] | undefined): string[] =>\n [...new Set(tokens?.filter(Boolean) ?? [])].sort((left, right) => right.length - left.length);\n\nconst isStandaloneInlineToken = (text: string, start: number, value: string): boolean => {\n const before = text[start - 1];\n if (before && /[a-zA-Z0-9_.%+\\-]/.test(before)) return false;\n const end = start + value.length;\n const after = text[end];\n if (after && /[a-zA-Z0-9_@]/.test(after)) return false;\n return !(after === \".\" && /[a-zA-Z0-9_]/.test(text[end + 1] ?? \"\"));\n};\n\nconst createSafeRenderer = (options: MarkdownRenderOptions = {}): Renderer => {\n const renderer = new Renderer();\n const inlineTokens = normalizeInlineTokens(options.inlineTokens);\n const renderText = renderer.text.bind(renderer);\n const renderTable = renderer.table.bind(renderer);\n renderer.table = (token: Tokens.Table) => {\n const table = renderTable(token);\n const content = token.header.every((cell) => !cell.text.trim())\n ? table.replace(/<thead>[\\s\\S]*?<\\/thead>\\n?/, \"\")\n : table;\n return `<div class=\"k2b-content-markdown__table\" tabindex=\"0\">${content}</div>`;\n };\n renderer.html = ({ text }: Tokens.HTML | Tokens.Tag) => escapeHtml(text);\n renderer.link = function ({ href, title, tokens }: Tokens.Link) {\n const body = this.parser.parseInline(tokens);\n const url = safeUrl(href);\n if (!url) return body;\n if (options.linkProtocols) {\n try {\n if (!options.linkProtocols.includes(new URL(url, \"https://markdown.invalid/\").protocol)) return body;\n } catch {\n return body;\n }\n }\n const titleAttribute = title ? ` title=\"${escapeHtml(title)}\"` : \"\";\n const target = options.linkTarget === \"_blank\" ? ' target=\"_blank\" rel=\"noopener noreferrer\"' : \"\";\n return `<a href=\"${escapeHtml(url)}\"${titleAttribute}${target}>${body}</a>`;\n };\n renderer.image = ({ href, title, text }: Tokens.Image) => {\n const url = safeUrl(href);\n if (!url || options.allowImages === false) return escapeHtml(text);\n const titleAttribute = title ? ` title=\"${escapeHtml(title)}\"` : \"\";\n return `<img src=\"${escapeHtml(url)}\" alt=\"${escapeHtml(text)}\"${titleAttribute}>`;\n };\n renderer.text = (token) => {\n if (inlineTokens.length === 0 || token.type === \"escape\" || (\"tokens\" in token && token.tokens)) return renderText(token);\n const parts: string[] = [];\n let plainStart = 0;\n let cursor = 0;\n while (cursor < token.text.length) {\n const inlineToken = inlineTokens.find(\n (candidate) => token.text.startsWith(candidate, cursor) && isStandaloneInlineToken(token.text, cursor, candidate),\n );\n if (!inlineToken) {\n cursor += 1;\n continue;\n }\n if (plainStart < cursor) {\n const text = token.text.slice(plainStart, cursor);\n parts.push(renderText({ ...token, raw: text, text }));\n }\n parts.push(\n `<span class=\"k2b-content-markdown__inline-token\">${renderText({ ...token, raw: inlineToken, text: inlineToken })}</span>`,\n );\n cursor += inlineToken.length;\n plainStart = cursor;\n }\n if (plainStart === 0) return renderText(token);\n if (plainStart < token.text.length) {\n const text = token.text.slice(plainStart);\n parts.push(renderText({ ...token, raw: text, text }));\n }\n return parts.join(\"\");\n };\n return renderer;\n};\n\nexport const renderSafeMarkdown = (markdown: string, options: MarkdownRenderOptions = {}): string =>\n marked.parse(markdown, {\n async: false,\n renderer: createSafeRenderer(options),\n }) as string;\n\n/**\n * Markdown View Component (SSR)\n *\n * Renders untrusted Markdown safely by default. Raw HTML and unsafe link\n * protocols are escaped. Already-rendered HTML requires the deliberately named\n * `trustedHtml` boundary; the caller owns sanitization in that mode.\n *\n * @example\n * ```tsx\n * import { MarkdownView } from \"@k2b/ui\";\n *\n * <MarkdownView markdown={source} />;\n * ```\n *\n * @example Compact headings, e.g. inside comments or file previews:\n * ```tsx\n * <MarkdownView markdown={source} headingScale=\"compact\" />;\n * ```\n */\nexport default function MarkdownView(props: MarkdownViewProps) {\n const html = () =>\n props.markdown !== undefined\n ? renderSafeMarkdown(props.markdown, {\n inlineTokens: props.inlineTokens,\n allowImages: props.allowImages,\n linkProtocols: props.linkProtocols,\n linkTarget: props.linkTarget,\n })\n : props.trustedHtml;\n return (\n <div\n class={`k2b-content-markdown ${props.class ?? \"\"}`}\n data-heading-scale={props.headingScale && props.headingScale !== \"normal\" ? props.headingScale : undefined}\n innerHTML={html()}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["marked","Renderer","escapeHtml","value","replaceAll","safeUrl","normalized","trim","replace","test","normalizeInlineTokens","tokens","Set","filter","Boolean","sort","left","right","length","isStandaloneInlineToken","text","start","before","end","after","createSafeRenderer","options","renderer","inlineTokens","renderText","bind","renderTable","table","token","content","header","every","cell","html","link","href","title","body","parser","parseInline","url","linkProtocols","includes","URL","protocol","titleAttribute","target","linkTarget","image","allowImages","type","parts","plainStart","cursor","inlineToken","find","candidate","startsWith","slice","push","raw","join","renderSafeMarkdown","markdown","parse","async","MarkdownView","props","undefined","trustedHtml","_el$","_$getNextElement","_tmpl$","_$effect","_p$","_v$","class","_v$2","headingScale","_v$3","e","_$className","t","_$setAttribute","a","_$setProperty"],"sources":["content/MarkdownView.tsx"],"sourcesContent":["import { marked, Renderer, type Tokens } from \"marked\";\n\ntype CommonProps = MarkdownRenderOptions & {\n /** Optional additional CSS classes */\n class?: string;\n /**\n * Visual heading scale. Markdown heading levels and document structure stay\n * unchanged.\n */\n headingScale?: \"compact\" | \"normal\" | \"large\";\n};\n\nexport type MarkdownViewProps = CommonProps &\n (\n | {\n /** Untrusted Markdown. Raw HTML and unsafe link protocols are escaped. */\n markdown: string;\n /** Exact standalone text tokens to emphasize without changing Markdown parsing or trusted-HTML boundaries. */\n inlineTokens?: readonly string[];\n trustedHtml?: never;\n }\n | {\n /** Explicitly trusted, already-rendered HTML. The caller owns sanitization. */\n trustedHtml: string;\n markdown?: never;\n inlineTokens?: never;\n }\n );\n\nexport type MarkdownRenderOptions = {\n inlineTokens?: readonly string[];\n /** Whether to render images. False renders alt text without resource requests. Defaults to true. */\n allowImages?: boolean;\n /** Optional protocol allowlist, including trailing colons. Relative URLs resolve as HTTPS. */\n linkProtocols?: readonly string[];\n linkTarget?: \"_blank\";\n};\n\nconst escapeHtml = (value: string): string =>\n value.replaceAll(\"&\", \"&amp;\").replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\").replaceAll('\"', \"&quot;\").replaceAll(\"'\", \"&#39;\");\n\nconst safeUrl = (value: string): string | null => {\n const normalized = value.trim().replace(/[\\u0000-\\u001f\\u007f-\\u009f\\s]+/g, \"\");\n if (/^(?:javascript|vbscript|data):/i.test(normalized)) return null;\n return value;\n};\n\nconst normalizeInlineTokens = (tokens: readonly string[] | undefined): string[] =>\n [...new Set(tokens?.filter(Boolean) ?? [])].sort((left, right) => right.length - left.length);\n\nconst isStandaloneInlineToken = (text: string, start: number, value: string): boolean => {\n const before = text[start - 1];\n if (before && /[a-zA-Z0-9_.%+\\-]/.test(before)) return false;\n const end = start + value.length;\n const after = text[end];\n if (after && /[a-zA-Z0-9_@]/.test(after)) return false;\n return !(after === \".\" && /[a-zA-Z0-9_]/.test(text[end + 1] ?? \"\"));\n};\n\nconst createSafeRenderer = (options: MarkdownRenderOptions = {}): Renderer => {\n const renderer = new Renderer();\n const inlineTokens = normalizeInlineTokens(options.inlineTokens);\n const renderText = renderer.text.bind(renderer);\n const renderTable = renderer.table.bind(renderer);\n renderer.table = (token: Tokens.Table) => {\n const table = renderTable(token);\n const content = token.header.every((cell) => !cell.text.trim()) ? table.replace(/<thead>[\\s\\S]*?<\\/thead>\\n?/, \"\") : table;\n return `<div class=\"k2b-content-markdown__table\" tabindex=\"0\">${content}</div>`;\n };\n renderer.html = ({ text }: Tokens.HTML | Tokens.Tag) => escapeHtml(text);\n renderer.link = function ({ href, title, tokens }: Tokens.Link) {\n const body = this.parser.parseInline(tokens);\n const url = safeUrl(href);\n if (!url) return body;\n if (options.linkProtocols) {\n try {\n if (!options.linkProtocols.includes(new URL(url, \"https://markdown.invalid/\").protocol)) return body;\n } catch {\n return body;\n }\n }\n const titleAttribute = title ? ` title=\"${escapeHtml(title)}\"` : \"\";\n const target = options.linkTarget === \"_blank\" ? ' target=\"_blank\" rel=\"noopener noreferrer\"' : \"\";\n return `<a href=\"${escapeHtml(url)}\"${titleAttribute}${target}>${body}</a>`;\n };\n renderer.image = ({ href, title, text }: Tokens.Image) => {\n const url = safeUrl(href);\n if (!url || options.allowImages === false) return escapeHtml(text);\n const titleAttribute = title ? ` title=\"${escapeHtml(title)}\"` : \"\";\n return `<img src=\"${escapeHtml(url)}\" alt=\"${escapeHtml(text)}\"${titleAttribute}>`;\n };\n renderer.text = (token) => {\n if (inlineTokens.length === 0 || token.type === \"escape\" || (\"tokens\" in token && token.tokens)) return renderText(token);\n const parts: string[] = [];\n let plainStart = 0;\n let cursor = 0;\n while (cursor < token.text.length) {\n const inlineToken = inlineTokens.find(\n (candidate) => token.text.startsWith(candidate, cursor) && isStandaloneInlineToken(token.text, cursor, candidate),\n );\n if (!inlineToken) {\n cursor += 1;\n continue;\n }\n if (plainStart < cursor) {\n const text = token.text.slice(plainStart, cursor);\n parts.push(renderText({ ...token, raw: text, text }));\n }\n parts.push(\n `<span class=\"k2b-content-markdown__inline-token\">${renderText({ ...token, raw: inlineToken, text: inlineToken })}</span>`,\n );\n cursor += inlineToken.length;\n plainStart = cursor;\n }\n if (plainStart === 0) return renderText(token);\n if (plainStart < token.text.length) {\n const text = token.text.slice(plainStart);\n parts.push(renderText({ ...token, raw: text, text }));\n }\n return parts.join(\"\");\n };\n return renderer;\n};\n\nexport const renderSafeMarkdown = (markdown: string, options: MarkdownRenderOptions = {}): string =>\n marked.parse(markdown, {\n async: false,\n renderer: createSafeRenderer(options),\n }) as string;\n\n/**\n * Markdown View Component (SSR)\n *\n * Renders untrusted Markdown safely by default. Raw HTML and unsafe link\n * protocols are escaped. Already-rendered HTML requires the deliberately named\n * `trustedHtml` boundary; the caller owns sanitization in that mode.\n *\n * @example\n * ```tsx\n * import { MarkdownView } from \"@k2b/ui\";\n *\n * <MarkdownView markdown={source} />;\n * ```\n *\n * @example Compact headings, e.g. inside comments or file previews:\n * ```tsx\n * <MarkdownView markdown={source} headingScale=\"compact\" />;\n * ```\n */\nexport default function MarkdownView(props: MarkdownViewProps) {\n const html = () =>\n props.markdown !== undefined\n ? renderSafeMarkdown(props.markdown, {\n inlineTokens: props.inlineTokens,\n allowImages: props.allowImages,\n linkProtocols: props.linkProtocols,\n linkTarget: props.linkTarget,\n })\n : props.trustedHtml;\n return (\n <div\n class={`k2b-content-markdown ${props.class ?? \"\"}`}\n data-heading-scale={props.headingScale && props.headingScale !== \"normal\" ? props.headingScale : undefined}\n innerHTML={html()}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Link","createMemo","For","Show","useUiMessages","PaginationLink","props","onNavigate","_$createComponent","href","rel","scroll","class","aria-label","label","children","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_p$","_v$","_v$2","_v$3","_v$4","e","_$setAttribute","t","a","_$className","o","undefined","Pagination","messages","totalPages","Math","max","floor","Number","isFinite","currentPage","min","page","baseUrl","visiblePages","Set","filter","sort","left","right","when","_el$2","_tmpl$4","_el$3","firstChild","_el$4","nextSibling","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","pageOf","total","previousPage","_tmpl$2","each","index","hasGap","isCurrent","mobileVisible","_tmpl$5","fallback","goToPage","_el$12","_tmpl$6","nextPage","_tmpl$3","pagination"],"sources":["content/Pagination.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent } from \"@k2b/ssr/nav\";\nimport { createMemo, For, type JSX, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type PaginationProps = {\n currentPage: number;\n totalPages: number;\n baseUrl: string;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n};\n\ntype PaginationLinkProps = {\n href: string;\n label: string;\n rel?: \"prev\" | \"next\";\n class?: string;\n onNavigate?: PaginationProps[\"onNavigate\"];\n children: JSX.Element;\n};\n\nconst PaginationLink = (props: PaginationLinkProps) =>\n props.onNavigate ? (\n <Link\n href={props.href}\n rel={props.rel}\n scroll=\"top\"\n onNavigate={props.onNavigate}\n class={`k2b-pagination__page ${props.class ?? \"\"}`}\n aria-label={props.label}\n >\n {props.children}\n </Link>\n ) : (\n <a href={props.href} rel={props.rel} class={`k2b-pagination__page ${props.class ?? \"\"}`} aria-label={props.label}>\n {props.children}\n </a>\n );\n\n/** Link-based pagination with directional navigation and compact mobile disclosure. */\nexport const Pagination = (props: PaginationProps): JSX.Element => {\n const messages = useUiMessages();\n const totalPages = createMemo(() => Math.max(1, Math.floor(Number.isFinite(props.totalPages) ? props.totalPages : 1)));\n const currentPage = createMemo(() =>\n Math.min(totalPages(), Math.max(1, Math.floor(Number.isFinite(props.currentPage) ? props.currentPage : 1))),\n );\n const href = (page: number) => `${props.baseUrl}${page}`;\n const visiblePages = createMemo(() =>\n [...new Set([1, currentPage() - 1, currentPage(), currentPage() + 1, totalPages()])]\n .filter((page) => page >= 1 && page <= totalPages())\n .sort((left, right) => left - right),\n );\n\n return (\n <Show when={totalPages() > 1}>\n <nav class=\"k2b-pagination\" aria-label={messages().pagination}>\n <span class=\"k2b-sr-only\">\n {messages().pageOf({ page: currentPage(), total: totalPages() })}\n </span>\n <div class=\"k2b-pagination__pages\">\n <Show when={currentPage() > 1}>\n <PaginationLink href={href(currentPage() - 1)} rel=\"prev\" label={messages().previousPage} onNavigate={props.onNavigate}>\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </PaginationLink>\n </Show>\n\n <For each={visiblePages()}>\n {(page, index) => {\n const previousPage = () => visiblePages()[index() - 1];\n const hasGap = () => previousPage() !== undefined && page - previousPage()! > 1;\n const isCurrent = () => page === currentPage();\n const mobileVisible = () => page === 1 || page === totalPages() || isCurrent();\n\n return (\n <>\n <Show when={hasGap()}>\n <span class=\"k2b-pagination__ellipsis\" aria-hidden=\"true\">\n …\n </span>\n </Show>\n <Show\n when={isCurrent()}\n fallback={\n <PaginationLink\n href={href(page)}\n label={messages().goToPage({ page })}\n class={mobileVisible() ? \"\" : \"k2b-pagination__page--wide-only\"}\n onNavigate={props.onNavigate}\n >\n {page}\n </PaginationLink>\n }\n >\n <span class=\"k2b-pagination__page is-current\" aria-current=\"page\">\n {page}\n </span>\n </Show>\n </>\n );\n }}\n </For>\n\n <Show when={currentPage() < totalPages()}>\n <PaginationLink href={href(currentPage() + 1)} rel=\"next\" label={messages().nextPage} onNavigate={props.onNavigate}>\n <i class=\"ti ti-chevron-right\" aria-hidden=\"true\" />\n </PaginationLink>\n </Show>\n </div>\n </nav>\n </Show>\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Link","createMemo","For","Show","useUiMessages","PaginationLink","props","onNavigate","_$createComponent","href","rel","scroll","class","aria-label","label","children","_el$","_$getNextElement","_tmpl$","_$insert","_$effect","_p$","_v$","_v$2","_v$3","_v$4","e","_$setAttribute","t","a","_$className","o","undefined","Pagination","messages","totalPages","Math","max","floor","Number","isFinite","currentPage","min","page","baseUrl","visiblePages","Set","filter","sort","left","right","when","_el$2","_tmpl$4","_el$3","firstChild","_el$4","nextSibling","_el$7","_el$8","_co$","_$getNextMarker","_el$9","_el$0","_co$2","_el$1","_el$10","_co$3","pageOf","total","previousPage","_tmpl$2","each","index","hasGap","isCurrent","mobileVisible","_tmpl$5","fallback","goToPage","_el$12","_tmpl$6","nextPage","_tmpl$3","pagination"],"sources":["content/Pagination.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent } from \"@k2b/ssr/nav\";\nimport { createMemo, For, type JSX, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type PaginationProps = {\n currentPage: number;\n totalPages: number;\n baseUrl: string;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n};\n\ntype PaginationLinkProps = {\n href: string;\n label: string;\n rel?: \"prev\" | \"next\";\n class?: string;\n onNavigate?: PaginationProps[\"onNavigate\"];\n children: JSX.Element;\n};\n\nconst PaginationLink = (props: PaginationLinkProps) =>\n props.onNavigate ? (\n <Link\n href={props.href}\n rel={props.rel}\n scroll=\"top\"\n onNavigate={props.onNavigate}\n class={`k2b-pagination__page ${props.class ?? \"\"}`}\n aria-label={props.label}\n >\n {props.children}\n </Link>\n ) : (\n <a href={props.href} rel={props.rel} class={`k2b-pagination__page ${props.class ?? \"\"}`} aria-label={props.label}>\n {props.children}\n </a>\n );\n\n/** Link-based pagination with directional navigation and compact mobile disclosure. */\nexport const Pagination = (props: PaginationProps): JSX.Element => {\n const messages = useUiMessages();\n const totalPages = createMemo(() => Math.max(1, Math.floor(Number.isFinite(props.totalPages) ? props.totalPages : 1)));\n const currentPage = createMemo(() =>\n Math.min(totalPages(), Math.max(1, Math.floor(Number.isFinite(props.currentPage) ? props.currentPage : 1))),\n );\n const href = (page: number) => `${props.baseUrl}${page}`;\n const visiblePages = createMemo(() =>\n [...new Set([1, currentPage() - 1, currentPage(), currentPage() + 1, totalPages()])]\n .filter((page) => page >= 1 && page <= totalPages())\n .sort((left, right) => left - right),\n );\n\n return (\n <Show when={totalPages() > 1}>\n <nav class=\"k2b-pagination\" aria-label={messages().pagination}>\n <span class=\"k2b-sr-only\">{messages().pageOf({ page: currentPage(), total: totalPages() })}</span>\n <div class=\"k2b-pagination__pages\">\n <Show when={currentPage() > 1}>\n <PaginationLink href={href(currentPage() - 1)} rel=\"prev\" label={messages().previousPage} onNavigate={props.onNavigate}>\n <i class=\"ti ti-chevron-left\" aria-hidden=\"true\" />\n </PaginationLink>\n </Show>\n\n <For each={visiblePages()}>\n {(page, index) => {\n const previousPage = () => visiblePages()[index() - 1];\n const hasGap = () => previousPage() !== undefined && page - previousPage()! > 1;\n const isCurrent = () => page === currentPage();\n const mobileVisible = () => page === 1 || page === totalPages() || isCurrent();\n\n return (\n <>\n <Show when={hasGap()}>\n <span class=\"k2b-pagination__ellipsis\" aria-hidden=\"true\">\n …\n </span>\n </Show>\n <Show\n when={isCurrent()}\n fallback={\n <PaginationLink\n href={href(page)}\n label={messages().goToPage({ page })}\n class={mobileVisible() ? \"\" : \"k2b-pagination__page--wide-only\"}\n onNavigate={props.onNavigate}\n >\n {page}\n </PaginationLink>\n }\n >\n <span class=\"k2b-pagination__page is-current\" aria-current=\"page\">\n {page}\n </span>\n </Show>\n </>\n );\n }}\n </For>\n\n <Show when={currentPage() < totalPages()}>\n <PaginationLink href={href(currentPage() + 1)} rel=\"next\" label={messages().nextPage} onNavigate={props.onNavigate}>\n <i class=\"ti ti-chevron-right\" aria-hidden=\"true\" />\n </PaginationLink>\n </Show>\n </div>\n </nav>\n </Show>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAASA,IAAI,QAAgC,cAAc;AAC3D,SAASC,UAAU,EAAEC,GAAG,EAAYC,IAAI,QAAQ,UAAU;AAC1D,SAASC,aAAa,QAAQ,kBAAkB;AAkBhD,MAAMC,cAAc,GAAIC,KAA0B,IAChDA,KAAK,CAACC,UAAU,GAAAC,iBAAA,CACbR,IAAI;EAAA,IACHS,IAAIA,CAAA;IAAA,OAAEH,KAAK,CAACG,IAAI;EAAA;EAAA,IAChBC,GAAGA,CAAA;IAAA,OAAEJ,KAAK,CAACI,GAAG;EAAA;EACdC,MAAM;EAAA,IACNJ,UAAUA,CAAA;IAAA,OAAED,KAAK,CAACC,UAAU;EAAA;EAAA,aAAAK,CAAA;IAAA,OACrB,wBAAwBN,KAAK,CAACM,KAAK,IAAI,EAAE,EAAE;EAAA;EAAA,kBAAAC,CAAA;IAAA,OACtCP,KAAK,CAACQ,KAAK;EAAA;EAAA,IAAAC,SAAA;IAAA,OAEtBT,KAAK,CAACS,QAAQ;EAAA;AAAA;EAAA,IAAAC,IAAA,GAAAC,gBAAA,CAAAC,MAAA;EAAAC,QAAA,CAAAH,IAAA,QAIdV,KAAK,CAACS,QAAQ;EAAAK,QAAA,CAAAC,GAAA;IAAA,IAAAC,GAAA,GADRhB,KAAK,CAACG,IAAI;MAAAc,IAAA,GAAOjB,KAAK,CAACI,GAAG;MAAAc,IAAA,GAAS,wBAAwBlB,KAAK,CAACM,KAAK,IAAI,EAAE,EAAE;MAAAa,IAAA,GAAcnB,KAAK,CAACQ,KAAK;IAAAQ,GAAA,KAAAD,GAAA,CAAAK,CAAA,IAAAC,cAAA,CAAAX,IAAA,UAAAK,GAAA,CAAAK,CAAA,GAAAJ,GAAA;IAAAC,IAAA,KAAAF,GAAA,CAAAO,CAAA,IAAAD,cAAA,CAAAX,IAAA,SAAAK,GAAA,CAAAO,CAAA,GAAAL,IAAA;IAAAC,IAAA,KAAAH,GAAA,CAAAQ,CAAA,IAAAC,WAAA,CAAAd,IAAA,EAAAK,GAAA,CAAAQ,CAAA,GAAAL,IAAA;IAAAC,IAAA,KAAAJ,GAAA,CAAAU,CAAA,IAAAJ,cAAA,CAAAX,IAAA,gBAAAK,GAAA,CAAAU,CAAA,GAAAN,IAAA;IAAA,OAAAJ,GAAA;EAAA;IAAAK,CAAA,EAAAM,SAAA;IAAAJ,CAAA,EAAAI,SAAA;IAAAH,CAAA,EAAAG,SAAA;IAAAD,CAAA,EAAAC;EAAA;EAAA,OAAAhB,IAAA;AAAA,IAGjH;;AAEH;AACA,OAAO,MAAMiB,UAAU,GAAI3B,KAAsB,IAAkB;EACjE,MAAM4B,QAAQ,GAAG9B,aAAa,CAAC,CAAC;EAChC,MAAM+B,UAAU,GAAGlC,UAAU,CAAC,MAAMmC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAACC,MAAM,CAACC,QAAQ,CAAClC,KAAK,CAAC6B,UAAU,CAAC,GAAG7B,KAAK,CAAC6B,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;EACtH,MAAMM,WAAW,GAAGxC,UAAU,CAAC,MAC7BmC,IAAI,CAACM,GAAG,CAACP,UAAU,CAAC,CAAC,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAACC,MAAM,CAACC,QAAQ,CAAClC,KAAK,CAACmC,WAAW,CAAC,GAAGnC,KAAK,CAACmC,WAAW,GAAG,CAAC,CAAC,CAAC,CAC5G,CAAC;EACD,MAAMhC,IAAI,GAAIkC,IAAY,IAAK,GAAGrC,KAAK,CAACsC,OAAO,GAAGD,IAAI,EAAE;EACxD,MAAME,YAAY,GAAG5C,UAAU,CAAC,MAC9B,CAAC,GAAG,IAAI6C,GAAG,CAAC,CAAC,CAAC,EAAEL,WAAW,CAAC,CAAC,GAAG,CAAC,EAAEA,WAAW,CAAC,CAAC,EAAEA,WAAW,CAAC,CAAC,GAAG,CAAC,EAAEN,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CACjFY,MAAM,CAAEJ,IAAI,IAAKA,IAAI,IAAI,CAAC,IAAIA,IAAI,IAAIR,UAAU,CAAC,CAAC,CAAC,CACnDa,IAAI,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAKD,IAAI,GAAGC,KAAK,CACvC,CAAC;EAED,OAAA1C,iBAAA,CACGL,IAAI;IAAA,IAACgD,IAAIA,CAAA;MAAA,OAAEhB,UAAU,CAAC,CAAC,GAAG,CAAC;IAAA;IAAA,IAAApB,SAAA;MAAA,IAAAqC,KAAA,GAAAnC,gBAAA,CAAAoC,OAAA;QAAAC,KAAA,GAAAF,KAAA,CAAAG,UAAA;QAAAC,KAAA,GAAAF,KAAA,CAAAG,WAAA;QAAAC,KAAA,GAAAF,KAAA,CAAAD,UAAA;QAAA,CAAAI,KAAA,EAAAC,IAAA,IAAAC,eAAA,CAAAH,KAAA,CAAAD,WAAA;QAAAK,KAAA,GAAAH,KAAA,CAAAF,WAAA;QAAA,CAAAM,KAAA,EAAAC,KAAA,IAAAH,eAAA,CAAAC,KAAA,CAAAL,WAAA;QAAAQ,KAAA,GAAAF,KAAA,CAAAN,WAAA;QAAA,CAAAS,MAAA,EAAAC,KAAA,IAAAN,eAAA,CAAAI,KAAA,CAAAR,WAAA;MAAAtC,QAAA,CAAAmC,KAAA,QAEGpB,QAAQ,CAAC,CAAC,CAACkC,MAAM,CAAC;QAAEzB,IAAI,EAAEF,WAAW,CAAC,CAAC;QAAE4B,KAAK,EAAElC,UAAU,CAAC;MAAE,CAAC,CAAC;MAAAhB,QAAA,CAAAqC,KAAA,EAAAhD,iBAAA,CAEvFL,IAAI;QAAA,IAACgD,IAAIA,CAAA;UAAA,OAAEV,WAAW,CAAC,CAAC,GAAG,CAAC;QAAA;QAAA,IAAA1B,SAAA;UAAA,OAAAP,iBAAA,CAC1BH,cAAc;YAAA,IAACI,IAAIA,CAAA;cAAA,OAAEA,IAAI,CAACgC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;YAAA;YAAE/B,GAAG;YAAA,IAAQI,KAAKA,CAAA;cAAA,OAAEoB,QAAQ,CAAC,CAAC,CAACoC,YAAY;YAAA;YAAA,IAAE/D,UAAUA,CAAA;cAAA,OAAED,KAAK,CAACC,UAAU;YAAA;YAAA,IAAAQ,SAAA;cAAA,OAAAE,gBAAA,CAAAsD,OAAA;YAAA;UAAA;QAAA;MAAA,IAAAZ,KAAA,EAAAC,IAAA;MAAAzC,QAAA,CAAAqC,KAAA,EAAAhD,iBAAA,CAKvHN,GAAG;QAAA,IAACsE,IAAIA,CAAA;UAAA,OAAE3B,YAAY,CAAC,CAAC;QAAA;QAAA9B,QAAA,EACtBA,CAAC4B,IAAI,EAAE8B,KAAK,KAAK;UAChB,MAAMH,YAAY,GAAGA,CAAA,KAAMzB,YAAY,CAAC,CAAC,CAAC4B,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;UACtD,MAAMC,MAAM,GAAGA,CAAA,KAAMJ,YAAY,CAAC,CAAC,KAAKtC,SAAS,IAAIW,IAAI,GAAG2B,YAAY,CAAC,CAAE,GAAG,CAAC;UAC/E,MAAMK,SAAS,GAAGA,CAAA,KAAMhC,IAAI,KAAKF,WAAW,CAAC,CAAC;UAC9C,MAAMmC,aAAa,GAAGA,CAAA,KAAMjC,IAAI,KAAK,CAAC,IAAIA,IAAI,KAAKR,UAAU,CAAC,CAAC,IAAIwC,SAAS,CAAC,CAAC;UAE9E,QAAAnE,iBAAA,CAEKL,IAAI;YAAA,IAACgD,IAAIA,CAAA;cAAA,OAAEuB,MAAM,CAAC,CAAC;YAAA;YAAA,IAAA3D,SAAA;cAAA,OAAAE,gBAAA,CAAA4D,OAAA;YAAA;UAAA,IAAArE,iBAAA,CAKnBL,IAAI;YAAA,IACHgD,IAAIA,CAAA;cAAA,OAAEwB,SAAS,CAAC,CAAC;YAAA;YAAA,IACjBG,QAAQA,CAAA;cAAA,OAAAtE,iBAAA,CACLH,cAAc;gBAAA,IACbI,IAAIA,CAAA;kBAAA,OAAEA,IAAI,CAACkC,IAAI,CAAC;gBAAA;gBAAA,IAChB7B,KAAKA,CAAA;kBAAA,OAAEoB,QAAQ,CAAC,CAAC,CAAC6C,QAAQ,CAAC;oBAAEpC;kBAAK,CAAC,CAAC;gBAAA;gBAAA,aAAA/B,CAAA;kBAAA,OAC7BgE,aAAa,CAAC,CAAC,GAAG,EAAE,GAAG,iCAAiC;gBAAA;gBAAA,IAC/DrE,UAAUA,CAAA;kBAAA,OAAED,KAAK,CAACC,UAAU;gBAAA;gBAAAQ,QAAA,EAE3B4B;cAAI;YAAA;YAAA,IAAA5B,SAAA;cAAA,IAAAiE,MAAA,GAAA/D,gBAAA,CAAAgE,OAAA;cAAA9D,QAAA,CAAA6D,MAAA,EAKNrC,IAAI;cAAA,OAAAqC,MAAA;YAAA;UAAA;QAKf;MAAC,IAAAjB,KAAA,EAAAC,KAAA;MAAA7C,QAAA,CAAAqC,KAAA,EAAAhD,iBAAA,CAGFL,IAAI;QAAA,IAACgD,IAAIA,CAAA;UAAA,OAAEV,WAAW,CAAC,CAAC,GAAGN,UAAU,CAAC,CAAC;QAAA;QAAA,IAAApB,SAAA;UAAA,OAAAP,iBAAA,CACrCH,cAAc;YAAA,IAACI,IAAIA,CAAA;cAAA,OAAEA,IAAI,CAACgC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC;YAAA;YAAE/B,GAAG;YAAA,IAAQI,KAAKA,CAAA;cAAA,OAAEoB,QAAQ,CAAC,CAAC,CAACgD,QAAQ;YAAA;YAAA,IAAE3E,UAAUA,CAAA;cAAA,OAAED,KAAK,CAACC,UAAU;YAAA;YAAA,IAAAQ,SAAA;cAAA,OAAAE,gBAAA,CAAAkE,OAAA;YAAA;UAAA;QAAA;MAAA,IAAAjB,MAAA,EAAAC,KAAA;MAAA/C,QAAA,OAAAO,cAAA,CAAAyB,KAAA,gBA9ChFlB,QAAQ,CAAC,CAAC,CAACkD,UAAU;MAAA,OAAAhC,KAAA;IAAA;EAAA;AAsDnE,CAAC","ignoreList":[]}