@feathery/react 2.43.0 → 2.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/cjs/Form/grid/Element/index.d.ts.map +1 -1
  2. package/cjs/Form/index.d.ts.map +1 -1
  3. package/cjs/assistant/AssistantChat.d.ts.map +1 -1
  4. package/cjs/assistant/AssistantClient.d.ts +30 -6
  5. package/cjs/assistant/AssistantClient.d.ts.map +1 -1
  6. package/cjs/assistant/ToolStatus.d.ts.map +1 -1
  7. package/cjs/assistant/tools/clickElement.d.ts +4 -3
  8. package/cjs/assistant/tools/clickElement.d.ts.map +1 -1
  9. package/cjs/assistant/tools/panelRuntime.d.ts +18 -1
  10. package/cjs/assistant/tools/panelRuntime.d.ts.map +1 -1
  11. package/cjs/assistant/tools/setFieldValue.d.ts +15 -23
  12. package/cjs/assistant/tools/setFieldValue.d.ts.map +1 -1
  13. package/cjs/assistant/tools/tableMutations.d.ts +36 -0
  14. package/cjs/assistant/tools/tableMutations.d.ts.map +1 -0
  15. package/cjs/assistant/tools/triggerTableAction.d.ts +17 -0
  16. package/cjs/assistant/tools/triggerTableAction.d.ts.map +1 -0
  17. package/cjs/assistant/tools/utils.d.ts +33 -0
  18. package/cjs/assistant/tools/utils.d.ts.map +1 -0
  19. package/cjs/assistant/utils.d.ts +0 -1
  20. package/cjs/assistant/utils.d.ts.map +1 -1
  21. package/cjs/elements/basic/TableElement/index.d.ts +1 -1
  22. package/cjs/elements/basic/TableElement/index.d.ts.map +1 -1
  23. package/cjs/{fthry_AssistantChat.Dc6irzAk.js → fthry_AssistantChat.DAuwndVq.js} +951 -327
  24. package/cjs/{fthry_FormControl.D_eydQlT.js → fthry_FormControl.BBY2Jye4.js} +1 -1
  25. package/cjs/{fthry_InlineTooltip.Km0nxBV3.js → fthry_InlineTooltip.HDk3cIr4.js} +2 -2
  26. package/cjs/{fthry_Overlay.ChABiy0m.js → fthry_Overlay.AOeUL6CY.js} +1 -1
  27. package/cjs/{fthry_PaymentMethodField.BMABompY.js → fthry_PaymentMethodField.CoyAoL1E.js} +4 -4
  28. package/cjs/{fthry_Placeholder.CnNGDD_K.js → fthry_Placeholder.B7ueqeue.js} +1 -1
  29. package/cjs/{fthry_ShowEyeIcon.Cozhh36m.js → fthry_ShowEyeIcon.BQYvZcHZ.js} +1 -1
  30. package/cjs/{fthry_auto-track.CzyR3umO.js → fthry_auto-track.D-HB881s.js} +2 -2
  31. package/cjs/{fthry_highlighted-body-TPN3WLV5.D8LjPUtI.js → fthry_highlighted-body-TPN3WLV5.B-UeFUOm.js} +3 -3
  32. package/cjs/{fthry_index.H4GgWRQ-.js → fthry_index.B0i-spOd.js} +1 -1
  33. package/cjs/{fthry_index.DcnmaMvN.js → fthry_index.B1B09obP.js} +2 -2
  34. package/cjs/{fthry_index.BYJ0Cjz1.js → fthry_index.B1Eop7YX.js} +1 -1
  35. package/cjs/{fthry_index.B76xVeoK.js → fthry_index.B490AqCR.js} +10 -10
  36. package/cjs/{fthry_index.BVLMhJHP.js → fthry_index.B4GgIpQf.js} +37 -20
  37. package/cjs/{fthry_index.WbKUUcdS.js → fthry_index.BYK-L6cT.js} +1 -1
  38. package/cjs/{fthry_index.5oiWIOUK.js → fthry_index.BkUaB2ep.js} +1 -1
  39. package/cjs/{fthry_index.B5TkPpn3.js → fthry_index.BlaJBDFt.js} +2 -2
  40. package/cjs/{fthry_index.CsV6zv_0.js → fthry_index.Bz8jOUz8.js} +5 -5
  41. package/cjs/{fthry_index.wTd_xpVX.js → fthry_index.C3_3Pwba.js} +4 -4
  42. package/cjs/{fthry_index.BNFRKqrl.js → fthry_index.CCAjA-GM.js} +5 -5
  43. package/cjs/{fthry_index.8ZkixEuX.js → fthry_index.CCnbb7qW.js} +2 -2
  44. package/cjs/{fthry_index.BPu5GDF3.js → fthry_index.CK7AyNj-.js} +5 -5
  45. package/cjs/{fthry_index.DfOk3_Vc.js → fthry_index.COUEU8oT.js} +1 -1
  46. package/cjs/{fthry_index.D7jBFEkz.js → fthry_index.CPY3r_AI.js} +1 -1
  47. package/cjs/{fthry_index._pqB5lCu.js → fthry_index.CX2hoNP2.js} +8 -8
  48. package/cjs/{fthry_index.B4qsX_2B.js → fthry_index.CZvkZw_L.js} +4 -4
  49. package/cjs/{fthry_index.Cj8NIIWS.js → fthry_index.CdveGKXm.js} +6 -6
  50. package/cjs/{fthry_index.DMmTH04s.js → fthry_index.CekatTq6.js} +2 -2
  51. package/cjs/{fthry_index.B7Slrn_2.js → fthry_index.Cyo-XM28.js} +1 -1
  52. package/cjs/{fthry_index.KMyCBmte.js → fthry_index.DMtFsERM.js} +1 -1
  53. package/cjs/{fthry_index.Crv5Oqdb.js → fthry_index.DWqC5u1r.js} +6 -6
  54. package/cjs/{fthry_index.B-QAg85r.js → fthry_index.DfW7mZvC.js} +6 -6
  55. package/cjs/{fthry_index.Cj3i1JIs.js → fthry_index.RhMho_qJ.js} +1 -1
  56. package/cjs/{fthry_index.Dn7k0XbZ.js → fthry_index.Y5sdcMuJ.js} +231 -160
  57. package/cjs/{fthry_index.x_Q9efXs.js → fthry_index.dJ1e0A0z.js} +2 -2
  58. package/cjs/{fthry_index.B79ksg_6.js → fthry_index.dpt4VGCO.js} +2 -2
  59. package/cjs/{fthry_index.D6PlFvY8.js → fthry_index.egNqBHHX.js} +5 -5
  60. package/cjs/{fthry_index.DoliEMOD.js → fthry_index.h6YgYU9U.js} +3 -3
  61. package/cjs/{fthry_index.CMRH7foG.js → fthry_index.mST6-9JW.js} +6 -6
  62. package/cjs/{fthry_index.ecHJPvgK.js → fthry_index.r4vMrBms.js} +3 -3
  63. package/cjs/{fthry_index.umd.lxnwBuEl.js → fthry_index.umd.DqxbfufN.js} +1 -1
  64. package/cjs/{fthry_input.DJaKnXqS.js → fthry_input.DVS9sAJL.js} +1 -1
  65. package/cjs/{fthry_mermaid-O7DHMXV3.CyaPsnki.js → fthry_mermaid-O7DHMXV3.DVvaFs3q.js} +3 -3
  66. package/cjs/{fthry_script.DrFnB8ud.js → fthry_script.tMNEKNS0.js} +1 -1
  67. package/cjs/{fthry_styles.qeOM9hPF.js → fthry_styles.CLnNcAaC.js} +1 -1
  68. package/cjs/{fthry_useElementSize.K1QGuhUj.js → fthry_useElementSize.WUoc10bB.js} +1 -1
  69. package/cjs/{fthry_useSalesforceSync.DQd2UZn6.js → fthry_useSalesforceSync.HL0c5o2I.js} +1 -1
  70. package/cjs/{fthry_webfontloader.D6aR0hiT.js → fthry_webfontloader.BccGkoV1.js} +1 -1
  71. package/cjs/index.d.ts +1 -1
  72. package/cjs/index.js +1 -1
  73. package/cjs/utils/button.d.ts +2 -0
  74. package/cjs/utils/button.d.ts.map +1 -0
  75. package/cjs/utils/formContext.d.ts +1 -1
  76. package/cjs/utils/formContext.d.ts.map +1 -1
  77. package/cjs/utils/hideAndRepeats.d.ts.map +1 -1
  78. package/cjs/utils/repeat.d.ts +5 -0
  79. package/cjs/utils/repeat.d.ts.map +1 -1
  80. package/dist/Form/grid/Element/index.d.ts.map +1 -1
  81. package/dist/Form/index.d.ts.map +1 -1
  82. package/dist/assistant/AssistantChat.d.ts.map +1 -1
  83. package/dist/assistant/AssistantClient.d.ts +30 -6
  84. package/dist/assistant/AssistantClient.d.ts.map +1 -1
  85. package/dist/assistant/ToolStatus.d.ts.map +1 -1
  86. package/dist/assistant/tools/clickElement.d.ts +4 -3
  87. package/dist/assistant/tools/clickElement.d.ts.map +1 -1
  88. package/dist/assistant/tools/panelRuntime.d.ts +18 -1
  89. package/dist/assistant/tools/panelRuntime.d.ts.map +1 -1
  90. package/dist/assistant/tools/setFieldValue.d.ts +15 -23
  91. package/dist/assistant/tools/setFieldValue.d.ts.map +1 -1
  92. package/dist/assistant/tools/tableMutations.d.ts +36 -0
  93. package/dist/assistant/tools/tableMutations.d.ts.map +1 -0
  94. package/dist/assistant/tools/triggerTableAction.d.ts +17 -0
  95. package/dist/assistant/tools/triggerTableAction.d.ts.map +1 -0
  96. package/dist/assistant/tools/utils.d.ts +33 -0
  97. package/dist/assistant/tools/utils.d.ts.map +1 -0
  98. package/dist/assistant/utils.d.ts +0 -1
  99. package/dist/assistant/utils.d.ts.map +1 -1
  100. package/dist/elements/basic/TableElement/index.d.ts +1 -1
  101. package/dist/elements/basic/TableElement/index.d.ts.map +1 -1
  102. package/dist/{fthry_AssistantChat.D2SjzX88.js → fthry_AssistantChat.B0rVOGHi.js} +951 -327
  103. package/dist/{fthry_FormControl.AWZ2hRhb.js → fthry_FormControl.BqvIXsOg.js} +1 -1
  104. package/dist/{fthry_InlineTooltip.DAaWNMEQ.js → fthry_InlineTooltip.DpFz4-7q.js} +2 -2
  105. package/dist/{fthry_Overlay.C500WG6U.js → fthry_Overlay.D9YOHNgQ.js} +1 -1
  106. package/dist/{fthry_PaymentMethodField.Bl2Ce36L.js → fthry_PaymentMethodField.BgiWNDi2.js} +4 -4
  107. package/dist/{fthry_Placeholder.DXrZi2ze.js → fthry_Placeholder.C5ezRBA4.js} +1 -1
  108. package/dist/{fthry_ShowEyeIcon.D3iEMZA7.js → fthry_ShowEyeIcon.CRfFKHIW.js} +1 -1
  109. package/dist/{fthry_auto-track.C9HCW4qJ.js → fthry_auto-track.Bo4ek9UM.js} +2 -2
  110. package/dist/{fthry_highlighted-body-TPN3WLV5.j0rrY2PD.js → fthry_highlighted-body-TPN3WLV5.aBNiR5uT.js} +3 -3
  111. package/dist/{fthry_index.BDtWG5y-.js → fthry_index.2-SVehmd.js} +5 -5
  112. package/dist/{fthry_index.CS604ePK.js → fthry_index.5I1jwuyV.js} +2 -2
  113. package/dist/{fthry_index.CB6eTYmX.js → fthry_index.B477V46H.js} +5 -5
  114. package/dist/{fthry_index.BHbPxMcy.js → fthry_index.BAwP5nZO.js} +2 -2
  115. package/dist/{fthry_index.DOGU2-kQ.js → fthry_index.BDb1Gbdx.js} +5 -5
  116. package/dist/{fthry_index.IaraEDTR.js → fthry_index.BJAfme_C.js} +1 -1
  117. package/dist/{fthry_index.Cd0JKkOc.js → fthry_index.BUJPgzS-.js} +8 -8
  118. package/dist/{fthry_index.DtHlcCDX.js → fthry_index.BZayCCtc.js} +1 -1
  119. package/dist/{fthry_index.C9P7Vo6r.js → fthry_index.Bf6OzsUG.js} +1 -1
  120. package/dist/{fthry_index.D3O1Qvm3.js → fthry_index.BgDe4mcu.js} +3 -3
  121. package/dist/{fthry_index.DzDuGB1B.js → fthry_index.Bl-5T-uf.js} +6 -6
  122. package/dist/{fthry_index.DA5HHbVe.js → fthry_index.BmyShbTY.js} +1 -1
  123. package/dist/{fthry_index.BlrVY1vE.js → fthry_index.BzD8ur9K.js} +6 -6
  124. package/dist/{fthry_index.Co2zkJCZ.js → fthry_index.C8884q_s.js} +1 -1
  125. package/dist/{fthry_index.DFZRIGNF.js → fthry_index.CEMzrwVK.js} +2 -2
  126. package/dist/{fthry_index.OgRdIE07.js → fthry_index.CMC6lbTE.js} +5 -5
  127. package/dist/{fthry_index.BALrl_Ek.js → fthry_index.Cgd-qpYl.js} +4 -4
  128. package/dist/{fthry_index.4rXsgo8n.js → fthry_index.CvV7-AsF.js} +6 -6
  129. package/dist/{fthry_index.DAdR6bYe.js → fthry_index.DT62a6WV.js} +2 -2
  130. package/dist/{fthry_index.BjZmdaIR.js → fthry_index.DZ8TqVOz.js} +2 -2
  131. package/dist/{fthry_index.Cn4kA2tn.js → fthry_index.DnucOK6E.js} +10 -10
  132. package/dist/{fthry_index.D8_hWgYx.js → fthry_index.DzSlJMlO.js} +1 -1
  133. package/dist/{fthry_index.D2-zTdBQ.js → fthry_index.GDe8zYB6.js} +1 -1
  134. package/dist/{fthry_index.0DlQOa4l.js → fthry_index.M1FS-2Qf.js} +1 -1
  135. package/dist/{fthry_index.C-Af9t8c.js → fthry_index.RlS2LjeY.js} +5 -5
  136. package/dist/{fthry_index.C8xVXq31.js → fthry_index.V6ue96dZ.js} +3 -3
  137. package/dist/{fthry_index.-lEiRiJ3.js → fthry_index.d6j0MJN7.js} +2 -2
  138. package/dist/{fthry_index.DZviU_0h.js → fthry_index.lm4XUzM9.js} +37 -20
  139. package/dist/{fthry_index.x_DcI6GR.js → fthry_index.o9ctQnbs.js} +4 -4
  140. package/dist/{fthry_index.D5dmTp6g.js → fthry_index.pBEjY7tP.js} +1 -1
  141. package/dist/{fthry_index.umd.BhHG1ThX.js → fthry_index.umd.C338HmM7.js} +1 -1
  142. package/dist/{fthry_index.BoXwpo3p.js → fthry_index.wB8tEXQD.js} +227 -161
  143. package/dist/{fthry_input.Y2HVhQeo.js → fthry_input.EFXGfxnr.js} +1 -1
  144. package/dist/{fthry_mermaid-O7DHMXV3._Ng2DeVi.js → fthry_mermaid-O7DHMXV3.sOtzPg8E.js} +3 -3
  145. package/dist/{fthry_script.4cQVioC4.js → fthry_script.CnpXNBMs.js} +1 -1
  146. package/dist/{fthry_styles.DX0NUnVP.js → fthry_styles.DzxChSu4.js} +1 -1
  147. package/dist/{fthry_useElementSize.BCbe9jZd.js → fthry_useElementSize.BftEHcYN.js} +1 -1
  148. package/dist/{fthry_useSalesforceSync.DJFGoBIG.js → fthry_useSalesforceSync.B04DdqRz.js} +1 -1
  149. package/dist/{fthry_webfontloader.4kqCCEG_.js → fthry_webfontloader.sk5QAqQz.js} +1 -1
  150. package/dist/index.d.ts +1 -1
  151. package/dist/index.js +1 -1
  152. package/dist/utils/button.d.ts +2 -0
  153. package/dist/utils/button.d.ts.map +1 -0
  154. package/dist/utils/formContext.d.ts +1 -1
  155. package/dist/utils/formContext.d.ts.map +1 -1
  156. package/dist/utils/hideAndRepeats.d.ts.map +1 -1
  157. package/dist/utils/repeat.d.ts +5 -0
  158. package/dist/utils/repeat.d.ts.map +1 -1
  159. package/package.json +2 -2
  160. package/umd/AssistantChat.685c311fcfd51a09112e.js +1 -0
  161. package/umd/{TableElement.fef6a362cfa150f0f38e.js → TableElement.e3da137819e9b84b3b82.js} +1 -1
  162. package/umd/index.js +1 -1
  163. package/umd/AssistantChat.879f86967feffba1cc6f.js +0 -1
@@ -1,9 +1,9 @@
1
- import { C as getDefaultExportFromCjs, a as jsx, _ as __assign, j as jsxs, c as __read, L as __spreadArray, e as css, l as __awaiter, m as __generator, U as __values, aw as internalState, ax as initState, B as replaceTextVariables, ay as setFieldValues, az as loadPhoneValidator, T as phoneLibPromise, Q as phoneLib, aA as initInfo, aB as getCookie, p as featheryWindow, t as featheryDoc, q as Fragment$1, aC as v4 } from './fthry_index.BoXwpo3p.js';
1
+ import { C as getDefaultExportFromCjs, a as jsx, _ as __assign, j as jsxs, c as __read, L as __spreadArray, e as css, l as __awaiter, m as __generator, aw as internalState, ax as getPositionKey, U as __values, ay as initState, az as getRepeatedContainers, aA as getRepeatedContainer, aB as getDefaultFieldValue, aC as isButtonDisabled, B as replaceTextVariables, aD as loadPhoneValidator, T as phoneLibPromise, Q as phoneLib, aE as initInfo, aF as getCookie, p as featheryWindow, t as featheryDoc, q as Fragment$1, aG as v4 } from './fthry_index.wB8tEXQD.js';
2
2
  import { useRef, useCallback, useSyncExternalStore, useEffect, useState, memo, useId, useTransition, useMemo, cloneElement, createElement, createContext, isValidElement, useContext, Suspense, lazy as lazy$1, Fragment as Fragment$2 } from 'react';
3
3
  import { c as clsx } from './fthry_clsx.ChV9xqsO.js';
4
4
  import { jsx as jsx$1, jsxs as jsxs$1, Fragment } from 'react/jsx-runtime';
5
5
  import { createPortal } from 'react-dom';
6
- import { s as stateMap } from './fthry_index.D5dmTp6g.js';
6
+ import { s as stateMap } from './fthry_index.pBEjY7tP.js';
7
7
 
8
8
  // src/errors/ai-sdk-error.ts
9
9
  var marker = "vercel.ai.error";
@@ -9801,15 +9801,39 @@ var getChatColors = function (primary) { return ({
9801
9801
  }); };
9802
9802
 
