@arbidocs/blocks 0.5.119 → 0.5.120

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/{ConnectedNativeDocxComparison-546ILGLW.cjs → ConnectedNativeDocxComparison-SGE4R3M4.cjs} +6 -6
  2. package/dist/{ConnectedNativeDocxComparison-546ILGLW.cjs.map → ConnectedNativeDocxComparison-SGE4R3M4.cjs.map} +1 -1
  3. package/dist/{ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs → ConnectedStreamedWordArtifact-6MCLJRIT.cjs} +6 -6
  4. package/dist/{ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs.map → ConnectedStreamedWordArtifact-6MCLJRIT.cjs.map} +1 -1
  5. package/dist/{DocumentReviewCard-ZSBZBGFK.cjs → DocumentReviewCard-BPIAJJED.cjs} +14 -14
  6. package/dist/{DocumentReviewCard-ZSBZBGFK.cjs.map → DocumentReviewCard-BPIAJJED.cjs.map} +1 -1
  7. package/dist/{FilesViewerDialog-6UKR5WEF.cjs → FilesViewerDialog-67WK3TZC.cjs} +11 -11
  8. package/dist/{FilesViewerDialog-6UKR5WEF.cjs.map → FilesViewerDialog-67WK3TZC.cjs.map} +1 -1
  9. package/dist/agents/index.cjs +185 -185
  10. package/dist/agents/tasks/ConversationListView.js +10 -2
  11. package/dist/agents/tasks/ConversationListView.js.map +2 -2
  12. package/dist/agents/tasks/TaskTable.js +5 -4
  13. package/dist/agents/tasks/TaskTable.js.map +2 -2
  14. package/dist/agents/tasks/WorkflowsTable.js +4 -5
  15. package/dist/agents/tasks/WorkflowsTable.js.map +2 -2
  16. package/dist/agents/tasks/taskColumns.js +1 -1
  17. package/dist/agents/tasks/taskColumns.js.map +1 -1
  18. package/dist/agents/tasks/taskTableLabels.js +1 -1
  19. package/dist/agents/tasks/taskTableLabels.js.map +1 -1
  20. package/dist/agents/tasks/workflowTableLabels.js +1 -1
  21. package/dist/agents/tasks/workflowTableLabels.js.map +1 -1
  22. package/dist/{chunk-P77YTTJ3.cjs → chunk-3GWWOYGS.cjs} +4 -4
  23. package/dist/{chunk-P77YTTJ3.cjs.map → chunk-3GWWOYGS.cjs.map} +1 -1
  24. package/dist/{chunk-HB2O4THB.cjs → chunk-5IZFSAEZ.cjs} +4 -4
  25. package/dist/{chunk-HB2O4THB.cjs.map → chunk-5IZFSAEZ.cjs.map} +1 -1
  26. package/dist/{chunk-DDIW4HLU.cjs → chunk-775S43W7.cjs} +19 -10
  27. package/dist/chunk-775S43W7.cjs.map +1 -0
  28. package/dist/{chunk-Y24V6HPR.cjs → chunk-BP3IJ34D.cjs} +4 -4
  29. package/dist/{chunk-Y24V6HPR.cjs.map → chunk-BP3IJ34D.cjs.map} +1 -1
  30. package/dist/{chunk-TT4IF52H.cjs → chunk-BUVIBHFU.cjs} +37 -38
  31. package/dist/chunk-BUVIBHFU.cjs.map +1 -0
  32. package/dist/{chunk-OEREKAAP.cjs → chunk-CKCG4NDB.cjs} +8 -8
  33. package/dist/{chunk-OEREKAAP.cjs.map → chunk-CKCG4NDB.cjs.map} +1 -1
  34. package/dist/{chunk-YGXOKB5Z.cjs → chunk-DFBDQKGE.cjs} +4 -4
  35. package/dist/{chunk-YGXOKB5Z.cjs.map → chunk-DFBDQKGE.cjs.map} +1 -1
  36. package/dist/{chunk-VGCTYTEW.cjs → chunk-ECLUFKYR.cjs} +4 -4
  37. package/dist/{chunk-VGCTYTEW.cjs.map → chunk-ECLUFKYR.cjs.map} +1 -1
  38. package/dist/{chunk-CPG7II4E.cjs → chunk-HA66DHW6.cjs} +28 -28
  39. package/dist/{chunk-CPG7II4E.cjs.map → chunk-HA66DHW6.cjs.map} +1 -1
  40. package/dist/{chunk-57NHXEU2.cjs → chunk-MXBXZXXQ.cjs} +5 -5
  41. package/dist/{chunk-57NHXEU2.cjs.map → chunk-MXBXZXXQ.cjs.map} +1 -1
  42. package/dist/{chunk-NNUK5ZM7.cjs → chunk-NLSWDP42.cjs} +9 -17
  43. package/dist/chunk-NLSWDP42.cjs.map +1 -0
  44. package/dist/{chunk-B2HNNG25.cjs → chunk-Q6CLWOP2.cjs} +29 -29
  45. package/dist/{chunk-B2HNNG25.cjs.map → chunk-Q6CLWOP2.cjs.map} +1 -1
  46. package/dist/{chunk-R7CJEIA5.cjs → chunk-QQWHG3KF.cjs} +5 -6
  47. package/dist/chunk-QQWHG3KF.cjs.map +1 -0
  48. package/dist/{chunk-VLCY46K6.cjs → chunk-TG2GM7WJ.cjs} +4 -3
  49. package/dist/chunk-TG2GM7WJ.cjs.map +1 -0
  50. package/dist/{chunk-QHOHDNBU.cjs → chunk-VZCPMXWC.cjs} +4 -4
  51. package/dist/{chunk-QHOHDNBU.cjs.map → chunk-VZCPMXWC.cjs.map} +1 -1
  52. package/dist/{chunk-NIE3N6OM.cjs → chunk-W6INT5GS.cjs} +5 -5
  53. package/dist/{chunk-NIE3N6OM.cjs.map → chunk-W6INT5GS.cjs.map} +1 -1
  54. package/dist/{chunk-ZPPMAL5P.cjs → chunk-WQMR3O2D.cjs} +6 -10
  55. package/dist/chunk-WQMR3O2D.cjs.map +1 -0
  56. package/dist/{chunk-SB4M3ITT.cjs → chunk-X36UR4A7.cjs} +173 -56
  57. package/dist/chunk-X36UR4A7.cjs.map +1 -0
  58. package/dist/{chunk-XKVPSOKP.cjs → chunk-YYSBWMDJ.cjs} +4 -4
  59. package/dist/{chunk-XKVPSOKP.cjs.map → chunk-YYSBWMDJ.cjs.map} +1 -1
  60. package/dist/collaboration/index.cjs +3 -3
  61. package/dist/collaboration/sharing/ShareControl.js +10 -2
  62. package/dist/collaboration/sharing/ShareControl.js.map +2 -2
  63. package/dist/components/SharedCell.d.ts +2 -4
  64. package/dist/components/SharedCell.js +4 -8
  65. package/dist/components/SharedCell.js.map +2 -2
  66. package/dist/connect/docx.cjs +9 -9
  67. package/dist/connect/index.cjs +595 -567
  68. package/dist/connect/index.cjs.map +1 -1
  69. package/dist/connect/viewer.cjs +9 -9
  70. package/dist/connection/facts/factPageColumns.js +3 -9
  71. package/dist/connection/facts/factPageColumns.js.map +2 -2
  72. package/dist/connection/files/grid/cells.js +1 -3
  73. package/dist/connection/files/grid/cells.js.map +2 -2
  74. package/dist/connection/files/grid/documentColumns.js +3 -2
  75. package/dist/connection/files/grid/documentColumns.js.map +2 -2
  76. package/dist/connection/sharing/WorkspaceMembersList.d.ts +4 -0
  77. package/dist/connection/sharing/WorkspaceMembersList.js +34 -0
  78. package/dist/connection/sharing/WorkspaceMembersList.js.map +7 -0
  79. package/dist/connection/shell/ConnectedAppShell.js +4 -0
  80. package/dist/connection/shell/ConnectedAppShell.js.map +2 -2
  81. package/dist/connection/viewer/ConnectedDocumentViewer.js +3 -2
  82. package/dist/connection/viewer/ConnectedDocumentViewer.js.map +2 -2
  83. package/dist/connection/viewer/ViewerPdfPane.js +20 -2
  84. package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
  85. package/dist/connection/viewer/pdf/PdfPassageHighlights.d.ts +12 -0
  86. package/dist/connection/viewer/pdf/PdfPassageHighlights.js +36 -0
  87. package/dist/connection/viewer/pdf/PdfPassageHighlights.js.map +7 -0
  88. package/dist/connection/viewer/pdf/passageHighlights.d.ts +26 -0
  89. package/dist/connection/viewer/pdf/passageHighlights.js +40 -0
  90. package/dist/connection/viewer/pdf/passageHighlights.js.map +7 -0
  91. package/dist/connection/viewer/pdf/usePdfPassageHighlights.d.ts +9 -0
  92. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js +47 -0
  93. package/dist/connection/viewer/pdf/usePdfPassageHighlights.js.map +7 -0
  94. package/dist/connection/workflows/workflowsPageLabels.js +1 -1
  95. package/dist/connection/workflows/workflowsPageLabels.js.map +1 -1
  96. package/dist/embed/index.cjs +13 -13
  97. package/dist/facts/factColumns.js +3 -3
  98. package/dist/facts/factColumns.js.map +1 -1
  99. package/dist/facts/index.cjs +42 -42
  100. package/dist/files/HtmlViewerParts.js +7 -15
  101. package/dist/files/HtmlViewerParts.js.map +2 -2
  102. package/dist/files/index.cjs +223 -223
  103. package/dist/index.cjs +238 -238
  104. package/dist/styles.css +1 -1
  105. package/dist/workflow-canvas/index.cjs +24 -24
  106. package/dist/workflow-canvas/index.cjs.map +1 -1
  107. package/node_modules/@arbidocs/coedit/package.json +1 -1
  108. package/package.json +5 -5
  109. package/dist/chunk-DDIW4HLU.cjs.map +0 -1
  110. package/dist/chunk-NNUK5ZM7.cjs.map +0 -1
  111. package/dist/chunk-R7CJEIA5.cjs.map +0 -1
  112. package/dist/chunk-SB4M3ITT.cjs.map +0 -1
  113. package/dist/chunk-TT4IF52H.cjs.map +0 -1
  114. package/dist/chunk-VLCY46K6.cjs.map +0 -1
  115. package/dist/chunk-ZPPMAL5P.cjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkDDIW4HLU_cjs = require('./chunk-DDIW4HLU.cjs');
