@ai-matrx/context-menu 0.1.9 → 0.1.11
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/CHANGELOG.md +12 -0
- package/dist/builder.cjs +17 -18
- package/dist/builder.cjs.map +1 -1
- package/dist/builder.js +2 -3
- package/dist/builder.js.map +1 -1
- package/dist/{chunk-ECKA474B.js → chunk-2B37SXQW.js} +21 -12
- package/dist/chunk-2B37SXQW.js.map +1 -0
- package/dist/{chunk-TSOUI723.cjs → chunk-7TIZAANU.cjs} +26 -11
- package/dist/chunk-7TIZAANU.cjs.map +1 -0
- package/dist/{chunk-A24SBKSA.js → chunk-EG23Y2KW.js} +14 -13
- package/dist/{chunk-A24SBKSA.js.map → chunk-EG23Y2KW.js.map} +1 -1
- package/dist/{chunk-7VDSMZWI.cjs → chunk-ERFH2RZC.cjs} +18 -17
- package/dist/chunk-ERFH2RZC.cjs.map +1 -0
- package/dist/{chunk-EIP5YS4Y.js → chunk-HJU3RU2B.js} +27 -12
- package/dist/chunk-HJU3RU2B.js.map +1 -0
- package/dist/{chunk-SWEWOUHK.cjs → chunk-IH5WN5JP.cjs} +31 -26
- package/dist/chunk-IH5WN5JP.cjs.map +1 -0
- package/dist/{chunk-QXHLM7SS.cjs → chunk-LDMYNYFC.cjs} +42 -33
- package/dist/chunk-LDMYNYFC.cjs.map +1 -0
- package/dist/{chunk-ANJYKQAA.cjs → chunk-MBU4Y22O.cjs} +3 -3
- package/dist/{chunk-ANJYKQAA.cjs.map → chunk-MBU4Y22O.cjs.map} +1 -1
- package/dist/{chunk-L6DPISFT.js → chunk-NBEXJ25Z.js} +24 -19
- package/dist/{chunk-L6DPISFT.js.map → chunk-NBEXJ25Z.js.map} +1 -1
- package/dist/{chunk-LE6ZUVCO.js → chunk-PB3PMDKV.js} +2 -2
- package/dist/{chunk-NOYMFNSU.js → chunk-SJWKMZEJ.js} +33 -12
- package/dist/chunk-SJWKMZEJ.js.map +1 -0
- package/dist/{chunk-XERD2YCJ.cjs → chunk-WROBL3DR.cjs} +32 -11
- package/dist/chunk-WROBL3DR.cjs.map +1 -0
- package/dist/design-store.cjs +0 -1
- package/dist/design-store.cjs.map +1 -1
- package/dist/design-store.js +0 -1
- package/dist/design-store.js.map +1 -1
- package/dist/engine.cjs +64 -96
- package/dist/engine.cjs.map +1 -1
- package/dist/engine.d.cts +7 -7
- package/dist/engine.d.ts +7 -7
- package/dist/engine.js +72 -104
- package/dist/engine.js.map +1 -1
- package/dist/index.cjs +3 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -3
- package/dist/menu-content.cjs +18 -19
- package/dist/menu-content.cjs.map +1 -1
- package/dist/menu-content.js +4 -5
- package/dist/menu-content.js.map +1 -1
- package/dist/menu-inspect.cjs +0 -1
- package/dist/menu-inspect.cjs.map +1 -1
- package/dist/menu-inspect.js +0 -1
- package/dist/menu-inspect.js.map +1 -1
- package/dist/model.cjs +4 -5
- package/dist/model.cjs.map +1 -1
- package/dist/model.js +3 -4
- package/dist/react.cjs +52 -44
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +30 -22
- package/dist/react.js.map +1 -1
- package/package.json +6 -6
- package/dist/chunk-7VDSMZWI.cjs.map +0 -1
- package/dist/chunk-CUODNUAD.cjs +0 -24
- package/dist/chunk-CUODNUAD.cjs.map +0 -1
- package/dist/chunk-ECKA474B.js.map +0 -1
- package/dist/chunk-EIP5YS4Y.js.map +0 -1
- package/dist/chunk-NOYMFNSU.js.map +0 -1
- package/dist/chunk-PE3ZHHM5.js +0 -24
- package/dist/chunk-PE3ZHHM5.js.map +0 -1
- package/dist/chunk-QXHLM7SS.cjs.map +0 -1
- package/dist/chunk-SWEWOUHK.cjs.map +0 -1
- package/dist/chunk-TSOUI723.cjs.map +0 -1
- package/dist/chunk-XERD2YCJ.cjs.map +0 -1
- /package/dist/{chunk-LE6ZUVCO.js.map → chunk-PB3PMDKV.js.map} +0 -0
package/dist/engine.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/aidream/aidream/apps/shared/context-menu/dist/engine.cjs","../src/engine/index.ts","../src/engine/utils/build-application-scope.ts","../src/engine/utils/availability.ts","../src/engine/utils/open-context-menu.ts","../src/engine/utils/resolveMarkdownContext.ts","../src/engine/regroup/engine-rows.ts","../src/engine/regroup/proposed-grouping.ts","../src/engine/proposed/proposed-arrangement.ts"],"names":["icon","registerAlchemyIcon"],"mappings":"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vF,IAAA;AAAwB,MAAA;AAA6D,IAAA;AACtF,IAAA;AACN,MAAA;AACW,MAAA;AACF,QAAA;AACG,QAAA;AACD,QAAA;AACA,QAAA;AACb,MAAA;AACF,IAAA;AACH,EAAA;AACiB,EAAA;AAKX,EAAA;AACW,IAAA;AACI,IAAA;AACT,IAAA;AACQ,IAAA;AACF,IAAA;AACjB,EAAA;AAK4B,EAAA;AAChB,IAAA;AACM,IAAA;AACnB,EAAA;AACqB,EAAA;AACA,EAAA;AACJ,EAAA;AACA,EAAA;AACG,EAAA;AACN,EAAA;AACA,EAAA;AACiB,EAAA;AACP,EAAA;AACR,EAAA;AACI,IAAA;AACJ,IAAA;AACC,IAAA;AACP,MAAA;AACW,MAAA;AACA,MAAA;AACZ,IAAA;AACW,MAAA;AAClB,IAAA;AACF,EAAA;AACkC,EAAA;AACb,EAAA;AAGC,EAAA;AACJ,EAAA;AACU,EAAA;AACH,EAAA;AACT,EAAA;AACC,IAAA;AACG,IAAA;AACC,IAAA;AACD,IAAA;AACA,MAAA;AACD,IAAA;AACF,MAAA;AACG,MAAA;AACC,MAAA;AACH,IAAA;AACA,MAAA;AACT,IAAA;AACY,MAAA;AACnB,IAAA;AACF,EAAA;AAEgB,EAAA;AACK,IAAA;AACD,IAAA;AACpB,EAAA;AACkB,EAAA;AACD,EAAA;AAGX,EAAA;AACU,EAAA;AACD,IAAA;AACI,IAAA;AACnB,EAAA;AACkB,EAAA;AACG,EAAA;AACH,EAAA;AACX,EAAA;AACT;ARmSuB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/aidream/aidream/apps/shared/context-menu/dist/engine.cjs","sourcesContent":[null,"/**\n * @ai-matrx/context-menu/engine — the context menu's logic, no components:\n * the menu types (the chat package's, plus the rich-document augmentation),\n * scope building, availability, grouping and arrangements, the record-menu\n * registry, table-row items, and THE HOST PORT (`configureContextMenuHost`).\n *\n * Components are `@ai-matrx/context-menu/react`. The heavy half (the menu\n * model, the engine hooks, the Alchemy provider, value resolution, editor\n * write-back) is `@ai-matrx/context-menu/model` — it loads with the menu body,\n * so this entry stays cheap for shell-reachable code.\n */\nexport * from \"./types\";\nexport * from \"./host/port\";\nexport * from \"./utils/build-application-scope\";\nexport * from \"./utils/availability\";\nexport * from \"./utils/open-context-menu\";\nexport * from \"./utils/selection-tracking\";\nexport * from \"./utils/menu-deadline\";\nexport * from \"./utils/resolveMarkdownContext\";\nexport * from \"./model/requirement-gate\";\nexport * from \"./table-row-item\";\nexport * from \"./regroup/grouping\";\nexport * from \"./regroup/engine-rows\";\nexport * from \"./regroup/proposed-grouping\";\nexport * from \"./record-menu-registry\";\nexport * from \"./proposed/proposed-arrangement\";\nexport * from \"./utils/already-here\";\nexport * from \"./utils/per-row-entity\";\nexport * from \"./utils/json-menu-actions\";\nexport * from \"./utils/join-extra-sections\";\nexport * from \"./utils/field-menu-header\";\nexport * from \"./utils/key-combo\";\nexport * from \"./utils/widget-handle\";\nexport * from \"./utils/table-at-target\";\nexport * from \"./region-trigger-attrs\";\nexport * from \"./managed-agent-launch\";\nexport * from \"./item/itemMenuToV3\";\nexport * from \"./selection-provider\";\n","export * from \"@ai-matrx/chat/context-menu/utils/build-application-scope\";\n","export * from \"@ai-matrx/chat/context-menu/utils/availability\";\n","/**\n * Opens the canonical context menu from an explicit overflow control.\n *\n * Touch surfaces cannot rely on a discoverable right-click. Dispatching the\n * same bubbling event keeps the overflow button on the exact desktop/mobile\n * ContextMenuV3 path instead of creating a second action menu.\n */\nexport function openContextMenuForElement(element: HTMLElement | null): void {\n if (!element) return;\n\n const rect = element.getBoundingClientRect();\n element.dispatchEvent(\n new MouseEvent(\"contextmenu\", {\n bubbles: true,\n cancelable: true,\n view: element.ownerDocument.defaultView ?? window,\n button: 2,\n buttons: 2,\n clientX: rect.left + rect.width / 2,\n clientY: rect.top + rect.height / 2,\n }),\n );\n}\n","export * from \"@ai-matrx/chat/context-menu/utils/resolveMarkdownContext\";\n","// features/context-menu-v3/regroup/engine-rows.ts\n//\n// The rows the context-menu ENGINE itself can contribute (model/menu-model.ts),\n// as the ids and categories `alchemy-provider.ts` gives them (`cm:<node id>`).\n// Together with the rich-document registry (`getAllActions()`) this is the full\n// inventory of universal menu rows; a surface's own rows (its extraSections)\n// are \"the page's own actions\" and are not listed here.\n//\n// Kept in step with menu-model.ts by hand; the regroup demo flags any `cm:` row\n// a live menu resolves that is missing here (\"not in the inventory\").\n\nimport type { ActionCategory } from \"@ai-matrx/alchemy/actions\";\n\nexport interface InventoryRow {\n id: string;\n label: string;\n category: ActionCategory;\n}\n\nexport const CONTEXT_MENU_ENGINE_ROWS: readonly InventoryRow[] = [\n { id: \"cm:copy\", label: \"Copy\", category: \"clipboard\" },\n { id: \"cm:cut\", label: \"Cut\", category: \"clipboard\" },\n { id: \"cm:paste\", label: \"Paste\", category: \"clipboard\" },\n { id: \"cm:undo\", label: \"Undo\", category: \"clipboard\" },\n { id: \"cm:redo\", label: \"Redo\", category: \"clipboard\" },\n { id: \"cm:find\", label: \"Find & Replace\", category: \"clipboard\" },\n { id: \"cm:speak\", label: \"Speak\", category: \"clipboard\" },\n { id: \"cm:listen\", label: \"Listen\", category: \"clipboard\" },\n { id: \"cm:copy-as\", label: \"Copy as\", category: \"clipboard\" },\n { id: \"cm:json\", label: \"JSON\", category: \"clipboard\" },\n { id: \"cm:select-all\", label: \"Select All\", category: \"edit\" },\n { id: \"cm:insert-reference\", label: \"Insert / Copy reference…\", category: \"edit\" },\n { id: \"cm:chat\", label: \"Chat\", category: \"app\" },\n { id: \"cm:view-history\", label: \"View History\", category: \"history\" },\n { id: \"cm:compare\", label: \"Compare\", category: \"app\" },\n { id: \"cm:export\", label: \"Export\", category: \"save\" },\n { id: \"cm:convert\", label: \"Convert\", category: \"save\" },\n { id: \"cm:attach\", label: \"Attach To\", category: \"share\" },\n { id: \"cm:share\", label: \"Share\", category: \"share\" },\n { id: \"cm:placement:ai-action\", label: \"AI Actions\", category: \"ai\" },\n { id: \"cm:placement:content-block\", label: \"Content blocks\", category: \"ai\" },\n { id: \"cm:placement:organization-tool\", label: \"Org Items\", category: \"ai\" },\n { id: \"cm:placement:user-tool\", label: \"My Items\", category: \"ai\" },\n { id: \"cm:placement:quick-action\", label: \"Quick actions (placement)\", category: \"ai\" },\n { id: \"cm:placement:bound-agent\", label: \"Agents\", category: \"ai\" },\n { id: \"cm:quick-actions\", label: \"Quick Actions\", category: \"feedback\" },\n { id: \"cm:save\", label: \"Save\", category: \"edit\" },\n { id: \"cm:delete\", label: \"Delete\", category: \"edit\" },\n { id: \"cm:admin\", label: \"Admin Tools\", category: \"admin\" },\n { id: \"cm:x:surface\", label: \"This page (location, context, agents)\", category: \"surface-info\" },\n];\n\n/** Engine rows whose ids are generated per library (one per agent category or placement). */\nexport const CONTEXT_MENU_ENGINE_ID_PREFIXES: readonly string[] = [\"cm:placement:\", \"cm:cat:\", \"cm:agents\", \"cm:entry:\"];\n","// features/context-menu-v3/regroup/proposed-grouping.ts\n//\n// THE PROPOSED GROUPING, v2 (2026-09-28, after Arman's review of v1: \"we should\n// distinguish between a few things better: Copy (as various things), Download\n// (becomes some sort of external file), Convert (becomes something different in\n// our system…), Action (Publish HTML, etc.)… we still need more categories…\n// the more of [sub-menus] we do, the better\").\n//\n// Every submenu is named by its OUTCOME — what the person gets — in one plain\n// word. Applied ONLY where a MenuRegroupContext asks for it (the regroup demo);\n// no production menu uses it until Arman approves. Plain data over the\n// registry's own action ids and categories: the rows themselves come from the\n// registry, never from this file.\n\nimport {\n ArrowRightLeft,\n Copy,\n Download,\n GitCompareArrows,\n Globe,\n History,\n Pencil,\n Share2,\n Shield,\n Tags,\n ThumbsUp,\n Volume2,\n} from \"lucide-react\";\nimport { registerAlchemyIcon } from \"@ai-matrx/rich-content/utils/alchemy-icon-keys\";\nimport { AGENT_ICON } from \"@ai-matrx/icons/domain\";\nimport type { MenuGrouping } from \"./grouping\";\n\nconst icon = (c: unknown) => registerAlchemyIcon(c);\n\nexport const PROPOSED_MENU_GROUPING: MenuGrouping = {\n name: \"v2 — grouped by what you get\",\n minMembers: 2,\n // `category` + `order` place each submenu row among the others (the package's\n // group order): Edit, Copy, Download, Convert to, Publish, Share, Organize,\n // History, AI, Read aloud, Compare, Feedback, Admin.\n groups: [\n { key: \"edit\", label: \"Edit\", definition: \"Change this item where it is: edit, rewrite, open in an editor, run, delete.\", icon: icon(Pencil), category: \"edit\", order: 0 },\n { key: \"copy\", label: \"Copy\", definition: \"It lands on your clipboard, in the form you pick: text, Markdown, rich text, HTML, a table, JSON, a reference.\", icon: icon(Copy), category: \"copy\", order: 0 },\n { key: \"download\", label: \"Download\", definition: \"It becomes a file outside the app: Markdown, PDF, Word, HTML — or a printout.\", icon: icon(Download), category: \"export\", order: 0 },\n { key: \"convert\", label: \"Convert to\", definition: \"It becomes a new thing inside the app: a note, document, task, file, flashcards, quiz, template, contact, data table.\", icon: icon(ArrowRightLeft), category: \"save\", order: 0 },\n { key: \"publish\", label: \"Publish\", definition: \"It goes out to the world: a public web page or published HTML anyone with the link can open.\", icon: icon(Globe), category: \"share\", order: 0 },\n { key: \"share\", label: \"Share\", definition: \"It goes to specific people or places: share with someone, send to Google Docs, email it.\", icon: icon(Share2), category: \"share\", order: 1 },\n { key: \"organize\", label: \"Organize\", definition: \"It stays what it is, but gets filed: attached to a project or context, pinned, annotated.\", icon: icon(Tags), category: \"history\", order: 0 },\n { key: \"history\", label: \"History\", definition: \"Earlier versions: view the history, fork from a point in it.\", icon: icon(History), category: \"history\", order: 1 },\n { key: \"ai\", label: \"AI\", definition: \"An AI works on it: ask, chat, run an agent or AI action, regenerate.\", icon: icon(AGENT_ICON), category: \"ai\", order: 0 },\n { key: \"listen\", label: \"Read aloud\", definition: \"You hear it: read it aloud, a spoken summary, the voice settings.\", icon: icon(Volume2), category: \"listen\", order: 0 },\n { key: \"compare\", label: \"Compare\", definition: \"You see it side by side with something else: the clipboard or a saved base.\", icon: icon(GitCompareArrows), category: \"study\", order: 0 },\n { key: \"feedback\", label: \"Feedback\", definition: \"Tell us how it went: thumbs up or down, report a problem.\", icon: icon(ThumbsUp), category: \"feedback\", order: 1 },\n { key: \"admin\", label: \"Admin\", definition: \"Creator and admin tools: inspect, debug, server-side message surgery. Admins only.\", icon: icon(Shield), category: \"admin\", order: 0 },\n ],\n rules: [\n // ── The page's own rows that DUPLICATE a category (Arman, 2026-09-28: \"the\n // more of that we do, the better\"): they move into that category, and merge\n // into the universal row that does the same thing when it is in the menu.\n // Only genuinely unique record actions (Open, Take, Duplicate, Move to Trash…)\n // stay at the top.\n { when: { pageOwnLabels: [\"^copy( to clipboard)?$\"] }, to: { kind: \"group\", key: \"copy\" }, mergeWithIds: [\"cm:copy\", \"copy\"] },\n { when: { pageOwnLabels: [\"^copy\\\\b\"] }, to: { kind: \"group\", key: \"copy\" } },\n {\n when: { pageOwnLabels: [\"^(export|download)( as)? markdown\"] },\n to: { kind: \"group\", key: \"download\" },\n mergeWithIds: [\"save-as-file\"],\n },\n { when: { pageOwnLabels: [\"^(export|download)\\\\b\", \"^print\\\\b\"] }, to: { kind: \"group\", key: \"download\" } },\n { when: { pageOwnLabels: [\"^share( link)?…?$\"] }, to: { kind: \"group\", key: \"share\" }, mergeWithIds: [\"cm:share\"] },\n { when: { pageOwnLabels: [\"^(share|send|email)\\\\b\"] }, to: { kind: \"group\", key: \"share\" } },\n { when: { pageOwnLabels: [\"^publish\\\\b\"] }, to: { kind: \"group\", key: \"publish\" } },\n { when: { pageOwnLabels: [\"^(convert|save to|save as|create (a )?(task|note|document))\\\\b\"] }, to: { kind: \"group\", key: \"convert\" } },\n { when: { pageOwnLabels: [\"^(move to folder|add tags?|tags?|attach)\\\\b\"] }, to: { kind: \"group\", key: \"organize\" } },\n { when: { pageOwnLabels: [\"^(read aloud|listen)\\\\b\"] }, to: { kind: \"group\", key: \"listen\" } },\n { when: { pageOwnLabels: [\"^compare\\\\b\"] }, to: { kind: \"group\", key: \"compare\" } },\n { when: { pageOwnLabels: [\"^save$\"] }, to: { kind: \"top\" }, mergeWithIds: [\"cm:save\"] },\n // A conversation's own rows, by id (their labels are computed at open).\n {\n when: { ids: [\"conversation-copy-plain\", \"conversation-copy-markdown\", \"conversation-copy-formatted\", \"conversation-copy-for-ai\", \"conversation-copy-link\"] },\n to: { kind: \"group\", key: \"copy\" },\n },\n { when: { idPrefixes: [\"conversation-download-\"] }, to: { kind: \"group\", key: \"download\" } },\n {\n when: { ids: [\"conversation-save-to-notes\", \"conversation-create-document\", \"conversation-create-task\"] },\n to: { kind: \"group\", key: \"convert\" },\n },\n { when: { ids: [\"conversation-share\", \"conversation-email-to-me\"] }, to: { kind: \"group\", key: \"share\" } },\n { when: { ids: [\"conversation-open-in-new-chat\"] }, to: { kind: \"group\", key: \"ai\" } },\n { when: { ids: [\"conversation-rename\", \"conversation-duplicate\"] }, to: { kind: \"group\", key: \"edit\" } },\n\n // The clicked thing's remaining own rows (a quiz row's Open / Take / Archive,\n // a note's Duplicate / Move to Trash) come first, as they are.\n { when: { pageOwn: true }, to: { kind: \"page-first\" } },\n // The universal verb strip (icons across the top) stays exactly as it is.\n {\n when: { ids: [\"cm:copy\", \"cm:cut\", \"cm:paste\", \"cm:undo\", \"cm:redo\", \"cm:find\", \"copy\", \"cm:select-all\"] },\n to: { kind: \"top\" },\n },\n // Quick Actions is already one submenu of quick tools; the page submenu is last;\n // an editor's own Save / Delete stay one click away.\n { when: { ids: [\"cm:quick-actions\", \"cm:save\", \"cm:delete\"], categories: [\"surface-info\"] }, to: { kind: \"top\" } },\n\n {\n when: {\n ids: [\"cm:copy-as\", \"cm:json\", \"cm:insert-reference\", \"copy-html-page\", \"conversation-copy-link\"],\n categories: [\"copy\"],\n },\n to: { kind: \"group\", key: \"copy\" },\n },\n {\n when: { ids: [\"cm:export\", \"save-as-file\", \"download-pdf\", \"download-docx\", \"download-html\", \"print\", \"full-print\"] },\n to: { kind: \"group\", key: \"download\" },\n },\n { when: { ids: [\"html-preview\", \"share-webpage\"] }, to: { kind: \"group\", key: \"publish\" } },\n {\n when: { ids: [\"cm:share\", \"send-google-doc\", \"email-to-me\", \"conversation-share\"] },\n to: { kind: \"group\", key: \"share\" },\n },\n {\n when: { ids: [\"cm:attach\", \"attach-artifact-to-chat\", \"set-context-value\", \"pin-message\", \"notes-and-comments\"] },\n to: { kind: \"group\", key: \"organize\" },\n },\n {\n when: { ids: [\"cm:view-history\", \"edit-history\", \"fork-at-message\", \"fork-and-regenerate\"] },\n to: { kind: \"group\", key: \"history\" },\n },\n {\n when: { ids: [\"cm:compare\", \"compare-with-clipboard\", \"set-compare-base\", \"compare-with-base\"] },\n to: { kind: \"group\", key: \"compare\" },\n },\n {\n when: { ids: [\"cm:speak\", \"cm:listen\", \"tts-voice-settings\"], categories: [\"listen\"] },\n to: { kind: \"group\", key: \"listen\" },\n },\n {\n when: {\n ids: [\"cm:chat\", \"regenerate-response\", \"regenerate-latest\", \"continue-in-chat\", \"send-to-agent\", \"code-block-chart\"],\n idPrefixes: [\"cm:placement:\", \"cm:cat:\", \"cm:agents\"],\n categories: [\"ai\", \"ask\"],\n },\n to: { kind: \"group\", key: \"ai\" },\n },\n {\n when: {\n ids: [\n \"edit\",\n \"edit-and-resubmit\",\n \"open-fullscreen-editor\",\n \"delete-message\",\n \"code-block-open-in-editor\",\n \"code-block-apply-to-file\",\n \"code-block-run\",\n \"replace-selection\",\n \"insert-below\",\n \"conversation-rename\",\n \"conversation-duplicate\",\n ],\n },\n to: { kind: \"group\", key: \"edit\" },\n },\n { when: { ids: [\"thumbs-up\", \"thumbs-down\", \"submit-feedback\"], categories: [\"feedback\"] }, to: { kind: \"group\", key: \"feedback\" } },\n { when: { ids: [\"cm:admin\"], categories: [\"creator\", \"admin\"] }, to: { kind: \"group\", key: \"admin\" } },\n // Everything that makes a new thing in the app — checked after the rows\n // above because the registry files several of them under \"save\".\n { when: { ids: [\"cm:convert\", \"add-to-rulebook\"], categories: [\"save\", \"study\", \"export\"] }, to: { kind: \"group\", key: \"convert\" } },\n ],\n // A row no rule names stays at the top level where the package places it —\n // and the demo's Categories section lists it under \"No category yet\".\n fallback: { kind: \"top\" },\n};\n","// features/context-menu-v3/proposed/proposed-arrangement.ts\n//\n// THE PROPOSED RIGHT-CLICK MENU (Arman, 2026-10-02), applied to the rows the REAL registry\n// resolved for a real surface — nothing here invents a row. It merges two designs: the object-first\n// layout (icons, four rows, one Intelligence row, large and header-less) and the regroup demo's\n// \"what you get\" categories (`../regroup/proposed-grouping.ts`, reused here, not copied).\n//\n// [icons: ≤6, one action each, never a submenu — chosen by WHAT was clicked]\n// a thing (row, card) Copy · Share · Duplicate · Favorite · Download · Archive (red)\n// editable text Cut · Copy · Paste · Undo · Redo · Find\n// read-only text Copy · Read aloud · Find · Share\n// [Type to filter…]\n// 4 rows: the clicked thing's own actions (editable text: its edit actions)\n// More <thing> options ▸\n// Intelligence ▸ every AI entry, one row, on every menu\n// Save & share ▸ Copy as · Download · Convert to · Publish · Share — one block each\n// Organize ▸ Attach · Pin · History · Compare\n// Tools ▸ Read aloud · Quick Actions · Feedback · This page · Admin\n//\n// A page's own row that does what a universal row does merges into it (regroup's merge rule):\n// one Share, one Download, one Copy. Copy link folds into Share (its dialog carries the link).\n// A thing that brings its own Download/Export owns that verb outright: the universal page-text\n// file rows (PDF, Word, HTML, Markdown, print — regroup's \"download\" group) are dropped for it,\n// because they would save the menu's text, not the thing (a table exports CSV/XLSX, never a PDF\n// of its row label). `recordActionsOnly` cannot do this: it keeps Export by design. \"Save as PDF\n// Document\" files the same page text as a PDF, so it goes with them.\n// Applied only where a MenuRegroupContext passes `transform` (the demo); production is unchanged\n// until Arman approves.\n\nimport { Archive, Copy, Ellipsis, FolderTree, Share2, Wrench } from \"lucide-react\";\nimport { INTELLIGENCE_ICON } from \"@ai-matrx/icons/domain\";\nimport type { Action, ActionCategory, ActionSection, ClickTarget, ResolvedAction } from \"@ai-matrx/alchemy/actions\";\nimport { registerAlchemyIcon } from \"@ai-matrx/rich-content/utils/alchemy-icon-keys\";\nimport { actionLabel, matchRule } from \"../regroup/grouping\";\nimport { PROPOSED_MENU_GROUPING } from \"../regroup/proposed-grouping\";\n\nconst icon = (c: unknown) => registerAlchemyIcon(c);\n\nexport const STRIP_MAX = 6;\nexport const OWN_ROWS_MAX = 4;\n\nexport type ClickedKind = \"thing\" | \"editable\" | \"text\";\n\n/** One icon slot: the first resolved leaf that matches fills it. */\ninterface StripSlot {\n key: string;\n ids?: readonly string[] | undefined;\n /** Labels of the clicked thing's OWN rows (case-insensitive). */\n ownLabels?: readonly RegExp[] | undefined;\n}\n\nconst SLOT: Record<string, StripSlot> = {\n copy: { key: \"copy\", ids: [\"cm:copy\", \"copy\"], ownLabels: [/^copy( to clipboard)?$/i] },\n cut: { key: \"cut\", ids: [\"cm:cut\"] },\n paste: { key: \"paste\", ids: [\"cm:paste\"] },\n undo: { key: \"undo\", ids: [\"cm:undo\"] },\n redo: { key: \"redo\", ids: [\"cm:redo\"] },\n find: { key: \"find\", ids: [\"cm:find\"] },\n speak: { key: \"speak\", ids: [\"cm:speak\"] },\n share: { key: \"share\", ownLabels: [/^share\\b/i], ids: [\"cm:share\"] },\n duplicate: { key: \"duplicate\", ownLabels: [/^duplicate\\b/i, /^make a copy\\b/i] },\n favorite: { key: \"favorite\", ownLabels: [/favou?rite/i, /^(un)?star\\b/i] },\n download: { key: \"download\", ownLabels: [/^(export|download)\\b/i] },\n archive: { key: \"archive\", ownLabels: [/^archive\\b/i, /^delete\\b/i, /^move to trash\\b/i] },\n};\n\n/** The icons for each kind of click, in drawing order. */\nconst STRIP_FOR: Record<ClickedKind, readonly string[]> = {\n thing: [\"copy\", \"share\", \"duplicate\", \"favorite\", \"download\", \"archive\"],\n editable: [\"cut\", \"copy\", \"paste\", \"undo\", \"redo\", \"find\"],\n text: [\"copy\", \"speak\", \"find\", \"share\"],\n};\n\n/** Universal rows outside regroup's \"download\" group that also turn the page text into a file. */\nconst PAGE_TEXT_FILE_IDS = new Set([\"save-as-pdf\"]);\n\n/** The object's own Open row, and the Link verb that sits right after it. */\nconst OPEN_ROW = /^open( record)?$/i;\nconst LINK_A_RECORD = /^link a record/i;\n// The record's other own verbs (Merge, Split, Extract parent) are top-level beside Open and Link, outside the own-row cap.\nconst RECORD_VERBS = [/^merge with/i, /^split(…|\\.\\.\\.)?$/i, /^extract parent/i];\n\n/** Own rows that fold into a strip verb instead of sitting beside it. */\nconst FOLDS_INTO_SHARE = [/^copy link\\b/i, /^share link\\b/i];\n\n/** Regroup's \"what you get\" groups → the three rows under Intelligence. */\nconst SAVE_SHARE_GROUPS = [\"copy\", \"download\", \"convert\", \"publish\", \"share\"] as const;\nconst ORGANIZE_GROUPS = new Set([\"organize\", \"history\", \"compare\"]);\nconst AI_ORDER: readonly (string | RegExp)[] = [\n \"cm:chat\",\n \"cm:placement:ai-action\",\n \"cm:placement:bound-agent\",\n \"cm:agents\",\n \"cm:placement:user-tool\",\n \"cm:placement:organization-tool\",\n \"cm:placement:content-block\",\n /^send to (another )?agent/i,\n /^custom agent/i,\n];\nconst AI_LABELS = [/^summari[sz]e\\b/i, /^send to (another )?agent/i, /^custom agent/i];\n\n/**\n * The clicked thing's own rows: a surface's `extraSections` (engine ids `cm:x:<…>`, except the\n * engine's own page submenu `cm:x:surface`) or a section the surface lifted / named after itself.\n */\nfunction isOwn(action: Action): boolean {\n if (action.id.startsWith(\"cm:x:\") && !action.id.startsWith(\"cm:x:surface\")) return true;\n const s = action.section as (ActionSection & { kind?: string }) | undefined;\n return Boolean(s && (s.primary || s.kind === \"target\"));\n}\n\nexport function clickedKind(target: ClickTarget, resolved: readonly ResolvedAction[]): ClickedKind {\n if (!target.readOnly && resolved.some((r) => r.action.id === \"cm:paste\")) return \"editable\";\n if (resolved.some((r) => isOwn(r.action))) return \"thing\";\n return \"text\";\n}\n\nfunction submenu(id: string, label: string, category: ActionCategory, iconKey: string, children: readonly Action[], order = 0): ResolvedAction {\n const action: Action = {\n id: `proposed:${id}`,\n label,\n category,\n order,\n icon: iconKey,\n pending: (t) => children.some((c) => Boolean(c.expand && c.pending?.(t))),\n eligible: () => ({ status: \"available\" }),\n expand: async () => children,\n run: () => undefined,\n };\n return { action, eligibility: { status: \"available\" } };\n}\n\n/** A submenu row stripped of its old section (a heading the new home does not draw). */\nfunction plain(action: Action, extra: Partial<Action> = {}): Action {\n const { section: _section, ...rest } = action;\n void _section;\n return { ...rest, ...extra };\n}\n\nexport interface ProposedOptions {\n /** The clicked thing's name for \"More <noun> options\" (\"table\", \"quiz\", \"note\"). */\n noun: string;\n}\n\nexport function proposedArrangement(\n target: ClickTarget,\n resolved: readonly ResolvedAction[],\n { noun }: ProposedOptions,\n): ResolvedAction[] {\n const kind = clickedKind(target, resolved);\n const label = (r: ResolvedAction) => actionLabel(r.action, target);\n const groupOf = (r: ResolvedAction) => {\n const to = matchRule(PROPOSED_MENU_GROUPING, r.action, target)?.to;\n return to?.kind === \"group\" ? to.key : null;\n };\n const used = new Set<string>();\n\n // 0 · the thing's own Download/Export replaces the universal file rows (see header).\n const ownsDownload = resolved.some((r) => isOwn(r.action) && SLOT.download!.ownLabels!.some((re) => re.test(label(r))));\n if (ownsDownload) {\n for (const r of resolved) {\n if (!isOwn(r.action) && (groupOf(r) === \"download\" || PAGE_TEXT_FILE_IDS.has(r.action.id))) used.add(r.action.id);\n }\n }\n\n // 1 · the icon row.\n const strip: ResolvedAction[] = [];\n for (const key of STRIP_FOR[kind]) {\n if (strip.length >= STRIP_MAX) break;\n const slot = SLOT[key]!;\n const pick =\n resolved.find(\n (r) => !used.has(r.action.id) && !r.action.expand && isOwn(r.action) && slot.ownLabels?.some((re) => re.test(label(r))),\n ) ?? resolved.find((r) => !used.has(r.action.id) && !r.action.expand && slot.ids?.includes(r.action.id));\n if (!pick) continue;\n used.add(pick.action.id);\n // One verb, one icon: the page's own Share/Copy wins over the universal twin.\n if (key === \"share\") for (const r of resolved) if (r.action.id === \"cm:share\") used.add(r.action.id);\n if (key === \"copy\") for (const r of resolved) if (r.action.id === \"cm:copy\") used.add(r.action.id);\n strip.push({\n ...pick,\n action: plain(pick.action, {\n category: \"clipboard\",\n order: strip.length,\n ...(key === \"archive\" ? { destructive: true, icon: pick.action.icon ?? icon(Archive) } : {}),\n ...(key === \"copy\" && !pick.action.icon ? { icon: icon(Copy) } : {}),\n }),\n });\n }\n const hasShare = strip.some((r) => /^share\\b/i.test(label(r)));\n\n // 2 · the clicked thing's own rows (editable text: its edit actions and the editor's Save).\n // An own row that does what a universal outcome does (\"Export as Markdown\", \"Share link…\") joins\n // that outcome under Save & share instead (the regroup merge rule) — unless it already became an icon.\n const ownCandidates = resolved.filter((r) => {\n if (used.has(r.action.id)) return false;\n const g = groupOf(r);\n if (g && (SAVE_SHARE_GROUPS as readonly string[]).includes(g) && !(hasShare && FOLDS_INTO_SHARE.some((re) => re.test(label(r))))) return false;\n if (isOwn(r.action)) return true;\n return kind === \"editable\" && (groupOf(r) === \"edit\" || r.action.id === \"cm:save\" || r.action.id === \"cm:delete\");\n });\n // OPEN AND \"LINK A RECORD…\" LEAD THE OWN ROWS (CHAIR-UI-STORE item 3, 2026-10-03): on a store\n // record's cell or row the cell's rows (Paste, Clear cell, …) and the row's (Copy row, Insert, …)\n // filled the four top rows and \"Link a record…\" fell under \"More … options\", while every CRM row\n // shows Open and Link top-level. They are the record's own verbs, so they go first, in that order.\n const lead = (re: RegExp) => {\n const at = ownCandidates.findIndex((r) => re.test(label(r)));\n return at >= 0 ? ownCandidates.splice(at, 1)[0]! : null;\n };\n const openRow = lead(OPEN_ROW);\n const linkRow = lead(LINK_A_RECORD);\n const verbRows = RECORD_VERBS.map(lead).filter((r): r is ResolvedAction => r !== null);\n const leading = [openRow, linkRow, ...verbRows].filter((r): r is ResolvedAction => r !== null);\n const verbIds = new Set(verbRows.map((r) => r.action.id));\n let counted = 0;\n ownCandidates.unshift(...leading);\n const own: ResolvedAction[] = [];\n const more: Action[] = [];\n for (const r of ownCandidates) {\n used.add(r.action.id);\n const folds = hasShare && FOLDS_INTO_SHARE.some((re) => re.test(label(r)));\n if (!folds && (verbIds.has(r.action.id) || counted < OWN_ROWS_MAX) && !r.action.expand) {\n const destructive = SLOT.archive!.ownLabels!.some((re) => re.test(label(r)));\n if (!verbIds.has(r.action.id)) counted += 1;\n own.push({ ...r, action: plain(r.action, { category: \"edit\", order: own.length, ...(destructive ? { destructive: true } : {}) }) });\n } else {\n more.push(plain(r.action));\n }\n }\n const top: ResolvedAction[] = [...strip, ...own];\n if (more.length) top.push(submenu(\"more\", `More ${noun} options`, \"edit\", icon(Ellipsis), more, OWN_ROWS_MAX));\n\n // 3 · everything else, by what you get.\n const ai: Action[] = [];\n const saveShare = new Map<string, Action[]>();\n const organize: Action[] = [];\n const tools: Action[] = [];\n for (const r of resolved) {\n if (used.has(r.action.id)) continue;\n used.add(r.action.id);\n const g = groupOf(r);\n if (g === \"ai\" || r.action.category === \"ai\" || r.action.category === \"ask\" || AI_LABELS.some((re) => re.test(label(r)))) {\n ai.push(plain(r.action));\n } else if (g && (SAVE_SHARE_GROUPS as readonly string[]).includes(g)) {\n const list = saveShare.get(g) ?? [];\n list.push(plain(r.action));\n saveShare.set(g, list);\n } else if (g && ORGANIZE_GROUPS.has(g)) {\n organize.push(plain(r.action));\n } else {\n tools.push(plain(r.action));\n }\n }\n // Chat and the libraries first, then hand-offs, then spoken summaries.\n const aiRank = (a: Action) => {\n const i = AI_ORDER.findIndex((p) => (typeof p === \"string\" ? a.id === p || a.id.startsWith(p) : p.test(String(a.label))));\n return i === -1 ? AI_ORDER.length : i;\n };\n ai.sort((a, b) => aiRank(a) - aiRank(b));\n top.push(submenu(\"intelligence\", \"Intelligence\", \"ai\", icon(INTELLIGENCE_ICON), ai));\n\n // Save & share: one block per outcome, a divider between blocks.\n const saveShareRows: Action[] = [];\n for (const g of SAVE_SHARE_GROUPS) {\n const rows = saveShare.get(g) ?? [];\n rows.forEach((a, i) => saveShareRows.push(i === 0 && saveShareRows.length > 0 ? { ...a, startsGroup: true } : a));\n }\n if (saveShareRows.length) top.push(submenu(\"save-share\", \"Save & share\", \"app\", icon(Share2), saveShareRows));\n if (organize.length) top.push(submenu(\"organize\", \"Organize\", \"app\", icon(FolderTree), organize, 1));\n if (tools.length) top.push(submenu(\"tools\", \"Tools\", \"feedback\", icon(Wrench), tools));\n return top;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/aidream/aidream/apps/shared/context-menu/dist/engine.cjs","../src/engine/utils/build-application-scope.ts","../src/engine/utils/availability.ts","../src/engine/utils/open-context-menu.ts","../src/engine/utils/resolveMarkdownContext.ts","../src/engine/regroup/engine-rows.ts","../src/engine/regroup/proposed-grouping.ts","../src/engine/proposed/proposed-arrangement.ts"],"names":["icon","registerAlchemyIcon"],"mappings":"AAAA,6rBAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACzFA;AACE;AAAA,kGACK;AD2FP;AACA;AE9FA;AACE;AACA;AACA;AACA;AAAA,8EACK;AFgGP;AACA;AGlGO,SAAS,yBAAA,CAA0B,OAAA,EAAmC;AAC3E,EAAA,GAAA,CAAI,CAAC,OAAA,EAAS,MAAA;AAEd,EAAA,MAAM,KAAA,EAAO,OAAA,CAAQ,qBAAA,CAAsB,CAAA;AAC3C,EAAA,OAAA,CAAQ,aAAA;AAAA,IACN,IAAI,UAAA,CAAW,aAAA,EAAe;AAAA,MAC5B,OAAA,EAAS,IAAA;AAAA,MACT,UAAA,EAAY,IAAA;AAAA,MACZ,IAAA,mBAAM,OAAA,CAAQ,aAAA,CAAc,WAAA,UAAe,QAAA;AAAA,MAC3C,MAAA,EAAQ,CAAA;AAAA,MACR,OAAA,EAAS,CAAA;AAAA,MACT,OAAA,EAAS,IAAA,CAAK,KAAA,EAAO,IAAA,CAAK,MAAA,EAAQ,CAAA;AAAA,MAClC,OAAA,EAAS,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,OAAA,EAAS;AAAA,IACpC,CAAC;AAAA,EACH,CAAA;AACF;AHmGA;AACA;AIvHA;AACE;AAAA,kGACK;AJyHP;AACA;AK5GO,IAAM,yBAAA,EAAoD;AAAA,EAC/D,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,YAAY,CAAA;AAAA,EACtD,EAAE,EAAA,EAAI,QAAA,EAAU,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,YAAY,CAAA;AAAA,EACpD,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAAA,EACxD,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,YAAY,CAAA;AAAA,EACtD,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,YAAY,CAAA;AAAA,EACtD,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,gBAAA,EAAkB,QAAA,EAAU,YAAY,CAAA;AAAA,EAChE,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,YAAY,CAAA;AAAA,EACxD,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,YAAY,CAAA;AAAA,EAC1D,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,YAAY,CAAA;AAAA,EAC5D,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,YAAY,CAAA;AAAA,EACtD,EAAE,EAAA,EAAI,eAAA,EAAiB,KAAA,EAAO,YAAA,EAAc,QAAA,EAAU,OAAO,CAAA;AAAA,EAC7D,EAAE,EAAA,EAAI,qBAAA,EAAuB,KAAA,EAAO,+BAAA,EAA4B,QAAA,EAAU,OAAO,CAAA;AAAA,EACjF,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,MAAM,CAAA;AAAA,EAChD,EAAE,EAAA,EAAI,iBAAA,EAAmB,KAAA,EAAO,cAAA,EAAgB,QAAA,EAAU,UAAU,CAAA;AAAA,EACpE,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,MAAM,CAAA;AAAA,EACtD,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,OAAO,CAAA;AAAA,EACrD,EAAE,EAAA,EAAI,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,OAAO,CAAA;AAAA,EACvD,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzD,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAAA,EACpD,EAAE,EAAA,EAAI,wBAAA,EAA0B,KAAA,EAAO,YAAA,EAAc,QAAA,EAAU,KAAK,CAAA;AAAA,EACpE,EAAE,EAAA,EAAI,4BAAA,EAA8B,KAAA,EAAO,gBAAA,EAAkB,QAAA,EAAU,KAAK,CAAA;AAAA,EAC5E,EAAE,EAAA,EAAI,gCAAA,EAAkC,KAAA,EAAO,WAAA,EAAa,QAAA,EAAU,KAAK,CAAA;AAAA,EAC3E,EAAE,EAAA,EAAI,wBAAA,EAA0B,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,KAAK,CAAA;AAAA,EAClE,EAAE,EAAA,EAAI,2BAAA,EAA6B,KAAA,EAAO,2BAAA,EAA6B,QAAA,EAAU,KAAK,CAAA;AAAA,EACtF,EAAE,EAAA,EAAI,0BAAA,EAA4B,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,KAAK,CAAA;AAAA,EAClE,EAAE,EAAA,EAAI,kBAAA,EAAoB,KAAA,EAAO,eAAA,EAAiB,QAAA,EAAU,WAAW,CAAA;AAAA,EACvE,EAAE,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,OAAO,CAAA;AAAA,EACjD,EAAE,EAAA,EAAI,WAAA,EAAa,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,OAAO,CAAA;AAAA,EACrD,EAAE,EAAA,EAAI,UAAA,EAAY,KAAA,EAAO,aAAA,EAAe,QAAA,EAAU,QAAQ,CAAA;AAAA,EAC1D,EAAE,EAAA,EAAI,cAAA,EAAgB,KAAA,EAAO,uCAAA,EAAyC,QAAA,EAAU,eAAe;AACjG,CAAA;AAGO,IAAM,gCAAA,EAAqD,CAAC,eAAA,EAAiB,SAAA,EAAW,WAAA,EAAa,WAAW,CAAA;AL4GvH;AACA;AMpJA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA,2CACK;AACP,iFAAoC;AACpC,gDAA2B;AAG3B,IAAM,KAAA,EAAO,CAAC,CAAA,EAAA,GAAe,kDAAA,CAAqB,CAAA;AAE3C,IAAM,uBAAA,EAAuC;AAAA,EAClD,IAAA,EAAM,mCAAA;AAAA,EACN,UAAA,EAAY,CAAA;AAAA;AAAA;AAAA;AAAA,EAIZ,MAAA,EAAQ;AAAA,IACN,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,UAAA,EAAY,8EAAA,EAAgF,IAAA,EAAM,IAAA,CAAK,mBAAM,CAAA,EAAG,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,IACzK,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,UAAA,EAAY,gHAAA,EAAkH,IAAA,EAAM,IAAA,CAAK,iBAAI,CAAA,EAAG,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,IACzM,EAAE,GAAA,EAAK,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,UAAA,EAAY,oFAAA,EAAiF,IAAA,EAAM,IAAA,CAAK,qBAAQ,CAAA,EAAG,QAAA,EAAU,QAAA,EAAU,KAAA,EAAO,EAAE,CAAA;AAAA,IACtL,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,YAAA,EAAc,UAAA,EAAY,uHAAA,EAAyH,IAAA,EAAM,IAAA,CAAK,2BAAc,CAAA,EAAG,QAAA,EAAU,MAAA,EAAQ,KAAA,EAAO,EAAE,CAAA;AAAA,IACnO,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,UAAA,EAAY,8FAAA,EAAgG,IAAA,EAAM,IAAA,CAAK,kBAAK,CAAA,EAAG,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,EAAE,CAAA;AAAA,IAC/L,EAAE,GAAA,EAAK,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,UAAA,EAAY,0FAAA,EAA4F,IAAA,EAAM,IAAA,CAAK,mBAAM,CAAA,EAAG,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,EAAE,CAAA;AAAA,IACxL,EAAE,GAAA,EAAK,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,UAAA,EAAY,2FAAA,EAA6F,IAAA,EAAM,IAAA,CAAK,iBAAI,CAAA,EAAG,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,EAAE,CAAA;AAAA,IAC/L,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,UAAA,EAAY,8DAAA,EAAgE,IAAA,EAAM,IAAA,CAAK,oBAAO,CAAA,EAAG,QAAA,EAAU,SAAA,EAAW,KAAA,EAAO,EAAE,CAAA;AAAA,IACnK,EAAE,GAAA,EAAK,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,UAAA,EAAY,sEAAA,EAAwE,IAAA,EAAM,IAAA,CAAK,kBAAU,CAAA,EAAG,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,EAAE,CAAA;AAAA,IAC/J,EAAE,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,YAAA,EAAc,UAAA,EAAY,mEAAA,EAAqE,IAAA,EAAM,IAAA,CAAK,oBAAO,CAAA,EAAG,QAAA,EAAU,QAAA,EAAU,KAAA,EAAO,EAAE,CAAA;AAAA,IACzK,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,UAAA,EAAY,6EAAA,EAA+E,IAAA,EAAM,IAAA,CAAK,6BAAgB,CAAA,EAAG,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,EAAE,CAAA;AAAA,IACzL,EAAE,GAAA,EAAK,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,UAAA,EAAY,2DAAA,EAA6D,IAAA,EAAM,IAAA,CAAK,qBAAQ,CAAA,EAAG,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,EAAE,CAAA;AAAA,IACpK,EAAE,GAAA,EAAK,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,UAAA,EAAY,oFAAA,EAAsF,IAAA,EAAM,IAAA,CAAK,mBAAM,CAAA,EAAG,QAAA,EAAU,OAAA,EAAS,KAAA,EAAO,EAAE;AAAA,EACpL,CAAA;AAAA,EACA,KAAA,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,wBAAwB,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,OAAO,CAAA,EAAG,YAAA,EAAc,CAAC,SAAA,EAAW,MAAM,EAAE,CAAA;AAAA,IAC7H,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,UAAU,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,OAAO,EAAE,CAAA;AAAA,IAC5E;AAAA,MACE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,mCAAmC,EAAE,CAAA;AAAA,MAC7D,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,WAAW,CAAA;AAAA,MACrC,YAAA,EAAc,CAAC,cAAc;AAAA,IAC/B,CAAA;AAAA,IACA,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,uBAAA,EAAyB,WAAW,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,WAAW,EAAE,CAAA;AAAA,IAC1G,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,wBAAmB,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,QAAQ,CAAA,EAAG,YAAA,EAAc,CAAC,UAAU,EAAE,CAAA;AAAA,IAClH,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,wBAAwB,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,QAAQ,EAAE,CAAA;AAAA,IAC3F,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,aAAa,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAU,EAAE,CAAA;AAAA,IAClF,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,gEAAgE,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAU,EAAE,CAAA;AAAA,IACrI,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,6CAA6C,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,WAAW,EAAE,CAAA;AAAA,IACnH,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,yBAAyB,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,SAAS,EAAE,CAAA;AAAA,IAC7F,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,aAAa,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAU,EAAE,CAAA;AAAA,IAClF,EAAE,IAAA,EAAM,EAAE,aAAA,EAAe,CAAC,QAAQ,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,MAAM,CAAA,EAAG,YAAA,EAAc,CAAC,SAAS,EAAE,CAAA;AAAA;AAAA,IAEtF;AAAA,MACE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,yBAAA,EAA2B,4BAAA,EAA8B,6BAAA,EAA+B,0BAAA,EAA4B,wBAAwB,EAAE,CAAA;AAAA,MAC5J,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,OAAO;AAAA,IACnC,CAAA;AAAA,IACA,EAAE,IAAA,EAAM,EAAE,UAAA,EAAY,CAAC,wBAAwB,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,WAAW,EAAE,CAAA;AAAA,IAC3F;AAAA,MACE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,4BAAA,EAA8B,8BAAA,EAAgC,0BAA0B,EAAE,CAAA;AAAA,MACxG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAU;AAAA,IACtC,CAAA;AAAA,IACA,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,oBAAA,EAAsB,0BAA0B,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,QAAQ,EAAE,CAAA;AAAA,IACzG,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,+BAA+B,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK,EAAE,CAAA;AAAA,IACrF,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,qBAAA,EAAuB,wBAAwB,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,OAAO,EAAE,CAAA;AAAA;AAAA;AAAA,IAIvG,EAAE,IAAA,EAAM,EAAE,OAAA,EAAS,KAAK,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,aAAa,EAAE,CAAA;AAAA;AAAA,IAEtD;AAAA,MACE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,SAAA,EAAW,QAAA,EAAU,UAAA,EAAY,SAAA,EAAW,SAAA,EAAW,SAAA,EAAW,MAAA,EAAQ,eAAe,EAAE,CAAA;AAAA,MACzG,EAAA,EAAI,EAAE,IAAA,EAAM,MAAM;AAAA,IACpB,CAAA;AAAA;AAAA;AAAA,IAGA,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,kBAAA,EAAoB,SAAA,EAAW,WAAW,CAAA,EAAG,UAAA,EAAY,CAAC,cAAc,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,MAAM,EAAE,CAAA;AAAA,IAEjH;AAAA,MACE,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK,CAAC,YAAA,EAAc,SAAA,EAAW,qBAAA,EAAuB,gBAAA,EAAkB,wBAAwB,CAAA;AAAA,QAChG,UAAA,EAAY,CAAC,MAAM;AAAA,MACrB,CAAA;AAAA,MACA,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,OAAO;AAAA,IACnC,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,WAAA,EAAa,cAAA,EAAgB,cAAA,EAAgB,eAAA,EAAiB,eAAA,EAAiB,OAAA,EAAS,YAAY,EAAE,CAAA;AAAA,MACpH,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,WAAW;AAAA,IACvC,CAAA;AAAA,IACA,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,cAAA,EAAgB,eAAe,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAU,EAAE,CAAA;AAAA,IAC1F;AAAA,MACE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,UAAA,EAAY,iBAAA,EAAmB,aAAA,EAAe,oBAAoB,EAAE,CAAA;AAAA,MAClF,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,QAAQ;AAAA,IACpC,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,WAAA,EAAa,yBAAA,EAA2B,mBAAA,EAAqB,aAAA,EAAe,oBAAoB,EAAE,CAAA;AAAA,MAChH,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,WAAW;AAAA,IACvC,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,iBAAA,EAAmB,cAAA,EAAgB,iBAAA,EAAmB,qBAAqB,EAAE,CAAA;AAAA,MAC3F,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAU;AAAA,IACtC,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,YAAA,EAAc,wBAAA,EAA0B,kBAAA,EAAoB,mBAAmB,EAAE,CAAA;AAAA,MAC/F,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAU;AAAA,IACtC,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,UAAA,EAAY,WAAA,EAAa,oBAAoB,CAAA,EAAG,UAAA,EAAY,CAAC,QAAQ,EAAE,CAAA;AAAA,MACrF,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,SAAS;AAAA,IACrC,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK,CAAC,SAAA,EAAW,qBAAA,EAAuB,mBAAA,EAAqB,kBAAA,EAAoB,eAAA,EAAiB,kBAAkB,CAAA;AAAA,QACpH,UAAA,EAAY,CAAC,eAAA,EAAiB,SAAA,EAAW,WAAW,CAAA;AAAA,QACpD,UAAA,EAAY,CAAC,IAAA,EAAM,KAAK;AAAA,MAC1B,CAAA;AAAA,MACA,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,KAAK;AAAA,IACjC,CAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK;AAAA,UACH,MAAA;AAAA,UACA,mBAAA;AAAA,UACA,wBAAA;AAAA,UACA,gBAAA;AAAA,UACA,2BAAA;AAAA,UACA,0BAAA;AAAA,UACA,gBAAA;AAAA,UACA,mBAAA;AAAA,UACA,cAAA;AAAA,UACA,qBAAA;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAA;AAAA,MACA,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,OAAO;AAAA,IACnC,CAAA;AAAA,IACA,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,WAAA,EAAa,aAAA,EAAe,iBAAiB,CAAA,EAAG,UAAA,EAAY,CAAC,UAAU,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,WAAW,EAAE,CAAA;AAAA,IACnI,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,UAAU,CAAA,EAAG,UAAA,EAAY,CAAC,SAAA,EAAW,OAAO,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,QAAQ,EAAE,CAAA;AAAA;AAAA;AAAA,IAGrG,EAAE,IAAA,EAAM,EAAE,GAAA,EAAK,CAAC,YAAA,EAAc,iBAAiB,CAAA,EAAG,UAAA,EAAY,CAAC,MAAA,EAAQ,OAAA,EAAS,QAAQ,EAAE,CAAA,EAAG,EAAA,EAAI,EAAE,IAAA,EAAM,OAAA,EAAS,GAAA,EAAK,UAAU,EAAE;AAAA,EACrI,CAAA;AAAA;AAAA;AAAA,EAGA,QAAA,EAAU,EAAE,IAAA,EAAM,MAAM;AAC1B,CAAA;ANiJA;AACA;AO/RA;AACA;AAEA;AAIA,IAAMA,MAAAA,EAAO,CAAC,CAAA,EAAA,GAAeC,kDAAAA,CAAqB,CAAA;AAE3C,IAAM,UAAA,EAAY,CAAA;AAClB,IAAM,aAAA,EAAe,CAAA;AAY5B,IAAM,KAAA,EAAkC;AAAA,EACtC,IAAA,EAAM,EAAE,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,CAAC,SAAA,EAAW,MAAM,CAAA,EAAG,SAAA,EAAW,CAAC,yBAAyB,EAAE,CAAA;AAAA,EACtF,GAAA,EAAK,EAAE,GAAA,EAAK,KAAA,EAAO,GAAA,EAAK,CAAC,QAAQ,EAAE,CAAA;AAAA,EACnC,KAAA,EAAO,EAAE,GAAA,EAAK,OAAA,EAAS,GAAA,EAAK,CAAC,UAAU,EAAE,CAAA;AAAA,EACzC,IAAA,EAAM,EAAE,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,CAAC,SAAS,EAAE,CAAA;AAAA,EACtC,IAAA,EAAM,EAAE,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,CAAC,SAAS,EAAE,CAAA;AAAA,EACtC,IAAA,EAAM,EAAE,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,CAAC,SAAS,EAAE,CAAA;AAAA,EACtC,KAAA,EAAO,EAAE,GAAA,EAAK,OAAA,EAAS,GAAA,EAAK,CAAC,UAAU,EAAE,CAAA;AAAA,EACzC,KAAA,EAAO,EAAE,GAAA,EAAK,OAAA,EAAS,SAAA,EAAW,CAAC,WAAW,CAAA,EAAG,GAAA,EAAK,CAAC,UAAU,EAAE,CAAA;AAAA,EACnE,SAAA,EAAW,EAAE,GAAA,EAAK,WAAA,EAAa,SAAA,EAAW,CAAC,eAAA,EAAiB,iBAAiB,EAAE,CAAA;AAAA,EAC/E,QAAA,EAAU,EAAE,GAAA,EAAK,UAAA,EAAY,SAAA,EAAW,CAAC,aAAA,EAAe,eAAe,EAAE,CAAA;AAAA,EACzE,QAAA,EAAU,EAAE,GAAA,EAAK,UAAA,EAAY,SAAA,EAAW,CAAC,uBAAuB,EAAE,CAAA;AAAA,EAClE,OAAA,EAAS,EAAE,GAAA,EAAK,SAAA,EAAW,SAAA,EAAW,CAAC,aAAA,EAAe,YAAA,EAAc,mBAAmB,EAAE;AAC3F,CAAA;AAGA,IAAM,UAAA,EAAoD;AAAA,EACxD,KAAA,EAAO,CAAC,MAAA,EAAQ,OAAA,EAAS,WAAA,EAAa,UAAA,EAAY,UAAA,EAAY,SAAS,CAAA;AAAA,EACvE,QAAA,EAAU,CAAC,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA;AAAA,EACzD,IAAA,EAAM,CAAC,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,OAAO;AACzC,CAAA;AAGA,IAAM,mBAAA,kBAAqB,IAAI,GAAA,CAAI,CAAC,aAAa,CAAC,CAAA;AAGlD,IAAM,SAAA,EAAW,mBAAA;AACjB,IAAM,cAAA,EAAgB,iBAAA;AAEtB,IAAM,aAAA,EAAe,CAAC,cAAA,EAAgB,qBAAA,EAAuB,kBAAkB,CAAA;AAG/E,IAAM,iBAAA,EAAmB,CAAC,eAAA,EAAiB,gBAAgB,CAAA;AAG3D,IAAM,kBAAA,EAAoB,CAAC,MAAA,EAAQ,UAAA,EAAY,SAAA,EAAW,SAAA,EAAW,OAAO,CAAA;AAC5E,IAAM,gBAAA,kBAAkB,IAAI,GAAA,CAAI,CAAC,UAAA,EAAY,SAAA,EAAW,SAAS,CAAC,CAAA;AAClE,IAAM,SAAA,EAAyC;AAAA,EAC7C,SAAA;AAAA,EACA,wBAAA;AAAA,EACA,0BAAA;AAAA,EACA,WAAA;AAAA,EACA,wBAAA;AAAA,EACA,gCAAA;AAAA,EACA,4BAAA;AAAA,EACA,4BAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,UAAA,EAAY,CAAC,kBAAA,EAAoB,4BAAA,EAA8B,gBAAgB,CAAA;AAMrF,SAAS,KAAA,CAAM,MAAA,EAAyB;AACtC,EAAA,GAAA,CAAI,MAAA,CAAO,EAAA,CAAG,UAAA,CAAW,OAAO,EAAA,GAAK,CAAC,MAAA,CAAO,EAAA,CAAG,UAAA,CAAW,cAAc,CAAA,EAAG,OAAO,IAAA;AACnF,EAAA,MAAM,EAAA,EAAI,MAAA,CAAO,OAAA;AACjB,EAAA,OAAO,OAAA,CAAQ,EAAA,GAAA,CAAM,CAAA,CAAE,QAAA,GAAW,CAAA,CAAE,KAAA,IAAS,QAAA,CAAS,CAAA;AACxD;AAEO,SAAS,WAAA,CAAY,MAAA,EAAqB,QAAA,EAAkD;AACjG,EAAA,GAAA,CAAI,CAAC,MAAA,CAAO,SAAA,GAAY,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,EAAA,GAAM,CAAA,CAAE,MAAA,CAAO,GAAA,IAAO,UAAU,CAAA,EAAG,OAAO,UAAA;AACjF,EAAA,GAAA,CAAI,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,EAAA,GAAM,KAAA,CAAM,CAAA,CAAE,MAAM,CAAC,CAAA,EAAG,OAAO,OAAA;AAClD,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,OAAA,CAAQ,EAAA,EAAY,KAAA,EAAe,QAAA,EAA0B,OAAA,EAAiB,QAAA,EAA6B,MAAA,EAAQ,CAAA,EAAmB;AAC7I,EAAA,MAAM,OAAA,EAAiB;AAAA,IACrB,EAAA,EAAI,CAAA,SAAA,EAAY,EAAE,CAAA,CAAA;AAClB,IAAA;AACA,IAAA;AACA,IAAA;AACM,IAAA;AACU,IAAA;AACG,IAAA;AACX,IAAA;AACG,IAAA;AACb,EAAA;AACiB,EAAA;AACnB;AAG+B;AACZ,EAAA;AACZ,EAAA;AACgB,EAAA;AACvB;AAOgB;AAKD,EAAA;AACwB,EAAA;AACpB,EAAA;AACJ,IAAA;AACA,IAAA;AACb,EAAA;AACa,EAAA;AAGQ,EAAA;AACH,EAAA;AACA,IAAA;AACD,MAAA;AACf,IAAA;AACF,EAAA;AAGiC,EAAA;AACf,EAAA;AACN,IAAA;AACQ,IAAA;AAEhB,IAAA;AACmB,MAAA;AACA,IAAA;AACV,IAAA;AACG,IAAA;AAEF,IAAA;AAAyB,MAAA;AAA8D,IAAA;AACvF,IAAA;AAAwB,MAAA;AAA6D,IAAA;AACtF,IAAA;AACN,MAAA;AACW,MAAA;AACF,QAAA;AACG,QAAA;AACD,QAAA;AACA,QAAA;AACb,MAAA;AACF,IAAA;AACH,EAAA;AACiB,EAAA;AAKX,EAAA;AACW,IAAA;AACI,IAAA;AACT,IAAA;AACQ,IAAA;AACF,IAAA;AACjB,EAAA;AAK4B,EAAA;AAChB,IAAA;AACM,IAAA;AACnB,EAAA;AACqB,EAAA;AACA,EAAA;AACJ,EAAA;AACA,EAAA;AACG,EAAA;AACN,EAAA;AACA,EAAA;AACiB,EAAA;AACP,EAAA;AACR,EAAA;AACI,IAAA;AACJ,IAAA;AACC,IAAA;AACP,MAAA;AACW,MAAA;AACA,MAAA;AACZ,IAAA;AACW,MAAA;AAClB,IAAA;AACF,EAAA;AACkC,EAAA;AACb,EAAA;AAGC,EAAA;AACJ,EAAA;AACU,EAAA;AACH,EAAA;AACT,EAAA;AACC,IAAA;AACG,IAAA;AACC,IAAA;AACD,IAAA;AACA,MAAA;AACD,IAAA;AACF,MAAA;AACG,MAAA;AACC,MAAA;AACH,IAAA;AACA,MAAA;AACT,IAAA;AACY,MAAA;AACnB,IAAA;AACF,EAAA;AAEgB,EAAA;AACK,IAAA;AACD,IAAA;AACpB,EAAA;AACkB,EAAA;AACD,EAAA;AAGX,EAAA;AACU,EAAA;AACD,IAAA;AACI,IAAA;AACnB,EAAA;AACkB,EAAA;AACG,EAAA;AACH,EAAA;AACX,EAAA;AACT;APoOuB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/aidream/aidream/apps/shared/context-menu/dist/engine.cjs","sourcesContent":[null,"// Named, never `export *`: the bundler (esbuild) cannot see through a nested\n// `export * from \"<external>\"`, so the names went missing from the ESM entry and\n// every internal reader went through a runtime namespace copy (a TDZ under ts-jest).\nexport {\n buildApplicationScopeFromMenuContext,\n} from \"@ai-matrx/chat/context-menu/utils/build-application-scope\";\n","// Named, never `export *`: the bundler (esbuild) cannot see through a nested\n// `export * from \"<external>\"`, so the names went missing from the ESM entry and\n// every internal reader went through a runtime namespace copy (a TDZ under ts-jest).\nexport {\n applyAvailability,\n needs,\n unavailableHere,\n withAvailability,\n} from \"@ai-matrx/chat/context-menu/utils/availability\";\nexport type {\n AvailabilityMap,\n} from \"@ai-matrx/chat/context-menu/utils/availability\";\n","/**\n * Opens the canonical context menu from an explicit overflow control.\n *\n * Touch surfaces cannot rely on a discoverable right-click. Dispatching the\n * same bubbling event keeps the overflow button on the exact desktop/mobile\n * ContextMenuV3 path instead of creating a second action menu.\n */\nexport function openContextMenuForElement(element: HTMLElement | null): void {\n if (!element) return;\n\n const rect = element.getBoundingClientRect();\n element.dispatchEvent(\n new MouseEvent(\"contextmenu\", {\n bubbles: true,\n cancelable: true,\n view: element.ownerDocument.defaultView ?? window,\n button: 2,\n buttons: 2,\n clientX: rect.left + rect.width / 2,\n clientY: rect.top + rect.height / 2,\n }),\n );\n}\n","// Named, never `export *`: the bundler (esbuild) cannot see through a nested\n// `export * from \"<external>\"`, so the names went missing from the ESM entry and\n// every internal reader went through a runtime namespace copy (a TDZ under ts-jest).\nexport {\n resolveMarkdownContext,\n} from \"@ai-matrx/chat/context-menu/utils/resolveMarkdownContext\";\nexport type {\n MarkdownMenuContext,\n} from \"@ai-matrx/chat/context-menu/utils/resolveMarkdownContext\";\n","// features/context-menu-v3/regroup/engine-rows.ts\n//\n// The rows the context-menu ENGINE itself can contribute (model/menu-model.ts),\n// as the ids and categories `alchemy-provider.ts` gives them (`cm:<node id>`).\n// Together with the rich-document registry (`getAllActions()`) this is the full\n// inventory of universal menu rows; a surface's own rows (its extraSections)\n// are \"the page's own actions\" and are not listed here.\n//\n// Kept in step with menu-model.ts by hand; the regroup demo flags any `cm:` row\n// a live menu resolves that is missing here (\"not in the inventory\").\n\nimport type { ActionCategory } from \"@ai-matrx/alchemy/actions\";\n\nexport interface InventoryRow {\n id: string;\n label: string;\n category: ActionCategory;\n}\n\nexport const CONTEXT_MENU_ENGINE_ROWS: readonly InventoryRow[] = [\n { id: \"cm:copy\", label: \"Copy\", category: \"clipboard\" },\n { id: \"cm:cut\", label: \"Cut\", category: \"clipboard\" },\n { id: \"cm:paste\", label: \"Paste\", category: \"clipboard\" },\n { id: \"cm:undo\", label: \"Undo\", category: \"clipboard\" },\n { id: \"cm:redo\", label: \"Redo\", category: \"clipboard\" },\n { id: \"cm:find\", label: \"Find & Replace\", category: \"clipboard\" },\n { id: \"cm:speak\", label: \"Speak\", category: \"clipboard\" },\n { id: \"cm:listen\", label: \"Listen\", category: \"clipboard\" },\n { id: \"cm:copy-as\", label: \"Copy as\", category: \"clipboard\" },\n { id: \"cm:json\", label: \"JSON\", category: \"clipboard\" },\n { id: \"cm:select-all\", label: \"Select All\", category: \"edit\" },\n { id: \"cm:insert-reference\", label: \"Insert / Copy reference…\", category: \"edit\" },\n { id: \"cm:chat\", label: \"Chat\", category: \"app\" },\n { id: \"cm:view-history\", label: \"View History\", category: \"history\" },\n { id: \"cm:compare\", label: \"Compare\", category: \"app\" },\n { id: \"cm:export\", label: \"Export\", category: \"save\" },\n { id: \"cm:convert\", label: \"Convert\", category: \"save\" },\n { id: \"cm:attach\", label: \"Attach To\", category: \"share\" },\n { id: \"cm:share\", label: \"Share\", category: \"share\" },\n { id: \"cm:placement:ai-action\", label: \"AI Actions\", category: \"ai\" },\n { id: \"cm:placement:content-block\", label: \"Content blocks\", category: \"ai\" },\n { id: \"cm:placement:organization-tool\", label: \"Org Items\", category: \"ai\" },\n { id: \"cm:placement:user-tool\", label: \"My Items\", category: \"ai\" },\n { id: \"cm:placement:quick-action\", label: \"Quick actions (placement)\", category: \"ai\" },\n { id: \"cm:placement:bound-agent\", label: \"Agents\", category: \"ai\" },\n { id: \"cm:quick-actions\", label: \"Quick Actions\", category: \"feedback\" },\n { id: \"cm:save\", label: \"Save\", category: \"edit\" },\n { id: \"cm:delete\", label: \"Delete\", category: \"edit\" },\n { id: \"cm:admin\", label: \"Admin Tools\", category: \"admin\" },\n { id: \"cm:x:surface\", label: \"This page (location, context, agents)\", category: \"surface-info\" },\n];\n\n/** Engine rows whose ids are generated per library (one per agent category or placement). */\nexport const CONTEXT_MENU_ENGINE_ID_PREFIXES: readonly string[] = [\"cm:placement:\", \"cm:cat:\", \"cm:agents\", \"cm:entry:\"];\n","// features/context-menu-v3/regroup/proposed-grouping.ts\n//\n// THE PROPOSED GROUPING, v2 (2026-09-28, after Arman's review of v1: \"we should\n// distinguish between a few things better: Copy (as various things), Download\n// (becomes some sort of external file), Convert (becomes something different in\n// our system…), Action (Publish HTML, etc.)… we still need more categories…\n// the more of [sub-menus] we do, the better\").\n//\n// Every submenu is named by its OUTCOME — what the person gets — in one plain\n// word. Applied ONLY where a MenuRegroupContext asks for it (the regroup demo);\n// no production menu uses it until Arman approves. Plain data over the\n// registry's own action ids and categories: the rows themselves come from the\n// registry, never from this file.\n\nimport {\n ArrowRightLeft,\n Copy,\n Download,\n GitCompareArrows,\n Globe,\n History,\n Pencil,\n Share2,\n Shield,\n Tags,\n ThumbsUp,\n Volume2,\n} from \"lucide-react\";\nimport { registerAlchemyIcon } from \"@ai-matrx/rich-content/utils/alchemy-icon-keys\";\nimport { AGENT_ICON } from \"@ai-matrx/icons/domain\";\nimport type { MenuGrouping } from \"./grouping\";\n\nconst icon = (c: unknown) => registerAlchemyIcon(c);\n\nexport const PROPOSED_MENU_GROUPING: MenuGrouping = {\n name: \"v2 — grouped by what you get\",\n minMembers: 2,\n // `category` + `order` place each submenu row among the others (the package's\n // group order): Edit, Copy, Download, Convert to, Publish, Share, Organize,\n // History, AI, Read aloud, Compare, Feedback, Admin.\n groups: [\n { key: \"edit\", label: \"Edit\", definition: \"Change this item where it is: edit, rewrite, open in an editor, run, delete.\", icon: icon(Pencil), category: \"edit\", order: 0 },\n { key: \"copy\", label: \"Copy\", definition: \"It lands on your clipboard, in the form you pick: text, Markdown, rich text, HTML, a table, JSON, a reference.\", icon: icon(Copy), category: \"copy\", order: 0 },\n { key: \"download\", label: \"Download\", definition: \"It becomes a file outside the app: Markdown, PDF, Word, HTML — or a printout.\", icon: icon(Download), category: \"export\", order: 0 },\n { key: \"convert\", label: \"Convert to\", definition: \"It becomes a new thing inside the app: a note, document, task, file, flashcards, quiz, template, contact, data table.\", icon: icon(ArrowRightLeft), category: \"save\", order: 0 },\n { key: \"publish\", label: \"Publish\", definition: \"It goes out to the world: a public web page or published HTML anyone with the link can open.\", icon: icon(Globe), category: \"share\", order: 0 },\n { key: \"share\", label: \"Share\", definition: \"It goes to specific people or places: share with someone, send to Google Docs, email it.\", icon: icon(Share2), category: \"share\", order: 1 },\n { key: \"organize\", label: \"Organize\", definition: \"It stays what it is, but gets filed: attached to a project or context, pinned, annotated.\", icon: icon(Tags), category: \"history\", order: 0 },\n { key: \"history\", label: \"History\", definition: \"Earlier versions: view the history, fork from a point in it.\", icon: icon(History), category: \"history\", order: 1 },\n { key: \"ai\", label: \"AI\", definition: \"An AI works on it: ask, chat, run an agent or AI action, regenerate.\", icon: icon(AGENT_ICON), category: \"ai\", order: 0 },\n { key: \"listen\", label: \"Read aloud\", definition: \"You hear it: read it aloud, a spoken summary, the voice settings.\", icon: icon(Volume2), category: \"listen\", order: 0 },\n { key: \"compare\", label: \"Compare\", definition: \"You see it side by side with something else: the clipboard or a saved base.\", icon: icon(GitCompareArrows), category: \"study\", order: 0 },\n { key: \"feedback\", label: \"Feedback\", definition: \"Tell us how it went: thumbs up or down, report a problem.\", icon: icon(ThumbsUp), category: \"feedback\", order: 1 },\n { key: \"admin\", label: \"Admin\", definition: \"Creator and admin tools: inspect, debug, server-side message surgery. Admins only.\", icon: icon(Shield), category: \"admin\", order: 0 },\n ],\n rules: [\n // ── The page's own rows that DUPLICATE a category (Arman, 2026-09-28: \"the\n // more of that we do, the better\"): they move into that category, and merge\n // into the universal row that does the same thing when it is in the menu.\n // Only genuinely unique record actions (Open, Take, Duplicate, Move to Trash…)\n // stay at the top.\n { when: { pageOwnLabels: [\"^copy( to clipboard)?$\"] }, to: { kind: \"group\", key: \"copy\" }, mergeWithIds: [\"cm:copy\", \"copy\"] },\n { when: { pageOwnLabels: [\"^copy\\\\b\"] }, to: { kind: \"group\", key: \"copy\" } },\n {\n when: { pageOwnLabels: [\"^(export|download)( as)? markdown\"] },\n to: { kind: \"group\", key: \"download\" },\n mergeWithIds: [\"save-as-file\"],\n },\n { when: { pageOwnLabels: [\"^(export|download)\\\\b\", \"^print\\\\b\"] }, to: { kind: \"group\", key: \"download\" } },\n { when: { pageOwnLabels: [\"^share( link)?…?$\"] }, to: { kind: \"group\", key: \"share\" }, mergeWithIds: [\"cm:share\"] },\n { when: { pageOwnLabels: [\"^(share|send|email)\\\\b\"] }, to: { kind: \"group\", key: \"share\" } },\n { when: { pageOwnLabels: [\"^publish\\\\b\"] }, to: { kind: \"group\", key: \"publish\" } },\n { when: { pageOwnLabels: [\"^(convert|save to|save as|create (a )?(task|note|document))\\\\b\"] }, to: { kind: \"group\", key: \"convert\" } },\n { when: { pageOwnLabels: [\"^(move to folder|add tags?|tags?|attach)\\\\b\"] }, to: { kind: \"group\", key: \"organize\" } },\n { when: { pageOwnLabels: [\"^(read aloud|listen)\\\\b\"] }, to: { kind: \"group\", key: \"listen\" } },\n { when: { pageOwnLabels: [\"^compare\\\\b\"] }, to: { kind: \"group\", key: \"compare\" } },\n { when: { pageOwnLabels: [\"^save$\"] }, to: { kind: \"top\" }, mergeWithIds: [\"cm:save\"] },\n // A conversation's own rows, by id (their labels are computed at open).\n {\n when: { ids: [\"conversation-copy-plain\", \"conversation-copy-markdown\", \"conversation-copy-formatted\", \"conversation-copy-for-ai\", \"conversation-copy-link\"] },\n to: { kind: \"group\", key: \"copy\" },\n },\n { when: { idPrefixes: [\"conversation-download-\"] }, to: { kind: \"group\", key: \"download\" } },\n {\n when: { ids: [\"conversation-save-to-notes\", \"conversation-create-document\", \"conversation-create-task\"] },\n to: { kind: \"group\", key: \"convert\" },\n },\n { when: { ids: [\"conversation-share\", \"conversation-email-to-me\"] }, to: { kind: \"group\", key: \"share\" } },\n { when: { ids: [\"conversation-open-in-new-chat\"] }, to: { kind: \"group\", key: \"ai\" } },\n { when: { ids: [\"conversation-rename\", \"conversation-duplicate\"] }, to: { kind: \"group\", key: \"edit\" } },\n\n // The clicked thing's remaining own rows (a quiz row's Open / Take / Archive,\n // a note's Duplicate / Move to Trash) come first, as they are.\n { when: { pageOwn: true }, to: { kind: \"page-first\" } },\n // The universal verb strip (icons across the top) stays exactly as it is.\n {\n when: { ids: [\"cm:copy\", \"cm:cut\", \"cm:paste\", \"cm:undo\", \"cm:redo\", \"cm:find\", \"copy\", \"cm:select-all\"] },\n to: { kind: \"top\" },\n },\n // Quick Actions is already one submenu of quick tools; the page submenu is last;\n // an editor's own Save / Delete stay one click away.\n { when: { ids: [\"cm:quick-actions\", \"cm:save\", \"cm:delete\"], categories: [\"surface-info\"] }, to: { kind: \"top\" } },\n\n {\n when: {\n ids: [\"cm:copy-as\", \"cm:json\", \"cm:insert-reference\", \"copy-html-page\", \"conversation-copy-link\"],\n categories: [\"copy\"],\n },\n to: { kind: \"group\", key: \"copy\" },\n },\n {\n when: { ids: [\"cm:export\", \"save-as-file\", \"download-pdf\", \"download-docx\", \"download-html\", \"print\", \"full-print\"] },\n to: { kind: \"group\", key: \"download\" },\n },\n { when: { ids: [\"html-preview\", \"share-webpage\"] }, to: { kind: \"group\", key: \"publish\" } },\n {\n when: { ids: [\"cm:share\", \"send-google-doc\", \"email-to-me\", \"conversation-share\"] },\n to: { kind: \"group\", key: \"share\" },\n },\n {\n when: { ids: [\"cm:attach\", \"attach-artifact-to-chat\", \"set-context-value\", \"pin-message\", \"notes-and-comments\"] },\n to: { kind: \"group\", key: \"organize\" },\n },\n {\n when: { ids: [\"cm:view-history\", \"edit-history\", \"fork-at-message\", \"fork-and-regenerate\"] },\n to: { kind: \"group\", key: \"history\" },\n },\n {\n when: { ids: [\"cm:compare\", \"compare-with-clipboard\", \"set-compare-base\", \"compare-with-base\"] },\n to: { kind: \"group\", key: \"compare\" },\n },\n {\n when: { ids: [\"cm:speak\", \"cm:listen\", \"tts-voice-settings\"], categories: [\"listen\"] },\n to: { kind: \"group\", key: \"listen\" },\n },\n {\n when: {\n ids: [\"cm:chat\", \"regenerate-response\", \"regenerate-latest\", \"continue-in-chat\", \"send-to-agent\", \"code-block-chart\"],\n idPrefixes: [\"cm:placement:\", \"cm:cat:\", \"cm:agents\"],\n categories: [\"ai\", \"ask\"],\n },\n to: { kind: \"group\", key: \"ai\" },\n },\n {\n when: {\n ids: [\n \"edit\",\n \"edit-and-resubmit\",\n \"open-fullscreen-editor\",\n \"delete-message\",\n \"code-block-open-in-editor\",\n \"code-block-apply-to-file\",\n \"code-block-run\",\n \"replace-selection\",\n \"insert-below\",\n \"conversation-rename\",\n \"conversation-duplicate\",\n ],\n },\n to: { kind: \"group\", key: \"edit\" },\n },\n { when: { ids: [\"thumbs-up\", \"thumbs-down\", \"submit-feedback\"], categories: [\"feedback\"] }, to: { kind: \"group\", key: \"feedback\" } },\n { when: { ids: [\"cm:admin\"], categories: [\"creator\", \"admin\"] }, to: { kind: \"group\", key: \"admin\" } },\n // Everything that makes a new thing in the app — checked after the rows\n // above because the registry files several of them under \"save\".\n { when: { ids: [\"cm:convert\", \"add-to-rulebook\"], categories: [\"save\", \"study\", \"export\"] }, to: { kind: \"group\", key: \"convert\" } },\n ],\n // A row no rule names stays at the top level where the package places it —\n // and the demo's Categories section lists it under \"No category yet\".\n fallback: { kind: \"top\" },\n};\n","// features/context-menu-v3/proposed/proposed-arrangement.ts\n//\n// THE PROPOSED RIGHT-CLICK MENU (Arman, 2026-10-02), applied to the rows the REAL registry\n// resolved for a real surface — nothing here invents a row. It merges two designs: the object-first\n// layout (icons, four rows, one Intelligence row, large and header-less) and the regroup demo's\n// \"what you get\" categories (`../regroup/proposed-grouping.ts`, reused here, not copied).\n//\n// [icons: ≤6, one action each, never a submenu — chosen by WHAT was clicked]\n// a thing (row, card) Copy · Share · Duplicate · Favorite · Download · Archive (red)\n// editable text Cut · Copy · Paste · Undo · Redo · Find\n// read-only text Copy · Read aloud · Find · Share\n// [Type to filter…]\n// 4 rows: the clicked thing's own actions (editable text: its edit actions)\n// More <thing> options ▸\n// Intelligence ▸ every AI entry, one row, on every menu\n// Save & share ▸ Copy as · Download · Convert to · Publish · Share — one block each\n// Organize ▸ Attach · Pin · History · Compare\n// Tools ▸ Read aloud · Quick Actions · Feedback · This page · Admin\n//\n// A page's own row that does what a universal row does merges into it (regroup's merge rule):\n// one Share, one Download, one Copy. Copy link folds into Share (its dialog carries the link).\n// A thing that brings its own Download/Export owns that verb outright: the universal page-text\n// file rows (PDF, Word, HTML, Markdown, print — regroup's \"download\" group) are dropped for it,\n// because they would save the menu's text, not the thing (a table exports CSV/XLSX, never a PDF\n// of its row label). `recordActionsOnly` cannot do this: it keeps Export by design. \"Save as PDF\n// Document\" files the same page text as a PDF, so it goes with them.\n// Applied only where a MenuRegroupContext passes `transform` (the demo); production is unchanged\n// until Arman approves.\n\nimport { Archive, Copy, Ellipsis, FolderTree, Share2, Wrench } from \"lucide-react\";\nimport { INTELLIGENCE_ICON } from \"@ai-matrx/icons/domain\";\nimport type { Action, ActionCategory, ActionSection, ClickTarget, ResolvedAction } from \"@ai-matrx/alchemy/actions\";\nimport { registerAlchemyIcon } from \"@ai-matrx/rich-content/utils/alchemy-icon-keys\";\nimport { actionLabel, matchRule } from \"../regroup/grouping\";\nimport { PROPOSED_MENU_GROUPING } from \"../regroup/proposed-grouping\";\n\nconst icon = (c: unknown) => registerAlchemyIcon(c);\n\nexport const STRIP_MAX = 6;\nexport const OWN_ROWS_MAX = 4;\n\nexport type ClickedKind = \"thing\" | \"editable\" | \"text\";\n\n/** One icon slot: the first resolved leaf that matches fills it. */\ninterface StripSlot {\n key: string;\n ids?: readonly string[] | undefined;\n /** Labels of the clicked thing's OWN rows (case-insensitive). */\n ownLabels?: readonly RegExp[] | undefined;\n}\n\nconst SLOT: Record<string, StripSlot> = {\n copy: { key: \"copy\", ids: [\"cm:copy\", \"copy\"], ownLabels: [/^copy( to clipboard)?$/i] },\n cut: { key: \"cut\", ids: [\"cm:cut\"] },\n paste: { key: \"paste\", ids: [\"cm:paste\"] },\n undo: { key: \"undo\", ids: [\"cm:undo\"] },\n redo: { key: \"redo\", ids: [\"cm:redo\"] },\n find: { key: \"find\", ids: [\"cm:find\"] },\n speak: { key: \"speak\", ids: [\"cm:speak\"] },\n share: { key: \"share\", ownLabels: [/^share\\b/i], ids: [\"cm:share\"] },\n duplicate: { key: \"duplicate\", ownLabels: [/^duplicate\\b/i, /^make a copy\\b/i] },\n favorite: { key: \"favorite\", ownLabels: [/favou?rite/i, /^(un)?star\\b/i] },\n download: { key: \"download\", ownLabels: [/^(export|download)\\b/i] },\n archive: { key: \"archive\", ownLabels: [/^archive\\b/i, /^delete\\b/i, /^move to trash\\b/i] },\n};\n\n/** The icons for each kind of click, in drawing order. */\nconst STRIP_FOR: Record<ClickedKind, readonly string[]> = {\n thing: [\"copy\", \"share\", \"duplicate\", \"favorite\", \"download\", \"archive\"],\n editable: [\"cut\", \"copy\", \"paste\", \"undo\", \"redo\", \"find\"],\n text: [\"copy\", \"speak\", \"find\", \"share\"],\n};\n\n/** Universal rows outside regroup's \"download\" group that also turn the page text into a file. */\nconst PAGE_TEXT_FILE_IDS = new Set([\"save-as-pdf\"]);\n\n/** The object's own Open row, and the Link verb that sits right after it. */\nconst OPEN_ROW = /^open( record)?$/i;\nconst LINK_A_RECORD = /^link a record/i;\n// The record's other own verbs (Merge, Split, Extract parent) are top-level beside Open and Link, outside the own-row cap.\nconst RECORD_VERBS = [/^merge with/i, /^split(…|\\.\\.\\.)?$/i, /^extract parent/i];\n\n/** Own rows that fold into a strip verb instead of sitting beside it. */\nconst FOLDS_INTO_SHARE = [/^copy link\\b/i, /^share link\\b/i];\n\n/** Regroup's \"what you get\" groups → the three rows under Intelligence. */\nconst SAVE_SHARE_GROUPS = [\"copy\", \"download\", \"convert\", \"publish\", \"share\"] as const;\nconst ORGANIZE_GROUPS = new Set([\"organize\", \"history\", \"compare\"]);\nconst AI_ORDER: readonly (string | RegExp)[] = [\n \"cm:chat\",\n \"cm:placement:ai-action\",\n \"cm:placement:bound-agent\",\n \"cm:agents\",\n \"cm:placement:user-tool\",\n \"cm:placement:organization-tool\",\n \"cm:placement:content-block\",\n /^send to (another )?agent/i,\n /^custom agent/i,\n];\nconst AI_LABELS = [/^summari[sz]e\\b/i, /^send to (another )?agent/i, /^custom agent/i];\n\n/**\n * The clicked thing's own rows: a surface's `extraSections` (engine ids `cm:x:<…>`, except the\n * engine's own page submenu `cm:x:surface`) or a section the surface lifted / named after itself.\n */\nfunction isOwn(action: Action): boolean {\n if (action.id.startsWith(\"cm:x:\") && !action.id.startsWith(\"cm:x:surface\")) return true;\n const s = action.section as (ActionSection & { kind?: string }) | undefined;\n return Boolean(s && (s.primary || s.kind === \"target\"));\n}\n\nexport function clickedKind(target: ClickTarget, resolved: readonly ResolvedAction[]): ClickedKind {\n if (!target.readOnly && resolved.some((r) => r.action.id === \"cm:paste\")) return \"editable\";\n if (resolved.some((r) => isOwn(r.action))) return \"thing\";\n return \"text\";\n}\n\nfunction submenu(id: string, label: string, category: ActionCategory, iconKey: string, children: readonly Action[], order = 0): ResolvedAction {\n const action: Action = {\n id: `proposed:${id}`,\n label,\n category,\n order,\n icon: iconKey,\n pending: (t) => children.some((c) => Boolean(c.expand && c.pending?.(t))),\n eligible: () => ({ status: \"available\" }),\n expand: async () => children,\n run: () => undefined,\n };\n return { action, eligibility: { status: \"available\" } };\n}\n\n/** A submenu row stripped of its old section (a heading the new home does not draw). */\nfunction plain(action: Action, extra: Partial<Action> = {}): Action {\n const { section: _section, ...rest } = action;\n void _section;\n return { ...rest, ...extra };\n}\n\nexport interface ProposedOptions {\n /** The clicked thing's name for \"More <noun> options\" (\"table\", \"quiz\", \"note\"). */\n noun: string;\n}\n\nexport function proposedArrangement(\n target: ClickTarget,\n resolved: readonly ResolvedAction[],\n { noun }: ProposedOptions,\n): ResolvedAction[] {\n const kind = clickedKind(target, resolved);\n const label = (r: ResolvedAction) => actionLabel(r.action, target);\n const groupOf = (r: ResolvedAction) => {\n const to = matchRule(PROPOSED_MENU_GROUPING, r.action, target)?.to;\n return to?.kind === \"group\" ? to.key : null;\n };\n const used = new Set<string>();\n\n // 0 · the thing's own Download/Export replaces the universal file rows (see header).\n const ownsDownload = resolved.some((r) => isOwn(r.action) && SLOT.download!.ownLabels!.some((re) => re.test(label(r))));\n if (ownsDownload) {\n for (const r of resolved) {\n if (!isOwn(r.action) && (groupOf(r) === \"download\" || PAGE_TEXT_FILE_IDS.has(r.action.id))) used.add(r.action.id);\n }\n }\n\n // 1 · the icon row.\n const strip: ResolvedAction[] = [];\n for (const key of STRIP_FOR[kind]) {\n if (strip.length >= STRIP_MAX) break;\n const slot = SLOT[key]!;\n const pick =\n resolved.find(\n (r) => !used.has(r.action.id) && !r.action.expand && isOwn(r.action) && slot.ownLabels?.some((re) => re.test(label(r))),\n ) ?? resolved.find((r) => !used.has(r.action.id) && !r.action.expand && slot.ids?.includes(r.action.id));\n if (!pick) continue;\n used.add(pick.action.id);\n // One verb, one icon: the page's own Share/Copy wins over the universal twin.\n if (key === \"share\") for (const r of resolved) if (r.action.id === \"cm:share\") used.add(r.action.id);\n if (key === \"copy\") for (const r of resolved) if (r.action.id === \"cm:copy\") used.add(r.action.id);\n strip.push({\n ...pick,\n action: plain(pick.action, {\n category: \"clipboard\",\n order: strip.length,\n ...(key === \"archive\" ? { destructive: true, icon: pick.action.icon ?? icon(Archive) } : {}),\n ...(key === \"copy\" && !pick.action.icon ? { icon: icon(Copy) } : {}),\n }),\n });\n }\n const hasShare = strip.some((r) => /^share\\b/i.test(label(r)));\n\n // 2 · the clicked thing's own rows (editable text: its edit actions and the editor's Save).\n // An own row that does what a universal outcome does (\"Export as Markdown\", \"Share link…\") joins\n // that outcome under Save & share instead (the regroup merge rule) — unless it already became an icon.\n const ownCandidates = resolved.filter((r) => {\n if (used.has(r.action.id)) return false;\n const g = groupOf(r);\n if (g && (SAVE_SHARE_GROUPS as readonly string[]).includes(g) && !(hasShare && FOLDS_INTO_SHARE.some((re) => re.test(label(r))))) return false;\n if (isOwn(r.action)) return true;\n return kind === \"editable\" && (groupOf(r) === \"edit\" || r.action.id === \"cm:save\" || r.action.id === \"cm:delete\");\n });\n // OPEN AND \"LINK A RECORD…\" LEAD THE OWN ROWS (CHAIR-UI-STORE item 3, 2026-10-03): on a store\n // record's cell or row the cell's rows (Paste, Clear cell, …) and the row's (Copy row, Insert, …)\n // filled the four top rows and \"Link a record…\" fell under \"More … options\", while every CRM row\n // shows Open and Link top-level. They are the record's own verbs, so they go first, in that order.\n const lead = (re: RegExp) => {\n const at = ownCandidates.findIndex((r) => re.test(label(r)));\n return at >= 0 ? ownCandidates.splice(at, 1)[0]! : null;\n };\n const openRow = lead(OPEN_ROW);\n const linkRow = lead(LINK_A_RECORD);\n const verbRows = RECORD_VERBS.map(lead).filter((r): r is ResolvedAction => r !== null);\n const leading = [openRow, linkRow, ...verbRows].filter((r): r is ResolvedAction => r !== null);\n const verbIds = new Set(verbRows.map((r) => r.action.id));\n let counted = 0;\n ownCandidates.unshift(...leading);\n const own: ResolvedAction[] = [];\n const more: Action[] = [];\n for (const r of ownCandidates) {\n used.add(r.action.id);\n const folds = hasShare && FOLDS_INTO_SHARE.some((re) => re.test(label(r)));\n if (!folds && (verbIds.has(r.action.id) || counted < OWN_ROWS_MAX) && !r.action.expand) {\n const destructive = SLOT.archive!.ownLabels!.some((re) => re.test(label(r)));\n if (!verbIds.has(r.action.id)) counted += 1;\n own.push({ ...r, action: plain(r.action, { category: \"edit\", order: own.length, ...(destructive ? { destructive: true } : {}) }) });\n } else {\n more.push(plain(r.action));\n }\n }\n const top: ResolvedAction[] = [...strip, ...own];\n if (more.length) top.push(submenu(\"more\", `More ${noun} options`, \"edit\", icon(Ellipsis), more, OWN_ROWS_MAX));\n\n // 3 · everything else, by what you get.\n const ai: Action[] = [];\n const saveShare = new Map<string, Action[]>();\n const organize: Action[] = [];\n const tools: Action[] = [];\n for (const r of resolved) {\n if (used.has(r.action.id)) continue;\n used.add(r.action.id);\n const g = groupOf(r);\n if (g === \"ai\" || r.action.category === \"ai\" || r.action.category === \"ask\" || AI_LABELS.some((re) => re.test(label(r)))) {\n ai.push(plain(r.action));\n } else if (g && (SAVE_SHARE_GROUPS as readonly string[]).includes(g)) {\n const list = saveShare.get(g) ?? [];\n list.push(plain(r.action));\n saveShare.set(g, list);\n } else if (g && ORGANIZE_GROUPS.has(g)) {\n organize.push(plain(r.action));\n } else {\n tools.push(plain(r.action));\n }\n }\n // Chat and the libraries first, then hand-offs, then spoken summaries.\n const aiRank = (a: Action) => {\n const i = AI_ORDER.findIndex((p) => (typeof p === \"string\" ? a.id === p || a.id.startsWith(p) : p.test(String(a.label))));\n return i === -1 ? AI_ORDER.length : i;\n };\n ai.sort((a, b) => aiRank(a) - aiRank(b));\n top.push(submenu(\"intelligence\", \"Intelligence\", \"ai\", icon(INTELLIGENCE_ICON), ai));\n\n // Save & share: one block per outcome, a divider between blocks.\n const saveShareRows: Action[] = [];\n for (const g of SAVE_SHARE_GROUPS) {\n const rows = saveShare.get(g) ?? [];\n rows.forEach((a, i) => saveShareRows.push(i === 0 && saveShareRows.length > 0 ? { ...a, startsGroup: true } : a));\n }\n if (saveShareRows.length) top.push(submenu(\"save-share\", \"Save & share\", \"app\", icon(Share2), saveShareRows));\n if (organize.length) top.push(submenu(\"organize\", \"Organize\", \"app\", icon(FolderTree), organize, 1));\n if (tools.length) top.push(submenu(\"tools\", \"Tools\", \"feedback\", icon(Wrench), tools));\n return top;\n}\n"]}
|
package/dist/engine.d.cts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import './menu-design-prop-Bl-7EopK.cjs';
|
|
2
2
|
import { ResolvedContextMenuContext, ContextMenuExtraSection, ContextMenuEntityRef } from '@ai-matrx/chat/context-menu/types';
|
|
3
|
-
export
|
|
3
|
+
export { CANONICAL_MENU_VERSION_V3, CONTEXT_MENU_ENTITY_KEY, CONTEXT_MENU_HEADING_KEY, ContentSource, ContextMenuContextData, ContextMenuDensity, ContextMenuEntityRef, ContextMenuExtraItem, ContextMenuExtraSection, ContextMenuHeading, ContextMenuHostTypes, ContextMenuIcon, ContextMenuLayout, ContextMenuV3CoreProps, ContextMenuV3Props, DEFAULT_MENU_DENSITY, DEFAULT_MENU_LAYOUT, EditableContextMenuExtras, EditableContextMenuProps, ExtraSectionAnchor, MenuContentProps, MenuVariant, NonEditableContextMenuProps, PlacementKey, PlacementMode, PlacementVisibility, ResolvedContextMenuContext, ResourceType, RichDocumentAction, RichDocumentActionContext } from '@ai-matrx/chat/context-menu/types';
|
|
4
4
|
export { B as BuildJsonMenuActionsParams, C as CompareBaseInput, a as ContextAssignmentOptions, b as ContextMenuHost, c as ContextMenuHostBindings, d as ContextMenuQuickActions, D as DEFAULT_CONTEXT_MENU_HOST, e as DiffWindowOptions, f as DocumentAgentReviewProps, F as FindReplaceOptions, J as JsonMenuAction, g as JsonMenuSection, L as LinkRecordSheetOptions, h as ListenSummaryWindowOptions, M as ManualCopyOptions, R as ReferencePick, i as ReferencePickerOptions, S as ShareModalOptions, j as SurfaceAgentBindOptions, k as SurfaceContextWindowOptions, l as SurfaceInspectorOptions, m as buildJsonMenuSection, n as configureContextMenuHost, o as getContextMenuHost, p as jsonSectionLabel, q as loadContextMenuHost, r as resetContextMenuHost, u as useContextMenuHostBindings } from './json-menu-actions-CUifYNYd.cjs';
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
5
|
+
export { buildApplicationScopeFromMenuContext } from '@ai-matrx/chat/context-menu/utils/build-application-scope';
|
|
6
|
+
export { AvailabilityMap, applyAvailability, needs, unavailableHere, withAvailability } from '@ai-matrx/chat/context-menu/utils/availability';
|
|
7
|
+
export { CapturedSelection, EditableSelectionRange, NonEditableSelectionRange, SelectionRange, captureDomSelection, captureTextareaSelection, extractElementText, getEditableSelectionOffsets, getSelectionRect, mouseFallbackRect, restoreDomSelection, restoreTextareaSelection, spliceInputValue } from '@ai-matrx/chat/context-menu/utils/selection-tracking';
|
|
8
|
+
export { MENU_LIBRARY_DEADLINE_MS, MenuLibraryTimeoutError, withMenuDeadline } from '@ai-matrx/chat/context-menu/utils/menu-deadline';
|
|
9
|
+
export { MarkdownMenuContext, resolveMarkdownContext } from '@ai-matrx/chat/context-menu/utils/resolveMarkdownContext';
|
|
10
|
+
export { AvailableKeysArgs, GLOBAL_SCOPE, GateableItem, MenuScope, MenuScopeLevel, OfferContext, OfferDecision, OfferRefusal, buildAvailableKeys, decideOffer, domainOfSurfaceName, readMenuScope, requirementsOf, scopeReaches, writeMenuScope } from '@ai-matrx/chat/context-menu/model/requirement-gate';
|
|
11
11
|
import { ResolvedItem } from '@ai-matrx/alchemy/declare';
|
|
12
12
|
import { MatrxDataTableRecordControls } from '@ai-matrx/design-system/data-table/types';
|
|
13
13
|
import { MatrxTableMenuPayload, MatrxTableMenuTarget } from '@ai-matrx/design-system/data-table/menu-targets';
|
package/dist/engine.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import './menu-design-prop-Bl-7EopK.js';
|
|
2
2
|
import { ResolvedContextMenuContext, ContextMenuExtraSection, ContextMenuEntityRef } from '@ai-matrx/chat/context-menu/types';
|
|
3
|
-
export
|
|
3
|
+
export { CANONICAL_MENU_VERSION_V3, CONTEXT_MENU_ENTITY_KEY, CONTEXT_MENU_HEADING_KEY, ContentSource, ContextMenuContextData, ContextMenuDensity, ContextMenuEntityRef, ContextMenuExtraItem, ContextMenuExtraSection, ContextMenuHeading, ContextMenuHostTypes, ContextMenuIcon, ContextMenuLayout, ContextMenuV3CoreProps, ContextMenuV3Props, DEFAULT_MENU_DENSITY, DEFAULT_MENU_LAYOUT, EditableContextMenuExtras, EditableContextMenuProps, ExtraSectionAnchor, MenuContentProps, MenuVariant, NonEditableContextMenuProps, PlacementKey, PlacementMode, PlacementVisibility, ResolvedContextMenuContext, ResourceType, RichDocumentAction, RichDocumentActionContext } from '@ai-matrx/chat/context-menu/types';
|
|
4
4
|
export { B as BuildJsonMenuActionsParams, C as CompareBaseInput, a as ContextAssignmentOptions, b as ContextMenuHost, c as ContextMenuHostBindings, d as ContextMenuQuickActions, D as DEFAULT_CONTEXT_MENU_HOST, e as DiffWindowOptions, f as DocumentAgentReviewProps, F as FindReplaceOptions, J as JsonMenuAction, g as JsonMenuSection, L as LinkRecordSheetOptions, h as ListenSummaryWindowOptions, M as ManualCopyOptions, R as ReferencePick, i as ReferencePickerOptions, S as ShareModalOptions, j as SurfaceAgentBindOptions, k as SurfaceContextWindowOptions, l as SurfaceInspectorOptions, m as buildJsonMenuSection, n as configureContextMenuHost, o as getContextMenuHost, p as jsonSectionLabel, q as loadContextMenuHost, r as resetContextMenuHost, u as useContextMenuHostBindings } from './json-menu-actions-CUifYNYd.js';
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
5
|
+
export { buildApplicationScopeFromMenuContext } from '@ai-matrx/chat/context-menu/utils/build-application-scope';
|
|
6
|
+
export { AvailabilityMap, applyAvailability, needs, unavailableHere, withAvailability } from '@ai-matrx/chat/context-menu/utils/availability';
|
|
7
|
+
export { CapturedSelection, EditableSelectionRange, NonEditableSelectionRange, SelectionRange, captureDomSelection, captureTextareaSelection, extractElementText, getEditableSelectionOffsets, getSelectionRect, mouseFallbackRect, restoreDomSelection, restoreTextareaSelection, spliceInputValue } from '@ai-matrx/chat/context-menu/utils/selection-tracking';
|
|
8
|
+
export { MENU_LIBRARY_DEADLINE_MS, MenuLibraryTimeoutError, withMenuDeadline } from '@ai-matrx/chat/context-menu/utils/menu-deadline';
|
|
9
|
+
export { MarkdownMenuContext, resolveMarkdownContext } from '@ai-matrx/chat/context-menu/utils/resolveMarkdownContext';
|
|
10
|
+
export { AvailableKeysArgs, GLOBAL_SCOPE, GateableItem, MenuScope, MenuScopeLevel, OfferContext, OfferDecision, OfferRefusal, buildAvailableKeys, decideOffer, domainOfSurfaceName, readMenuScope, requirementsOf, scopeReaches, writeMenuScope } from '@ai-matrx/chat/context-menu/model/requirement-gate';
|
|
11
11
|
import { ResolvedItem } from '@ai-matrx/alchemy/declare';
|
|
12
12
|
import { MatrxDataTableRecordControls } from '@ai-matrx/design-system/data-table/types';
|
|
13
13
|
import { MatrxTableMenuPayload, MatrxTableMenuTarget } from '@ai-matrx/design-system/data-table/menu-targets';
|
package/dist/engine.js
CHANGED
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
tableRowEditCommands,
|
|
30
30
|
tableTextAtTarget,
|
|
31
31
|
toastPromise
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-EG23Y2KW.js";
|
|
33
33
|
import {
|
|
34
34
|
REGROUP_ID_PREFIX,
|
|
35
35
|
actionLabel,
|
|
@@ -43,23 +43,44 @@ import {
|
|
|
43
43
|
} from "./chunk-FFIJ4TF4.js";
|
|
44
44
|
import {
|
|
45
45
|
FIELD_PREVIEW_MAX,
|
|
46
|
+
GLOBAL_SCOPE,
|
|
46
47
|
MANAGED_CONTEXT_MENU_AGENT_CONFIG,
|
|
48
|
+
MENU_LIBRARY_DEADLINE_MS,
|
|
49
|
+
MenuLibraryTimeoutError,
|
|
47
50
|
actionsAlreadyHere,
|
|
51
|
+
buildAvailableKeys,
|
|
48
52
|
buildJsonMenuSection,
|
|
53
|
+
decideOffer,
|
|
54
|
+
domainOfSurfaceName,
|
|
49
55
|
fieldLabelOf,
|
|
50
56
|
fieldPreview,
|
|
51
57
|
jsonSectionLabel,
|
|
52
|
-
menu_deadline_exports,
|
|
53
58
|
mergeFieldName,
|
|
54
|
-
|
|
55
|
-
|
|
59
|
+
readMenuScope,
|
|
60
|
+
requirementsOf,
|
|
61
|
+
scopeReaches,
|
|
62
|
+
withMenuDeadline,
|
|
63
|
+
writeMenuScope
|
|
64
|
+
} from "./chunk-HJU3RU2B.js";
|
|
56
65
|
import {
|
|
66
|
+
CANONICAL_MENU_VERSION_V3,
|
|
67
|
+
CONTEXT_MENU_ENTITY_KEY,
|
|
68
|
+
CONTEXT_MENU_HEADING_KEY,
|
|
69
|
+
DEFAULT_MENU_DENSITY,
|
|
70
|
+
DEFAULT_MENU_LAYOUT,
|
|
71
|
+
captureDomSelection,
|
|
72
|
+
captureTextareaSelection,
|
|
57
73
|
eventMatchesCombo,
|
|
74
|
+
extractElementText,
|
|
58
75
|
findComboMatch,
|
|
76
|
+
getEditableSelectionOffsets,
|
|
77
|
+
getSelectionRect,
|
|
78
|
+
mouseFallbackRect,
|
|
59
79
|
parseKeyCombo,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
80
|
+
restoreDomSelection,
|
|
81
|
+
restoreTextareaSelection,
|
|
82
|
+
spliceInputValue
|
|
83
|
+
} from "./chunk-SJWKMZEJ.js";
|
|
63
84
|
import {
|
|
64
85
|
DEFAULT_CONTEXT_MENU_HOST,
|
|
65
86
|
configureContextMenuHost,
|
|
@@ -68,95 +89,19 @@ import {
|
|
|
68
89
|
resetContextMenuHost,
|
|
69
90
|
useContextMenuHostBindings
|
|
70
91
|
} from "./chunk-5CSJ4Y3X.js";
|
|
71
|
-
import {
|
|
72
|
-
__export,
|
|
73
|
-
__reExport
|
|
74
|
-
} from "./chunk-PE3ZHHM5.js";
|
|
75
|
-
|
|
76
|
-
// src/engine/index.ts
|
|
77
|
-
var engine_exports = {};
|
|
78
|
-
__export(engine_exports, {
|
|
79
|
-
CONTEXT_MENU_ENGINE_ID_PREFIXES: () => CONTEXT_MENU_ENGINE_ID_PREFIXES,
|
|
80
|
-
CONTEXT_MENU_ENGINE_ROWS: () => CONTEXT_MENU_ENGINE_ROWS,
|
|
81
|
-
CONTEXT_MENU_SELECTION_HOST_KEY: () => CONTEXT_MENU_SELECTION_HOST_KEY,
|
|
82
|
-
CONTEXT_REGION_TRIGGER_ATTRS: () => CONTEXT_REGION_TRIGGER_ATTRS,
|
|
83
|
-
DEFAULT_CONTEXT_MENU_HOST: () => DEFAULT_CONTEXT_MENU_HOST,
|
|
84
|
-
FIELD_PREVIEW_MAX: () => FIELD_PREVIEW_MAX,
|
|
85
|
-
MANAGED_CONTEXT_MENU_AGENT_CONFIG: () => MANAGED_CONTEXT_MENU_AGENT_CONFIG,
|
|
86
|
-
OWN_ROWS_MAX: () => OWN_ROWS_MAX,
|
|
87
|
-
PROPOSED_MENU_GROUPING: () => PROPOSED_MENU_GROUPING,
|
|
88
|
-
RECORD_MENU_ATTR: () => RECORD_MENU_ATTR,
|
|
89
|
-
REGROUP_ID_PREFIX: () => REGROUP_ID_PREFIX,
|
|
90
|
-
STRIP_MAX: () => STRIP_MAX,
|
|
91
|
-
actionLabel: () => actionLabel,
|
|
92
|
-
actionsAlreadyHere: () => actionsAlreadyHere,
|
|
93
|
-
auditRegroup: () => auditRegroup,
|
|
94
|
-
buildDefaultTableRowMenuDescriptor: () => buildDefaultTableRowMenuDescriptor,
|
|
95
|
-
buildEditableWidgetHandle: () => buildEditableWidgetHandle,
|
|
96
|
-
buildJsonMenuSection: () => buildJsonMenuSection,
|
|
97
|
-
clickedKind: () => clickedKind,
|
|
98
|
-
configureContextMenuHost: () => configureContextMenuHost,
|
|
99
|
-
contextMenuSelectionProvider: () => contextMenuSelectionProvider,
|
|
100
|
-
createDefaultTableRowMenuDescriptor: () => createDefaultTableRowMenuDescriptor,
|
|
101
|
-
createTableRowMenuDescriptor: () => createTableRowMenuDescriptor,
|
|
102
|
-
currentModel: () => currentModel,
|
|
103
|
-
destinationFor: () => destinationFor,
|
|
104
|
-
drawnPlaces: () => drawnPlaces,
|
|
105
|
-
eventMatchesCombo: () => eventMatchesCombo,
|
|
106
|
-
fieldLabelOf: () => fieldLabelOf,
|
|
107
|
-
fieldPreview: () => fieldPreview,
|
|
108
|
-
findComboMatch: () => findComboMatch,
|
|
109
|
-
getContextMenuHost: () => getContextMenuHost,
|
|
110
|
-
itemMenuConfigToExtraSections: () => itemMenuConfigToExtraSections,
|
|
111
|
-
itemToastPromise: () => toastPromise,
|
|
112
|
-
joinExtraSections: () => joinExtraSections,
|
|
113
|
-
joinRowAndSurfaceContext: () => joinRowAndSurfaceContext,
|
|
114
|
-
jsonSectionLabel: () => jsonSectionLabel,
|
|
115
|
-
loadContextMenuHost: () => loadContextMenuHost,
|
|
116
|
-
matchRule: () => matchRule,
|
|
117
|
-
mergeFieldName: () => mergeFieldName,
|
|
118
|
-
mergeResolvedContextData: () => mergeResolvedContextData,
|
|
119
|
-
openContextMenuForElement: () => openContextMenuForElement,
|
|
120
|
-
openRecordMenu: () => openRecordMenu,
|
|
121
|
-
parseKeyCombo: () => parseKeyCombo,
|
|
122
|
-
preloadTableShape: () => preloadTableShape,
|
|
123
|
-
proposedArrangement: () => proposedArrangement,
|
|
124
|
-
recordMenuChanged: () => recordMenuChanged,
|
|
125
|
-
recordMenusRevision: () => recordMenusRevision,
|
|
126
|
-
registerRecordMenu: () => registerRecordMenu,
|
|
127
|
-
registerTableRowContextResolver: () => registerTableRowContextResolver,
|
|
128
|
-
regroupResolved: () => regroupResolved,
|
|
129
|
-
resetContextMenuHost: () => resetContextMenuHost,
|
|
130
|
-
resolveEffectiveEntity: () => resolveEffectiveEntity,
|
|
131
|
-
resolveEffectiveEntityWithDom: () => resolveEffectiveEntityWithDom,
|
|
132
|
-
resolveRecordMenu: () => resolveRecordMenu,
|
|
133
|
-
resolveTableRowItem: () => resolveTableRowItem,
|
|
134
|
-
resolveTableRowMenuDescriptor: () => resolveTableRowMenuDescriptor,
|
|
135
|
-
rowRecordName: () => rowRecordName,
|
|
136
|
-
sniffEntityFromDom: () => sniffEntityFromDom,
|
|
137
|
-
subscribeRecordMenus: () => subscribeRecordMenus,
|
|
138
|
-
tableRowEditCommands: () => tableRowEditCommands,
|
|
139
|
-
tableTextAtTarget: () => tableTextAtTarget,
|
|
140
|
-
topLevelRowCount: () => topLevelRowCount,
|
|
141
|
-
useContextMenuHostBindings: () => useContextMenuHostBindings
|
|
142
|
-
});
|
|
143
|
-
__reExport(engine_exports, types_exports);
|
|
144
92
|
|
|
145
93
|
// src/engine/utils/build-application-scope.ts
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
// src/engine/index.ts
|
|
151
|
-
__reExport(engine_exports, build_application_scope_exports);
|
|
94
|
+
import {
|
|
95
|
+
buildApplicationScopeFromMenuContext
|
|
96
|
+
} from "@ai-matrx/chat/context-menu/utils/build-application-scope";
|
|
152
97
|
|
|
153
98
|
// src/engine/utils/availability.ts
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
99
|
+
import {
|
|
100
|
+
applyAvailability,
|
|
101
|
+
needs,
|
|
102
|
+
unavailableHere,
|
|
103
|
+
withAvailability
|
|
104
|
+
} from "@ai-matrx/chat/context-menu/utils/availability";
|
|
160
105
|
|
|
161
106
|
// src/engine/utils/open-context-menu.ts
|
|
162
107
|
function openContextMenuForElement(element) {
|
|
@@ -175,18 +120,10 @@ function openContextMenuForElement(element) {
|
|
|
175
120
|
);
|
|
176
121
|
}
|
|
177
122
|
|
|
178
|
-
// src/engine/index.ts
|
|
179
|
-
__reExport(engine_exports, selection_tracking_exports);
|
|
180
|
-
__reExport(engine_exports, menu_deadline_exports);
|
|
181
|
-
|
|
182
123
|
// src/engine/utils/resolveMarkdownContext.ts
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
// src/engine/index.ts
|
|
188
|
-
__reExport(engine_exports, resolveMarkdownContext_exports);
|
|
189
|
-
__reExport(engine_exports, requirement_gate_exports);
|
|
124
|
+
import {
|
|
125
|
+
resolveMarkdownContext
|
|
126
|
+
} from "@ai-matrx/chat/context-menu/utils/resolveMarkdownContext";
|
|
190
127
|
|
|
191
128
|
// src/engine/regroup/engine-rows.ts
|
|
192
129
|
var CONTEXT_MENU_ENGINE_ROWS = [
|
|
@@ -561,13 +498,21 @@ function proposedArrangement(target, resolved, { noun }) {
|
|
|
561
498
|
return top;
|
|
562
499
|
}
|
|
563
500
|
export {
|
|
501
|
+
CANONICAL_MENU_VERSION_V3,
|
|
564
502
|
CONTEXT_MENU_ENGINE_ID_PREFIXES,
|
|
565
503
|
CONTEXT_MENU_ENGINE_ROWS,
|
|
504
|
+
CONTEXT_MENU_ENTITY_KEY,
|
|
505
|
+
CONTEXT_MENU_HEADING_KEY,
|
|
566
506
|
CONTEXT_MENU_SELECTION_HOST_KEY,
|
|
567
507
|
CONTEXT_REGION_TRIGGER_ATTRS,
|
|
568
508
|
DEFAULT_CONTEXT_MENU_HOST,
|
|
509
|
+
DEFAULT_MENU_DENSITY,
|
|
510
|
+
DEFAULT_MENU_LAYOUT,
|
|
569
511
|
FIELD_PREVIEW_MAX,
|
|
512
|
+
GLOBAL_SCOPE,
|
|
570
513
|
MANAGED_CONTEXT_MENU_AGENT_CONFIG,
|
|
514
|
+
MENU_LIBRARY_DEADLINE_MS,
|
|
515
|
+
MenuLibraryTimeoutError,
|
|
571
516
|
OWN_ROWS_MAX,
|
|
572
517
|
PROPOSED_MENU_GROUPING,
|
|
573
518
|
RECORD_MENU_ATTR,
|
|
@@ -575,23 +520,33 @@ export {
|
|
|
575
520
|
STRIP_MAX,
|
|
576
521
|
actionLabel,
|
|
577
522
|
actionsAlreadyHere,
|
|
523
|
+
applyAvailability,
|
|
578
524
|
auditRegroup,
|
|
525
|
+
buildApplicationScopeFromMenuContext,
|
|
526
|
+
buildAvailableKeys,
|
|
579
527
|
buildDefaultTableRowMenuDescriptor,
|
|
580
528
|
buildEditableWidgetHandle,
|
|
581
529
|
buildJsonMenuSection,
|
|
530
|
+
captureDomSelection,
|
|
531
|
+
captureTextareaSelection,
|
|
582
532
|
clickedKind,
|
|
583
533
|
configureContextMenuHost,
|
|
584
534
|
contextMenuSelectionProvider,
|
|
585
535
|
createDefaultTableRowMenuDescriptor,
|
|
586
536
|
createTableRowMenuDescriptor,
|
|
587
537
|
currentModel,
|
|
538
|
+
decideOffer,
|
|
588
539
|
destinationFor,
|
|
540
|
+
domainOfSurfaceName,
|
|
589
541
|
drawnPlaces,
|
|
590
542
|
eventMatchesCombo,
|
|
543
|
+
extractElementText,
|
|
591
544
|
fieldLabelOf,
|
|
592
545
|
fieldPreview,
|
|
593
546
|
findComboMatch,
|
|
594
547
|
getContextMenuHost,
|
|
548
|
+
getEditableSelectionOffsets,
|
|
549
|
+
getSelectionRect,
|
|
595
550
|
itemMenuConfigToExtraSections,
|
|
596
551
|
toastPromise as itemToastPromise,
|
|
597
552
|
joinExtraSections,
|
|
@@ -601,28 +556,41 @@ export {
|
|
|
601
556
|
matchRule,
|
|
602
557
|
mergeFieldName,
|
|
603
558
|
mergeResolvedContextData,
|
|
559
|
+
mouseFallbackRect,
|
|
560
|
+
needs,
|
|
604
561
|
openContextMenuForElement,
|
|
605
562
|
openRecordMenu,
|
|
606
563
|
parseKeyCombo,
|
|
607
564
|
preloadTableShape,
|
|
608
565
|
proposedArrangement,
|
|
566
|
+
readMenuScope,
|
|
609
567
|
recordMenuChanged,
|
|
610
568
|
recordMenusRevision,
|
|
611
569
|
registerRecordMenu,
|
|
612
570
|
registerTableRowContextResolver,
|
|
613
571
|
regroupResolved,
|
|
572
|
+
requirementsOf,
|
|
614
573
|
resetContextMenuHost,
|
|
615
574
|
resolveEffectiveEntity,
|
|
616
575
|
resolveEffectiveEntityWithDom,
|
|
576
|
+
resolveMarkdownContext,
|
|
617
577
|
resolveRecordMenu,
|
|
618
578
|
resolveTableRowItem,
|
|
619
579
|
resolveTableRowMenuDescriptor,
|
|
580
|
+
restoreDomSelection,
|
|
581
|
+
restoreTextareaSelection,
|
|
620
582
|
rowRecordName,
|
|
583
|
+
scopeReaches,
|
|
621
584
|
sniffEntityFromDom,
|
|
585
|
+
spliceInputValue,
|
|
622
586
|
subscribeRecordMenus,
|
|
623
587
|
tableRowEditCommands,
|
|
624
588
|
tableTextAtTarget,
|
|
625
589
|
topLevelRowCount,
|
|
626
|
-
|
|
590
|
+
unavailableHere,
|
|
591
|
+
useContextMenuHostBindings,
|
|
592
|
+
withAvailability,
|
|
593
|
+
withMenuDeadline,
|
|
594
|
+
writeMenuScope
|
|
627
595
|
};
|
|
628
596
|
//# sourceMappingURL=engine.js.map
|