9803
9803
  var TOOL_LABELS = {
9804
- searchDocuments: {
9805
- running: 'Searching documents...',
9806
- done: 'Searched the documents'
9807
- },
9808
9804
  searchWeb: {
9809
9805
  running: 'Searching the web...',
9810
9806
  done: 'Searched the web'
9811
9807
  },
9812
9808
  scrapeUrl: { running: 'Reading web page...', done: 'Read the web page' },
9809
+ searchDocuments: {
9810
+ running: 'Searching documents...',
9811
+ done: 'Searched the documents'
9812
+ },
9813
+ setFieldValue: {
9814
+ running: 'Updating form fields...',
9815
+ done: 'Updated form fields'
9816
+ },
9817
+ clickElement: {
9818
+ running: 'Running form action...',
9819
+ done: 'Ran the form action'
9820
+ },
9821
+ addTableRow: {
9822
+ running: 'Adding a row...',
9823
+ done: 'Added a row'
9824
+ },
9825
+ deleteTableRow: {
9826
+ running: 'Deleting a row...',
9827
+ done: 'Deleted a row'
9828
+ },
9829
+ setTableCellValue: {
9830
+ running: 'Updating table cells...',
9831
+ done: 'Updated table cells'
9832
+ },
9833
+ triggerTableAction: {
9834
+ running: 'Running table action...',
9835
+ done: 'Ran the table action'
9836
+ },
9813
9837
  getPanelSnapshot: {
9814
9838
  running: 'Reading the form...',
9815
9839
  done: 'Reviewed the form'
@@ -9818,10 +9842,6 @@ var TOOL_LABELS = {
9818
9842
  running: 'Looking up your submission...',
9819
9843
  done: 'Reviewed the submission'
9820
9844
  },
9821
- listFormExtractions: {
9822
- running: 'Looking up extractions...',
9823
- done: 'Reviewed available extractions'
9824
- },
9825
9845
  getExtractionSnapshot: {
9826
9846
  running: 'Reading extraction setup...',
9827
9847
  done: 'Reviewed the extraction setup'
@@ -9830,13 +9850,9 @@ var TOOL_LABELS = {
9830
9850
  running: 'Reading extraction results...',
9831
9851
  done: 'Reviewed the extraction results'
9832
9852
  },
9833
- setFieldValue: {
9834
- running: 'Updating form fields...',
9835
- done: 'Updated form fields'
9836
- },
9837
- clickElement: {
9838
- running: 'Just a moment...',
9839
- done: 'Triggered a form action'
9853
+ listFormExtractions: {
9854
+ running: 'Looking up extractions...',
9855
+ done: 'Reviewed available extractions'
9840
9856
  },
9841
9857
  getLogicRules: {
9842
9858
  running: 'Reading form logic...',
@@ -51272,14 +51288,14 @@ ${e}</tr>
51272
51288
  Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+T(n.message+"",true)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var L$1=new D;function g(u,e){return L$1.parse(u,e)}g.options=g.setOptions=function(u){return L$1.setOptions(u),g.defaults=L$1.defaults,G(g.defaults),g};g.getDefaults=M;g.defaults=O;g.use=function(...u){return L$1.use(...u),g.defaults=L$1.defaults,G(g.defaults),g};g.walkTokens=function(u,e){return L$1.walkTokens(u,e)};g.parseInline=L$1.parseInline;g.Parser=b;g.parser=b.parse;g.Renderer=y$1;g.TextRenderer=$;g.Lexer=x;g.lexer=x.lex;g.Tokenizer=w;g.Hooks=P;g.parse=g;g.options;g.setOptions;g.use;g.walkTokens;g.parseInline;b.parse;x.lex;
51273
51289
 
51274
51290
  var En=300,Hn="300px",Dn=500;function Lt(e={}){let{immediate:t=false,debounceDelay:o=En,rootMargin:n=Hn,idleTimeout:r=Dn}=e,[s,a]=useState(false),l=useRef(null),i=useRef(null),c=useRef(null),d=useMemo(()=>p=>{let g=Date.now();return window.setTimeout(()=>{p({didTimeout:false,timeRemaining:()=>Math.max(0,50-(Date.now()-g))});},1)},[]),u=useMemo(()=>typeof window!="undefined"&&window.requestIdleCallback?(p,g)=>window.requestIdleCallback(p,g):d,[d]),m=useMemo(()=>typeof window!="undefined"&&window.cancelIdleCallback?p=>window.cancelIdleCallback(p):p=>{clearTimeout(p);},[]);return useEffect(()=>{if(t){a(true);return}let p=l.current;if(!p)return;i.current&&(clearTimeout(i.current),i.current=null),c.current&&(m(c.current),c.current=null);let g=()=>{i.current&&(clearTimeout(i.current),i.current=null),c.current&&(m(c.current),c.current=null);},h=x=>{c.current=u(w=>{w.timeRemaining()>0||w.didTimeout?(a(true),x.disconnect()):c.current=u(()=>{a(true),x.disconnect();},{timeout:r/2});},{timeout:r});},b=x=>{g(),i.current=window.setTimeout(()=>{var I,H;let w=x.takeRecords();(w.length===0||(H=(I=w.at(-1))==null?void 0:I.isIntersecting)!=null&&H)&&h(x);},o);},f=(x,w)=>{x.isIntersecting?b(w):g();},T=new IntersectionObserver(x=>{for(let w of x)f(w,T);},{rootMargin:n,threshold:0});return T.observe(p),()=>{i.current&&clearTimeout(i.current),c.current&&m(c.current),T.disconnect();}},[t,o,n,r,m,u]),{shouldRender:s,containerRef:l}}var Rt=/\s/,On=/^\s+$/,Vn=new Set(["code","pre","svg","math","annotation"]),jn=e=>typeof e=="object"&&e!==null&&"type"in e&&e.type==="element",Fn=e=>e.some(t=>jn(t)&&Vn.has(t.tagName)),zn=e=>{let t=[],o="",n=false;for(let r of e){let s=Rt.test(r);s!==n&&o&&(t.push(o),o=""),o+=r,n=s;}return o&&t.push(o),t},_n=e=>{let t=[],o="";for(let n of e)Rt.test(n)?o+=n:(o&&(t.push(o),o=""),t.push(n));return o&&t.push(o),t},qn=(e,t,o,n,r)=>({type:"element",tagName:"span",properties:{"data-sd-animate":true,style:r?`--sd-animation:sd-${t};--sd-duration:0ms;--sd-easing:${n}`:`--sd-animation:sd-${t};--sd-duration:${o}ms;--sd-easing:${n}`},children:[{type:"text",value:e}]}),$n=(e,t,o,n,r)=>{let s=t.at(-1);if(!(s&&"children"in s))return;if(Fn(t))return SKIP;let a=s,l=a.children.indexOf(e);if(l===-1)return;let i=e.value;if(!i.trim()){r.count+=i.length;return}let c=o.sep==="char"?_n(i):zn(i),d=n.prevContentLength,u=c.map(m=>{let p=r.count;if(r.count+=m.length,On.test(m))return {type:"text",value:m};let g=d>0&&p<d;return qn(m,o.animation,o.duration,o.easing,g)});return a.children.splice(l,1,...u),l+u.length},Wn=0;function be(e){var s,a,l,i;let t={animation:(s=e==null?void 0:e.animation)!=null?s:"fadeIn",duration:(a=e==null?void 0:e.duration)!=null?a:150,easing:(l=e==null?void 0:e.easing)!=null?l:"ease",sep:(i=e==null?void 0:e.sep)!=null?i:"word"},o={prevContentLength:0,lastRenderCharCount:0},n=Wn++,r=()=>c=>{let d={count:0};visitParents(c,"text",(u,m)=>$n(u,m,t,o,d)),o.lastRenderCharCount=d.count,o.prevContentLength=0;};return Object.defineProperty(r,"name",{value:`rehypeAnimate$${n}`}),{name:"animate",type:"animate",rehypePlugin:r,setPrevContentLength(c){o.prevContentLength=c;},getLastRenderCharCount(){let c=o.lastRenderCharCount;return o.lastRenderCharCount=0,c}}}be();var Qe=createContext(false),et=()=>useContext(Qe);var he=(...e)=>twMerge(clsx(e)),Jn=(e,t)=>{if(!e||!t)return t;let o=`${e}:`;return t.split(/\s+/).filter(Boolean).map(n=>n.startsWith(o)?n:`${e}:${n}`).join(" ")},Ht=e=>e?(...t)=>Jn(e,twMerge(clsx(t))):he,J=(e,t,o)=>{let n=typeof t=="string"?new Blob([t],{type:o}):t,r=URL.createObjectURL(n),s=document.createElement("a");s.href=r,s.download=e,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(r);};var Se=createContext(he),y=()=>useContext(Se);var Yn=he("block","before:content-[counter(line)]","before:inline-block","before:[counter-increment:line]","before:w-6","before:mr-4","before:text-[13px]","before:text-right","before:text-muted-foreground/50","before:font-mono","before:select-none"),Qn=e=>{let t={};for(let o of e.split(";")){let n=o.indexOf(":");if(n>0){let r=o.slice(0,n).trim(),s=o.slice(n+1).trim();r&&s&&(t[r]=s);}}return t},Bt=memo(({children:e,result:t,language:o,className:n,startLine:r,...s})=>{let a=y(),l=useMemo(()=>a(Yn),[a]),i=useMemo(()=>{let c={};return t.bg&&(c["--sdm-bg"]=t.bg),t.fg&&(c["--sdm-fg"]=t.fg),t.rootStyle&&Object.assign(c,Qn(t.rootStyle)),c},[t.bg,t.fg,t.rootStyle]);return jsx$1("div",{className:a(n,"overflow-hidden rounded-md border border-border bg-background p-4 text-sm"),"data-language":o,"data-streamdown":"code-block-body",...s,children:jsx$1("pre",{className:a(n,"bg-[var(--sdm-bg,inherit]","dark:bg-[var(--shiki-dark-bg,var(--sdm-bg,inherit)]"),style:i,children:jsx$1("code",{className:a("[counter-increment:line_0] [counter-reset:line]"),style:r&&r>1?{counterReset:`line ${r-1}`}:void 0,children:t.tokens.map((c,d)=>jsx$1("span",{className:l,children:c.length===0||c.length===1&&c[0].content===""?`
51275
- `:c.map((u,m)=>{let p={},g=!!u.bgColor;if(u.color&&(p["--sdm-c"]=u.color),u.bgColor&&(p["--sdm-tbg"]=u.bgColor),u.htmlStyle)for(let[h,b]of Object.entries(u.htmlStyle))h==="color"?p["--sdm-c"]=b:h==="background-color"?(p["--sdm-tbg"]=b,g=true):p[h]=b;return jsx$1("span",{className:a("text-[var(--sdm-c,inherit)]","dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]",g&&"bg-[var(--sdm-tbg)]",g&&"dark:bg-[var(--shiki-dark-bg,var(--sdm-tbg))]"),style:p,...u.htmlAttrs,children:u.content},m)})},d))})})})},(e,t)=>e.result===t.result&&e.language===t.language&&e.className===t.className&&e.startLine===t.startLine);var tt=({className:e,language:t,style:o,isIncomplete:n,...r})=>{let s=y();return jsx$1("div",{className:s("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2",e),"data-incomplete":n||void 0,"data-language":t,"data-streamdown":"code-block",style:{contentVisibility:"auto",containIntrinsicSize:"auto 200px",...o},...r})};var ot=createContext({code:""}),Ee=()=>useContext(ot);var nt=({language:e})=>{let t=y();return jsx$1("div",{className:t("flex h-8 items-center text-muted-foreground text-xs"),"data-language":e,"data-streamdown":"code-block-header",children:jsx$1("span",{className:t("ml-1 font-mono lowercase"),children:e})})};var sr=/\n+$/,ar=lazy$1(()=>import('./fthry_highlighted-body-TPN3WLV5.j0rrY2PD.js').then(e=>({default:e.HighlightedCodeBlockBody}))),rt=({code:e,language:t,className:o,children:n,isIncomplete:r=false,startLine:s,...a})=>{let l=y(),i=useMemo(()=>e.replace(sr,""),[e]),c=useMemo(()=>({bg:"transparent",fg:"inherit",tokens:i.split(`
51291
+ `:c.map((u,m)=>{let p={},g=!!u.bgColor;if(u.color&&(p["--sdm-c"]=u.color),u.bgColor&&(p["--sdm-tbg"]=u.bgColor),u.htmlStyle)for(let[h,b]of Object.entries(u.htmlStyle))h==="color"?p["--sdm-c"]=b:h==="background-color"?(p["--sdm-tbg"]=b,g=true):p[h]=b;return jsx$1("span",{className:a("text-[var(--sdm-c,inherit)]","dark:text-[var(--shiki-dark,var(--sdm-c,inherit))]",g&&"bg-[var(--sdm-tbg)]",g&&"dark:bg-[var(--shiki-dark-bg,var(--sdm-tbg))]"),style:p,...u.htmlAttrs,children:u.content},m)})},d))})})})},(e,t)=>e.result===t.result&&e.language===t.language&&e.className===t.className&&e.startLine===t.startLine);var tt=({className:e,language:t,style:o,isIncomplete:n,...r})=>{let s=y();return jsx$1("div",{className:s("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2",e),"data-incomplete":n||void 0,"data-language":t,"data-streamdown":"code-block",style:{contentVisibility:"auto",containIntrinsicSize:"auto 200px",...o},...r})};var ot=createContext({code:""}),Ee=()=>useContext(ot);var nt=({language:e})=>{let t=y();return jsx$1("div",{className:t("flex h-8 items-center text-muted-foreground text-xs"),"data-language":e,"data-streamdown":"code-block-header",children:jsx$1("span",{className:t("ml-1 font-mono lowercase"),children:e})})};var sr=/\n+$/,ar=lazy$1(()=>import('./fthry_highlighted-body-TPN3WLV5.aBNiR5uT.js').then(e=>({default:e.HighlightedCodeBlockBody}))),rt=({code:e,language:t,className:o,children:n,isIncomplete:r=false,startLine:s,...a})=>{let l=y(),i=useMemo(()=>e.replace(sr,""),[e]),c=useMemo(()=>({bg:"transparent",fg:"inherit",tokens:i.split(`
51276
51292
  `).map(d=>[{content:d,color:"inherit",bgColor:"transparent",htmlStyle:{},offset:0}])}),[i]);return jsx$1(ot.Provider,{value:{code:e},children:jsxs$1(tt,{isIncomplete:r,language:t,children:[jsx$1(nt,{language:t}),n?jsx$1("div",{className:l("pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end"),children:jsx$1("div",{className:l("pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur"),"data-streamdown":"code-block-actions",children:n})}):null,jsx$1(Suspense,{fallback:jsx$1(Bt,{className:o,language:t,result:c,startLine:s,...a}),children:jsx$1(ar,{className:o,code:i,language:t,raw:c,startLine:s,...a})})]})})};var Vt=e=>jsx$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:jsx$1("path",{clipRule:"evenodd",d:"M15.5607 3.99999L15.0303 4.53032L6.23744 13.3232C5.55403 14.0066 4.44599 14.0066 3.76257 13.3232L4.2929 12.7929L3.76257 13.3232L0.969676 10.5303L0.439346 9.99999L1.50001 8.93933L2.03034 9.46966L4.82323 12.2626C4.92086 12.3602 5.07915 12.3602 5.17678 12.2626L13.9697 3.46966L14.5 2.93933L15.5607 3.99999Z",fill:"currentColor",fillRule:"evenodd"})}),jt=e=>jsx$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:jsx$1("path",{clipRule:"evenodd",d:"M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z",fill:"currentColor",fillRule:"evenodd"})}),Ft=e=>jsx$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:jsx$1("path",{clipRule:"evenodd",d:"M8.75 1V1.75V8.68934L10.7197 6.71967L11.25 6.18934L12.3107 7.25L11.7803 7.78033L8.70711 10.8536C8.31658 11.2441 7.68342 11.2441 7.29289 10.8536L4.21967 7.78033L3.68934 7.25L4.75 6.18934L5.28033 6.71967L7.25 8.68934V1.75V1H8.75ZM13.5 9.25V13.5H2.5V9.25V8.5H1V9.25V14C1 14.5523 1.44771 15 2 15H14C14.5523 15 15 14.5523 15 14V9.25V8.5H13.5V9.25Z",fill:"currentColor",fillRule:"evenodd"})}),zt=e=>jsxs$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:[jsx$1("path",{d:"M8 0V4",stroke:"currentColor",strokeWidth:"1.5"}),jsx$1("path",{d:"M8 16V12",opacity:"0.5",stroke:"currentColor",strokeWidth:"1.5"}),jsx$1("path",{d:"M3.29773 1.52783L5.64887 4.7639",opacity:"0.9",stroke:"currentColor",strokeWidth:"1.5"}),jsx$1("path",{d:"M12.7023 1.52783L10.3511 4.7639",opacity:"0.1",stroke:"currentColor",strokeWidth:"1.5"}),jsx$1("path",{d:"M12.7023 14.472L10.3511 11.236",opacity:"0.4",stroke:"currentColor",strokeWidth:"1.5"}),jsx$1("path",{d:"M3.29773 14.472L5.64887 11.236",opacity:"0.6",stroke:"currentColor",strokeWidth:"1.5"}),jsx$1("path",{d:"M15.6085 5.52783L11.8043 6.7639",opacity:"0.2",stroke:"currentColor",strokeWidth:"1.5"}),jsx$1("path",{d:"M0.391602 10.472L4.19583 9.23598",opacity:"0.7",stroke:"currentColor",strokeWidth:"1.5"}),jsx$1("path",{d:"M15.6085 10.4722L11.8043 9.2361",opacity:"0.3",stroke:"currentColor",strokeWidth:"1.5"}),jsx$1("path",{d:"M0.391602 5.52783L4.19583 6.7639",opacity:"0.8",stroke:"currentColor",strokeWidth:"1.5"})]}),_t=e=>jsx$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:jsx$1("path",{clipRule:"evenodd",d:"M1 5.25V6H2.5V5.25V2.5H5.25H6V1H5.25H2C1.44772 1 1 1.44772 1 2V5.25ZM5.25 14.9994H6V13.4994H5.25H2.5V10.7494V9.99939H1V10.7494V13.9994C1 14.5517 1.44772 14.9994 2 14.9994H5.25ZM15 10V10.75V14C15 14.5523 14.5523 15 14 15H10.75H10V13.5H10.75H13.5V10.75V10H15ZM10.75 1H10V2.5H10.75H13.5V5.25V6H15V5.25V2C15 1.44772 14.5523 1 14 1H10.75Z",fill:"currentColor",fillRule:"evenodd"})}),qt=e=>jsx$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:jsx$1("path",{clipRule:"evenodd",d:"M13.5 8C13.5 4.96643 11.0257 2.5 7.96452 2.5C5.42843 2.5 3.29365 4.19393 2.63724 6.5H5.25H6V8H5.25H0.75C0.335787 8 0 7.66421 0 7.25V2.75V2H1.5V2.75V5.23347C2.57851 2.74164 5.06835 1 7.96452 1C11.8461 1 15 4.13001 15 8C15 11.87 11.8461 15 7.96452 15C5.62368 15 3.54872 13.8617 2.27046 12.1122L1.828 11.5066L3.03915 10.6217L3.48161 11.2273C4.48831 12.6051 6.12055 13.5 7.96452 13.5C11.0257 13.5 13.5 11.0336 13.5 8Z",fill:"currentColor",fillRule:"evenodd"})}),$t=e=>jsx$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:jsx$1("path",{clipRule:"evenodd",d:"M12.4697 13.5303L13 14.0607L14.0607 13L13.5303 12.4697L9.06065 7.99999L13.5303 3.53032L14.0607 2.99999L13 1.93933L12.4697 2.46966L7.99999 6.93933L3.53032 2.46966L2.99999 1.93933L1.93933 2.99999L2.46966 3.53032L6.93933 7.99999L2.46966 12.4697L1.93933 13L2.99999 14.0607L3.53032 13.5303L7.99999 9.06065L12.4697 13.5303Z",fill:"currentColor",fillRule:"evenodd"})}),Wt=e=>jsx$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:jsx$1("path",{clipRule:"evenodd",d:"M13.5 10.25V13.25C13.5 13.3881 13.3881 13.5 13.25 13.5H2.75C2.61193 13.5 2.5 13.3881 2.5 13.25L2.5 2.75C2.5 2.61193 2.61193 2.5 2.75 2.5H5.75H6.5V1H5.75H2.75C1.7835 1 1 1.7835 1 2.75V13.25C1 14.2165 1.7835 15 2.75 15H13.25C14.2165 15 15 14.2165 15 13.25V10.25V9.5H13.5V10.25ZM9 1H9.75H14.2495C14.6637 1 14.9995 1.33579 14.9995 1.75V6.25V7H13.4995V6.25V3.56066L8.53033 8.52978L8 9.06011L6.93934 7.99945L7.46967 7.46912L12.4388 2.5H9.75H9V1Z",fill:"currentColor",fillRule:"evenodd"})}),Zt=e=>jsx$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:jsx$1("path",{clipRule:"evenodd",d:"M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0ZM4.125 5.875H4.75H5.875V4.75V4.125H7.125V4.75V5.875H8.25H8.875V7.125H8.25H7.125V8.25V8.875H5.875V8.25V7.125H4.75H4.125V5.875Z",fill:"currentColor",fillRule:"evenodd"})}),Xt=e=>jsx$1("svg",{color:"currentColor",height:16,strokeLinejoin:"round",viewBox:"0 0 16 16",width:16,...e,children:jsx$1("path",{clipRule:"evenodd",d:"M1.5 6.5C1.5 3.73858 3.73858 1.5 6.5 1.5C9.26142 1.5 11.5 3.73858 11.5 6.5C11.5 9.26142 9.26142 11.5 6.5 11.5C3.73858 11.5 1.5 9.26142 1.5 6.5ZM6.5 0C2.91015 0 0 2.91015 0 6.5C0 10.0899 2.91015 13 6.5 13C8.02469 13 9.42677 12.475 10.5353 11.596L13.9697 15.0303L14.5 15.5607L15.5607 14.5L15.0303 13.9697L11.596 10.5353C12.475 9.42677 13 8.02469 13 6.5C13 2.91015 10.0899 0 6.5 0ZM4.125 5.875H4.75H8.25H8.875V7.125H8.25H4.75H4.125V5.875Z",fill:"currentColor",fillRule:"evenodd"})});var we={CheckIcon:Vt,CopyIcon:jt,DownloadIcon:Ft,ExternalLinkIcon:Wt,Loader2Icon:zt,Maximize2Icon:_t,RotateCcwIcon:qt,XIcon:$t,ZoomInIcon:Zt,ZoomOutIcon:Xt},Kt=createContext(we),mr=(e,t)=>{if(e===t)return true;if(!(e&&t))return e===t;let o=Object.keys(e),n=Object.keys(t);return o.length!==n.length?false:o.every(r=>e[r]===t[r])},st=({icons:e,children:t})=>{let o=useRef(e),n=useRef(e?{...we,...e}:we);mr(o.current,e)||(o.current=e,n.current=e?{...we,...e}:we);let r=n.current;return jsx$1(Kt.Provider,{value:r,children:t})},L=()=>useContext(Kt);var He={copyCode:"Copy Code",downloadFile:"Download file",downloadDiagram:"Download diagram",downloadDiagramAsSvg:"Download diagram as SVG",downloadDiagramAsPng:"Download diagram as PNG",downloadDiagramAsMmd:"Download diagram as MMD",viewFullscreen:"View fullscreen",exitFullscreen:"Exit fullscreen",mermaidFormatSvg:"SVG",mermaidFormatPng:"PNG",mermaidFormatMmd:"MMD",copyTable:"Copy table",copyTableAsMarkdown:"Copy table as Markdown",copyTableAsCsv:"Copy table as CSV",copyTableAsTsv:"Copy table as TSV",downloadTable:"Download table",downloadTableAsCsv:"Download table as CSV",downloadTableAsMarkdown:"Download table as Markdown",tableFormatMarkdown:"Markdown",tableFormatCsv:"CSV",tableFormatTsv:"TSV",imageNotAvailable:"Image not available",downloadImage:"Download image",openExternalLink:"Open external link?",externalLinkWarning:"You're about to visit an external website.",close:"Close",copyLink:"Copy link",copied:"Copied",openLink:"Open link"},De=createContext(He),B=()=>useContext(De);var Be=({onCopy:e,onError:t,timeout:o=2e3,children:n,className:r,code:s,...a})=>{let l=y(),[i,c]=useState(false),d=useRef(0),{code:u}=Ee(),{isAnimating:m}=useContext(R),p=B(),g=s!=null?s:u,h=async()=>{var T;if(typeof window=="undefined"||!((T=navigator==null?void 0:navigator.clipboard)!=null&&T.writeText)){t==null||t(new Error("Clipboard API not available"));return}try{i||(await navigator.clipboard.writeText(g),c(!0),e==null||e(),d.current=window.setTimeout(()=>c(!1),o));}catch(x){t==null||t(x);}};useEffect(()=>()=>{window.clearTimeout(d.current);},[]);let b=L(),f=i?b.CheckIcon:b.CopyIcon;return jsx$1("button",{className:l("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",r),"data-streamdown":"code-block-copy-button",disabled:m,onClick:h,title:p.copyCode,type:"button",...a,children:n!=null?n:jsx$1(f,{size:14})})};var Gt={"1c":"1c","1c-query":"1cq",abap:"abap","actionscript-3":"as",ada:"ada",adoc:"adoc","angular-html":"html","angular-ts":"ts",apache:"conf",apex:"cls",apl:"apl",applescript:"applescript",ara:"ara",asciidoc:"adoc",asm:"asm",astro:"astro",awk:"awk",ballerina:"bal",bash:"sh",bat:"bat",batch:"bat",be:"be",beancount:"beancount",berry:"berry",bibtex:"bib",bicep:"bicep",blade:"blade.php",bsl:"bsl",c:"c","c#":"cs","c++":"cpp",cadence:"cdc",cairo:"cairo",cdc:"cdc",clarity:"clar",clj:"clj",clojure:"clj","closure-templates":"soy",cmake:"cmake",cmd:"cmd",cobol:"cob",codeowners:"CODEOWNERS",codeql:"ql",coffee:"coffee",coffeescript:"coffee","common-lisp":"lisp",console:"sh",coq:"v",cpp:"cpp",cql:"cql",crystal:"cr",cs:"cs",csharp:"cs",css:"css",csv:"csv",cue:"cue",cypher:"cql",d:"d",dart:"dart",dax:"dax",desktop:"desktop",diff:"diff",docker:"dockerfile",dockerfile:"dockerfile",dotenv:"env","dream-maker":"dm",edge:"edge",elisp:"el",elixir:"ex",elm:"elm","emacs-lisp":"el",erb:"erb",erl:"erl",erlang:"erl",f:"f","f#":"fs",f03:"f03",f08:"f08",f18:"f18",f77:"f77",f90:"f90",f95:"f95",fennel:"fnl",fish:"fish",fluent:"ftl",for:"for","fortran-fixed-form":"f","fortran-free-form":"f90",fs:"fs",fsharp:"fs",fsl:"fsl",ftl:"ftl",gdresource:"tres",gdscript:"gd",gdshader:"gdshader",genie:"gs",gherkin:"feature","git-commit":"gitcommit","git-rebase":"gitrebase",gjs:"js",gleam:"gleam","glimmer-js":"js","glimmer-ts":"ts",glsl:"glsl",gnuplot:"plt",go:"go",gql:"gql",graphql:"graphql",groovy:"groovy",gts:"gts",hack:"hack",haml:"haml",handlebars:"hbs",haskell:"hs",haxe:"hx",hbs:"hbs",hcl:"hcl",hjson:"hjson",hlsl:"hlsl",hs:"hs",html:"html","html-derivative":"html",http:"http",hxml:"hxml",hy:"hy",imba:"imba",ini:"ini",jade:"jade",java:"java",javascript:"js",jinja:"jinja",jison:"jison",jl:"jl",js:"js",json:"json",json5:"json5",jsonc:"jsonc",jsonl:"jsonl",jsonnet:"jsonnet",jssm:"jssm",jsx:"jsx",julia:"jl",kotlin:"kt",kql:"kql",kt:"kt",kts:"kts",kusto:"kql",latex:"tex",lean:"lean",lean4:"lean",less:"less",liquid:"liquid",lisp:"lisp",lit:"lit",llvm:"ll",log:"log",logo:"logo",lua:"lua",luau:"luau",make:"mak",makefile:"mak",markdown:"md",marko:"marko",matlab:"m",md:"md",mdc:"mdc",mdx:"mdx",mediawiki:"wiki",mermaid:"mmd",mips:"s",mipsasm:"s",mmd:"mmd",mojo:"mojo",move:"move",nar:"nar",narrat:"narrat",nextflow:"nf",nf:"nf",nginx:"conf",nim:"nim",nix:"nix",nu:"nu",nushell:"nu",objc:"m","objective-c":"m","objective-cpp":"mm",ocaml:"ml",pascal:"pas",perl:"pl",perl6:"p6",php:"php",plsql:"pls",po:"po",polar:"polar",postcss:"pcss",pot:"pot",potx:"potx",powerquery:"pq",powershell:"ps1",prisma:"prisma",prolog:"pl",properties:"properties",proto:"proto",protobuf:"proto",ps:"ps",ps1:"ps1",pug:"pug",puppet:"pp",purescript:"purs",py:"py",python:"py",ql:"ql",qml:"qml",qmldir:"qmldir",qss:"qss",r:"r",racket:"rkt",raku:"raku",razor:"cshtml",rb:"rb",reg:"reg",regex:"regex",regexp:"regexp",rel:"rel",riscv:"s",rs:"rs",rst:"rst",ruby:"rb",rust:"rs",sas:"sas",sass:"sass",scala:"scala",scheme:"scm",scss:"scss",sdbl:"sdbl",sh:"sh",shader:"shader",shaderlab:"shader",shell:"sh",shellscript:"sh",shellsession:"sh",smalltalk:"st",solidity:"sol",soy:"soy",sparql:"rq",spl:"spl",splunk:"spl",sql:"sql","ssh-config":"config",stata:"do",styl:"styl",stylus:"styl",svelte:"svelte",swift:"swift","system-verilog":"sv",systemd:"service",talon:"talon",talonscript:"talon",tasl:"tasl",tcl:"tcl",templ:"templ",terraform:"tf",tex:"tex",tf:"tf",tfvars:"tfvars",toml:"toml",ts:"ts","ts-tags":"ts",tsp:"tsp",tsv:"tsv",tsx:"tsx",turtle:"ttl",twig:"twig",typ:"typ",typescript:"ts",typespec:"tsp",typst:"typ",v:"v",vala:"vala",vb:"vb",verilog:"v",vhdl:"vhdl",vim:"vim",viml:"vim",vimscript:"vim",vue:"vue","vue-html":"html","vue-vine":"vine",vy:"vy",vyper:"vy",wasm:"wasm",wenyan:"wy",wgsl:"wgsl",wiki:"wiki",wikitext:"wiki",wit:"wit",wl:"wl",wolfram:"wl",xml:"xml",xsl:"xsl",yaml:"yaml",yml:"yml",zenscript:"zs",zig:"zig",zsh:"zsh",\u6587\u8A00:"wy"},at=({onDownload:e,onError:t,language:o,children:n,className:r,code:s,...a})=>{let l=y(),{code:i}=Ee(),{isAnimating:c}=useContext(R),d=B(),u=L(),m=s!=null?s:i,g=`file.${o&&o in Gt?Gt[o]:"txt"}`,h="text/plain",b=()=>{try{J(g,m,h),e==null||e();}catch(f){t==null||t(f);}};return jsx$1("button",{className:l("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",r),"data-streamdown":"code-block-download-button",disabled:c,onClick:b,title:d.downloadFile,type:"button",...a,children:n!=null?n:jsx$1(u.DownloadIcon,{size:14})})};var Ae=()=>{let{Loader2Icon:e}=L(),t=y();return jsxs$1("div",{className:t("w-full divide-y divide-border overflow-hidden rounded-xl border border-border"),children:[jsx$1("div",{className:t("h-[46px] w-full bg-muted/80")}),jsx$1("div",{className:t("flex w-full items-center justify-center p-4"),children:jsx$1(e,{className:t("size-4 animate-spin")})})]})};var xr=/\.[^/.]+$/,to=({node:e,className:t,src:o,alt:n,onLoad:r,onError:s,...a})=>{let{DownloadIcon:l}=L(),i=y(),c=useRef(null),[d,u]=useState(false),[m,p]=useState(false),g=B(),h=a.width!=null||a.height!=null,b=(d||h)&&!m,f=m&&!h;useEffect(()=>{let k=c.current;if(k!=null&&k.complete){let I=k.naturalWidth>0;u(I),p(!I);}},[]);let T=useCallback(k=>{u(true),p(false),r==null||r(k);},[r]),x=useCallback(k=>{u(false),p(true),s==null||s(k);},[s]),w=async()=>{if(o)try{let I=await(await fetch(o)).blob(),S=new URL(o,window.location.origin).pathname.split("/").pop()||"",F=S.split(".").pop(),z=S.includes(".")&&F!==void 0&&F.length<=4,q="";if(z)q=S;else {let A=I.type,K="png";A.includes("jpeg")||A.includes("jpg")?K="jpg":A.includes("png")?K="png":A.includes("svg")?K="svg":A.includes("gif")?K="gif":A.includes("webp")&&(K="webp"),q=`${(n||S||"image").replace(xr,"")}.${K}`;}J(q,I,I.type);}catch(k){window.open(o,"_blank");}};return o?jsxs$1("div",{className:i("group relative my-4 inline-block"),"data-streamdown":"image-wrapper",children:[jsx$1("img",{alt:n,className:i("max-w-full rounded-lg",f&&"hidden",t),"data-streamdown":"image",onError:x,onLoad:T,ref:c,src:o,...a}),f&&jsx$1("span",{className:i("text-muted-foreground text-xs italic"),"data-streamdown":"image-fallback",children:g.imageNotAvailable}),jsx$1("div",{className:i("pointer-events-none absolute inset-0 hidden rounded-lg bg-black/10 group-hover:block")}),b&&jsx$1("button",{className:i("absolute right-2 bottom-2 flex h-8 w-8 cursor-pointer items-center justify-center rounded-md border border-border bg-background/90 shadow-sm backdrop-blur-sm transition-all duration-200 hover:bg-background","opacity-0 group-hover:opacity-100"),onClick:w,title:g.downloadImage,type:"button",children:jsx$1(l,{size:14})})]}):null};var ke=0,le=()=>{ke+=1,ke===1&&(document.body.style.overflow="hidden");},ce=()=>{ke=Math.max(0,ke-1),ke===0&&(document.body.style.overflow="");};var ro=({url:e,isOpen:t,onClose:o,onConfirm:n})=>{let{CheckIcon:r,CopyIcon:s,ExternalLinkIcon:a,XIcon:l}=L(),i=y(),[c,d]=useState(false),u=B(),m=useCallback(async()=>{try{await navigator.clipboard.writeText(e),d(!0),setTimeout(()=>d(!1),2e3);}catch(g){}},[e]),p=useCallback(()=>{n(),o();},[n,o]);return useEffect(()=>{if(t){le();let g=h=>{h.key==="Escape"&&o();};return document.addEventListener("keydown",g),()=>{document.removeEventListener("keydown",g),ce();}}},[t,o]),t?jsx$1("div",{className:i("fixed inset-0 z-50 flex items-center justify-center bg-background/50 backdrop-blur-sm"),"data-streamdown":"link-safety-modal",onClick:o,onKeyDown:g=>{g.key==="Escape"&&o();},role:"button",tabIndex:0,children:jsxs$1("div",{className:i("relative mx-4 flex w-full max-w-md flex-col gap-4 rounded-xl border bg-background p-6 shadow-lg"),onClick:g=>g.stopPropagation(),onKeyDown:g=>g.stopPropagation(),role:"presentation",children:[jsx$1("button",{className:i("absolute top-4 right-4 rounded-md p-1 text-muted-foreground transition-all hover:bg-muted hover:text-foreground"),onClick:o,title:u.close,type:"button",children:jsx$1(l,{size:16})}),jsxs$1("div",{className:i("flex flex-col gap-2"),children:[jsxs$1("div",{className:i("flex items-center gap-2 font-semibold text-lg"),children:[jsx$1(a,{size:20}),jsx$1("span",{children:u.openExternalLink})]}),jsx$1("p",{className:i("text-muted-foreground text-sm"),children:u.externalLinkWarning})]}),jsx$1("div",{className:i("break-all rounded-md bg-muted p-3 font-mono text-sm",e.length>100&&"max-h-32 overflow-y-auto"),children:e}),jsxs$1("div",{className:i("flex gap-2"),children:[jsx$1("button",{className:i("flex flex-1 items-center justify-center gap-2 rounded-md border bg-background px-4 py-2 font-medium text-sm transition-all hover:bg-muted"),onClick:m,type:"button",children:c?jsxs$1(Fragment,{children:[jsx$1(r,{size:14}),jsx$1("span",{children:u.copied})]}):jsxs$1(Fragment,{children:[jsx$1(s,{size:14}),jsx$1("span",{children:u.copyLink})]})}),jsxs$1("button",{className:i("flex flex-1 items-center justify-center gap-2 rounded-md bg-primary px-4 py-2 font-medium text-primary-foreground text-sm transition-all hover:bg-primary/90"),onClick:p,type:"button",children:[jsx$1(a,{size:14}),jsx$1("span",{children:u.openLink})]})]})]})}):null};var Oe=createContext(null),lt=()=>useContext(Oe),Mi=()=>{var t;let e=lt();return (t=e==null?void 0:e.code)!=null?t:null},de=()=>{var t;let e=lt();return (t=e==null?void 0:e.mermaid)!=null?t:null};var so=e=>{var o;let t=lt();return t!=null&&t.renderers&&e&&(o=t.renderers.find(n=>Array.isArray(n.language)?n.language.includes(e):n.language===e))!=null?o:null};var ao=(e,t)=>{var n;let o=(n=void 0)!=null?n:5;return new Promise((r,s)=>{let a="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(e))),l=new Image;l.crossOrigin="anonymous",l.onload=()=>{let i=document.createElement("canvas"),c=l.width*o,d=l.height*o;i.width=c,i.height=d;let u=i.getContext("2d");if(!u){s(new Error("Failed to create 2D canvas context for PNG export"));return}u.drawImage(l,0,0,c,d),i.toBlob(m=>{if(!m){s(new Error("Failed to create PNG blob"));return}r(m);},"image/png");},l.onerror=()=>s(new Error("Failed to load SVG image")),l.src=a;})};var lo=({chart:e,children:t,className:o,onDownload:n,config:r,onError:s})=>{let a=y(),[l,i]=useState(false),c=useRef(null),{isAnimating:d}=useContext(R),u=L(),m=de(),p=B(),g=async h=>{try{if(h==="mmd"){J("diagram.mmd",e,"text/plain"),i(!1),n==null||n(h);return}if(!m){s==null||s(new Error("Mermaid plugin not available"));return}let b=m.getMermaid(r),f=e.split("").reduce((w,k)=>(w<<5)-w+k.charCodeAt(0)|0,0),T=`mermaid-${Math.abs(f)}-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,{svg:x}=await b.render(T,e);if(!x){s==null||s(new Error("SVG not found. Please wait for the diagram to render."));return}if(h==="svg"){J("diagram.svg",x,"image/svg+xml"),i(!1),n==null||n(h);return}if(h==="png"){let w=await ao(x);J("diagram.png",w,"image/png"),n==null||n(h),i(!1);return}}catch(b){s==null||s(b);}};return useEffect(()=>{let h=b=>{let f=b.composedPath();c.current&&!f.includes(c.current)&&i(false);};return document.addEventListener("mousedown",h),()=>{document.removeEventListener("mousedown",h);}},[]),jsxs$1("div",{className:a("relative"),ref:c,children:[jsx$1("button",{className:a("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",o),disabled:d,onClick:()=>i(!l),title:p.downloadDiagram,type:"button",children:t!=null?t:jsx$1(u.DownloadIcon,{size:14})}),l?jsxs$1("div",{className:a("absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg"),children:[jsx$1("button",{className:a("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>g("svg"),title:p.downloadDiagramAsSvg,type:"button",children:p.mermaidFormatSvg}),jsx$1("button",{className:a("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>g("png"),title:p.downloadDiagramAsPng,type:"button",children:p.mermaidFormatPng}),jsx$1("button",{className:a("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>g("mmd"),title:p.downloadDiagramAsMmd,type:"button",children:p.mermaidFormatMmd})]}):null]})};var po=({chart:e,config:t,onFullscreen:o,onExit:n,className:r,...s})=>{let{Maximize2Icon:a,XIcon:l}=L(),i=y(),[c,d]=useState(false),{isAnimating:u,controls:m}=useContext(R),p=B(),g=(()=>{if(typeof m=="boolean")return m;let b=m.mermaid;return b===false?false:b===true||b===void 0?true:b.panZoom!==false})(),h=()=>{d(!c);};return useEffect(()=>{if(c){le();let b=f=>{f.key==="Escape"&&d(false);};return document.addEventListener("keydown",b),()=>{document.removeEventListener("keydown",b),ce();}}},[c]),useEffect(()=>{c?o==null||o():n&&n();},[c,o,n]),jsxs$1(Fragment,{children:[jsx$1("button",{className:i("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",r),disabled:u,onClick:h,title:p.viewFullscreen,type:"button",...s,children:jsx$1(a,{size:14})}),c?createPortal(jsxs$1("div",{className:i("fixed inset-0 z-50 flex items-center justify-center bg-background/95 backdrop-blur-sm"),onClick:h,onKeyDown:b=>{b.key==="Escape"&&h();},role:"button",tabIndex:0,children:[jsx$1("button",{className:i("absolute top-4 right-4 z-10 rounded-md p-2 text-muted-foreground transition-all hover:bg-muted hover:text-foreground"),onClick:h,title:p.exitFullscreen,type:"button",children:jsx$1(l,{size:20})}),jsx$1("div",{className:i("flex size-full items-center justify-center p-4"),onClick:b=>b.stopPropagation(),onKeyDown:b=>b.stopPropagation(),role:"presentation",children:jsx$1(uo,{chart:e,className:i("size-full [&_svg]:h-auto [&_svg]:w-auto"),config:t,fullscreen:true,showControls:g})})]}),document.body):null]})};var ue=e=>{var s,a;let t=[],o=[],n=e.querySelectorAll("thead th");for(let l of n)t.push(((s=l.textContent)==null?void 0:s.trim())||"");let r=e.querySelectorAll("tbody tr");for(let l of r){let i=[],c=l.querySelectorAll("td");for(let d of c)i.push(((a=d.textContent)==null?void 0:a.trim())||"");o.push(i);}return {headers:t,rows:o}},oe=e=>{let{headers:t,rows:o}=e,n=l=>{let i=false,c=false;for(let d of l){if(d==='"'){i=true,c=true;break}(d===","||d===`
51277
51293
  `)&&(i=true);}return i?c?`"${l.replace(/"/g,'""')}"`:`"${l}"`:l},r=t.length>0?o.length+1:o.length,s=new Array(r),a=0;t.length>0&&(s[a]=t.map(n).join(","),a+=1);for(let l of o)s[a]=l.map(n).join(","),a+=1;return s.join(`
51278
51294
  `)},ct=e=>{let{headers:t,rows:o}=e,n=l=>{let i=false;for(let d of l)if(d===" "||d===`
51279
51295
  `||d==="\r"){i=true;break}if(!i)return l;let c=[];for(let d of l)d===" "?c.push("\\t"):d===`
51280
51296
  `?c.push("\\n"):d==="\r"?c.push("\\r"):c.push(d);return c.join("")},r=t.length>0?o.length+1:o.length,s=new Array(r),a=0;t.length>0&&(s[a]=t.map(n).join(" "),a+=1);for(let l of o)s[a]=l.map(n).join(" "),a+=1;return s.join(`
51281
51297
  `)},Ve=e=>{let t=false;for(let n of e)if(n==="\\"||n==="|"){t=true;break}if(!t)return e;let o=[];for(let n of e)n==="\\"?o.push("\\\\"):n==="|"?o.push("\\|"):o.push(n);return o.join("")},ne=e=>{let{headers:t,rows:o}=e;if(t.length===0)return "";let n=new Array(o.length+2),r=0,s=t.map(l=>Ve(l));n[r]=`| ${s.join(" | ")} |`,r+=1;let a=new Array(t.length);for(let l=0;l<t.length;l+=1)a[l]="---";n[r]=`| ${a.join(" | ")} |`,r+=1;for(let l of o)if(l.length<t.length){let i=new Array(t.length);for(let c=0;c<t.length;c+=1)i[c]=c<l.length?Ve(l[c]):"";n[r]=`| ${i.join(" | ")} |`,r+=1;}else {let i=l.map(c=>Ve(c));n[r]=`| ${i.join(" | ")} |`,r+=1;}return n.join(`
51282
- `)};var Te=({children:e,className:t,onCopy:o,onError:n,timeout:r=2e3})=>{let s=y(),[a,l]=useState(false),[i,c]=useState(false),d=useRef(null),u=useRef(0),{isAnimating:m}=useContext(R),p=B(),g=async f=>{var T,x;if(typeof window=="undefined"||!((T=navigator==null?void 0:navigator.clipboard)!=null&&T.write)){n==null||n(new Error("Clipboard API not available"));return}try{let w=(x=d.current)==null?void 0:x.closest('[data-streamdown="table-wrapper"]'),k=w==null?void 0:w.querySelector("table");if(!k){n==null||n(new Error("Table not found"));return}let I=ue(k),F=({csv:oe,tsv:ct,md:ne}[f]||ne)(I),z=new ClipboardItem({"text/plain":new Blob([F],{type:"text/plain"}),"text/html":new Blob([k.outerHTML],{type:"text/html"})});await navigator.clipboard.write([z]),c(!0),l(!1),o==null||o(f),u.current=window.setTimeout(()=>c(!1),r);}catch(w){n==null||n(w);}};useEffect(()=>{let f=T=>{let x=T.composedPath();d.current&&!x.includes(d.current)&&l(false);};return document.addEventListener("mousedown",f),()=>{document.removeEventListener("mousedown",f),window.clearTimeout(u.current);}},[]);let h=L(),b=i?h.CheckIcon:h.CopyIcon;return jsxs$1("div",{className:s("relative"),ref:d,children:[jsx$1("button",{className:s("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",t),disabled:m,onClick:()=>l(!a),title:p.copyTable,type:"button",children:e!=null?e:jsx$1(b,{height:14,width:14})}),a?jsxs$1("div",{className:s("absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg"),children:[jsx$1("button",{className:s("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>g("md"),title:p.copyTableAsMarkdown,type:"button",children:p.tableFormatMarkdown}),jsx$1("button",{className:s("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>g("csv"),title:p.copyTableAsCsv,type:"button",children:p.tableFormatCsv}),jsx$1("button",{className:s("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>g("tsv"),title:p.copyTableAsTsv,type:"button",children:p.tableFormatTsv})]}):null]})};var Pe=({children:e,className:t,onDownload:o,onError:n})=>{let r=y(),[s,a]=useState(false),l=useRef(null),{isAnimating:i}=useContext(R),c=B(),d=L(),u=m=>{var p;try{let g=(p=l.current)==null?void 0:p.closest('[data-streamdown="table-wrapper"]'),h=g==null?void 0:g.querySelector("table");if(!h){n==null||n(new Error("Table not found"));return}let b=ue(h),f=m==="csv"?oe(b):ne(b);J(`table.${m==="csv"?"csv":"md"}`,f,m==="csv"?"text/csv":"text/markdown"),a(!1),o==null||o(m);}catch(g){n==null||n(g);}};return useEffect(()=>{let m=p=>{let g=p.composedPath();l.current&&!g.includes(l.current)&&a(false);};return document.addEventListener("mousedown",m),()=>{document.removeEventListener("mousedown",m);}},[]),jsxs$1("div",{className:r("relative"),ref:l,children:[jsx$1("button",{className:r("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",t),disabled:i,onClick:()=>a(!s),title:c.downloadTable,type:"button",children:e!=null?e:jsx$1(d.DownloadIcon,{size:14})}),s?jsxs$1("div",{className:r("absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg"),children:[jsx$1("button",{className:r("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>u("csv"),title:c.downloadTableAsCsv,type:"button",children:c.tableFormatCsv}),jsx$1("button",{className:r("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>u("markdown"),title:c.downloadTableAsMarkdown,type:"button",children:c.tableFormatMarkdown})]}):null]})};var wo=({children:e,className:t,showCopy:o=true,showDownload:n=true})=>{let{Maximize2Icon:r,XIcon:s}=L(),a=y(),[l,i]=useState(false),{isAnimating:c}=useContext(R),d=B(),u=()=>{i(true);},m=()=>{i(false);};return useEffect(()=>{if(l){le();let p=g=>{g.key==="Escape"&&i(false);};return document.addEventListener("keydown",p),()=>{document.removeEventListener("keydown",p),ce();}}},[l]),jsxs$1(Fragment,{children:[jsx$1("button",{className:a("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",t),disabled:c,onClick:u,title:d.viewFullscreen,type:"button",children:jsx$1(r,{size:14})}),l?createPortal(jsx$1("div",{"aria-label":d.viewFullscreen,"aria-modal":"true",className:a("fixed inset-0 z-50 flex flex-col bg-background"),"data-streamdown":"table-fullscreen",onClick:m,onKeyDown:p=>{p.key==="Escape"&&m();},role:"dialog",children:jsxs$1("div",{className:a("flex h-full flex-col"),onClick:p=>p.stopPropagation(),onKeyDown:p=>p.stopPropagation(),role:"presentation",children:[jsxs$1("div",{className:a("flex items-center justify-end gap-1 p-4"),children:[o?jsx$1(Te,{}):null,n?jsx$1(Pe,{}):null,jsx$1("button",{className:a("rounded-md p-1 text-muted-foreground transition-all hover:bg-muted hover:text-foreground"),onClick:m,title:d.exitFullscreen,type:"button",children:jsx$1(s,{size:20})})]}),jsx$1("div",{className:a("flex-1 overflow-auto p-4 pt-0 [&_thead]:sticky [&_thead]:top-0 [&_thead]:z-10"),children:jsx$1("table",{className:a("w-full border-collapse border border-border"),"data-streamdown":"table",children:e})})]})}),document.body):null]})};var ko=({children:e,className:t,showControls:o,showCopy:n=true,showDownload:r=true,showFullscreen:s=true,...a})=>{let l=y(),i=o&&n,c=o&&r,d=o&&s,u=i||c||d;return jsxs$1("div",{className:l("my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2"),"data-streamdown":"table-wrapper",children:[u?jsxs$1("div",{className:l("flex items-center justify-end gap-1"),children:[i?jsx$1(Te,{}):null,c?jsx$1(Pe,{}):null,d?jsx$1(wo,{showCopy:i,showDownload:c,children:e}):null]}):null,jsx$1("div",{className:l("border-collapse overflow-x-auto overflow-y-auto rounded-md border border-border bg-background"),children:jsx$1("table",{className:l("w-full divide-y divide-border",t),"data-streamdown":"table",...a,children:e})})]})};var Gr=/startLine=(\d+)/,Yr=lazy$1(()=>import('./fthry_mermaid-O7DHMXV3._Ng2DeVi.js').then(e=>({default:e.Mermaid}))),Qr=/language-([^\s]+)/;function _e(e,t){if(!(e!=null&&e.position||t!=null&&t.position))return true;if(!(e!=null&&e.position&&(t!=null&&t.position)))return false;let o=e.position.start,n=t.position.start,r=e.position.end,s=t.position.end;return (o==null?void 0:o.line)===(n==null?void 0:n.line)&&(o==null?void 0:o.column)===(n==null?void 0:n.column)&&(r==null?void 0:r.line)===(s==null?void 0:s.line)&&(r==null?void 0:r.column)===(s==null?void 0:s.column)}function E(e,t){return e.className===t.className&&_e(e.node,t.node)}var pt=(e,t)=>typeof e=="boolean"?e:e[t]!==false,ut=(e,t)=>{if(typeof e=="boolean")return e;let o=e.table;return o===false?false:o===true||o===void 0?true:o[t]!==false},xo=(e,t)=>{if(typeof e=="boolean")return e;let o=e.code;return o===false?false:o===true||o===void 0?true:o[t]!==false},je=(e,t)=>{if(typeof e=="boolean")return e;let o=e.mermaid;return o===false?false:o===true||o===void 0?true:o[t]!==false},gt=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("ol",{className:r("list-inside list-decimal whitespace-normal [li_&]:pl-6",t),"data-streamdown":"ordered-list",...n,children:e})},(e,t)=>E(e,t));gt.displayName="MarkdownOl";var To=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("li",{className:r("py-1 [&>p]:inline",t),"data-streamdown":"list-item",...n,children:e})},(e,t)=>e.className===t.className&&_e(e.node,t.node));To.displayName="MarkdownLi";var Po=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("ul",{className:r("list-inside list-disc whitespace-normal [li_&]:pl-6",t),"data-streamdown":"unordered-list",...n,children:e})},(e,t)=>E(e,t));Po.displayName="MarkdownUl";var Mo=memo(({className:e,node:t,...o})=>{let n=y();return jsx$1("hr",{className:n("my-6 border-border",e),"data-streamdown":"horizontal-rule",...o})},(e,t)=>E(e,t));Mo.displayName="MarkdownHr";var Io=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("span",{className:r("font-semibold",t),"data-streamdown":"strong",...n,children:e})},(e,t)=>E(e,t));Io.displayName="MarkdownStrong";var es=({children:e,className:t,href:o,node:n,...r})=>{let s=y(),{linkSafety:a}=useContext(R),[l,i]=useState(false),c=o==="streamdown:incomplete-link",d=useCallback(async g=>{if(!(!(a!=null&&a.enabled&&o)||c)){if(g.preventDefault(),a.onLinkCheck&&await a.onLinkCheck(o)){window.open(o,"_blank","noreferrer");return}i(true);}},[a,o,c]),u=useCallback(()=>{o&&window.open(o,"_blank","noreferrer");},[o]),m=useCallback(()=>{i(false);},[]),p={url:o!=null?o:"",isOpen:l,onClose:m,onConfirm:u};return a!=null&&a.enabled&&o?jsxs$1(Fragment,{children:[jsx$1("button",{className:s("wrap-anywhere appearance-none text-left font-medium text-primary underline",t),"data-incomplete":c,"data-streamdown":"link",onClick:d,type:"button",children:e}),a.renderModal?a.renderModal(p):jsx$1(ro,{...p})]}):jsx$1("a",{className:s("wrap-anywhere font-medium text-primary underline",t),"data-incomplete":c,"data-streamdown":"link",href:o,rel:"noreferrer",target:"_blank",...r,children:e})},No=memo(es,(e,t)=>E(e,t)&&e.href===t.href);No.displayName="MarkdownA";var Lo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h1",{className:r("mt-6 mb-2 font-semibold text-3xl",t),"data-streamdown":"heading-1",...n,children:e})},(e,t)=>E(e,t));Lo.displayName="MarkdownH1";var Ro=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h2",{className:r("mt-6 mb-2 font-semibold text-2xl",t),"data-streamdown":"heading-2",...n,children:e})},(e,t)=>E(e,t));Ro.displayName="MarkdownH2";var So=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h3",{className:r("mt-6 mb-2 font-semibold text-xl",t),"data-streamdown":"heading-3",...n,children:e})},(e,t)=>E(e,t));So.displayName="MarkdownH3";var Eo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h4",{className:r("mt-6 mb-2 font-semibold text-lg",t),"data-streamdown":"heading-4",...n,children:e})},(e,t)=>E(e,t));Eo.displayName="MarkdownH4";var Ho=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h5",{className:r("mt-6 mb-2 font-semibold text-base",t),"data-streamdown":"heading-5",...n,children:e})},(e,t)=>E(e,t));Ho.displayName="MarkdownH5";var Do=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h6",{className:r("mt-6 mb-2 font-semibold text-sm",t),"data-streamdown":"heading-6",...n,children:e})},(e,t)=>E(e,t));Do.displayName="MarkdownH6";var Bo=memo(({children:e,className:t,node:o,...n})=>{let{controls:r}=useContext(R),s=pt(r,"table"),a=ut(r,"copy"),l=ut(r,"download"),i=ut(r,"fullscreen");return jsx$1(ko,{className:t,showControls:s,showCopy:a,showDownload:l,showFullscreen:i,...n,children:e})},(e,t)=>E(e,t));Bo.displayName="MarkdownTable";var Ao=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("thead",{className:r("bg-muted/80",t),"data-streamdown":"table-header",...n,children:e})},(e,t)=>E(e,t));Ao.displayName="MarkdownThead";var Oo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("tbody",{className:r("divide-y divide-border",t),"data-streamdown":"table-body",...n,children:e})},(e,t)=>E(e,t));Oo.displayName="MarkdownTbody";var Vo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("tr",{className:r("border-border",t),"data-streamdown":"table-row",...n,children:e})},(e,t)=>E(e,t));Vo.displayName="MarkdownTr";var jo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("th",{className:r("whitespace-nowrap px-4 py-2 text-left font-semibold text-sm",t),"data-streamdown":"table-header-cell",...n,children:e})},(e,t)=>E(e,t));jo.displayName="MarkdownTh";var Fo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("td",{className:r("px-4 py-2 text-sm",t),"data-streamdown":"table-cell",...n,children:e})},(e,t)=>E(e,t));Fo.displayName="MarkdownTd";var zo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("blockquote",{className:r("my-4 border-muted-foreground/30 border-l-4 pl-4 text-muted-foreground italic",t),"data-streamdown":"blockquote",...n,children:e})},(e,t)=>E(e,t));zo.displayName="MarkdownBlockquote";var _o=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("sup",{className:r("text-sm",t),"data-streamdown":"superscript",...n,children:e})},(e,t)=>E(e,t));_o.displayName="MarkdownSup";var qo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("sub",{className:r("text-sm",t),"data-streamdown":"subscript",...n,children:e})},(e,t)=>E(e,t));qo.displayName="MarkdownSub";var $o=memo(({children:e,className:t,node:o,...n})=>{if("data-footnotes"in n){let s=i=>{var m,p;if(!isValidElement(i))return false;let c=Array.isArray(i.props.children)?i.props.children:[i.props.children],d=false,u=false;for(let g of c)if(g){if(typeof g=="string")g.trim()!==""&&(d=true);else if(isValidElement(g))if(((m=g.props)==null?void 0:m["data-footnote-backref"])!==void 0)u=true;else {let h=Array.isArray(g.props.children)?g.props.children:[g.props.children];for(let b of h){if(typeof b=="string"&&b.trim()!==""){d=true;break}if(isValidElement(b)&&((p=b.props)==null?void 0:p["data-footnote-backref"])===void 0){d=true;break}}}}return u&&!d},a=Array.isArray(e)?e.map(i=>{if(!isValidElement(i))return i;if(i.type===gt){let d=(Array.isArray(i.props.children)?i.props.children:[i.props.children]).filter(u=>!s(u));return d.length===0?null:{...i,props:{...i.props,children:d}}}return i}):e;return (Array.isArray(a)?a.some(i=>i!==null):a!==null)?jsx$1("section",{className:t,...n,children:a}):null}return jsx$1("section",{className:t,...n,children:e})},(e,t)=>E(e,t));$o.displayName="MarkdownSection";var ts=({node:e,className:t,children:o,...n})=>{var k,I;let r=y(),s=!("data-block"in n),{mermaid:a,controls:l}=useContext(R),i=de(),c=et(),d=t==null?void 0:t.match(Qr),u=(k=d==null?void 0:d.at(1))!=null?k:"",m=so(u);if(s)return jsx$1("code",{className:r("rounded bg-muted px-1.5 py-0.5 font-mono text-sm",t),"data-streamdown":"inline-code",...n,children:o});let p=(I=e==null?void 0:e.properties)==null?void 0:I.metastring,g=p==null?void 0:p.match(Gr),h=g?Number.parseInt(g[1],10):void 0,b=h!==void 0&&h>=1?h:void 0,f="";if(isValidElement(o)&&o.props&&typeof o.props=="object"&&"children"in o.props&&typeof o.props.children=="string"?f=o.props.children:typeof o=="string"&&(f=o),m){let H=m.component;return jsx$1(Suspense,{fallback:jsx$1(Ae,{}),children:jsx$1(H,{code:f,isIncomplete:c,language:u})})}if(u==="mermaid"&&i){let H=pt(l,"mermaid"),S=je(l,"download"),F=je(l,"copy"),z=je(l,"fullscreen"),q=je(l,"panZoom"),A=H&&(S||F||z);return jsx$1(Suspense,{fallback:jsx$1(Ae,{}),children:jsxs$1("div",{className:r("group relative my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2",t),"data-streamdown":"mermaid-block",children:[jsx$1("div",{className:r("flex h-8 items-center text-muted-foreground text-xs"),children:jsx$1("span",{className:r("ml-1 font-mono lowercase"),children:"mermaid"})}),A?jsx$1("div",{className:r("pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end"),children:jsxs$1("div",{className:r("pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur"),"data-streamdown":"mermaid-block-actions",children:[S?jsx$1(lo,{chart:f,config:a==null?void 0:a.config}):null,F?jsx$1(Be,{code:f}):null,z?jsx$1(po,{chart:f,config:a==null?void 0:a.config}):null]})}):null,jsx$1("div",{className:r("rounded-md border border-border bg-background"),children:jsx$1(Yr,{chart:f,config:a==null?void 0:a.config,showControls:q})})]})})}let T=pt(l,"code"),x=xo(l,"download"),w=xo(l,"copy");return jsx$1(rt,{className:t,code:f,isIncomplete:c,language:u,startLine:b,children:T?jsxs$1(Fragment,{children:[x?jsx$1(at,{code:f,language:u}):null,w?jsx$1(Be,{}):null]}):null})},Wo=memo(ts,(e,t)=>e.className===t.className&&_e(e.node,t.node));Wo.displayName="MarkdownCode";var Zo=memo(to,(e,t)=>e.className===t.className&&_e(e.node,t.node));Zo.displayName="MarkdownImg";var Xo=memo(({children:e,node:t,...o})=>{let r=(Array.isArray(e)?e:[e]).filter(s=>s!=null&&s!=="");if(r.length===1&&isValidElement(r[0])){let s=r[0].props.node,a=s==null?void 0:s.tagName;if(a==="img")return jsx$1(Fragment,{children:e});if(a==="code"&&"data-block"in r[0].props)return jsx$1(Fragment,{children:e})}return jsx$1("p",{...o,children:e})},(e,t)=>E(e,t));Xo.displayName="MarkdownParagraph";var Jo={ol:gt,li:To,ul:Po,hr:Mo,strong:Io,a:No,h1:Lo,h2:Ro,h3:So,h4:Eo,h5:Ho,h6:Do,table:Bo,thead:Ao,tbody:Oo,tr:Vo,th:jo,td:Fo,blockquote:zo,code:Wo,img:Zo,pre:({children:e})=>isValidElement(e)?cloneElement(e,{"data-block":"true"}):e,sup:_o,sub:qo,p:Xo,section:$o};var os=/[\u0590-\u08FF\uFB1D-\uFDFF\uFE70-\uFEFF]/,ns=/\p{L}/u;function qe(e){let t=e.replace(/^#{1,6}\s+/gm,"").replace(/(\*{1,3}|_{1,3})/g,"").replace(/`[^`]*`/g,"").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/^[\s>*\-+\d.]+/gm,"");for(let o of t){if(os.test(o))return "rtl";if(ns.test(o))return "ltr"}return "ltr"}var rs=/^[ \t]{0,3}(`{3,}|~{3,})/,ss=/^\|?[ \t]*:?-{1,}:?[ \t]*(\|[ \t]*:?-{1,}:?[ \t]*)*\|?$/,bt=e=>{let t=e.split(`
51298
+ `)};var Te=({children:e,className:t,onCopy:o,onError:n,timeout:r=2e3})=>{let s=y(),[a,l]=useState(false),[i,c]=useState(false),d=useRef(null),u=useRef(0),{isAnimating:m}=useContext(R),p=B(),g=async f=>{var T,x;if(typeof window=="undefined"||!((T=navigator==null?void 0:navigator.clipboard)!=null&&T.write)){n==null||n(new Error("Clipboard API not available"));return}try{let w=(x=d.current)==null?void 0:x.closest('[data-streamdown="table-wrapper"]'),k=w==null?void 0:w.querySelector("table");if(!k){n==null||n(new Error("Table not found"));return}let I=ue(k),F=({csv:oe,tsv:ct,md:ne}[f]||ne)(I),z=new ClipboardItem({"text/plain":new Blob([F],{type:"text/plain"}),"text/html":new Blob([k.outerHTML],{type:"text/html"})});await navigator.clipboard.write([z]),c(!0),l(!1),o==null||o(f),u.current=window.setTimeout(()=>c(!1),r);}catch(w){n==null||n(w);}};useEffect(()=>{let f=T=>{let x=T.composedPath();d.current&&!x.includes(d.current)&&l(false);};return document.addEventListener("mousedown",f),()=>{document.removeEventListener("mousedown",f),window.clearTimeout(u.current);}},[]);let h=L(),b=i?h.CheckIcon:h.CopyIcon;return jsxs$1("div",{className:s("relative"),ref:d,children:[jsx$1("button",{className:s("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",t),disabled:m,onClick:()=>l(!a),title:p.copyTable,type:"button",children:e!=null?e:jsx$1(b,{height:14,width:14})}),a?jsxs$1("div",{className:s("absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg"),children:[jsx$1("button",{className:s("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>g("md"),title:p.copyTableAsMarkdown,type:"button",children:p.tableFormatMarkdown}),jsx$1("button",{className:s("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>g("csv"),title:p.copyTableAsCsv,type:"button",children:p.tableFormatCsv}),jsx$1("button",{className:s("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>g("tsv"),title:p.copyTableAsTsv,type:"button",children:p.tableFormatTsv})]}):null]})};var Pe=({children:e,className:t,onDownload:o,onError:n})=>{let r=y(),[s,a]=useState(false),l=useRef(null),{isAnimating:i}=useContext(R),c=B(),d=L(),u=m=>{var p;try{let g=(p=l.current)==null?void 0:p.closest('[data-streamdown="table-wrapper"]'),h=g==null?void 0:g.querySelector("table");if(!h){n==null||n(new Error("Table not found"));return}let b=ue(h),f=m==="csv"?oe(b):ne(b);J(`table.${m==="csv"?"csv":"md"}`,f,m==="csv"?"text/csv":"text/markdown"),a(!1),o==null||o(m);}catch(g){n==null||n(g);}};return useEffect(()=>{let m=p=>{let g=p.composedPath();l.current&&!g.includes(l.current)&&a(false);};return document.addEventListener("mousedown",m),()=>{document.removeEventListener("mousedown",m);}},[]),jsxs$1("div",{className:r("relative"),ref:l,children:[jsx$1("button",{className:r("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",t),disabled:i,onClick:()=>a(!s),title:c.downloadTable,type:"button",children:e!=null?e:jsx$1(d.DownloadIcon,{size:14})}),s?jsxs$1("div",{className:r("absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg"),children:[jsx$1("button",{className:r("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>u("csv"),title:c.downloadTableAsCsv,type:"button",children:c.tableFormatCsv}),jsx$1("button",{className:r("w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40"),onClick:()=>u("markdown"),title:c.downloadTableAsMarkdown,type:"button",children:c.tableFormatMarkdown})]}):null]})};var wo=({children:e,className:t,showCopy:o=true,showDownload:n=true})=>{let{Maximize2Icon:r,XIcon:s}=L(),a=y(),[l,i]=useState(false),{isAnimating:c}=useContext(R),d=B(),u=()=>{i(true);},m=()=>{i(false);};return useEffect(()=>{if(l){le();let p=g=>{g.key==="Escape"&&i(false);};return document.addEventListener("keydown",p),()=>{document.removeEventListener("keydown",p),ce();}}},[l]),jsxs$1(Fragment,{children:[jsx$1("button",{className:a("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",t),disabled:c,onClick:u,title:d.viewFullscreen,type:"button",children:jsx$1(r,{size:14})}),l?createPortal(jsx$1("div",{"aria-label":d.viewFullscreen,"aria-modal":"true",className:a("fixed inset-0 z-50 flex flex-col bg-background"),"data-streamdown":"table-fullscreen",onClick:m,onKeyDown:p=>{p.key==="Escape"&&m();},role:"dialog",children:jsxs$1("div",{className:a("flex h-full flex-col"),onClick:p=>p.stopPropagation(),onKeyDown:p=>p.stopPropagation(),role:"presentation",children:[jsxs$1("div",{className:a("flex items-center justify-end gap-1 p-4"),children:[o?jsx$1(Te,{}):null,n?jsx$1(Pe,{}):null,jsx$1("button",{className:a("rounded-md p-1 text-muted-foreground transition-all hover:bg-muted hover:text-foreground"),onClick:m,title:d.exitFullscreen,type:"button",children:jsx$1(s,{size:20})})]}),jsx$1("div",{className:a("flex-1 overflow-auto p-4 pt-0 [&_thead]:sticky [&_thead]:top-0 [&_thead]:z-10"),children:jsx$1("table",{className:a("w-full border-collapse border border-border"),"data-streamdown":"table",children:e})})]})}),document.body):null]})};var ko=({children:e,className:t,showControls:o,showCopy:n=true,showDownload:r=true,showFullscreen:s=true,...a})=>{let l=y(),i=o&&n,c=o&&r,d=o&&s,u=i||c||d;return jsxs$1("div",{className:l("my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2"),"data-streamdown":"table-wrapper",children:[u?jsxs$1("div",{className:l("flex items-center justify-end gap-1"),children:[i?jsx$1(Te,{}):null,c?jsx$1(Pe,{}):null,d?jsx$1(wo,{showCopy:i,showDownload:c,children:e}):null]}):null,jsx$1("div",{className:l("border-collapse overflow-x-auto overflow-y-auto rounded-md border border-border bg-background"),children:jsx$1("table",{className:l("w-full divide-y divide-border",t),"data-streamdown":"table",...a,children:e})})]})};var Gr=/startLine=(\d+)/,Yr=lazy$1(()=>import('./fthry_mermaid-O7DHMXV3.sOtzPg8E.js').then(e=>({default:e.Mermaid}))),Qr=/language-([^\s]+)/;function _e(e,t){if(!(e!=null&&e.position||t!=null&&t.position))return true;if(!(e!=null&&e.position&&(t!=null&&t.position)))return false;let o=e.position.start,n=t.position.start,r=e.position.end,s=t.position.end;return (o==null?void 0:o.line)===(n==null?void 0:n.line)&&(o==null?void 0:o.column)===(n==null?void 0:n.column)&&(r==null?void 0:r.line)===(s==null?void 0:s.line)&&(r==null?void 0:r.column)===(s==null?void 0:s.column)}function E(e,t){return e.className===t.className&&_e(e.node,t.node)}var pt=(e,t)=>typeof e=="boolean"?e:e[t]!==false,ut=(e,t)=>{if(typeof e=="boolean")return e;let o=e.table;return o===false?false:o===true||o===void 0?true:o[t]!==false},xo=(e,t)=>{if(typeof e=="boolean")return e;let o=e.code;return o===false?false:o===true||o===void 0?true:o[t]!==false},je=(e,t)=>{if(typeof e=="boolean")return e;let o=e.mermaid;return o===false?false:o===true||o===void 0?true:o[t]!==false},gt=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("ol",{className:r("list-inside list-decimal whitespace-normal [li_&]:pl-6",t),"data-streamdown":"ordered-list",...n,children:e})},(e,t)=>E(e,t));gt.displayName="MarkdownOl";var To=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("li",{className:r("py-1 [&>p]:inline",t),"data-streamdown":"list-item",...n,children:e})},(e,t)=>e.className===t.className&&_e(e.node,t.node));To.displayName="MarkdownLi";var Po=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("ul",{className:r("list-inside list-disc whitespace-normal [li_&]:pl-6",t),"data-streamdown":"unordered-list",...n,children:e})},(e,t)=>E(e,t));Po.displayName="MarkdownUl";var Mo=memo(({className:e,node:t,...o})=>{let n=y();return jsx$1("hr",{className:n("my-6 border-border",e),"data-streamdown":"horizontal-rule",...o})},(e,t)=>E(e,t));Mo.displayName="MarkdownHr";var Io=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("span",{className:r("font-semibold",t),"data-streamdown":"strong",...n,children:e})},(e,t)=>E(e,t));Io.displayName="MarkdownStrong";var es=({children:e,className:t,href:o,node:n,...r})=>{let s=y(),{linkSafety:a}=useContext(R),[l,i]=useState(false),c=o==="streamdown:incomplete-link",d=useCallback(async g=>{if(!(!(a!=null&&a.enabled&&o)||c)){if(g.preventDefault(),a.onLinkCheck&&await a.onLinkCheck(o)){window.open(o,"_blank","noreferrer");return}i(true);}},[a,o,c]),u=useCallback(()=>{o&&window.open(o,"_blank","noreferrer");},[o]),m=useCallback(()=>{i(false);},[]),p={url:o!=null?o:"",isOpen:l,onClose:m,onConfirm:u};return a!=null&&a.enabled&&o?jsxs$1(Fragment,{children:[jsx$1("button",{className:s("wrap-anywhere appearance-none text-left font-medium text-primary underline",t),"data-incomplete":c,"data-streamdown":"link",onClick:d,type:"button",children:e}),a.renderModal?a.renderModal(p):jsx$1(ro,{...p})]}):jsx$1("a",{className:s("wrap-anywhere font-medium text-primary underline",t),"data-incomplete":c,"data-streamdown":"link",href:o,rel:"noreferrer",target:"_blank",...r,children:e})},No=memo(es,(e,t)=>E(e,t)&&e.href===t.href);No.displayName="MarkdownA";var Lo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h1",{className:r("mt-6 mb-2 font-semibold text-3xl",t),"data-streamdown":"heading-1",...n,children:e})},(e,t)=>E(e,t));Lo.displayName="MarkdownH1";var Ro=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h2",{className:r("mt-6 mb-2 font-semibold text-2xl",t),"data-streamdown":"heading-2",...n,children:e})},(e,t)=>E(e,t));Ro.displayName="MarkdownH2";var So=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h3",{className:r("mt-6 mb-2 font-semibold text-xl",t),"data-streamdown":"heading-3",...n,children:e})},(e,t)=>E(e,t));So.displayName="MarkdownH3";var Eo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h4",{className:r("mt-6 mb-2 font-semibold text-lg",t),"data-streamdown":"heading-4",...n,children:e})},(e,t)=>E(e,t));Eo.displayName="MarkdownH4";var Ho=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h5",{className:r("mt-6 mb-2 font-semibold text-base",t),"data-streamdown":"heading-5",...n,children:e})},(e,t)=>E(e,t));Ho.displayName="MarkdownH5";var Do=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("h6",{className:r("mt-6 mb-2 font-semibold text-sm",t),"data-streamdown":"heading-6",...n,children:e})},(e,t)=>E(e,t));Do.displayName="MarkdownH6";var Bo=memo(({children:e,className:t,node:o,...n})=>{let{controls:r}=useContext(R),s=pt(r,"table"),a=ut(r,"copy"),l=ut(r,"download"),i=ut(r,"fullscreen");return jsx$1(ko,{className:t,showControls:s,showCopy:a,showDownload:l,showFullscreen:i,...n,children:e})},(e,t)=>E(e,t));Bo.displayName="MarkdownTable";var Ao=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("thead",{className:r("bg-muted/80",t),"data-streamdown":"table-header",...n,children:e})},(e,t)=>E(e,t));Ao.displayName="MarkdownThead";var Oo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("tbody",{className:r("divide-y divide-border",t),"data-streamdown":"table-body",...n,children:e})},(e,t)=>E(e,t));Oo.displayName="MarkdownTbody";var Vo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("tr",{className:r("border-border",t),"data-streamdown":"table-row",...n,children:e})},(e,t)=>E(e,t));Vo.displayName="MarkdownTr";var jo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("th",{className:r("whitespace-nowrap px-4 py-2 text-left font-semibold text-sm",t),"data-streamdown":"table-header-cell",...n,children:e})},(e,t)=>E(e,t));jo.displayName="MarkdownTh";var Fo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("td",{className:r("px-4 py-2 text-sm",t),"data-streamdown":"table-cell",...n,children:e})},(e,t)=>E(e,t));Fo.displayName="MarkdownTd";var zo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("blockquote",{className:r("my-4 border-muted-foreground/30 border-l-4 pl-4 text-muted-foreground italic",t),"data-streamdown":"blockquote",...n,children:e})},(e,t)=>E(e,t));zo.displayName="MarkdownBlockquote";var _o=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("sup",{className:r("text-sm",t),"data-streamdown":"superscript",...n,children:e})},(e,t)=>E(e,t));_o.displayName="MarkdownSup";var qo=memo(({children:e,className:t,node:o,...n})=>{let r=y();return jsx$1("sub",{className:r("text-sm",t),"data-streamdown":"subscript",...n,children:e})},(e,t)=>E(e,t));qo.displayName="MarkdownSub";var $o=memo(({children:e,className:t,node:o,...n})=>{if("data-footnotes"in n){let s=i=>{var m,p;if(!isValidElement(i))return false;let c=Array.isArray(i.props.children)?i.props.children:[i.props.children],d=false,u=false;for(let g of c)if(g){if(typeof g=="string")g.trim()!==""&&(d=true);else if(isValidElement(g))if(((m=g.props)==null?void 0:m["data-footnote-backref"])!==void 0)u=true;else {let h=Array.isArray(g.props.children)?g.props.children:[g.props.children];for(let b of h){if(typeof b=="string"&&b.trim()!==""){d=true;break}if(isValidElement(b)&&((p=b.props)==null?void 0:p["data-footnote-backref"])===void 0){d=true;break}}}}return u&&!d},a=Array.isArray(e)?e.map(i=>{if(!isValidElement(i))return i;if(i.type===gt){let d=(Array.isArray(i.props.children)?i.props.children:[i.props.children]).filter(u=>!s(u));return d.length===0?null:{...i,props:{...i.props,children:d}}}return i}):e;return (Array.isArray(a)?a.some(i=>i!==null):a!==null)?jsx$1("section",{className:t,...n,children:a}):null}return jsx$1("section",{className:t,...n,children:e})},(e,t)=>E(e,t));$o.displayName="MarkdownSection";var ts=({node:e,className:t,children:o,...n})=>{var k,I;let r=y(),s=!("data-block"in n),{mermaid:a,controls:l}=useContext(R),i=de(),c=et(),d=t==null?void 0:t.match(Qr),u=(k=d==null?void 0:d.at(1))!=null?k:"",m=so(u);if(s)return jsx$1("code",{className:r("rounded bg-muted px-1.5 py-0.5 font-mono text-sm",t),"data-streamdown":"inline-code",...n,children:o});let p=(I=e==null?void 0:e.properties)==null?void 0:I.metastring,g=p==null?void 0:p.match(Gr),h=g?Number.parseInt(g[1],10):void 0,b=h!==void 0&&h>=1?h:void 0,f="";if(isValidElement(o)&&o.props&&typeof o.props=="object"&&"children"in o.props&&typeof o.props.children=="string"?f=o.props.children:typeof o=="string"&&(f=o),m){let H=m.component;return jsx$1(Suspense,{fallback:jsx$1(Ae,{}),children:jsx$1(H,{code:f,isIncomplete:c,language:u})})}if(u==="mermaid"&&i){let H=pt(l,"mermaid"),S=je(l,"download"),F=je(l,"copy"),z=je(l,"fullscreen"),q=je(l,"panZoom"),A=H&&(S||F||z);return jsx$1(Suspense,{fallback:jsx$1(Ae,{}),children:jsxs$1("div",{className:r("group relative my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2",t),"data-streamdown":"mermaid-block",children:[jsx$1("div",{className:r("flex h-8 items-center text-muted-foreground text-xs"),children:jsx$1("span",{className:r("ml-1 font-mono lowercase"),children:"mermaid"})}),A?jsx$1("div",{className:r("pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end"),children:jsxs$1("div",{className:r("pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur"),"data-streamdown":"mermaid-block-actions",children:[S?jsx$1(lo,{chart:f,config:a==null?void 0:a.config}):null,F?jsx$1(Be,{code:f}):null,z?jsx$1(po,{chart:f,config:a==null?void 0:a.config}):null]})}):null,jsx$1("div",{className:r("rounded-md border border-border bg-background"),children:jsx$1(Yr,{chart:f,config:a==null?void 0:a.config,showControls:q})})]})})}let T=pt(l,"code"),x=xo(l,"download"),w=xo(l,"copy");return jsx$1(rt,{className:t,code:f,isIncomplete:c,language:u,startLine:b,children:T?jsxs$1(Fragment,{children:[x?jsx$1(at,{code:f,language:u}):null,w?jsx$1(Be,{}):null]}):null})},Wo=memo(ts,(e,t)=>e.className===t.className&&_e(e.node,t.node));Wo.displayName="MarkdownCode";var Zo=memo(to,(e,t)=>e.className===t.className&&_e(e.node,t.node));Zo.displayName="MarkdownImg";var Xo=memo(({children:e,node:t,...o})=>{let r=(Array.isArray(e)?e:[e]).filter(s=>s!=null&&s!=="");if(r.length===1&&isValidElement(r[0])){let s=r[0].props.node,a=s==null?void 0:s.tagName;if(a==="img")return jsx$1(Fragment,{children:e});if(a==="code"&&"data-block"in r[0].props)return jsx$1(Fragment,{children:e})}return jsx$1("p",{...o,children:e})},(e,t)=>E(e,t));Xo.displayName="MarkdownParagraph";var Jo={ol:gt,li:To,ul:Po,hr:Mo,strong:Io,a:No,h1:Lo,h2:Ro,h3:So,h4:Eo,h5:Ho,h6:Do,table:Bo,thead:Ao,tbody:Oo,tr:Vo,th:jo,td:Fo,blockquote:zo,code:Wo,img:Zo,pre:({children:e})=>isValidElement(e)?cloneElement(e,{"data-block":"true"}):e,sup:_o,sub:qo,p:Xo,section:$o};var os=/[\u0590-\u08FF\uFB1D-\uFDFF\uFE70-\uFEFF]/,ns=/\p{L}/u;function qe(e){let t=e.replace(/^#{1,6}\s+/gm,"").replace(/(\*{1,3}|_{1,3})/g,"").replace(/`[^`]*`/g,"").replace(/\[([^\]]*)\]\([^)]*\)/g,"$1").replace(/^[\s>*\-+\d.]+/gm,"");for(let o of t){if(os.test(o))return "rtl";if(ns.test(o))return "ltr"}return "ltr"}var rs=/^[ \t]{0,3}(`{3,}|~{3,})/,ss=/^\|?[ \t]*:?-{1,}:?[ \t]*(\|[ \t]*:?-{1,}:?[ \t]*)*\|?$/,bt=e=>{let t=e.split(`
51283
51299
  `),o=null,n=0;for(let r of t){let s=rs.exec(r);if(o===null){if(s){let a=s[1];o=a[0],n=a.length;}}else if(s){let a=s[1],l=a[0],i=a.length;l===o&&i>=n&&(o=null,n=0);}}return o!==null},Ko=e=>{let t=e.split(`
51284
51300
  `);for(let o of t){let n=o.trim();if(n.length>0&&n.includes("|")&&ss.test(n))return true}return false};var Uo=()=>e=>{visit(e,"html",(t,o,n)=>{!n||typeof o!="number"||(n.children[o]={type:"text",value:t.value});});};var Yo=[],Qo={allowDangerousHtml:true},$e=new WeakMap,yt=class{constructor(){this.cache=new Map;this.keyCache=new WeakMap;this.maxSize=100;}generateCacheKey(t){let o=this.keyCache.get(t);if(o)return o;let n=t.rehypePlugins,r=t.remarkPlugins,s=t.remarkRehypeOptions;if(!(n||r||s)){let u="default";return this.keyCache.set(t,u),u}let a=u=>{if(!u||u.length===0)return "";let m="";for(let p=0;p<u.length;p+=1){let g=u[p];if(p>0&&(m+=","),Array.isArray(g)){let[h,b]=g;if(typeof h=="function"){let f=$e.get(h);f||(f=h.name,$e.set(h,f)),m+=f;}else m+=String(h);m+=":",m+=JSON.stringify(b);}else if(typeof g=="function"){let h=$e.get(g);h||(h=g.name,$e.set(g,h)),m+=h;}else m+=String(g);}return m},l=a(n),i=a(r),c=s?JSON.stringify(s):"",d=`${i}::${l}::${c}`;return this.keyCache.set(t,d),d}get(t){let o=this.generateCacheKey(t),n=this.cache.get(o);return n&&(this.cache.delete(o),this.cache.set(o,n)),n}set(t,o){let n=this.generateCacheKey(t);if(this.cache.size>=this.maxSize){let r=this.cache.keys().next().value;r&&this.cache.delete(r);}this.cache.set(n,o);}clear(){this.cache.clear();}},en=new yt,wt=e=>{let t=gs(e),o=e.children||"",n=t.runSync(t.parse(o),o);return ks(n,e)},gs=e=>{let t=en.get(e);if(t)return t;let o=hs(e);return en.set(e,o),o},bs=e=>e.some(t=>Array.isArray(t)?t[0]===rehypeRaw:t===rehypeRaw),hs=e=>{let t=e.rehypePlugins||Yo,o=e.remarkPlugins||Yo,n=bs(t)?o:[...o,Uo],r=e.remarkRehypeOptions?{...Qo,...e.remarkRehypeOptions}:Qo;return unified().use(remarkParse).use(n).use(remarkRehype,r).use(t)},tn=e=>e,ys=(e,t,o,n)=>{o?e.children.splice(t,1):e.children[t]={type:"text",value:n};},ws=(e,t)=>{var o;for(let n in urlAttributes)if(Object.hasOwn(urlAttributes,n)&&Object.hasOwn(e.properties,n)){let r=e.properties[n],s=urlAttributes[n];(s===null||s.includes(e.tagName))&&(e.properties[n]=(o=t(String(r||""),n,e))!=null?o:void 0);}},Cs=(e,t,o,n,r,s)=>{let a=false;return n?a=!n.includes(e.tagName):r&&(a=r.includes(e.tagName)),!a&&s&&typeof t=="number"&&(a=!s(e,t,o)),a},ks=(e,t)=>{let{allowElement:o,allowedElements:n,disallowedElements:r,skipHtml:s,unwrapDisallowed:a,urlTransform:l}=t;if(o||n||r||s||l){let c=l||tn;visit(e,(d,u,m)=>{if(d.type==="raw"&&m&&typeof u=="number")return ys(m,u,s,d.value),u;if(d.type==="element"&&(ws(d,c),Cs(d,u,m,n,r,o)&&m&&typeof u=="number"))return a&&d.children?m.children.splice(u,1,...d.children):m.children.splice(u,1),u});}return toJsxRuntime(e,{Fragment:Fragment,components:t.components,ignoreInvalidStyle:true,jsx:jsx$1,jsxs:jsxs$1,passKeys:true,passNode:true})};var xs=/\[\^[\w-]{1,200}\](?!:)/,Ts=/\[\^[\w-]{1,200}\]:/;var Ps=/<(\w+)[\s>]/,Ms=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),on=new Map,nn=new Map,Is=e=>{let t=e.toLowerCase(),o=on.get(t);if(o)return o;let n=new RegExp(`<${t}(?=[\\s>/])[^>]*>`,"gi");return on.set(t,n),n},Ns=e=>{let t=e.toLowerCase(),o=nn.get(t);if(o)return o;let n=new RegExp(`</${t}(?=[\\s>])[^>]*>`,"gi");return nn.set(t,n),n},rn=(e,t)=>{if(Ms.has(t.toLowerCase()))return 0;let o=e.match(Is(t));if(!o)return 0;let n=0;for(let r of o)r.trimEnd().endsWith("/>")||(n+=1);return n},sn=(e,t)=>{let o=e.match(Ns(t));return o?o.length:0},Ls=e=>{let t=0;for(let o=0;o<e.length-1;o+=1)e[o]==="$"&&e[o+1]==="$"&&(t+=1,o+=1);return t},Ct=e=>{let t=xs.test(e),o=Ts.test(e);if(t||o)return [e];let n=x.lex(e,{gfm:true}),r=[],s=[],a=false;for(let l of n){let i=l.raw,c=r.length;if(s.length>0){r[c-1]+=i;let d=s.at(-1),u=rn(i,d),m=sn(i,d);for(let p=0;p<u;p+=1)s.push(d);for(let p=0;p<m;p+=1)s.length>0&&s.at(-1)===d&&s.pop();continue}if(l.type==="html"&&l.block){let d=i.match(Ps);if(d){let u=d[1],m=rn(i,u),p=sn(i,u);m>p&&s.push(u);}}if(c>0&&!a){let d=r[c-1];if(Ls(d)%2===1){r[c-1]=d+i;continue}}r.push(i),l.type!=="space"&&(a=l.type==="code");}return r};var an=(e,t)=>{if(!t.length)return e;let o=e;for(let n of t){let r=new RegExp(`(<${n}(?=[\\s>/])[^>]*>)([\\s\\S]*?)(</${n}\\s*>)`,"gi");o=o.replace(r,(s,a,l,i)=>{let c=l.replace(/\n\n/g,`
51285
51301
  <!---->
@@ -51375,10 +51391,33 @@ var deleteThread = function (baseUrl, headers, threadId) { return __awaiter(void
51375
51391
  return [2 /*return*/];
51376
51392
  }
51377
51393
  });
