@exulu/frontend 1.8.0 → 1.10.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.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +153 -155
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +8 -8
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +4 -4
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app-paths-manifest.json +5 -5
- package/dist/.next/server/chunks/1025.js +1 -0
- package/dist/.next/server/chunks/2270.js +18 -44
- package/dist/.next/server/chunks/3434.js +1 -1
- package/dist/.next/server/chunks/3503.js +1 -0
- package/dist/.next/server/chunks/5084.js +1 -0
- package/dist/.next/server/chunks/5192.js +1 -1
- package/dist/.next/server/chunks/5485.js +1 -1
- package/dist/.next/server/chunks/5600.js +1 -1
- package/dist/.next/server/chunks/5974.js +1 -0
- package/dist/.next/server/chunks/6590.js +1 -1
- package/dist/.next/server/chunks/7471.js +1 -1
- package/dist/.next/server/chunks/8286.js +1 -1
- package/dist/.next/server/chunks/{3679.js → 9874.js} +5 -5
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js +2 -0
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +1 -0
- package/dist/.next/static/chunks/{4811-316807e25b634f9f.js → 192-72d6868cd891ccc6.js} +8 -8
- package/dist/.next/static/chunks/192-72d6868cd891ccc6.js.map +1 -0
- package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js +2 -0
- package/dist/.next/static/chunks/1957-cf44b1d31a9c7d5c.js.map +1 -0
- package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js +2 -0
- package/dist/.next/static/chunks/342-d9c2d6ae9f9435cb.js.map +1 -0
- package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js +2 -0
- package/dist/.next/static/chunks/3750-e3d1b2cccd265190.js.map +1 -0
- package/dist/.next/static/chunks/{3832-417a5eeee712a793.js → 3832-d7782d6a2771ae6c.js} +1 -1
- package/dist/.next/static/chunks/{3832-417a5eeee712a793.js.map → 3832-d7782d6a2771ae6c.js.map} +1 -1
- package/dist/.next/static/chunks/552-39155a93c527ec6d.js +2 -0
- package/dist/.next/static/chunks/552-39155a93c527ec6d.js.map +1 -0
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js +2 -0
- package/dist/.next/static/chunks/6280-50b751f993f2fe4f.js.map +1 -0
- package/dist/.next/static/chunks/6367-59655a85d75e19be.js +2 -0
- package/dist/.next/static/chunks/6367-59655a85d75e19be.js.map +1 -0
- package/dist/.next/static/chunks/6373-aef582adc575d3ca.js +2 -0
- package/dist/.next/static/chunks/6373-aef582adc575d3ca.js.map +1 -0
- package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js +2 -0
- package/dist/.next/static/chunks/8030-9c926ea4dfd3a54e.js.map +1 -0
- package/dist/.next/static/chunks/{6805-792cc8008b165c07.js → 8293-ba5cd36594e6fde1.js} +10 -10
- package/dist/.next/static/chunks/8293-ba5cd36594e6fde1.js.map +1 -0
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js +2 -0
- package/dist/.next/static/chunks/9105-d8ff41060f7ffc85.js.map +1 -0
- package/dist/.next/static/chunks/9953-95900a236271a222.js +2 -0
- package/dist/.next/static/chunks/9953-95900a236271a222.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js +2 -0
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-e4a4693953329671.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-d59534ca19eee51f.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-0c7c1b0e1713bf60.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-0c7c1b0e1713bf60.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-7db6bfbf02606136.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js → page-827f50c6d1f150d0.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/cases/{page-a39fef7444581565.js.map → page-827f50c6d1f150d0.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/explorer/{page-1d676c9dfe3ed58b.js → page-e6b1c034c07776e2.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/explorer/{page-1d676c9dfe3ed58b.js.map → page-e6b1c034c07776e2.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js +2 -0
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-f04fd5291a1ef7b1.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js +2 -0
- package/dist/.next/static/chunks/app/(application)/prompts/page-2c500e9898447506.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/token/{page-3f74f711f3d04fce.js → page-3acc39cb8a718331.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/token/{page-3f74f711f3d04fce.js.map → page-3acc39cb8a718331.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/workflows/{page-47dedb88cec600d5.js → page-e38f9456120dab69.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +1 -0
- package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js +2 -0
- package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js.map +1 -0
- package/dist/.next/static/css/9c08ae5d990a6b14.css +4 -0
- package/dist/.next/static/css/9c08ae5d990a6b14.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
- package/dist/.next/server/chunks/2948.js +0 -1
- package/dist/.next/server/chunks/38.js +0 -1
- package/dist/.next/server/chunks/7958.js +0 -1
- package/dist/.next/server/chunks/8050.js +0 -1
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js +0 -2
- package/dist/.next/static/chunks/1685-9cacdee7e3f0942f.js.map +0 -1
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js +0 -2
- package/dist/.next/static/chunks/1957-39a01a3915f246ab.js.map +0 -1
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js +0 -2
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js.map +0 -1
- package/dist/.next/static/chunks/4811-316807e25b634f9f.js.map +0 -1
- package/dist/.next/static/chunks/5282-68f9880f1f951f44.js +0 -2
- package/dist/.next/static/chunks/5282-68f9880f1f951f44.js.map +0 -1
- package/dist/.next/static/chunks/572-2940a399da1e3a3b.js +0 -2
- package/dist/.next/static/chunks/572-2940a399da1e3a3b.js.map +0 -1
- package/dist/.next/static/chunks/6367-59cef3c74213925b.js +0 -2
- package/dist/.next/static/chunks/6367-59cef3c74213925b.js.map +0 -1
- package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js +0 -2
- package/dist/.next/static/chunks/6373-4c5dffaf4193621c.js.map +0 -1
- package/dist/.next/static/chunks/6805-792cc8008b165c07.js.map +0 -1
- package/dist/.next/static/chunks/8030-c1b6be46253076cb.js +0 -2
- package/dist/.next/static/chunks/8030-c1b6be46253076cb.js.map +0 -1
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js +0 -2
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js.map +0 -1
- package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js +0 -2
- package/dist/.next/static/chunks/9621-f81c4d7c0ecf5a67.js.map +0 -1
- package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js +0 -2
- package/dist/.next/static/chunks/9953-dfb5fc0e5b74ec09.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js +0 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/page-4e7e02768ed1a72a.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-38f845d5ccdad76b.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-a391b8407f74e9b4.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-cf6f8d2bd4e9c819.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js +0 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/page-bc859da58d8505f7.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js +0 -2
- package/dist/.next/static/chunks/app/(application)/prompts/page-d2f36ff149385efd.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-47dedb88cec600d5.js.map +0 -1
- package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js +0 -2
- package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js.map +0 -1
- package/dist/.next/static/css/c8c015815c72d053.css +0 -4
- package/dist/.next/static/css/c8c015815c72d053.css.map +0 -1
- /package/dist/.next/static/{GOwerAkBncYx0J8q1TqQb → 3j63p6b3zZZB_v1Hn8Mxp}/_buildManifest.js +0 -0
- /package/dist/.next/static/{GOwerAkBncYx0J8q1TqQb → 3j63p6b3zZZB_v1Hn8Mxp}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/chunks/6280-50b751f993f2fe4f.js","mappings":"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","sources":["webpack://_N_E/../../../src/icons/archive-x.ts","webpack://_N_E/../../../src/icons/archive.ts","webpack://_N_E/../../../src/icons/arrow-left.ts","webpack://_N_E/../../../src/icons/file-stack.ts","webpack://_N_E/../../../src/icons/folder.ts","webpack://_N_E/../../../src/icons/grip-vertical.ts","webpack://_N_E/../../../src/icons/list-checks.ts","webpack://_N_E/../../../src/icons/loader.ts","webpack://_N_E/../../../src/icons/package-open.ts","webpack://_N_E/../../../src/icons/pencil.ts","webpack://_N_E/../../../src/icons/plus.ts","webpack://_N_E/../../../src/icons/search.ts","webpack://_N_E/../../../src/icons/step-forward.ts","webpack://_N_E/./node_modules/react-resizable-panels/dist/react-resizable-panels.browser.esm.js","webpack://_N_E/./node_modules/@radix-ui/number/dist/index.mjs","webpack://_N_E/../src/checkbox.tsx","webpack://_N_E/../src/tabs.tsx","webpack://_N_E/./node_modules/@radix-ui/react-use-previous/dist/index.mjs"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ArchiveX\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/archive-x\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArchiveX = createLucideIcon('ArchiveX', [\n ['rect', { width: '20', height: '5', x: '2', y: '3', rx: '1', key: '1wp1u1' }],\n ['path', { d: 'M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8', key: '1s80jp' }],\n ['path', { d: 'm9.5 17 5-5', key: 'nakeu6' }],\n ['path', { d: 'm9.5 12 5 5', key: '1hccrj' }],\n]);\n\nexport default ArchiveX;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Archive\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/archive\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Archive = createLucideIcon('Archive', [\n ['rect', { width: '20', height: '5', x: '2', y: '3', rx: '1', key: '1wp1u1' }],\n ['path', { d: 'M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8', key: '1s80jp' }],\n ['path', { d: 'M10 12h4', key: 'a56b0p' }],\n]);\n\nexport default Archive;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ArrowLeft\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/arrow-left\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowLeft = createLucideIcon('ArrowLeft', [\n ['path', { d: 'm12 19-7-7 7-7', key: '1l729n' }],\n ['path', { d: 'M19 12H5', key: 'x3x0zl' }],\n]);\n\nexport default ArrowLeft;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileStack\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-stack\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileStack = createLucideIcon('FileStack', [\n ['path', { d: 'M16 2v5h5', key: 'kt2in0' }],\n [\n 'path',\n {\n d: 'M21 6v6.5c0 .8-.7 1.5-1.5 1.5h-7c-.8 0-1.5-.7-1.5-1.5v-9c0-.8.7-1.5 1.5-1.5H17l4 4z',\n key: '1km23n',\n },\n ],\n ['path', { d: 'M7 8v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H15', key: '16874u' }],\n ['path', { d: 'M3 12v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H11', key: 'k2ox98' }],\n]);\n\nexport default FileStack;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Folder\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/folder\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Folder = createLucideIcon('Folder', [\n [\n 'path',\n {\n d: 'M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z',\n key: '1kt360',\n },\n ],\n]);\n\nexport default Folder;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name GripVertical\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/grip-vertical\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GripVertical = createLucideIcon('GripVertical', [\n ['circle', { cx: '9', cy: '12', r: '1', key: '1vctgf' }],\n ['circle', { cx: '9', cy: '5', r: '1', key: 'hp0tcf' }],\n ['circle', { cx: '9', cy: '19', r: '1', key: 'fkjjf6' }],\n ['circle', { cx: '15', cy: '12', r: '1', key: '1tmaij' }],\n ['circle', { cx: '15', cy: '5', r: '1', key: '19l28e' }],\n ['circle', { cx: '15', cy: '19', r: '1', key: 'f4zoj3' }],\n]);\n\nexport default GripVertical;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name ListChecks\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/list-checks\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ListChecks = createLucideIcon('ListChecks', [\n ['path', { d: 'm3 17 2 2 4-4', key: '1jhpwq' }],\n ['path', { d: 'm3 7 2 2 4-4', key: '1obspn' }],\n ['path', { d: 'M13 6h8', key: '15sg57' }],\n ['path', { d: 'M13 12h8', key: 'h98zly' }],\n ['path', { d: 'M13 18h8', key: 'oe0vm4' }],\n]);\n\nexport default ListChecks;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Loader\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/loader\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Loader = createLucideIcon('Loader', [\n ['line', { x1: '12', x2: '12', y1: '2', y2: '6', key: 'gza1u7' }],\n ['line', { x1: '12', x2: '12', y1: '18', y2: '22', key: '1qhbu9' }],\n ['line', { x1: '4.93', x2: '7.76', y1: '4.93', y2: '7.76', key: 'xae44r' }],\n ['line', { x1: '16.24', x2: '19.07', y1: '16.24', y2: '19.07', key: 'bxnmvf' }],\n ['line', { x1: '2', x2: '6', y1: '12', y2: '12', key: '89khin' }],\n ['line', { x1: '18', x2: '22', y1: '12', y2: '12', key: 'pb8tfm' }],\n ['line', { x1: '4.93', x2: '7.76', y1: '19.07', y2: '16.24', key: '1uxjnu' }],\n ['line', { x1: '16.24', x2: '19.07', y1: '7.76', y2: '4.93', key: '6duxfx' }],\n]);\n\nexport default Loader;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name PackageOpen\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/package-open\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst PackageOpen = createLucideIcon('PackageOpen', [\n [\n 'path',\n {\n d: 'M20.91 8.84 8.56 2.23a1.93 1.93 0 0 0-1.81 0L3.1 4.13a2.12 2.12 0 0 0-.05 3.69l12.22 6.93a2 2 0 0 0 1.94 0L21 12.51a2.12 2.12 0 0 0-.09-3.67Z',\n key: '1vy178',\n },\n ],\n [\n 'path',\n {\n d: 'm3.09 8.84 12.35-6.61a1.93 1.93 0 0 1 1.81 0l3.65 1.9a2.12 2.12 0 0 1 .1 3.69L8.73 14.75a2 2 0 0 1-1.94 0L3 12.51a2.12 2.12 0 0 1 .09-3.67Z',\n key: 's3bv25',\n },\n ],\n ['line', { x1: '12', x2: '12', y1: '22', y2: '13', key: '1o4xyi' }],\n [\n 'path',\n {\n d: 'M20 13.5v3.37a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13.5',\n key: '1na2nq',\n },\n ],\n]);\n\nexport default PackageOpen;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Pencil\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/pencil\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Pencil = createLucideIcon('Pencil', [\n ['path', { d: 'M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z', key: '5qss01' }],\n ['path', { d: 'm15 5 4 4', key: '1mk7zo' }],\n]);\n\nexport default Pencil;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Plus\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/plus\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Plus = createLucideIcon('Plus', [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'M12 5v14', key: 's699le' }],\n]);\n\nexport default Plus;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Search\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/search\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Search = createLucideIcon('Search', [\n ['circle', { cx: '11', cy: '11', r: '8', key: '4ej97u' }],\n ['path', { d: 'm21 21-4.3-4.3', key: '1qie3q' }],\n]);\n\nexport default Search;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name StepForward\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/step-forward\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst StepForward = createLucideIcon('StepForward', [\n ['line', { x1: '6', x2: '6', y1: '4', y2: '20', key: 'fy8qot' }],\n ['polygon', { points: '10,4 20,12 10,20', key: '1mc1pf' }],\n]);\n\nexport default StepForward;\n","import * as React from 'react';\n\n// This module exists to work around Webpack issue https://github.com/webpack/webpack/issues/14814\n\n// eslint-disable-next-line no-restricted-imports\n\nconst {\n createElement,\n createContext,\n createRef,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState\n} = React;\n\n// `toString()` prevents bundlers from trying to `import { useId } from 'react'`\nconst useId = React[\"useId\".toString()];\n\nconst PanelGroupContext = createContext(null);\nPanelGroupContext.displayName = \"PanelGroupContext\";\n\nconst useIsomorphicLayoutEffect = useLayoutEffect ;\n\nconst wrappedUseId = typeof useId === \"function\" ? useId : () => null;\nlet counter = 0;\nfunction useUniqueId(idFromParams = null) {\n const idFromUseId = wrappedUseId();\n const idRef = useRef(idFromParams || idFromUseId || null);\n if (idRef.current === null) {\n idRef.current = \"\" + counter++;\n }\n return idFromParams !== null && idFromParams !== void 0 ? idFromParams : idRef.current;\n}\n\nfunction PanelWithForwardedRef({\n children,\n className: classNameFromProps = \"\",\n collapsedSize,\n collapsible,\n defaultSize,\n forwardedRef,\n id: idFromProps,\n maxSize,\n minSize,\n onCollapse,\n onExpand,\n onResize,\n order,\n style: styleFromProps,\n tagName: Type = \"div\",\n ...rest\n}) {\n const context = useContext(PanelGroupContext);\n if (context === null) {\n throw Error(`Panel components must be rendered within a PanelGroup container`);\n }\n const {\n collapsePanel,\n expandPanel,\n getPanelSize,\n getPanelStyle,\n groupId,\n isPanelCollapsed,\n reevaluatePanelConstraints,\n registerPanel,\n resizePanel,\n unregisterPanel\n } = context;\n const panelId = useUniqueId(idFromProps);\n const panelDataRef = useRef({\n callbacks: {\n onCollapse,\n onExpand,\n onResize\n },\n constraints: {\n collapsedSize,\n collapsible,\n defaultSize,\n maxSize,\n minSize\n },\n id: panelId,\n idIsFromProps: idFromProps !== undefined,\n order\n });\n useRef({\n didLogMissingDefaultSizeWarning: false\n });\n useIsomorphicLayoutEffect(() => {\n const {\n callbacks,\n constraints\n } = panelDataRef.current;\n const prevConstraints = {\n ...constraints\n };\n panelDataRef.current.id = panelId;\n panelDataRef.current.idIsFromProps = idFromProps !== undefined;\n panelDataRef.current.order = order;\n callbacks.onCollapse = onCollapse;\n callbacks.onExpand = onExpand;\n callbacks.onResize = onResize;\n constraints.collapsedSize = collapsedSize;\n constraints.collapsible = collapsible;\n constraints.defaultSize = defaultSize;\n constraints.maxSize = maxSize;\n constraints.minSize = minSize;\n\n // If constraints have changed, we should revisit panel sizes.\n // This is uncommon but may happen if people are trying to implement pixel based constraints.\n if (prevConstraints.collapsedSize !== constraints.collapsedSize || prevConstraints.collapsible !== constraints.collapsible || prevConstraints.maxSize !== constraints.maxSize || prevConstraints.minSize !== constraints.minSize) {\n reevaluatePanelConstraints(panelDataRef.current, prevConstraints);\n }\n });\n useIsomorphicLayoutEffect(() => {\n const panelData = panelDataRef.current;\n registerPanel(panelData);\n return () => {\n unregisterPanel(panelData);\n };\n }, [order, panelId, registerPanel, unregisterPanel]);\n useImperativeHandle(forwardedRef, () => ({\n collapse: () => {\n collapsePanel(panelDataRef.current);\n },\n expand: () => {\n expandPanel(panelDataRef.current);\n },\n getId() {\n return panelId;\n },\n getSize() {\n return getPanelSize(panelDataRef.current);\n },\n isCollapsed() {\n return isPanelCollapsed(panelDataRef.current);\n },\n isExpanded() {\n return !isPanelCollapsed(panelDataRef.current);\n },\n resize: size => {\n resizePanel(panelDataRef.current, size);\n }\n }), [collapsePanel, expandPanel, getPanelSize, isPanelCollapsed, panelId, resizePanel]);\n const style = getPanelStyle(panelDataRef.current, defaultSize);\n return createElement(Type, {\n ...rest,\n children,\n className: classNameFromProps,\n style: {\n ...style,\n ...styleFromProps\n },\n // CSS selectors\n \"data-panel\": \"\",\n \"data-panel-id\": panelId,\n \"data-panel-group-id\": groupId,\n // e2e test attributes\n \"data-panel-collapsible\": undefined,\n \"data-panel-size\": undefined\n });\n}\nconst Panel = forwardRef((props, ref) => createElement(PanelWithForwardedRef, {\n ...props,\n forwardedRef: ref\n}));\nPanelWithForwardedRef.displayName = \"Panel\";\nPanel.displayName = \"forwardRef(Panel)\";\n\nfunction assert(expectedCondition, message = \"Assertion failed!\") {\n if (!expectedCondition) {\n console.error(message);\n throw Error(message);\n }\n}\n\nconst PRECISION = 10;\n\nfunction fuzzyCompareNumbers(actual, expected, fractionDigits = PRECISION) {\n actual = parseFloat(actual.toFixed(fractionDigits));\n expected = parseFloat(expected.toFixed(fractionDigits));\n const delta = actual - expected;\n if (delta === 0) {\n return 0;\n } else {\n return delta > 0 ? 1 : -1;\n }\n}\n\nfunction fuzzyNumbersEqual(actual, expected, fractionDigits) {\n return fuzzyCompareNumbers(actual, expected, fractionDigits) === 0;\n}\n\n// Panel size must be in percentages; pixel values should be pre-converted\nfunction resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex,\n size\n}) {\n const panelConstraints = panelConstraintsArray[panelIndex];\n assert(panelConstraints != null);\n let {\n collapsedSize = 0,\n collapsible,\n maxSize = 100,\n minSize = 0\n } = panelConstraints;\n if (fuzzyCompareNumbers(size, minSize) < 0) {\n if (collapsible) {\n // Collapsible panels should snap closed or open only once they cross the halfway point between collapsed and min size.\n const halfwayPoint = (collapsedSize + minSize) / 2;\n if (fuzzyCompareNumbers(size, halfwayPoint) < 0) {\n size = collapsedSize;\n } else {\n size = minSize;\n }\n } else {\n size = minSize;\n }\n }\n size = Math.min(maxSize, size);\n size = parseFloat(size.toFixed(PRECISION));\n return size;\n}\n\n// All units must be in percentages; pixel values should be pre-converted\nfunction adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger\n}) {\n if (fuzzyNumbersEqual(delta, 0)) {\n return prevLayout;\n }\n const nextLayout = [...prevLayout];\n const [firstPivotIndex, secondPivotIndex] = pivotIndices;\n assert(firstPivotIndex != null);\n assert(secondPivotIndex != null);\n let deltaApplied = 0;\n\n //const DEBUG = [];\n //DEBUG.push(`adjustLayoutByDelta() ${prevLayout.join(\", \")}`);\n //DEBUG.push(` delta: ${delta}`);\n //DEBUG.push(` pivotIndices: ${pivotIndices.join(\", \")}`);\n //DEBUG.push(` trigger: ${trigger}`);\n //DEBUG.push(\"\");\n\n // A resizing panel affects the panels before or after it.\n //\n // A negative delta means the panel(s) immediately after the resize handle should grow/expand by decreasing its offset.\n // Other panels may also need to shrink/contract (and shift) to make room, depending on the min weights.\n //\n // A positive delta means the panel(s) immediately before the resize handle should \"expand\".\n // This is accomplished by shrinking/contracting (and shifting) one or more of the panels after the resize handle.\n\n {\n // If this is a resize triggered by a keyboard event, our logic for expanding/collapsing is different.\n // We no longer check the halfway threshold because this may prevent the panel from expanding at all.\n if (trigger === \"keyboard\") {\n {\n // Check if we should expand a collapsed panel\n const index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n\n //DEBUG.push(`edge case check 1: ${index}`);\n //DEBUG.push(` -> collapsible? ${constraints.collapsible}`);\n if (panelConstraints.collapsible) {\n const prevSize = prevLayout[index];\n assert(prevSize != null);\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n const {\n collapsedSize = 0,\n minSize = 0\n } = panelConstraints;\n if (fuzzyNumbersEqual(prevSize, collapsedSize)) {\n const localDelta = minSize - prevSize;\n //DEBUG.push(` -> expand delta: ${localDelta}`);\n\n if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n delta = delta < 0 ? 0 - localDelta : localDelta;\n //DEBUG.push(` -> delta: ${delta}`);\n }\n }\n }\n }\n\n {\n // Check if we should collapse a panel at its minimum size\n const index = delta < 0 ? firstPivotIndex : secondPivotIndex;\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n const {\n collapsible\n } = panelConstraints;\n\n //DEBUG.push(`edge case check 2: ${index}`);\n //DEBUG.push(` -> collapsible? ${collapsible}`);\n if (collapsible) {\n const prevSize = prevLayout[index];\n assert(prevSize != null);\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n const {\n collapsedSize = 0,\n minSize = 0\n } = panelConstraints;\n if (fuzzyNumbersEqual(prevSize, minSize)) {\n const localDelta = prevSize - collapsedSize;\n //DEBUG.push(` -> expand delta: ${localDelta}`);\n\n if (fuzzyCompareNumbers(localDelta, Math.abs(delta)) > 0) {\n delta = delta < 0 ? 0 - localDelta : localDelta;\n //DEBUG.push(` -> delta: ${delta}`);\n }\n }\n }\n }\n }\n //DEBUG.push(\"\");\n }\n\n {\n // Pre-calculate max available delta in the opposite direction of our pivot.\n // This will be the maximum amount we're allowed to expand/contract the panels in the primary direction.\n // If this amount is less than the requested delta, adjust the requested delta.\n // If this amount is greater than the requested delta, that's useful information too–\n // as an expanding panel might change from collapsed to min size.\n\n const increment = delta < 0 ? 1 : -1;\n let index = delta < 0 ? secondPivotIndex : firstPivotIndex;\n let maxAvailableDelta = 0;\n\n //DEBUG.push(\"pre calc...\");\n while (true) {\n const prevSize = prevLayout[index];\n assert(prevSize != null);\n const maxSafeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: 100\n });\n const delta = maxSafeSize - prevSize;\n //DEBUG.push(` ${index}: ${prevSize} -> ${maxSafeSize}`);\n\n maxAvailableDelta += delta;\n index += increment;\n if (index < 0 || index >= panelConstraintsArray.length) {\n break;\n }\n }\n\n //DEBUG.push(` -> max available delta: ${maxAvailableDelta}`);\n const minAbsDelta = Math.min(Math.abs(delta), Math.abs(maxAvailableDelta));\n delta = delta < 0 ? 0 - minAbsDelta : minAbsDelta;\n //DEBUG.push(` -> adjusted delta: ${delta}`);\n //DEBUG.push(\"\");\n }\n\n {\n // Delta added to a panel needs to be subtracted from other panels (within the constraints that those panels allow).\n\n const pivotIndex = delta < 0 ? firstPivotIndex : secondPivotIndex;\n let index = pivotIndex;\n while (index >= 0 && index < panelConstraintsArray.length) {\n const deltaRemaining = Math.abs(delta) - Math.abs(deltaApplied);\n const prevSize = prevLayout[index];\n assert(prevSize != null);\n const unsafeSize = prevSize - deltaRemaining;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: unsafeSize\n });\n if (!fuzzyNumbersEqual(prevSize, safeSize)) {\n deltaApplied += prevSize - safeSize;\n nextLayout[index] = safeSize;\n if (deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), undefined, {\n numeric: true\n }) >= 0) {\n break;\n }\n }\n if (delta < 0) {\n index--;\n } else {\n index++;\n }\n }\n }\n //DEBUG.push(`after 1: ${nextLayout.join(\", \")}`);\n //DEBUG.push(` deltaApplied: ${deltaApplied}`);\n //DEBUG.push(\"\");\n\n // If we were unable to resize any of the panels panels, return the previous state.\n // This will essentially bailout and ignore e.g. drags past a panel's boundaries\n if (fuzzyNumbersEqual(deltaApplied, 0)) {\n //console.log(DEBUG.join(\"\\n\"));\n return prevLayout;\n }\n {\n // Now distribute the applied delta to the panels in the other direction\n const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n const prevSize = prevLayout[pivotIndex];\n assert(prevSize != null);\n const unsafeSize = prevSize + deltaApplied;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: pivotIndex,\n size: unsafeSize\n });\n\n // Adjust the pivot panel before, but only by the amount that surrounding panels were able to shrink/contract.\n nextLayout[pivotIndex] = safeSize;\n\n // Edge case where expanding or contracting one panel caused another one to change collapsed state\n if (!fuzzyNumbersEqual(safeSize, unsafeSize)) {\n let deltaRemaining = unsafeSize - safeSize;\n const pivotIndex = delta < 0 ? secondPivotIndex : firstPivotIndex;\n let index = pivotIndex;\n while (index >= 0 && index < panelConstraintsArray.length) {\n const prevSize = nextLayout[index];\n assert(prevSize != null);\n const unsafeSize = prevSize + deltaRemaining;\n const safeSize = resizePanel({\n panelConstraints: panelConstraintsArray,\n panelIndex: index,\n size: unsafeSize\n });\n if (!fuzzyNumbersEqual(prevSize, safeSize)) {\n deltaRemaining -= safeSize - prevSize;\n nextLayout[index] = safeSize;\n }\n if (fuzzyNumbersEqual(deltaRemaining, 0)) {\n break;\n }\n if (delta > 0) {\n index--;\n } else {\n index++;\n }\n }\n }\n }\n //DEBUG.push(`after 2: ${nextLayout.join(\", \")}`);\n //DEBUG.push(` deltaApplied: ${deltaApplied}`);\n //DEBUG.push(\"\");\n\n const totalSize = nextLayout.reduce((total, size) => size + total, 0);\n //DEBUG.push(`total size: ${totalSize}`);\n //console.log(DEBUG.join(\"\\n\"));\n\n if (!fuzzyNumbersEqual(totalSize, 100)) {\n return prevLayout;\n }\n return nextLayout;\n}\n\nfunction calculateAriaValues({\n layout,\n panelsArray,\n pivotIndices\n}) {\n let currentMinSize = 0;\n let currentMaxSize = 100;\n let totalMinSize = 0;\n let totalMaxSize = 0;\n const firstIndex = pivotIndices[0];\n assert(firstIndex != null);\n\n // A panel's effective min/max sizes also need to account for other panel's sizes.\n panelsArray.forEach((panelData, index) => {\n const {\n constraints\n } = panelData;\n const {\n maxSize = 100,\n minSize = 0\n } = constraints;\n if (index === firstIndex) {\n currentMinSize = minSize;\n currentMaxSize = maxSize;\n } else {\n totalMinSize += minSize;\n totalMaxSize += maxSize;\n }\n });\n const valueMax = Math.min(currentMaxSize, 100 - totalMinSize);\n const valueMin = Math.max(currentMinSize, 100 - totalMaxSize);\n const valueNow = layout[firstIndex];\n return {\n valueMax,\n valueMin,\n valueNow\n };\n}\n\nfunction getResizeHandleElementsForGroup(groupId, scope = document) {\n return Array.from(scope.querySelectorAll(`[data-panel-resize-handle-id][data-panel-group-id=\"${groupId}\"]`));\n}\n\nfunction getResizeHandleElementIndex(groupId, id, scope = document) {\n const handles = getResizeHandleElementsForGroup(groupId, scope);\n const index = handles.findIndex(handle => handle.getAttribute(\"data-panel-resize-handle-id\") === id);\n return index !== null && index !== void 0 ? index : null;\n}\n\nfunction determinePivotIndices(groupId, dragHandleId, panelGroupElement) {\n const index = getResizeHandleElementIndex(groupId, dragHandleId, panelGroupElement);\n return index != null ? [index, index + 1] : [-1, -1];\n}\n\nfunction getPanelGroupElement(id, rootElement = document) {\n var _dataset;\n //If the root element is the PanelGroup\n if (rootElement instanceof HTMLElement && (rootElement === null || rootElement === void 0 ? void 0 : (_dataset = rootElement.dataset) === null || _dataset === void 0 ? void 0 : _dataset.panelGroupId) == id) {\n return rootElement;\n }\n\n //Else query children\n const element = rootElement.querySelector(`[data-panel-group][data-panel-group-id=\"${id}\"]`);\n if (element) {\n return element;\n }\n return null;\n}\n\nfunction getResizeHandleElement(id, scope = document) {\n const element = scope.querySelector(`[data-panel-resize-handle-id=\"${id}\"]`);\n if (element) {\n return element;\n }\n return null;\n}\n\nfunction getResizeHandlePanelIds(groupId, handleId, panelsArray, scope = document) {\n var _panelsArray$index$id, _panelsArray$index, _panelsArray$id, _panelsArray;\n const handle = getResizeHandleElement(handleId, scope);\n const handles = getResizeHandleElementsForGroup(groupId, scope);\n const index = handle ? handles.indexOf(handle) : -1;\n const idBefore = (_panelsArray$index$id = (_panelsArray$index = panelsArray[index]) === null || _panelsArray$index === void 0 ? void 0 : _panelsArray$index.id) !== null && _panelsArray$index$id !== void 0 ? _panelsArray$index$id : null;\n const idAfter = (_panelsArray$id = (_panelsArray = panelsArray[index + 1]) === null || _panelsArray === void 0 ? void 0 : _panelsArray.id) !== null && _panelsArray$id !== void 0 ? _panelsArray$id : null;\n return [idBefore, idAfter];\n}\n\n// https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/\n\nfunction useWindowSplitterPanelGroupBehavior({\n committedValuesRef,\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray,\n panelGroupElement,\n setLayout\n}) {\n useRef({\n didWarnAboutMissingResizeHandle: false\n });\n useIsomorphicLayoutEffect(() => {\n if (!panelGroupElement) {\n return;\n }\n const resizeHandleElements = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n for (let index = 0; index < panelDataArray.length - 1; index++) {\n const {\n valueMax,\n valueMin,\n valueNow\n } = calculateAriaValues({\n layout,\n panelsArray: panelDataArray,\n pivotIndices: [index, index + 1]\n });\n const resizeHandleElement = resizeHandleElements[index];\n if (resizeHandleElement == null) ; else {\n const panelData = panelDataArray[index];\n assert(panelData);\n resizeHandleElement.setAttribute(\"aria-controls\", panelData.id);\n resizeHandleElement.setAttribute(\"aria-valuemax\", \"\" + Math.round(valueMax));\n resizeHandleElement.setAttribute(\"aria-valuemin\", \"\" + Math.round(valueMin));\n resizeHandleElement.setAttribute(\"aria-valuenow\", valueNow != null ? \"\" + Math.round(valueNow) : \"\");\n }\n }\n return () => {\n resizeHandleElements.forEach((resizeHandleElement, index) => {\n resizeHandleElement.removeAttribute(\"aria-controls\");\n resizeHandleElement.removeAttribute(\"aria-valuemax\");\n resizeHandleElement.removeAttribute(\"aria-valuemin\");\n resizeHandleElement.removeAttribute(\"aria-valuenow\");\n });\n };\n }, [groupId, layout, panelDataArray, panelGroupElement]);\n useEffect(() => {\n if (!panelGroupElement) {\n return;\n }\n const eagerValues = eagerValuesRef.current;\n assert(eagerValues);\n const {\n panelDataArray\n } = eagerValues;\n const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n assert(groupElement != null, `No group found for id \"${groupId}\"`);\n const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n assert(handles);\n const cleanupFunctions = handles.map(handle => {\n const handleId = handle.getAttribute(\"data-panel-resize-handle-id\");\n assert(handleId);\n const [idBefore, idAfter] = getResizeHandlePanelIds(groupId, handleId, panelDataArray, panelGroupElement);\n if (idBefore == null || idAfter == null) {\n return () => {};\n }\n const onKeyDown = event => {\n if (event.defaultPrevented) {\n return;\n }\n switch (event.key) {\n case \"Enter\":\n {\n event.preventDefault();\n const index = panelDataArray.findIndex(panelData => panelData.id === idBefore);\n if (index >= 0) {\n const panelData = panelDataArray[index];\n assert(panelData);\n const size = layout[index];\n const {\n collapsedSize = 0,\n collapsible,\n minSize = 0\n } = panelData.constraints;\n if (size != null && collapsible) {\n const nextLayout = adjustLayoutByDelta({\n delta: fuzzyNumbersEqual(size, collapsedSize) ? minSize - collapsedSize : collapsedSize - size,\n layout,\n panelConstraints: panelDataArray.map(panelData => panelData.constraints),\n pivotIndices: determinePivotIndices(groupId, handleId, panelGroupElement),\n trigger: \"keyboard\"\n });\n if (layout !== nextLayout) {\n setLayout(nextLayout);\n }\n }\n }\n break;\n }\n }\n };\n handle.addEventListener(\"keydown\", onKeyDown);\n return () => {\n handle.removeEventListener(\"keydown\", onKeyDown);\n };\n });\n return () => {\n cleanupFunctions.forEach(cleanupFunction => cleanupFunction());\n };\n }, [panelGroupElement, committedValuesRef, eagerValuesRef, groupId, layout, panelDataArray, setLayout]);\n}\n\nfunction areEqual(arrayA, arrayB) {\n if (arrayA.length !== arrayB.length) {\n return false;\n }\n for (let index = 0; index < arrayA.length; index++) {\n if (arrayA[index] !== arrayB[index]) {\n return false;\n }\n }\n return true;\n}\n\nfunction isKeyDown(event) {\n return event.type === \"keydown\";\n}\nfunction isMouseEvent(event) {\n return event.type.startsWith(\"mouse\");\n}\nfunction isTouchEvent(event) {\n return event.type.startsWith(\"touch\");\n}\n\nfunction getResizeEventCursorPosition(direction, event) {\n const isHorizontal = direction === \"horizontal\";\n if (isMouseEvent(event)) {\n return isHorizontal ? event.clientX : event.clientY;\n } else if (isTouchEvent(event)) {\n const firstTouch = event.touches[0];\n assert(firstTouch);\n return isHorizontal ? firstTouch.screenX : firstTouch.screenY;\n } else {\n throw Error(`Unsupported event type \"${event.type}\"`);\n }\n}\n\nfunction calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement) {\n const isHorizontal = direction === \"horizontal\";\n const handleElement = getResizeHandleElement(dragHandleId, panelGroupElement);\n assert(handleElement);\n const groupId = handleElement.getAttribute(\"data-panel-group-id\");\n assert(groupId);\n let {\n initialCursorPosition\n } = initialDragState;\n const cursorPosition = getResizeEventCursorPosition(direction, event);\n const groupElement = getPanelGroupElement(groupId, panelGroupElement);\n assert(groupElement);\n const groupRect = groupElement.getBoundingClientRect();\n const groupSizeInPixels = isHorizontal ? groupRect.width : groupRect.height;\n const offsetPixels = cursorPosition - initialCursorPosition;\n const offsetPercentage = offsetPixels / groupSizeInPixels * 100;\n return offsetPercentage;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX\nfunction calculateDeltaPercentage(event, dragHandleId, direction, initialDragState, keyboardResizeBy, panelGroupElement) {\n if (isKeyDown(event)) {\n const isHorizontal = direction === \"horizontal\";\n let delta = 0;\n if (event.shiftKey) {\n delta = 100;\n } else if (keyboardResizeBy != null) {\n delta = keyboardResizeBy;\n } else {\n delta = 10;\n }\n let movement = 0;\n switch (event.key) {\n case \"ArrowDown\":\n movement = isHorizontal ? 0 : delta;\n break;\n case \"ArrowLeft\":\n movement = isHorizontal ? -delta : 0;\n break;\n case \"ArrowRight\":\n movement = isHorizontal ? delta : 0;\n break;\n case \"ArrowUp\":\n movement = isHorizontal ? 0 : -delta;\n break;\n case \"End\":\n movement = 100;\n break;\n case \"Home\":\n movement = -100;\n break;\n }\n return movement;\n } else {\n if (initialDragState == null) {\n return 0;\n }\n return calculateDragOffsetPercentage(event, dragHandleId, direction, initialDragState, panelGroupElement);\n }\n}\n\nfunction calculateUnsafeDefaultLayout({\n panelDataArray\n}) {\n const layout = Array(panelDataArray.length);\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n let numPanelsWithSizes = 0;\n let remainingSize = 100;\n\n // Distribute default sizes first\n for (let index = 0; index < panelDataArray.length; index++) {\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n const {\n defaultSize\n } = panelConstraints;\n if (defaultSize != null) {\n numPanelsWithSizes++;\n layout[index] = defaultSize;\n remainingSize -= defaultSize;\n }\n }\n\n // Remaining size should be distributed evenly between panels without default sizes\n for (let index = 0; index < panelDataArray.length; index++) {\n const panelConstraints = panelConstraintsArray[index];\n assert(panelConstraints);\n const {\n defaultSize\n } = panelConstraints;\n if (defaultSize != null) {\n continue;\n }\n const numRemainingPanels = panelDataArray.length - numPanelsWithSizes;\n const size = remainingSize / numRemainingPanels;\n numPanelsWithSizes++;\n layout[index] = size;\n remainingSize -= size;\n }\n return layout;\n}\n\n// Layout should be pre-converted into percentages\nfunction callPanelCallbacks(panelsArray, layout, panelIdToLastNotifiedSizeMap) {\n layout.forEach((size, index) => {\n const panelData = panelsArray[index];\n assert(panelData);\n const {\n callbacks,\n constraints,\n id: panelId\n } = panelData;\n const {\n collapsedSize = 0,\n collapsible\n } = constraints;\n const lastNotifiedSize = panelIdToLastNotifiedSizeMap[panelId];\n if (lastNotifiedSize == null || size !== lastNotifiedSize) {\n panelIdToLastNotifiedSizeMap[panelId] = size;\n const {\n onCollapse,\n onExpand,\n onResize\n } = callbacks;\n if (onResize) {\n onResize(size, lastNotifiedSize);\n }\n if (collapsible && (onCollapse || onExpand)) {\n if (onExpand && (lastNotifiedSize == null || lastNotifiedSize === collapsedSize) && size !== collapsedSize) {\n onExpand();\n }\n if (onCollapse && (lastNotifiedSize == null || lastNotifiedSize !== collapsedSize) && size === collapsedSize) {\n onCollapse();\n }\n }\n }\n });\n}\n\nfunction compareLayouts(a, b) {\n if (a.length !== b.length) {\n return false;\n } else {\n for (let index = 0; index < a.length; index++) {\n if (a[index] != b[index]) {\n return false;\n }\n }\n }\n return true;\n}\n\n// This method returns a number between 1 and 100 representing\n\n// the % of the group's overall space this panel should occupy.\nfunction computePanelFlexBoxStyle({\n defaultSize,\n dragState,\n layout,\n panelData,\n panelIndex,\n precision = 3\n}) {\n const size = layout[panelIndex];\n let flexGrow;\n if (size == null) {\n // Initial render (before panels have registered themselves)\n // In order to support server rendering, fall back to default size if provided\n flexGrow = defaultSize !== null && defaultSize !== void 0 ? defaultSize : \"1\";\n } else if (panelData.length === 1) {\n // Special case: Single panel group should always fill full width/height\n flexGrow = \"1\";\n } else {\n flexGrow = size.toPrecision(precision);\n }\n return {\n flexBasis: 0,\n flexGrow,\n flexShrink: 1,\n // Without this, Panel sizes may be unintentionally overridden by their content\n overflow: \"hidden\",\n // Disable pointer events inside of a panel during resize\n // This avoid edge cases like nested iframes\n pointerEvents: dragState !== null ? \"none\" : undefined\n };\n}\n\nlet currentState = null;\nlet element = null;\nfunction getCursorStyle(state) {\n switch (state) {\n case \"horizontal\":\n return \"ew-resize\";\n case \"horizontal-max\":\n return \"w-resize\";\n case \"horizontal-min\":\n return \"e-resize\";\n case \"vertical\":\n return \"ns-resize\";\n case \"vertical-max\":\n return \"n-resize\";\n case \"vertical-min\":\n return \"s-resize\";\n }\n}\nfunction resetGlobalCursorStyle() {\n if (element !== null) {\n document.head.removeChild(element);\n currentState = null;\n element = null;\n }\n}\nfunction setGlobalCursorStyle(state) {\n if (currentState === state) {\n return;\n }\n currentState = state;\n const style = getCursorStyle(state);\n if (element === null) {\n element = document.createElement(\"style\");\n document.head.appendChild(element);\n }\n element.innerHTML = `*{cursor: ${style}!important;}`;\n}\n\nfunction debounce(callback, durationMs = 10) {\n let timeoutId = null;\n let callable = (...args) => {\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n callback(...args);\n }, durationMs);\n };\n return callable;\n}\n\n// PanelGroup might be rendering in a server-side environment where localStorage is not available\n// or on a browser with cookies/storage disabled.\n// In either case, this function avoids accessing localStorage until needed,\n// and avoids throwing user-visible errors.\nfunction initializeDefaultStorage(storageObject) {\n try {\n if (typeof localStorage !== \"undefined\") {\n // Bypass this check for future calls\n storageObject.getItem = name => {\n return localStorage.getItem(name);\n };\n storageObject.setItem = (name, value) => {\n localStorage.setItem(name, value);\n };\n } else {\n throw new Error(\"localStorage not supported in this environment\");\n }\n } catch (error) {\n console.error(error);\n storageObject.getItem = () => null;\n storageObject.setItem = () => {};\n }\n}\n\nfunction getPanelGroupKey(autoSaveId) {\n return `react-resizable-panels:${autoSaveId}`;\n}\n\n// Note that Panel ids might be user-provided (stable) or useId generated (non-deterministic)\n// so they should not be used as part of the serialization key.\n// Using the min/max size attributes should work well enough as a backup.\n// Pre-sorting by minSize allows remembering layouts even if panels are re-ordered/dragged.\nfunction getPanelKey(panels) {\n return panels.map(panel => {\n const {\n constraints,\n id,\n idIsFromProps,\n order\n } = panel;\n if (idIsFromProps) {\n return id;\n } else {\n return order ? `${order}:${JSON.stringify(constraints)}` : JSON.stringify(constraints);\n }\n }).sort((a, b) => a.localeCompare(b)).join(\",\");\n}\nfunction loadSerializedPanelGroupState(autoSaveId, storage) {\n try {\n const panelGroupKey = getPanelGroupKey(autoSaveId);\n const serialized = storage.getItem(panelGroupKey);\n if (serialized) {\n const parsed = JSON.parse(serialized);\n if (typeof parsed === \"object\" && parsed != null) {\n return parsed;\n }\n }\n } catch (error) {}\n return null;\n}\nfunction loadPanelGroupState(autoSaveId, panels, storage) {\n var _loadSerializedPanelG, _state$panelKey;\n const state = (_loadSerializedPanelG = loadSerializedPanelGroupState(autoSaveId, storage)) !== null && _loadSerializedPanelG !== void 0 ? _loadSerializedPanelG : {};\n const panelKey = getPanelKey(panels);\n return (_state$panelKey = state[panelKey]) !== null && _state$panelKey !== void 0 ? _state$panelKey : null;\n}\nfunction savePanelGroupState(autoSaveId, panels, panelSizesBeforeCollapse, sizes, storage) {\n var _loadSerializedPanelG2;\n const panelGroupKey = getPanelGroupKey(autoSaveId);\n const panelKey = getPanelKey(panels);\n const state = (_loadSerializedPanelG2 = loadSerializedPanelGroupState(autoSaveId, storage)) !== null && _loadSerializedPanelG2 !== void 0 ? _loadSerializedPanelG2 : {};\n state[panelKey] = {\n expandToSizes: Object.fromEntries(panelSizesBeforeCollapse.entries()),\n layout: sizes\n };\n try {\n storage.setItem(panelGroupKey, JSON.stringify(state));\n } catch (error) {\n console.error(error);\n }\n}\n\n// All units must be in percentages; pixel values should be pre-converted\nfunction validatePanelGroupLayout({\n layout: prevLayout,\n panelConstraints\n}) {\n const nextLayout = [...prevLayout];\n const nextLayoutTotalSize = nextLayout.reduce((accumulated, current) => accumulated + current, 0);\n\n // Validate layout expectations\n if (nextLayout.length !== panelConstraints.length) {\n throw Error(`Invalid ${panelConstraints.length} panel layout: ${nextLayout.map(size => `${size}%`).join(\", \")}`);\n } else if (!fuzzyNumbersEqual(nextLayoutTotalSize, 100)) {\n for (let index = 0; index < panelConstraints.length; index++) {\n const unsafeSize = nextLayout[index];\n assert(unsafeSize != null);\n const safeSize = 100 / nextLayoutTotalSize * unsafeSize;\n nextLayout[index] = safeSize;\n }\n }\n let remainingSize = 0;\n\n // First pass: Validate the proposed layout given each panel's constraints\n for (let index = 0; index < panelConstraints.length; index++) {\n const unsafeSize = nextLayout[index];\n assert(unsafeSize != null);\n const safeSize = resizePanel({\n panelConstraints,\n panelIndex: index,\n size: unsafeSize\n });\n if (unsafeSize != safeSize) {\n remainingSize += unsafeSize - safeSize;\n nextLayout[index] = safeSize;\n }\n }\n\n // If there is additional, left over space, assign it to any panel(s) that permits it\n // (It's not worth taking multiple additional passes to evenly distribute)\n if (!fuzzyNumbersEqual(remainingSize, 0)) {\n for (let index = 0; index < panelConstraints.length; index++) {\n const prevSize = nextLayout[index];\n assert(prevSize != null);\n const unsafeSize = prevSize + remainingSize;\n const safeSize = resizePanel({\n panelConstraints,\n panelIndex: index,\n size: unsafeSize\n });\n if (prevSize !== safeSize) {\n remainingSize -= safeSize - prevSize;\n nextLayout[index] = safeSize;\n\n // Once we've used up the remainder, bail\n if (fuzzyNumbersEqual(remainingSize, 0)) {\n break;\n }\n }\n }\n }\n return nextLayout;\n}\n\nconst LOCAL_STORAGE_DEBOUNCE_INTERVAL = 100;\nconst defaultStorage = {\n getItem: name => {\n initializeDefaultStorage(defaultStorage);\n return defaultStorage.getItem(name);\n },\n setItem: (name, value) => {\n initializeDefaultStorage(defaultStorage);\n defaultStorage.setItem(name, value);\n }\n};\nconst debounceMap = {};\nfunction PanelGroupWithForwardedRef({\n autoSaveId = null,\n children,\n className: classNameFromProps = \"\",\n direction,\n forwardedRef,\n id: idFromProps = null,\n onLayout = null,\n keyboardResizeBy = null,\n storage = defaultStorage,\n style: styleFromProps,\n tagName: Type = \"div\",\n ...rest\n}) {\n const groupId = useUniqueId(idFromProps);\n const panelGroupElementRef = useRef(null);\n const [dragState, setDragState] = useState(null);\n const [layout, setLayout] = useState([]);\n const panelIdToLastNotifiedSizeMapRef = useRef({});\n const panelSizeBeforeCollapseRef = useRef(new Map());\n const prevDeltaRef = useRef(0);\n const committedValuesRef = useRef({\n autoSaveId,\n direction,\n dragState,\n id: groupId,\n keyboardResizeBy,\n onLayout,\n storage\n });\n const eagerValuesRef = useRef({\n layout,\n panelDataArray: [],\n panelDataArrayChanged: false\n });\n useRef({\n didLogIdAndOrderWarning: false,\n didLogPanelConstraintsWarning: false,\n prevPanelIds: []\n });\n useImperativeHandle(forwardedRef, () => ({\n getId: () => committedValuesRef.current.id,\n getLayout: () => {\n const {\n layout\n } = eagerValuesRef.current;\n return layout;\n },\n setLayout: unsafeLayout => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n const safeLayout = validatePanelGroupLayout({\n layout: unsafeLayout,\n panelConstraints: panelDataArray.map(panelData => panelData.constraints)\n });\n if (!areEqual(prevLayout, safeLayout)) {\n setLayout(safeLayout);\n eagerValuesRef.current.layout = safeLayout;\n if (onLayout) {\n onLayout(safeLayout);\n }\n callPanelCallbacks(panelDataArray, safeLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n }), []);\n useIsomorphicLayoutEffect(() => {\n committedValuesRef.current.autoSaveId = autoSaveId;\n committedValuesRef.current.direction = direction;\n committedValuesRef.current.dragState = dragState;\n committedValuesRef.current.id = groupId;\n committedValuesRef.current.onLayout = onLayout;\n committedValuesRef.current.storage = storage;\n });\n useWindowSplitterPanelGroupBehavior({\n committedValuesRef,\n eagerValuesRef,\n groupId,\n layout,\n panelDataArray: eagerValuesRef.current.panelDataArray,\n setLayout,\n panelGroupElement: panelGroupElementRef.current\n });\n useEffect(() => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n\n // If this panel has been configured to persist sizing information, save sizes to local storage.\n if (autoSaveId) {\n if (layout.length === 0 || layout.length !== panelDataArray.length) {\n return;\n }\n let debouncedSave = debounceMap[autoSaveId];\n\n // Limit the frequency of localStorage updates.\n if (debouncedSave == null) {\n debouncedSave = debounce(savePanelGroupState, LOCAL_STORAGE_DEBOUNCE_INTERVAL);\n debounceMap[autoSaveId] = debouncedSave;\n }\n\n // Clone mutable data before passing to the debounced function,\n // else we run the risk of saving an incorrect combination of mutable and immutable values to state.\n const clonedPanelDataArray = [...panelDataArray];\n const clonedPanelSizesBeforeCollapse = new Map(panelSizeBeforeCollapseRef.current);\n debouncedSave(autoSaveId, clonedPanelDataArray, clonedPanelSizesBeforeCollapse, layout, storage);\n }\n }, [autoSaveId, layout, storage]);\n\n // DEV warnings\n useEffect(() => {\n });\n\n // External APIs are safe to memoize via committed values ref\n const collapsePanel = useCallback(panelData => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n const {\n collapsedSize = 0,\n panelSize,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n assert(panelSize != null);\n if (panelSize !== collapsedSize) {\n // Store size before collapse;\n // This is the size that gets restored if the expand() API is used.\n panelSizeBeforeCollapseRef.current.set(panelData.id, panelSize);\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - collapsedSize : collapsedSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n }\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const expandPanel = useCallback(panelData => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n if (panelData.constraints.collapsible) {\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n const {\n collapsedSize = 0,\n panelSize,\n minSize = 0,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n if (panelSize === collapsedSize) {\n // Restore this panel to the size it was before it was collapsed, if possible.\n const prevPanelSize = panelSizeBeforeCollapseRef.current.get(panelData.id);\n const baseSize = prevPanelSize != null && prevPanelSize >= minSize ? prevPanelSize : minSize;\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - baseSize : baseSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n }\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const getPanelSize = useCallback(panelData => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n assert(panelSize != null);\n return panelSize;\n }, []);\n\n // This API should never read from committedValuesRef\n const getPanelStyle = useCallback((panelData, defaultSize) => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n const panelIndex = findPanelDataIndex(panelDataArray, panelData);\n return computePanelFlexBoxStyle({\n defaultSize,\n dragState,\n layout,\n panelData: panelDataArray,\n panelIndex\n });\n }, [dragState, layout]);\n\n // External APIs are safe to memoize via committed values ref\n const isPanelCollapsed = useCallback(panelData => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n collapsedSize = 0,\n collapsible,\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n return collapsible === true && panelSize === collapsedSize;\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const isPanelExpanded = useCallback(panelData => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n collapsedSize = 0,\n collapsible,\n panelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n assert(panelSize != null);\n return !collapsible || panelSize > collapsedSize;\n }, []);\n const registerPanel = useCallback(panelData => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n panelDataArray.push(panelData);\n panelDataArray.sort((panelA, panelB) => {\n const orderA = panelA.order;\n const orderB = panelB.order;\n if (orderA == null && orderB == null) {\n return 0;\n } else if (orderA == null) {\n return -1;\n } else if (orderB == null) {\n return 1;\n } else {\n return orderA - orderB;\n }\n });\n eagerValuesRef.current.panelDataArrayChanged = true;\n }, []);\n\n // (Re)calculate group layout whenever panels are registered or unregistered.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useIsomorphicLayoutEffect(() => {\n if (eagerValuesRef.current.panelDataArrayChanged) {\n eagerValuesRef.current.panelDataArrayChanged = false;\n const {\n autoSaveId,\n onLayout,\n storage\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n\n // If this panel has been configured to persist sizing information,\n // default size should be restored from local storage if possible.\n let unsafeLayout = null;\n if (autoSaveId) {\n const state = loadPanelGroupState(autoSaveId, panelDataArray, storage);\n if (state) {\n panelSizeBeforeCollapseRef.current = new Map(Object.entries(state.expandToSizes));\n unsafeLayout = state.layout;\n }\n }\n if (unsafeLayout == null) {\n unsafeLayout = calculateUnsafeDefaultLayout({\n panelDataArray\n });\n }\n\n // Validate even saved layouts in case something has changed since last render\n // e.g. for pixel groups, this could be the size of the window\n const nextLayout = validatePanelGroupLayout({\n layout: unsafeLayout,\n panelConstraints: panelDataArray.map(panelData => panelData.constraints)\n });\n if (!areEqual(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }\n });\n const registerResizeHandle = useCallback(dragHandleId => {\n return function resizeHandler(event) {\n event.preventDefault();\n const panelGroupElement = panelGroupElementRef.current;\n if (!panelGroupElement) {\n return () => null;\n }\n const {\n direction,\n dragState,\n id: groupId,\n keyboardResizeBy,\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n initialLayout\n } = dragState !== null && dragState !== void 0 ? dragState : {};\n const pivotIndices = determinePivotIndices(groupId, dragHandleId, panelGroupElement);\n let delta = calculateDeltaPercentage(event, dragHandleId, direction, dragState, keyboardResizeBy, panelGroupElement);\n if (delta === 0) {\n return;\n }\n\n // Support RTL layouts\n const isHorizontal = direction === \"horizontal\";\n if (document.dir === \"rtl\" && isHorizontal) {\n delta = -delta;\n }\n const panelConstraints = panelDataArray.map(panelData => panelData.constraints);\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: initialLayout !== null && initialLayout !== void 0 ? initialLayout : prevLayout,\n panelConstraints,\n pivotIndices,\n trigger: isKeyDown(event) ? \"keyboard\" : \"mouse-or-touch\"\n });\n const layoutChanged = !compareLayouts(prevLayout, nextLayout);\n\n // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)\n // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)\n if (isMouseEvent(event) || isTouchEvent(event)) {\n // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.\n // In this case, Panel sizes might not change–\n // but updating cursor in this scenario would cause a flicker.\n if (prevDeltaRef.current != delta) {\n prevDeltaRef.current = delta;\n if (!layoutChanged) {\n // If the pointer has moved too far to resize the panel any further,\n // update the cursor style for a visual clue.\n // This mimics VS Code behavior.\n\n if (isHorizontal) {\n setGlobalCursorStyle(delta < 0 ? \"horizontal-min\" : \"horizontal-max\");\n } else {\n setGlobalCursorStyle(delta < 0 ? \"vertical-min\" : \"vertical-max\");\n }\n } else {\n // Reset the cursor style to the the normal resize cursor.\n setGlobalCursorStyle(isHorizontal ? \"horizontal\" : \"vertical\");\n }\n }\n }\n if (layoutChanged) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n };\n }, []);\n\n // External APIs are safe to memoize via committed values ref\n const resizePanel = useCallback((panelData, unsafePanelSize) => {\n const {\n onLayout\n } = committedValuesRef.current;\n const {\n layout: prevLayout,\n panelDataArray\n } = eagerValuesRef.current;\n const panelConstraintsArray = panelDataArray.map(panelData => panelData.constraints);\n const {\n panelSize,\n pivotIndices\n } = panelDataHelper(panelDataArray, panelData, prevLayout);\n assert(panelSize != null);\n const isLastPanel = findPanelDataIndex(panelDataArray, panelData) === panelDataArray.length - 1;\n const delta = isLastPanel ? panelSize - unsafePanelSize : unsafePanelSize - panelSize;\n const nextLayout = adjustLayoutByDelta({\n delta,\n layout: prevLayout,\n panelConstraints: panelConstraintsArray,\n pivotIndices,\n trigger: \"imperative-api\"\n });\n if (!compareLayouts(prevLayout, nextLayout)) {\n setLayout(nextLayout);\n eagerValuesRef.current.layout = nextLayout;\n if (onLayout) {\n onLayout(nextLayout);\n }\n callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);\n }\n }, []);\n const reevaluatePanelConstraints = useCallback((panelData, prevConstraints) => {\n const {\n layout,\n panelDataArray\n } = eagerValuesRef.current;\n const {\n collapsedSize: prevCollapsedSize = 0,\n collapsible: prevCollapsible\n } = prevConstraints;\n const {\n collapsedSize: nextCollapsedSize = 0,\n collapsible: nextCollapsible,\n maxSize: nextMaxSize = 100,\n minSize: nextMinSize = 0\n } = panelData.constraints;\n const {\n panelSize: prevPanelSize\n } = panelDataHelper(panelDataArray, panelData, layout);\n assert(prevPanelSize != null);\n if (prevCollapsible && nextCollapsible && prevPanelSize === prevCollapsedSize) {\n if (prevCollapsedSize !== nextCollapsedSize) {\n resizePanel(panelData, nextCollapsedSize);\n }\n } else if (prevPanelSize < nextMinSize) {\n resizePanel(panelData, nextMinSize);\n } else if (prevPanelSize > nextMaxSize) {\n resizePanel(panelData, nextMaxSize);\n }\n }, [resizePanel]);\n const startDragging = useCallback((dragHandleId, event) => {\n const {\n direction\n } = committedValuesRef.current;\n const {\n layout\n } = eagerValuesRef.current;\n if (!panelGroupElementRef.current) {\n return;\n }\n const handleElement = getResizeHandleElement(dragHandleId, panelGroupElementRef.current);\n assert(handleElement);\n const initialCursorPosition = getResizeEventCursorPosition(direction, event);\n setDragState({\n dragHandleId,\n dragHandleRect: handleElement.getBoundingClientRect(),\n initialCursorPosition,\n initialLayout: layout\n });\n }, []);\n const stopDragging = useCallback(() => {\n resetGlobalCursorStyle();\n setDragState(null);\n }, []);\n const unregisterPanel = useCallback(panelData => {\n const {\n panelDataArray\n } = eagerValuesRef.current;\n const index = findPanelDataIndex(panelDataArray, panelData);\n if (index >= 0) {\n panelDataArray.splice(index, 1);\n\n // TRICKY\n // When a panel is removed from the group, we should delete the most recent prev-size entry for it.\n // If we don't do this, then a conditionally rendered panel might not call onResize when it's re-mounted.\n // Strict effects mode makes this tricky though because all panels will be registered, unregistered, then re-registered on mount.\n delete panelIdToLastNotifiedSizeMapRef.current[panelData.id];\n eagerValuesRef.current.panelDataArrayChanged = true;\n }\n }, []);\n const context = useMemo(() => ({\n collapsePanel,\n direction,\n dragState,\n expandPanel,\n getPanelSize,\n getPanelStyle,\n groupId,\n isPanelCollapsed,\n isPanelExpanded,\n reevaluatePanelConstraints,\n registerPanel,\n registerResizeHandle,\n resizePanel,\n startDragging,\n stopDragging,\n unregisterPanel,\n panelGroupElement: panelGroupElementRef.current\n }), [collapsePanel, dragState, direction, expandPanel, getPanelSize, getPanelStyle, groupId, isPanelCollapsed, isPanelExpanded, reevaluatePanelConstraints, registerPanel, registerResizeHandle, resizePanel, startDragging, stopDragging, unregisterPanel]);\n const style = {\n display: \"flex\",\n flexDirection: direction === \"horizontal\" ? \"row\" : \"column\",\n height: \"100%\",\n overflow: \"hidden\",\n width: \"100%\"\n };\n return createElement(PanelGroupContext.Provider, {\n value: context\n }, createElement(Type, {\n ...rest,\n children,\n className: classNameFromProps,\n style: {\n ...style,\n ...styleFromProps\n },\n ref: panelGroupElementRef,\n // CSS selectors\n \"data-panel-group\": \"\",\n \"data-panel-group-direction\": direction,\n \"data-panel-group-id\": groupId\n }));\n}\nconst PanelGroup = forwardRef((props, ref) => createElement(PanelGroupWithForwardedRef, {\n ...props,\n forwardedRef: ref\n}));\nPanelGroupWithForwardedRef.displayName = \"PanelGroup\";\nPanelGroup.displayName = \"forwardRef(PanelGroup)\";\nfunction findPanelDataIndex(panelDataArray, panelData) {\n return panelDataArray.findIndex(prevPanelData => prevPanelData === panelData || prevPanelData.id === panelData.id);\n}\nfunction panelDataHelper(panelDataArray, panelData, layout) {\n const panelIndex = findPanelDataIndex(panelDataArray, panelData);\n const isLastPanel = panelIndex === panelDataArray.length - 1;\n const pivotIndices = isLastPanel ? [panelIndex - 1, panelIndex] : [panelIndex, panelIndex + 1];\n const panelSize = layout[panelIndex];\n return {\n ...panelData.constraints,\n panelSize,\n pivotIndices\n };\n}\n\n// https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/\n\nfunction useWindowSplitterResizeHandlerBehavior({\n disabled,\n handleId,\n resizeHandler,\n panelGroupElement\n}) {\n useEffect(() => {\n if (disabled || resizeHandler == null || panelGroupElement == null) {\n return;\n }\n const handleElement = getResizeHandleElement(handleId, panelGroupElement);\n if (handleElement == null) {\n return;\n }\n const onKeyDown = event => {\n if (event.defaultPrevented) {\n return;\n }\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowLeft\":\n case \"ArrowRight\":\n case \"ArrowUp\":\n case \"End\":\n case \"Home\":\n {\n event.preventDefault();\n resizeHandler(event);\n break;\n }\n case \"F6\":\n {\n event.preventDefault();\n const groupId = handleElement.getAttribute(\"data-panel-group-id\");\n assert(groupId);\n const handles = getResizeHandleElementsForGroup(groupId, panelGroupElement);\n const index = getResizeHandleElementIndex(groupId, handleId, panelGroupElement);\n assert(index !== null);\n const nextIndex = event.shiftKey ? index > 0 ? index - 1 : handles.length - 1 : index + 1 < handles.length ? index + 1 : 0;\n const nextHandle = handles[nextIndex];\n nextHandle.focus();\n break;\n }\n }\n };\n handleElement.addEventListener(\"keydown\", onKeyDown);\n return () => {\n handleElement.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [panelGroupElement, disabled, handleId, resizeHandler]);\n}\n\nfunction PanelResizeHandle({\n children = null,\n className: classNameFromProps = \"\",\n disabled = false,\n id: idFromProps,\n onDragging,\n style: styleFromProps = {},\n tabIndex = 0,\n tagName: Type = \"div\",\n ...rest\n}) {\n const elementRef = useRef(null);\n\n // Use a ref to guard against users passing inline props\n const callbacksRef = useRef({\n onDragging\n });\n useEffect(() => {\n callbacksRef.current.onDragging = onDragging;\n });\n const panelGroupContext = useContext(PanelGroupContext);\n if (panelGroupContext === null) {\n throw Error(`PanelResizeHandle components must be rendered within a PanelGroup container`);\n }\n const {\n direction,\n dragState,\n groupId,\n registerResizeHandle,\n startDragging,\n stopDragging,\n panelGroupElement\n } = panelGroupContext;\n const resizeHandleId = useUniqueId(idFromProps);\n const isDragging = (dragState === null || dragState === void 0 ? void 0 : dragState.dragHandleId) === resizeHandleId;\n const [isFocused, setIsFocused] = useState(false);\n const [resizeHandler, setResizeHandler] = useState(null);\n const stopDraggingAndBlur = useCallback(() => {\n // Clicking on the drag handle shouldn't leave it focused;\n // That would cause the PanelGroup to think it was still active.\n const element = elementRef.current;\n assert(element);\n element.blur();\n stopDragging();\n const {\n onDragging\n } = callbacksRef.current;\n if (onDragging) {\n onDragging(false);\n }\n }, [stopDragging]);\n useEffect(() => {\n if (disabled) {\n setResizeHandler(null);\n } else {\n const resizeHandler = registerResizeHandle(resizeHandleId);\n setResizeHandler(() => resizeHandler);\n }\n }, [disabled, resizeHandleId, registerResizeHandle]);\n useEffect(() => {\n if (disabled || resizeHandler == null || !isDragging) {\n return;\n }\n const onMove = event => {\n resizeHandler(event);\n };\n const onMouseLeave = event => {\n resizeHandler(event);\n };\n const element = elementRef.current;\n assert(element);\n const targetDocument = element.ownerDocument;\n targetDocument.body.addEventListener(\"contextmenu\", stopDraggingAndBlur);\n targetDocument.body.addEventListener(\"mousemove\", onMove);\n targetDocument.body.addEventListener(\"touchmove\", onMove);\n targetDocument.body.addEventListener(\"mouseleave\", onMouseLeave);\n window.addEventListener(\"mouseup\", stopDraggingAndBlur);\n window.addEventListener(\"touchend\", stopDraggingAndBlur);\n return () => {\n targetDocument.body.removeEventListener(\"contextmenu\", stopDraggingAndBlur);\n targetDocument.body.removeEventListener(\"mousemove\", onMove);\n targetDocument.body.removeEventListener(\"touchmove\", onMove);\n targetDocument.body.removeEventListener(\"mouseleave\", onMouseLeave);\n window.removeEventListener(\"mouseup\", stopDraggingAndBlur);\n window.removeEventListener(\"touchend\", stopDraggingAndBlur);\n };\n }, [direction, disabled, isDragging, resizeHandler, stopDraggingAndBlur]);\n useWindowSplitterResizeHandlerBehavior({\n disabled,\n handleId: resizeHandleId,\n resizeHandler,\n panelGroupElement\n });\n const style = {\n cursor: getCursorStyle(direction),\n touchAction: \"none\",\n userSelect: \"none\"\n };\n return createElement(Type, {\n ...rest,\n children,\n className: classNameFromProps,\n onBlur: () => setIsFocused(false),\n onFocus: () => setIsFocused(true),\n onMouseDown: event => {\n startDragging(resizeHandleId, event.nativeEvent);\n const callbacks = callbacksRef.current;\n assert(callbacks);\n const {\n onDragging\n } = callbacks;\n if (onDragging) {\n onDragging(true);\n }\n },\n onMouseUp: stopDraggingAndBlur,\n onTouchCancel: stopDraggingAndBlur,\n onTouchEnd: stopDraggingAndBlur,\n onTouchStart: event => {\n startDragging(resizeHandleId, event.nativeEvent);\n const callbacks = callbacksRef.current;\n assert(callbacks);\n const {\n onDragging\n } = callbacks;\n if (onDragging) {\n onDragging(true);\n }\n },\n ref: elementRef,\n role: \"separator\",\n style: {\n ...style,\n ...styleFromProps\n },\n tabIndex,\n // CSS selectors\n \"data-panel-group-direction\": direction,\n \"data-panel-group-id\": groupId,\n \"data-resize-handle\": \"\",\n \"data-resize-handle-active\": isDragging ? \"pointer\" : isFocused ? \"keyboard\" : undefined,\n \"data-panel-resize-handle-enabled\": !disabled,\n \"data-panel-resize-handle-id\": resizeHandleId\n });\n}\nPanelResizeHandle.displayName = \"PanelResizeHandle\";\n\nfunction getPanelElement(id, scope = document) {\n const element = scope.querySelector(`[data-panel-id=\"${id}\"]`);\n if (element) {\n return element;\n }\n return null;\n}\n\nfunction getPanelElementsForGroup(groupId, scope = document) {\n return Array.from(scope.querySelectorAll(`[data-panel][data-panel-group-id=\"${groupId}\"]`));\n}\n\nexport { Panel, PanelGroup, PanelResizeHandle, assert, getPanelElement, getPanelElementsForGroup, getPanelGroupElement, getResizeHandleElement, getResizeHandleElementIndex, getResizeHandleElementsForGroup, getResizeHandlePanelIds };\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst CHECKBOX_NAME = 'Checkbox';\n\ntype ScopedProps<P> = P & { __scopeCheckbox?: Scope };\nconst [createCheckboxContext, createCheckboxScope] = createContextScope(CHECKBOX_NAME);\n\ntype CheckedState = boolean | 'indeterminate';\n\ntype CheckboxContextValue<State extends CheckedState | boolean = CheckedState> = {\n checked: State | boolean;\n setChecked: React.Dispatch<React.SetStateAction<State | boolean>>;\n disabled: boolean | undefined;\n control: HTMLButtonElement | null;\n setControl: React.Dispatch<React.SetStateAction<HTMLButtonElement | null>>;\n name: string | undefined;\n form: string | undefined;\n value: string | number | readonly string[];\n hasConsumerStoppedPropagationRef: React.RefObject<boolean>;\n required: boolean | undefined;\n defaultChecked: boolean | undefined;\n isFormControl: boolean;\n bubbleInput: HTMLInputElement | null;\n setBubbleInput: React.Dispatch<React.SetStateAction<HTMLInputElement | null>>;\n};\n\nconst [CheckboxProviderImpl, useCheckboxContext] =\n createCheckboxContext<CheckboxContextValue>(CHECKBOX_NAME);\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface CheckboxProviderProps<State extends CheckedState = CheckedState> {\n checked?: State | boolean;\n defaultChecked?: State | boolean;\n required?: boolean;\n onCheckedChange?(checked: State | boolean): void;\n name?: string;\n form?: string;\n disabled?: boolean;\n value?: string | number | readonly string[];\n children?: React.ReactNode;\n}\n\nfunction CheckboxProvider<State extends CheckedState = CheckedState>(\n props: ScopedProps<CheckboxProviderProps<State>>\n) {\n const {\n __scopeCheckbox,\n checked: checkedProp,\n children,\n defaultChecked,\n disabled,\n form,\n name,\n onCheckedChange,\n required,\n value = 'on',\n // @ts-expect-error\n internal_do_not_use_render,\n } = props;\n\n const [checked, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked ?? false,\n onChange: onCheckedChange,\n caller: CHECKBOX_NAME,\n });\n const [control, setControl] = React.useState<HTMLButtonElement | null>(null);\n const [bubbleInput, setBubbleInput] = React.useState<HTMLInputElement | null>(null);\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = control\n ? !!form || !!control.closest('form')\n : // We set this to true by default so that events bubble to forms without JS (SSR)\n true;\n\n const context: CheckboxContextValue<State> = {\n checked: checked,\n disabled: disabled,\n setChecked: setChecked,\n control: control,\n setControl: setControl,\n name: name,\n form: form,\n value: value,\n hasConsumerStoppedPropagationRef: hasConsumerStoppedPropagationRef,\n required: required,\n defaultChecked: isIndeterminate(defaultChecked) ? false : defaultChecked,\n isFormControl: isFormControl,\n bubbleInput,\n setBubbleInput,\n };\n\n return (\n <CheckboxProviderImpl\n scope={__scopeCheckbox}\n {...(context as unknown as CheckboxContextValue<CheckedState>)}\n >\n {isFunction(internal_do_not_use_render) ? internal_do_not_use_render(context) : children}\n </CheckboxProviderImpl>\n );\n}\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'CheckboxTrigger';\n\ninterface CheckboxTriggerProps\n extends Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.button>,\n keyof CheckboxProviderProps\n > {\n children?: React.ReactNode;\n}\n\nconst CheckboxTrigger = React.forwardRef<HTMLButtonElement, CheckboxTriggerProps>(\n (\n { __scopeCheckbox, onKeyDown, onClick, ...checkboxProps }: ScopedProps<CheckboxTriggerProps>,\n forwardedRef\n ) => {\n const {\n control,\n value,\n disabled,\n checked,\n required,\n setControl,\n setChecked,\n hasConsumerStoppedPropagationRef,\n isFormControl,\n bubbleInput,\n } = useCheckboxContext(TRIGGER_NAME, __scopeCheckbox);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n\n const initialCheckedStateRef = React.useRef(checked);\n React.useEffect(() => {\n const form = control?.form;\n if (form) {\n const reset = () => setChecked(initialCheckedStateRef.current);\n form.addEventListener('reset', reset);\n return () => form.removeEventListener('reset', reset);\n }\n }, [control, setChecked]);\n\n return (\n <Primitive.button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={isIndeterminate(checked) ? 'mixed' : checked}\n aria-required={required}\n data-state={getState(checked)}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n value={value}\n {...checkboxProps}\n ref={composedRefs}\n onKeyDown={composeEventHandlers(onKeyDown, (event) => {\n // According to WAI ARIA, Checkboxes don't activate on enter keypress\n if (event.key === 'Enter') event.preventDefault();\n })}\n onClick={composeEventHandlers(onClick, (event) => {\n setChecked((prevChecked) => (isIndeterminate(prevChecked) ? true : !prevChecked));\n if (bubbleInput && isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n // if checkbox has a bubble input and is a form control, stop\n // propagation from the button so that we only propagate one click\n // event (from the input). We propagate changes from an input so\n // that native form validation works and form events reflect\n // checkbox updates.\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })}\n />\n );\n }\n);\n\nCheckboxTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * Checkbox\n * -----------------------------------------------------------------------------------------------*/\n\ntype CheckboxElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface CheckboxProps extends Omit<PrimitiveButtonProps, 'checked' | 'defaultChecked'> {\n checked?: CheckedState;\n defaultChecked?: CheckedState;\n required?: boolean;\n onCheckedChange?(checked: CheckedState): void;\n}\n\nconst Checkbox = React.forwardRef<CheckboxElement, CheckboxProps>(\n (props: ScopedProps<CheckboxProps>, forwardedRef) => {\n const {\n __scopeCheckbox,\n name,\n checked,\n defaultChecked,\n required,\n disabled,\n value,\n onCheckedChange,\n form,\n ...checkboxProps\n } = props;\n\n return (\n <CheckboxProvider\n __scopeCheckbox={__scopeCheckbox}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n required={required}\n onCheckedChange={onCheckedChange}\n name={name}\n form={form}\n value={value}\n // @ts-expect-error\n internal_do_not_use_render={({ isFormControl }: CheckboxContextValue) => (\n <>\n <CheckboxTrigger\n {...checkboxProps}\n ref={forwardedRef}\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n {isFormControl && (\n <CheckboxBubbleInput\n // @ts-expect-error\n __scopeCheckbox={__scopeCheckbox}\n />\n )}\n </>\n )}\n />\n );\n }\n);\n\nCheckbox.displayName = CHECKBOX_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'CheckboxIndicator';\n\ntype CheckboxIndicatorElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface CheckboxIndicatorProps extends PrimitiveSpanProps {\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst CheckboxIndicator = React.forwardRef<CheckboxIndicatorElement, CheckboxIndicatorProps>(\n (props: ScopedProps<CheckboxIndicatorProps>, forwardedRef) => {\n const { __scopeCheckbox, forceMount, ...indicatorProps } = props;\n const context = useCheckboxContext(INDICATOR_NAME, __scopeCheckbox);\n return (\n <Presence\n present={forceMount || isIndeterminate(context.checked) || context.checked === true}\n >\n <Primitive.span\n data-state={getState(context.checked)}\n data-disabled={context.disabled ? '' : undefined}\n {...indicatorProps}\n ref={forwardedRef}\n style={{ pointerEvents: 'none', ...props.style }}\n />\n </Presence>\n );\n }\n);\n\nCheckboxIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'CheckboxBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface CheckboxBubbleInputProps extends Omit<InputProps, 'checked'> {}\n\nconst CheckboxBubbleInput = React.forwardRef<HTMLInputElement, CheckboxBubbleInputProps>(\n ({ __scopeCheckbox, ...props }: ScopedProps<CheckboxBubbleInputProps>, forwardedRef) => {\n const {\n control,\n hasConsumerStoppedPropagationRef,\n checked,\n defaultChecked,\n required,\n disabled,\n name,\n value,\n form,\n bubbleInput,\n setBubbleInput,\n } = useCheckboxContext(BUBBLE_INPUT_NAME, __scopeCheckbox);\n\n const composedRefs = useComposedRefs(forwardedRef, setBubbleInput);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n\n // Bubble checked change to parents (e.g form change event)\n React.useEffect(() => {\n const input = bubbleInput;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n 'checked'\n ) as PropertyDescriptor;\n const setChecked = descriptor.set;\n\n const bubbles = !hasConsumerStoppedPropagationRef.current;\n if (prevChecked !== checked && setChecked) {\n const event = new Event('click', { bubbles });\n input.indeterminate = isIndeterminate(checked);\n setChecked.call(input, isIndeterminate(checked) ? false : checked);\n input.dispatchEvent(event);\n }\n }, [bubbleInput, prevChecked, checked, hasConsumerStoppedPropagationRef]);\n\n const defaultCheckedRef = React.useRef(isIndeterminate(checked) ? false : checked);\n return (\n <Primitive.input\n type=\"checkbox\"\n aria-hidden\n defaultChecked={defaultChecked ?? defaultCheckedRef.current}\n required={required}\n disabled={disabled}\n name={name}\n value={value}\n form={form}\n {...props}\n tabIndex={-1}\n ref={composedRefs}\n style={{\n ...props.style,\n ...controlSize,\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 0,\n margin: 0,\n // We transform because the input is absolutely positioned but we have\n // rendered it **after** the button. This pulls it back to sit on top\n // of the button.\n transform: 'translateX(-100%)',\n }}\n />\n );\n }\n);\n\nCheckboxBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction isFunction(value: unknown): value is (...args: any[]) => any {\n return typeof value === 'function';\n}\n\nfunction isIndeterminate(checked?: CheckedState): checked is 'indeterminate' {\n return checked === 'indeterminate';\n}\n\nfunction getState(checked: CheckedState) {\n return isIndeterminate(checked) ? 'indeterminate' : checked ? 'checked' : 'unchecked';\n}\n\nexport {\n createCheckboxScope,\n //\n Checkbox,\n CheckboxProvider,\n CheckboxTrigger,\n CheckboxIndicator,\n CheckboxBubbleInput,\n //\n Checkbox as Root,\n CheckboxProvider as Provider,\n CheckboxTrigger as Trigger,\n CheckboxIndicator as Indicator,\n CheckboxBubbleInput as BubbleInput,\n};\nexport type {\n CheckboxProps,\n CheckboxProviderProps,\n CheckboxTriggerProps,\n CheckboxIndicatorProps,\n CheckboxBubbleInputProps,\n CheckedState,\n};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps<P> = P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext<TabsContextValue>(TABS_NAME);\n\ntype TabsElement = React.ComponentRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef<TabsElement, TabsProps>(\n (props: ScopedProps<TabsProps>, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? '',\n caller: TABS_NAME,\n });\n\n return (\n <TabsProvider\n scope={__scopeTabs}\n baseId={useId()}\n value={value}\n onValueChange={setValue}\n orientation={orientation}\n dir={direction}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={direction}\n data-orientation={orientation}\n {...tabsProps}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ComponentRef<typeof Primitive.div>;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>(\n (props: ScopedProps<TabsListProps>, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={context.orientation}\n dir={context.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={context.orientation}\n {...listProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props: ScopedProps<TabsTriggerProps>, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={isSelected}\n >\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...triggerProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ComponentRef<typeof Primitive.div>;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props: ScopedProps<TabsContentProps>, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={context.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined,\n }}\n >\n {present && children}\n </Primitive.div>\n )}\n </Presence>\n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["ArchiveX","createLucideIcon","width","height","x","y","rx","key","d","Archive","ArrowLeft","FileStack","Folder","GripVertical","cx","cy","r","ListChecks","Loader","x1","x2","y1","y2","PackageOpen","Pencil","Plus","Search","StepForward","points","createElement","createContext","createRef","forwardRef","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useRef","useState","react__WEBPACK_IMPORTED_MODULE_0___namespace_cache","__webpack_require__","t","react__WEBPACK_IMPORTED_MODULE_0__","useId","toString","PanelGroupContext","displayName","wrappedUseId","counter","useUniqueId","idFromParams","idFromUseId","idRef","current","PanelWithForwardedRef","children","className","classNameFromProps","collapsedSize","collapsible","defaultSize","forwardedRef","id","idFromProps","maxSize","minSize","onCollapse","onExpand","onResize","order","style","styleFromProps","tagName","Type","rest","context","Error","collapsePanel","expandPanel","getPanelSize","getPanelStyle","groupId","isPanelCollapsed","reevaluatePanelConstraints","registerPanel","resizePanel","unregisterPanel","panelId","panelDataRef","callbacks","constraints","idIsFromProps","undefined","didLogMissingDefaultSizeWarning","useIsomorphicLayoutEffect","prevConstraints","panelData","collapse","expand","getId","getSize","isCollapsed","isExpanded","resize","size","Panel","props","ref","assert","expectedCondition","message","console","error","fuzzyCompareNumbers","actual","expected","fractionDigits","delta","parseFloat","toFixed","fuzzyNumbersEqual","panelConstraints","panelConstraintsArray","panelIndex","Math","min","adjustLayoutByDelta","layout","prevLayout","pivotIndices","trigger","nextLayout","firstPivotIndex","secondPivotIndex","deltaApplied","index","prevSize","localDelta","abs","increment","maxAvailableDelta","maxSafeSize","length","minAbsDelta","deltaRemaining","safeSize","toPrecision","localeCompare","numeric","pivotIndex","unsafeSize","reduce","total","getResizeHandleElementsForGroup","scope","document","Array","from","querySelectorAll","getResizeHandleElementIndex","handles","findIndex","handle","getAttribute","determinePivotIndices","dragHandleId","panelGroupElement","getPanelGroupElement","rootElement","_dataset","HTMLElement","dataset","panelGroupId","querySelector","getResizeHandleElement","areEqual","arrayA","arrayB","isKeyDown","event","type","isMouseEvent","startsWith","isTouchEvent","getResizeEventCursorPosition","direction","isHorizontal","clientX","clientY","firstTouch","touches","screenX","screenY","callPanelCallbacks","panelsArray","panelIdToLastNotifiedSizeMap","forEach","lastNotifiedSize","compareLayouts","a","b","currentState","element","getCursorStyle","state","setGlobalCursorStyle","head","appendChild","innerHTML","initializeDefaultStorage","storageObject","localStorage","getItem","name","setItem","value","getPanelGroupKey","autoSaveId","getPanelKey","panels","map","panel","JSON","stringify","sort","join","loadSerializedPanelGroupState","storage","panelGroupKey","serialized","parsed","parse","savePanelGroupState","panelSizesBeforeCollapse","sizes","_loadSerializedPanelG2","panelKey","expandToSizes","Object","fromEntries","entries","validatePanelGroupLayout","nextLayoutTotalSize","accumulated","remainingSize","defaultStorage","debounceMap","PanelGroupWithForwardedRef","onLayout","keyboardResizeBy","panelGroupElementRef","dragState","setDragState","setLayout","panelIdToLastNotifiedSizeMapRef","panelSizeBeforeCollapseRef","Map","prevDeltaRef","committedValuesRef","eagerValuesRef","panelDataArray","panelDataArrayChanged","didLogIdAndOrderWarning","didLogPanelConstraintsWarning","prevPanelIds","getLayout","unsafeLayout","safeLayout","useWindowSplitterPanelGroupBehavior","didWarnAboutMissingResizeHandle","resizeHandleElements","valueMax","valueMin","valueNow","calculateAriaValues","currentMinSize","currentMaxSize","totalMinSize","totalMaxSize","firstIndex","max","resizeHandleElement","setAttribute","round","removeAttribute","eagerValues","groupElement","cleanupFunctions","handleId","idBefore","idAfter","getResizeHandlePanelIds","_panelsArray$index$id","_panelsArray$index","_panelsArray$id","_panelsArray","indexOf","onKeyDown","defaultPrevented","preventDefault","addEventListener","removeEventListener","cleanupFunction","debouncedSave","debounce","callback","durationMs","timeoutId","args","clearTimeout","setTimeout","panelSize","panelDataHelper","set","isLastPanel","prevPanelSize","get","baseSize","findPanelDataIndex","computePanelFlexBoxStyle","precision","flexBasis","flexGrow","flexShrink","overflow","pointerEvents","isPanelExpanded","push","panelA","panelB","orderA","orderB","_loadSerializedPanelG","_state$panelKey","calculateUnsafeDefaultLayout","numPanelsWithSizes","registerResizeHandle","initialLayout","calculateDeltaPercentage","initialDragState","shiftKey","movement","calculateDragOffsetPercentage","handleElement","initialCursorPosition","cursorPosition","groupRect","getBoundingClientRect","offsetPixels","dir","layoutChanged","unsafePanelSize","prevCollapsedSize","prevCollapsible","nextCollapsedSize","nextCollapsible","nextMaxSize","nextMinSize","startDragging","dragHandleRect","stopDragging","removeChild","splice","Provider","display","flexDirection","PanelGroup","prevPanelData","PanelResizeHandle","disabled","onDragging","tabIndex","elementRef","callbacksRef","panelGroupContext","resizeHandleId","isDragging","isFocused","setIsFocused","resizeHandler","setResizeHandler","stopDraggingAndBlur","blur","onMove","onMouseLeave","targetDocument","ownerDocument","body","window","useWindowSplitterResizeHandlerBehavior","nextIndex","nextHandle","focus","cursor","touchAction","userSelect","onBlur","onFocus","onMouseDown","nativeEvent","onMouseUp","onTouchCancel","onTouchEnd","onTouchStart","role","clamp","CHECKBOX_NAME","createCheckboxContext","createCheckboxScope","createContextScope","CheckboxProviderImpl","useCheckboxContext","CheckboxProvider","__scopeCheckbox","checked","checkedProp","defaultChecked","form","onCheckedChange","required","internal_do_not_use_render","setChecked","useControllableState","prop","defaultProp","onChange","caller","control","setControl","React","bubbleInput","setBubbleInput","hasConsumerStoppedPropagationRef","isFormControl","closest","isIndeterminate","jsx","isFunction","TRIGGER_NAME","CheckboxTrigger","param","onClick","checkboxProps","composedRefs","useComposedRefs","initialCheckedStateRef","reset","Primitive","button","getState","composeEventHandlers","prevChecked","isPropagationStopped","stopPropagation","Checkbox","jsxs","Fragment","CheckboxBubbleInput","INDICATOR_NAME","CheckboxIndicator","forceMount","indicatorProps","Presence","present","span","BUBBLE_INPUT_NAME","usePrevious","controlSize","useSize","descriptor","getOwnPropertyDescriptor","HTMLInputElement","prototype","bubbles","Event","input","indeterminate","call","dispatchEvent","defaultCheckedRef","position","opacity","margin","transform","TABS_NAME","createTabsContext","createTabsScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","activationMode","tabsProps","useDirection","setValue","baseId","div","TAB_LIST_NAME","TabsList","loop","listProps","rovingFocusGroupScope","RovingFocusGroup","asChild","TabsTrigger","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","focusable","active","ctrlKey","includes","isAutomaticActivation","CONTENT_NAME","TabsContent","contentProps","isMountAnimationPreventedRef","rAF","requestAnimationFrame","cancelAnimationFrame","hidden","animationDuration","concat","Root","List","Trigger","Content","previous"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6367],{76367:function(e,s,t){t.d(s,{$:function(){return S}});var a=t(57437),i=t(2265),l=t(66070),n=t(62869),r=t(35974),c=t(84190),d=t(31810),o=t(17684),m=t(78867),u=t(15868),x=t(18930),h=t(82222),p=t(42488),v=t(53417),f=t(92369),j=t(31047),g=t(91723),N=t(84544),w=t(12194),y=t(35283),b=t(14438),C=t(7211),_=t(27689),A=t(7598);function S(e){var s,t;let{prompt:S,user:D,onUpdate:Z}=e,[k,P]=(0,i.useState)(!1),[z,F]=(0,i.useState)(!1),[E]=(0,w.iJ)(),{toggleFavorite:B}=(0,w.Lq)(),R=function(e,s){var t,a,i,l;let n="private"===e.rights_mode,r="public"===e.rights_mode,c="users"===e.rights_mode,d="roles"===e.rights_mode,o=s.super_admin,m=e.created_by===s.id.toString(),u=!1;if(m&&(u=!0),!n||m||o||(u=!1),r&&(u=!0),c){let i=null===(a=e.RBAC)||void 0===a?void 0:null===(t=a.users)||void 0===t?void 0:t.find(e=>e.id===s.id);u=(null==i?void 0:i.rights)==="write"}if(d){let t=null===(l=e.RBAC)||void 0===l?void 0:null===(i=l.roles)||void 0===i?void 0:i.find(e=>{var t;return e.id===(null===(t=s.role)||void 0===t?void 0:t.id)});u=(null==t?void 0:t.rights)==="write"}return o&&(u=!0),u}(S,D),I=(0,N.H)(S.content),M=S.is_favorited||!1,{data:U}=(0,C.aM)(_.W9,{variables:{ids:S.assigned_agents||[]},skip:!S.assigned_agents||0===S.assigned_agents.length}),V=(null==U?void 0:null===(s=U.agentByIds)||void 0===s?void 0:s.map(e=>e.name))||[],{data:q}=(0,C.aM)(_.L5,{variables:{id:S.created_by},skip:!S.created_by}),O=(null==q?void 0:null===(t=q.userById)||void 0===t?void 0:t.name)||"Unknown",L=async()=>{if(confirm("Are you sure you want to delete this prompt?"))try{await E({variables:{id:S.id}}),b.Am.success("Prompt deleted successfully"),Z()}catch(e){b.Am.error("Failed to delete prompt"),console.error(e)}},Q=async()=>{if(!z){F(!0);try{await B(S.id,D.id,M,S.favorite_count,void 0),b.Am.success(M?"Removed from favorites":"Added to favorites",{icon:M?"\uD83D\uDC4E":"\uD83D\uDC4D",duration:2e3}),Z()}catch(e){b.Am.error("Failed to update favorite"),console.error(e)}finally{await new Promise(e=>setTimeout(e,200)),F(!1)}}};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(l.Zb,{className:"flex flex-col hover:shadow-md transition-shadow",children:[(0,a.jsx)(l.Ol,{className:"pb-3",children:(0,a.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("h3",{className:"font-semibold text-lg truncate",children:S.name}),S.description&&(0,a.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-2 mt-1",children:S.description})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(n.z,{variant:"ghost",size:"icon",className:"h-8 w-8 transition-all ".concat(z?"scale-125":""," ").concat(M?"text-yellow-500":""),onClick:Q,disabled:z,children:(0,a.jsx)(d.Z,{className:"h-4 w-4 transition-all ".concat(z?"animate-pulse":""," ").concat(M?"fill-yellow-400 text-yellow-400":"")})}),(0,a.jsxs)(c.h_,{modal:!1,children:[(0,a.jsx)(c.$F,{asChild:!0,children:(0,a.jsx)(n.z,{variant:"ghost",size:"icon",className:"h-8 w-8",children:(0,a.jsx)(o.Z,{className:"h-4 w-4"})})}),(0,a.jsxs)(c.AW,{align:"end",children:[(0,a.jsxs)(c.Xi,{onClick:()=>{navigator.clipboard.writeText(S.content),b.Am.success("Prompt copied to clipboard")},children:[(0,a.jsx)(m.Z,{className:"mr-2 h-4 w-4"}),"Copy Content"]}),R&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(c.Xi,{onClick:()=>P(!0),children:[(0,a.jsx)(u.Z,{className:"mr-2 h-4 w-4"}),"Edit"]}),(0,a.jsxs)(c.Xi,{onClick:L,className:"text-destructive",children:[(0,a.jsx)(x.Z,{className:"mr-2 h-4 w-4"}),"Delete"]})]})]})]})]})]})}),(0,a.jsx)(l.aY,{className:"flex-1 pb-3",children:(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("p",{className:"text-sm text-muted-foreground line-clamp-3",children:S.content}),I.length>0&&(0,a.jsxs)(r.C,{variant:"outline",className:"text-xs",children:[I.length," variable",1!==I.length?"s":""]}),V.length>0&&(0,a.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,a.jsx)(h.Z,{className:"h-3 w-3"}),(0,a.jsx)("span",{className:"font-medium",children:"Works with:"})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-1",children:[V.slice(0,2).map((e,s)=>(0,a.jsx)(r.C,{variant:"default",className:"text-xs bg-primary/10 text-primary hover:bg-primary/20",children:e},s)),V.length>2&&(0,a.jsxs)(r.C,{variant:"default",className:"text-xs bg-primary/10 text-primary hover:bg-primary/20",children:["+",V.length-2," more"]})]})]})]})}),(0,a.jsxs)(l.eW,{className:"flex flex-col gap-3 pt-3 border-t",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,a.jsxs)("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1 transition-all ".concat(z?"scale-125":""," ").concat(M?"text-yellow-500":""),children:[(0,a.jsx)(d.Z,{className:"h-3.5 w-3.5"}),(0,a.jsx)("span",{children:S.favorite_count||0})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",title:"Times used",children:[(0,a.jsx)(p.Z,{className:"h-3.5 w-3.5"}),(0,a.jsx)("span",{children:S.usage_count||0})]})]}),(0,a.jsxs)(n.z,{variant:"secondary",size:"sm",type:"button",onClick:()=>P(!0),children:[(0,a.jsx)(v.Z,{className:"mr-2 h-3.5 w-3.5"}),"View"]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1.5 text-xs text-muted-foreground w-full",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(f.Z,{className:"h-3 w-3"}),(0,a.jsxs)("span",{children:["Created by ",O]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(j.Z,{className:"h-3 w-3"}),(0,a.jsxs)("span",{children:["Created ",(0,A.Q)(new Date(S.createdAt),{addSuffix:!0})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-1",children:[(0,a.jsx)(g.Z,{className:"h-3 w-3"}),(0,a.jsxs)("span",{children:["Updated ",(0,A.Q)(new Date(S.updatedAt),{addSuffix:!0})]})]})]})]})]}),(0,a.jsx)(y.D,{open:k,onOpenChange:P,prompt:S,onSuccess:Z,user:D})]})}},35283:function(e,s,t){t.d(s,{D:function(){return _}});var a=t(57437),i=t(2265),l=t(26110),n=t(62869),r=t(95186),c=t(26815),d=t(76818),o=t(35974),m=t(25846),u=t(24156),x=t(30401),h=t(32489),p=t(12194),v=t(84544),f=t(8014),j=t(14438),g=t(74928),N=t(23518),w=t(57054),y=t(7211),b=t(27689),C=t(94508);function _(e){var s;let{open:t,onOpenChange:_,prompt:A,onSuccess:S,user:D,defaultAssignedAgents:Z=[]}=e,k=!!A,[P,{loading:z}]=(0,p.EE)(),[F,{loading:E}]=(0,p.er)(),[B,R]=(0,i.useState)(""),[I,M]=(0,i.useState)(""),[U,V]=(0,i.useState)(""),[q,O]=(0,i.useState)("private"),[L,Q]=(0,i.useState)([]),[T,W]=(0,i.useState)([]),[$,H]=(0,i.useState)(!1),[J,X]=(0,i.useState)([]),[Y,K]=(0,i.useState)(!1),{data:G}=(0,y.aM)(b.ym,{variables:{page:1,limit:100}}),ee=(null==G?void 0:null===(s=G.agentsPagination)||void 0===s?void 0:s.items)||[],es=(0,v.H)(U),{isValid:et,invalidVariables:ea}=function(e){if(!e)return{isValid:!0,invalidVariables:[]};let s=e.matchAll(/\{\{([^}]+)\}\}/g),t=[];for(let e of Array.from(s)){let s=e[1];s&&/^[a-zA-Z0-9_]+$/.test(s)||t.push(s)}return{isValid:0===t.length,invalidVariables:t}}(U);(0,i.useEffect)(()=>{if(t){if(A){var e,s;R(A.name),M(A.description||""),V(A.content),O(A.rights_mode),Q((null===(e=A.RBAC)||void 0===e?void 0:e.users)||[]),W((null===(s=A.RBAC)||void 0===s?void 0:s.roles)||[]),X(A.assigned_agents||[])}else ei(),Z&&Z.length>0&&X(Z)}},[A,t]);let ei=()=>{R(""),M(""),V(""),O("private"),Q([]),W([]),H(!1),X([])},el=async()=>{if(!B.trim()){j.Am.error("Please enter a name for the prompt");return}if(!U.trim()){j.Am.error("Please enter prompt content");return}if(!et){j.Am.error("Invalid variable names: ".concat(ea.join(", "),". Use only letters, numbers, and underscores."));return}try{let e={name:B.trim(),description:I.trim()||void 0,content:U.trim(),rights_mode:q,RBAC:"private"!==q&&"public"!==q?{users:L.length>0?L:void 0,roles:T.length>0?T:void 0}:void 0,assigned_agents:J.length>0?J:void 0};k?(await F({variables:{id:A.id,...e}}),j.Am.success("Prompt updated successfully")):(await P({variables:e}),j.Am.success("Prompt created successfully")),S(),_(!1),ei()}catch(e){console.error(e),j.Am.error(k?"Failed to update prompt":"Failed to create prompt")}};return(0,a.jsx)(l.Vq,{open:t,onOpenChange:_,children:(0,a.jsxs)(l.cZ,{className:"max-w-3xl max-h-[90vh] overflow-y-auto",children:[(0,a.jsxs)(l.fK,{children:[(0,a.jsx)(l.$N,{children:k?"Edit Prompt":"Create New Prompt"}),(0,a.jsx)(l.Be,{children:k?"Update your prompt template":"Create a reusable prompt template with variables"})]}),(0,a.jsxs)("div",{className:"space-y-6 py-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)(c._,{htmlFor:"name",children:["Name ",(0,a.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,a.jsx)(r.I,{id:"name",placeholder:"Customer Support Template",value:B,onChange:e=>R(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(c._,{htmlFor:"description",children:"Description"}),(0,a.jsx)(r.I,{id:"description",placeholder:"Brief description of this prompt",value:I,onChange:e=>M(e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)(c._,{htmlFor:"content",children:["Prompt Content ",(0,a.jsx)("span",{className:"text-destructive",children:"*"})]}),(0,a.jsx)(d.g,{id:"content",placeholder:"You are helping {{customer_name}} with their {{issue}}...",value:U,onChange:e=>V(e.target.value),rows:8,className:"font-mono text-sm"}),(0,a.jsxs)("div",{className:"flex items-start gap-2 text-xs text-muted-foreground",children:[(0,a.jsx)(m.Z,{className:"h-3.5 w-3.5 mt-0.5 flex-shrink-0"}),(0,a.jsxs)("span",{children:["Use"," ",(0,a.jsxs)("code",{className:"bg-muted px-1 py-0.5 rounded",children:["{","{","variable_name","}}"]})," ","format for dynamic content. Variable names can only contain letters, numbers, and underscores."]})]}),es.length>0&&(0,a.jsxs)("div",{className:"flex flex-wrap gap-1 pt-2",children:[(0,a.jsx)("span",{className:"text-xs text-muted-foreground mr-2",children:"Detected variables:"}),es.map(e=>(0,a.jsx)(o.C,{variant:"outline",className:"text-xs",children:e},e))]}),!et&&(0,a.jsxs)("div",{className:"text-xs text-destructive",children:["Invalid variable names: ",ea.join(", ")]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(c._,{children:"Assign to Agents"}),(0,a.jsxs)(w.J2,{modal:!0,open:Y,onOpenChange:K,children:[(0,a.jsx)(w.xo,{asChild:!0,children:(0,a.jsxs)(n.z,{variant:"outline",role:"combobox","aria-expanded":Y,className:"w-full justify-between",children:[0===J.length?"Select agents...":"".concat(J.length," agent").concat(1!==J.length?"s":""," selected"),(0,a.jsx)(u.Z,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,a.jsx)(w.yk,{className:"w-full p-0",children:(0,a.jsxs)(N.mY,{children:[(0,a.jsx)(N.sZ,{placeholder:"Search agents..."}),(0,a.jsxs)(N.e8,{children:[(0,a.jsx)(N.rb,{children:"No agents found."}),(0,a.jsx)(N.fu,{children:ee.map(e=>(0,a.jsxs)(N.di,{value:e.id,onSelect:()=>{X(s=>s.includes(e.id)?s.filter(s=>s!==e.id):[...s,e.id])},children:[(0,a.jsx)(x.Z,{className:(0,C.cn)("mr-2 h-4 w-4",J.includes(e.id)?"opacity-100":"opacity-0")}),e.name]},e.id))})]})]})})]}),J.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-2 pt-2",children:J.map(e=>{let s=ee.find(s=>s.id===e);return s?(0,a.jsxs)(o.C,{variant:"secondary",className:"text-sm",children:[s.name,(0,a.jsx)("button",{type:"button",onClick:()=>X(s=>s.filter(s=>s!==e)),className:"ml-1.5 hover:text-destructive",children:(0,a.jsx)(h.Z,{className:"h-3 w-3"})})]},e):null})}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Assign this prompt to specific agents to show it as recommended in chat"})]}),(0,a.jsx)(g.zF,{open:$,onOpenChange:H,children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(g.wy,{asChild:!0,children:(0,a.jsxs)(n.z,{variant:"outline",className:"w-full justify-between",children:["Access Control",(0,a.jsxs)("span",{className:"text-xs text-muted-foreground",children:["private"===q&&"Private","public"===q&&"Public","users"===q&&"".concat(L.length," users"),"roles"===q&&"".concat(T.length," roles")]})]})}),(0,a.jsx)(g.Fw,{className:"pt-2",children:(0,a.jsx)(f.P,{initialRightsMode:q,initialUsers:L,initialRoles:T,modalMode:!0,onChange:(e,s,t)=>{O(e),Q(s),W(t)}})})]})})]}),(0,a.jsxs)(l.cN,{children:[(0,a.jsx)(n.z,{variant:"outline",onClick:()=>_(!1),children:"Cancel"}),(0,a.jsx)(n.z,{onClick:el,disabled:z||E||!B.trim()||!U.trim()||!et,children:z||E?"Saving...":k?"Save Changes":"Create Prompt"})]})]})})}},12194:function(e,s,t){t.d(s,{EE:function(){return r},Lq:function(){return x},Sh:function(){return n},VR:function(){return o},er:function(){return c},iJ:function(){return d}});var a=t(7211),i=t(12199),l=t(27689);let n=e=>{var s,t,i,n;return(0,a.aM)(l.xx,{variables:{page:null!==(s=null==e?void 0:e.page)&&void 0!==s?s:1,limit:null!==(t=null==e?void 0:e.limit)&&void 0!==t?t:20,filters:null!==(i=null==e?void 0:e.filters)&&void 0!==i?i:[],sort:null!==(n=null==e?void 0:e.sort)&&void 0!==n?n:{field:"updatedAt",direction:"DESC"}}})},r=()=>(0,i.D)(l.Iv,{refetchQueries:[{query:l.xx,variables:{page:1,limit:20}}]}),c=()=>(0,i.D)(l.jA),d=()=>(0,i.D)(l.Ll,{refetchQueries:[{query:l.xx,variables:{page:1,limit:20}}]}),o=()=>(0,i.D)(l.re),m=()=>(0,i.D)(l.Nl),u=()=>(0,i.D)(l.m8),x=()=>{let[e]=m(),[s]=u(),[t]=(0,i.D)(l.UK);return{toggleFavorite:async(a,i,l,n,r)=>{l&&r?(await s({variables:{id:r}}),await t({variables:{id:a,favorite_count:Math.max(0,n-1)}})):(await e({variables:{user_id:i,prompt_id:a}}),await t({variables:{id:a,favorite_count:n+1}}))}}}},84544:function(e,s,t){t.d(s,{H:function(){return a}});function a(e){if(!e)return[];let s=e.matchAll(/\{\{([a-zA-Z0-9_]+)\}\}/g),t=new Set;for(let e of Array.from(s))t.add(e[1]);return Array.from(t).sort()}}}]);
|
|
2
|
+
//# sourceMappingURL=6367-59655a85d75e19be.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/chunks/6367-59655a85d75e19be.js","mappings":"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","sources":["webpack://_N_E/./lib/prompts/check-prompt-access.ts","webpack://_N_E/./app/(application)/prompts/components/prompt-card.tsx","webpack://_N_E/./lib/prompts/validate-variable-name.ts","webpack://_N_E/./app/(application)/prompts/components/prompt-editor-modal.tsx","webpack://_N_E/./hooks/use-prompts.tsx","webpack://_N_E/./lib/prompts/extract-variables.ts"],"sourcesContent":["import { PromptLibrary } from \"@/types/models/prompt-library\";\nimport { UserWithRole } from \"@/types/models/user\";\n\n/**\n * Checks if a user has write access to a prompt\n *\n * @param prompt - The prompt to check access for\n * @param user - The user to check access for\n * @returns true if user has write access, false otherwise\n */\nexport function checkPromptWriteAccess(\n prompt: PromptLibrary,\n user: UserWithRole\n): boolean {\n const isPrivate = prompt.rights_mode === \"private\";\n const isPublic = prompt.rights_mode === \"public\";\n const byUsers = prompt.rights_mode === \"users\";\n const byRoles = prompt.rights_mode === \"roles\";\n const isAdmin = user.super_admin;\n const isCreator = prompt.created_by === user.id.toString();\n\n let writeAccess = false;\n\n // Creator always has write access\n if (isCreator) {\n writeAccess = true;\n }\n\n // Private: only creator + admins\n if (isPrivate && !isCreator && !isAdmin) {\n writeAccess = false;\n }\n\n // Public: everyone has write access\n if (isPublic) {\n writeAccess = true;\n }\n\n // By users: check if user has write permission\n if (byUsers) {\n const userAccess = prompt.RBAC?.users?.find((u) => u.id === user.id);\n writeAccess = userAccess?.rights === \"write\";\n }\n\n // By roles: check if user's role has write permission\n if (byRoles) {\n const roleAccess = prompt.RBAC?.roles?.find((r) => r.id === user.role?.id);\n writeAccess = roleAccess?.rights === \"write\";\n }\n\n // Admin override\n if (isAdmin) {\n writeAccess = true;\n }\n\n return writeAccess;\n}\n\n/**\n * Checks if a user has read access to a prompt\n *\n * @param prompt - The prompt to check access for\n * @param user - The user to check access for\n * @returns true if user has read access, false otherwise\n */\nexport function checkPromptReadAccess(\n prompt: PromptLibrary,\n user: UserWithRole\n): boolean {\n const isPrivate = prompt.rights_mode === \"private\";\n const isPublic = prompt.rights_mode === \"public\";\n const byUsers = prompt.rights_mode === \"users\";\n const byRoles = prompt.rights_mode === \"roles\";\n const isAdmin = user.super_admin;\n const isCreator = prompt.created_by === user.id.toString();\n\n // Creator always has read access\n if (isCreator) {\n return true;\n }\n\n // Admin always has read access\n if (isAdmin) {\n return true;\n }\n\n // Private: only creator + admins\n if (isPrivate) {\n return false;\n }\n\n // Public: everyone has read access\n if (isPublic) {\n return true;\n }\n\n // By users: check if user has read or write permission\n if (byUsers) {\n const userAccess = prompt.RBAC?.users?.find((u) => u.id === user.id);\n return userAccess !== undefined;\n }\n\n // By roles: check if user's role has read or write permission\n if (byRoles) {\n const roleAccess = prompt.RBAC?.roles?.find((r) => r.id === user.role?.id);\n return roleAccess !== undefined;\n }\n\n // By projects: would need project context to check\n /* if (prompt.rights_mode === \"projects\") {\n // This would require project context - for now return false\n // Can be enhanced when project context is available\n return false;\n } */\n\n return false;\n}\n","import { useState } from \"react\";\nimport { PromptLibrary } from \"@/types/models/prompt-library\";\nimport { UserWithRole } from \"@/types/models/user\";\nimport { Card, CardContent, CardFooter, CardHeader } from \"@/components/ui/card\";\nimport { Button } from \"@/components/ui/button\";\nimport { Badge } from \"@/components/ui/badge\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n Edit,\n Trash2,\n MoreVertical,\n Star,\n Activity,\n MessageSquare,\n Copy,\n Bot,\n User,\n Calendar,\n Clock,\n ThumbsUp,\n} from \"lucide-react\";\nimport { checkPromptWriteAccess } from \"@/lib/prompts/check-prompt-access\";\nimport { extractVariables } from \"@/lib/prompts/extract-variables\";\nimport { useDeletePrompt, useTogglePromptFavorite } from \"@/hooks/use-prompts\";\nimport { PromptEditorModal } from \"./prompt-editor-modal\";\nimport { toast } from \"sonner\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_AGENTS_BY_IDS, GET_USER_BY_ID } from \"@/queries/queries\";\nimport { formatDistanceToNow } from \"date-fns\";\n\ninterface PromptCardProps {\n prompt: PromptLibrary;\n user: UserWithRole;\n onUpdate: () => void;\n}\n\nexport function PromptCard({ prompt, user, onUpdate }: PromptCardProps) {\n const [isEditModalOpen, setIsEditModalOpen] = useState(false);\n const [isFavoriting, setIsFavoriting] = useState(false);\n const [deletePrompt] = useDeletePrompt();\n const { toggleFavorite } = useTogglePromptFavorite();\n\n const hasWriteAccess = checkPromptWriteAccess(prompt, user);\n const variables = extractVariables(prompt.content);\n const isFavorited = prompt.is_favorited || false;\n\n // Fetch only the assigned agents by their IDs\n const { data: agentsData } = useQuery(GET_AGENTS_BY_IDS, {\n variables: { ids: prompt.assigned_agents || [] },\n skip: !prompt.assigned_agents || prompt.assigned_agents.length === 0,\n });\n\n const assignedAgentNames =\n agentsData?.agentByIds?.map((agent: any) => agent.name) || [];\n\n // Fetch creator information\n const { data: creatorData } = useQuery(GET_USER_BY_ID, {\n variables: { id: prompt.created_by },\n skip: !prompt.created_by,\n });\n\n const creatorName = creatorData?.userById?.name || \"Unknown\";\n\n const handleDelete = async () => {\n if (confirm(\"Are you sure you want to delete this prompt?\")) {\n try {\n await deletePrompt({ variables: { id: prompt.id } });\n toast.success(\"Prompt deleted successfully\");\n onUpdate();\n } catch (error) {\n toast.error(\"Failed to delete prompt\");\n console.error(error);\n }\n }\n };\n\n const handleToggleFavorite = async () => {\n if (isFavoriting) return; // Prevent double-clicks\n\n setIsFavoriting(true);\n try {\n // This is a simplified version - you'd need to fetch the favorite ID\n // and current favorite status from the backend\n await toggleFavorite(\n prompt.id,\n user.id,\n isFavorited,\n prompt.favorite_count,\n undefined // favoriteId would come from querying favorites\n );\n toast.success(\n isFavorited ? \"Removed from favorites\" : \"Added to favorites\",\n {\n icon: isFavorited ? \"👎\" : \"👍\",\n duration: 2000,\n }\n );\n onUpdate();\n } catch (error) {\n toast.error(\"Failed to update favorite\");\n console.error(error);\n } finally {\n // wait 1 second\n await new Promise(resolve => setTimeout(resolve, 200));\n setIsFavoriting(false);\n }\n };\n\n const handleCopyContent = () => {\n navigator.clipboard.writeText(prompt.content);\n toast.success(\"Prompt copied to clipboard\");\n };\n\n return (\n <>\n <Card className=\"flex flex-col hover:shadow-md transition-shadow\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"font-semibold text-lg truncate\">{prompt.name}</h3>\n {prompt.description && (\n <p className=\"text-sm text-muted-foreground line-clamp-2 mt-1\">\n {prompt.description}\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={`h-8 w-8 transition-all ${isFavoriting ? \"scale-125\" : \"\"\n } ${isFavorited ? \"text-yellow-500\" : \"\"}`}\n onClick={handleToggleFavorite}\n disabled={isFavoriting}\n >\n <ThumbsUp\n className={`h-4 w-4 transition-all ${isFavoriting ? \"animate-pulse\" : \"\"\n } ${isFavorited ? \"fill-yellow-400 text-yellow-400\" : \"\"}`}\n />\n </Button>\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={handleCopyContent}>\n <Copy className=\"mr-2 h-4 w-4\" />\n Copy Content\n </DropdownMenuItem>\n {hasWriteAccess && (\n <>\n <DropdownMenuItem onClick={() => setIsEditModalOpen(true)}>\n <Edit className=\"mr-2 h-4 w-4\" />\n Edit\n </DropdownMenuItem>\n <DropdownMenuItem\n onClick={handleDelete}\n className=\"text-destructive\"\n >\n <Trash2 className=\"mr-2 h-4 w-4\" />\n Delete\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </div>\n </CardHeader>\n\n <CardContent className=\"flex-1 pb-3\">\n <div className=\"space-y-3\">\n {/* Content Preview */}\n <p className=\"text-sm text-muted-foreground line-clamp-3\">\n {prompt.content}\n </p>\n\n {/* Variables Badge */}\n {variables.length > 0 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n {variables.length} variable{variables.length !== 1 ? \"s\" : \"\"}\n </Badge>\n )}\n\n {/* Assigned Agents */}\n {assignedAgentNames.length > 0 && (\n <div className=\"flex flex-col gap-1.5\">\n <div className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n <Bot className=\"h-3 w-3\" />\n <span className=\"font-medium\">Works with:</span>\n </div>\n <div className=\"flex flex-wrap gap-1\">\n {assignedAgentNames.slice(0, 2).map((name, index) => (\n <Badge\n key={index}\n variant=\"default\"\n className=\"text-xs bg-primary/10 text-primary hover:bg-primary/20\"\n >\n {name}\n </Badge>\n ))}\n {assignedAgentNames.length > 2 && (\n <Badge\n variant=\"default\"\n className=\"text-xs bg-primary/10 text-primary hover:bg-primary/20\"\n >\n +{assignedAgentNames.length - 2} more\n </Badge>\n )}\n </div>\n </div>\n )}\n </div>\n </CardContent>\n\n <CardFooter className=\"flex flex-col gap-3 pt-3 border-t\">\n {/* Stats Row */}\n <div className=\"flex items-center justify-between w-full\">\n <div className=\"flex items-center gap-3 text-xs text-muted-foreground\">\n <div className={`flex items-center gap-1 transition-all ${isFavoriting ? \"scale-125\" : \"\"\n } ${isFavorited ? \"text-yellow-500\" : \"\"}`}>\n <ThumbsUp className=\"h-3.5 w-3.5\" />\n <span>{prompt.favorite_count || 0}</span>\n\n </div>\n <div className=\"flex items-center gap-1\" title=\"Times used\">\n <Activity className=\"h-3.5 w-3.5\" />\n <span>{prompt.usage_count || 0}</span>\n </div>\n </div>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n type=\"button\"\n onClick={() => setIsEditModalOpen(true)}\n >\n <MessageSquare className=\"mr-2 h-3.5 w-3.5\" />\n View\n </Button>\n </div>\n\n {/* Metadata Row */}\n <div className=\"flex flex-col gap-1.5 text-xs text-muted-foreground w-full\">\n <div className=\"flex items-center gap-1\">\n <User className=\"h-3 w-3\" />\n <span>Created by {creatorName}</span>\n </div>\n <div className=\"flex items-center gap-1\">\n <Calendar className=\"h-3 w-3\" />\n <span>\n Created {formatDistanceToNow(new Date(prompt.createdAt), { addSuffix: true })}\n </span>\n </div>\n <div className=\"flex items-center gap-1\">\n <Clock className=\"h-3 w-3\" />\n <span>\n Updated {formatDistanceToNow(new Date(prompt.updatedAt), { addSuffix: true })}\n </span>\n </div>\n </div>\n </CardFooter>\n </Card>\n\n <PromptEditorModal\n open={isEditModalOpen}\n onOpenChange={setIsEditModalOpen}\n prompt={prompt}\n onSuccess={onUpdate}\n user={user}\n />\n </>\n );\n}\n","/**\n * Validates that a variable name follows the allowed pattern\n * Valid: alphanumeric characters and underscores only\n *\n * @param variable - The variable name to validate\n * @returns true if valid, false otherwise\n *\n * @example\n * validateVariableName(\"customer_name\") // Returns: true\n * validateVariableName(\"issue-id\") // Returns: false (hyphen not allowed)\n * validateVariableName(\"user@email\") // Returns: false (@ not allowed)\n */\nexport function validateVariableName(variable: string): boolean {\n if (!variable) return false;\n\n // Only allow alphanumeric characters and underscores\n const validPattern = /^[a-zA-Z0-9_]+$/;\n return validPattern.test(variable);\n}\n\n/**\n * Validates all variables in a prompt content\n *\n * @param content - The prompt content to validate\n * @returns Object with isValid boolean and array of invalid variables\n *\n * @example\n * validatePromptVariables(\"Hello {{name}}, issue {{issue-id}}\")\n * // Returns: { isValid: false, invalidVariables: [\"issue-id\"] }\n */\nexport function validatePromptVariables(content: string): {\n isValid: boolean;\n invalidVariables: string[];\n} {\n if (!content) return { isValid: true, invalidVariables: [] };\n\n // Match all {{...}} patterns, including invalid ones\n const regex = /\\{\\{([^}]+)\\}\\}/g;\n const matches = content.matchAll(regex);\n const invalidVariables: string[] = [];\n\n for (const match of Array.from(matches)) {\n const variableName = match[1];\n if (!validateVariableName(variableName)) {\n invalidVariables.push(variableName);\n }\n }\n\n return {\n isValid: invalidVariables.length === 0,\n invalidVariables,\n };\n}\n","import { useState, useEffect } from \"react\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { Label } from \"@/components/ui/label\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { X, Lightbulb, Check, ChevronsUpDown } from \"lucide-react\";\nimport { PromptLibrary } from \"@/types/models/prompt-library\";\nimport { UserWithRole } from \"@/types/models/user\";\nimport { useCreatePrompt, useUpdatePrompt } from \"@/hooks/use-prompts\";\nimport { extractVariables, validatePromptVariables } from \"@/lib/prompts\";\nimport { RBACControl } from \"@/components/rbac\";\nimport { toast } from \"sonner\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"@/components/ui/command\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { useQuery } from \"@apollo/client\";\nimport { GET_AGENTS } from \"@/queries/queries\";\nimport { cn } from \"@/lib/utils\";\n\ninterface PromptEditorModalProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n prompt?: PromptLibrary;\n onSuccess: () => void;\n user: UserWithRole;\n defaultAssignedAgents?: string[];\n}\n\nexport function PromptEditorModal({\n open,\n onOpenChange,\n prompt,\n onSuccess,\n user,\n defaultAssignedAgents = [],\n}: PromptEditorModalProps) {\n const isEditing = !!prompt;\n const [createPrompt, { loading: creating }] = useCreatePrompt();\n const [updatePrompt, { loading: updating }] = useUpdatePrompt();\n\n // Form state\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [content, setContent] = useState(\"\");\n const [rightsMode, setRightsMode] = useState<\n \"private\" | \"users\" | \"roles\" | \"public\"/* | \"projects\" */\n >(\"private\");\n const [rbacUsers, setRbacUsers] = useState<\n { id: number; rights: \"read\" | \"write\" }[]\n >([]);\n const [rbacRoles, setRbacRoles] = useState<\n { id: string; rights: \"read\" | \"write\" }[]\n >([]);\n /* const [rbacProjects, setRbacProjects] = useState<\n { id: string; rights: \"read\" | \"write\" }[]\n >([]); */\n const [rbacOpen, setRbacOpen] = useState(false);\n const [assignedAgents, setAssignedAgents] = useState<string[]>([]);\n const [agentSelectorOpen, setAgentSelectorOpen] = useState(false);\n\n // Fetch agents\n const { data: agentsData } = useQuery(GET_AGENTS, {\n variables: { page: 1, limit: 100 },\n });\n\n const agents = agentsData?.agentsPagination?.items || [];\n\n // Extract variables from content\n const variables = extractVariables(content);\n const { isValid, invalidVariables } = validatePromptVariables(content);\n\n // Initialize form when editing\n useEffect(() => {\n if (!open) return; // Only run when modal opens\n\n if (prompt) {\n setName(prompt.name);\n setDescription(prompt.description || \"\");\n setContent(prompt.content);\n setRightsMode(prompt.rights_mode);\n setRbacUsers(prompt.RBAC?.users || []);\n setRbacRoles(prompt.RBAC?.roles || []);\n // setRbacProjects(prompt.RBAC?.projects || []);\n setAssignedAgents(prompt.assigned_agents || []);\n } else {\n resetForm();\n // Apply default assigned agents when creating new prompt\n if (defaultAssignedAgents && defaultAssignedAgents.length > 0) {\n setAssignedAgents(defaultAssignedAgents);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [prompt, open]);\n\n const resetForm = () => {\n setName(\"\");\n setDescription(\"\");\n setContent(\"\");\n setRightsMode(\"private\");\n setRbacUsers([]);\n setRbacRoles([]);\n // setRbacProjects([]);\n setRbacOpen(false);\n setAssignedAgents([]);\n };\n\n const handleSubmit = async () => {\n // Validation\n if (!name.trim()) {\n toast.error(\"Please enter a name for the prompt\");\n return;\n }\n if (!content.trim()) {\n toast.error(\"Please enter prompt content\");\n return;\n }\n if (!isValid) {\n toast.error(\n `Invalid variable names: ${invalidVariables.join(\", \")}. Use only letters, numbers, and underscores.`\n );\n return;\n }\n\n try {\n const input = {\n name: name.trim(),\n description: description.trim() || undefined,\n content: content.trim(),\n rights_mode: rightsMode,\n RBAC:\n rightsMode !== \"private\" && rightsMode !== \"public\"\n ? {\n users: rbacUsers.length > 0 ? rbacUsers : undefined,\n roles: rbacRoles.length > 0 ? rbacRoles : undefined,\n // projects: rbacProjects.length > 0 ? rbacProjects : undefined,\n }\n : undefined,\n assigned_agents: assignedAgents.length > 0 ? assignedAgents : undefined,\n };\n\n if (isEditing) {\n await updatePrompt({\n variables: {\n id: prompt.id,\n ...input,\n },\n });\n toast.success(\"Prompt updated successfully\");\n } else {\n await createPrompt({\n variables: input,\n });\n toast.success(\"Prompt created successfully\");\n }\n\n onSuccess();\n onOpenChange(false);\n resetForm();\n } catch (error) {\n console.error(error);\n toast.error(isEditing ? \"Failed to update prompt\" : \"Failed to create prompt\");\n }\n };\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-3xl max-h-[90vh] overflow-y-auto\">\n <DialogHeader>\n <DialogTitle>{isEditing ? \"Edit Prompt\" : \"Create New Prompt\"}</DialogTitle>\n <DialogDescription>\n {isEditing\n ? \"Update your prompt template\"\n : \"Create a reusable prompt template with variables\"}\n </DialogDescription>\n </DialogHeader>\n\n <div className=\"space-y-6 py-4\">\n {/* Name */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"name\">\n Name <span className=\"text-destructive\">*</span>\n </Label>\n <Input\n id=\"name\"\n placeholder=\"Customer Support Template\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n />\n </div>\n\n {/* Description */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"description\">Description</Label>\n <Input\n id=\"description\"\n placeholder=\"Brief description of this prompt\"\n value={description}\n onChange={(e) => setDescription(e.target.value)}\n />\n </div>\n\n {/* Content */}\n <div className=\"space-y-2\">\n <Label htmlFor=\"content\">\n Prompt Content <span className=\"text-destructive\">*</span>\n </Label>\n <Textarea\n id=\"content\"\n placeholder=\"You are helping {{customer_name}} with their {{issue}}...\"\n value={content}\n onChange={(e) => setContent(e.target.value)}\n rows={8}\n className=\"font-mono text-sm\"\n />\n <div className=\"flex items-start gap-2 text-xs text-muted-foreground\">\n <Lightbulb className=\"h-3.5 w-3.5 mt-0.5 flex-shrink-0\" />\n <span>\n Use{\" \"}\n <code className=\"bg-muted px-1 py-0.5 rounded\">\n {\"{\"}\n {\"{\"}variable_name{\"}}\"}\n </code>{\" \"}\n format for dynamic content. Variable names can only contain letters,\n numbers, and underscores.\n </span>\n </div>\n\n {/* Detected Variables */}\n {variables.length > 0 && (\n <div className=\"flex flex-wrap gap-1 pt-2\">\n <span className=\"text-xs text-muted-foreground mr-2\">\n Detected variables:\n </span>\n {variables.map((variable) => (\n <Badge key={variable} variant=\"outline\" className=\"text-xs\">\n {variable}\n </Badge>\n ))}\n </div>\n )}\n\n {/* Invalid Variables Warning */}\n {!isValid && (\n <div className=\"text-xs text-destructive\">\n Invalid variable names: {invalidVariables.join(\", \")}\n </div>\n )}\n </div>\n\n {/* Assign to Agents */}\n <div className=\"space-y-2\">\n <Label>Assign to Agents</Label>\n <Popover modal={true} open={agentSelectorOpen} onOpenChange={setAgentSelectorOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={agentSelectorOpen}\n className=\"w-full justify-between\"\n >\n {assignedAgents.length === 0\n ? \"Select agents...\"\n : `${assignedAgents.length} agent${assignedAgents.length !== 1 ? \"s\" : \"\"} selected`}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search agents...\" />\n <CommandList>\n <CommandEmpty>No agents found.</CommandEmpty>\n <CommandGroup>\n {agents.map((agent: any) => (\n <CommandItem\n key={agent.id}\n value={agent.id}\n onSelect={() => {\n setAssignedAgents((prev) =>\n prev.includes(agent.id)\n ? prev.filter((id) => id !== agent.id)\n : [...prev, agent.id]\n );\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n assignedAgents.includes(agent.id)\n ? \"opacity-100\"\n : \"opacity-0\"\n )}\n />\n {agent.name}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n {assignedAgents.length > 0 && (\n <div className=\"flex flex-wrap gap-2 pt-2\">\n {assignedAgents.map((agentId) => {\n const agent = agents.find((a: any) => a.id === agentId);\n return agent ? (\n <Badge key={agentId} variant=\"secondary\" className=\"text-sm\">\n {agent.name}\n <button\n type=\"button\"\n onClick={() =>\n setAssignedAgents((prev) =>\n prev.filter((id) => id !== agentId)\n )\n }\n className=\"ml-1.5 hover:text-destructive\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n ) : null;\n })}\n </div>\n )}\n <p className=\"text-xs text-muted-foreground\">\n Assign this prompt to specific agents to show it as recommended in chat\n </p>\n </div>\n\n {/* RBAC Control */}\n <Collapsible open={rbacOpen} onOpenChange={setRbacOpen}>\n <div className=\"space-y-2\">\n <CollapsibleTrigger asChild>\n <Button variant=\"outline\" className=\"w-full justify-between\">\n Access Control\n <span className=\"text-xs text-muted-foreground\">\n {rightsMode === \"private\" && \"Private\"}\n {rightsMode === \"public\" && \"Public\"}\n {rightsMode === \"users\" && `${rbacUsers.length} users`}\n {rightsMode === \"roles\" && `${rbacRoles.length} roles`}\n {/* {rightsMode === \"projects\" && `${rbacProjects.length} projects`} */}\n </span>\n </Button>\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-2\">\n <RBACControl\n initialRightsMode={rightsMode}\n initialUsers={rbacUsers}\n initialRoles={rbacRoles}\n modalMode={true}\n // initialProjects={rbacProjects}\n onChange={(mode, users, roles) => {\n setRightsMode(mode);\n setRbacUsers(users);\n setRbacRoles(roles);\n // setRbacProjects(projects);\n }}\n />\n </CollapsibleContent>\n </div>\n </Collapsible>\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button\n onClick={handleSubmit}\n disabled={creating || updating || !name.trim() || !content.trim() || !isValid}\n >\n {creating || updating ? \"Saving...\" : isEditing ? \"Save Changes\" : \"Create Prompt\"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n","import { useMutation, useQuery } from \"@apollo/client\";\nimport {\n CREATE_PROMPT,\n CREATE_PROMPT_FAVORITE,\n DELETE_PROMPT,\n DELETE_PROMPT_FAVORITE,\n GET_PROMPT_BY_ID,\n GET_PROMPTS,\n GET_USER_PROMPT_FAVORITES,\n INCREMENT_PROMPT_FAVORITES,\n INCREMENT_PROMPT_USAGE,\n UPDATE_PROMPT,\n} from \"@/queries/queries\";\nimport {\n CreatePromptInput,\n PromptFavorite,\n PromptLibrary,\n UpdatePromptInput,\n} from \"@/types/models/prompt-library\";\n\ninterface PromptsData {\n prompt_libraryPagination: {\n pageInfo: {\n pageCount: number;\n itemCount: number;\n currentPage: number;\n hasPreviousPage: boolean;\n hasNextPage: boolean;\n };\n items: PromptLibrary[];\n };\n}\n\ninterface PromptData {\n prompt_library_itemById: PromptLibrary;\n}\n\ninterface PromptFavoritesData {\n prompt_favoritesPagination: {\n items: PromptFavorite[];\n };\n}\n\n/**\n * Hook to fetch paginated prompts with filtering and sorting\n */\nexport const usePrompts = (variables?: {\n page?: number;\n limit?: number;\n filters?: any[];\n sort?: { field: string; direction: \"ASC\" | \"DESC\" };\n}) => {\n return useQuery<PromptsData>(GET_PROMPTS, {\n variables: {\n page: variables?.page ?? 1,\n limit: variables?.limit ?? 20,\n filters: variables?.filters ?? [],\n sort: variables?.sort ?? { field: \"updatedAt\", direction: \"DESC\" },\n },\n });\n};\n\n/**\n * Hook to fetch a single prompt by ID\n */\nexport const usePrompt = (id: string) => {\n return useQuery<PromptData>(GET_PROMPT_BY_ID, {\n variables: { id },\n skip: !id,\n });\n};\n\n/**\n * Hook to create a new prompt\n */\nexport const useCreatePrompt = () => {\n return useMutation<{ prompt_libraryCreateOne: { item: PromptLibrary } }>(\n CREATE_PROMPT,\n {\n refetchQueries: [{ query: GET_PROMPTS, variables: { page: 1, limit: 20 } }],\n }\n );\n};\n\n/**\n * Hook to update an existing prompt\n */\nexport const useUpdatePrompt = () => {\n return useMutation<{ prompt_libraryUpdateOneById: { item: PromptLibrary } }>(\n UPDATE_PROMPT\n );\n};\n\n/**\n * Hook to delete a prompt\n */\nexport const useDeletePrompt = () => {\n return useMutation<{ prompt_libraryRemoveOneById: { id: string } }>(\n DELETE_PROMPT,\n {\n refetchQueries: [{ query: GET_PROMPTS, variables: { page: 1, limit: 20 } }],\n }\n );\n};\n\n/**\n * Hook to increment prompt usage count\n */\nexport const useIncrementPromptUsage = () => {\n return useMutation<{\n prompt_libraryUpdateOneById: { item: Pick<PromptLibrary, \"id\" | \"usage_count\"> };\n }>(INCREMENT_PROMPT_USAGE);\n};\n\n/**\n * Hook to fetch user's favorited prompts\n */\nexport const useUserPromptFavorites = (userId: number) => {\n return useQuery<PromptFavoritesData>(GET_USER_PROMPT_FAVORITES, {\n variables: { user_id: userId },\n skip: !userId,\n });\n};\n\n/**\n * Hook to create a prompt favorite\n */\nexport const useCreatePromptFavorite = () => {\n return useMutation<{ prompt_favoritesCreateOne: { item: PromptFavorite } }>(\n CREATE_PROMPT_FAVORITE\n );\n};\n\n/**\n * Hook to delete a prompt favorite\n */\nexport const useDeletePromptFavorite = () => {\n return useMutation<{ prompt_favoritesRemoveOneById: { id: string } }>(\n DELETE_PROMPT_FAVORITE\n );\n};\n\n/**\n * Hook to toggle favorite status of a prompt\n * Handles both creating and deleting favorites, and updating the favorite count\n */\nexport const useTogglePromptFavorite = () => {\n const [createFavorite] = useCreatePromptFavorite();\n const [deleteFavorite] = useDeletePromptFavorite();\n const [incrementFavorites] = useMutation(INCREMENT_PROMPT_FAVORITES);\n\n const toggleFavorite = async (\n promptId: string,\n userId: number,\n isFavorited: boolean,\n currentFavoriteCount: number,\n favoriteId?: string\n ) => {\n if (isFavorited && favoriteId) {\n // Remove favorite\n await deleteFavorite({ variables: { id: favoriteId } });\n await incrementFavorites({\n variables: {\n id: promptId,\n favorite_count: Math.max(0, currentFavoriteCount - 1),\n },\n });\n } else {\n // Add favorite\n await createFavorite({\n variables: { user_id: userId, prompt_id: promptId },\n });\n await incrementFavorites({\n variables: { id: promptId, favorite_count: currentFavoriteCount + 1 },\n });\n }\n };\n\n return { toggleFavorite };\n};\n","/**\n * Extracts all variable names from a prompt template\n * Variables are in the format {{variable_name}}\n * Only alphanumeric characters and underscores are allowed in variable names\n *\n * @param content - The prompt content to extract variables from\n * @returns Array of unique variable names found in the content\n *\n * @example\n * extractVariables(\"Hello {{name}}, your issue {{issue_id}} is resolved\")\n * // Returns: [\"name\", \"issue_id\"]\n */\nexport function extractVariables(content: string): string[] {\n if (!content) return [];\n\n // Match {{variable_name}} where variable_name contains only alphanumeric and underscore\n const regex = /\\{\\{([a-zA-Z0-9_]+)\\}\\}/g;\n const matches = content.matchAll(regex);\n const variables = new Set<string>();\n\n for (const match of Array.from(matches)) {\n variables.add(match[1]);\n }\n\n return Array.from(variables).sort();\n}\n"],"names":["PromptCard","param","agentsData","creatorData","prompt","user","onUpdate","isEditModalOpen","setIsEditModalOpen","useState","isFavoriting","setIsFavoriting","deletePrompt","useDeletePrompt","toggleFavorite","useTogglePromptFavorite","hasWriteAccess","checkPromptWriteAccess","isPrivate","rights_mode","isPublic","byUsers","byRoles","isAdmin","super_admin","isCreator","created_by","id","toString","writeAccess","userAccess","RBAC","users","find","u","rights","roleAccess","roles","r","role","variables","extractVariables","content","isFavorited","is_favorited","data","useQuery","GET_AGENTS_BY_IDS","ids","assigned_agents","skip","length","assignedAgentNames","agentByIds","map","agent","name","GET_USER_BY_ID","creatorName","userById","handleDelete","confirm","toast","success","error","console","handleToggleFavorite","favorite_count","undefined","icon","duration","Promise","resolve","setTimeout","jsx_runtime","jsxs","Fragment","Card","className","jsx","CardHeader","div","h3","description","p","Button","variant","size","concat","onClick","disabled","ThumbsUp","DropdownMenu","modal","DropdownMenuTrigger","asChild","MoreVertical","DropdownMenuContent","align","DropdownMenuItem","navigator","clipboard","writeText","Copy","Edit","Trash2","CardContent","Badge","Bot","span","slice","index","CardFooter","title","Activity","usage_count","type","MessageSquare","User","Calendar","formatDistanceToNow","Date","createdAt","addSuffix","Clock","updatedAt","PromptEditorModal","open","onOpenChange","onSuccess","defaultAssignedAgents","isEditing","createPrompt","loading","creating","useCreatePrompt","updatePrompt","updating","useUpdatePrompt","setName","setDescription","setContent","rightsMode","setRightsMode","rbacUsers","setRbacUsers","rbacRoles","setRbacRoles","rbacOpen","setRbacOpen","assignedAgents","setAssignedAgents","agentSelectorOpen","setAgentSelectorOpen","GET_AGENTS","page","limit","agents","agentsPagination","items","isValid","invalidVariables","validatePromptVariables","matches","matchAll","match","Array","from","variableName","validPattern","test","push","useEffect","resetForm","handleSubmit","trim","join","input","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","Label","htmlFor","Input","placeholder","value","onChange","e","target","Textarea","rows","Lightbulb","code","variable","Popover","PopoverTrigger","aria-expanded","ChevronsUpDown","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","onSelect","prev","includes","filter","Check","cn","a","agentId","button","X","Collapsible","CollapsibleTrigger","CollapsibleContent","RBACControl","initialRightsMode","initialUsers","initialRoles","modalMode","mode","DialogFooter","usePrompts","GET_PROMPTS","filters","sort","field","direction","useMutation","CREATE_PROMPT","refetchQueries","query","UPDATE_PROMPT","DELETE_PROMPT","useIncrementPromptUsage","INCREMENT_PROMPT_USAGE","useCreatePromptFavorite","CREATE_PROMPT_FAVORITE","useDeletePromptFavorite","DELETE_PROMPT_FAVORITE","createFavorite","deleteFavorite","incrementFavorites","INCREMENT_PROMPT_FAVORITES","promptId","userId","currentFavoriteCount","favoriteId","Math","max","user_id","prompt_id","Set","add"],"sourceRoot":""}
|