4
+ var chunk775S43W7_cjs = require('./chunk-775S43W7.cjs');
5
5
  var chunkQGVOT7E4_cjs = require('./chunk-QGVOT7E4.cjs');
6
6
  var react = require('react');
7
7
 
@@ -45,7 +45,7 @@ function useWorkflowPreview(workflow, { answer = "{prompt}", delayMs = 400, reso
45
45
  }, delayMs)
46
46
  );
47
47
  }, [states, steps, workflow]);
48
- return chunkDDIW4HLU_cjs.useWorkflowView({
48
+ return chunk775S43W7_cjs.useWorkflowView({
49
49
  steps,
50
50
  states,
51
51
  inputs,
@@ -58,5 +58,5 @@ function useWorkflowPreview(workflow, { answer = "{prompt}", delayMs = 400, reso
58
58
  }
59
59
 
60
60
  exports.useWorkflowPreview = useWorkflowPreview;
61
- //# sourceMappingURL=chunk-XKVPSOKP.cjs.map
62
- //# sourceMappingURL=chunk-XKVPSOKP.cjs.map
61
+ //# sourceMappingURL=chunk-YYSBWMDJ.cjs.map
62
+ //# sourceMappingURL=chunk-YYSBWMDJ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/agents/workflows/useWorkflowPreview.ts"],"names":["workflowSteps","useState","initialRunInputs","useRef","useEffect","stepPhase","composeStepPrompt","useWorkflowView"],"mappings":"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","file":"chunk-XKVPSOKP.cjs","sourcesContent":["/**\n * A stepped workflow run on screen only (the builder's preview): agent steps run one at a time,\n * the way the server does, and answer with the prompt they would send; action steps just finish.\n * No thread, no agent.\n */\n\nimport { useEffect, useRef, useState } from 'react'\nimport {\n composeStepPrompt,\n initialRunInputs,\n stepPhase,\n workflowSteps,\n type StepComposeOptions,\n} from './run'\nimport type { WorkflowDefinition, WorkflowInputs, WorkflowStepState } from './types'\nimport { useWorkflowView, type WorkflowRunView } from './useWorkflowView'\n\nexport interface UseWorkflowPreviewOptions extends StepComposeOptions {\n /** What a stand-in agent step answers; `{prompt}` is replaced with the prompt it would send. */\n answer?: string\n /** How long a stand-in step takes. */\n delayMs?: number\n}\n\nexport function useWorkflowPreview(\n workflow: WorkflowDefinition,\n { answer = '{prompt}', delayMs = 400, resolveWorkflow, compose }: UseWorkflowPreviewOptions = {}\n): WorkflowRunView {\n const steps = workflowSteps(workflow)\n const [inputs, setInputs] = useState<WorkflowInputs>(() => initialRunInputs(workflow))\n const [states, setStates] = useState<Record<string, WorkflowStepState>>({})\n const set = (id: string, state: WorkflowStepState) => setStates((s) => ({ ...s, [id]: state }))\n\n // A stand-in step's timer outlives the re-render its start causes; it is cleared on unmount, and\n // a step it cut short starts again (StrictMode mounts twice).\n const timers = useRef(new Map<string, ReturnType<typeof setTimeout>>())\n useEffect(() => {\n const pending = timers.current\n return () => {\n for (const t of pending.values()) clearTimeout(t)\n pending.clear()\n setStates((s) =>\n Object.fromEntries(\n Object.entries(s).map(([id, v]) => [\n id,\n v.status === 'running' ? { status: 'pending' } : v,\n ])\n )\n )\n }\n }, [])\n\n // One turn at a time: start the first ready agent step when nothing is running.\n useEffect(() => {\n if (Object.values(states).some((s) => s.status === 'running')) return\n // An action step (a signature, an email, a review) stands in the same way, with no answer.\n const next = steps.find(\n (s) =>\n (s.kind === 'agent' || s.kind === 'action') && stepPhase(steps, states, s.id) === 'ready'\n )\n if (!next || (next.kind !== 'agent' && next.kind !== 'action')) return\n const prompt =\n next.kind === 'agent'\n ? composeStepPrompt(workflow, next, inputs, { resolveWorkflow, compose })\n : ''\n set(next.id, { status: 'running', startedAt: new Date().toISOString() })\n timers.current.set(\n next.id,\n setTimeout(() => {\n timers.current.delete(next.id)\n set(\n next.id,\n next.kind === 'agent'\n ? { status: 'done', text: answer.replace('{prompt}', prompt) }\n : { status: 'done' }\n )\n }, delayMs)\n )\n // `inputs` are read when a step starts, not watched.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [states, steps, workflow])\n\n return useWorkflowView({\n steps,\n states,\n inputs,\n setInput: (name, value) => setInputs((i) => ({ ...i, [name]: value })),\n complete: async (step) => set(step.id, { status: 'done' }),\n skip: async (id) => set(id, { status: 'skipped' }),\n retry: async (id) => set(id, { status: 'pending' }),\n isLocked: (id) => states[id]?.status === 'done',\n })\n}\n"]}
1
+ {"version":3,"sources":["../src/agents/workflows/useWorkflowPreview.ts"],"names":["workflowSteps","useState","initialRunInputs","useRef","useEffect","stepPhase","composeStepPrompt","useWorkflowView"],"mappings":";;;;;;AAwBO,SAAS,kBAAA,CACd,QAAA,EACA,EAAE,MAAA,GAAS,UAAA,EAAY,OAAA,GAAU,GAAA,EAAK,eAAA,EAAiB,OAAA,EAAQ,GAA+B,EAAC,EAC9E;AACjB,EAAA,MAAM,KAAA,GAAQA,gCAAc,QAAQ,CAAA;AACpC,EAAA,MAAM,CAAC,QAAQ,SAAS,CAAA,GAAIC,eAAyB,MAAMC,kCAAA,CAAiB,QAAQ,CAAC,CAAA;AACrF,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAID,cAAA,CAA4C,EAAE,CAAA;AAC1E,EAAA,MAAM,GAAA,GAAM,CAAC,EAAA,EAAY,KAAA,KAA6B,UAAU,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,CAAC,EAAE,GAAG,OAAM,CAAE,CAAA;AAI9F,EAAA,MAAM,MAAA,GAASE,YAAA,iBAAO,IAAI,GAAA,EAA4C,CAAA;AACtE,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAU,MAAA,CAAO,OAAA;AACvB,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,MAAW,CAAA,IAAK,OAAA,CAAQ,MAAA,EAAO,eAAgB,CAAC,CAAA;AAChD,MAAA,OAAA,CAAQ,KAAA,EAAM;AACd,MAAA,SAAA;AAAA,QAAU,CAAC,MACT,MAAA,CAAO,WAAA;AAAA,UACL,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAE,IAAI,CAAC,CAAC,EAAA,EAAI,CAAC,CAAA,KAAM;AAAA,YACjC,EAAA;AAAA,YACA,EAAE,MAAA,KAAW,SAAA,GAAY,EAAE,MAAA,EAAQ,WAAU,GAAI;AAAA,WAClD;AAAA;AACH,OACF;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,KAAW,SAAS,CAAA,EAAG;AAE/D,IAAA,MAAM,OAAO,KAAA,CAAM,IAAA;AAAA,MACjB,CAAC,CAAA,KAAA,CACE,CAAA,CAAE,IAAA,KAAS,OAAA,IAAW,CAAA,CAAE,IAAA,KAAS,QAAA,KAAaC,2BAAA,CAAU,KAAA,EAAO,MAAA,EAAQ,CAAA,CAAE,EAAE,CAAA,KAAM;AAAA,KACtF;AACA,IAAA,IAAI,CAAC,IAAA,IAAS,IAAA,CAAK,SAAS,OAAA,IAAW,IAAA,CAAK,SAAS,QAAA,EAAW;AAChE,IAAA,MAAM,MAAA,GACJ,IAAA,CAAK,IAAA,KAAS,OAAA,GACVC,mCAAA,CAAkB,QAAA,EAAU,IAAA,EAAM,MAAA,EAAQ,EAAE,eAAA,EAAiB,OAAA,EAAS,CAAA,GACtE,EAAA;AACN,IAAA,GAAA,CAAI,IAAA,CAAK,EAAA,EAAI,EAAE,MAAA,EAAQ,SAAA,EAAW,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY,EAAG,CAAA;AACvE,IAAA,MAAA,CAAO,OAAA,CAAQ,GAAA;AAAA,MACb,IAAA,CAAK,EAAA;AAAA,MACL,WAAW,MAAM;AACf,QAAA,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA;AAC7B,QAAA,GAAA;AAAA,UACE,IAAA,CAAK,EAAA;AAAA,UACL,IAAA,CAAK,IAAA,KAAS,OAAA,GACV,EAAE,QAAQ,MAAA,EAAQ,IAAA,EAAM,MAAA,CAAO,OAAA,CAAQ,YAAY,MAAM,CAAA,EAAE,GAC3D,EAAE,QAAQ,MAAA;AAAO,SACvB;AAAA,MACF,GAAG,OAAO;AAAA,KACZ;AAAA,EAGF,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAA,EAAO,QAAQ,CAAC,CAAA;AAE5B,EAAA,OAAOC,iCAAA,CAAgB;AAAA,IACrB,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA,EAAU,CAAC,IAAA,EAAM,KAAA,KAAU,UAAU,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,CAAC,IAAI,GAAG,OAAM,CAAE,CAAA;AAAA,IACrE,QAAA,EAAU,OAAO,IAAA,KAAS,GAAA,CAAI,KAAK,EAAA,EAAI,EAAE,MAAA,EAAQ,MAAA,EAAQ,CAAA;AAAA,IACzD,IAAA,EAAM,OAAO,EAAA,KAAO,GAAA,CAAI,IAAI,EAAE,MAAA,EAAQ,WAAW,CAAA;AAAA,IACjD,KAAA,EAAO,OAAO,EAAA,KAAO,GAAA,CAAI,IAAI,EAAE,MAAA,EAAQ,WAAW,CAAA;AAAA,IAClD,UAAU,CAAC,EAAA,KAAO,MAAA,CAAO,EAAE,GAAG,MAAA,KAAW;AAAA,GAC1C,CAAA;AACH","file":"chunk-YYSBWMDJ.cjs","sourcesContent":["/**\n * A stepped workflow run on screen only (the builder's preview): agent steps run one at a time,\n * the way the server does, and answer with the prompt they would send; action steps just finish.\n * No thread, no agent.\n */\n\nimport { useEffect, useRef, useState } from 'react'\nimport {\n composeStepPrompt,\n initialRunInputs,\n stepPhase,\n workflowSteps,\n type StepComposeOptions,\n} from './run'\nimport type { WorkflowDefinition, WorkflowInputs, WorkflowStepState } from './types'\nimport { useWorkflowView, type WorkflowRunView } from './useWorkflowView'\n\nexport interface UseWorkflowPreviewOptions extends StepComposeOptions {\n /** What a stand-in agent step answers; `{prompt}` is replaced with the prompt it would send. */\n answer?: string\n /** How long a stand-in step takes. */\n delayMs?: number\n}\n\nexport function useWorkflowPreview(\n workflow: WorkflowDefinition,\n { answer = '{prompt}', delayMs = 400, resolveWorkflow, compose }: UseWorkflowPreviewOptions = {}\n): WorkflowRunView {\n const steps = workflowSteps(workflow)\n const [inputs, setInputs] = useState<WorkflowInputs>(() => initialRunInputs(workflow))\n const [states, setStates] = useState<Record<string, WorkflowStepState>>({})\n const set = (id: string, state: WorkflowStepState) => setStates((s) => ({ ...s, [id]: state }))\n\n // A stand-in step's timer outlives the re-render its start causes; it is cleared on unmount, and\n // a step it cut short starts again (StrictMode mounts twice).\n const timers = useRef(new Map<string, ReturnType<typeof setTimeout>>())\n useEffect(() => {\n const pending = timers.current\n return () => {\n for (const t of pending.values()) clearTimeout(t)\n pending.clear()\n setStates((s) =>\n Object.fromEntries(\n Object.entries(s).map(([id, v]) => [\n id,\n v.status === 'running' ? { status: 'pending' } : v,\n ])\n )\n )\n }\n }, [])\n\n // One turn at a time: start the first ready agent step when nothing is running.\n useEffect(() => {\n if (Object.values(states).some((s) => s.status === 'running')) return\n // An action step (a signature, an email, a review) stands in the same way, with no answer.\n const next = steps.find(\n (s) =>\n (s.kind === 'agent' || s.kind === 'action') && stepPhase(steps, states, s.id) === 'ready'\n )\n if (!next || (next.kind !== 'agent' && next.kind !== 'action')) return\n const prompt =\n next.kind === 'agent'\n ? composeStepPrompt(workflow, next, inputs, { resolveWorkflow, compose })\n : ''\n set(next.id, { status: 'running', startedAt: new Date().toISOString() })\n timers.current.set(\n next.id,\n setTimeout(() => {\n timers.current.delete(next.id)\n set(\n next.id,\n next.kind === 'agent'\n ? { status: 'done', text: answer.replace('{prompt}', prompt) }\n : { status: 'done' }\n )\n }, delayMs)\n )\n // `inputs` are read when a step starts, not watched.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [states, steps, workflow])\n\n return useWorkflowView({\n steps,\n states,\n inputs,\n setInput: (name, value) => setInputs((i) => ({ ...i, [name]: value })),\n complete: async (step) => set(step.id, { status: 'done' }),\n skip: async (id) => set(id, { status: 'skipped' }),\n retry: async (id) => set(id, { status: 'pending' }),\n isLocked: (id) => states[id]?.status === 'done',\n })\n}\n"]}
@@ -4,7 +4,7 @@
4
4
  var chunkVZKTOGZR_cjs = require('../chunk-VZKTOGZR.cjs');
5
5
  var chunkEOG6OT5I_cjs = require('../chunk-EOG6OT5I.cjs');
6
6
  require('../chunk-7G2LJMUG.cjs');
7
- var chunkVLCY46K6_cjs = require('../chunk-VLCY46K6.cjs');
7
+ var chunkTG2GM7WJ_cjs = require('../chunk-TG2GM7WJ.cjs');
8
8
  require('../chunk-E7TE2WVT.cjs');
9
9
  var chunkMOIZ2R5X_cjs = require('../chunk-MOIZ2R5X.cjs');
10
10
  require('../chunk-ULWRNGGE.cjs');
@@ -306,11 +306,11 @@ Object.defineProperty(exports, "validateContactForm", {
306
306
  });
307
307
  Object.defineProperty(exports, "DEFAULT_SHARE_CONTROL_LABELS", {
308
308
  enumerable: true,
309
- get: function () { return chunkVLCY46K6_cjs.DEFAULT_SHARE_CONTROL_LABELS; }
309
+ get: function () { return chunkTG2GM7WJ_cjs.DEFAULT_SHARE_CONTROL_LABELS; }
310
310
  });
311
311
  Object.defineProperty(exports, "ShareControl", {
312
312
  enumerable: true,
313
- get: function () { return chunkVLCY46K6_cjs.ShareControl; }
313
+ get: function () { return chunkTG2GM7WJ_cjs.ShareControl; }
314
314
  });
315
315
  Object.defineProperty(exports, "DEFAULT_DM_INVITE_CHIP_LABELS", {
316
316
  enumerable: true,
@@ -1,7 +1,14 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Share2 } from "lucide-react";
4
- import { Button, Tooltip, TooltipContent, TooltipTrigger, cn } from "@arbidocs/react/ui";
4
+ import {
5
+ Button,
6
+ Tooltip,
7
+ TooltipContent,
8
+ TooltipTrigger,
9
+ cn,
10
+ SharingEntity
11
+ } from "@arbidocs/react/ui";
5
12
  const DEFAULT_SHARE_CONTROL_LABELS = {
6
13
  share: "Share",
7
14
  shared: "Shared",
@@ -57,7 +64,8 @@ function ShareControl({
57
64
  /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, onFocusCapture: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsx("span", { className: "inline-flex", children: button }) }),
58
65
  /* @__PURE__ */ jsx(TooltipContent, { children: tooltipText })
59
66
  ] }) : button,
60
- showState && /* @__PURE__ */ jsx(
67
+ showState && state !== "mixed" && /* @__PURE__ */ jsx(SharingEntity, { shared: state === "shared", "data-testid": stateTestId }),
68
+ showState && state === "mixed" && /* @__PURE__ */ jsx(
61
69
  "span",
62
70
  {
63
71
  "data-slot": "share-state",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/collaboration/sharing/ShareControl.tsx"],
4
- "sourcesContent": ["import { Share2 } from 'lucide-react'\nimport { Button, Tooltip, TooltipContent, TooltipTrigger, cn } from '@arbidocs/react/ui'\nimport { testIdOr } from '../../chat/test-id'\n\n/** Visibility of the selection: every item shared, none shared, or a mix. */\nexport type ShareState = 'shared' | 'private' | 'mixed'\n\n/** Every fixed string of the share control. Pass a partial `labels` to translate or reword. */\nexport interface ShareControlLabels {\n share: string\n shared: string\n private: string\n mixed: string\n}\n\nexport const DEFAULT_SHARE_CONTROL_LABELS: ShareControlLabels = {\n share: 'Share',\n shared: 'Shared',\n private: 'Private',\n mixed: 'Partly shared',\n}\n\nexport interface ShareControlProps {\n state: ShareState\n /** `true` = make visible to the workspace, `false` = make private again. */\n onToggle: (shouldShare: boolean) => void\n disabled?: boolean\n /** Tooltip while disabled (why the user cannot change visibility). */\n disabledTooltip?: string\n /** What a click does in the current state (tooltip). Falls back to the label. */\n tooltip?: string\n /** `outline` for a header, `ghost` inside a floating bar. */\n variant?: 'outline' | 'ghost'\n /** Icon-only button (narrow headers); the accessible name stays \"Share\". */\n compact?: boolean\n /** Show the muted state pill (\"Shared\" / \"Private\") after the button. */\n showState?: boolean\n className?: string\n labels?: Partial<ShareControlLabels>\n /** Test id of the button (the app passes the current id). */\n testId?: string\n /** Test id of the state pill. */\n stateTestId?: string\n}\n\n/**\n * Share control: an outline (or ghost) \"Share\" button that flips visibility, with the current\n * state spelled out in a muted pill. Neutral tones only: sharing is a plain state, not an AI\n * moment, so there is no accent or cyan switch that could read as \"on\" while its label reads \"off\".\n */\nexport function ShareControl({\n state,\n onToggle,\n disabled = false,\n disabledTooltip,\n tooltip,\n variant = 'outline',\n compact = false,\n showState = true,\n className,\n labels,\n testId,\n stateTestId,\n}: ShareControlProps) {\n const l = { ...DEFAULT_SHARE_CONTROL_LABELS, ...labels }\n const stateLabel = state === 'shared' ? l.shared : state === 'mixed' ? l.mixed : l.private\n const tooltipText = disabled ? disabledTooltip : (tooltip ?? l.share)\n\n const button = (\n <Button\n type=\"button\"\n variant={variant}\n size={compact ? 'icon' : 'sm'}\n disabled={disabled}\n aria-label={l.share}\n aria-pressed={state === 'mixed' ? 'mixed' : state === 'shared'}\n data-slot=\"share-button\"\n data-testid={testId}\n onClick={(e) => {\n e.stopPropagation()\n onToggle(state !== 'shared')\n }}\n className=\"pointer-coarse:min-h-11 pointer-coarse:min-w-11\"\n >\n <Share2 className=\"size-4\" />\n {!compact && <span>{l.share}</span>}\n </Button>\n )\n\n return (\n <div\n data-slot=\"share-control\"\n className={cn('inline-flex shrink-0 items-center gap-2', className)}\n >\n {tooltipText ? (\n <Tooltip>\n {/* A disabled button swallows pointer events, so the tooltip hangs off a wrapper. */}\n <TooltipTrigger asChild onFocusCapture={(e) => e.stopPropagation()}>\n <span className=\"inline-flex\">{button}</span>\n </TooltipTrigger>\n <TooltipContent>{tooltipText}</TooltipContent>\n </Tooltip>\n ) : (\n button\n )}\n {showState && (\n <span\n data-slot=\"share-state\"\n data-state={state}\n data-testid={stateTestId}\n className=\"inline-flex h-6 items-center rounded-full bg-muted px-2 text-xs font-medium text-muted-foreground\"\n >\n {stateLabel}\n </span>\n )}\n </div>\n )\n}\n"],
5
- "mappings": ";AAqEI,SAeE,KAfF;AArEJ,SAAS,cAAc;AACvB,SAAS,QAAQ,SAAS,gBAAgB,gBAAgB,UAAU;AAc7D,MAAM,+BAAmD;AAAA,EAC9D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AACT;AA8BO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,IAAI,EAAE,GAAG,8BAA8B,GAAG,OAAO;AACvD,QAAM,aAAa,UAAU,WAAW,EAAE,SAAS,UAAU,UAAU,EAAE,QAAQ,EAAE;AACnF,QAAM,cAAc,WAAW,kBAAmB,WAAW,EAAE;AAE/D,QAAM,SACJ;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA,MAAM,UAAU,SAAS;AAAA,MACzB;AAAA,MACA,cAAY,EAAE;AAAA,MACd,gBAAc,UAAU,UAAU,UAAU,UAAU;AAAA,MACtD,aAAU;AAAA,MACV,eAAa;AAAA,MACb,SAAS,CAAC,MAAM;AACd,UAAE,gBAAgB;AAClB,iBAAS,UAAU,QAAQ;AAAA,MAC7B;AAAA,MACA,WAAU;AAAA,MAEV;AAAA,4BAAC,UAAO,WAAU,UAAS;AAAA,QAC1B,CAAC,WAAW,oBAAC,UAAM,YAAE,OAAM;AAAA;AAAA;AAAA,EAC9B;AAGF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MAEjE;AAAA,sBACC,qBAAC,WAEC;AAAA,8BAAC,kBAAe,SAAO,MAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAC/D,8BAAC,UAAK,WAAU,eAAe,kBAAO,GACxC;AAAA,UACA,oBAAC,kBAAgB,uBAAY;AAAA,WAC/B,IAEA;AAAA,QAED,aACC;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,cAAY;AAAA,YACZ,eAAa;AAAA,YACb,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;",
4
+ "sourcesContent": ["import { Share2 } from 'lucide-react'\nimport {\n Button,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cn,\n SharingEntity,\n} from '@arbidocs/react/ui'\nimport { testIdOr } from '../../chat/test-id'\n\n/** Visibility of the selection: every item shared, none shared, or a mix. */\nexport type ShareState = 'shared' | 'private' | 'mixed'\n\n/** Every fixed string of the share control. Pass a partial `labels` to translate or reword. */\nexport interface ShareControlLabels {\n share: string\n shared: string\n private: string\n mixed: string\n}\n\nexport const DEFAULT_SHARE_CONTROL_LABELS: ShareControlLabels = {\n share: 'Share',\n shared: 'Shared',\n private: 'Private',\n mixed: 'Partly shared',\n}\n\nexport interface ShareControlProps {\n state: ShareState\n /** `true` = make visible to the workspace, `false` = make private again. */\n onToggle: (shouldShare: boolean) => void\n disabled?: boolean\n /** Tooltip while disabled (why the user cannot change visibility). */\n disabledTooltip?: string\n /** What a click does in the current state (tooltip). Falls back to the label. */\n tooltip?: string\n /** `outline` for a header, `ghost` inside a floating bar. */\n variant?: 'outline' | 'ghost'\n /** Icon-only button (narrow headers); the accessible name stays \"Share\". */\n compact?: boolean\n /** Show the muted state pill (\"Shared\" / \"Private\") after the button. */\n showState?: boolean\n className?: string\n labels?: Partial<ShareControlLabels>\n /** Test id of the button (the app passes the current id). */\n testId?: string\n /** Test id of the state pill. */\n stateTestId?: string\n}\n\n/**\n * Share control: an outline (or ghost) \"Share\" button that flips visibility, with the current\n * state spelled out in a muted pill. Neutral tones only: sharing is a plain state, not an AI\n * moment, so there is no accent or cyan switch that could read as \"on\" while its label reads \"off\".\n */\nexport function ShareControl({\n state,\n onToggle,\n disabled = false,\n disabledTooltip,\n tooltip,\n variant = 'outline',\n compact = false,\n showState = true,\n className,\n labels,\n testId,\n stateTestId,\n}: ShareControlProps) {\n const l = { ...DEFAULT_SHARE_CONTROL_LABELS, ...labels }\n const stateLabel = state === 'shared' ? l.shared : state === 'mixed' ? l.mixed : l.private\n const tooltipText = disabled ? disabledTooltip : (tooltip ?? l.share)\n\n const button = (\n <Button\n type=\"button\"\n variant={variant}\n size={compact ? 'icon' : 'sm'}\n disabled={disabled}\n aria-label={l.share}\n aria-pressed={state === 'mixed' ? 'mixed' : state === 'shared'}\n data-slot=\"share-button\"\n data-testid={testId}\n onClick={(e) => {\n e.stopPropagation()\n onToggle(state !== 'shared')\n }}\n className=\"pointer-coarse:min-h-11 pointer-coarse:min-w-11\"\n >\n <Share2 className=\"size-4\" />\n {!compact && <span>{l.share}</span>}\n </Button>\n )\n\n return (\n <div\n data-slot=\"share-control\"\n className={cn('inline-flex shrink-0 items-center gap-2', className)}\n >\n {tooltipText ? (\n <Tooltip>\n {/* A disabled button swallows pointer events, so the tooltip hangs off a wrapper. */}\n <TooltipTrigger asChild onFocusCapture={(e) => e.stopPropagation()}>\n <span className=\"inline-flex\">{button}</span>\n </TooltipTrigger>\n <TooltipContent>{tooltipText}</TooltipContent>\n </Tooltip>\n ) : (\n button\n )}\n {showState && state !== 'mixed' && (\n <SharingEntity shared={state === 'shared'} data-testid={stateTestId} />\n )}\n {showState && state === 'mixed' && (\n <span\n data-slot=\"share-state\"\n data-state={state}\n data-testid={stateTestId}\n className=\"inline-flex h-6 items-center rounded-full bg-muted px-2 text-xs font-medium text-muted-foreground\"\n >\n {stateLabel}\n </span>\n )}\n </div>\n )\n}\n"],
5
+ "mappings": ";AA4EI,SAeE,KAfF;AA5EJ,SAAS,cAAc;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAcA,MAAM,+BAAmD;AAAA,EAC9D,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AACT;AA8BO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,IAAI,EAAE,GAAG,8BAA8B,GAAG,OAAO;AACvD,QAAM,aAAa,UAAU,WAAW,EAAE,SAAS,UAAU,UAAU,EAAE,QAAQ,EAAE;AACnF,QAAM,cAAc,WAAW,kBAAmB,WAAW,EAAE;AAE/D,QAAM,SACJ;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA,MAAM,UAAU,SAAS;AAAA,MACzB;AAAA,MACA,cAAY,EAAE;AAAA,MACd,gBAAc,UAAU,UAAU,UAAU,UAAU;AAAA,MACtD,aAAU;AAAA,MACV,eAAa;AAAA,MACb,SAAS,CAAC,MAAM;AACd,UAAE,gBAAgB;AAClB,iBAAS,UAAU,QAAQ;AAAA,MAC7B;AAAA,MACA,WAAU;AAAA,MAEV;AAAA,4BAAC,UAAO,WAAU,UAAS;AAAA,QAC1B,CAAC,WAAW,oBAAC,UAAM,YAAE,OAAM;AAAA;AAAA;AAAA,EAC9B;AAGF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAW,GAAG,2CAA2C,SAAS;AAAA,MAEjE;AAAA,sBACC,qBAAC,WAEC;AAAA,8BAAC,kBAAe,SAAO,MAAC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAC/D,8BAAC,UAAK,WAAU,eAAe,kBAAO,GACxC;AAAA,UACA,oBAAC,kBAAgB,uBAAY;AAAA,WAC/B,IAEA;AAAA,QAED,aAAa,UAAU,WACtB,oBAAC,iBAAc,QAAQ,UAAU,UAAU,eAAa,aAAa;AAAA,QAEtE,aAAa,UAAU,WACtB;AAAA,UAAC;AAAA;AAAA,YACC,aAAU;AAAA,YACV,cAAY;AAAA,YACZ,eAAa;AAAA,YACb,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Generic grid cell renderer for shared/private visibility state.
5
5
  * Works with any entity that has an external_id and shared/is_shared field.
6
- * Uses VisibilityToggle for consistent UI.
6
+ * Shown as the Sharing badge (Only me / Workspace); clicking it toggles.
7
7
  */
8
8
  export interface SharedItem {
9
9
  external_id: string;
@@ -18,9 +18,7 @@ export interface SharedCellProps<T extends SharedItem> {
18
18
  /** Replaces the default tooltips (e.g. documents say who can see the file). */
19
19
  tooltipActive?: string;
20
20
  tooltipInactive?: string;
21
- /** The host's name for a workspace, used in the default tooltips. */
22
- workspaceLabel?: string;
23
21
  }
24
- declare function SharedCellComponent<T extends SharedItem>({ item, onToggle, disabled, disabledTooltip, tooltipActive, tooltipInactive, workspaceLabel, }: SharedCellProps<T>): import("react").JSX.Element;
22
+ declare function SharedCellComponent<T extends SharedItem>({ item, onToggle, disabled, disabledTooltip, tooltipActive, tooltipInactive, }: SharedCellProps<T>): import("react").JSX.Element;
25
23
  export declare const SharedCell: typeof SharedCellComponent;
26
24
  export {};
@@ -1,15 +1,14 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
+ import { SharingEntity } from "@arbidocs/react/ui";
3
4
  import { memo } from "react";
4
- import { VisibilityToggle } from "@arbidocs/react/ui";
5
5
  function SharedCellComponent({
6
6
  item,
7
7
  onToggle,
8
8
  disabled = false,
9
9
  disabledTooltip,
10
10
  tooltipActive,
11
- tooltipInactive,
12
- workspaceLabel
11
+ tooltipInactive
13
12
  }) {
14
13
  const isShared = item.shared ?? item.is_shared ?? false;
15
14
  return /* @__PURE__ */ jsx(
@@ -18,16 +17,14 @@ function SharedCellComponent({
18
17
  className: "flex justify-center items-center h-full",
19
18
  "data-testid": `shared-cell-${item.external_id}`,
20
19
  children: /* @__PURE__ */ jsx(
21
- VisibilityToggle,
20
+ SharingEntity,
22
21
  {
23
- items: item,
22
+ shared: isShared,
24
23
  onToggle,
25
24
  disabled,
26
25
  disabledTooltip,
27
- showLabel: false,
28
26
  tooltipActive,
29
27
  tooltipInactive,
30
- workspaceLabel,
31
28
  "data-testid": `${isShared ? "active-share-button" : "inactive-share-button"}`
32
29
  }
33
30
  )
@@ -42,7 +39,6 @@ function arePropsEqual(prevProps, nextProps) {
42
39
  if (prevProps.disabledTooltip !== nextProps.disabledTooltip) return false;
43
40
  if (prevProps.tooltipActive !== nextProps.tooltipActive) return false;
44
41
  if (prevProps.tooltipInactive !== nextProps.tooltipInactive) return false;
45
- if (prevProps.workspaceLabel !== nextProps.workspaceLabel) return false;
46
42
  return true;
47
43
  }
48
44
  const SharedCell = memo(SharedCellComponent, arePropsEqual);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/components/SharedCell.tsx"],
4
- "sourcesContent": ["/**\n * SharedCell Component\n *\n * Generic grid cell renderer for shared/private visibility state.\n * Works with any entity that has an external_id and shared/is_shared field.\n * Uses VisibilityToggle for consistent UI.\n */\n\nimport { memo } from 'react'\nimport { VisibilityToggle } from '@arbidocs/react/ui'\n\nexport interface SharedItem {\n external_id: string\n shared?: boolean | null\n is_shared?: boolean | null\n}\n\nexport interface SharedCellProps<T extends SharedItem> {\n item: T\n onToggle: (shouldShare: boolean) => void\n disabled?: boolean\n disabledTooltip?: string\n /** Replaces the default tooltips (e.g. documents say who can see the file). */\n tooltipActive?: string\n tooltipInactive?: string\n /** The host's name for a workspace, used in the default tooltips. */\n workspaceLabel?: string\n}\n\nfunction SharedCellComponent<T extends SharedItem>({\n item,\n onToggle,\n disabled = false,\n disabledTooltip,\n tooltipActive,\n tooltipInactive,\n workspaceLabel,\n}: SharedCellProps<T>) {\n const isShared = item.shared ?? item.is_shared ?? false\n\n return (\n <div\n className=\"flex justify-center items-center h-full\"\n data-testid={`shared-cell-${item.external_id}`}\n >\n <VisibilityToggle\n items={item}\n onToggle={onToggle}\n disabled={disabled}\n disabledTooltip={disabledTooltip}\n showLabel={false}\n tooltipActive={tooltipActive}\n tooltipInactive={tooltipInactive}\n workspaceLabel={workspaceLabel}\n data-testid={`${isShared ? 'active-share-button' : 'inactive-share-button'}`}\n />\n </div>\n )\n}\n\n// Type-safe memo wrapper\nfunction arePropsEqual<T extends SharedItem>(\n prevProps: SharedCellProps<T>,\n nextProps: SharedCellProps<T>\n): boolean {\n if (prevProps.item.external_id !== nextProps.item.external_id) return false\n if (prevProps.item.shared !== nextProps.item.shared) return false\n if (prevProps.item.is_shared !== nextProps.item.is_shared) return false\n if (prevProps.disabled !== nextProps.disabled) return false\n if (prevProps.disabledTooltip !== nextProps.disabledTooltip) return false\n if (prevProps.tooltipActive !== nextProps.tooltipActive) return false\n if (prevProps.tooltipInactive !== nextProps.tooltipInactive) return false\n if (prevProps.workspaceLabel !== nextProps.workspaceLabel) return false\n // Note: onToggle is not compared as it should be stable (useCallback)\n return true\n}\n\nexport const SharedCell = memo(SharedCellComponent, arePropsEqual) as typeof SharedCellComponent\n"],
5
- "mappings": ";AA6CM;AArCN,SAAS,YAAY;AACrB,SAAS,wBAAwB;AAoBjC,SAAS,oBAA0C;AAAA,EACjD;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAuB;AACrB,QAAM,WAAW,KAAK,UAAU,KAAK,aAAa;AAElD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa,eAAe,KAAK,WAAW;AAAA,MAE5C;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA,eAAa,GAAG,WAAW,wBAAwB,uBAAuB;AAAA;AAAA,MAC5E;AAAA;AAAA,EACF;AAEJ;AAGA,SAAS,cACP,WACA,WACS;AACT,MAAI,UAAU,KAAK,gBAAgB,UAAU,KAAK,YAAa,QAAO;AACtE,MAAI,UAAU,KAAK,WAAW,UAAU,KAAK,OAAQ,QAAO;AAC5D,MAAI,UAAU,KAAK,cAAc,UAAU,KAAK,UAAW,QAAO;AAClE,MAAI,UAAU,aAAa,UAAU,SAAU,QAAO;AACtD,MAAI,UAAU,oBAAoB,UAAU,gBAAiB,QAAO;AACpE,MAAI,UAAU,kBAAkB,UAAU,cAAe,QAAO;AAChE,MAAI,UAAU,oBAAoB,UAAU,gBAAiB,QAAO;AACpE,MAAI,UAAU,mBAAmB,UAAU,eAAgB,QAAO;AAElE,SAAO;AACT;AAEO,MAAM,aAAa,KAAK,qBAAqB,aAAa;",
4
+ "sourcesContent": ["/**\n * SharedCell Component\n *\n * Generic grid cell renderer for shared/private visibility state.\n * Works with any entity that has an external_id and shared/is_shared field.\n * Shown as the Sharing badge (Only me / Workspace); clicking it toggles.\n */\n\nimport { SharingEntity } from '@arbidocs/react/ui'\nimport { memo } from 'react'\n\nexport interface SharedItem {\n external_id: string\n shared?: boolean | null\n is_shared?: boolean | null\n}\n\nexport interface SharedCellProps<T extends SharedItem> {\n item: T\n onToggle: (shouldShare: boolean) => void\n disabled?: boolean\n disabledTooltip?: string\n /** Replaces the default tooltips (e.g. documents say who can see the file). */\n tooltipActive?: string\n tooltipInactive?: string\n}\n\nfunction SharedCellComponent<T extends SharedItem>({\n item,\n onToggle,\n disabled = false,\n disabledTooltip,\n tooltipActive,\n tooltipInactive,\n}: SharedCellProps<T>) {\n const isShared = item.shared ?? item.is_shared ?? false\n\n return (\n <div\n className=\"flex justify-center items-center h-full\"\n data-testid={`shared-cell-${item.external_id}`}\n >\n <SharingEntity\n shared={isShared}\n onToggle={onToggle}\n disabled={disabled}\n disabledTooltip={disabledTooltip}\n tooltipActive={tooltipActive}\n tooltipInactive={tooltipInactive}\n data-testid={`${isShared ? 'active-share-button' : 'inactive-share-button'}`}\n />\n </div>\n )\n}\n\n// Type-safe memo wrapper\nfunction arePropsEqual<T extends SharedItem>(\n prevProps: SharedCellProps<T>,\n nextProps: SharedCellProps<T>\n): boolean {\n if (prevProps.item.external_id !== nextProps.item.external_id) return false\n if (prevProps.item.shared !== nextProps.item.shared) return false\n if (prevProps.item.is_shared !== nextProps.item.is_shared) return false\n if (prevProps.disabled !== nextProps.disabled) return false\n if (prevProps.disabledTooltip !== nextProps.disabledTooltip) return false\n if (prevProps.tooltipActive !== nextProps.tooltipActive) return false\n if (prevProps.tooltipInactive !== nextProps.tooltipInactive) return false\n // Note: onToggle is not compared as it should be stable (useCallback)\n return true\n}\n\nexport const SharedCell = memo(SharedCellComponent, arePropsEqual) as typeof SharedCellComponent\n"],
5
+ "mappings": ";AA0CM;AAlCN,SAAS,qBAAqB;AAC9B,SAAS,YAAY;AAkBrB,SAAS,oBAA0C;AAAA,EACjD;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,GAAuB;AACrB,QAAM,WAAW,KAAK,UAAU,KAAK,aAAa;AAElD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,eAAa,eAAe,KAAK,WAAW;AAAA,MAE5C;AAAA,QAAC;AAAA;AAAA,UACC,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,eAAa,GAAG,WAAW,wBAAwB,uBAAuB;AAAA;AAAA,MAC5E;AAAA;AAAA,EACF;AAEJ;AAGA,SAAS,cACP,WACA,WACS;AACT,MAAI,UAAU,KAAK,gBAAgB,UAAU,KAAK,YAAa,QAAO;AACtE,MAAI,UAAU,KAAK,WAAW,UAAU,KAAK,OAAQ,QAAO;AAC5D,MAAI,UAAU,KAAK,cAAc,UAAU,KAAK,UAAW,QAAO;AAClE,MAAI,UAAU,aAAa,UAAU,SAAU,QAAO;AACtD,MAAI,UAAU,oBAAoB,UAAU,gBAAiB,QAAO;AACpE,MAAI,UAAU,kBAAkB,UAAU,cAAe,QAAO;AAChE,MAAI,UAAU,oBAAoB,UAAU,gBAAiB,QAAO;AAEpE,SAAO;AACT;AAEO,MAAM,aAAa,KAAK,qBAAqB,aAAa;",
6
6
  "names": []
7
7
  }
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkHB2O4THB_cjs = require('../chunk-HB2O4THB.cjs');
5
- var chunkQHOHDNBU_cjs = require('../chunk-QHOHDNBU.cjs');
4
+ var chunk5IZFSAEZ_cjs = require('../chunk-5IZFSAEZ.cjs');
5
+ var chunkVZCPMXWC_cjs = require('../chunk-VZCPMXWC.cjs');
6
6
  require('../chunk-YGBHY67W.cjs');
7
7
  require('../chunk-COD5ENHK.cjs');
8
8
  require('../chunk-2CSLFAGF.cjs');
9
9
  require('../chunk-GA5ZO4YA.cjs');
10
10
  require('../chunk-VG5XNE4H.cjs');
11
11
  require('../chunk-DDWLMYRO.cjs');
12
- var chunkVGCTYTEW_cjs = require('../chunk-VGCTYTEW.cjs');
12
+ var chunkECLUFKYR_cjs = require('../chunk-ECLUFKYR.cjs');
13
13
  require('../chunk-4ONPEVTP.cjs');
14
14
  require('../chunk-V3KLUWQQ.cjs');
15
15
  require('../chunk-P5AQYC4D.cjs');
@@ -18,7 +18,7 @@ require('../chunk-ZESMRGDV.cjs');
18
18
  require('../chunk-UKOYN2WD.cjs');
19
19
  require('../chunk-RC25WMVB.cjs');
20
20
  require('../chunk-VKH3BEZE.cjs');
21
- require('../chunk-R7CJEIA5.cjs');
21
+ require('../chunk-QQWHG3KF.cjs');
22
22
  require('../chunk-3YEXZX4H.cjs');
23
23
  require('../chunk-4PA6VCCR.cjs');
24
24
  require('../chunk-WXUU3COI.cjs');
@@ -48,25 +48,25 @@ require('../chunk-PLIF5CUV.cjs');
48
48
  var react = require('react');
49
49
 
50
50
  function useConnectedMailWordEditor() {
51
- const adapter = chunkVGCTYTEW_cjs.useConnectedNativeDocxAdapter();
51
+ const adapter = chunkECLUFKYR_cjs.useConnectedNativeDocxAdapter();
52
52
  return react.useMemo(() => ({ adapter }), [adapter]);
53
53
  }
54
54
 
55
55
  Object.defineProperty(exports, "ConnectedStreamedWordArtifact", {
56
56
  enumerable: true,
57
- get: function () { return chunkHB2O4THB_cjs.ConnectedStreamedWordArtifact; }
57
+ get: function () { return chunk5IZFSAEZ_cjs.ConnectedStreamedWordArtifact; }
58
58
  });
59
59
  Object.defineProperty(exports, "ConnectedNativeDocxComparison", {
60
60
  enumerable: true,
61
- get: function () { return chunkQHOHDNBU_cjs.ConnectedNativeDocxComparison; }
61
+ get: function () { return chunkVZCPMXWC_cjs.ConnectedNativeDocxComparison; }
62
62
  });
63
63
  Object.defineProperty(exports, "ConnectedNativeDocxEditor", {
64
64
  enumerable: true,
65
- get: function () { return chunkVGCTYTEW_cjs.ConnectedNativeDocxEditor; }
65
+ get: function () { return chunkECLUFKYR_cjs.ConnectedNativeDocxEditor; }
66
66
  });
67
67
  Object.defineProperty(exports, "useConnectedNativeDocxAdapter", {
68
68
  enumerable: true,
69
- get: function () { return chunkVGCTYTEW_cjs.useConnectedNativeDocxAdapter; }
69
+ get: function () { return chunkECLUFKYR_cjs.useConnectedNativeDocxAdapter; }
70
70
  });
71
71
  exports.useConnectedMailWordEditor = useConnectedMailWordEditor;
72
72
  //# sourceMappingURL=docx.cjs.map