51378
- }); };
51394
+ }); };
51395
+
51396
+ var snapshotInlineErrors = function (state) {
51397
+ var e_1, _a;
51398
+ var _b, _c;
51399
+ var out = {};
51400
+ var inlineErrors = (_b = state === null || state === void 0 ? void 0 : state.inlineErrors) !== null && _b !== void 0 ? _b : {};
51401
+ try {
51402
+ for (var _d = __values(Object.keys(inlineErrors)), _e = _d.next(); !_e.done; _e = _d.next()) {
51403
+ var key = _e.value;
51404
+ var message = (_c = inlineErrors[key]) === null || _c === void 0 ? void 0 : _c.message;
51405
+ if (typeof message === 'string' && message.length > 0)
51406
+ out[key] = message;
51407
+ }
51408
+ }
51409
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
51410
+ finally {
51411
+ try {
51412
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
51413
+ }
51414
+ finally { if (e_1) throw e_1.error; }
51415
+ }
51416
+ return out;
51417
+ };
51379
51418
  // Subgrids whose position is a strict prefix of `position` (callers pre-filter to those whose handler does anything), innermost first.
51380
51419
  var findClickableAncestorSubgrids = function (subgrids, position) {
51381
- var e_1, _a;
51420
+ var e_2, _a;
51382
51421
  if (!Array.isArray(subgrids) ||
51383
51422
  !Array.isArray(position) ||
51384
51423
  position.length === 0)
@@ -51402,15 +51441,122 @@ var findClickableAncestorSubgrids = function (subgrids, position) {
51402
51441
  matches.push(sg);
51403
51442
  }
51404
51443
  }
51405
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
51444
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
51406
51445
  finally {
51407
51446
  try {
51408
51447
  if (subgrids_1_1 && !subgrids_1_1.done && (_a = subgrids_1.return)) _a.call(subgrids_1);
51409
51448
  }
51410
- finally { if (e_1) throw e_1.error; }
51449
+ finally { if (e_2) throw e_2.error; }
51411
51450
  }
51412
51451
  matches.sort(function (a, b) { return b.position.length - a.position.length; });
51413
51452
  return matches;
51453
+ };
51454
+ function validateRepeatIndex(repeatIndex, inRepeat, rowCount, id) {
51455
+ if (!inRepeat) {
51456
+ if (typeof repeatIndex === 'number') {
51457
+ return {
51458
+ errorType: 'repeated_index_unexpected',
51459
+ error: "'".concat(id, "' is not in a repeated container; do not pass repeatIndex.")
51460
+ };
51461
+ }
51462
+ return null;
51463
+ }
51464
+ if (typeof repeatIndex !== 'number') {
51465
+ var range = rowCount === 0 ? '(none yet - add a row first)' : "0..".concat(rowCount - 1);
51466
+ return {
51467
+ errorType: 'repeated_index_missing',
51468
+ error: "'".concat(id, "' is in a repeated container; pass repeatIndex ").concat(range, ".")
51469
+ };
51470
+ }
51471
+ if (repeatIndex < 0 || repeatIndex >= rowCount) {
51472
+ return {
51473
+ errorType: 'repeated_index_out_of_range',
51474
+ error: "repeatIndex ".concat(repeatIndex, " is out of range for '").concat(id, "' (rowCount ").concat(rowCount, ").")
51475
+ };
51476
+ }
51477
+ return null;
51478
+ }
51479
+ var findTableOnCurrentStep = function (formUuid, tableId) {
51480
+ var _a, _b, _c, _d, _e;
51481
+ if (!formUuid) {
51482
+ return {
51483
+ ok: false,
51484
+ errorType: 'no_form_state',
51485
+ error: 'Form has not loaded yet.'
51486
+ };
51487
+ }
51488
+ var state = internalState[formUuid];
51489
+ if (!state || !state.currentStep || !state.assistantClient) {
51490
+ return {
51491
+ ok: false,
51492
+ errorType: 'no_form_state',
51493
+ error: 'Form has not loaded yet.'
51494
+ };
51495
+ }
51496
+ if (typeof tableId !== 'string' || tableId.length === 0) {
51497
+ return {
51498
+ ok: false,
51499
+ errorType: 'shape_mismatch',
51500
+ error: 'tableId is required.'
51501
+ };
51502
+ }
51503
+ var table = ((_a = state.currentStep.tables) !== null && _a !== void 0 ? _a : []).find(function (t) { return (t === null || t === void 0 ? void 0 : t.id) === tableId; });
51504
+ if (!table) {
51505
+ return {
51506
+ ok: false,
51507
+ errorType: 'not_on_step',
51508
+ error: "Table '".concat(tableId, "' is not on the current step.")
51509
+ };
51510
+ }
51511
+ var flags = (_b = state.visiblePositions) === null || _b === void 0 ? void 0 : _b[(_c = getPositionKey(table)) !== null && _c !== void 0 ? _c : 'root'];
51512
+ if (Array.isArray(flags) && !flags.some(Boolean)) {
51513
+ return {
51514
+ ok: false,
51515
+ errorType: 'hidden',
51516
+ error: "Table '".concat(tableId, "' is on the current step but is hidden right now.")
51517
+ };
51518
+ }
51519
+ var columns = Array.isArray((_d = table === null || table === void 0 ? void 0 : table.properties) === null || _d === void 0 ? void 0 : _d.columns)
51520
+ ? table.properties.columns
51521
+ : [];
51522
+ var fieldsMap = (_e = state.fields) !== null && _e !== void 0 ? _e : {};
51523
+ var rowCount = columns.reduce(function (max, col) {
51524
+ var _a;
51525
+ var v = (col === null || col === void 0 ? void 0 : col.field_key) ? (_a = fieldsMap[col.field_key]) === null || _a === void 0 ? void 0 : _a.value : undefined;
51526
+ return Array.isArray(v) ? Math.max(max, v.length) : max;
51527
+ }, 0);
51528
+ return { ok: true, found: { state: state, table: table, columns: columns, rowCount: rowCount } };
51529
+ };
51530
+ var getTableCapabilities = function (table, rowCount) {
51531
+ var _a;
51532
+ var props = (_a = table === null || table === void 0 ? void 0 : table.properties) !== null && _a !== void 0 ? _a : {};
51533
+ // A transpose table with zero rows renders un-transposed, so it stays editable
51534
+ var canEditCells = !!props.enable_editing && !(props.transpose && rowCount > 0);
51535
+ var addDelete = canEditCells && !!props.add_delete_rows;
51536
+ return { canEditCells: canEditCells, canAddRows: addDelete, canDeleteRows: addDelete };
51537
+ };
51538
+ var buildRowData = function (found, rowIndex) {
51539
+ var e_3, _a;
51540
+ var _b, _c;
51541
+ var rowData = {};
51542
+ try {
51543
+ for (var _d = __values(found.columns), _e = _d.next(); !_e.done; _e = _d.next()) {
51544
+ var col = _e.value;
51545
+ if (!(col === null || col === void 0 ? void 0 : col.field_key))
51546
+ continue;
51547
+ var v = (_c = (_b = found.state.fields) === null || _b === void 0 ? void 0 : _b[col.field_key]) === null || _c === void 0 ? void 0 : _c.value;
51548
+ var cValue = Array.isArray(v) ? v[rowIndex] : v;
51549
+ rowData[col.name] = cValue;
51550
+ }
51551
+ }
51552
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
51553
+ finally {
51554
+ try {
51555
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
51556
+ }
51557
+ finally { if (e_3) throw e_3.error; }
51558
+ }
51559
+ return rowData;
51414
51560
  };
51415
51561
 
51416
51562
  var extractRawText = function (props) {
@@ -51476,9 +51622,19 @@ var getPanelRuntimeSnapshot = function (formId) {
51476
51622
  var findClickableAncestorIds = function (el) {
51477
51623
  return findClickableAncestorSubgrids(clickableSubgrids, Array.isArray(el === null || el === void 0 ? void 0 : el.position) ? el.position : []).map(function (sg) { var _a; return (_a = sg.id) !== null && _a !== void 0 ? _a : ''; });
51478
51624
  };
51625
+ // Match the renderer (fields + text-variable arrays) by reading the same flags it builds
51626
+ var rowCountByContainer = {};
51627
+ getRepeatedContainers(step).forEach(function (container) {
51628
+ var id = container === null || container === void 0 ? void 0 : container.id;
51629
+ if (!id)
51630
+ return;
51631
+ var flags = visiblePositions[getPositionKey(container)];
51632
+ if (Array.isArray(flags))
51633
+ rowCountByContainer[id] = flags.length;
51634
+ });
51479
51635
  // Build per-field entries for the current step
51480
51636
  var currentStepFields = ((_h = step.servar_fields) !== null && _h !== void 0 ? _h : []).map(function (field) {
51481
- var _a, _b, _c, _d, _e, _f, _g;
51637
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
51482
51638
  var positionKey = ((_a = field.position) === null || _a === void 0 ? void 0 : _a.join(',')) || 'root';
51483
51639
  var visibilityFlags = visiblePositions[positionKey];
51484
51640
  var visible = Array.isArray(visibilityFlags)
@@ -51495,6 +51651,11 @@ var getPanelRuntimeSnapshot = function (formId) {
51495
51651
  var error = (_c = inlineErrors[field.servar.key]) === null || _c === void 0 ? void 0 : _c.message;
51496
51652
  var servar = (_d = field.servar) !== null && _d !== void 0 ? _d : {};
51497
51653
  var meta = (_e = servar.metadata) !== null && _e !== void 0 ? _e : {};
51654
+ var repeated = !!servar.repeated;
51655
+ var repeatAncestor = repeated
51656
+ ? getRepeatedContainer(step, field)
51657
+ : undefined;
51658
+ var repeatAncestorId = (_f = repeatAncestor === null || repeatAncestor === void 0 ? void 0 : repeatAncestor.id) !== null && _f !== void 0 ? _f : '';
51498
51659
  var rawOptions = Array.isArray(meta.options) ? meta.options : null;
51499
51660
  var rawLabels = Array.isArray(meta.labels) ? meta.labels : [];
51500
51661
  var options = rawOptions
@@ -51506,6 +51667,26 @@ var getPanelRuntimeSnapshot = function (formId) {
51506
51667
  });
51507
51668
  })
51508
51669
  : undefined;
51670
+ // Per-row option overrides for repeated choice fields
51671
+ var rawRowOptions = Array.isArray(meta.repeat_options)
51672
+ ? meta.repeat_options.map(function (row) {
51673
+ return Array.isArray(row)
51674
+ ? row.map(function (o) {
51675
+ var _a, _b, _c, _d, _e;
51676
+ return ({
51677
+ value: String((_b = (_a = o === null || o === void 0 ? void 0 : o.value) !== null && _a !== void 0 ? _a : o) !== null && _b !== void 0 ? _b : ''),
51678
+ label: String((_e = (_d = (_c = o === null || o === void 0 ? void 0 : o.label) !== null && _c !== void 0 ? _c : o === null || o === void 0 ? void 0 : o.value) !== null && _d !== void 0 ? _d : o) !== null && _e !== void 0 ? _e : '')
51679
+ });
51680
+ })
51681
+ : null;
51682
+ })
51683
+ : undefined;
51684
+ var padTarget = (_h = (_g = rowCountByContainer[repeatAncestorId]) !== null && _g !== void 0 ? _g : rawRowOptions === null || rawRowOptions === void 0 ? void 0 : rawRowOptions.length) !== null && _h !== void 0 ? _h : 0;
51685
+ var rowOptions = rawRowOptions
51686
+ ? Array.from({ length: padTarget }, function (_, i) {
51687
+ return Array.isArray(rawRowOptions[i]) ? rawRowOptions[i] : null;
51688
+ })
51689
+ : undefined;
51509
51690
  var rawQuestions = Array.isArray(meta.questions) ? meta.questions : null;
51510
51691
  var questions = rawQuestions
51511
51692
  ? rawQuestions
@@ -51524,9 +51705,20 @@ var getPanelRuntimeSnapshot = function (formId) {
51524
51705
  var sliderLabels = meta.min_val_label || meta.max_val_label
51525
51706
  ? __assign(__assign({}, (meta.min_val_label ? { min: String(meta.min_val_label) } : {})), (meta.max_val_label ? { max: String(meta.max_val_label) } : {})) : undefined;
51526
51707
  var disabled = !!(props.disabled || formReadOnly);
51527
- var hasLogicRules = elementHasLogicRules(logicRules, 'change', step.id, (_f = servar.id) !== null && _f !== void 0 ? _f : '');
51708
+ var hasLogicRules = elementHasLogicRules(logicRules, 'change', step.id, (_j = servar.id) !== null && _j !== void 0 ? _j : '');
51528
51709
  var clickableAncestorIds = findClickableAncestorIds(field);
51529
- return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ key: servar.key, type: servar.type, value: (_g = fieldEntity === null || fieldEntity === void 0 ? void 0 : fieldEntity.value) !== null && _g !== void 0 ? _g : null, visible: visible, disabled: disabled, required: !!servar.required, repeated: !!servar.repeated }, (hasLogicRules ? { hasLogicRules: true } : {})), (clickableAncestorIds.length > 0 ? { clickableAncestorIds: clickableAncestorIds } : {})), (placeholder ? { placeholder: placeholder } : {})), (tooltip ? { tooltip: tooltip } : {})), (error ? { error: error } : {})), (options ? { options: options } : {})), (questions ? { questions: questions } : {})), (typeof servar.min_length === 'number'
51710
+ var value = (_k = fieldEntity === null || fieldEntity === void 0 ? void 0 : fieldEntity.value) !== null && _k !== void 0 ? _k : null;
51711
+ var rowCount = repeated
51712
+ ? (_l = rowCountByContainer[repeatAncestorId]) !== null && _l !== void 0 ? _l : (Array.isArray(value) ? value.length : 0)
51713
+ : undefined;
51714
+ // Pad to rowCount so trailing rendered-but-unwritten rows read as blank
51715
+ if (typeof rowCount === 'number' && rowCount > 0) {
51716
+ var base = Array.isArray(value) ? value : [];
51717
+ if (base.length < rowCount) {
51718
+ value = __spreadArray(__spreadArray([], __read(base), false), __read(Array(rowCount - base.length).fill(getDefaultFieldValue(field))), false);
51719
+ }
51720
+ }
51721
+ return __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ key: servar.key, type: servar.type, value: value, visible: visible, disabled: disabled, required: !!servar.required }, (typeof rowCount === 'number' ? { rowCount: rowCount } : {})), ((repeatAncestor === null || repeatAncestor === void 0 ? void 0 : repeatAncestor.id) ? { repeatContainerId: repeatAncestor.id } : {})), (hasLogicRules ? { hasLogicRules: true } : {})), (clickableAncestorIds.length > 0 ? { clickableAncestorIds: clickableAncestorIds } : {})), (placeholder ? { placeholder: placeholder } : {})), (tooltip ? { tooltip: tooltip } : {})), (error ? { error: error } : {})), (options ? { options: options } : {})), (rowOptions ? { rowOptions: rowOptions } : {})), (questions ? { questions: questions } : {})), (typeof servar.min_length === 'number'
51530
51722
  ? { minLength: servar.min_length }
51531
51723
  : {})), (typeof servar.max_length === 'number'
51532
51724
  ? { maxLength: servar.max_length }
@@ -51593,14 +51785,20 @@ var getPanelRuntimeSnapshot = function (formId) {
51593
51785
  return Array.isArray(flags) ? flags.some(Boolean) : true;
51594
51786
  };
51595
51787
  clickableSubgrids.forEach(function (sg) {
51596
- var _a, _b;
51788
+ var _a, _b, _c;
51597
51789
  var actions = sg.properties.actions;
51598
51790
  var hasLogicRules = elementHasLogicRules(logicRules, 'action', step.id, (_a = sg.id) !== null && _a !== void 0 ? _a : '');
51599
51791
  var clickableAncestorIds = findClickableAncestorIds(sg);
51600
- currentStepElements.push(__assign(__assign({ type: 'container', id: (_b = sg.id) !== null && _b !== void 0 ? _b : '', visible: visibilityFor(sg), actions: actions }, (hasLogicRules ? { hasLogicRules: true } : {})), (clickableAncestorIds.length > 0 ? { clickableAncestorIds: clickableAncestorIds } : {})));
51792
+ // A repeated subgrid is its own repeat container (one clickable instance per row)
51793
+ var containerRepeatContainer = !sg.repeated
51794
+ ? (_b = getRepeatedContainer(step, sg)) === null || _b === void 0 ? void 0 : _b.id
51795
+ : sg.id;
51796
+ currentStepElements.push(__assign(__assign(__assign({ type: 'container', id: (_c = sg.id) !== null && _c !== void 0 ? _c : '', visible: visibilityFor(sg), actions: actions }, (hasLogicRules ? { hasLogicRules: true } : {})), (clickableAncestorIds.length > 0 ? { clickableAncestorIds: clickableAncestorIds } : {})), (containerRepeatContainer
51797
+ ? { repeatContainerId: containerRepeatContainer }
51798
+ : {})));
51601
51799
  });
51602
51800
  ((_o = step.texts) !== null && _o !== void 0 ? _o : []).forEach(function (el) {
51603
- var _a, _b, _c;
51801
+ var _a, _b, _c, _d;
51604
51802
  var raw = extractRawText((_a = el === null || el === void 0 ? void 0 : el.properties) !== null && _a !== void 0 ? _a : {});
51605
51803
  if (!raw)
51606
51804
  return;
@@ -51609,13 +51807,12 @@ var getPanelRuntimeSnapshot = function (formId) {
51609
51807
  var actions = Array.isArray(props.actions) ? props.actions : [];
51610
51808
  var hasLogicRules = elementHasLogicRules(logicRules, 'action', step.id, (_c = el.id) !== null && _c !== void 0 ? _c : '');
51611
51809
  var clickableAncestorIds = findClickableAncestorIds(el);
51612
- currentStepElements.push(__assign(__assign(__assign(__assign(__assign({ type: 'text', text: resolved, visible: visibilityFor(el) }, (el.id ? { id: el.id } : {})), (raw !== resolved ? { templateText: raw } : {})), (actions.length > 0 ? { actions: actions } : {})), (hasLogicRules ? { hasLogicRules: true } : {})), (clickableAncestorIds.length > 0 ? { clickableAncestorIds: clickableAncestorIds } : {})));
51810
+ var textRepeatContainer = (_d = getRepeatedContainer(step, el)) === null || _d === void 0 ? void 0 : _d.id;
51811
+ currentStepElements.push(__assign(__assign(__assign(__assign(__assign(__assign({ type: 'text', text: resolved, visible: visibilityFor(el) }, (el.id ? { id: el.id } : {})), (raw !== resolved ? { templateText: raw } : {})), (actions.length > 0 ? { actions: actions } : {})), (hasLogicRules ? { hasLogicRules: true } : {})), (clickableAncestorIds.length > 0 ? { clickableAncestorIds: clickableAncestorIds } : {})), (textRepeatContainer ? { repeatContainerId: textRepeatContainer } : {})));
51613
51812
  });
51614
51813
  ((_p = step.buttons) !== null && _p !== void 0 ? _p : []).forEach(function (el) {
51615
- var _a, _b, _c, _d;
51814
+ var _a, _b, _c, _d, _e;
51616
51815
  var raw = extractRawText((_a = el === null || el === void 0 ? void 0 : el.properties) !== null && _a !== void 0 ? _a : {});
51617
- if (!raw)
51618
- return;
51619
51816
  var props = (_b = el === null || el === void 0 ? void 0 : el.properties) !== null && _b !== void 0 ? _b : {};
51620
51817
  var actions = Array.isArray(props.actions) ? props.actions : [];
51621
51818
  // submit-flagged buttons also fire submit-trigger and form_complete-trigger rules on this step
@@ -51623,7 +51820,12 @@ var getPanelRuntimeSnapshot = function (formId) {
51623
51820
  (!!props.submit &&
51624
51821
  (elementHasLogicRules(logicRules, 'submit', step.id, '') ||
51625
51822
  elementHasLogicRules(logicRules, 'form_complete', step.id, '')));
51626
- currentStepElements.push(__assign({ type: 'button', id: (_d = el.id) !== null && _d !== void 0 ? _d : '', text: resolveText(raw), visible: visibilityFor(el), submit: !!props.submit, actions: actions }, (hasLogicRules ? { hasLogicRules: true } : {})));
51823
+ if (!raw && actions.length === 0 && !props.submit && !hasLogicRules)
51824
+ return;
51825
+ var buttonRepeatContainer = (_d = getRepeatedContainer(step, el)) === null || _d === void 0 ? void 0 : _d.id;
51826
+ currentStepElements.push(__assign(__assign({ type: 'button', id: (_e = el.id) !== null && _e !== void 0 ? _e : '', text: resolveText(raw), visible: visibilityFor(el), disabled: isButtonDisabled(el, step, visiblePositions, formReadOnly), submit: !!props.submit, actions: actions }, (hasLogicRules ? { hasLogicRules: true } : {})), (buttonRepeatContainer
51827
+ ? { repeatContainerId: buttonRepeatContainer }
51828
+ : {})));
51627
51829
  });
51628
51830
  ((_q = step.images) !== null && _q !== void 0 ? _q : []).forEach(function (el) {
51629
51831
  var _a;
@@ -51644,7 +51846,7 @@ var getPanelRuntimeSnapshot = function (formId) {
51644
51846
  // Collect tables with their column headers and row data
51645
51847
  var currentStepTables = [];
51646
51848
  ((_s = step.tables) !== null && _s !== void 0 ? _s : []).forEach(function (el) {
51647
- var _a, _b;
51849
+ var _a, _b, _c, _d, _e;
51648
51850
  var cols = ((_b = (_a = el === null || el === void 0 ? void 0 : el.properties) === null || _a === void 0 ? void 0 : _a.columns) !== null && _b !== void 0 ? _b : []);
51649
51851
  if (cols.length === 0)
51650
51852
  return;
@@ -51660,17 +51862,21 @@ var getPanelRuntimeSnapshot = function (formId) {
51660
51862
  return Array.isArray(v) ? (_b = v[i]) !== null && _b !== void 0 ? _b : null : v !== null && v !== void 0 ? v : null;
51661
51863
  });
51662
51864
  });
51663
- currentStepTables.push({
51664
- columns: cols.map(function (c) {
51865
+ var rawActions = Array.isArray((_c = el === null || el === void 0 ? void 0 : el.properties) === null || _c === void 0 ? void 0 : _c.actions)
51866
+ ? el.properties.actions
51867
+ : [];
51868
+ var actions = rawActions
51869
+ .map(function (a) { return ({ label: typeof (a === null || a === void 0 ? void 0 : a.label) === 'string' ? a.label : '' }); })
51870
+ .filter(function (a) { return a.label.trim().length > 0; });
51871
+ var _f = getTableCapabilities(el, numRows), canEditCells = _f.canEditCells, canAddRows = _f.canAddRows, canDeleteRows = _f.canDeleteRows;
51872
+ var hasLogicRules = elementHasLogicRules(logicRules, 'action', step.id, (_d = el.id) !== null && _d !== void 0 ? _d : '');
51873
+ currentStepTables.push(__assign(__assign(__assign(__assign(__assign(__assign({ id: (_e = el.id) !== null && _e !== void 0 ? _e : '', columns: cols.map(function (c) {
51665
51874
  var _a, _b, _c;
51666
51875
  return ({
51667
51876
  name: (_b = (_a = c.name) !== null && _a !== void 0 ? _a : c.field_key) !== null && _b !== void 0 ? _b : '',
51668
51877
  fieldKey: (_c = c.field_key) !== null && _c !== void 0 ? _c : ''
51669
51878
  });
51670
- }),
51671
- rows: rows,
51672
- visible: visibilityFor(el)
51673
- });
51879
+ }), rows: rows }, (actions.length > 0 ? { actions: actions } : {})), (canAddRows ? { canAddRows: true } : {})), (canDeleteRows ? { canDeleteRows: true } : {})), (canEditCells ? { canEditCells: true } : {})), (hasLogicRules ? { hasLogicRules: true } : {})), { visible: visibilityFor(el) }));
51674
51880
  });
51675
51881
  return {
51676
51882
  currentStep: { id: step.id, key: step.key },
@@ -51709,102 +51915,164 @@ var MULTI_CHOICE_TYPES = new Set([
51709
51915
  'checkbox_group',
51710
51916
  'button_group'
51711
51917
  ]);
51712
- function validateSetFieldValue(fieldKey, rawValue, snapshot) {
51713
- var _a;
51714
- var fields = (_a = snapshot === null || snapshot === void 0 ? void 0 : snapshot.currentStepFields) !== null && _a !== void 0 ? _a : [];
51715
- var field = fields.find(function (f) { return f.key === fieldKey; });
51716
- if (!field) {
51717
- var available = fields.map(function (f) { return f.key; }).join(', ') || '(none)';
51918
+ function validateSetFieldValue(state, fieldKey, rawValue, repeatIndex) {
51919
+ var _a, _b, _c, _d, _e, _f, _g, _h;
51920
+ var currentStep = state === null || state === void 0 ? void 0 : state.currentStep;
51921
+ var stepFields = (_a = currentStep === null || currentStep === void 0 ? void 0 : currentStep.servar_fields) !== null && _a !== void 0 ? _a : [];
51922
+ var found = stepFields.find(function (f) { var _a; return ((_a = f === null || f === void 0 ? void 0 : f.servar) === null || _a === void 0 ? void 0 : _a.key) === fieldKey; });
51923
+ if (!found) {
51924
+ var available = stepFields
51925
+ .map(function (f) { var _a; return (_a = f === null || f === void 0 ? void 0 : f.servar) === null || _a === void 0 ? void 0 : _a.key; })
51926
+ .filter(Boolean)
51927
+ .join(', ') || '(none)';
51718
51928
  return {
51719
51929
  ok: false,
51720
51930
  errorType: 'not_on_step',
51721
51931
  error: "Field '".concat(fieldKey, "' is not on the current step. Available field keys here: ").concat(available, ".")
51722
51932
  };
51723
51933
  }
51724
- if (!field.visible) {
51934
+ var servar = (_b = found.servar) !== null && _b !== void 0 ? _b : {};
51935
+ var type = servar.type;
51936
+ var visiblePositions = (_c = state.visiblePositions) !== null && _c !== void 0 ? _c : {};
51937
+ var flags = visiblePositions[(_d = getPositionKey(found)) !== null && _d !== void 0 ? _d : 'root'];
51938
+ if (Array.isArray(flags) && !flags.some(Boolean)) {
51725
51939
  return {
51726
51940
  ok: false,
51727
51941
  errorType: 'hidden',
51728
51942
  error: "Field '".concat(fieldKey, "' is on the current step but is hidden right now.")
51729
51943
  };
51730
51944
  }
51731
- if (field.disabled) {
51945
+ var formReadOnly = !!(((_e = state.formSettings) === null || _e === void 0 ? void 0 : _e.readOnly) || initState.collaboratorReview === 'readOnly');
51946
+ if (((_f = found.properties) === null || _f === void 0 ? void 0 : _f.disabled) || formReadOnly) {
51732
51947
  return {
51733
51948
  ok: false,
51734
51949
  errorType: 'disabled',
51735
51950
  error: "Field '".concat(fieldKey, "' is disabled and cannot be written.")
51736
51951
  };
51737
51952
  }
51738
- if (UNWRITABLE_TYPES.has(field.type)) {
51953
+ if (UNWRITABLE_TYPES.has(type)) {
51739
51954
  return {
51740
51955
  ok: false,
51741
51956
  errorType: 'unwriteable_type',
51742
- error: "Field '".concat(fieldKey, "' (").concat(field.type, ") cannot be filled by the assistant; the user has to provide this themselves.")
51957
+ error: "Field '".concat(fieldKey, "' (").concat(type, ") cannot be filled by the assistant; the user has to provide this themselves.")
51958
+ };
51959
+ }
51960
+ var repeatContainer = servar.repeated
51961
+ ? getRepeatedContainer(currentStep, found)
51962
+ : undefined;
51963
+ var rowCount = repeatContainer
51964
+ ? ((_h = visiblePositions[(_g = getPositionKey(repeatContainer)) !== null && _g !== void 0 ? _g : 'root']) !== null && _h !== void 0 ? _h : []).length
51965
+ : 0;
51966
+ var repeatFailure = validateRepeatIndex(repeatIndex, !!repeatContainer, rowCount, fieldKey);
51967
+ if (repeatFailure)
51968
+ return __assign({ ok: false }, repeatFailure);
51969
+ // Reject writes to a row hidden by a per-row rule
51970
+ if (typeof repeatIndex === 'number' &&
51971
+ Array.isArray(flags) &&
51972
+ !flags[repeatIndex]) {
51973
+ return {
51974
+ ok: false,
51975
+ errorType: 'hidden',
51976
+ error: "Row ".concat(repeatIndex, " of field '").concat(fieldKey, "' is hidden right now.")
51743
51977
  };
51744
51978
  }
51745
51979
  // Phone numbers commonly arrive as numbers
51746
51980
  var value = rawValue;
51747
- if (field.type === 'phone_number' &&
51981
+ if (type === 'phone_number' &&
51748
51982
  typeof value === 'number' &&
51749
51983
  Number.isFinite(value)) {
51750
51984
  value = String(Math.trunc(value));
51751
51985
  }
51752
51986
  // Type and bound checks
51753
- var shapeError = checkValueAgainstField(field, value);
51987
+ var shapeError = checkValueAgainstField(servar, value, repeatIndex);
51754
51988
  if (shapeError)
51755
51989
  return { ok: false, errorType: 'shape_mismatch', error: shapeError };
51756
- return { ok: true, value: value };
51990
+ return { ok: true, field: found, servar: servar, value: value };
51757
51991
  }
51758
- function checkValueAgainstField(field, value) {
51759
- var _a, _b;
51992
+ function resolveOptions(servar, repeatIndex) {
51993
+ var _a;
51994
+ var meta = (_a = servar.metadata) !== null && _a !== void 0 ? _a : {};
51995
+ var rawRowOptions = Array.isArray(meta.repeat_options)
51996
+ ? meta.repeat_options
51997
+ : null;
51998
+ if (typeof repeatIndex === 'number' &&
51999
+ rawRowOptions &&
52000
+ Array.isArray(rawRowOptions[repeatIndex])) {
52001
+ return rawRowOptions[repeatIndex].map(function (o) {
52002
+ var _a, _b, _c, _d, _e;
52003
+ return ({
52004
+ value: String((_b = (_a = o === null || o === void 0 ? void 0 : o.value) !== null && _a !== void 0 ? _a : o) !== null && _b !== void 0 ? _b : ''),
52005
+ label: String((_e = (_d = (_c = o === null || o === void 0 ? void 0 : o.label) !== null && _c !== void 0 ? _c : o === null || o === void 0 ? void 0 : o.value) !== null && _d !== void 0 ? _d : o) !== null && _e !== void 0 ? _e : '')
52006
+ });
52007
+ });
52008
+ }
52009
+ var rawOptions = Array.isArray(meta.options) ? meta.options : null;
52010
+ if (!rawOptions)
52011
+ return [];
52012
+ var rawLabels = Array.isArray(meta.labels) ? meta.labels : [];
52013
+ return rawOptions.map(function (value, i) {
52014
+ var _a, _b;
52015
+ return ({
52016
+ value: String(value !== null && value !== void 0 ? value : ''),
52017
+ label: String((_b = (_a = rawLabels[i]) !== null && _a !== void 0 ? _a : value) !== null && _b !== void 0 ? _b : '')
52018
+ });
52019
+ });
52020
+ }
52021
+ function checkValueAgainstField(servar, value, repeatIndex) {
52022
+ var _a;
52023
+ var type = servar.type;
52024
+ var key = servar.key;
52025
+ var meta = (_a = servar.metadata) !== null && _a !== void 0 ? _a : {};
52026
+ var minLength = typeof servar.min_length === 'number' ? servar.min_length : undefined;
52027
+ var maxLength = typeof servar.max_length === 'number' ? servar.max_length : undefined;
51760
52028
  // Boolean field
51761
- if (field.type === 'checkbox') {
52029
+ if (type === 'checkbox') {
51762
52030
  return typeof value === 'boolean'
51763
52031
  ? null
51764
- : "Field '".concat(field.key, "' (checkbox) expects a boolean.");
52032
+ : "Field '".concat(key, "' (checkbox) expects a boolean.");
51765
52033
  }
51766
52034
  // Numeric fields with min/max bounds
51767
- if (NUMERIC_TYPES.has(field.type)) {
52035
+ if (NUMERIC_TYPES.has(type)) {
51768
52036
  if (typeof value !== 'number' || !Number.isFinite(value)) {
51769
- return "Field '".concat(field.key, "' (").concat(field.type, ") expects a number.");
52037
+ return "Field '".concat(key, "' (").concat(type, ") expects a number.");
51770
52038
  }
51771
- if (typeof field.minLength === 'number' && value < field.minLength) {
51772
- return "Value below minimum (".concat(field.minLength, ").");
52039
+ if (typeof minLength === 'number' && value < minLength) {
52040
+ return "Value below minimum (".concat(minLength, ").");
51773
52041
  }
51774
- if (typeof field.maxLength === 'number' && value > field.maxLength) {
51775
- return "Value above maximum (".concat(field.maxLength, ").");
52042
+ if (typeof maxLength === 'number' && value > maxLength) {
52043
+ return "Value above maximum (".concat(maxLength, ").");
51776
52044
  }
51777
52045
  return null;
51778
52046
  }
51779
52047
  // ISO date string
51780
- if (field.type === 'date_selector') {
52048
+ if (type === 'date_selector') {
51781
52049
  if (typeof value !== 'string') {
51782
- return "Field '".concat(field.key, "' (date_selector) expects a string.");
52050
+ return "Field '".concat(key, "' (date_selector) expects a string.");
51783
52051
  }
51784
52052
  if (!/^\d{4}-\d{2}-\d{2}$/.test(value)) {
51785
- return "Field '".concat(field.key, "' expects ISO date 'YYYY-MM-DD'.");
52053
+ return "Field '".concat(key, "' expects ISO date 'YYYY-MM-DD'.");
51786
52054
  }
51787
52055
  return null;
51788
52056
  }
51789
52057
  // Single-choice picker
51790
- if (SINGLE_CHOICE_TYPES.has(field.type)) {
52058
+ if (SINGLE_CHOICE_TYPES.has(type)) {
51791
52059
  if (typeof value !== 'string') {
51792
- return "Field '".concat(field.key, "' (").concat(field.type, ") expects a single option value (string).");
52060
+ return "Field '".concat(key, "' (").concat(type, ") expects a single option value (string).");
51793
52061
  }
51794
- var opts = ((_a = field.options) !== null && _a !== void 0 ? _a : []).map(function (o) { return o.value; });
52062
+ var opts = resolveOptions(servar, repeatIndex).map(function (o) { return o.value; });
51795
52063
  if (opts.length > 0 && !opts.includes(value)) {
51796
52064
  return "Value not in allowed options. Allowed: ".concat(opts.join(', '), ".");
51797
52065
  }
51798
52066
  return null;
51799
52067
  }
51800
- if (MULTI_CHOICE_TYPES.has(field.type)) {
52068
+ if (MULTI_CHOICE_TYPES.has(type)) {
51801
52069
  if (!Array.isArray(value) || !value.every(function (v) { return typeof v === 'string'; })) {
51802
- return "Field '".concat(field.key, "' (").concat(field.type, ") expects an array of option-value strings.");
52070
+ return "Field '".concat(key, "' (").concat(type, ") expects an array of option-value strings.");
51803
52071
  }
51804
- if (field.type === 'button_group' && !field.multiple && value.length > 1) {
51805
- return "Field '".concat(field.key, "' (button_group) is single-select; pass at most one option.");
52072
+ if (type === 'button_group' && !meta.multiple && value.length > 1) {
52073
+ return "Field '".concat(key, "' (button_group) is single-select; pass at most one option.");
51806
52074
  }
51807
- var opts_1 = new Set(((_b = field.options) !== null && _b !== void 0 ? _b : []).map(function (o) { return o.value; }));
52075
+ var opts_1 = new Set(resolveOptions(servar, repeatIndex).map(function (o) { return o.value; }));
51808
52076
  if (opts_1.size > 0) {
51809
52077
  var bad = value.filter(function (v) { return !opts_1.has(v); });
51810
52078
  if (bad.length > 0) {
@@ -51814,76 +52082,20 @@ function checkValueAgainstField(field, value) {
51814
52082
  return null;
51815
52083
  }
51816
52084
  // Text fields with optional length bounds
51817
- if (TEXT_TYPES.has(field.type)) {
52085
+ if (TEXT_TYPES.has(type)) {
51818
52086
  if (typeof value !== 'string') {
51819
- return "Field '".concat(field.key, "' (").concat(field.type, ") expects a string.");
52087
+ return "Field '".concat(key, "' (").concat(type, ") expects a string.");
51820
52088
  }
51821
- if (typeof field.minLength === 'number' && value.length < field.minLength) {
51822
- return "Value shorter than minimum length (".concat(field.minLength, ").");
52089
+ if (typeof minLength === 'number' && value.length < minLength) {
52090
+ return "Value shorter than minimum length (".concat(minLength, ").");
51823
52091
  }
51824
- if (typeof field.maxLength === 'number' && value.length > field.maxLength) {
51825
- return "Value exceeds maximum length (".concat(field.maxLength, ").");
52092
+ if (typeof maxLength === 'number' && value.length > maxLength) {
52093
+ return "Value exceeds maximum length (".concat(maxLength, ").");
51826
52094
  }
51827
52095
  return null;
51828
52096
  }
51829
52097
  return null;
51830
52098
  }
51831
- function applyServarValues(formUuid, entries) {
51832
- return __awaiter(this, void 0, void 0, function () {
51833
- var state, payload, entries_1, entries_1_1, _a, fieldKey, value, servar, normalized, e_1_1;
51834
- var e_1, _b;
51835
- return __generator(this, function (_c) {
51836
- switch (_c.label) {
51837
- case 0:
51838
- if (!formUuid || entries.length === 0)
51839
- return [2 /*return*/];
51840
- state = internalState[formUuid];
51841
- if (!state)
51842
- return [2 /*return*/];
51843
- payload = {};
51844
- _c.label = 1;
51845
- case 1:
51846
- _c.trys.push([1, 8, 9, 10]);
51847
- entries_1 = __values(entries), entries_1_1 = entries_1.next();
51848
- _c.label = 2;
51849
- case 2:
51850
- if (!!entries_1_1.done) return [3 /*break*/, 7];
51851
- _a = entries_1_1.value, fieldKey = _a.fieldKey, value = _a.value;
51852
- servar = findServar(state, fieldKey);
51853
- normalized = value;
51854
- if (!((servar === null || servar === void 0 ? void 0 : servar.type) === 'gmap_state')) return [3 /*break*/, 3];
51855
- normalized = normalizeGmapState(value, servar);
51856
- return [3 /*break*/, 5];
51857
- case 3:
51858
- if (!((servar === null || servar === void 0 ? void 0 : servar.type) === 'phone_number')) return [3 /*break*/, 5];
51859
- return [4 /*yield*/, normalizePhone(value, servar, state, fieldKey)];
51860
- case 4:
51861
- normalized = _c.sent();
51862
- _c.label = 5;
51863
- case 5:
51864
- payload[fieldKey] = normalized;
51865
- _c.label = 6;
51866
- case 6:
51867
- entries_1_1 = entries_1.next();
51868
- return [3 /*break*/, 2];
51869
- case 7: return [3 /*break*/, 10];
51870
- case 8:
51871
- e_1_1 = _c.sent();
51872
- e_1 = { error: e_1_1 };
51873
- return [3 /*break*/, 10];
51874
- case 9:
51875
- try {
51876
- if (entries_1_1 && !entries_1_1.done && (_b = entries_1.return)) _b.call(entries_1);
51877
- }
51878
- finally { if (e_1) throw e_1.error; }
51879
- return [7 /*endfinally*/];
51880
- case 10:
51881
- setFieldValues(payload, true, true);
51882
- return [2 /*return*/];
51883
- }
51884
- });
51885
- });
51886
- }
51887
52099
  function normalizeGmapState(value, servar) {
51888
52100
  var _a, _b;
51889
52101
  if (typeof value !== 'string' || !value)
@@ -51953,27 +52165,135 @@ function resolveCountry(state, fieldKey, servar) {
51953
52165
  var dc = (_c = servar.metadata) === null || _c === void 0 ? void 0 : _c.default_country;
51954
52166
  return dc && dc !== 'auto' ? dc : 'US';
51955
52167
  }
51956
- function findServar(state, fieldKey) {
51957
- var e_2, _a;
51958
- var _b, _c, _d;
51959
- var steps = (_b = state.steps) !== null && _b !== void 0 ? _b : {};
51960
- try {
51961
- for (var _e = __values(Object.keys(steps)), _f = _e.next(); !_f.done; _f = _e.next()) {
51962
- var stepKey = _f.value;
51963
- var fields = (_d = (_c = steps[stepKey]) === null || _c === void 0 ? void 0 : _c.servar_fields) !== null && _d !== void 0 ? _d : [];
51964
- var found = fields.find(function (f) { var _a; return ((_a = f === null || f === void 0 ? void 0 : f.servar) === null || _a === void 0 ? void 0 : _a.key) === fieldKey; });
51965
- if (found)
51966
- return found.servar;
51967
- }
51968
- }
51969
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
51970
- finally {
51971
- try {
51972
- if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
51973
- }
51974
- finally { if (e_2) throw e_2.error; }
51975
- }
51976
- return null;
52168
+ function dispatchSetFieldValue(formUuid, fields) {
52169
+ var _a, _b;
52170
+ return __awaiter(this, void 0, void 0, function () {
52171
+ var state, client, requestedKeys, priorValues, prepared, results;
52172
+ var _this = this;
52173
+ return __generator(this, function (_c) {
52174
+ switch (_c.label) {
52175
+ case 0:
52176
+ state = formUuid ? internalState[formUuid] : undefined;
52177
+ client = state === null || state === void 0 ? void 0 : state.assistantClient;
52178
+ if (!state || !client) {
52179
+ return [2 /*return*/, {
52180
+ results: fields.map(function (item) {
52181
+ var fieldKey = typeof (item === null || item === void 0 ? void 0 : item.fieldKey) === 'string' ? item.fieldKey : '';
52182
+ var repeatIndex = Number.isInteger(item === null || item === void 0 ? void 0 : item.repeatIndex)
52183
+ ? item.repeatIndex
52184
+ : undefined;
52185
+ if (!fieldKey) {
52186
+ return {
52187
+ fieldKey: fieldKey,
52188
+ repeatIndex: repeatIndex,
52189
+ ok: false,
52190
+ errorType: 'shape_mismatch',
52191
+ error: 'fieldKey is required.'
52192
+ };
52193
+ }
52194
+ return {
52195
+ fieldKey: fieldKey,
52196
+ repeatIndex: repeatIndex,
52197
+ ok: false,
52198
+ errorType: 'no_form_state',
52199
+ error: 'Form has not loaded yet.'
52200
+ };
52201
+ })
52202
+ }];
52203
+ }
52204
+ requestedKeys = new Set(fields
52205
+ .map(function (f) { return (typeof (f === null || f === void 0 ? void 0 : f.fieldKey) === 'string' ? f.fieldKey : ''); })
52206
+ .filter(Boolean));
52207
+ priorValues = new Map(((_b = (_a = state.currentStep) === null || _a === void 0 ? void 0 : _a.servar_fields) !== null && _b !== void 0 ? _b : [])
52208
+ .filter(function (f) { var _a; return requestedKeys.has((_a = f === null || f === void 0 ? void 0 : f.servar) === null || _a === void 0 ? void 0 : _a.key); })
52209
+ .map(function (f) {
52210
+ var _a, _b;
52211
+ var key = f.servar.key;
52212
+ var v = (_b = (_a = state.fields) === null || _a === void 0 ? void 0 : _a[key]) === null || _b === void 0 ? void 0 : _b.value;
52213
+ return [key, v == null ? null : JSON.parse(JSON.stringify(v))];
52214
+ }));
52215
+ return [4 /*yield*/, Promise.all(fields.map(function (item) { return __awaiter(_this, void 0, void 0, function () {
52216
+ var fieldKey, repeatIndex, validation, field, servar, normalized;
52217
+ return __generator(this, function (_a) {
52218
+ switch (_a.label) {
52219
+ case 0:
52220
+ fieldKey = typeof (item === null || item === void 0 ? void 0 : item.fieldKey) === 'string' ? item.fieldKey : '';
52221
+ repeatIndex = Number.isInteger(item === null || item === void 0 ? void 0 : item.repeatIndex)
52222
+ ? item.repeatIndex
52223
+ : undefined;
52224
+ // Validate shape, value, and field presence on current step
52225
+ if (!fieldKey) {
52226
+ return [2 /*return*/, {
52227
+ fieldKey: fieldKey,
52228
+ repeatIndex: repeatIndex,
52229
+ ok: false,
52230
+ errorType: 'shape_mismatch',
52231
+ error: 'fieldKey is required.'
52232
+ }];
52233
+ }
52234
+ validation = validateSetFieldValue(state, fieldKey, item.value, repeatIndex);
52235
+ if (!validation.ok) {
52236
+ return [2 /*return*/, {
52237
+ fieldKey: fieldKey,
52238
+ repeatIndex: repeatIndex,
52239
+ ok: false,
52240
+ errorType: validation.errorType,
52241
+ error: validation.error
52242
+ }];
52243
+ }
52244
+ field = validation.field, servar = validation.servar;
52245
+ normalized = validation.value;
52246
+ if (!(servar.type === 'gmap_state')) return [3 /*break*/, 1];
52247
+ normalized = normalizeGmapState(normalized, servar);
52248
+ return [3 /*break*/, 3];
52249
+ case 1:
52250
+ if (!(servar.type === 'phone_number')) return [3 /*break*/, 3];
52251
+ return [4 /*yield*/, normalizePhone(normalized, servar, state, fieldKey)];
52252
+ case 2:
52253
+ normalized = _a.sent();
52254
+ _a.label = 3;
52255
+ case 3: return [2 /*return*/, { fieldKey: fieldKey, repeatIndex: repeatIndex, field: field, normalized: normalized }];
52256
+ }
52257
+ });
52258
+ }); }))];
52259
+ case 1:
52260
+ prepared = _c.sent();
52261
+ results = prepared.map(function (p) {
52262
+ var _a, _b;
52263
+ if ('ok' in p)
52264
+ return p;
52265
+ var fieldForChange = typeof p.repeatIndex === 'number'
52266
+ ? __assign(__assign({}, p.field), { repeat: p.repeatIndex }) : p.field;
52267
+ try {
52268
+ client.changeValue(p.normalized, fieldForChange, (_a = p.repeatIndex) !== null && _a !== void 0 ? _a : null);
52269
+ }
52270
+ catch (err) {
52271
+ return {
52272
+ fieldKey: p.fieldKey,
52273
+ repeatIndex: p.repeatIndex,
52274
+ ok: false,
52275
+ errorType: 'dispatch_failed',
52276
+ error: err instanceof Error ? err.message : String(err)
52277
+ };
52278
+ }
52279
+ var prior = priorValues.get(p.fieldKey);
52280
+ var priorValue = p.repeatIndex !== undefined
52281
+ ? Array.isArray(prior)
52282
+ ? (_b = prior[p.repeatIndex]) !== null && _b !== void 0 ? _b : null
52283
+ : null
52284
+ : prior !== null && prior !== void 0 ? prior : null;
52285
+ return {
52286
+ fieldKey: p.fieldKey,
52287
+ repeatIndex: p.repeatIndex,
52288
+ ok: true,
52289
+ value: p.normalized,
52290
+ priorValue: priorValue
52291
+ };
52292
+ });
52293
+ return [2 /*return*/, { results: results }];
52294
+ }
52295
+ });
52296
+ });
51977
52297
  }
51978
52298
 
51979
52299
  var findElement = function (state, elementId) {
@@ -52011,43 +52331,17 @@ var findElement = function (state, elementId) {
52011
52331
  }
52012
52332
  return null;
52013
52333
  };
52014
- var isVisible = function (state, position) {
52015
- var _a;
52016
- var positionKey = position.join(',') || 'root';
52017
- var flags = (_a = state.visiblePositions) === null || _a === void 0 ? void 0 : _a[positionKey];
52018
- return Array.isArray(flags) ? flags.some(Boolean) : true;
52019
- };
52020
- var snapshotInlineErrors = function (state) {
52021
- var e_2, _a;
52022
- var _b, _c;
52023
- var inlineErrors = (_b = state === null || state === void 0 ? void 0 : state.inlineErrors) !== null && _b !== void 0 ? _b : {};
52024
- var out = {};
52025
- try {
52026
- for (var _d = __values(Object.keys(inlineErrors)), _e = _d.next(); !_e.done; _e = _d.next()) {
52027
- var key = _e.value;
52028
- var message = (_c = inlineErrors[key]) === null || _c === void 0 ? void 0 : _c.message;
52029
- if (typeof message === 'string' && message.length > 0) {
52030
- out[key] = message;
52031
- }
52032
- }
52033
- }
52034
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
52035
- finally {
52036
- try {
52037
- if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
52038
- }
52039
- finally { if (e_2) throw e_2.error; }
52040
- }
52041
- return out;
52042
- };
52043
- function dispatchClickElement(formUuid, elementId) {
52044
- var _a, _b, _c;
52334
+ function dispatchClickElement(formUuid, elementId, rawRepeatIndex) {
52335
+ var _a, _b, _c, _d, _e, _f, _g, _h;
52045
52336
  return __awaiter(this, void 0, void 0, function () {
52046
- var state, found, client, fromStepKey, errorsBefore, ancestors, ancestors_1, ancestors_1_1, sg, acts, e_3_1, err_1, toStepKey, errorsAfter, fieldErrors, _d, _e, key, buttonError;
52047
- var e_3, _f, e_4, _g;
52048
- return __generator(this, function (_h) {
52049
- switch (_h.label) {
52337
+ var repeatIndex, state, found, visiblePositions, flags, formReadOnly, repeatContainer, rowCount, repeatFailure, client, fromStepKey, errorsBefore, elementForDispatch, ancestors, ancestors_1, ancestors_1_1, sg, acts, insideRepeat, e_2_1, err_1, toStepKey, errorsAfter, fieldErrors, _j, _k, key, buttonError;
52338
+ var e_2, _l, e_3, _m;
52339
+ return __generator(this, function (_o) {
52340
+ switch (_o.label) {
52050
52341
  case 0:
52342
+ repeatIndex = Number.isInteger(rawRepeatIndex)
52343
+ ? rawRepeatIndex
52344
+ : null;
52051
52345
  if (!formUuid) {
52052
52346
  return [2 /*return*/, {
52053
52347
  ok: false,
@@ -52078,89 +52372,126 @@ function dispatchClickElement(formUuid, elementId) {
52078
52372
  error: "Element '".concat(elementId, "' is not on the current step.")
52079
52373
  }];
52080
52374
  }
52081
- if (!isVisible(state, found.position)) {
52375
+ visiblePositions = (_a = state.visiblePositions) !== null && _a !== void 0 ? _a : {};
52376
+ flags = visiblePositions[(_b = getPositionKey(found.element)) !== null && _b !== void 0 ? _b : 'root'];
52377
+ if (Array.isArray(flags) && !flags.some(Boolean)) {
52082
52378
  return [2 /*return*/, {
52083
52379
  ok: false,
52084
52380
  errorType: 'hidden',
52085
52381
  error: "Element '".concat(elementId, "' is on the current step but is hidden right now.")
52086
52382
  }];
52087
52383
  }
52384
+ if (found.elementType === 'button') {
52385
+ formReadOnly = !!(((_c = state.formSettings) === null || _c === void 0 ? void 0 : _c.readOnly) ||
52386
+ initState.collaboratorReview === 'readOnly');
52387
+ if (isButtonDisabled(found.element, state.currentStep, visiblePositions, formReadOnly)) {
52388
+ return [2 /*return*/, {
52389
+ ok: false,
52390
+ errorType: 'disabled',
52391
+ error: "Button '".concat(elementId, "' is disabled and cannot be clicked.")
52392
+ }];
52393
+ }
52394
+ }
52395
+ repeatContainer = found.element.repeated
52396
+ ? found.element
52397
+ : getRepeatedContainer(state.currentStep, found.element);
52398
+ rowCount = repeatContainer
52399
+ ? ((_e = visiblePositions[(_d = getPositionKey(repeatContainer)) !== null && _d !== void 0 ? _d : 'root']) !== null && _e !== void 0 ? _e : []).length
52400
+ : 0;
52401
+ repeatFailure = validateRepeatIndex(repeatIndex, !!repeatContainer, rowCount, elementId);
52402
+ if (repeatFailure)
52403
+ return [2 /*return*/, __assign({ ok: false }, repeatFailure)];
52404
+ // Reject clicks on a row hidden by a per-row rule
52405
+ if (typeof repeatIndex === 'number' &&
52406
+ Array.isArray(flags) &&
52407
+ !flags[repeatIndex]) {
52408
+ return [2 /*return*/, {
52409
+ ok: false,
52410
+ errorType: 'hidden',
52411
+ error: "Row ".concat(repeatIndex, " of element '").concat(elementId, "' is hidden right now.")
52412
+ }];
52413
+ }
52088
52414
  client = state.assistantClient;
52089
52415
  fromStepKey = state.currentStep.key;
52090
52416
  errorsBefore = snapshotInlineErrors(state);
52091
- _h.label = 1;
52417
+ elementForDispatch = typeof repeatIndex === 'number'
52418
+ ? __assign(__assign({}, found.element), { repeat: repeatIndex }) : found.element;
52419
+ _o.label = 1;
52092
52420
  case 1:
52093
- _h.trys.push([1, 13, , 14]);
52421
+ _o.trys.push([1, 13, , 14]);
52094
52422
  if (!(found.elementType === 'button')) return [3 /*break*/, 3];
52095
- return [4 /*yield*/, client.click(found.element)];
52423
+ return [4 /*yield*/, client.click(elementForDispatch)];
52096
52424
  case 2:
52097
- _h.sent();
52425
+ _o.sent();
52098
52426
  return [3 /*break*/, 12];
52099
52427
  case 3:
52100
52428
  ancestors = findClickableAncestorSubgrids(state.currentStep.subgrids, found.position);
52101
52429
  return [4 /*yield*/, client.runActions({
52102
52430
  actions: found.actions,
52103
- element: found.element,
52431
+ element: elementForDispatch,
52104
52432
  elementType: found.elementType
52105
52433
  })];
52106
52434
  case 4:
52107
- _h.sent();
52108
- _h.label = 5;
52435
+ _o.sent();
52436
+ _o.label = 5;
52109
52437
  case 5:
52110
- _h.trys.push([5, 10, 11, 12]);
52438
+ _o.trys.push([5, 10, 11, 12]);
52111
52439
  ancestors_1 = __values(ancestors), ancestors_1_1 = ancestors_1.next();
52112
- _h.label = 6;
52440
+ _o.label = 6;
52113
52441
  case 6:
52114
52442
  if (!!ancestors_1_1.done) return [3 /*break*/, 9];
52115
52443
  sg = ancestors_1_1.value;
52116
- acts = (_a = sg === null || sg === void 0 ? void 0 : sg.properties) === null || _a === void 0 ? void 0 : _a.actions;
52444
+ acts = (_f = sg === null || sg === void 0 ? void 0 : sg.properties) === null || _f === void 0 ? void 0 : _f.actions;
52445
+ insideRepeat = typeof repeatIndex === 'number' &&
52446
+ !!repeatContainer &&
52447
+ sg.position.length >= repeatContainer.position.length;
52117
52448
  return [4 /*yield*/, client.runActions({
52118
52449
  actions: Array.isArray(acts) ? acts : [],
52119
- element: sg,
52450
+ element: insideRepeat ? __assign(__assign({}, sg), { repeat: repeatIndex }) : sg,
52120
52451
  elementType: 'container'
52121
52452
  })];
52122
52453
  case 7:
52123
- _h.sent();
52124
- _h.label = 8;
52454
+ _o.sent();
52455
+ _o.label = 8;
52125
52456
  case 8:
52126
52457
  ancestors_1_1 = ancestors_1.next();
52127
52458
  return [3 /*break*/, 6];
52128
52459
  case 9: return [3 /*break*/, 12];
52129
52460
  case 10:
52130
- e_3_1 = _h.sent();
52131
- e_3 = { error: e_3_1 };
52461
+ e_2_1 = _o.sent();
52462
+ e_2 = { error: e_2_1 };
52132
52463
  return [3 /*break*/, 12];
52133
52464
  case 11:
52134
52465
  try {
52135
- if (ancestors_1_1 && !ancestors_1_1.done && (_f = ancestors_1.return)) _f.call(ancestors_1);
52466
+ if (ancestors_1_1 && !ancestors_1_1.done && (_l = ancestors_1.return)) _l.call(ancestors_1);
52136
52467
  }
52137
- finally { if (e_3) throw e_3.error; }
52468
+ finally { if (e_2) throw e_2.error; }
52138
52469
  return [7 /*endfinally*/];
52139
52470
  case 12: return [3 /*break*/, 14];
52140
52471
  case 13:
52141
- err_1 = _h.sent();
52472
+ err_1 = _o.sent();
52142
52473
  return [2 /*return*/, {
52143
52474
  ok: false,
52144
52475
  errorType: 'dispatch_failed',
52145
52476
  error: err_1 instanceof Error ? err_1.message : String(err_1)
52146
52477
  }];
52147
52478
  case 14:
52148
- toStepKey = (_c = (_b = state.currentStep) === null || _b === void 0 ? void 0 : _b.key) !== null && _c !== void 0 ? _c : fromStepKey;
52479
+ toStepKey = (_h = (_g = state.currentStep) === null || _g === void 0 ? void 0 : _g.key) !== null && _h !== void 0 ? _h : fromStepKey;
52149
52480
  errorsAfter = snapshotInlineErrors(state);
52150
52481
  fieldErrors = {};
52151
52482
  try {
52152
- for (_d = __values(Object.keys(errorsAfter)), _e = _d.next(); !_e.done; _e = _d.next()) {
52153
- key = _e.value;
52483
+ for (_j = __values(Object.keys(errorsAfter)), _k = _j.next(); !_k.done; _k = _j.next()) {
52484
+ key = _k.value;
52154
52485
  if (errorsAfter[key] !== errorsBefore[key])
52155
52486
  fieldErrors[key] = errorsAfter[key];
52156
52487
  }
52157
52488
  }
52158
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
52489
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
52159
52490
  finally {
52160
52491
  try {
52161
- if (_e && !_e.done && (_g = _d.return)) _g.call(_d);
52492
+ if (_k && !_k.done && (_m = _j.return)) _m.call(_j);
52162
52493
  }
52163
- finally { if (e_4) throw e_4.error; }
52494
+ finally { if (e_3) throw e_3.error; }
52164
52495
  }
52165
52496
  buttonError = found.elementType === 'button' ? fieldErrors[elementId] : undefined;
52166
52497
  delete fieldErrors[elementId];
@@ -52170,6 +52501,328 @@ function dispatchClickElement(formUuid, elementId) {
52170
52501
  });
52171
52502
  }
52172
52503
 
52504
+ function dispatchTriggerTableAction(formUuid, tableId, rowIndex, actionLabel) {
52505
+ var _a, _b, _c;
52506
+ return __awaiter(this, void 0, void 0, function () {
52507
+ var lookup, _d, state, table, rowCount, hasLabel, actions, rowData, fromStepKey, errorsBefore, err_1, toStepKey, errorsAfter, fieldErrors, _e, _f, key;
52508
+ var e_1, _g;
52509
+ return __generator(this, function (_h) {
52510
+ switch (_h.label) {
52511
+ case 0:
52512
+ lookup = findTableOnCurrentStep(formUuid, tableId);
52513
+ if (!lookup.ok)
52514
+ return [2 /*return*/, lookup];
52515
+ _d = lookup.found, state = _d.state, table = _d.table, rowCount = _d.rowCount;
52516
+ hasLabel = typeof actionLabel === 'string' && actionLabel.length > 0;
52517
+ if (actionLabel !== undefined && !hasLabel) {
52518
+ return [2 /*return*/, {
52519
+ ok: false,
52520
+ errorType: 'shape_mismatch',
52521
+ error: 'actionLabel must be a non-empty string when provided.'
52522
+ }];
52523
+ }
52524
+ if (!Number.isInteger(rowIndex) || rowIndex < 0) {
52525
+ return [2 /*return*/, {
52526
+ ok: false,
52527
+ errorType: 'shape_mismatch',
52528
+ error: 'rowIndex must be a non-negative integer.'
52529
+ }];
52530
+ }
52531
+ if (hasLabel) {
52532
+ actions = Array.isArray((_a = table === null || table === void 0 ? void 0 : table.properties) === null || _a === void 0 ? void 0 : _a.actions)
52533
+ ? table.properties.actions
52534
+ : [];
52535
+ if (!actions.some(function (a) { return (a === null || a === void 0 ? void 0 : a.label) === actionLabel; })) {
52536
+ return [2 /*return*/, {
52537
+ ok: false,
52538
+ errorType: 'unknown_action',
52539
+ error: "Table '".concat(tableId, "' has no action labeled '").concat(actionLabel, "'.")
52540
+ }];
52541
+ }
52542
+ }
52543
+ else if (getTableCapabilities(table, rowCount).canEditCells) {
52544
+ // Editable tables suppress the bare row click, so the user can't fire it either
52545
+ return [2 /*return*/, {
52546
+ ok: false,
52547
+ errorType: 'not_allowed',
52548
+ error: "Table '".concat(tableId, "' is editable, so bare row clicks are not wired; use a named action.")
52549
+ }];
52550
+ }
52551
+ if (rowIndex >= rowCount) {
52552
+ return [2 /*return*/, {
52553
+ ok: false,
52554
+ errorType: 'row_out_of_range',
52555
+ error: "Row ".concat(rowIndex, " is out of range (table has ").concat(rowCount, " row").concat(rowCount === 1 ? '' : 's', ").")
52556
+ }];
52557
+ }
52558
+ rowData = buildRowData(lookup.found, rowIndex);
52559
+ fromStepKey = state.currentStep.key;
52560
+ errorsBefore = snapshotInlineErrors(state);
52561
+ _h.label = 1;
52562
+ case 1:
52563
+ _h.trys.push([1, 3, , 4]);
52564
+ return [4 /*yield*/, state.assistantClient.runTableAction({
52565
+ table: table,
52566
+ payload: hasLabel
52567
+ ? { action: actionLabel, rowIndex: rowIndex, rowData: rowData }
52568
+ : { rowIndex: rowIndex, rowData: rowData }
52569
+ })];
52570
+ case 2:
52571
+ _h.sent();
52572
+ return [3 /*break*/, 4];
52573
+ case 3:
52574
+ err_1 = _h.sent();
52575
+ return [2 /*return*/, {
52576
+ ok: false,
52577
+ errorType: 'dispatch_failed',
52578
+ error: err_1 instanceof Error ? err_1.message : String(err_1)
52579
+ }];
52580
+ case 4:
52581
+ toStepKey = (_c = (_b = state.currentStep) === null || _b === void 0 ? void 0 : _b.key) !== null && _c !== void 0 ? _c : fromStepKey;
52582
+ errorsAfter = snapshotInlineErrors(state);
52583
+ fieldErrors = {};
52584
+ try {
52585
+ for (_e = __values(Object.keys(errorsAfter)), _f = _e.next(); !_f.done; _f = _e.next()) {
52586
+ key = _f.value;
52587
+ if (errorsAfter[key] !== errorsBefore[key])
52588
+ fieldErrors[key] = errorsAfter[key];
52589
+ }
52590
+ }
52591
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
52592
+ finally {
52593
+ try {
52594
+ if (_f && !_f.done && (_g = _e.return)) _g.call(_e);
52595
+ }
52596
+ finally { if (e_1) throw e_1.error; }
52597
+ }
52598
+ return [2 /*return*/, __assign({ ok: true, navigated: toStepKey !== fromStepKey ? { fromStepKey: fromStepKey, toStepKey: toStepKey } : null }, (Object.keys(fieldErrors).length > 0 ? { fieldErrors: fieldErrors } : {}))];
52599
+ }
52600
+ });
52601
+ });
52602
+ }
52603
+
52604
+ var validateRowIndex = function (rowIndex, rowCount) {
52605
+ if (!Number.isInteger(rowIndex) || rowIndex < 0) {
52606
+ return {
52607
+ ok: false,
52608
+ errorType: 'shape_mismatch',
52609
+ error: 'rowIndex must be a non-negative integer.'
52610
+ };
52611
+ }
52612
+ if (rowIndex >= rowCount) {
52613
+ return {
52614
+ ok: false,
52615
+ errorType: 'row_out_of_range',
52616
+ error: "Row ".concat(rowIndex, " is out of range (table has ").concat(rowCount, " row").concat(rowCount === 1 ? '' : 's', ").")
52617
+ };
52618
+ }
52619
+ return null;
52620
+ };
52621
+ var CAPABILITY_LABELS = {
52622
+ add: 'adding rows',
52623
+ del: 'deleting rows',
52624
+ edit: 'cell editing'
52625
+ };
52626
+ var requireCapability = function (table, tableId, capability, rowCount) {
52627
+ var caps = getTableCapabilities(table, rowCount);
52628
+ var allowed = (capability === 'add' && caps.canAddRows) ||
52629
+ (capability === 'del' && caps.canDeleteRows) ||
52630
+ (capability === 'edit' && caps.canEditCells);
52631
+ if (allowed)
52632
+ return null;
52633
+ return {
52634
+ ok: false,
52635
+ errorType: 'not_allowed',
52636
+ error: "Table '".concat(tableId, "' does not allow ").concat(CAPABILITY_LABELS[capability], ".")
52637
+ };
52638
+ };
52639
+ function dispatchAddTableRow(formUuid, tableId) {
52640
+ return __awaiter(this, void 0, void 0, function () {
52641
+ var lookup, _a, state, table, rowCount, cap;
52642
+ return __generator(this, function (_b) {
52643
+ lookup = findTableOnCurrentStep(formUuid, tableId);
52644
+ if (!lookup.ok)
52645
+ return [2 /*return*/, lookup];
52646
+ _a = lookup.found, state = _a.state, table = _a.table, rowCount = _a.rowCount;
52647
+ cap = requireCapability(table, tableId, 'add', rowCount);
52648
+ if (cap)
52649
+ return [2 /*return*/, cap];
52650
+ try {
52651
+ if (!state.assistantClient.addTableRow(tableId)) {
52652
+ return [2 /*return*/, {
52653
+ ok: false,
52654
+ errorType: 'not_mounted',
52655
+ error: "Table '".concat(tableId, "' is not mounted yet.")
52656
+ }];
52657
+ }
52658
+ }
52659
+ catch (err) {
52660
+ return [2 /*return*/, {
52661
+ ok: false,
52662
+ errorType: 'dispatch_failed',
52663
+ error: err instanceof Error ? err.message : String(err)
52664
+ }];
52665
+ }
52666
+ return [2 /*return*/, { ok: true }];
52667
+ });
52668
+ });
52669
+ }
52670
+ function dispatchDeleteTableRow(formUuid, tableId, rowIndex) {
52671
+ return __awaiter(this, void 0, void 0, function () {
52672
+ var lookup, _a, state, table, rowCount, cap, rowErr;
52673
+ return __generator(this, function (_b) {
52674
+ lookup = findTableOnCurrentStep(formUuid, tableId);
52675
+ if (!lookup.ok)
52676
+ return [2 /*return*/, lookup];
52677
+ _a = lookup.found, state = _a.state, table = _a.table, rowCount = _a.rowCount;
52678
+ cap = requireCapability(table, tableId, 'del', rowCount);
52679
+ if (cap)
52680
+ return [2 /*return*/, cap];
52681
+ rowErr = validateRowIndex(rowIndex, rowCount);
52682
+ if (rowErr)
52683
+ return [2 /*return*/, rowErr];
52684
+ try {
52685
+ if (!state.assistantClient.deleteTableRow(tableId, rowIndex)) {
52686
+ return [2 /*return*/, {
52687
+ ok: false,
52688
+ errorType: 'not_mounted',
52689
+ error: "Table '".concat(tableId, "' is not mounted yet.")
52690
+ }];
52691
+ }
52692
+ }
52693
+ catch (err) {
52694
+ return [2 /*return*/, {
52695
+ ok: false,
52696
+ errorType: 'dispatch_failed',
52697
+ error: err instanceof Error ? err.message : String(err)
52698
+ }];
52699
+ }
52700
+ return [2 /*return*/, { ok: true }];
52701
+ });
52702
+ });
52703
+ }
52704
+ function dispatchSetTableCellValue(formUuid, tableId, cells) {
52705
+ var _a;
52706
+ return __awaiter(this, void 0, void 0, function () {
52707
+ var safeCells, fanOut, lookup, _b, state, table, columns, rowCount, cap, priorValues, results, _loop_1, safeCells_1, safeCells_1_1, c;
52708
+ var e_1, _c;
52709
+ return __generator(this, function (_d) {
52710
+ safeCells = (Array.isArray(cells) ? cells : []).map(function (c) { return ({
52711
+ rowIndex: typeof (c === null || c === void 0 ? void 0 : c.rowIndex) === 'number' ? c.rowIndex : NaN,
52712
+ fieldKey: typeof (c === null || c === void 0 ? void 0 : c.fieldKey) === 'string' ? c.fieldKey : '',
52713
+ value: c === null || c === void 0 ? void 0 : c.value
52714
+ }); });
52715
+ fanOut = function (errorType, error) { return ({
52716
+ results: safeCells.map(function (c) { return ({
52717
+ rowIndex: c.rowIndex,
52718
+ fieldKey: c.fieldKey,
52719
+ ok: false,
52720
+ errorType: errorType,
52721
+ error: error
52722
+ }); })
52723
+ }); };
52724
+ lookup = findTableOnCurrentStep(formUuid, tableId);
52725
+ if (!lookup.ok)
52726
+ return [2 /*return*/, fanOut(lookup.errorType, lookup.error)];
52727
+ _b = lookup.found, state = _b.state, table = _b.table, columns = _b.columns, rowCount = _b.rowCount;
52728
+ cap = requireCapability(table, tableId, 'edit', rowCount);
52729
+ if (cap)
52730
+ return [2 /*return*/, fanOut(cap.errorType, cap.error)];
52731
+ priorValues = new Map(safeCells
52732
+ .filter(function (c) { return c.fieldKey; })
52733
+ .map(function (c) {
52734
+ var _a, _b;
52735
+ var v = (_b = (_a = state.fields) === null || _a === void 0 ? void 0 : _a[c.fieldKey]) === null || _b === void 0 ? void 0 : _b.value;
52736
+ var prior = Array.isArray(v) ? v[c.rowIndex] : undefined;
52737
+ return [
52738
+ "".concat(c.fieldKey, ":").concat(c.rowIndex),
52739
+ prior == null ? null : JSON.parse(JSON.stringify(prior))
52740
+ ];
52741
+ }));
52742
+ results = [];
52743
+ _loop_1 = function (c) {
52744
+ var rowIndex = c.rowIndex, fieldKey = c.fieldKey, value = c.value;
52745
+ if (!fieldKey) {
52746
+ results.push({
52747
+ rowIndex: rowIndex,
52748
+ fieldKey: fieldKey,
52749
+ ok: false,
52750
+ errorType: 'shape_mismatch',
52751
+ error: 'fieldKey is required.'
52752
+ });
52753
+ return "continue";
52754
+ }
52755
+ if (!columns.some(function (col) { return (col === null || col === void 0 ? void 0 : col.field_key) === fieldKey; })) {
52756
+ results.push({
52757
+ rowIndex: rowIndex,
52758
+ fieldKey: fieldKey,
52759
+ ok: false,
52760
+ errorType: 'unknown_field',
52761
+ error: "Table '".concat(tableId, "' has no column with fieldKey '").concat(fieldKey, "'.")
52762
+ });
52763
+ return "continue";
52764
+ }
52765
+ var rowErr = validateRowIndex(rowIndex, rowCount);
52766
+ if (rowErr) {
52767
+ results.push({
52768
+ rowIndex: rowIndex,
52769
+ fieldKey: fieldKey,
52770
+ ok: false,
52771
+ errorType: rowErr.errorType,
52772
+ error: rowErr.error
52773
+ });
52774
+ return "continue";
52775
+ }
52776
+ // Write what typing would produce: text only, clear as empty string
52777
+ var writeValue = value == null ? '' : String(value);
52778
+ try {
52779
+ if (!state.assistantClient.editTableCell(tableId, rowIndex, fieldKey, writeValue)) {
52780
+ results.push({
52781
+ rowIndex: rowIndex,
52782
+ fieldKey: fieldKey,
52783
+ ok: false,
52784
+ errorType: 'not_mounted',
52785
+ error: "Table '".concat(tableId, "' is not mounted yet.")
52786
+ });
52787
+ return "continue";
52788
+ }
52789
+ }
52790
+ catch (err) {
52791
+ results.push({
52792
+ rowIndex: rowIndex,
52793
+ fieldKey: fieldKey,
52794
+ ok: false,
52795
+ errorType: 'dispatch_failed',
52796
+ error: err instanceof Error ? err.message : String(err)
52797
+ });
52798
+ return "continue";
52799
+ }
52800
+ results.push({
52801
+ rowIndex: rowIndex,
52802
+ fieldKey: fieldKey,
52803
+ ok: true,
52804
+ value: writeValue,
52805
+ priorValue: (_a = priorValues.get("".concat(fieldKey, ":").concat(rowIndex))) !== null && _a !== void 0 ? _a : null
52806
+ });
52807
+ };
52808
+ try {
52809
+ for (safeCells_1 = __values(safeCells), safeCells_1_1 = safeCells_1.next(); !safeCells_1_1.done; safeCells_1_1 = safeCells_1.next()) {
52810
+ c = safeCells_1_1.value;
52811
+ _loop_1(c);
52812
+ }
52813
+ }
52814
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
52815
+ finally {
52816
+ try {
52817
+ if (safeCells_1_1 && !safeCells_1_1.done && (_c = safeCells_1.return)) _c.call(safeCells_1);
52818
+ }
52819
+ finally { if (e_1) throw e_1.error; }
52820
+ }
52821
+ return [2 /*return*/, { results: results }];
52822
+ });
52823
+ });
52824
+ }
52825
+
52173
52826
  var FAB_SIZE = 56;
52174
52827
  var PANEL_WIDTH = 380;
52175
52828
  var PANEL_HEIGHT = 500;
@@ -52463,128 +53116,99 @@ var AssistantChat = function (_a) {
52463
53116
  onToolCall: function (_a) {
52464
53117
  var toolCall = _a.toolCall;
52465
53118
  return __awaiter(void 0, void 0, void 0, function () {
52466
- var input_1, fields, snap, toCloneable_1, priorValues, results, toApply, fields_1, fields_1_1, item, fieldKey, validation, toApply_1, toApply_1_1, _b, fieldKey, value, err_1, message, toApply_2, toApply_2_1, fieldKey, input_2, elementId, output;
52467
- var e_1, _c, e_2, _d, e_3, _e;
52468
- var _f, _g, _h, _j;
52469
- return __generator(this, function (_k) {
52470
- switch (_k.label) {
53119
+ var input_1, fields, output, input_2, elementId, output, input_3, tableId, rowIndex, actionLabel, output, input_4, tableId, output, input_5, tableId, rowIndex, output, input_6, tableId, cells, output;
53120
+ var _b, _c, _d, _e, _f, _g;
53121
+ return __generator(this, function (_h) {
53122
+ switch (_h.label) {
52471
53123
  case 0:
52472
53124
  if (toolCall.dynamic)
52473
53125
  return [2 /*return*/];
52474
- if (!(toolCall.toolName === 'setFieldValue')) return [3 /*break*/, 5];
52475
- input_1 = ((_f = toolCall.input) !== null && _f !== void 0 ? _f : {});
53126
+ if (!(toolCall.toolName === 'setFieldValue')) return [3 /*break*/, 2];
53127
+ input_1 = ((_b = toolCall.input) !== null && _b !== void 0 ? _b : {});
52476
53128
  fields = Array.isArray(input_1.fields) ? input_1.fields : [];
52477
- snap = instanceId ? getPanelRuntimeSnapshot(instanceId) : null;
52478
- toCloneable_1 = function (v) {
52479
- return v == null ? null : JSON.parse(JSON.stringify(v));
52480
- };
52481
- priorValues = new Map(((_g = snap === null || snap === void 0 ? void 0 : snap.currentStepFields) !== null && _g !== void 0 ? _g : []).map(function (f) { return [
52482
- f.key,
52483
- toCloneable_1(f.value)
52484
- ]; }));
52485
- results = [];
52486
- toApply = [];
52487
- try {
52488
- for (fields_1 = __values(fields), fields_1_1 = fields_1.next(); !fields_1_1.done; fields_1_1 = fields_1.next()) {
52489
- item = fields_1_1.value;
52490
- fieldKey = typeof (item === null || item === void 0 ? void 0 : item.fieldKey) === 'string' ? item.fieldKey : '';
52491
- if (!fieldKey) {
52492
- results.push({
52493
- fieldKey: fieldKey,
52494
- ok: false,
52495
- errorType: 'shape_mismatch',
52496
- error: 'fieldKey is required.'
52497
- });
52498
- continue;
52499
- }
52500
- validation = validateSetFieldValue(fieldKey, item.value, snap);
52501
- if (!validation.ok) {
52502
- results.push({
52503
- fieldKey: fieldKey,
52504
- ok: false,
52505
- error: validation.error,
52506
- errorType: validation.errorType
52507
- });
52508
- continue;
52509
- }
52510
- toApply.push({ fieldKey: fieldKey, value: validation.value });
52511
- }
52512
- }
52513
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
52514
- finally {
52515
- try {
52516
- if (fields_1_1 && !fields_1_1.done && (_c = fields_1.return)) _c.call(fields_1);
52517
- }
52518
- finally { if (e_1) throw e_1.error; }
52519
- }
52520
- _k.label = 1;
53129
+ return [4 /*yield*/, dispatchSetFieldValue(instanceId, fields)];
52521
53130
  case 1:
52522
- _k.trys.push([1, 3, , 4]);
52523
- return [4 /*yield*/, applyServarValues(instanceId, toApply)];
53131
+ output = _h.sent();
53132
+ chat.addToolOutput({
53133
+ tool: 'setFieldValue',
53134
+ toolCallId: toolCall.toolCallId,
53135
+ output: output
53136
+ });
53137
+ return [3 /*break*/, 12];
52524
53138
  case 2:
52525
- _k.sent();
52526
- try {
52527
- for (toApply_1 = __values(toApply), toApply_1_1 = toApply_1.next(); !toApply_1_1.done; toApply_1_1 = toApply_1.next()) {
52528
- _b = toApply_1_1.value, fieldKey = _b.fieldKey, value = _b.value;
52529
- results.push({
52530
- fieldKey: fieldKey,
52531
- ok: true,
52532
- value: value,
52533
- priorValue: (_h = priorValues.get(fieldKey)) !== null && _h !== void 0 ? _h : null
52534
- });
52535
- }
52536
- }
52537
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
52538
- finally {
52539
- try {
52540
- if (toApply_1_1 && !toApply_1_1.done && (_d = toApply_1.return)) _d.call(toApply_1);
52541
- }
52542
- finally { if (e_2) throw e_2.error; }
52543
- }
52544
- return [3 /*break*/, 4];
53139
+ if (!(toolCall.toolName === 'clickElement')) return [3 /*break*/, 4];
53140
+ input_2 = ((_c = toolCall.input) !== null && _c !== void 0 ? _c : {});
53141
+ elementId = typeof input_2.elementId === 'string' ? input_2.elementId : '';
53142
+ return [4 /*yield*/, dispatchClickElement(instanceId, elementId, input_2.repeatIndex)];
52545
53143
  case 3:
52546
- err_1 = _k.sent();
52547
- message = err_1 instanceof Error ? err_1.message : String(err_1);
52548
- try {
52549
- for (toApply_2 = __values(toApply), toApply_2_1 = toApply_2.next(); !toApply_2_1.done; toApply_2_1 = toApply_2.next()) {
52550
- fieldKey = toApply_2_1.value.fieldKey;
52551
- results.push({
52552
- fieldKey: fieldKey,
52553
- ok: false,
52554
- errorType: 'apply_failed',
52555
- error: message
52556
- });
52557
- }
52558
- }
52559
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
52560
- finally {
52561
- try {
52562
- if (toApply_2_1 && !toApply_2_1.done && (_e = toApply_2.return)) _e.call(toApply_2);
52563
- }
52564
- finally { if (e_3) throw e_3.error; }
52565
- }
52566
- return [3 /*break*/, 4];
52567
- case 4:
53144
+ output = _h.sent();
52568
53145
  chat.addToolOutput({
52569
- tool: 'setFieldValue',
53146
+ tool: 'clickElement',
52570
53147
  toolCallId: toolCall.toolCallId,
52571
- output: { results: results }
53148
+ output: output
52572
53149
  });
52573
- return [3 /*break*/, 7];
53150
+ return [3 /*break*/, 12];
53151
+ case 4:
53152
+ if (!(toolCall.toolName === 'triggerTableAction')) return [3 /*break*/, 6];
53153
+ input_3 = ((_d = toolCall.input) !== null && _d !== void 0 ? _d : {});
53154
+ tableId = typeof input_3.tableId === 'string' ? input_3.tableId : '';
53155
+ rowIndex = typeof input_3.rowIndex === 'number' ? input_3.rowIndex : NaN;
53156
+ actionLabel = typeof input_3.actionLabel === 'string'
53157
+ ? input_3.actionLabel
53158
+ : undefined;
53159
+ return [4 /*yield*/, dispatchTriggerTableAction(instanceId, tableId, rowIndex, actionLabel)];
52574
53160
  case 5:
52575
- if (!(toolCall.toolName === 'clickElement')) return [3 /*break*/, 7];
52576
- input_2 = ((_j = toolCall.input) !== null && _j !== void 0 ? _j : {});
52577
- elementId = typeof input_2.elementId === 'string' ? input_2.elementId : '';
52578
- return [4 /*yield*/, dispatchClickElement(instanceId, elementId)];
53161
+ output = _h.sent();
53162
+ chat.addToolOutput({
53163
+ tool: 'triggerTableAction',
53164
+ toolCallId: toolCall.toolCallId,
53165
+ output: output
53166
+ });
53167
+ return [3 /*break*/, 12];
52579
53168
  case 6:
52580
- output = _k.sent();
53169
+ if (!(toolCall.toolName === 'addTableRow')) return [3 /*break*/, 8];
53170
+ input_4 = ((_e = toolCall.input) !== null && _e !== void 0 ? _e : {});
53171
+ tableId = typeof input_4.tableId === 'string' ? input_4.tableId : '';
53172
+ return [4 /*yield*/, dispatchAddTableRow(instanceId, tableId)];
53173
+ case 7:
53174
+ output = _h.sent();
52581
53175
  chat.addToolOutput({
52582
- tool: 'clickElement',
53176
+ tool: 'addTableRow',
53177
+ toolCallId: toolCall.toolCallId,
53178
+ output: output
53179
+ });
53180
+ return [3 /*break*/, 12];
53181
+ case 8:
53182
+ if (!(toolCall.toolName === 'deleteTableRow')) return [3 /*break*/, 10];
53183
+ input_5 = ((_f = toolCall.input) !== null && _f !== void 0 ? _f : {});
53184
+ tableId = typeof input_5.tableId === 'string' ? input_5.tableId : '';
53185
+ rowIndex = typeof input_5.rowIndex === 'number' ? input_5.rowIndex : NaN;
53186
+ return [4 /*yield*/, dispatchDeleteTableRow(instanceId, tableId, rowIndex)];
53187
+ case 9:
53188
+ output = _h.sent();
53189
+ chat.addToolOutput({
53190
+ tool: 'deleteTableRow',
53191
+ toolCallId: toolCall.toolCallId,
53192
+ output: output
53193
+ });
53194
+ return [3 /*break*/, 12];
53195
+ case 10:
53196
+ if (!(toolCall.toolName === 'setTableCellValue')) return [3 /*break*/, 12];
53197
+ input_6 = ((_g = toolCall.input) !== null && _g !== void 0 ? _g : {});
53198
+ tableId = typeof input_6.tableId === 'string' ? input_6.tableId : '';
53199
+ cells = Array.isArray(input_6.cells)
53200
+ ? input_6.cells
53201
+ : [];
53202
+ return [4 /*yield*/, dispatchSetTableCellValue(instanceId, tableId, cells)];
53203
+ case 11:
53204
+ output = _h.sent();
53205
+ chat.addToolOutput({
53206
+ tool: 'setTableCellValue',
52583
53207
  toolCallId: toolCall.toolCallId,
52584
53208
  output: output
52585
53209
  });
52586
- _k.label = 7;
52587
- case 7: return [2 /*return*/];
53210
+ _h.label = 12;
53211
+ case 12: return [2 /*return*/];
52588
53212
  }
52589
53213
  });
52590
53214
  });
@@ -52612,7 +53236,7 @@ var AssistantChat = function (_a) {
52612
53236
  chat: activeChat
52613
53237
  }), rawMessages = _t.messages, sendMessage = _t.sendMessage, status = _t.status, error = _t.error;
52614
53238
  var messages = useMemo(function () {
52615
- var e_4, _a;
53239
+ var e_1, _a;
52616
53240
  var _b, _c;
52617
53241
  var combined = [];
52618
53242
  try {
@@ -52629,12 +53253,12 @@ var AssistantChat = function (_a) {
52629
53253
  }
52630
53254
  }
52631
53255
  }
52632
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
53256
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
52633
53257
  finally {
52634
53258
  try {
52635
53259
  if (rawMessages_1_1 && !rawMessages_1_1.done && (_a = rawMessages_1.return)) _a.call(rawMessages_1);
52636
53260
  }
52637
- finally { if (e_4) throw e_4.error; }
53261
+ finally { if (e_1) throw e_1.error; }
52638
53262
  }
52639
53263
  return combined;
52640
53264
  }, [rawMessages]);