@notectl/core 2.3.1 → 2.3.3

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 (197) hide show
  1. package/README.md +1 -1
  2. package/THIRD-PARTY-NOTICES.md +129 -0
  3. package/dist/chunks/{AlignmentPlugin--xAFlRqE.mjs → AlignmentPlugin-C9Rr_R-g.mjs} +2 -2
  4. package/dist/chunks/{AlignmentPlugin--xAFlRqE.mjs.map → AlignmentPlugin-C9Rr_R-g.mjs.map} +1 -1
  5. package/dist/chunks/{AttributedMarkCommands-bagbH8Qt.mjs → AttributedMarkCommands-BCvmqeFZ.mjs} +2 -2
  6. package/dist/chunks/{AttributedMarkCommands-bagbH8Qt.mjs.map → AttributedMarkCommands-BCvmqeFZ.mjs.map} +1 -1
  7. package/dist/chunks/{BidiIsolationPlugin-DBXyXpgm.mjs → BidiIsolationPlugin-Cw2KMk-H.mjs} +2 -2
  8. package/dist/chunks/{BidiIsolationPlugin-DBXyXpgm.mjs.map → BidiIsolationPlugin-Cw2KMk-H.mjs.map} +1 -1
  9. package/dist/chunks/{BlockInsertion-CJusvrDL.mjs → BlockInsertion-CYH2gRkY.mjs} +2 -2
  10. package/dist/chunks/{BlockInsertion-CJusvrDL.mjs.map → BlockInsertion-CYH2gRkY.mjs.map} +1 -1
  11. package/dist/chunks/{BlockquotePlugin-Bz2glHwX.mjs → BlockquotePlugin-0bZSbkyo.mjs} +2 -2
  12. package/dist/chunks/{BlockquotePlugin-Bz2glHwX.mjs.map → BlockquotePlugin-0bZSbkyo.mjs.map} +1 -1
  13. package/dist/chunks/CaretNavigationPlugin-BPZ9b6XR.mjs +2 -0
  14. package/dist/chunks/CaretNavigationPlugin-BPZ9b6XR.mjs.map +1 -0
  15. package/dist/chunks/CodeBlockPlugin-BCJ3faXx.mjs +2 -0
  16. package/dist/chunks/{CodeBlockPlugin-C1hrdbSZ.mjs.map → CodeBlockPlugin-BCJ3faXx.mjs.map} +1 -1
  17. package/dist/chunks/{ColorGrid-C9RQoEWF.mjs → ColorGrid-DQEkJ-0y.mjs} +2 -2
  18. package/dist/chunks/{ColorGrid-C9RQoEWF.mjs.map → ColorGrid-DQEkJ-0y.mjs.map} +1 -1
  19. package/dist/chunks/ColorPickerPopup-CyF26zIU.mjs +2 -0
  20. package/dist/chunks/{ColorPickerPopup-DiA68Pzz.mjs.map → ColorPickerPopup-CyF26zIU.mjs.map} +1 -1
  21. package/dist/chunks/Commands-D5ND50PQ.mjs +2 -0
  22. package/dist/chunks/{Commands-1dFFldi7.mjs.map → Commands-D5ND50PQ.mjs.map} +1 -1
  23. package/dist/chunks/{Decoration-BpoEOANl.mjs → Decoration-BOP1TAUd.mjs} +2 -2
  24. package/dist/chunks/{Decoration-BpoEOANl.mjs.map → Decoration-BOP1TAUd.mjs.map} +1 -1
  25. package/dist/chunks/{FontPlugin-By-TGrQo.mjs → FontPlugin-D041tiLe.mjs} +2 -2
  26. package/dist/chunks/{FontPlugin-By-TGrQo.mjs.map → FontPlugin-D041tiLe.mjs.map} +1 -1
  27. package/dist/chunks/{FontSizePlugin-Dln-tYXV.mjs → FontSizePlugin-8CAvj1RD.mjs} +2 -2
  28. package/dist/chunks/{FontSizePlugin-Dln-tYXV.mjs.map → FontSizePlugin-8CAvj1RD.mjs.map} +1 -1
  29. package/dist/chunks/{FormulaPlugin-By1befrR.mjs → FormulaPlugin-DJ39BtqV.mjs} +2 -2
  30. package/dist/chunks/FormulaPlugin-DJ39BtqV.mjs.map +1 -0
  31. package/dist/chunks/GapCursorNavigation-DCWOmopl.mjs +2 -0
  32. package/dist/chunks/{GapCursorNavigation-BuXngVu-.mjs.map → GapCursorNavigation-DCWOmopl.mjs.map} +1 -1
  33. package/dist/chunks/GapCursorPlugin-2iR6506y.mjs +2 -0
  34. package/dist/chunks/{GapCursorPlugin-DAxVzXRs.mjs.map → GapCursorPlugin-2iR6506y.mjs.map} +1 -1
  35. package/dist/chunks/{HardBreakPlugin-DlbSlrdq.mjs → HardBreakPlugin-vniSvTgq.mjs} +2 -2
  36. package/dist/chunks/{HardBreakPlugin-DlbSlrdq.mjs.map → HardBreakPlugin-vniSvTgq.mjs.map} +1 -1
  37. package/dist/chunks/{HeadingPlugin-uMAjPOk5.mjs → HeadingPlugin-DUKsLuMd.mjs} +2 -2
  38. package/dist/chunks/{HeadingPlugin-uMAjPOk5.mjs.map → HeadingPlugin-DUKsLuMd.mjs.map} +1 -1
  39. package/dist/chunks/{HighlightPlugin-Bj7FPkIQ.mjs → HighlightPlugin-DRTAE1N5.mjs} +2 -2
  40. package/dist/chunks/{HighlightPlugin-Bj7FPkIQ.mjs.map → HighlightPlugin-DRTAE1N5.mjs.map} +1 -1
  41. package/dist/chunks/HorizontalRulePlugin-B9OvwrKB.mjs +2 -0
  42. package/dist/chunks/{HorizontalRulePlugin-DUVmTQpX.mjs.map → HorizontalRulePlugin-B9OvwrKB.mjs.map} +1 -1
  43. package/dist/chunks/{ImagePlugin-FToCOjd5.mjs → ImagePlugin-CwxTRr6d.mjs} +2 -2
  44. package/dist/chunks/{ImagePlugin-FToCOjd5.mjs.map → ImagePlugin-CwxTRr6d.mjs.map} +1 -1
  45. package/dist/chunks/{InlineCodePlugin-pISIoGQE.mjs → InlineCodePlugin-uxgMUX_E.mjs} +2 -2
  46. package/dist/chunks/{InlineCodePlugin-pISIoGQE.mjs.map → InlineCodePlugin-uxgMUX_E.mjs.map} +1 -1
  47. package/dist/chunks/{LinkPlugin-Ct5Z180S.mjs → LinkPlugin-CvWHbSkb.mjs} +2 -2
  48. package/dist/chunks/{LinkPlugin-Ct5Z180S.mjs.map → LinkPlugin-CvWHbSkb.mjs.map} +1 -1
  49. package/dist/chunks/{ListPlugin-DAY5ezNs.mjs → ListPlugin-BchSFWVn.mjs} +2 -2
  50. package/dist/chunks/{ListPlugin-DAY5ezNs.mjs.map → ListPlugin-BchSFWVn.mjs.map} +1 -1
  51. package/dist/chunks/{MarkdownHTMLRegistry-CKEx7LkR.mjs → MarkdownHTMLRegistry-Q7l0d6Ma.mjs} +2 -2
  52. package/dist/chunks/{MarkdownHTMLRegistry-CKEx7LkR.mjs.map → MarkdownHTMLRegistry-Q7l0d6Ma.mjs.map} +1 -1
  53. package/dist/chunks/{MarkdownParser-CWt3M6jR.mjs → MarkdownParser-Dp62mfUq.mjs} +2 -2
  54. package/dist/chunks/{MarkdownParser-CWt3M6jR.mjs.map → MarkdownParser-Dp62mfUq.mjs.map} +1 -1
  55. package/dist/chunks/{MarkdownSerializer-J-i28out.mjs → MarkdownSerializer-DBELFAeo.mjs} +2 -2
  56. package/dist/chunks/{MarkdownSerializer-J-i28out.mjs.map → MarkdownSerializer-DBELFAeo.mjs.map} +1 -1
  57. package/dist/chunks/MathFont-BS8IwYh2.mjs +2 -0
  58. package/dist/chunks/MathFont-BS8IwYh2.mjs.map +1 -0
  59. package/dist/chunks/NodeSelectionCommands-WH5snxr_.mjs +2 -0
  60. package/dist/chunks/{NodeSelectionCommands-1PjwUDTJ.mjs.map → NodeSelectionCommands-WH5snxr_.mjs.map} +1 -1
  61. package/dist/chunks/PluginHelpers-KDuTlmXm.mjs +2 -0
  62. package/dist/chunks/{PluginHelpers-Dx_0hfDe.mjs.map → PluginHelpers-KDuTlmXm.mjs.map} +1 -1
  63. package/dist/chunks/{PopupManager-CT-fMZJn.mjs → PopupManager-Cj86uDEB.mjs} +2 -2
  64. package/dist/chunks/{PopupManager-CT-fMZJn.mjs.map → PopupManager-Cj86uDEB.mjs.map} +1 -1
  65. package/dist/chunks/PrintPlugin-D2javl_d.mjs +2 -0
  66. package/dist/chunks/{PrintPlugin-7zz9mhhU.mjs.map → PrintPlugin-D2javl_d.mjs.map} +1 -1
  67. package/dist/chunks/SimpleMark-gTQaSJcO.mjs +2 -0
  68. package/dist/chunks/{SimpleMark-7CQcA4RK.mjs.map → SimpleMark-gTQaSJcO.mjs.map} +1 -1
  69. package/dist/chunks/SmartPastePlugin-BvJQ-fOz.mjs +2 -0
  70. package/dist/chunks/SmartPastePlugin-BvJQ-fOz.mjs.map +1 -0
  71. package/dist/chunks/StarterFonts-BDQPg-cu.mjs +2 -0
  72. package/dist/chunks/StarterFonts-BDQPg-cu.mjs.map +1 -0
  73. package/dist/chunks/{StrikethroughPlugin-C2oWvGc3.mjs → StrikethroughPlugin-BdrG1TTY.mjs} +2 -2
  74. package/dist/chunks/{StrikethroughPlugin-C2oWvGc3.mjs.map → StrikethroughPlugin-BdrG1TTY.mjs.map} +1 -1
  75. package/dist/chunks/{SuperSubPlugin-D1xaKrSu.mjs → SuperSubPlugin-DTZB0Y3D.mjs} +2 -2
  76. package/dist/chunks/{SuperSubPlugin-D1xaKrSu.mjs.map → SuperSubPlugin-DTZB0Y3D.mjs.map} +1 -1
  77. package/dist/chunks/{TablePlugin-PJe3zwr-.mjs → TablePlugin-CPvg9YZS.mjs} +2 -2
  78. package/dist/chunks/{TablePlugin-PJe3zwr-.mjs.map → TablePlugin-CPvg9YZS.mjs.map} +1 -1
  79. package/dist/chunks/{TextColorPlugin-CTd9tfeG.mjs → TextColorPlugin-Ckg3KWvb.mjs} +2 -2
  80. package/dist/chunks/{TextColorPlugin-CTd9tfeG.mjs.map → TextColorPlugin-Ckg3KWvb.mjs.map} +1 -1
  81. package/dist/chunks/{TextDirectionAutoPlugin-CPnKVVuI.mjs → TextDirectionAutoPlugin-DRGbgTlx.mjs} +2 -2
  82. package/dist/chunks/{TextDirectionAutoPlugin-CPnKVVuI.mjs.map → TextDirectionAutoPlugin-DRGbgTlx.mjs.map} +1 -1
  83. package/dist/chunks/TextDirectionPlugin-BCeYyJHo.mjs +2 -0
  84. package/dist/chunks/{TextDirectionPlugin-Bns_03vL.mjs.map → TextDirectionPlugin-BCeYyJHo.mjs.map} +1 -1
  85. package/dist/chunks/TextDirectionService-OFOU6r_s.mjs +2 -0
  86. package/dist/chunks/{TextDirectionService-BcX07mw2.mjs.map → TextDirectionService-OFOU6r_s.mjs.map} +1 -1
  87. package/dist/chunks/TextFormattingPlugin-BhRxSC8q.mjs +2 -0
  88. package/dist/chunks/{TextFormattingPlugin-DBVlePqj.mjs.map → TextFormattingPlugin-BhRxSC8q.mjs.map} +1 -1
  89. package/dist/chunks/ThemeEngine-BUVo_zaT.mjs +3 -0
  90. package/dist/chunks/ThemeEngine-BUVo_zaT.mjs.map +1 -0
  91. package/dist/chunks/ToolbarPlugin-dmTj1jIz.mjs +2 -0
  92. package/dist/chunks/{ToolbarPlugin-DtfGTO_V.mjs.map → ToolbarPlugin-dmTj1jIz.mjs.map} +1 -1
  93. package/dist/chunks/{VideoPlugin-BrR8g6Rz.mjs → VideoPlugin-BugkI7-m.mjs} +2 -2
  94. package/dist/chunks/{VideoPlugin-BrR8g6Rz.mjs.map → VideoPlugin-BugkI7-m.mjs.map} +1 -1
  95. package/dist/chunks/XmlSupport-DIXH5on9.mjs +2 -0
  96. package/dist/chunks/XmlSupport-DIXH5on9.mjs.map +1 -0
  97. package/dist/chunks/full-JM0-SwWy.mjs +2 -0
  98. package/dist/chunks/{full-DSWM4cKQ.mjs.map → full-JM0-SwWy.mjs.map} +1 -1
  99. package/dist/chunks/minimal-DSlR2A27.mjs +2 -0
  100. package/dist/chunks/{minimal-CFkkPXef.mjs.map → minimal-DSlR2A27.mjs.map} +1 -1
  101. package/dist/chunks/register-BjsdJ3Aq.mjs +2 -0
  102. package/dist/chunks/register-BjsdJ3Aq.mjs.map +1 -0
  103. package/dist/chunks/src-5GKFQ2mQ.mjs +2 -0
  104. package/dist/chunks/src-5GKFQ2mQ.mjs.map +1 -0
  105. package/dist/chunks/xml-BsV44TrJ.mjs +2 -0
  106. package/dist/chunks/xml-BsV44TrJ.mjs.map +1 -0
  107. package/dist/editor/NotectlEditor.d.ts.map +1 -1
  108. package/dist/fonts/math.d.ts +3 -0
  109. package/dist/fonts/math.d.ts.map +1 -0
  110. package/dist/fonts/math.mjs +1 -0
  111. package/dist/fonts/starter.d.ts +3 -0
  112. package/dist/fonts/starter.d.ts.map +1 -0
  113. package/dist/fonts/starter.mjs +1 -0
  114. package/dist/fonts.d.ts +4 -4
  115. package/dist/fonts.mjs +1 -1
  116. package/dist/full.d.ts +1 -1
  117. package/dist/full.mjs +1 -1
  118. package/dist/index.d.ts +2 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/markdown.mjs +1 -1
  121. package/dist/notectl-core.mjs +1 -1
  122. package/dist/notectl-core.umd.js +1 -1
  123. package/dist/notectl-core.umd.js.map +1 -1
  124. package/dist/plugins/alignment.mjs +1 -1
  125. package/dist/plugins/bidi-isolation.mjs +1 -1
  126. package/dist/plugins/blockquote.mjs +1 -1
  127. package/dist/plugins/caret-navigation.mjs +1 -1
  128. package/dist/plugins/code-block/CodeBlockHighlighting.d.ts.map +1 -1
  129. package/dist/plugins/code-block.mjs +1 -1
  130. package/dist/plugins/font-size.mjs +1 -1
  131. package/dist/plugins/font.mjs +1 -1
  132. package/dist/plugins/formula/FormulaTypes.d.ts +1 -1
  133. package/dist/plugins/formula.mjs +1 -1
  134. package/dist/plugins/gap-cursor.mjs +1 -1
  135. package/dist/plugins/hard-break.mjs +1 -1
  136. package/dist/plugins/heading.mjs +1 -1
  137. package/dist/plugins/highlight.mjs +1 -1
  138. package/dist/plugins/horizontal-rule.mjs +1 -1
  139. package/dist/plugins/image.mjs +1 -1
  140. package/dist/plugins/inline-code.mjs +1 -1
  141. package/dist/plugins/language.mjs +1 -1
  142. package/dist/plugins/link.mjs +1 -1
  143. package/dist/plugins/list.mjs +1 -1
  144. package/dist/plugins/print.mjs +1 -1
  145. package/dist/plugins/shared.mjs +1 -1
  146. package/dist/plugins/smart-paste/SmartPastePlugin.d.ts.map +1 -1
  147. package/dist/plugins/smart-paste.mjs +1 -1
  148. package/dist/plugins/strikethrough.mjs +1 -1
  149. package/dist/plugins/super-sub.mjs +1 -1
  150. package/dist/plugins/table.mjs +1 -1
  151. package/dist/plugins/text-color.mjs +1 -1
  152. package/dist/plugins/text-direction-auto.mjs +1 -1
  153. package/dist/plugins/text-direction.mjs +1 -1
  154. package/dist/plugins/text-formatting.mjs +1 -1
  155. package/dist/plugins/toolbar.mjs +1 -1
  156. package/dist/plugins/video.mjs +1 -1
  157. package/dist/presets/full.d.ts +1 -1
  158. package/dist/presets/full.mjs +1 -1
  159. package/dist/presets/minimal.d.ts +1 -1
  160. package/dist/presets/minimal.mjs +1 -1
  161. package/dist/presets.d.ts +1 -1
  162. package/dist/presets.mjs +1 -1
  163. package/dist/register.d.ts +3 -0
  164. package/dist/register.d.ts.map +1 -0
  165. package/dist/register.mjs +1 -0
  166. package/package.json +24 -223
  167. package/dist/chunks/CaretNavigationPlugin-CNsT0eb4.mjs +0 -2
  168. package/dist/chunks/CaretNavigationPlugin-CNsT0eb4.mjs.map +0 -1
  169. package/dist/chunks/CodeBlockPlugin-C1hrdbSZ.mjs +0 -2
  170. package/dist/chunks/ColorPickerPopup-DiA68Pzz.mjs +0 -2
  171. package/dist/chunks/Commands-1dFFldi7.mjs +0 -2
  172. package/dist/chunks/FormulaPlugin-By1befrR.mjs.map +0 -1
  173. package/dist/chunks/GapCursorNavigation-BuXngVu-.mjs +0 -2
  174. package/dist/chunks/GapCursorPlugin-DAxVzXRs.mjs +0 -2
  175. package/dist/chunks/HorizontalRulePlugin-DUVmTQpX.mjs +0 -2
  176. package/dist/chunks/NodeSelectionCommands-1PjwUDTJ.mjs +0 -2
  177. package/dist/chunks/PluginHelpers-Dx_0hfDe.mjs +0 -2
  178. package/dist/chunks/PrintPlugin-7zz9mhhU.mjs +0 -2
  179. package/dist/chunks/PrintTypes-CxU69qu3.mjs +0 -3
  180. package/dist/chunks/PrintTypes-CxU69qu3.mjs.map +0 -1
  181. package/dist/chunks/SimpleMark-7CQcA4RK.mjs +0 -2
  182. package/dist/chunks/SmartPastePlugin-CYa_nD9v.mjs +0 -2
  183. package/dist/chunks/SmartPastePlugin-CYa_nD9v.mjs.map +0 -1
  184. package/dist/chunks/TextDirectionPlugin-Bns_03vL.mjs +0 -2
  185. package/dist/chunks/TextDirectionService-BcX07mw2.mjs +0 -2
  186. package/dist/chunks/TextFormattingPlugin-DBVlePqj.mjs +0 -2
  187. package/dist/chunks/ToolbarPlugin-DtfGTO_V.mjs +0 -2
  188. package/dist/chunks/XmlDetector-D7TQpw-e.mjs +0 -2
  189. package/dist/chunks/XmlDetector-D7TQpw-e.mjs.map +0 -1
  190. package/dist/chunks/XmlSupport-BYiRwlkK.mjs +0 -2
  191. package/dist/chunks/XmlSupport-BYiRwlkK.mjs.map +0 -1
  192. package/dist/chunks/fonts-DQC6Uj4r.mjs +0 -2
  193. package/dist/chunks/fonts-DQC6Uj4r.mjs.map +0 -1
  194. package/dist/chunks/full-DSWM4cKQ.mjs +0 -2
  195. package/dist/chunks/minimal-CFkkPXef.mjs +0 -2
  196. package/dist/chunks/src-DiAOfuOT.mjs +0 -2
  197. package/dist/chunks/src-DiAOfuOT.mjs.map +0 -1
@@ -1,2 +1,2 @@
1
- import{r as t}from"./HTMLUtils-Bhg3_P8B.mjs";import{E as e,_ as n,c as o,f as r,h as i,o as l,p as s,r as a,u as c}from"./Document-827l3P80.mjs";import{c as d,l as u,o as h,r as b,t as m,u as p}from"./Selection-HYoVFpAx.mjs";import{a as f}from"./TypeBrands-Ch9856Gb.mjs";import{i as g,t as w}from"./Decoration-BpoEOANl.mjs";import{_ as x,s as v}from"./BlockInsertion-CJusvrDL.mjs";import{i as C}from"./Platform-ByobkiCc.mjs";import{t as y}from"./EditorEventBoundary-zpYRxryo.mjs";import{a as S,d as R,h as z,l as I,n as k,r as A,u as E}from"./TableDimensions-BBhjHNjQ.mjs";import{c as P,o as M,s as L}from"./StyleRuntime-DW6omotc.mjs";import{n as B}from"./TypedKeys-CA4bfw9O.mjs";import{c as H,i as N,o as $}from"./PluginHelpers-Dx_0hfDe.mjs";import{t as T}from"./KeyboardNav-D0my3wuy.mjs";import{i as D,n as W}from"./PopupPositioning-BFh6Ed1D.mjs";import{i as O}from"./ColorValidation-DAijTjG9.mjs";import{n as _,t as j}from"./ColorGrid-C9RQoEWF.mjs";function F(t,e){if(0===t.rowCount||0===t.columnCount)return null;let n={fromRow:X(Math.min(e.fromRow,e.toRow),t.rowCount),fromColumn:X(Math.min(e.fromColumn,e.toColumn),t.columnCount),toRow:X(Math.max(e.fromRow,e.toRow),t.rowCount),toColumn:X(Math.max(e.fromColumn,e.toColumn),t.columnCount)};for(;;){let e=n.fromRow,o=n.fromColumn,r=n.toRow,i=n.toColumn;for(const l of t.cellsInRange(n))e=Math.min(e,l.rowStart),o=Math.min(o,l.columnStart),r=Math.max(r,l.rowEnd-1),i=Math.max(i,l.columnEnd-1);if(e===n.fromRow&&o===n.fromColumn&&r===n.toRow&&i===n.toColumn)return n;n={fromRow:e,fromColumn:o,toRow:r,toColumn:i}}}function q(t,e=1e3){return"number"==typeof t&&Number.isFinite(t)&&Number.isInteger(t)?t<=1?1:Math.min(t,e):1}function V(t){const e="table"===t.type?s(t).filter(t=>"table_row"===t.type):[],n=Array.from({length:e.length},()=>[]),o=[],r=/* @__PURE__ */new Map;let i=0;for(let l=0;l<e.length;l++){const t=e[l];if(!t)continue;const a=s(t).filter(t=>"table_cell"===t.type);let c=0;for(let s=0;s<a.length;s++){const d=a[s];if(!d)continue;const u=q(d.attrs?.colspan),h=q(d.attrs?.rowspan),b=Math.min(h,e.length-l),m=Y(n[l]??[],c,u);if(void 0===m)continue;c=m;const p=Math.min(u,1e3-c),f={cell:d,sourceRow:t,sourceRowIndex:l,sourceCellIndex:s,rowStart:l,rowEnd:l+b,columnStart:c,columnEnd:c+p,rowSpan:b,columnSpan:p};o.push(f),r.set(d.id,f);for(let t=f.rowStart;t<f.rowEnd;t++){const e=n[t];if(e)for(let t=f.columnStart;t<f.columnEnd;t++)e[t]??=f}c=f.columnEnd,i=Math.max(i,f.columnEnd)}}return{table:t,rows:e,rowCount:e.length,columnCount:i,cells:o,cellAt(t,e){if(!(!Number.isInteger(t)||!Number.isInteger(e)||t<0||e<0))return n[t]?.[e]},cellById:t=>r.get(t),cellsInRange(t){const n=Math.max(0,Math.min(t.fromRow,t.toRow)),r=Math.min(e.length-1,Math.max(t.fromRow,t.toRow)),l=Math.max(0,Math.min(t.fromColumn,t.toColumn)),s=Math.min(i-1,Math.max(t.fromColumn,t.toColumn));return r<n||s<l?[]:o.filter(t=>t.rowStart<=r&&t.rowEnd>n&&t.columnStart<=s&&t.columnEnd>l)}}}function K(t,e){const n=/* @__PURE__ */new Set,o=/* @__PURE__ */new Set;for(const b of s(e)){o.add(b.id);for(const t of s(b))n.add(t.id)}const r=V(t),i=r.cells.filter(t=>n.has(t.cell.id));if(0===i.length)return Z(e);const l=Math.min(...i.map(t=>t.columnStart)),a=Math.max(...i.map(t=>t.columnEnd))-1,c=r.rows.map((t,e)=>o.has(t.id)?e:-1).filter(t=>t>=0);if(0===c.length)return Z(e);const d=function(t,e,n,o,r,i){let l=!1;const a=s(t).map(t=>{let a=!1;const c=s(t).map(t=>{const l=e.cellById(t.id);if(!l)return t;const s=Math.min(l.rowEnd,o+1)-Math.max(l.rowStart,n),c=Math.min(l.columnEnd,i+1)-Math.max(l.columnStart,r),d=q(t.attrs?.rowspan),u=q(t.attrs?.colspan);if(s===d&&c===u)return t;a=!0;const{colspan:h,rowspan:b,...m}=t.attrs??{},p={...m,...c>1?{colspan:c}:{},...s>1?{rowspan:s}:{}},{attrs:f,...g}=t;return Object.keys(p).length>0?{...g,attrs:p}:g});return a?(l=!0,{...t,children:c}):t});return l?{...t,children:a}:t}(e,r,Math.min(...c),Math.max(...c),l,a);for(const s of c){const t=/* @__PURE__ */new Set;for(const e of i)if(!(e.rowStart>s||e.rowEnd<=s))for(let n=e.columnStart;n<e.columnEnd;n++)t.add(n);for(let e=l;e<=a;e++)if(!t.has(e))return Z(d)}const u=t.attrs?.columnWidthsPx;if(!Array.isArray(u))return d;const h=[];for(let s=l;s<=a;s++){const t=u[s];h.push("number"==typeof t&&Number.isFinite(t)?t:null)}return h.some(t=>null!==t)?{...d,attrs:{...d.attrs??{},columnWidthsPx:Object.freeze(h)}}:Z(d)}function Z(t){if(!t.attrs||!Object.hasOwn(t.attrs,"columnWidthsPx"))return t;const{columnWidthsPx:e,...n}=t.attrs,{attrs:o,...r}=t;return{...r,...Object.keys(n).length>0?{attrs:n}:{}}}function Y(t,e,n){let o=Math.max(0,e);for(;o+n<=1e3;){let e=!0;for(let r=0;r<n;r++)if(t[o+r]){e=!1,o+=r+1;break}if(e)return o}}function X(t,e){return Number.isFinite(t)?Math.min(e-1,Math.max(0,Math.trunc(t))):0}function U(){const t=l(f("paragraph"),[c("")],r());return l(f("table_cell"),[t],r())}function G(t,e){const n=t.getNodePath(e);if(!n)return null;let o=null,r=null,i=null;for(const c of n){const e=t.getBlock(c);e&&("table"===e.type?(o=c,r=e):"table_cell"===e.type&&(i=c))}if("table_cell"===t.getBlock(e)?.type&&(i=e),!o||!r||!i)return null;const l=t.doc.children.findIndex(t=>t.id===o),s=V(r),a=s.cellById(i);return a?{tableId:o,tableIndex:l,rowId:a.sourceRow.id,rowIndex:a.rowStart,rowEnd:a.rowEnd,cellId:i,colIndex:a.columnStart,colEnd:a.columnEnd,rowspan:a.rowSpan,colspan:a.columnSpan,totalRows:s.rowCount,totalCols:s.columnCount}:null}function J(t,e,n,o){const r=t.getBlock(e);return r&&"table"===r.type?V(r).cellAt(n,o)?.cell.id??null:null}function Q(t,e){const n=t.getBlock(e);if(!n)return e;const o=s(n)[0];if(!o)return e;let r=o;for(;;){const t=s(r)[0];if(!t)return r.id;r=t}}function tt(t,e){const n=t.getBlock(e);if(!n)return e;const o=s(n),r=o[o.length-1];if(!r)return e;let i=r;for(;;){const t=s(i),e=t[t.length-1];if(!e)return i.id;i=e}}function et(t,e){const n=t.getNodePath(e);if(!n)return!1;for(const o of n)if("table"===t.getBlock(o)?.type)return!0;return!1}var nt={insertRowAbove:"Insert Row Above",insertRowBelow:"Insert Row Below",insertColumnLeft:"Insert Column Left",insertColumnRight:"Insert Column Right",deleteRow:"Delete Row",deleteColumn:"Delete Column",borderColorLabel:"Border Color...",deleteTable:"Delete Table",tableActions:"Table actions",menuKeyboardHint:"↑↓ Navigate · Enter Select · Esc Close",insertRow:"Insert row",insertColumn:"Insert column",addRow:"Add row",addColumn:"Add column",tableActionsHint:"Table actions (Right-click or Shift+F10)",contextMenuHint:"Right-click or Shift+F10 for table actions",borderColor:"Border color",sizeLabel:"Size...",sizeDialogLabel:"Table size",columnWidthLabel:"Column width (px)",rowMinimumHeightLabel:"Row minimum height (px)",automatic:"Automatic",mixed:"Mixed",apply:"Apply",cancel:"Cancel",resetColumnWidth:"Reset column width",resetRowMinimumHeight:"Reset row minimum height",resetAllSizes:"Reset all sizes",invalidDimensionRange:(t,e)=>`Enter a value from ${t} to ${e} px.`,selectRowLabel:t=>`Select row ${t+1}`,selectColumnLabel:t=>`Select column ${t+1}`,resizeColumnSeparatorLabel:t=>`Resize column ${t+1}`,resizeRowSeparatorLabel:t=>`Resize row ${t+1}`,resizeKeyboardHint:(t,e)=>`Arrow keys resize by ${t} px; hold Shift for ${e} px.`,announceColumnWidthSet:(t,e)=>`Column ${t+1} width set to ${e} px.`,announceRowMinimumHeightSet:(t,e)=>`Row ${t+1} minimum height set to ${e} px.`,announceColumnWidthReset:t=>`Column ${t+1} width reset to automatic.`,announceRowMinimumHeightReset:t=>`Row ${t+1} minimum height reset to automatic.`,announceTableSizesReset:"Table column widths and row minimum heights reset to automatic.",defaultColor:"Default",noBorders:"No borders",borderColorPicker:"Border color picker",announceBorderColorSet:t=>`Table border color set to ${t}`,announceBorderReset:"Table borders reset to default",borderSwatchLabel:t=>`Border ${t}`,announceRowInsertedAbove:"Row inserted above",announceRowInsertedBelow:"Row inserted below",announceColumnInserted:t=>`Column inserted ${t}`,announceRowDeleted:"Row deleted",announceColumnDeleted:"Column deleted",announceTableDeleted:"Table deleted",insertTable:"Insert Table",tableAriaLabel:(t,e)=>`Table with ${t} rows and ${e} columns`,tableAriaDescription:"Right-click or press Shift+F10 for table actions"},ot=/* #__PURE__ */Object.assign({"./locales/ar.ts":()=>import("./ar-Dg9PdDet.mjs"),"./locales/de.ts":()=>import("./de-DJ5EkXQo.mjs"),"./locales/es.ts":()=>import("./es-CEAJj7aB.mjs"),"./locales/fr.ts":()=>import("./fr-DhWQzZy3.mjs"),"./locales/hi.ts":()=>import("./hi-BsZzSMfL.mjs"),"./locales/pt.ts":()=>import("./pt-BuZ7acHF.mjs"),"./locales/ru.ts":()=>import("./ru-CsP6mLxp.mjs"),"./locales/zh.ts":()=>import("./zh-CiIyOm6U.mjs")});async function rt(t){return H(ot,t,nt)}var it=["#000000","#434343","#666666","#999999","#b7b7b7","#cccccc","#d9d9d9","#efefef","#980000","#cc0000","#e69138","#f1c232","#6aa84f","#45818e","#3c78d8","#3d85c6","#674ea7","#a64d79","#0b5394","#38761d"];function lt(t,e,n){const o=t.getBlock(e);if(!o||"table"!==o.type)return null;const r=t.getNodePath(e);if(!r)return null;if(void 0===n){const{borderColor:e,...n}=o.attrs??{},i=n;return t.transaction("command").setNodeAttr(r,i).setSelection(t.selection).build()}const i={...o.attrs,borderColor:n};return t.transaction("command").setNodeAttr(r,i).setSelection(t.selection).build()}function st(t,e,n=nt){const o=t.getState();if(!p(o.selection))return!1;const r=G(o,o.selection.anchor.blockId);if(!r)return!1;const i=lt(o,r.tableId,e);if(!i)return!1;t.dispatch(i);const l="none"===e?"none":_(e);return t.announce(n.announceBorderColorSet(l)),!0}function at(t,e=nt){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=lt(n,o.tableId,void 0);return!!r&&(t.dispatch(r),t.announce(e.announceBorderReset),!0)}function ct(t,e){const n=t.getBlock(e);if(n)return n.attrs?.borderColor}function dt(t,e,n,o,r=nt){t.classList.add("notectl-color-picker");const i=ct(e.getState(),n),l=document.createElement("button");l.type="button",l.className="notectl-color-picker__default",l.textContent=r.defaultColor,l.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation(),at(e,r),o()}),l.addEventListener("keydown",t=>{"Escape"===t.key&&(t.preventDefault(),o())}),t.appendChild(l);const s=document.createElement("button");s.type="button",s.className="notectl-color-picker__default",s.textContent=r.noBorders,s.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation(),st(e,"none",r),o()}),s.addEventListener("keydown",t=>{"Escape"===t.key&&(t.preventDefault(),o())}),t.appendChild(s),j(t,{colors:it,columns:5,ariaLabel:r.borderColorPicker,ariaLabelPrefix:"",activeColor:i??null,swatchLabel:r.borderSwatchLabel,titleAsName:!0,onSelect:t=>{st(e,t,r),o()},onClose:o})}function ut(t,e,n){const o=t.clipboardData,r=n.getSelectedRange();if(!o||!r)return!1;const i=e.getState().getBlock(r.tableId);if(!i||"table"!==i.type)return!1;const l=function(t,e){const n=V(t);if(0===n.rowCount||0===n.columnCount)return null;const o=F(n,e);if(!o)return null;const{fromRow:r,fromColumn:i,toRow:l,toColumn:s}=o,a=n.cellsInRange({fromRow:r,fromColumn:i,toRow:l,toColumn:s}),c=[],d=0===i&&s===n.columnCount-1;for(let y=r;y<=l;y++){const t=n.rows[y];if(!t)continue;const e=a.filter(t=>Math.max(t.rowStart,r)===y).sort((t,e)=>Math.max(t.columnStart,i)-Math.max(e.columnStart,i)).map(t=>{const e=Math.min(t.rowEnd,l+1)-Math.max(t.rowStart,r),n=Math.min(t.columnEnd,s+1)-Math.max(t.columnStart,i),{colspan:o,rowspan:a,...c}=t.cell.attrs??{},d={...c,...n>1?{colspan:n}:{},...e>1?{rowspan:e}:{}},{attrs:u,...h}=t.cell;return Object.keys(d).length>0?{...h,attrs:d}:h}),{htmlId:o,...u}=t;c.push({...d?t:u,children:e})}const{columnWidthsPx:u,...h}=t.attrs??{},b=t.attrs?.columnWidthsPx,m=[];if(Array.isArray(b))for(let y=i;y<=s;y++){const t=b[y];m.push("number"==typeof t&&Number.isFinite(t)?t:null)}const p={...h,...m.some(t=>null!==t)?{columnWidthsPx:Object.freeze(m)}:{}},f=d&&0===r&&l===n.rowCount-1,{attrs:g,...w}=t,{htmlId:x,...v}=w,C=f?w:v;return Object.keys(p).length>0?{...C,children:c,attrs:p}:{...C,children:c}}(i,{fromRow:r.fromRow,fromColumn:r.fromCol,toRow:r.toRow,toColumn:r.toCol});return!!l&&(t.preventDefault(),t.stopImmediatePropagation(),o.setData("text/html",z({children:[l]},e.getSchemaRegistry())),o.setData("text/plain",function(t){const e=V(t);return Array.from({length:e.rowCount},(t,n)=>Array.from({length:e.columnCount},(t,o)=>{const r=e.cellAt(n,o);return r&&r.rowStart===n&&r.columnStart===o?ht(r.cell):""}).join("\t")).join("\n")}(l)),!0)}function ht(t){return e(t)?n(t):s(t).map(ht).join("\n")}var bt=new B("tableSelection");function mt(t){return JSON.stringify({rows:t.rows.map(t=>t.id),cells:t.cells.map(t=>[t.cell.id,t.rowStart,t.rowEnd,t.columnStart,t.columnEnd])})}function pt(t,e){return{tableId:t.tableId,fromRow:Math.min(t.rowStart,e.rowIndex),fromCol:Math.min(t.colStart,e.colIndex),toRow:Math.max(t.rowEnd,e.rowEnd)-1,toCol:Math.max(t.colEnd,e.colEnd)-1}}var ft=Object.freeze({minColumnWidthPx:60,minRowHeightPx:24,maxColumnWidthPx:E,maxRowHeightPx:E,keyboardResizeStepPx:8,keyboardResizeLargeStepPx:32}),gt=new B("tableSizing");function wt(t){const e=Bt(t.minColumnWidthPx,ft.minColumnWidthPx),n=Bt(t.minRowHeightPx,ft.minRowHeightPx);return{minColumnWidthPx:e,minRowHeightPx:n,maxColumnWidthPx:Bt(t.maxColumnWidthPx,ft.maxColumnWidthPx,e),maxRowHeightPx:Bt(t.maxRowHeightPx,ft.maxRowHeightPx,n),keyboardResizeStepPx:Bt(t.keyboardResizeStepPx,ft.keyboardResizeStepPx),keyboardResizeLargeStepPx:Bt(t.keyboardResizeLargeStepPx,ft.keyboardResizeLargeStepPx)}}function xt(t,e){const n=Math.max(0,Math.trunc(e)),o=t.attrs?.columnWidthsPx,r=Array.isArray(o)?o:[];return Object.freeze(Array.from({length:n},(t,e)=>{const n=r[e];return null==n?null:Lt(n)}))}function vt(t,e){const n=Object.freeze(e.map(t=>null===t?null:Lt(t))),{columnWidthsPx:o,...r}=t??{};return n.some(t=>null!==t)?{...r,columnWidthsPx:n}:r}function Ct(t){return Lt(t.attrs?.minHeightPx)}function yt(t,e){const{minHeightPx:n,...o}=t??{};if(null===e)return o;const r=Lt(e);return null===r?o:{...o,minHeightPx:r}}function St(t){const e=t.getState(),n=t.getService(bt)?.getSelectedRange()??null;if(n)return zt(e,n.tableId,n,!0);if(!p(e.selection))return null;const o=G(e,e.selection.anchor.blockId);return o?zt(e,o.tableId,{tableId:o.tableId,fromRow:o.rowIndex,fromCol:o.colIndex,toRow:o.rowEnd-1,toCol:o.colEnd-1},!0):null}function Rt(t,e){const n=t.getBlock(e.tableId);if(!n||"table"!==n.type)return null;const o=V(n);switch(e.kind){case"cell":{if(!Ht(e.row,o.rowCount))return null;if(!Ht(e.column,o.columnCount))return null;const r=o.cellAt(e.row,e.column);return r?It(t,n,o,r.rowStart,r.rowEnd-1,r.columnStart,r.columnEnd-1):null}case"range":return zt(t,e.tableId,{tableId:e.tableId,fromRow:e.fromRow,fromCol:e.fromColumn,toRow:e.toRow,toCol:e.toColumn},!0);case"column":return Ht(e.column,o.columnCount)?{state:t,table:n,grid:o,columns:[e.column],rows:[]}:null;case"row":return Ht(e.row,o.rowCount)?{state:t,table:n,grid:o,columns:[],rows:[e.row]}:null}}function zt(t,e,n,o){const r=t.getBlock(e);if(!r||"table"!==r.type)return null;const i=V(r);if(0===i.rowCount||0===i.columnCount)return null;if(![n.fromRow,n.toRow,n.fromCol,n.toCol].every(Number.isInteger))return null;if(o&&(!Ht(n.fromRow,i.rowCount)||!Ht(n.toRow,i.rowCount)||!Ht(n.fromCol,i.columnCount)||!Ht(n.toCol,i.columnCount)))return null;const l=Nt(Math.min(n.fromRow,n.toRow),i.rowCount),s=Nt(Math.max(n.fromRow,n.toRow),i.rowCount),a=F(i,{fromRow:l,fromColumn:Nt(Math.min(n.fromCol,n.toCol),i.columnCount),toRow:s,toColumn:Nt(Math.max(n.fromCol,n.toCol),i.columnCount)});return a?It(t,r,i,a.fromRow,a.toRow,a.fromColumn,a.toColumn):null}function It(t,e,n,o,r,i,l){return{state:t,table:e,grid:n,rows:$t(o,r),columns:$t(i,l)}}function kt(t){const e=xt(t.table,t.grid.columnCount),n=t.columns.map(t=>e[t]??null),o=t.rows.map(e=>{const n=t.grid.rows[e];return n?Ct(n):null});return{columnWidthPx:Mt(n),rowMinHeightPx:Mt(o)}}function At(t,e,n,o){const r=Object.prototype.hasOwnProperty.call(n,"columnWidthPx"),i=Object.prototype.hasOwnProperty.call(n,"rowMinHeightPx");if(!r&&!i)return!1;if(r&&0===e.columns.length)return!1;if(i&&0===e.rows.length)return!1;const l=r?Pt(n.columnWidthPx,o.minColumnWidthPx,o.maxColumnWidthPx):null,s=i?Pt(n.rowMinHeightPx,o.minRowHeightPx,o.maxRowHeightPx):null;if(r&&!l||i&&!s)return!1;const a=e.state.transaction("command");let c=!1;if(l){const t=[...xt(e.table,e.grid.columnCount)];for(const n of e.columns)t[n]!==l.value&&(t[n]=l.value,c=!0);if(c){const n=e.state.getNodePath(e.table.id);if(!n)return!1;a.setNodeAttr(n,vt(e.table.attrs,t))}}if(s)for(const d of e.rows){const t=e.grid.rows[d];if(!t||Ct(t)===s.value)continue;const n=e.state.getNodePath(t.id);if(!n)return!1;a.setNodeAttr(n,yt(t.attrs,s.value)),c=!0}return!!c&&(a.setSelection(e.state.selection),t.dispatch(a.build()),!0)}function Et(t,e,n,o){return At(t,e,"columnWidthPx"===n?{columnWidthPx:"auto"}:"rowMinHeightPx"===n?{rowMinHeightPx:"auto"}:{...e.columns.length>0?{columnWidthPx:"auto"}:{},...e.rows.length>0?{rowMinHeightPx:"auto"}:{}},o)}function Pt(t,e,n){if("auto"===t)return{value:null};const o=R(t,e,n);return null===o?null:{value:o}}function Mt(t){if(0===t.length)return"unavailable";const e=t[0];return t.some(t=>t!==e)?"mixed":null==e?"auto":e}function Lt(t){return"number"!=typeof t||t<1||t>1e4?null:R(t)}function Bt(t,e,n=1){return R(t??e,n,1e4)??e}function Ht(t,e){return Number.isInteger(t)&&t>=0&&t<e}function Nt(t,e){return Math.min(e-1,Math.max(0,t))}function $t(t,e){return Array.from({length:e-t+1},(e,n)=>t+n)}function Tt(t,e,n){const o=t.getBlock(e);if(!o||"table"!==o.type)return null;const r=V(o);if(!Vt(n,r.rowCount)||0===r.columnCount)return null;const i=r.cells.filter(t=>t.rowStart<n&&t.rowEnd>n),a=t.transaction("command");for(const l of i)if(!Zt(t,a,l.cell,"rowspan",l.rowSpan+1))return null;const c=[];for(let l=0;l<r.columnCount;l++)i.some(t=>t.columnStart<=l&&t.columnEnd>l)||c.push(U());const d=l(f("table_row"),c),u=function(t,e,n){if(n>=e.rowCount)return t.children.length;const o=e.rows[n];if(!o)return t.children.length;const r=t.children.findIndex(t=>"id"in t&&t.id===o.id);return-1===r?t.children.length:r}(o,r,n);a.insertNode([e],u,d);const h=s(d)[0],b=h?s(h)[0]:void 0;return b?a.setSelection(m(b.id,0)):h&&a.setSelection(m(h.id,0)),a.build()}function Dt(t,e,n){const o=t.getBlock(e);if(!o||"table"!==o.type)return null;const r=V(o);if(!Vt(n,r.columnCount)||0===r.rowCount)return null;const i=t.transaction("command");if(Yt(o)){const l=[...xt(o,r.columnCount)];l.splice(n,0,null);const s=t.getNodePath(e);if(!s)return null;i.setNodeAttr(s,vt(o.attrs,l))}const l=r.cells.filter(t=>t.columnStart<n&&t.columnEnd>n);for(const s of l)if(!Zt(t,i,s.cell,"colspan",s.columnSpan+1))return null;let a;for(let s=0;s<r.rowCount;s++){const t=r.rows[s];if(!t)continue;if(l.some(t=>t.rowStart<=s&&t.rowEnd>s))continue;const o=U();a??=o;const c=r.cells.filter(e=>e.sourceRow.id===t.id&&e.columnEnd<=n).length;i.insertNode([e,t.id],c,o)}const c=a?s(a)[0]:void 0;return i.setSelection(c?m(c.id,0):t.selection),i.build()}function Wt(t,e,n,o=0){const r=t.getBlock(e);if(!r||"table"!==r.type)return null;const i=V(r);if(!Kt(n,i.rowCount))return null;if(i.rowCount<=1)return _t(t,e);const l=t.transaction("command"),s=i.cells.filter(t=>t.rowStart<=n&&t.rowEnd>n),a=s.filter(t=>t.rowStart===n&&t.rowSpan>1).sort((t,e)=>t.columnStart-e.columnStart);for(const u of s)if(!(u.rowSpan<=1||Zt(t,l,u.cell,"rowspan",u.rowSpan-1)))return null;if(a.length>0){const t=i.rows[n+1];if(!t)return null;const o=i.cells.filter(e=>e.sourceRow.id===t.id);let r=0;for(const n of a){const i=o.filter(t=>t.columnStart<n.columnStart).length+r;l.moveNode([e,n.sourceRow.id],n.sourceCellIndex-r,[e,t.id],i),r++}}const c=function(t,e,n){const o=e.rows[n];return o?t.children.findIndex(t=>"id"in t&&t.id===o.id):-1}(r,i,n);if(c<0)return null;l.removeNode([e],c);const d=J(t,e,n>0?n-1:1,Math.min(Math.max(0,o),i.columnCount-1));if(d){const e=Q(t,d);l.setSelection(m(e,0))}return l.build()}function Ot(t,e,n,o=0){const r=t.getBlock(e);if(!r||"table"!==r.type)return null;const i=V(r);if(!Kt(n,i.columnCount))return null;if(i.columnCount<=1)return _t(t,e);const l=t.transaction("command");if(Yt(r)){const o=[...xt(r,i.columnCount)];o.splice(n,1);const s=t.getNodePath(e);if(!s)return null;l.setNodeAttr(s,vt(r.attrs,o))}const s=i.cells.filter(t=>t.columnStart<=n&&t.columnEnd>n);for(const d of s)if(!(d.columnSpan<=1||Zt(t,l,d.cell,"colspan",d.columnSpan-1)))return null;for(const d of s.filter(t=>1===t.columnSpan).sort((t,e)=>t.sourceRowIndex!==e.sourceRowIndex?e.sourceRowIndex-t.sourceRowIndex:e.sourceCellIndex-t.sourceCellIndex))l.removeNode([e,d.sourceRow.id],d.sourceCellIndex);const a=n>0?n-1:1,c=J(t,e,Math.min(Math.max(0,o),i.rowCount-1),a);if(c){const e=Q(t,c);l.setSelection(m(e,0))}return l.build()}function _t(t,e){const n=t.doc.children.findIndex(t=>t.id===e);if(-1===n)return null;if(1===t.doc.children.length){const e=o(r());return t.transaction("command").insertNode([],0,e).removeNode([],1).setSelection(m(e.id,0)).build()}const i=t.transaction("command").removeNode([],n),l=t.doc.children[n+1];if(l){const e=x(t,l.id,"start");if(e)return i.setSelection(e),i.build()}const s=t.doc.children[n-1];if(s){const e=x(t,s.id,"end");if(e)return i.setSelection(e),i.build()}return null}function jt(t,e,n){const o=t.getState(),i=N(o);if(!i)return!1;const a=function(t,e){const n=r(),o=[];for(let i=0;i<t;i++){const t=[];for(let n=0;n<e;n++)t.push(U());o.push(l(f("table_row"),t,r()))}return l(f("table"),o,n)}(e,n),c=o.transaction("command");if(!v(o,c,i,a))return!1;const d=s(a)[0],u=d?s(d)[0]:void 0,h=u?s(u)[0]:void 0;return h?c.setSelection(m(h.id,0)):u&&c.setSelection(m(u.id,0)),t.dispatch(c.build()),!0}function Ft(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=Tt(n,o.tableId,o.rowEnd);return!!r&&(t.dispatch(r),t.announce(e.announceRowInsertedBelow),!0)}function qt(t,e,n){const o=t.getState();if(!p(o.selection))return!1;const r=G(o,o.selection.anchor.blockId);if(!r)return!1;const i="left"===e?r.colIndex:r.colEnd,l=Dt(o,r.tableId,i);return!!l&&(t.dispatch(l),t.announce(n.announceColumnInserted(e)),!0)}function Vt(t,e){return Number.isInteger(t)&&t>=0&&t<=e}function Kt(t,e){return Number.isInteger(t)&&t>=0&&t<e}function Zt(t,e,n,o,r){const i=t.getNodePath(n.id);return!!i&&(e.setNodeAttr(i,function(t,e,n){const o={...t.attrs??{}};return delete o[e],n>1&&(o[e]=n),{...t,attrs:o}}(n,o,r).attrs??{}),!0)}function Yt(t){return Object.prototype.hasOwnProperty.call(t.attrs??{},"columnWidthsPx")}function Xt(t,e){t.registerCommand("insertTable",()=>jt(t,3,3)),t.registerCommand("addRowAbove",()=>function(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=Tt(n,o.tableId,o.rowIndex);return!!r&&(t.dispatch(r),t.announce(e.announceRowInsertedAbove),!0)}(t,e)),t.registerCommand("addRowBelow",()=>Ft(t,e)),t.registerCommand("addColumnLeft",()=>function(t,e){return qt(t,"left",e)}(t,e)),t.registerCommand("addColumnRight",()=>function(t,e){return qt(t,"right",e)}(t,e)),t.registerCommand("deleteRow",()=>function(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=Wt(n,o.tableId,o.rowIndex,o.colIndex);return!!r&&(t.dispatch(r),t.announce(e.announceRowDeleted),!0)}(t,e)),t.registerCommand("deleteColumn",()=>function(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=Ot(n,o.tableId,o.colIndex,o.rowIndex);return!!r&&(t.dispatch(r),t.announce(e.announceColumnDeleted),!0)}(t,e)),t.registerCommand("selectTable",()=>function(t){const e=t.getState(),n=e.selection;if(u(n))return"table"===e.getBlock(n.nodeId)?.type;if(d(n))return!1;const o=G(e,n.anchor.blockId);if(!o)return!1;const r=e.getNodePath(o.tableId);if(!r)return!1;const i=e.transaction("command").setSelection(b(o.tableId,r)).build();return t.dispatch(i),!0}(t)),t.registerCommand("deleteTable",()=>function(t,e){const n=t.getState(),o=function(t){if(u(t.selection)){const e=t.getBlock(t.selection.nodeId);return"table"!==e?.type?null:{tableId:e.id}}if(d(t.selection))return null;const e=G(t,t.selection.anchor.blockId);return e?{tableId:e.tableId}:null}(n);if(!o)return!1;const r=_t(n,o.tableId);return!!r&&(t.dispatch(r),t.announce(e.announceTableDeleted),!0)}(t,e))}function Ut(t,e,n,o,r,i,l){const s=document.createElement("div");s.className="notectl-table-size-editor__field";const a=document.createElement("label");a.htmlFor=`notectl-table-size-${e}`,a.textContent=n;const c=document.createElement("div");c.className="notectl-table-size-editor__input-wrap";const d=document.createElement("input");d.id=a.htmlFor,d.type="number",d.inputMode="decimal",d.step="1",d.min=String(r),d.max=String(i),d.setAttribute("aria-describedby",`${d.id}-error`);const u=document.createElement("span");u.className="notectl-table-size-editor__unit",u.textContent="px",u.setAttribute("aria-hidden","true"),c.append(d,u);const h=document.createElement("div");h.id=`${d.id}-error`,h.className="notectl-table-size-editor__error",h.setAttribute("role","alert"),s.append(a,c,h),t.appendChild(s);const b={input:d,error:h,minimum:r,maximum:i,dirty:!1};return Gt(b,o,l),b}function Gt(t,e,n){t.input.disabled="unavailable"===e,t.input.value="number"==typeof e?String(e):"",t.input.placeholder="mixed"===e?n.mixed:n.automatic,t.dirty=!1,Qt(t)}function Jt(t,e){const n=t.input.value.trim(),o=Number(n);if(0===n.length||!Number.isFinite(o))return t.error.textContent=e.invalidDimensionRange(t.minimum,t.maximum),t.input.setAttribute("aria-invalid","true"),t.input.focus(),null;const r=Math.min(t.maximum,Math.max(t.minimum,o));return t.input.value=String(r),r}function Qt(t){t.error.textContent="",t.input.removeAttribute("aria-invalid")}function te(t,e=""){const n=document.createElement("button");return n.type="button",n.textContent=t,n.className=e,n}function ee(t,e,n){return e?t.resetSize(e,n):t.resetSelectionSize(n)}function ne(t,e,n,o){"columnWidthPx"!==n?"row"===e?.kind||"cell"===e?.kind?t.announce(o.announceRowMinimumHeightReset(e.row)):t.announce(o.resetRowMinimumHeight):"column"===e?.kind||"cell"===e?.kind?t.announce(o.announceColumnWidthReset(e.column)):t.announce(o.resetColumnWidth)}var oe=/* @__PURE__ */new WeakMap;function re(t){for(const e of[...oe.get(t)??[]])e()}function ie(t,e,n,o,r,i=nt,l,s={}){let a=!0,c=null,d=null;const u=document.createElement("div");u.className="notectl-table-context-menu",u.setAttribute("role","menu"),u.setAttribute("aria-label",i.tableActions),u.setAttribute("contenteditable","false"),u.setAttribute("data-notectl-no-print","");const h=[];let b=0;const m=function(t){return[{type:"item",label:t.insertRowAbove,command:"addRowAbove"},{type:"item",label:t.insertRowBelow,command:"addRowBelow"},{type:"separator"},{type:"item",label:t.insertColumnLeft,command:"addColumnLeft"},{type:"item",label:t.insertColumnRight,command:"addColumnRight"},{type:"separator"},{type:"item",label:t.deleteRow,command:"deleteRow"},{type:"item",label:t.deleteColumn,command:"deleteColumn"},{type:"separator"},{type:"submenu",label:t.borderColorLabel,id:"borderColor"},{type:"submenu",label:t.sizeLabel,id:"size"},{type:"separator"},{type:"item",label:t.deleteTable,command:"deleteTable"}]}(i);for(const C of m){if("separator"===C.type){const t=document.createElement("div");t.setAttribute("role","separator"),u.appendChild(t);continue}const t=document.createElement("button");t.type="button",t.setAttribute("role","menuitem"),t.textContent=C.label,"submenu"===C.type&&(t.dataset.submenu=C.id,t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false")),"item"===C.type&&(t.dataset.command=C.command),t.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),t.addEventListener("click",n=>{n.stopPropagation(),"item"===C.type?(e.executeCommand(C.command),R()):"submenu"===C.type&&f(t)}),h.push(t),u.appendChild(t)}const p=document.createElement("div");function f(e){if(w(),e.setAttribute("aria-expanded","true"),l)d=l.open({anchor:e,position:"right",referenceNode:u,parent:{close:()=>R(),getElement:()=>u},onClose:()=>{d=null,c=null,x()},content:(t,n)=>{t.className="notectl-table-context-menu",t.setAttribute("contenteditable","false"),t.setAttribute("data-notectl-no-print",""),c=t,t.addEventListener("keydown",t=>{if(t.stopPropagation(),t.target instanceof HTMLInputElement)return;const o="rtl"===getComputedStyle(u).direction?"ArrowRight":"ArrowLeft";t.key===o&&(t.preventDefault(),n(),e.focus())}),g(t,e)}});else{c=document.createElement("div"),c.className="notectl-table-context-menu",c.setAttribute("contenteditable","false"),c.setAttribute("data-notectl-no-print",""),c.addEventListener("keydown",t=>{if(t.stopPropagation(),t.target instanceof HTMLInputElement)return;const n="rtl"===getComputedStyle(u).direction?"ArrowRight":"ArrowLeft";t.key===n&&(t.preventDefault(),w(),e.focus())}),g(c,e),t.appendChild(c);const n=u.getBoundingClientRect(),o="rtl"===getComputedStyle(u).direction;D(c,n,{position:"right",isRtl:o}),"size"!==e.dataset.submenu&&requestAnimationFrame(()=>{(c?.querySelector("button"))?.focus()})}}function g(t,o){"size"!==o.dataset.submenu?dt(t,e,n,R,i):function(t,e,n,o=nt){const r=e.getService?.(gt),i=wt(n.config??{}),l=r?function(t,e){return e?t.getSize(e):t.getSelectionSize()}(r,n.target):null;t.classList.add("notectl-table-size-editor"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-label",o.sizeDialogLabel);const s=document.createElement("div");s.className="notectl-table-size-editor__title",s.textContent=o.sizeDialogLabel,t.appendChild(s);const a=Ut(t,"column-width",o.columnWidthLabel,l?.columnWidthPx??"unavailable",i.minColumnWidthPx,i.maxColumnWidthPx,o),c=Ut(t,"row-min-height",o.rowMinimumHeightLabel,l?.rowMinHeightPx??"unavailable",i.minRowHeightPx,i.maxRowHeightPx,o),d=document.createElement("div");d.className="notectl-table-size-editor__resets";const u=te(o.resetColumnWidth,"notectl-table-size-editor__reset"),h=te(o.resetRowMinimumHeight,"notectl-table-size-editor__reset"),b=te(o.resetAllSizes,"notectl-table-size-editor__reset notectl-table-size-editor__reset--all");u.disabled=a.input.disabled,h.disabled=c.input.disabled,b.disabled=a.input.disabled&&c.input.disabled,d.append(u,h,b),t.appendChild(d);const m=document.createElement("div");m.className="notectl-table-size-editor__actions";const p=te(o.cancel),f=te(o.apply,"notectl-table-size-editor__apply");f.disabled=!r||!!e.isReadOnly?.(),m.append(p,f),t.appendChild(m),a.input.addEventListener("input",()=>{a.dirty=!0,Qt(a)}),c.input.addEventListener("input",()=>{c.dirty=!0,Qt(c)}),f.addEventListener("click",()=>{if(!r||e.isReadOnly?.())return;const t={};let i=!0;if(a.dirty){const e=Jt(a,o);null===e?i=!1:t.columnWidthPx=e}if(c.dirty){const e=Jt(c,o);null===e?i=!1:t.rowMinHeightPx=e}i&&(a.dirty||c.dirty?function(t,e,n){return e?t.setSize(e,n):t.setSelectionSize(n)}(r,n.target,t)&&(function(t,e,n,o){const r=[];"number"==typeof n.columnWidthPx&&("column"===e?.kind||"cell"===e?.kind?r.push(o.announceColumnWidthSet(e.column,n.columnWidthPx)):r.push(`${o.columnWidthLabel}: ${String(n.columnWidthPx)}`)),"number"==typeof n.rowMinHeightPx&&("row"===e?.kind||"cell"===e?.kind?r.push(o.announceRowMinimumHeightSet(e.row,n.rowMinHeightPx)):r.push(`${o.rowMinimumHeightLabel}: ${String(n.rowMinHeightPx)}`)),r.length>0&&t.announce(r.join(" "))}(e,n.target,t,o),n.onClose()):n.onClose())}),p.addEventListener("click",n.onClose),u.addEventListener("click",()=>{r&&ee(r,n.target,"columnWidthPx")&&(Gt(a,"auto",o),ne(e,n.target,"columnWidthPx",o))}),h.addEventListener("click",()=>{r&&ee(r,n.target,"rowMinHeightPx")&&(Gt(c,"auto",o),ne(e,n.target,"rowMinHeightPx",o))}),b.addEventListener("click",()=>{r&&ee(r,n.target)&&(a.input.disabled||Gt(a,"auto",o),c.input.disabled||Gt(c,"auto",o),e.announce(o.announceTableSizesReset))}),t.addEventListener("keydown",e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),void n.onClose();"Tab"===e.key&&function(t,e){const n=function(t){return Array.from(t.querySelectorAll("input, button")).filter(t=>!t.disabled)}(t),o=n[0],r=n[n.length-1];if(!o||!r)return;const i=function(t){const e=t.getRootNode();return e instanceof ShadowRoot||e instanceof Document?e.activeElement:document.activeElement}(t),l=e.shiftKey&&(i===o||!t.contains(i)),s=!(e.shiftKey||i!==r&&t.contains(i));(l||s)&&(e.preventDefault(),(l?r:o).focus())}(t,e)}),requestAnimationFrame(()=>{([a.input,c.input].find(t=>!t.disabled)??p).focus()})}(t,e,{target:s.sizeTarget,config:s.sizingConfig,onClose:R},i)}function w(){d?(d.close(),d=null,c=null):c&&(c.remove(),c=null),x()}function x(){for(const t of h)t.dataset.submenu&&t.setAttribute("aria-expanded","false")}p.className="notectl-table-context-menu__hint",p.setAttribute("aria-hidden","true"),p.textContent=i.menuKeyboardHint,u.appendChild(p),T(h,b),u.addEventListener("keydown",t=>{switch(t.stopPropagation(),t.key){case"Escape":return t.preventDefault(),void R();case"ArrowDown":return t.preventDefault(),b=(b+1)%h.length,T(h,b),void h[b]?.focus();case"ArrowUp":return t.preventDefault(),b=(b-1+h.length)%h.length,T(h,b),void h[b]?.focus();case"ArrowRight":case"ArrowLeft":{t.preventDefault();const e="rtl"===getComputedStyle(u).direction?"ArrowLeft":"ArrowRight";if(t.key===e){const t=h[b];t?.dataset.submenu&&f(t)}else w(),h[b]?.focus();return}case"Enter":case" ":{t.preventDefault();const n=h[b];if(!n)return;return void(n.dataset.submenu?f(n):n.dataset.command&&(e.executeCommand(n.dataset.command),R()))}case"Home":return t.preventDefault(),b=0,T(h,b),void h[b]?.focus();case"End":return t.preventDefault(),b=h.length-1,T(h,b),void h[b]?.focus()}}),t.appendChild(u),D(u,o,{position:"below-start",isRtl:C(t)}),h[0]?.focus(),requestAnimationFrame(()=>{a&&h[0]&&h[0].focus()});const v=t=>{const e=t.composedPath();e.includes(u)||c&&e.includes(c)||R()};let y=null,S=!1;function R(){if(!a)return;a=!1,w(),u.remove(),null!==y&&(clearTimeout(y),y=null),S&&(document.removeEventListener("mousedown",v,!0),S=!1),oe.get(e)?.delete(R),r?.();const t=s.restoreFocusTo;t?.isConnected&&requestAnimationFrame(()=>t.focus({preventScroll:!0}))}y=setTimeout(()=>{y=null,document.addEventListener("mousedown",v,!0),S=!0},0);const z=oe.get(e)??/* @__PURE__ */new Set;return z.add(R),oe.set(e,z),{isOpen:()=>a,close:R,destroy:R}}var le=/* @__PURE__ */new WeakMap;function se(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=n.selection,r=G(n,o.anchor.blockId);return!!r&&e(n,o,r)}function ae(t){return se(t,(e,n,o)=>{const r=o.tableIndex+1;if(r>=e.doc.children.length)return!1;const i=e.doc.children[r];if(!i)return!1;const l=e.transaction("command").setSelection(m(i.id,0)).build();return t.dispatch(l),!0})}function ce(t,e){if((t.getService?.(bt)?.getSelectedRange())?.tableId!==e.tableId)return{kind:"cell",tableId:e.tableId,row:e.rowIndex,column:e.colIndex}}function de(t,e,n,o){const r=t.getState().getBlock(e.tableId);if(!r||"table"!==r.type)return!1;const l=V(r).cells,s=l[l.findIndex(t=>t.cell.id===e.cellId)+n];return!!s&&(o?function(t,e,n,o){const r=t.getState(),l=J(r,e,n,o);if(!l)return!1;const s=tt(r,l),a=r.getBlock(s);if(!a)return!1;const c=i(a),d=r.transaction("command").setSelection(m(s,c)).build();return t.dispatch(d),!0}(t,e.tableId,s.rowStart,s.columnStart):ue(t,e.tableId,s.rowStart,s.columnStart))}function ue(t,e,n,o){const r=t.getState(),i=J(r,e,n,o);if(!i)return!1;const l=Q(r,i),s=r.transaction("command").setSelection(m(l,0)).build();return t.dispatch(s),!0}function he(t,e){const n=t.getState(),o=n.getNodePath(e);if(!o)return!1;const r=n.transaction("input").setSelection(b(e,o)).build();return t.dispatch(r),!0}var be='<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M6 1v10M1 6h10" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg>';function me(t,e,n){const o=document.createElement("button");return o.className=t,o.innerHTML=e,o.title=n,o.type="button",o.setAttribute("aria-label",n),o.setAttribute("contenteditable","false"),o.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),o}function pe(t,e){const n=document.createElement("div");n.className=`ntbl-insert-line ntbl-insert-line--${t}`,n.setAttribute("contenteditable","false"),n.setAttribute("data-notectl-no-print","");const o=me("ntbl-insert-btn",be,e);return n.appendChild(o),n}function fe(t,e){const n=document.createElement("button");n.className=`ntbl-add-zone ${t}`,n.type="button",n.setAttribute("contenteditable","false"),n.setAttribute("aria-label",e),n.setAttribute("data-notectl-no-print",""),n.title=e;const o=document.createElement("span");return o.className="ntbl-add-icon",o.innerHTML=be,n.appendChild(o),n.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),n}function ge(t){const e=document.createElement("div");return e.className=t,e.setAttribute("contenteditable","false"),e.setAttribute("data-notectl-no-print",""),e}function we(t,e,n,o){const r=document.createElement("button");return r.type="button",r.className=`ntbl-resize-separator ntbl-resize-separator--${t}`,r.dataset.kind=t,r.dataset.index=String(e),r.setAttribute("role","separator"),r.setAttribute("aria-orientation","column"===t?"vertical":"horizontal"),r.setAttribute("aria-label",n),r.setAttribute("contenteditable","false"),r.setAttribute("data-notectl-no-print",""),r.title=`${n}. ${o}`,r}function xe(t,e){L(t,"none"===e?{backgroundColor:"transparent",border:"1px dashed rgba(128,128,128,0.4)"}:e?{backgroundColor:e,border:"1px solid rgba(0,0,0,0.15)"}:{backgroundColor:"var(--notectl-border)",border:"1px solid rgba(0,0,0,0.15)"})}function ve(t,e,n,o,r){const i=document.createElement("div");if(i.className=`ntbl-handle ${t}`,i.dataset.index=String(e),r){const t=me("ntbl-handle-select","",r.label);t.setAttribute("aria-pressed",r.selected?"true":"false"),t.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),r.onSelect(e)}),i.appendChild(t)}const l=me("ntbl-handle-delete",'<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M2 2l6 6M8 2l-6 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>',n);return l.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),o(e)}),i.appendChild(l),i}function Ce(t,e){const n=t.getBoundingClientRect(),o=e.getBoundingClientRect();return{top:n.top-o.top+e.scrollTop,left:n.left-o.left+e.scrollLeft}}function ye(t,e=0){const n=t.getBoundingClientRect(),o=Array.from(t.querySelectorAll(":scope > colgroup > col"));if(o.length>0){const t=o.map((t,e)=>{const o=t.getBoundingClientRect();return{index:e,position:o.left-n.left,width:o.width}});if(t.every(t=>t.width>0))return t}const r=o.length||e,i=n.width||t.offsetWidth;if(r<=0||i<=0)return[];const l=i/r;return Array.from({length:r},(t,e)=>({index:e,position:l*e,width:l}))}var Se={...ft,directResize:!0},Re=class{tableId;numRows;numCols;currentNode;readOnly=!1;activeRowIndex=-1;activeColIndex=-1;resizeSession=null;colBar;rowBar;colResizeBar;rowResizeBar;resizeIndicator;insertLineH;insertLineV;addRowZone;addColZone;deleteTableBtn;borderColorBtn;actionsBtn;contextHint;observer;wrapperEl;borderColorPopup=null;activeContextMenu=null;container;tableEl;getState;dispatchFn;pluginContext;locale;config;onWrapperScroll=()=>this.positionControls();onPointerMove=t=>this.moveResize(t);onPointerUp=t=>this.finishResize(t);onPointerCancel=t=>this.cancelResize(t);onDocumentKeyDown=t=>{"Escape"===t.key&&this.resizeSession&&(t.preventDefault(),t.stopPropagation(),this.cancelActiveResize())};onMouseMove=t=>{if(this.readOnly||this.resizeSession)return;const e=this.tableEl.getBoundingClientRect(),n=t.clientX-e.left,o=t.clientY-e.top;if(!(n>=-10&&n<=e.width+10&&o>=-10&&o<=e.height+10))return void this.hideInsertLines();const r=function(t,e,n,o){let r=Number.POSITIVE_INFINITY,i=null;for(const a of n){const t=Math.abs(e-a.position);t<r&&t<10&&(r=t,i=a)}let l=Number.POSITIVE_INFINITY,s=null;for(const a of o){const e=Math.abs(t-a.position);e<l&&e<10&&(l=e,s=a)}return i&&(!s||r<=l)?{type:"row",border:i}:s?{type:"col",border:s}:{type:"none",border:null}}(n,o,function(t){const e=t.querySelectorAll(":scope > tbody > tr"),n=t.getBoundingClientRect().top,o=[];for(let r=1;r<e.length;r++){const t=e[r];t&&o.push({position:Math.round(t.getBoundingClientRect().top-n),index:r})}return o}(this.tableEl),function(t,e=0){if("number"==typeof t){if(e<=1)return[];const n=t/e;return Array.from({length:e-1},(t,e)=>({position:Math.round(n*(e+1)),index:e+1}))}const n=ye(t,e);if(n.length<=1)return[];const o="rtl"===getComputedStyle(t).direction;return n.slice(0,-1).map((t,e)=>({position:Math.round(o?t.position:t.position+t.width),index:e+1}))}(this.tableEl,this.numCols));"row"===r.type&&r.border?(this.showHorizontalLine(r.border),this.hideVerticalLine()):"col"===r.type&&r.border?(this.showVerticalLine(r.border),this.hideHorizontalLine()):this.hideInsertLines()};onMouseLeave=()=>{this.hideInsertLines()};constructor(t,e,n,o,r,i,l=nt,s=Se){if(this.container=t,this.tableEl=e,this.getState=o,this.dispatchFn=r,this.pluginContext=i??null,this.locale=l,this.config={...wt(s),directResize:s.directResize??!0},this.wrapperEl=e.closest(".notectl-table-wrapper"),this.tableId=n.id,this.currentNode=n,this.numRows=V(n).rowCount,this.numCols=this.countCols(n),this.colBar=ge("ntbl-col-bar"),this.rowBar=ge("ntbl-row-bar"),this.colResizeBar=ge("ntbl-col-resize-bar"),this.rowResizeBar=ge("ntbl-row-resize-bar"),this.resizeIndicator=function(){const t=document.createElement("div");return t.className="ntbl-resize-indicator",t.setAttribute("aria-hidden","true"),t.setAttribute("contenteditable","false"),t.setAttribute("data-notectl-no-print",""),t}(),this.insertLineH=pe("horizontal",l.insertRow),this.insertLineV=pe("vertical",l.insertColumn),this.addRowZone=fe("ntbl-add-row",l.addRow),this.addColZone=fe("ntbl-add-col",l.addColumn),this.deleteTableBtn=me("ntbl-delete-table-btn",'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none"><path d="M9 3h6m-9 4h12M10 11v6m4-6v6m-9 3h14l-1-13H6L5 20z" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg>',l.deleteTable),this.deleteTableBtn.setAttribute("data-notectl-no-print",""),i){const t=ct(o(),this.tableId);this.borderColorBtn=function(t,e){const n=me("ntbl-border-color-btn",'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none"><path d="M3 3h18v18H3V3zm0 6h18M3 15h18M9 3v18M15 3v18" stroke="currentColor" stroke-width="1.5"/></svg>',t);n.setAttribute("data-notectl-no-print","");const o=document.createElement("span");return o.className="ntbl-border-color-swatch",xe(o,e),n.appendChild(o),n}(l.borderColor,t),this.actionsBtn=function(t){const e=me("ntbl-actions-btn",'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><circle cx="12" cy="5" r="2"/><circle cx="12" cy="12" r="2"/><circle cx="12" cy="19" r="2"/></svg>',t);return e.setAttribute("data-notectl-no-print",""),e}(l.tableActionsHint)}else this.borderColorBtn=null,this.actionsBtn=null;t.append(this.colBar,this.rowBar,this.insertLineH,this.insertLineV,this.addRowZone,this.addColZone,this.deleteTableBtn),this.config.directResize&&t.append(this.colResizeBar,this.rowResizeBar,this.resizeIndicator),this.borderColorBtn&&t.appendChild(this.borderColorBtn),this.actionsBtn&&t.appendChild(this.actionsBtn),this.contextHint=function(t){const e=document.createElement("div");return e.className="ntbl-context-hint",e.setAttribute("aria-hidden","true"),e.setAttribute("contenteditable","false"),e.setAttribute("data-notectl-no-print",""),e.textContent=t,e}(l.contextMenuHint),t.appendChild(this.contextHint),this.rebuildColHandles(),this.rebuildRowHandles(),this.rebuildResizeSeparators(),this.bindEventListeners(),this.setReadOnly(i?.isReadOnly?.()??!1),this.observer=new ResizeObserver(()=>{this.positionControls()}),this.observer.observe(e),this.wrapperEl&&(this.observer.observe(this.wrapperEl),this.wrapperEl.addEventListener("scroll",this.onWrapperScroll,{passive:!0})),requestAnimationFrame(()=>this.positionControls())}update(t){this.tableId=t.id,this.currentNode=t;const e=V(t).rowCount,n=this.countCols(t);if(e===this.numRows&&n===this.numCols||(this.numRows=e,this.numCols=n,this.rebuildColHandles(),this.rebuildRowHandles(),this.rebuildResizeSeparators()),this.updateHandleSelectionState(),this.borderColorBtn){const e=this.borderColorBtn.querySelector(".ntbl-border-color-swatch");if(e){const n=t.attrs?.borderColor;xe(e,n)}}requestAnimationFrame(()=>this.positionControls())}setReadOnly(t){this.readOnly=t,this.container.toggleAttribute("data-notectl-table-readonly",t);const e=[this.colBar,this.rowBar,this.colResizeBar,this.rowResizeBar,this.addRowZone,this.addColZone,this.deleteTableBtn,this.insertLineH,this.insertLineV,...this.borderColorBtn?[this.borderColorBtn]:[],...this.actionsBtn?[this.actionsBtn]:[]];for(const n of e){n instanceof HTMLButtonElement&&(n.disabled=t);for(const e of n.querySelectorAll("button"))e.disabled=t}t&&(this.hideInsertLines(),this.cancelActiveResize(),this.activeContextMenu?.close(),this.activeContextMenu=null,this.closeBorderColorPopup())}destroy(){this.cancelActiveResize(),this.activeContextMenu?.destroy(),this.closeBorderColorPopup(),this.observer.disconnect(),this.wrapperEl?.removeEventListener("scroll",this.onWrapperScroll),this.container.removeEventListener("mousemove",this.onMouseMove),this.container.removeEventListener("mouseleave",this.onMouseLeave),this.colBar.remove(),this.rowBar.remove(),this.colResizeBar.remove(),this.rowResizeBar.remove(),this.resizeIndicator.remove(),this.insertLineH.remove(),this.insertLineV.remove(),this.addRowZone.remove(),this.addColZone.remove(),this.deleteTableBtn.remove(),this.borderColorBtn?.remove(),this.actionsBtn?.remove(),this.contextHint.remove()}bindEventListeners(){const t=this.insertLineH.querySelector(".ntbl-insert-btn"),e=this.insertLineV.querySelector(".ntbl-insert-btn");if(t.addEventListener("click",()=>{this.activeRowIndex>=0&&this.dispatchTransaction(Tt(this.getState(),this.tableId,this.activeRowIndex))}),e.addEventListener("click",()=>{this.activeColIndex>=0&&this.dispatchTransaction(Dt(this.getState(),this.tableId,this.activeColIndex))}),this.addRowZone.addEventListener("click",()=>{this.dispatchTransaction(Tt(this.getState(),this.tableId,this.numRows))}),this.addColZone.addEventListener("click",()=>{this.dispatchTransaction(Dt(this.getState(),this.tableId,this.numCols))}),this.deleteTableBtn.addEventListener("click",()=>{this.dispatchTransaction(_t(this.getState(),this.tableId))}),this.borderColorBtn&&this.pluginContext){const t=this.pluginContext;this.borderColorBtn.addEventListener("click",()=>{this.toggleBorderColorPopup(t)})}if(this.actionsBtn&&this.pluginContext){const t=this.pluginContext;this.actionsBtn.addEventListener("click",()=>{this.openActionsMenu(t)})}this.container.addEventListener("mousemove",this.onMouseMove),this.container.addEventListener("mouseleave",this.onMouseLeave)}openActionsMenu(t){if(this.readOnly||t.isReadOnly?.())return;if(this.activeContextMenu?.isOpen())return this.activeContextMenu.close(),void(this.activeContextMenu=null);if(!this.actionsBtn)return;const e=this.actionsBtn.getBoundingClientRect();this.activeContextMenu=ie(this.container,t,this.tableId,e,()=>{this.activeContextMenu=null},this.locale,void 0,{sizingConfig:this.config,restoreFocusTo:this.actionsBtn})}toggleBorderColorPopup(t){this.readOnly||t.isReadOnly?.()||(this.borderColorPopup?this.closeBorderColorPopup():(this.borderColorPopup=document.createElement("div"),this.borderColorPopup.className="notectl-table-context-menu",L(this.borderColorPopup,{position:"absolute",top:"24px",left:"24px",zIndex:"10000"}),this.borderColorPopup.setAttribute("contenteditable","false"),dt(this.borderColorPopup,t,this.tableId,()=>{this.closeBorderColorPopup()},this.locale),this.container.appendChild(this.borderColorPopup)))}closeBorderColorPopup(){this.borderColorPopup&&(this.borderColorPopup.remove(),this.borderColorPopup=null)}dispatchTransaction(t){!t||this.readOnly||this.pluginContext?.isReadOnly?.()||this.dispatchFn(t)}countCols(t){return V(t).columnCount}positionControls(){const t=Ce(this.tableEl,this.container),e=this.tableEl.getBoundingClientRect();L(this.colBar,{left:`${String(t.left)}px`,top:`${String(t.top-24)}px`}),P(this.rowBar,"top",`${String(t.top)}px`),function(t,e,n=0){const o=t.children;if(0===o.length)return;const r="number"==typeof e?Array.from({length:n},(t,o)=>({index:o,position:e/n*o,width:e/n})):ye(e,n);for(let l=0;l<o.length;l++){const t=o[l],e=r[l];e&&L(t,{left:`${Math.round(e.position)}px`,width:`${Math.round(e.width)}px`})}const i=r.reduce((t,e)=>Math.max(t,e.position+e.width),0);P(t,"width",`${Math.round(i)}px`)}(this.colBar,this.tableEl,this.numCols),function(t,e){const n=t.children;if(0===n.length)return;const o=e.querySelectorAll(":scope > tbody > tr"),r=e.getBoundingClientRect();let i=0;for(let l=0;l<n.length;l++){const t=n[l],e=o[l];if(e){const n=e.getBoundingClientRect(),o=n.top-r.top,l=n.height||e.offsetHeight;L(t,{top:`${o}px`,height:`${l}px`}),i=o+l}}P(t,"height",`${i}px`)}(this.rowBar,this.tableEl),function(t,e,n,o){const r=Ce(n,o),i=n.getBoundingClientRect(),l=i.height||n.offsetHeight;L(t,{width:`${i.width||n.offsetWidth}px`,left:`${r.left}px`}),L(e,{height:`${l}px`,top:`${r.top}px`})}(this.addRowZone,this.addColZone,this.tableEl,this.container),this.config.directResize&&this.positionResizeSeparators(t,e)}positionResizeSeparators(t,e){L(this.colResizeBar,{left:`${String(t.left)}px`,top:`${String(t.top)}px`,width:`${String(e.width)}px`,height:`${String(e.height)}px`}),L(this.rowResizeBar,{left:`${String(t.left)}px`,top:`${String(t.top)}px`,width:`${String(e.width)}px`,height:`${String(e.height)}px`});const n="rtl"===getComputedStyle(this.tableEl).direction,o=ye(this.tableEl,this.numCols);for(let i=0;i<this.colResizeBar.children.length;i++){const t=this.colResizeBar.children[i],r=o[i];if(!r)continue;const l=n?r.position:r.position+r.width;L(t,{left:`${String(l)}px`,top:"0px",height:`${String(e.height)}px`}),this.updateSeparatorValue(t,"column",i,r.width)}const r=Array.from(this.tableEl.querySelectorAll(":scope > tbody > tr"));for(let i=0;i<this.rowResizeBar.children.length;i++){const t=this.rowResizeBar.children[i],n=r[i];if(!n)continue;const o=n.getBoundingClientRect(),l=o.bottom-e.top;L(t,{left:"0px",top:`${String(l)}px`,width:`${String(e.width)}px`}),this.updateSeparatorValue(t,"row",i,o.height||n.offsetHeight)}}updateSeparatorValue(t,e,n,o){const r="column"===e?this.config.minColumnWidthPx:this.config.minRowHeightPx,i="column"===e?this.config.maxColumnWidthPx:this.config.maxRowHeightPx,l=Math.round(o);t.setAttribute("aria-valuemin",String(r)),t.setAttribute("aria-valuemax",String(i)),t.setAttribute("aria-valuenow",String(l)),t.setAttribute("aria-valuetext",`${String(l)} px`),t.dataset.index=String(n)}startResize(t,e,n){if(this.readOnly||this.pluginContext?.isReadOnly?.()||0!==t.button&&"touch"!==t.pointerType)return;const o=this.getRenderedDimension(e,n);null!==o&&(t.preventDefault(),t.stopPropagation(),this.cancelActiveResize(),this.resizeSession={kind:e,index:n,pointerId:t.pointerId,startCoordinate:"column"===e?t.clientX:t.clientY,startSize:o,currentSize:o},t.currentTarget?.setPointerCapture?.(t.pointerId),document.addEventListener("pointermove",this.onPointerMove),document.addEventListener("pointerup",this.onPointerUp),document.addEventListener("pointercancel",this.onPointerCancel),document.addEventListener("keydown",this.onDocumentKeyDown,!0),this.container.classList.add(`ntbl-container--resizing-${e}`),this.updateResizeIndicator(o,t.clientX,t.clientY))}moveResize(t){const e=this.resizeSession;if(!e||e.pointerId!==t.pointerId)return;t.preventDefault();let n=("column"===e.kind?t.clientX:t.clientY)-e.startCoordinate;"column"===e.kind&&"rtl"===getComputedStyle(this.tableEl).direction&&(n*=-1);const o=this.clampDimension(e.kind,e.startSize+n);e.currentSize=o,this.applyResizePreview(e.kind,e.index,o),this.updateResizeIndicator(o,t.clientX,t.clientY),this.positionControls()}finishResize(t){const e=this.resizeSession;if(!e||e.pointerId!==t.pointerId)return;t.currentTarget?.releasePointerCapture?.(t.pointerId),this.resizeSession=null,this.detachResizeListeners(),this.hideResizeIndicator();const n=Math.round(e.currentSize),o=this.getSizingService();("column"===e.kind?o?.setSize({kind:"column",tableId:this.tableId,column:e.index},{columnWidthPx:n}):o?.setSize({kind:"row",tableId:this.tableId,row:e.index},{rowMinHeightPx:n}))?"column"===e.kind?this.pluginContext?.announce(this.locale.announceColumnWidthSet(e.index,n)):this.pluginContext?.announce(this.locale.announceRowMinimumHeightSet(e.index,n)):this.restoreCanonicalDimensions()}cancelResize(t){this.resizeSession?.pointerId===t.pointerId&&this.cancelActiveResize()}cancelActiveResize(){this.resizeSession&&(this.resizeSession=null,this.detachResizeListeners(),this.hideResizeIndicator(),this.restoreCanonicalDimensions(),this.positionControls())}detachResizeListeners(){document.removeEventListener("pointermove",this.onPointerMove),document.removeEventListener("pointerup",this.onPointerUp),document.removeEventListener("pointercancel",this.onPointerCancel),document.removeEventListener("keydown",this.onDocumentKeyDown,!0),this.container.classList.remove("ntbl-container--resizing-column"),this.container.classList.remove("ntbl-container--resizing-row")}getRenderedDimension(t,e){if("column"===t)return ye(this.tableEl,this.numCols)[e]?.width??null;const n=Array.from(this.tableEl.querySelectorAll(":scope > tbody > tr"))[e];return n&&(n.getBoundingClientRect().height||n.offsetHeight)||null}clampDimension(t,e){const n="column"===t?this.config.minColumnWidthPx:this.config.minRowHeightPx,o="column"===t?this.config.maxColumnWidthPx:this.config.maxRowHeightPx;return Math.min(o,Math.max(n,e))}applyResizePreview(t,e,n){if("column"===t){const t=this.tableEl.querySelectorAll(":scope > colgroup > col")[e];if(!t)return;M(t,"width"),t.setAttribute("width",String(n));const o=xt(this.currentNode,this.numCols),r=o.reduce((t,o,r)=>t+(r===e?n:o??this.config.minColumnWidthPx),0);return P(this.tableEl,"minWidth",`${String(r)}px`),void(o.length>=this.numCols&&o.every((t,n)=>n===e||null!==t)?P(this.tableEl,"width",`${String(r)}px`):M(this.tableEl,"width"))}const o=this.tableEl.querySelectorAll(":scope > tbody > tr")[e];o&&(M(o,"height"),o.setAttribute("height",String(n)))}restoreCanonicalDimensions(){const t=xt(this.currentNode,this.numCols),e=Array.from(this.tableEl.querySelectorAll(":scope > colgroup > col"));let n=0;for(let i=0;i<e.length;i++){const o=e[i];if(!o)continue;const r=t[i]??null;o.removeAttribute("width"),null===r?(M(o,"width"),o.removeAttribute("data-notectl-width-px")):(P(o,"width",`${String(r)}px`),o.setAttribute("data-notectl-width-px",String(r))),n+=r??this.config.minColumnWidthPx}P(this.tableEl,"minWidth",`${String(n)}px`),t.length>=this.numCols&&t.every(t=>null!==t)?P(this.tableEl,"width",`${String(n)}px`):M(this.tableEl,"width");const o=s(this.currentNode),r=Array.from(this.tableEl.querySelectorAll(":scope > tbody > tr"));for(let i=0;i<r.length;i++){const t=r[i],e=o[i];if(!t||!e)continue;t.removeAttribute("height");const n=Ct(e);null===n?(M(t,"height"),t.removeAttribute("data-notectl-min-height-px")):(P(t,"height",`${String(n)}px`),t.setAttribute("data-notectl-min-height-px",String(n)))}}updateResizeIndicator(t,e,n){const o=this.container.getBoundingClientRect();this.resizeIndicator.textContent=`${String(Math.round(t))} px`,L(this.resizeIndicator,{left:`${String(e-o.left+this.container.scrollLeft+12)}px`,top:`${String(n-o.top+this.container.scrollTop+12)}px`}),this.resizeIndicator.classList.add("ntbl-resize-indicator--visible")}hideResizeIndicator(){this.resizeIndicator.classList.remove("ntbl-resize-indicator--visible")}showHorizontalLine(t){this.activeRowIndex=t.index;const e=Ce(this.tableEl,this.container);L(this.insertLineH,{top:e.top+t.position-1+"px",left:`${e.left}px`,width:`${this.tableEl.offsetWidth}px`}),this.insertLineH.classList.add("ntbl-insert-line--visible")}showVerticalLine(t){this.activeColIndex=t.index;const e=Ce(this.tableEl,this.container);L(this.insertLineV,{left:e.left+t.position-1+"px",top:`${e.top}px`,height:`${this.tableEl.offsetHeight}px`}),this.insertLineV.classList.add("ntbl-insert-line--visible")}hideInsertLines(){this.hideHorizontalLine(),this.hideVerticalLine()}hideHorizontalLine(){this.insertLineH.classList.remove("ntbl-insert-line--visible"),this.activeRowIndex=-1}hideVerticalLine(){this.insertLineV.classList.remove("ntbl-insert-line--visible"),this.activeColIndex=-1}rebuildColHandles(){this.colBar.innerHTML="";for(let t=0;t<this.numCols;t++){const e=ve("ntbl-col-handle",t,this.locale.deleteColumn,t=>{this.dispatchTransaction(Ot(this.getState(),this.tableId,t))},{label:this.locale.selectColumnLabel(t),onSelect:t=>this.selectColumn(t)});this.colBar.appendChild(e)}}rebuildRowHandles(){this.rowBar.innerHTML="";for(let t=0;t<this.numRows;t++){const e=ve("ntbl-row-handle",t,this.locale.deleteRow,t=>{this.dispatchTransaction(Wt(this.getState(),this.tableId,t))},{label:this.locale.selectRowLabel(t),onSelect:t=>this.selectRow(t)});this.rowBar.appendChild(e)}}rebuildResizeSeparators(){if(this.colResizeBar.innerHTML="",this.rowResizeBar.innerHTML="",!this.config.directResize)return;const t=this.locale.resizeKeyboardHint(this.config.keyboardResizeStepPx,this.config.keyboardResizeLargeStepPx);for(let e=0;e<this.numCols;e++){const n=we("column",e,this.locale.resizeColumnSeparatorLabel(e),t);n.addEventListener("pointerdown",t=>this.startResize(t,"column",e)),n.addEventListener("keydown",t=>this.resizeFromKeyboard(t,"column",e)),this.colResizeBar.appendChild(n)}for(let e=0;e<this.numRows;e++){const n=we("row",e,this.locale.resizeRowSeparatorLabel(e),t);n.addEventListener("pointerdown",t=>this.startResize(t,"row",e)),n.addEventListener("keydown",t=>this.resizeFromKeyboard(t,"row",e)),this.rowResizeBar.appendChild(n)}this.setReadOnly(this.readOnly)}resizeFromKeyboard(t,e,n){if(this.readOnly||this.pluginContext?.isReadOnly?.())return;const o=this.getSizingService();if(!o)return;const r=t.currentTarget;if("Delete"===t.key||"Backspace"===t.key){t.preventDefault(),t.stopPropagation();const i="column"===e?{kind:"column",tableId:this.tableId,column:n}:{kind:"row",tableId:this.tableId,row:n},l="column"===e?"columnWidthPx":"rowMinHeightPx";return void(o.resetSize(i,l)&&(this.restoreKeyboardResizeFocus(r),this.pluginContext?.announce("column"===e?this.locale.announceColumnWidthReset(n):this.locale.announceRowMinimumHeightReset(n))))}const i="column"===e?"ArrowLeft":"ArrowUp",l="column"===e?"ArrowRight":"ArrowDown";if(t.key!==i&&t.key!==l)return;t.preventDefault(),t.stopPropagation();const s=this.getRenderedDimension(e,n);if(null===s)return;const a=t.shiftKey?this.config.keyboardResizeLargeStepPx:this.config.keyboardResizeStepPx;let c=t.key===l?1:-1;"column"===e&&"rtl"===getComputedStyle(this.tableEl).direction&&(c=1===c?-1:1);const d=Math.round(this.clampDimension(e,s+a*c));("column"===e?o.setSize({kind:"column",tableId:this.tableId,column:n},{columnWidthPx:d}):o.setSize({kind:"row",tableId:this.tableId,row:n},{rowMinHeightPx:d}))&&(this.restoreKeyboardResizeFocus(r),this.pluginContext?.announce("column"===e?this.locale.announceColumnWidthSet(n,d):this.locale.announceRowMinimumHeightSet(n,d)),this.updateSeparatorValue(r,e,n,d))}restoreKeyboardResizeFocus(t){t.isConnected&&t.focus({preventScroll:!0})}selectColumn(t){this.readOnly||0===this.numRows||(this.getSelectionService()?.setSelectedRange({tableId:this.tableId,fromRow:0,fromCol:t,toRow:this.numRows-1,toCol:t}),this.updateHandleSelectionState())}selectRow(t){this.readOnly||0===this.numCols||(this.getSelectionService()?.setSelectedRange({tableId:this.tableId,fromRow:t,fromCol:0,toRow:t,toCol:this.numCols-1}),this.updateHandleSelectionState())}updateHandleSelectionState(){const t=this.getSelectionService()?.getSelectedRange();for(let e=0;e<this.colBar.children.length;e++){const n=!!t&&t.tableId===this.tableId&&Math.min(t.fromCol,t.toCol)===e&&Math.max(t.fromCol,t.toCol)===e&&0===Math.min(t.fromRow,t.toRow)&&Math.max(t.fromRow,t.toRow)===this.numRows-1;this.colBar.children[e]?.querySelector(".ntbl-handle-select")?.setAttribute("aria-pressed",n?"true":"false")}for(let e=0;e<this.rowBar.children.length;e++){const n=!!t&&t.tableId===this.tableId&&Math.min(t.fromRow,t.toRow)===e&&Math.max(t.fromRow,t.toRow)===e&&0===Math.min(t.fromCol,t.toCol)&&Math.max(t.fromCol,t.toCol)===this.numCols-1;this.rowBar.children[e]?.querySelector(".ntbl-handle-select")?.setAttribute("aria-pressed",n?"true":"false")}}getSizingService(){return this.pluginContext?.getService?.(gt)}getSelectionService(){return this.pluginContext?.getService?.(bt)}},ze={minColumnWidthPx:60,minRowHeightPx:24,maxColumnWidthPx:1e4,maxRowHeightPx:1e4,keyboardResizeStepPx:8,keyboardResizeLargeStepPx:32,directResize:!0};function Ie(t,e){"none"===e?(P(t,"--ntbl-border-color","transparent"),t.classList.add("notectl-table--borderless")):e?(P(t,"--ntbl-border-color",e),t.classList.remove("notectl-table--borderless")):(M(t,"--ntbl-border-color"),t.classList.remove("notectl-table--borderless"))}function ke(t,e,n,o=ze){const r=V(n).columnCount;for(P(t,"--ntbl-min-column-width",`${String(o.minColumnWidthPx)}px`);e.children.length>r;)e.lastElementChild?.remove();for(;e.children.length<r;)e.appendChild(document.createElement("col"));const i=n.attrs?.columnWidthsPx,l=Array.isArray(i)?i:[];let s=0;for(let a=0;a<r;a++){const t=e.children[a];if(!t)continue;t.removeAttribute("width");const n=l[a],r="number"==typeof n&&Number.isFinite(n)&&n>0?n:void 0;void 0!==r?(P(t,"width",`${String(r)}px`),t.setAttribute("data-notectl-width-px",String(r))):(M(t,"width"),t.removeAttribute("data-notectl-width-px")),s+=r??o.minColumnWidthPx}r>0?(P(t,"minWidth",`${String(s)}px`),l.length>=r&&l.slice(0,r).every(t=>"number"==typeof t)?P(t,"width",`${String(s)}px`):M(t,"width")):(M(t,"minWidth"),M(t,"width"))}function Ae(t,e){const n=e.attrs?.minHeightPx;t.removeAttribute("height"),"number"==typeof n&&Number.isFinite(n)&&n>0?(P(t,"height",`${String(n)}px`),t.setAttribute("data-notectl-min-height-px",String(n))):(M(t,"height"),t.removeAttribute("data-notectl-min-height-px"))}function Ee(t,e){const n=Array.from(t.querySelectorAll(":scope > tr"));for(const o of s(e)){const t=n.find(t=>t.getAttribute("data-block-id")===o.id);t&&Ae(t,o)}}function Pe(t){if(!t)return;const{borderColor:e,columnWidthsPx:n,...o}=t;return Object.keys(o).length>0?o:void 0}function Me(t){if(!t)return;const{minHeightPx:e,...n}=t;return Object.keys(n).length>0?n:void 0}var Le={maxPickerRows:8,maxPickerCols:8,...ft,directResize:!0},Be="border: 1px solid var(--ntbl-bc, #d0d0d0); padding: 8px 12px; vertical-align: top",He=class{id="table";name="Table";priority=40;config;locale;selectionService=null;cleanupMouseSelection=null;cleanupClipboard=null;context=null;controls=/* @__PURE__ */new Set;constructor(t){const e=wt(t??{});this.config={...Le,...t,...e,maxPickerRows:Ne(t?.maxPickerRows,Le.maxPickerRows),maxPickerCols:Ne(t?.maxPickerCols,Le.maxPickerCols),directResize:t?.directResize??!0}}async init(t){this.locale=await $(t,this.config.locale,nt,rt),t.registerStyleSheet('\n/* Table */\n.notectl-table-wrapper {\n\tmargin: 8px 0;\n\toverflow-x: auto;\n\tposition: relative;\n}\n\n.notectl-table {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\ttable-layout: fixed;\n}\n\n.notectl-table col {\n\tbox-sizing: border-box;\n}\n\n/* Border resolution order: per-table local override → theme component token → theme global token.\n * The inline --ntbl-border-color is set by the toolbar\'s "border color" action and must win\n * over the theme so per-table customizations remain visible after a theme switch.\n */\n.notectl-table td {\n\tborder: 1px solid var(--ntbl-border-color, var(--notectl-table-border, var(--notectl-border)));\n\tbackground: var(--notectl-table-cell-bg, transparent);\n\tpadding: 8px 12px;\n\tmin-width: var(--ntbl-min-column-width, 60px);\n\tvertical-align: top;\n\tmin-height: 1.6em;\n}\n\n.notectl-table th {\n\tborder: 1px solid var(--ntbl-border-color, var(--notectl-table-border, var(--notectl-border)));\n\tbackground: var(--notectl-table-header-bg, var(--notectl-surface-raised));\n\tpadding: 8px 12px;\n\tmin-width: var(--ntbl-min-column-width, 60px);\n\tvertical-align: top;\n\ttext-align: start;\n\tfont-weight: 600;\n}\n\n.notectl-table--borderless td {\n\tborder: 1px dashed rgba(128, 128, 128, 0.15);\n}\n\n@media print {\n\t.notectl-table--borderless td {\n\t\tborder: none;\n\t}\n}\n\n.notectl-table td:focus-within {\n\toutline: 2px solid var(--notectl-primary);\n\toutline-offset: -2px;\n}\n\n.notectl-table-cell--selected {\n\tbackground: var(--notectl-primary-muted);\n}\n\n/* Table Context Menu */\n.notectl-table-context-menu {\n\tbackground: var(--notectl-surface-overlay);\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 6px;\n\tbox-shadow: 0 4px 12px var(--notectl-shadow);\n\tpadding: 4px 0;\n\tmin-width: 180px;\n\tz-index: 10000;\n}\n\n.notectl-table-context-menu button {\n\tdisplay: block;\n\twidth: 100%;\n\tpadding: 8px 12px;\n\ttext-align: start;\n\tborder: none;\n\tbackground: none;\n\tcursor: pointer;\n\tfont-size: 14px;\n\tcolor: var(--notectl-fg);\n\tfont-family: inherit;\n}\n\n.notectl-table-context-menu button:hover {\n\tbackground: var(--notectl-hover-bg);\n}\n\n.notectl-table-context-menu hr {\n\tborder: none;\n\tborder-top: 1px solid var(--notectl-border);\n\tmargin: 4px 0;\n}\n\n/* === Table Controls === */\n\n/* Outer container for table + controls */\n.ntbl-container {\n\tposition: relative;\n\tmargin: 8px 0;\n\tpadding-block-start: 24px;\n\tpadding-inline-start: 24px;\n}\n\n.ntbl-container .notectl-table-wrapper {\n\tmargin: 0;\n}\n\n.ntbl-container.notectl-table--selected .notectl-table-wrapper {\n\toutline: 2px solid var(--notectl-primary-fg);\n\toutline-offset: 2px;\n\tborder-radius: 6px;\n}\n\n/* --- Column Handle Bar --- */\n.ntbl-col-bar {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 24px;\n\theight: 20px;\n\tdisplay: flex;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tz-index: 3;\n\tpointer-events: none;\n}\n\n.ntbl-container:hover .ntbl-col-bar,\n.ntbl-container:focus-within .ntbl-col-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-container.notectl-table--selected .ntbl-col-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n/* --- Row Handle Bar --- */\n.ntbl-row-bar {\n\tposition: absolute;\n\ttop: 24px;\n\tinset-inline-start: 0;\n\twidth: 20px;\n\tdisplay: flex;\n\tflex-direction: column;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tz-index: 3;\n\tpointer-events: none;\n}\n\n.ntbl-container:hover .ntbl-row-bar,\n.ntbl-container:focus-within .ntbl-row-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-container.notectl-table--selected .ntbl-row-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n/* --- Handle (shared base) --- */\n.ntbl-handle {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\ttransition: background 0.15s ease;\n\tborder-radius: 3px;\n}\n\n.ntbl-handle-select {\n\tposition: absolute;\n\tinset: 0;\n\twidth: 100%;\n\theight: 100%;\n\tborder: 0;\n\tborder-radius: inherit;\n\tbackground: transparent;\n\tcursor: pointer;\n}\n\n.ntbl-handle-select[aria-pressed="true"] {\n\tbackground: var(--notectl-primary-muted);\n\tbox-shadow: inset 0 0 0 1px var(--notectl-primary);\n}\n\n.ntbl-handle-select:focus-visible {\n\toutline: none;\n\tbox-shadow: inset 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-col-handle {\n\theight: 100%;\n\tbackground: var(--notectl-hover-bg);\n\tborder-radius: 4px 4px 0 0;\n}\n\n.ntbl-col-handle:hover {\n\tbackground: var(--notectl-border);\n}\n\n.ntbl-row-handle {\n\twidth: 100%;\n\tbackground: var(--notectl-hover-bg);\n\tborder-start-start-radius: 4px;\n\tborder-end-start-radius: 4px;\n}\n\n.ntbl-row-handle:hover {\n\tbackground: var(--notectl-border);\n}\n\n/* --- Handle Delete Button --- */\n.ntbl-handle-delete {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 16px;\n\theight: 16px;\n\tborder: none;\n\tbackground: transparent;\n\tcolor: var(--notectl-fg-muted);\n\tcursor: pointer;\n\tborder-radius: 3px;\n\tpadding: 0;\n\topacity: 0;\n\ttransform: scale(0.7);\n\ttransition: opacity 0.15s, transform 0.15s,\n\t\tbackground 0.15s, color 0.15s;\n\tz-index: 1;\n}\n\n/* --- Logical column/row resize separators --- */\n.ntbl-col-resize-bar,\n.ntbl-row-resize-bar {\n\tposition: absolute;\n\tinset: 0 auto auto 0;\n\tz-index: 8;\n\tpointer-events: none;\n}\n\n.ntbl-resize-separator {\n\tposition: absolute;\n\tdisplay: block;\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tbackground: transparent;\n\topacity: 0;\n\tpointer-events: none;\n\ttouch-action: none;\n}\n\n.ntbl-resize-separator--column {\n\twidth: 12px;\n\ttransform: translateX(-6px);\n\tcursor: col-resize;\n}\n\n.ntbl-resize-separator--row {\n\theight: 12px;\n\ttransform: translateY(-6px);\n\tcursor: row-resize;\n}\n\n.ntbl-container:hover .ntbl-resize-separator,\n.ntbl-container:focus-within .ntbl-resize-separator,\n.ntbl-container.notectl-table--selected .ntbl-resize-separator,\n.ntbl-container--resizing-column .ntbl-resize-separator--column,\n.ntbl-container--resizing-row .ntbl-resize-separator--row {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-resize-separator::after {\n\tcontent: "";\n\tposition: absolute;\n\tbackground: var(--notectl-primary);\n\topacity: 0.35;\n}\n\n.ntbl-resize-separator--column::after {\n\tinset: 0 auto 0 5px;\n\twidth: 2px;\n}\n\n.ntbl-resize-separator--row::after {\n\tinset: 5px 0 auto 0;\n\theight: 2px;\n}\n\n.ntbl-resize-separator:hover::after,\n.ntbl-resize-separator:focus-visible::after {\n\topacity: 1;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-resize-separator:focus-visible {\n\toutline: none;\n}\n\n.ntbl-resize-indicator {\n\tposition: absolute;\n\tdisplay: none;\n\tz-index: 12;\n\tpadding: 3px 7px;\n\tborder-radius: 4px;\n\tbackground: var(--notectl-fg);\n\tcolor: var(--notectl-bg);\n\tfont: 12px/1.4 monospace;\n\tpointer-events: none;\n\twhite-space: nowrap;\n}\n\n.ntbl-resize-indicator--visible {\n\tdisplay: block;\n}\n\n.ntbl-container--resizing-column,\n.ntbl-container--resizing-column * {\n\tcursor: col-resize !important;\n\tuser-select: none !important;\n}\n\n.ntbl-container--resizing-row,\n.ntbl-container--resizing-row * {\n\tcursor: row-resize !important;\n\tuser-select: none !important;\n}\n\n.ntbl-handle:hover .ntbl-handle-delete,\n.ntbl-handle:focus-within .ntbl-handle-delete {\n\topacity: 1;\n\ttransform: scale(1);\n}\n\n.ntbl-handle-delete:hover,\n.ntbl-handle-delete:focus-visible {\n\tbackground: var(--notectl-danger-muted);\n\tcolor: var(--notectl-danger);\n}\n\n.ntbl-handle-delete:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n/* --- Insert Lines --- */\n.ntbl-insert-line {\n\tposition: absolute;\n\tpointer-events: none;\n\topacity: 0;\n\ttransition: opacity 0.15s ease;\n\tz-index: 6;\n}\n\n.ntbl-insert-line--visible {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-insert-line--horizontal {\n\theight: 2px;\n\tbackground: linear-gradient(\n\t\t90deg,\n\t\ttransparent,\n\t\tvar(--notectl-primary) 8%,\n\t\tvar(--notectl-primary) 92%,\n\t\ttransparent\n\t);\n\tbox-shadow: 0 0 6px var(--notectl-focus-ring);\n}\n\n.ntbl-insert-line--vertical {\n\twidth: 2px;\n\tbackground: linear-gradient(\n\t\t180deg,\n\t\ttransparent,\n\t\tvar(--notectl-primary) 8%,\n\t\tvar(--notectl-primary) 92%,\n\t\ttransparent\n\t);\n\tbox-shadow: 0 0 6px var(--notectl-focus-ring);\n}\n\n/* --- Insert Button on Line --- */\n.ntbl-insert-btn {\n\tposition: absolute;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 50%;\n\tbackground: var(--notectl-surface-raised);\n\tborder: 2px solid var(--notectl-primary);\n\tcolor: var(--notectl-primary);\n\tcursor: pointer;\n\tpointer-events: all;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0;\n\tbox-shadow: 0 2px 8px var(--notectl-focus-ring);\n\ttransition: background 0.15s, color 0.15s,\n\t\ttransform 0.15s, box-shadow 0.15s;\n}\n\n.ntbl-insert-line--horizontal .ntbl-insert-btn {\n\tleft: 50%;\n\ttop: -9px;\n\ttransform: translateX(-50%);\n}\n\n.ntbl-insert-line--vertical .ntbl-insert-btn {\n\ttop: 50%;\n\tinset-inline-start: -9px;\n\ttransform: translateY(-50%);\n}\n\n.ntbl-insert-btn:hover,\n.ntbl-insert-btn:focus-visible {\n\tbackground: var(--notectl-primary);\n\tcolor: var(--notectl-primary-fg);\n\tbox-shadow: 0 2px 12px var(--notectl-focus-ring);\n}\n\n.ntbl-insert-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-insert-line--horizontal .ntbl-insert-btn:hover {\n\ttransform: translateX(-50%) scale(1.2);\n}\n\n.ntbl-insert-line--vertical .ntbl-insert-btn:hover {\n\ttransform: translateY(-50%) scale(1.2);\n}\n\n/* --- Add Row / Add Column Zones --- */\n.ntbl-add-zone {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\tuser-select: none;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.2s ease,\n\t\tborder-color 0.2s ease;\n}\n\n.ntbl-container:hover .ntbl-add-zone,\n.ntbl-container:focus-within .ntbl-add-zone {\n\topacity: 1;\n}\n\n.ntbl-container.notectl-table--selected .ntbl-add-zone {\n\topacity: 1;\n}\n\n.ntbl-delete-table-btn {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 0;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid var(--notectl-danger);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-surface-raised);\n\tcolor: var(--notectl-danger);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.15s, border-color 0.15s;\n\tz-index: 7;\n}\n\n.ntbl-container:hover .ntbl-delete-table-btn,\n.ntbl-container:focus-within .ntbl-delete-table-btn,\n.ntbl-container.notectl-table--selected .ntbl-delete-table-btn {\n\topacity: 1;\n}\n\n.ntbl-delete-table-btn:hover,\n.ntbl-delete-table-btn:focus-visible {\n\tbackground: var(--notectl-danger-muted);\n\tborder-color: var(--notectl-danger);\n}\n\n.ntbl-delete-table-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n/* --- Context Menu Discovery Hint --- */\n.ntbl-context-hint {\n\tposition: absolute;\n\ttop: 4px;\n\tinset-inline-end: 0;\n\tfont-size: 11px;\n\tcolor: var(--notectl-fg-muted);\n\tpadding: 2px 8px;\n\tborder-radius: 4px;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tpointer-events: none;\n\twhite-space: nowrap;\n\tz-index: 5;\n}\n\n.ntbl-container:hover .ntbl-context-hint,\n.ntbl-container:focus-within .ntbl-context-hint,\n.ntbl-container.notectl-table--selected .ntbl-context-hint {\n\topacity: 1;\n}\n\n/* --- Table Actions Button --- */\n.ntbl-actions-btn {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 48px;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-surface-raised);\n\tcolor: var(--notectl-fg-muted);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.15s, border-color 0.15s;\n\tz-index: 7;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n.ntbl-container:hover .ntbl-actions-btn,\n.ntbl-container:focus-within .ntbl-actions-btn,\n.ntbl-container.notectl-table--selected .ntbl-actions-btn {\n\topacity: 1;\n}\n\n.ntbl-actions-btn:hover,\n.ntbl-actions-btn:focus-visible {\n\tbackground: var(--notectl-hover-bg);\n\tborder-color: var(--notectl-primary);\n}\n\n.ntbl-actions-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n/* --- Border Color Button --- */\n.ntbl-border-color-btn {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 24px;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-surface-raised);\n\tcolor: var(--notectl-fg-muted);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.15s, border-color 0.15s;\n\tz-index: 7;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n.ntbl-container:hover .ntbl-border-color-btn,\n.ntbl-container:focus-within .ntbl-border-color-btn,\n.ntbl-container.notectl-table--selected .ntbl-border-color-btn {\n\topacity: 1;\n}\n\n.ntbl-border-color-btn:hover,\n.ntbl-border-color-btn:focus-visible {\n\tbackground: var(--notectl-hover-bg);\n\tborder-color: var(--notectl-primary);\n}\n\n.ntbl-border-color-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-border-color-swatch {\n\twidth: 10px;\n\theight: 10px;\n\tborder-radius: 2px;\n\tborder: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n/* --- Context Menu Keyboard Hint --- */\n.notectl-table-context-menu__hint {\n\tpadding: 4px 12px 6px;\n\tfont-size: 11px;\n\tcolor: var(--notectl-fg-muted);\n\tborder-top: 1px solid var(--notectl-border);\n\tmargin-top: 4px;\n\ttext-align: center;\n\tuser-select: none;\n}\n\n/* --- Context Menu Focus --- */\n.notectl-table-context-menu button:focus-visible {\n\toutline: none;\n\tbackground: var(--notectl-primary-muted);\n\tbox-shadow: inset 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.notectl-table-context-menu [role="separator"] {\n\tborder: none;\n\tborder-top: 1px solid var(--notectl-border);\n\tmargin: 4px 0;\n\theight: 0;\n}\n\n/* --- Precise size editor --- */\n.notectl-table-size-editor {\n\tbox-sizing: border-box;\n\twidth: 340px;\n\tmax-width: calc(100vw - 16px);\n\tmin-width: 260px;\n\tpadding: 12px;\n}\n\n.notectl-table-size-editor__title {\n\tmargin-block-end: 10px;\n\tfont-weight: 600;\n}\n\n.notectl-table-size-editor__field {\n\tdisplay: grid;\n\tgap: 4px;\n\tmargin-block-end: 10px;\n\tfont-size: 13px;\n}\n\n.notectl-table-size-editor__input-wrap {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n\n.notectl-table-size-editor input {\n\tbox-sizing: border-box;\n\tmin-width: 0;\n\twidth: 100%;\n\tpadding: 6px 8px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-bg);\n\tcolor: var(--notectl-fg);\n\tfont: inherit;\n}\n\n.notectl-table-size-editor input:focus-visible {\n\toutline: 2px solid var(--notectl-focus-ring);\n\toutline-offset: 1px;\n}\n\n.notectl-table-size-editor input[aria-invalid="true"] {\n\tborder-color: var(--notectl-danger);\n}\n\n.notectl-table-size-editor__unit {\n\tcolor: var(--notectl-fg-muted);\n}\n\n.notectl-table-size-editor__error {\n\tmin-height: 1.2em;\n\tcolor: var(--notectl-danger);\n\tfont-size: 11px;\n}\n\n.notectl-table-size-editor__resets,\n.notectl-table-size-editor__actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 4px;\n}\n\n.notectl-table-size-editor__resets {\n\tpadding-block-end: 10px;\n\tborder-block-end: 1px solid var(--notectl-border);\n}\n\n.notectl-table-size-editor__actions {\n\tjustify-content: flex-end;\n\tpadding-block-start: 10px;\n}\n\n.notectl-table-size-editor button {\n\twidth: auto;\n\tpadding: 6px 8px;\n\tborder-radius: 4px;\n\tfont-size: 12px;\n}\n\n.notectl-table-context-menu .notectl-table-size-editor__apply {\n\tbackground: var(--notectl-primary);\n\tcolor: var(--notectl-primary-fg);\n}\n\n.notectl-table-context-menu .notectl-table-size-editor button:disabled {\n\topacity: 0.5;\n\tcursor: not-allowed;\n}\n\n/* Read-only tables keep semantic dimensions but expose no mutation affordances. */\n.ntbl-container[data-notectl-table-readonly] {\n\tpadding-block-start: 0;\n\tpadding-inline-start: 0;\n}\n\n.ntbl-container[data-notectl-table-readonly] > :is(\n\t.ntbl-col-bar,\n\t.ntbl-row-bar,\n\t.ntbl-col-resize-bar,\n\t.ntbl-row-resize-bar,\n\t.ntbl-insert-line,\n\t.ntbl-add-zone,\n\t.ntbl-delete-table-btn,\n\t.ntbl-border-color-btn,\n\t.ntbl-actions-btn,\n\t.ntbl-context-hint,\n\t.ntbl-resize-indicator\n) {\n\tdisplay: none !important;\n}\n\n.ntbl-add-row {\n\tbottom: 0;\n\theight: 24px;\n\tborder: 1px dashed var(--notectl-border);\n\tborder-end-start-radius: 6px;\n\tborder-end-end-radius: 6px;\n\tborder-block-start: none;\n\tcolor: var(--notectl-fg-muted);\n\ttransform: translateY(100%);\n}\n\n.ntbl-add-row:hover,\n.ntbl-add-row:focus-visible {\n\tbackground: var(--notectl-primary-muted);\n\tborder-color: var(--notectl-primary);\n\tcolor: var(--notectl-primary);\n}\n\n.ntbl-add-row:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-add-col {\n\tinset-inline-end: 0;\n\ttop: 24px;\n\twidth: 24px;\n\tborder: 1px dashed var(--notectl-border);\n\tborder-start-end-radius: 6px;\n\tborder-end-end-radius: 6px;\n\tborder-inline-start: none;\n\tcolor: var(--notectl-fg-muted);\n\ttransform: translateX(100%);\n}\n\n[dir="rtl"] .ntbl-add-col {\n\ttransform: translateX(-100%);\n}\n\n.ntbl-add-col:hover,\n.ntbl-add-col:focus-visible {\n\tbackground: var(--notectl-primary-muted);\n\tborder-color: var(--notectl-primary);\n\tcolor: var(--notectl-primary);\n}\n\n.ntbl-add-col:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-add-icon {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttransition: transform 0.2s ease;\n}\n\n.ntbl-add-zone:hover .ntbl-add-icon {\n\ttransform: scale(1.15);\n}\n\n@media print {\n\t.notectl-table-wrapper {\n\t\toverflow: visible;\n\t}\n\n\t.ntbl-container {\n\t\tpadding: 0;\n\t}\n\n\t.ntbl-container > [data-notectl-no-print] {\n\t\tdisplay: none !important;\n\t}\n}\n'),this.context=t,this.registerNodeSpecs(t),this.registerNodeViews(t),Xt(t,this.locale),t.registerCommand("resetTableBorderColor",()=>at(t,this.locale)),function(t,e,n={}){t.registerKeymap({Tab:()=>function(t,e){return se(t,(n,o,r)=>!!de(t,r,1,!1)||!t.isReadOnly?.()&&Ft(t,e))}(t,e),"Shift-Tab":()=>function(t){return se(t,(e,n,o)=>de(t,o,-1,!1)||!0)}(t),Backspace:()=>function(t){return se(t,(e,n,o)=>{if(!h(n))return!1;if(0!==n.anchor.offset)return!1;if(!function(t,e){const n=t.getBlock(e.tableId);return"table"===n?.type&&V(n).cells[0]?.cell.id===e.cellId}(e,o))return!1;const r=Q(e,o.cellId);return n.anchor.blockId===r&&he(t,o.tableId)})}(t),Delete:()=>function(t){return se(t,(e,n,o)=>{if(!h(n))return!1;const r=e.getBlock(n.anchor.blockId);if(!r)return!1;const l=i(r);if(n.anchor.offset!==l)return!1;if(!function(t,e){const n=t.getBlock(e.tableId);if(!n||"table"!==n.type)return!1;const o=V(n).cells;return o[o.length-1]?.cell.id===e.cellId}(e,o))return!1;const s=tt(e,o.cellId);return n.anchor.blockId===s&&he(t,o.tableId)})}(t),ArrowDown:()=>function(t){return se(t,(e,n,o)=>{const r=tt(e,o.cellId);return n.anchor.blockId===r&&(o.rowEnd>=o.totalRows?ae(t):ue(t,o.tableId,o.rowEnd,o.colIndex))})}(t),ArrowUp:()=>function(t){return se(t,(e,n,o)=>{const r=Q(e,o.cellId);return n.anchor.blockId===r&&!(o.rowIndex<=0)&&ue(t,o.tableId,o.rowIndex-1,o.colIndex)})}(t),ArrowRight:()=>function(t){return se(t,(e,n,o)=>{if(!h(n))return!1;const r=e.getBlock(n.anchor.blockId);if(!r)return!1;const l=i(r);if(n.anchor.offset!==l)return!1;const s=tt(e,o.cellId);return n.anchor.blockId===s&&(de(t,o,1,!1)||!0)})}(t),ArrowLeft:()=>function(t){return se(t,(e,n,o)=>{if(!h(n))return!1;if(0!==n.anchor.offset)return!1;const r=Q(e,o.cellId);return n.anchor.blockId===r&&(de(t,o,-1,!0)||!0)})}(t),Escape:()=>ae(t),"Shift-F10":()=>function(t,e,n){return!t.isReadOnly?.()&&se(t,(o,r,i)=>{const l=t.getContainer(),s=l.querySelector(`[data-block-id="${i.cellId}"]`);if(!s)return!1;const a=s.getBoundingClientRect(),c=new DOMRect(a.left+a.width/2,a.bottom,0,0),d=l.querySelector(`[data-block-id="${i.tableId}"].ntbl-container`)??l;le.get(t)?.close();const u=W(l)??s,h=ie(d,t,i.tableId,c,()=>{le.delete(t)},e,void 0,{sizeTarget:ce(t,i),sizingConfig:n,restoreFocusTo:u});return le.set(t,h),!0})}(t,e,n)},{priority:"context"})}(t,this.locale,this.config),this.registerToolbarItem(t),this.selectionService=function(t){let e=null,n=null,o=[],r=/* @__PURE__ */new Set;function i(){const t=l();if(!t)return o=[],void(r=/* @__PURE__ */new Set);const{grid:e,range:n}=t,i=e.cellsInRange({fromRow:n.fromRow,fromColumn:n.fromCol,toRow:n.toRow,toColumn:n.toCol}).map(t=>t.cell.id);o=i,r=new Set(i)}function l(){if(!e||!n)return null;const o=t.getState().getBlock(e.tableId);if(!o||"table"!==o.type)return s(),null;const r=V(o);return mt(r)!==n?(s(),null):{range:e,grid:r}}function s(){e=null,n=null,o=[],r=/* @__PURE__ */new Set}const a={getSelectedRange:()=>l()?.range??null,setSelectedRange(o){const r=t.getState();let l=null;if(o){const r=t.getState().getBlock(o.tableId),i="table"===r?.type?V(r):null,a=[o.fromRow,o.fromCol,o.toRow,o.toCol],c=i&&a.every(Number.isInteger)&&o.fromRow>=0&&o.toRow>=0&&o.fromCol>=0&&o.toCol>=0&&o.fromRow<i.rowCount&&o.toRow<i.rowCount&&o.fromCol<i.columnCount&&o.toCol<i.columnCount&&i?F(i,{fromRow:o.fromRow,fromColumn:o.fromCol,toRow:o.toRow,toColumn:o.toCol}):null;i&&c?(e={tableId:o.tableId,fromRow:c.fromRow,fromCol:c.fromColumn,toRow:c.toRow,toCol:c.toColumn},n=mt(i),l=i.cellAt(c.fromRow,c.fromColumn)?.cell.id??null):s()}else s();i();const a=p(r.selection)?G(r,r.selection.anchor.blockId):null,c=l&&a?.tableId!==o?.tableId?m(Q(r,l),0):r.selection;t.dispatch(r.transaction("api").setSelection(c).build())},clearSelectionSilent(){s()},getSelectedCellIds:()=>(i(),o),isSelected:t=>(i(),r.has(t))};return t.registerService(bt,a),a}(t),function(t,e={}){const n=wt(e),o={getSelectionSize(){const e=St(t);return e?kt(e):null},setSelectionSize(e){if(t.isReadOnly())return!1;const o=St(t);return!!o&&At(t,o,e,n)},resetSelectionSize(e){if(t.isReadOnly())return!1;const o=St(t);return!!o&&Et(t,o,e,n)},getSize(e){const n=Rt(t.getState(),e);return n?kt(n):null},setSize(e,o){if(t.isReadOnly())return!1;const r=Rt(t.getState(),e);return!!r&&At(t,r,o,n)},resetSize(e,o){if(t.isReadOnly())return!1;const r=Rt(t.getState(),e);return!!r&&Et(t,r,o,n)}};t.registerService(gt,o)}(t,this.config)}onReady(){this.context&&this.selectionService&&(this.cleanupMouseSelection=function(t,e){const n=t.getContainer();let o=null,r=!1;function i(i){if(0!==i.button||t.isReadOnly?.())return;if(!y(i,n))return;const l=i.target.closest("td[data-block-id]");if(!l)return o=null,r=!1,void e.setSelectedRange(null);if(i.shiftKey){if(o){const n=G(t.getState(),l.getAttribute("data-block-id"));if(!n||n.tableId!==o.tableId)return o=null,void e.setSelectedRange(null);i.preventDefault(),e.setSelectedRange(pt(o,n))}}else{e.setSelectedRange(null);const n=G(t.getState(),l.getAttribute("data-block-id"));if(!n)return o=null,void(r=!1);o={tableId:n.tableId,cellId:n.cellId,rowStart:n.rowIndex,rowEnd:n.rowEnd,colStart:n.colIndex,colEnd:n.colEnd},r=!0}}function l(n){if(t.isReadOnly?.()||!r||!o)return;const i=n.target.closest("td[data-block-id]");if(!i)return;const l=G(t.getState(),i.getAttribute("data-block-id"));l&&l.tableId===o.tableId&&l.cellId!==o.cellId&&(n.preventDefault(),e.setSelectedRange(pt(o,l)))}function s(){r=!1}return n.addEventListener("mousedown",i),n.addEventListener("mousemove",l),document.addEventListener("mouseup",s),()=>{n.removeEventListener("mousedown",i),n.removeEventListener("mousemove",l),document.removeEventListener("mouseup",s)}}(this.context,this.selectionService),this.cleanupClipboard=function(t,e){const n=t.getContainer(),o=o=>{y(o,n)&&ut(o,t,e)},i=o=>{y(o,n)&&(t.isReadOnly?.()||ut(o,t,e)&&function(t,e){const n=e.getSelectedRange();if(!n)return;const o=t.getState(),i=o.getBlock(n.tableId);if(!i||"table"!==i.type)return;const a=V(i).cellsInRange({fromRow:n.fromRow,fromColumn:n.fromCol,toRow:n.toRow,toColumn:n.toCol});if(0===a.length)return;const d=o.transaction("input");let u=null;for(const h of a){const t=o.getNodePath(h.cell.id);if(!t)return;for(let o=s(h.cell).length-1;o>=0;o--)d.removeNode(t,o);const e=r(),n=l(f("paragraph"),[c("")],e);d.insertNode(t,0,n),u??=e}u&&(d.setSelection(m(u,0)),t.dispatch(d.build()),e.clearSelectionSilent())}(t,e))};return n.addEventListener("copy",o,!0),n.addEventListener("cut",i,!0),()=>{n.removeEventListener("copy",o,!0),n.removeEventListener("cut",i,!0)}}(this.context,this.selectionService))}destroy(){this.context&&re(this.context),this.cleanupMouseSelection?.(),this.cleanupMouseSelection=null,this.cleanupClipboard?.(),this.cleanupClipboard=null,this.selectionService=null,this.controls.clear(),this.context=null}onReadOnlyChange(t){for(const e of this.controls)e.setReadOnly(t);t&&this.context&&re(this.context)}decorations(t){if(!this.selectionService)return w.empty;if(!this.selectionService.getSelectedRange())return w.empty;const e=t.selection;if(!p(e)||!et(t,e.anchor.blockId))return this.selectionService.clearSelectionSilent(),w.empty;const n=this.selectionService.getSelectedCellIds();if(0===n.length)return w.empty;const o=[];for(const r of n)o.push(g(r,{class:"notectl-table-cell--selected"}));return w.create(o)}registerNodeSpecs(e){const n=this.config;e.registerNodeSpec({type:"table",attrs:{columnWidthsPx:{allowArray:!0}},group:"block",content:{allow:["table_row"],min:1},isolating:!0,selectable:!0,normalizeAttrs:t=>function(t,e){const n=De(t.attrs,["borderColor","columnWidthsPx"]),o=t.attrs?.borderColor;("none"===o||"string"==typeof o&&O(o))&&(n.borderColor=o);const r=V(t),i=t.attrs?.columnWidthsPx;if(Array.isArray(i)&&r.columnCount>0){const t=Array.from({length:r.columnCount},(t,n)=>{const o=S(i[n]);return void 0===o?null:Math.min(e.maxColumnWidthPx,Math.max(e.minColumnWidthPx,o))});t.some(t=>null!==t)&&(n.columnWidthsPx=Object.freeze(t))}return Object.keys(n).length>0?n:void 0}(t,this.config),normalizeNode:Te,transformSelectionSlice:K,toDOM(t){const e=document.createElement("div");return e.className="notectl-table-wrapper",e.setAttribute("data-block-id",t.id),e.setAttribute("part","table"),e},toHTML(e,o,r){const i=e.attrs?.borderColor,l=xt(e,V(e).columnCount),s=function(e,n,o){const r=n.reduce((t,e)=>t+(e??o),0),i=`border-collapse: collapse; table-layout: fixed; ${n.length>0&&n.every(t=>null!==t)?`width: ${String(r)}px`:"width: 100%"}; min-width: ${String(r)}px`;return e?"none"===e?`${i}; --ntbl-bc: transparent`:O(e)?`${i}; --ntbl-bc: ${t(e)}`:i:i}(i,l,n.minColumnWidthPx);return`<table${r?.styleAttr(s)??` style="${s}"`}><colgroup>${l.map(t=>null===t?"<col>":`<col${I(k,"width",t,r)}>`).join("")}</colgroup><tbody>${o}</tbody></table>`},sanitize:{tags:["table","colgroup","col","thead","tbody","tfoot"],attrs:[k,"width","span"]}}),e.registerNodeSpec({type:"table_row",group:"table_content",content:{allow:["table_cell"],min:0},normalizeAttrs:t=>function(t,e){const n=De(t.attrs,["minHeightPx"]),o=S(t.attrs?.minHeightPx);return void 0!==o&&(n.minHeightPx=Math.min(e.maxRowHeightPx,Math.max(e.minRowHeightPx,o))),Object.keys(n).length>0?n:void 0}(t,this.config),toDOM(t){const e=document.createElement("tr");return e.setAttribute("data-block-id",t.id),e.setAttribute("role","row"),e.setAttribute("part","table-row"),e},toHTML:(t,e,n)=>`<tr${I(A,"height",t.attrs?.minHeightPx,n)}>${e}</tr>`,sanitize:{tags:["tr"],attrs:[A,"height"]}}),e.registerNodeSpec({type:"table_cell",group:"table_content",content:{allow:["paragraph","list_item","heading","blockquote","image","video","horizontal_rule"],min:1},isolating:!0,normalizeAttrs:$e,toDOM(t){const e=document.createElement("td");return e.setAttribute("data-block-id",t.id),e.setAttribute("role","cell"),e.setAttribute("part","table-cell"),e},toHTML(t,e,n){const o=t.attrs?.colspan??1,r=t.attrs?.rowspan??1,i=[n?.styleAttr(Be)??` style="${Be}"`];return o>1&&i.push(` colspan="${o}"`),r>1&&i.push(` rowspan="${r}"`),`<td${i.join("")}>${e}</td>`},sanitize:{tags:["td","th"],attrs:["colspan","rowspan"]}})}registerNodeViews(t){t.getSchemaRegistry(),t.registerNodeView("table",function(t,e,n=nt,o=ze,r={}){return(t,i,l)=>{let c=t;const d=document.createElement("div");d.className="ntbl-container",d.setAttribute("data-block-id",t.id),d.setAttribute("data-selectable","true");const u=document.createElement("div");u.className="notectl-table-wrapper",u.setAttribute("part","table");const h=document.createElement("table");h.className="notectl-table",h.setAttribute("role","table");const b=document.createElement("colgroup");b.className="notectl-table-columns",h.appendChild(b);const m=s(t).length,p=V(t).columnCount;h.setAttribute("aria-label",n.tableAriaLabel(m,p)),h.setAttribute("aria-description",n.tableAriaDescription);const f=document.createElement("tbody");h.appendChild(f),u.appendChild(h),d.appendChild(u),Ie(h,t.attrs?.borderColor),ke(h,b,t,o);const g=document.createElement("div");g.className="notectl-sr-only",g.setAttribute("aria-live","polite"),g.setAttribute("aria-atomic","true"),d.appendChild(g);const w=function(t,e,n,o,r,i,l,s){return new Re(t,e,n,o,r,i,l,s)}(d,h,t,i,l,e,n,o);w.setReadOnly(e?.isReadOnly?.()??!1),r.onControlsCreated?.(w);let x=!1;const v=requestAnimationFrame(()=>{x||(Ie(h,c.attrs?.borderColor),ke(h,b,c,o),Ee(f,c))});let C=null,y=t.id;const S=t=>{if(!e||e.isReadOnly?.())return;t.preventDefault(),t.stopPropagation(),C?.close();const r=new DOMRect(t.clientX,t.clientY,0,0),i=t.target?.closest("td[data-block-id]"),l=i?.getAttribute("data-block-id"),s=l?G(e.getState(),l):null,a=!!l&&(e.getService?.(bt)?.isSelected(l)??!1),c=W(d)??(i instanceof HTMLElement?i:null);C=ie(d,e,y,r,()=>{C=null},n,void 0,{sizeTarget:s&&!a?{kind:"cell",tableId:s.tableId,row:s.rowIndex,column:s.colIndex}:void 0,sizingConfig:o,restoreFocusTo:c})};return h.addEventListener("contextmenu",S),{dom:d,contentDOM:f,update(t){if("table"!==t.type)return!1;if(!function(t,e){if(t.id!==e.id||t.htmlId!==e.htmlId)return!1;if(!a(Pe(t.attrs),Pe(e.attrs)))return!1;const n=s(t),o=s(e);return n.length===o.length&&n.every((t,e)=>{const n=o[e];return void 0!==n&&t.id===n.id&&t.htmlId===n.htmlId&&t.children===n.children&&a(Me(t.attrs),Me(n.attrs))})}(c,t))return!1;y=t.id,d.setAttribute("data-block-id",t.id),d.setAttribute("data-selectable","true");const e=s(t).length,r=V(t).columnCount;return h.setAttribute("aria-label",n.tableAriaLabel(e,r)),Ie(h,t.attrs?.borderColor),ke(h,b,t,o),Ee(f,t),w.update(t),c=t,!0},destroy(){x=!0,cancelAnimationFrame(v),C?.destroy(),h.removeEventListener("contextmenu",S),r.onControlsDestroyed?.(w),w.destroy()},selectNode(){d.classList.add("notectl-table--selected")},deselectNode(){d.classList.remove("notectl-table--selected")}}}}(0,t,this.locale,this.config,{onControlsCreated:t=>{this.controls.add(t)},onControlsDestroyed:t=>{this.controls.delete(t)}})),t.registerNodeView("table_row",(t,e,n)=>{let o=t;const r=document.createElement("tr");r.setAttribute("data-block-id",t.id),r.setAttribute("role","row"),r.setAttribute("part","table-row"),Ae(r,t);let i=!1;const l=requestAnimationFrame(()=>{i||Ae(r,o)});return{dom:r,contentDOM:r,update:t=>"table_row"===t.type&&t.children===o.children&&(r.setAttribute("data-block-id",t.id),Ae(r,t),o=t,!0),destroy(){i=!0,cancelAnimationFrame(l)}}}),t.registerNodeView("table_cell",(t,e,n)=>{const o=document.createElement("td");o.setAttribute("data-block-id",t.id),o.setAttribute("role","cell"),o.setAttribute("part","table-cell");const r=t.attrs?.colspan??1,i=t.attrs?.rowspan??1;r>1&&(o.colSpan=r),i>1&&(o.rowSpan=i);const l=t.attrs?.align;return l&&"left"!==l&&P(o,"textAlign",l),{dom:o,contentDOM:o,update(t){if("table_cell"!==t.type)return!1;o.setAttribute("data-block-id",t.id);const e=t.attrs?.colspan??1,n=t.attrs?.rowspan??1;return e>1?o.colSpan=e:o.removeAttribute("colspan"),n>1?o.rowSpan=n:o.removeAttribute("rowspan"),!1},destroy(){}}})}registerToolbarItem(t){const e=this.config.maxPickerRows??8,n=this.config.maxPickerCols??8;t.registerToolbarItem({id:"table",group:"insert",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 3h18v18H3V3zm2 2v4h6V5H5zm8 0v4h6V5h-6zm-8 6v4h6v-4H5zm8 0v4h6v-4h-6zm-8 6v4h6v-4H5zm8 0v4h6v-4h-6z"/></svg>',label:this.locale.insertTable,tooltip:this.locale.insertTable,command:"insertTable",popupType:"gridPicker",popupConfig:{maxRows:e,maxCols:n,onSelect:(e,n)=>{jt(t,e,n)}},isActive:t=>!!p(t.selection)&&et(t,t.selection.anchor.blockId)})}};function Ne(t,e){return"number"==typeof t&&Number.isInteger(t)&&t>0?Math.min(t,100):e}function $e(t){const e=De(t.attrs,["colspan","rowspan"]),n=q(t.attrs?.colspan),o=q(t.attrs?.rowspan);return n>1&&(e.colspan=n),o>1&&(e.rowspan=o),Object.keys(e).length>0?e:void 0}function Te(t){const e=s(t);let n=!1;const o=e.map((t,o)=>{let r=!1;const i=s(t).map(t=>{const n=q(t.attrs?.rowspan),i=Math.min(n,e.length-o);if(i===n)return t;r=!0;const{rowspan:l,...s}=t.attrs??{},a={...s,...i>1?{rowspan:i}:{}},{attrs:c,...d}=t;return Object.keys(a).length>0?{...d,attrs:a}:d});return r?(n=!0,{...t,children:i}):t});return n?{...t,children:o}:t}function De(t,e){const n={};for(const[o,r]of Object.entries(t??{})){if(e.includes(o))continue;const t=We(r);void 0!==t&&(n[o]=t)}return n}function We(t){if("string"==typeof t||"boolean"==typeof t)return t;if("number"==typeof t)return Number.isFinite(t)?t:void 0;if(!Array.isArray(t))return;const e=[];for(const n of t)if(null===n||"string"==typeof n||"boolean"==typeof n)e.push(n);else{if("number"!=typeof n||!Number.isFinite(n))return;e.push(n)}return Object.freeze(e)}export{nt as a,bt as i,ft as n,rt as o,gt as r,He as t};
2
- //# sourceMappingURL=TablePlugin-PJe3zwr-.mjs.map
1
+ import{r as t}from"./HTMLUtils-Bhg3_P8B.mjs";import{E as e,_ as n,c as o,f as r,h as i,o as l,p as s,r as a,u as c}from"./Document-827l3P80.mjs";import{c as d,l as u,o as h,r as b,t as m,u as p}from"./Selection-HYoVFpAx.mjs";import{a as f}from"./TypeBrands-Ch9856Gb.mjs";import{_ as g,s as w}from"./BlockInsertion-CYH2gRkY.mjs";import{a as x,d as v,h as C,l as y,n as S,r as R,u as z}from"./TableDimensions-BBhjHNjQ.mjs";import{i as I,t as k}from"./Decoration-BOP1TAUd.mjs";import{n as A}from"./TypedKeys-CA4bfw9O.mjs";import{c as E,i as P,o as M}from"./PluginHelpers-KDuTlmXm.mjs";import{t as L}from"./EditorEventBoundary-zpYRxryo.mjs";import{c as B,o as H,s as N}from"./StyleRuntime-DW6omotc.mjs";import{i as $}from"./Platform-ByobkiCc.mjs";import{t as T}from"./KeyboardNav-D0my3wuy.mjs";import{i as D,n as W}from"./PopupPositioning-BFh6Ed1D.mjs";import{i as O}from"./ColorValidation-DAijTjG9.mjs";import{n as _,t as j}from"./ColorGrid-DQEkJ-0y.mjs";function F(t,e){if(0===t.rowCount||0===t.columnCount)return null;let n={fromRow:X(Math.min(e.fromRow,e.toRow),t.rowCount),fromColumn:X(Math.min(e.fromColumn,e.toColumn),t.columnCount),toRow:X(Math.max(e.fromRow,e.toRow),t.rowCount),toColumn:X(Math.max(e.fromColumn,e.toColumn),t.columnCount)};for(;;){let e=n.fromRow,o=n.fromColumn,r=n.toRow,i=n.toColumn;for(const l of t.cellsInRange(n))e=Math.min(e,l.rowStart),o=Math.min(o,l.columnStart),r=Math.max(r,l.rowEnd-1),i=Math.max(i,l.columnEnd-1);if(e===n.fromRow&&o===n.fromColumn&&r===n.toRow&&i===n.toColumn)return n;n={fromRow:e,fromColumn:o,toRow:r,toColumn:i}}}function V(t,e=1e3){return"number"==typeof t&&Number.isFinite(t)&&Number.isInteger(t)?t<=1?1:Math.min(t,e):1}function q(t){const e="table"===t.type?s(t).filter(t=>"table_row"===t.type):[],n=Array.from({length:e.length},()=>[]),o=[],r=/* @__PURE__ */new Map;let i=0;for(let l=0;l<e.length;l++){const t=e[l];if(!t)continue;const a=s(t).filter(t=>"table_cell"===t.type);let c=0;for(let s=0;s<a.length;s++){const d=a[s];if(!d)continue;const u=V(d.attrs?.colspan),h=V(d.attrs?.rowspan),b=Math.min(h,e.length-l),m=Y(n[l]??[],c,u);if(void 0===m)continue;c=m;const p=Math.min(u,1e3-c),f={cell:d,sourceRow:t,sourceRowIndex:l,sourceCellIndex:s,rowStart:l,rowEnd:l+b,columnStart:c,columnEnd:c+p,rowSpan:b,columnSpan:p};o.push(f),r.set(d.id,f);for(let t=f.rowStart;t<f.rowEnd;t++){const e=n[t];if(e)for(let t=f.columnStart;t<f.columnEnd;t++)e[t]??=f}c=f.columnEnd,i=Math.max(i,f.columnEnd)}}return{table:t,rows:e,rowCount:e.length,columnCount:i,cells:o,cellAt(t,e){if(!(!Number.isInteger(t)||!Number.isInteger(e)||t<0||e<0))return n[t]?.[e]},cellById:t=>r.get(t),cellsInRange(t){const n=Math.max(0,Math.min(t.fromRow,t.toRow)),r=Math.min(e.length-1,Math.max(t.fromRow,t.toRow)),l=Math.max(0,Math.min(t.fromColumn,t.toColumn)),s=Math.min(i-1,Math.max(t.fromColumn,t.toColumn));return r<n||s<l?[]:o.filter(t=>t.rowStart<=r&&t.rowEnd>n&&t.columnStart<=s&&t.columnEnd>l)}}}function K(t,e){const n=/* @__PURE__ */new Set,o=/* @__PURE__ */new Set;for(const b of s(e)){o.add(b.id);for(const t of s(b))n.add(t.id)}const r=q(t),i=r.cells.filter(t=>n.has(t.cell.id));if(0===i.length)return Z(e);const l=Math.min(...i.map(t=>t.columnStart)),a=Math.max(...i.map(t=>t.columnEnd))-1,c=r.rows.map((t,e)=>o.has(t.id)?e:-1).filter(t=>t>=0);if(0===c.length)return Z(e);const d=function(t,e,n,o,r,i){let l=!1;const a=s(t).map(t=>{let a=!1;const c=s(t).map(t=>{const l=e.cellById(t.id);if(!l)return t;const s=Math.min(l.rowEnd,o+1)-Math.max(l.rowStart,n),c=Math.min(l.columnEnd,i+1)-Math.max(l.columnStart,r),d=V(t.attrs?.rowspan),u=V(t.attrs?.colspan);if(s===d&&c===u)return t;a=!0;const{colspan:h,rowspan:b,...m}=t.attrs??{},p={...m,...c>1?{colspan:c}:{},...s>1?{rowspan:s}:{}},{attrs:f,...g}=t;return Object.keys(p).length>0?{...g,attrs:p}:g});return a?(l=!0,{...t,children:c}):t});return l?{...t,children:a}:t}(e,r,Math.min(...c),Math.max(...c),l,a);for(const s of c){const t=/* @__PURE__ */new Set;for(const e of i)if(!(e.rowStart>s||e.rowEnd<=s))for(let n=e.columnStart;n<e.columnEnd;n++)t.add(n);for(let e=l;e<=a;e++)if(!t.has(e))return Z(d)}const u=t.attrs?.columnWidthsPx;if(!Array.isArray(u))return d;const h=[];for(let s=l;s<=a;s++){const t=u[s];h.push("number"==typeof t&&Number.isFinite(t)?t:null)}return h.some(t=>null!==t)?{...d,attrs:{...d.attrs??{},columnWidthsPx:Object.freeze(h)}}:Z(d)}function Z(t){if(!t.attrs||!Object.hasOwn(t.attrs,"columnWidthsPx"))return t;const{columnWidthsPx:e,...n}=t.attrs,{attrs:o,...r}=t;return{...r,...Object.keys(n).length>0?{attrs:n}:{}}}function Y(t,e,n){let o=Math.max(0,e);for(;o+n<=1e3;){let e=!0;for(let r=0;r<n;r++)if(t[o+r]){e=!1,o+=r+1;break}if(e)return o}}function X(t,e){return Number.isFinite(t)?Math.min(e-1,Math.max(0,Math.trunc(t))):0}function U(){const t=l(f("paragraph"),[c("")],r());return l(f("table_cell"),[t],r())}function G(t,e){const n=t.getNodePath(e);if(!n)return null;let o=null,r=null,i=null;for(const c of n){const e=t.getBlock(c);e&&("table"===e.type?(o=c,r=e):"table_cell"===e.type&&(i=c))}if("table_cell"===t.getBlock(e)?.type&&(i=e),!o||!r||!i)return null;const l=t.doc.children.findIndex(t=>t.id===o),s=q(r),a=s.cellById(i);return a?{tableId:o,tableIndex:l,rowId:a.sourceRow.id,rowIndex:a.rowStart,rowEnd:a.rowEnd,cellId:i,colIndex:a.columnStart,colEnd:a.columnEnd,rowspan:a.rowSpan,colspan:a.columnSpan,totalRows:s.rowCount,totalCols:s.columnCount}:null}function J(t,e,n,o){const r=t.getBlock(e);return r&&"table"===r.type?q(r).cellAt(n,o)?.cell.id??null:null}function Q(t,e){const n=t.getBlock(e);if(!n)return e;const o=s(n)[0];if(!o)return e;let r=o;for(;;){const t=s(r)[0];if(!t)return r.id;r=t}}function tt(t,e){const n=t.getBlock(e);if(!n)return e;const o=s(n),r=o[o.length-1];if(!r)return e;let i=r;for(;;){const t=s(i),e=t[t.length-1];if(!e)return i.id;i=e}}function et(t,e){const n=t.getNodePath(e);if(!n)return!1;for(const o of n)if("table"===t.getBlock(o)?.type)return!0;return!1}var nt={insertRowAbove:"Insert Row Above",insertRowBelow:"Insert Row Below",insertColumnLeft:"Insert Column Left",insertColumnRight:"Insert Column Right",deleteRow:"Delete Row",deleteColumn:"Delete Column",borderColorLabel:"Border Color...",deleteTable:"Delete Table",tableActions:"Table actions",menuKeyboardHint:"↑↓ Navigate · Enter Select · Esc Close",insertRow:"Insert row",insertColumn:"Insert column",addRow:"Add row",addColumn:"Add column",tableActionsHint:"Table actions (Right-click or Shift+F10)",contextMenuHint:"Right-click or Shift+F10 for table actions",borderColor:"Border color",sizeLabel:"Size...",sizeDialogLabel:"Table size",columnWidthLabel:"Column width (px)",rowMinimumHeightLabel:"Row minimum height (px)",automatic:"Automatic",mixed:"Mixed",apply:"Apply",cancel:"Cancel",resetColumnWidth:"Reset column width",resetRowMinimumHeight:"Reset row minimum height",resetAllSizes:"Reset all sizes",invalidDimensionRange:(t,e)=>`Enter a value from ${t} to ${e} px.`,selectRowLabel:t=>`Select row ${t+1}`,selectColumnLabel:t=>`Select column ${t+1}`,resizeColumnSeparatorLabel:t=>`Resize column ${t+1}`,resizeRowSeparatorLabel:t=>`Resize row ${t+1}`,resizeKeyboardHint:(t,e)=>`Arrow keys resize by ${t} px; hold Shift for ${e} px.`,announceColumnWidthSet:(t,e)=>`Column ${t+1} width set to ${e} px.`,announceRowMinimumHeightSet:(t,e)=>`Row ${t+1} minimum height set to ${e} px.`,announceColumnWidthReset:t=>`Column ${t+1} width reset to automatic.`,announceRowMinimumHeightReset:t=>`Row ${t+1} minimum height reset to automatic.`,announceTableSizesReset:"Table column widths and row minimum heights reset to automatic.",defaultColor:"Default",noBorders:"No borders",borderColorPicker:"Border color picker",announceBorderColorSet:t=>`Table border color set to ${t}`,announceBorderReset:"Table borders reset to default",borderSwatchLabel:t=>`Border ${t}`,announceRowInsertedAbove:"Row inserted above",announceRowInsertedBelow:"Row inserted below",announceColumnInserted:t=>`Column inserted ${t}`,announceRowDeleted:"Row deleted",announceColumnDeleted:"Column deleted",announceTableDeleted:"Table deleted",insertTable:"Insert Table",tableAriaLabel:(t,e)=>`Table with ${t} rows and ${e} columns`,tableAriaDescription:"Right-click or press Shift+F10 for table actions"},ot=/* #__PURE__ */Object.assign({"./locales/ar.ts":()=>import("./ar-Dg9PdDet.mjs"),"./locales/de.ts":()=>import("./de-DJ5EkXQo.mjs"),"./locales/es.ts":()=>import("./es-CEAJj7aB.mjs"),"./locales/fr.ts":()=>import("./fr-DhWQzZy3.mjs"),"./locales/hi.ts":()=>import("./hi-BsZzSMfL.mjs"),"./locales/pt.ts":()=>import("./pt-BuZ7acHF.mjs"),"./locales/ru.ts":()=>import("./ru-CsP6mLxp.mjs"),"./locales/zh.ts":()=>import("./zh-CiIyOm6U.mjs")});async function rt(t){return E(ot,t,nt)}var it=["#000000","#434343","#666666","#999999","#b7b7b7","#cccccc","#d9d9d9","#efefef","#980000","#cc0000","#e69138","#f1c232","#6aa84f","#45818e","#3c78d8","#3d85c6","#674ea7","#a64d79","#0b5394","#38761d"];function lt(t,e,n){const o=t.getBlock(e);if(!o||"table"!==o.type)return null;const r=t.getNodePath(e);if(!r)return null;if(void 0===n){const{borderColor:e,...n}=o.attrs??{},i=n;return t.transaction("command").setNodeAttr(r,i).setSelection(t.selection).build()}const i={...o.attrs,borderColor:n};return t.transaction("command").setNodeAttr(r,i).setSelection(t.selection).build()}function st(t,e,n=nt){const o=t.getState();if(!p(o.selection))return!1;const r=G(o,o.selection.anchor.blockId);if(!r)return!1;const i=lt(o,r.tableId,e);if(!i)return!1;t.dispatch(i);const l="none"===e?"none":_(e);return t.announce(n.announceBorderColorSet(l)),!0}function at(t,e=nt){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=lt(n,o.tableId,void 0);return!!r&&(t.dispatch(r),t.announce(e.announceBorderReset),!0)}function ct(t,e){const n=t.getBlock(e);if(n)return n.attrs?.borderColor}function dt(t,e,n,o,r=nt){t.classList.add("notectl-color-picker");const i=ct(e.getState(),n),l=document.createElement("button");l.type="button",l.className="notectl-color-picker__default",l.textContent=r.defaultColor,l.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation(),at(e,r),o()}),l.addEventListener("keydown",t=>{"Escape"===t.key&&(t.preventDefault(),o())}),t.appendChild(l);const s=document.createElement("button");s.type="button",s.className="notectl-color-picker__default",s.textContent=r.noBorders,s.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation(),st(e,"none",r),o()}),s.addEventListener("keydown",t=>{"Escape"===t.key&&(t.preventDefault(),o())}),t.appendChild(s),j(t,{colors:it,columns:5,ariaLabel:r.borderColorPicker,ariaLabelPrefix:"",activeColor:i??null,swatchLabel:r.borderSwatchLabel,titleAsName:!0,onSelect:t=>{st(e,t,r),o()},onClose:o})}function ut(t,e,n){const o=t.clipboardData,r=n.getSelectedRange();if(!o||!r)return!1;const i=e.getState().getBlock(r.tableId);if(!i||"table"!==i.type)return!1;const l=function(t,e){const n=q(t);if(0===n.rowCount||0===n.columnCount)return null;const o=F(n,e);if(!o)return null;const{fromRow:r,fromColumn:i,toRow:l,toColumn:s}=o,a=n.cellsInRange({fromRow:r,fromColumn:i,toRow:l,toColumn:s}),c=[],d=0===i&&s===n.columnCount-1;for(let y=r;y<=l;y++){const t=n.rows[y];if(!t)continue;const e=a.filter(t=>Math.max(t.rowStart,r)===y).sort((t,e)=>Math.max(t.columnStart,i)-Math.max(e.columnStart,i)).map(t=>{const e=Math.min(t.rowEnd,l+1)-Math.max(t.rowStart,r),n=Math.min(t.columnEnd,s+1)-Math.max(t.columnStart,i),{colspan:o,rowspan:a,...c}=t.cell.attrs??{},d={...c,...n>1?{colspan:n}:{},...e>1?{rowspan:e}:{}},{attrs:u,...h}=t.cell;return Object.keys(d).length>0?{...h,attrs:d}:h}),{htmlId:o,...u}=t;c.push({...d?t:u,children:e})}const{columnWidthsPx:u,...h}=t.attrs??{},b=t.attrs?.columnWidthsPx,m=[];if(Array.isArray(b))for(let y=i;y<=s;y++){const t=b[y];m.push("number"==typeof t&&Number.isFinite(t)?t:null)}const p={...h,...m.some(t=>null!==t)?{columnWidthsPx:Object.freeze(m)}:{}},f=d&&0===r&&l===n.rowCount-1,{attrs:g,...w}=t,{htmlId:x,...v}=w,C=f?w:v;return Object.keys(p).length>0?{...C,children:c,attrs:p}:{...C,children:c}}(i,{fromRow:r.fromRow,fromColumn:r.fromCol,toRow:r.toRow,toColumn:r.toCol});return!!l&&(t.preventDefault(),t.stopImmediatePropagation(),o.setData("text/html",C({children:[l]},e.getSchemaRegistry())),o.setData("text/plain",function(t){const e=q(t);return Array.from({length:e.rowCount},(t,n)=>Array.from({length:e.columnCount},(t,o)=>{const r=e.cellAt(n,o);return r&&r.rowStart===n&&r.columnStart===o?ht(r.cell):""}).join("\t")).join("\n")}(l)),!0)}function ht(t){return e(t)?n(t):s(t).map(ht).join("\n")}var bt=new A("tableSelection");function mt(t){return JSON.stringify({rows:t.rows.map(t=>t.id),cells:t.cells.map(t=>[t.cell.id,t.rowStart,t.rowEnd,t.columnStart,t.columnEnd])})}function pt(t,e){return{tableId:t.tableId,fromRow:Math.min(t.rowStart,e.rowIndex),fromCol:Math.min(t.colStart,e.colIndex),toRow:Math.max(t.rowEnd,e.rowEnd)-1,toCol:Math.max(t.colEnd,e.colEnd)-1}}var ft=Object.freeze({minColumnWidthPx:60,minRowHeightPx:24,maxColumnWidthPx:z,maxRowHeightPx:z,keyboardResizeStepPx:8,keyboardResizeLargeStepPx:32}),gt=new A("tableSizing");function wt(t){const e=Bt(t.minColumnWidthPx,ft.minColumnWidthPx),n=Bt(t.minRowHeightPx,ft.minRowHeightPx);return{minColumnWidthPx:e,minRowHeightPx:n,maxColumnWidthPx:Bt(t.maxColumnWidthPx,ft.maxColumnWidthPx,e),maxRowHeightPx:Bt(t.maxRowHeightPx,ft.maxRowHeightPx,n),keyboardResizeStepPx:Bt(t.keyboardResizeStepPx,ft.keyboardResizeStepPx),keyboardResizeLargeStepPx:Bt(t.keyboardResizeLargeStepPx,ft.keyboardResizeLargeStepPx)}}function xt(t,e){const n=Math.max(0,Math.trunc(e)),o=t.attrs?.columnWidthsPx,r=Array.isArray(o)?o:[];return Object.freeze(Array.from({length:n},(t,e)=>{const n=r[e];return null==n?null:Lt(n)}))}function vt(t,e){const n=Object.freeze(e.map(t=>null===t?null:Lt(t))),{columnWidthsPx:o,...r}=t??{};return n.some(t=>null!==t)?{...r,columnWidthsPx:n}:r}function Ct(t){return Lt(t.attrs?.minHeightPx)}function yt(t,e){const{minHeightPx:n,...o}=t??{};if(null===e)return o;const r=Lt(e);return null===r?o:{...o,minHeightPx:r}}function St(t){const e=t.getState(),n=t.getService(bt)?.getSelectedRange()??null;if(n)return zt(e,n.tableId,n,!0);if(!p(e.selection))return null;const o=G(e,e.selection.anchor.blockId);return o?zt(e,o.tableId,{tableId:o.tableId,fromRow:o.rowIndex,fromCol:o.colIndex,toRow:o.rowEnd-1,toCol:o.colEnd-1},!0):null}function Rt(t,e){const n=t.getBlock(e.tableId);if(!n||"table"!==n.type)return null;const o=q(n);switch(e.kind){case"cell":{if(!Ht(e.row,o.rowCount))return null;if(!Ht(e.column,o.columnCount))return null;const r=o.cellAt(e.row,e.column);return r?It(t,n,o,r.rowStart,r.rowEnd-1,r.columnStart,r.columnEnd-1):null}case"range":return zt(t,e.tableId,{tableId:e.tableId,fromRow:e.fromRow,fromCol:e.fromColumn,toRow:e.toRow,toCol:e.toColumn},!0);case"column":return Ht(e.column,o.columnCount)?{state:t,table:n,grid:o,columns:[e.column],rows:[]}:null;case"row":return Ht(e.row,o.rowCount)?{state:t,table:n,grid:o,columns:[],rows:[e.row]}:null}}function zt(t,e,n,o){const r=t.getBlock(e);if(!r||"table"!==r.type)return null;const i=q(r);if(0===i.rowCount||0===i.columnCount)return null;if(![n.fromRow,n.toRow,n.fromCol,n.toCol].every(Number.isInteger))return null;if(o&&(!Ht(n.fromRow,i.rowCount)||!Ht(n.toRow,i.rowCount)||!Ht(n.fromCol,i.columnCount)||!Ht(n.toCol,i.columnCount)))return null;const l=Nt(Math.min(n.fromRow,n.toRow),i.rowCount),s=Nt(Math.max(n.fromRow,n.toRow),i.rowCount),a=F(i,{fromRow:l,fromColumn:Nt(Math.min(n.fromCol,n.toCol),i.columnCount),toRow:s,toColumn:Nt(Math.max(n.fromCol,n.toCol),i.columnCount)});return a?It(t,r,i,a.fromRow,a.toRow,a.fromColumn,a.toColumn):null}function It(t,e,n,o,r,i,l){return{state:t,table:e,grid:n,rows:$t(o,r),columns:$t(i,l)}}function kt(t){const e=xt(t.table,t.grid.columnCount),n=t.columns.map(t=>e[t]??null),o=t.rows.map(e=>{const n=t.grid.rows[e];return n?Ct(n):null});return{columnWidthPx:Mt(n),rowMinHeightPx:Mt(o)}}function At(t,e,n,o){const r=Object.prototype.hasOwnProperty.call(n,"columnWidthPx"),i=Object.prototype.hasOwnProperty.call(n,"rowMinHeightPx");if(!r&&!i)return!1;if(r&&0===e.columns.length)return!1;if(i&&0===e.rows.length)return!1;const l=r?Pt(n.columnWidthPx,o.minColumnWidthPx,o.maxColumnWidthPx):null,s=i?Pt(n.rowMinHeightPx,o.minRowHeightPx,o.maxRowHeightPx):null;if(r&&!l||i&&!s)return!1;const a=e.state.transaction("command");let c=!1;if(l){const t=[...xt(e.table,e.grid.columnCount)];for(const n of e.columns)t[n]!==l.value&&(t[n]=l.value,c=!0);if(c){const n=e.state.getNodePath(e.table.id);if(!n)return!1;a.setNodeAttr(n,vt(e.table.attrs,t))}}if(s)for(const d of e.rows){const t=e.grid.rows[d];if(!t||Ct(t)===s.value)continue;const n=e.state.getNodePath(t.id);if(!n)return!1;a.setNodeAttr(n,yt(t.attrs,s.value)),c=!0}return!!c&&(a.setSelection(e.state.selection),t.dispatch(a.build()),!0)}function Et(t,e,n,o){return At(t,e,"columnWidthPx"===n?{columnWidthPx:"auto"}:"rowMinHeightPx"===n?{rowMinHeightPx:"auto"}:{...e.columns.length>0?{columnWidthPx:"auto"}:{},...e.rows.length>0?{rowMinHeightPx:"auto"}:{}},o)}function Pt(t,e,n){if("auto"===t)return{value:null};const o=v(t,e,n);return null===o?null:{value:o}}function Mt(t){if(0===t.length)return"unavailable";const e=t[0];return t.some(t=>t!==e)?"mixed":null==e?"auto":e}function Lt(t){return"number"!=typeof t||t<1||t>1e4?null:v(t)}function Bt(t,e,n=1){return v(t??e,n,1e4)??e}function Ht(t,e){return Number.isInteger(t)&&t>=0&&t<e}function Nt(t,e){return Math.min(e-1,Math.max(0,t))}function $t(t,e){return Array.from({length:e-t+1},(e,n)=>t+n)}function Tt(t,e,n){const o=t.getBlock(e);if(!o||"table"!==o.type)return null;const r=q(o);if(!qt(n,r.rowCount)||0===r.columnCount)return null;const i=r.cells.filter(t=>t.rowStart<n&&t.rowEnd>n),a=t.transaction("command");for(const l of i)if(!Zt(t,a,l.cell,"rowspan",l.rowSpan+1))return null;const c=[];for(let l=0;l<r.columnCount;l++)i.some(t=>t.columnStart<=l&&t.columnEnd>l)||c.push(U());const d=l(f("table_row"),c),u=function(t,e,n){if(n>=e.rowCount)return t.children.length;const o=e.rows[n];if(!o)return t.children.length;const r=t.children.findIndex(t=>"id"in t&&t.id===o.id);return-1===r?t.children.length:r}(o,r,n);a.insertNode([e],u,d);const h=s(d)[0],b=h?s(h)[0]:void 0;return b?a.setSelection(m(b.id,0)):h&&a.setSelection(m(h.id,0)),a.build()}function Dt(t,e,n){const o=t.getBlock(e);if(!o||"table"!==o.type)return null;const r=q(o);if(!qt(n,r.columnCount)||0===r.rowCount)return null;const i=t.transaction("command");if(Yt(o)){const l=[...xt(o,r.columnCount)];l.splice(n,0,null);const s=t.getNodePath(e);if(!s)return null;i.setNodeAttr(s,vt(o.attrs,l))}const l=r.cells.filter(t=>t.columnStart<n&&t.columnEnd>n);for(const s of l)if(!Zt(t,i,s.cell,"colspan",s.columnSpan+1))return null;let a;for(let s=0;s<r.rowCount;s++){const t=r.rows[s];if(!t)continue;if(l.some(t=>t.rowStart<=s&&t.rowEnd>s))continue;const o=U();a??=o;const c=r.cells.filter(e=>e.sourceRow.id===t.id&&e.columnEnd<=n).length;i.insertNode([e,t.id],c,o)}const c=a?s(a)[0]:void 0;return i.setSelection(c?m(c.id,0):t.selection),i.build()}function Wt(t,e,n,o=0){const r=t.getBlock(e);if(!r||"table"!==r.type)return null;const i=q(r);if(!Kt(n,i.rowCount))return null;if(i.rowCount<=1)return _t(t,e);const l=t.transaction("command"),s=i.cells.filter(t=>t.rowStart<=n&&t.rowEnd>n),a=s.filter(t=>t.rowStart===n&&t.rowSpan>1).sort((t,e)=>t.columnStart-e.columnStart);for(const u of s)if(!(u.rowSpan<=1||Zt(t,l,u.cell,"rowspan",u.rowSpan-1)))return null;if(a.length>0){const t=i.rows[n+1];if(!t)return null;const o=i.cells.filter(e=>e.sourceRow.id===t.id);let r=0;for(const n of a){const i=o.filter(t=>t.columnStart<n.columnStart).length+r;l.moveNode([e,n.sourceRow.id],n.sourceCellIndex-r,[e,t.id],i),r++}}const c=function(t,e,n){const o=e.rows[n];return o?t.children.findIndex(t=>"id"in t&&t.id===o.id):-1}(r,i,n);if(c<0)return null;l.removeNode([e],c);const d=J(t,e,n>0?n-1:1,Math.min(Math.max(0,o),i.columnCount-1));if(d){const e=Q(t,d);l.setSelection(m(e,0))}return l.build()}function Ot(t,e,n,o=0){const r=t.getBlock(e);if(!r||"table"!==r.type)return null;const i=q(r);if(!Kt(n,i.columnCount))return null;if(i.columnCount<=1)return _t(t,e);const l=t.transaction("command");if(Yt(r)){const o=[...xt(r,i.columnCount)];o.splice(n,1);const s=t.getNodePath(e);if(!s)return null;l.setNodeAttr(s,vt(r.attrs,o))}const s=i.cells.filter(t=>t.columnStart<=n&&t.columnEnd>n);for(const d of s)if(!(d.columnSpan<=1||Zt(t,l,d.cell,"colspan",d.columnSpan-1)))return null;for(const d of s.filter(t=>1===t.columnSpan).sort((t,e)=>t.sourceRowIndex!==e.sourceRowIndex?e.sourceRowIndex-t.sourceRowIndex:e.sourceCellIndex-t.sourceCellIndex))l.removeNode([e,d.sourceRow.id],d.sourceCellIndex);const a=n>0?n-1:1,c=J(t,e,Math.min(Math.max(0,o),i.rowCount-1),a);if(c){const e=Q(t,c);l.setSelection(m(e,0))}return l.build()}function _t(t,e){const n=t.doc.children.findIndex(t=>t.id===e);if(-1===n)return null;if(1===t.doc.children.length){const e=o(r());return t.transaction("command").insertNode([],0,e).removeNode([],1).setSelection(m(e.id,0)).build()}const i=t.transaction("command").removeNode([],n),l=t.doc.children[n+1];if(l){const e=g(t,l.id,"start");if(e)return i.setSelection(e),i.build()}const s=t.doc.children[n-1];if(s){const e=g(t,s.id,"end");if(e)return i.setSelection(e),i.build()}return null}function jt(t,e,n){const o=t.getState(),i=P(o);if(!i)return!1;const a=function(t,e){const n=r(),o=[];for(let i=0;i<t;i++){const t=[];for(let n=0;n<e;n++)t.push(U());o.push(l(f("table_row"),t,r()))}return l(f("table"),o,n)}(e,n),c=o.transaction("command");if(!w(o,c,i,a))return!1;const d=s(a)[0],u=d?s(d)[0]:void 0,h=u?s(u)[0]:void 0;return h?c.setSelection(m(h.id,0)):u&&c.setSelection(m(u.id,0)),t.dispatch(c.build()),!0}function Ft(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=Tt(n,o.tableId,o.rowEnd);return!!r&&(t.dispatch(r),t.announce(e.announceRowInsertedBelow),!0)}function Vt(t,e,n){const o=t.getState();if(!p(o.selection))return!1;const r=G(o,o.selection.anchor.blockId);if(!r)return!1;const i="left"===e?r.colIndex:r.colEnd,l=Dt(o,r.tableId,i);return!!l&&(t.dispatch(l),t.announce(n.announceColumnInserted(e)),!0)}function qt(t,e){return Number.isInteger(t)&&t>=0&&t<=e}function Kt(t,e){return Number.isInteger(t)&&t>=0&&t<e}function Zt(t,e,n,o,r){const i=t.getNodePath(n.id);return!!i&&(e.setNodeAttr(i,function(t,e,n){const o={...t.attrs??{}};return delete o[e],n>1&&(o[e]=n),{...t,attrs:o}}(n,o,r).attrs??{}),!0)}function Yt(t){return Object.prototype.hasOwnProperty.call(t.attrs??{},"columnWidthsPx")}function Xt(t,e){t.registerCommand("insertTable",()=>jt(t,3,3)),t.registerCommand("addRowAbove",()=>function(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=Tt(n,o.tableId,o.rowIndex);return!!r&&(t.dispatch(r),t.announce(e.announceRowInsertedAbove),!0)}(t,e)),t.registerCommand("addRowBelow",()=>Ft(t,e)),t.registerCommand("addColumnLeft",()=>function(t,e){return Vt(t,"left",e)}(t,e)),t.registerCommand("addColumnRight",()=>function(t,e){return Vt(t,"right",e)}(t,e)),t.registerCommand("deleteRow",()=>function(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=Wt(n,o.tableId,o.rowIndex,o.colIndex);return!!r&&(t.dispatch(r),t.announce(e.announceRowDeleted),!0)}(t,e)),t.registerCommand("deleteColumn",()=>function(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=G(n,n.selection.anchor.blockId);if(!o)return!1;const r=Ot(n,o.tableId,o.colIndex,o.rowIndex);return!!r&&(t.dispatch(r),t.announce(e.announceColumnDeleted),!0)}(t,e)),t.registerCommand("selectTable",()=>function(t){const e=t.getState(),n=e.selection;if(u(n))return"table"===e.getBlock(n.nodeId)?.type;if(d(n))return!1;const o=G(e,n.anchor.blockId);if(!o)return!1;const r=e.getNodePath(o.tableId);if(!r)return!1;const i=e.transaction("command").setSelection(b(o.tableId,r)).build();return t.dispatch(i),!0}(t)),t.registerCommand("deleteTable",()=>function(t,e){const n=t.getState(),o=function(t){if(u(t.selection)){const e=t.getBlock(t.selection.nodeId);return"table"!==e?.type?null:{tableId:e.id}}if(d(t.selection))return null;const e=G(t,t.selection.anchor.blockId);return e?{tableId:e.tableId}:null}(n);if(!o)return!1;const r=_t(n,o.tableId);return!!r&&(t.dispatch(r),t.announce(e.announceTableDeleted),!0)}(t,e))}function Ut(t,e,n,o,r,i,l){const s=document.createElement("div");s.className="notectl-table-size-editor__field";const a=document.createElement("label");a.htmlFor=`notectl-table-size-${e}`,a.textContent=n;const c=document.createElement("div");c.className="notectl-table-size-editor__input-wrap";const d=document.createElement("input");d.id=a.htmlFor,d.type="number",d.inputMode="decimal",d.step="1",d.min=String(r),d.max=String(i),d.setAttribute("aria-describedby",`${d.id}-error`);const u=document.createElement("span");u.className="notectl-table-size-editor__unit",u.textContent="px",u.setAttribute("aria-hidden","true"),c.append(d,u);const h=document.createElement("div");h.id=`${d.id}-error`,h.className="notectl-table-size-editor__error",h.setAttribute("role","alert"),s.append(a,c,h),t.appendChild(s);const b={input:d,error:h,minimum:r,maximum:i,dirty:!1};return Gt(b,o,l),b}function Gt(t,e,n){t.input.disabled="unavailable"===e,t.input.value="number"==typeof e?String(e):"",t.input.placeholder="mixed"===e?n.mixed:n.automatic,t.dirty=!1,Qt(t)}function Jt(t,e){const n=t.input.value.trim(),o=Number(n);if(0===n.length||!Number.isFinite(o))return t.error.textContent=e.invalidDimensionRange(t.minimum,t.maximum),t.input.setAttribute("aria-invalid","true"),t.input.focus(),null;const r=Math.min(t.maximum,Math.max(t.minimum,o));return t.input.value=String(r),r}function Qt(t){t.error.textContent="",t.input.removeAttribute("aria-invalid")}function te(t,e=""){const n=document.createElement("button");return n.type="button",n.textContent=t,n.className=e,n}function ee(t,e,n){return e?t.resetSize(e,n):t.resetSelectionSize(n)}function ne(t,e,n,o){"columnWidthPx"!==n?"row"===e?.kind||"cell"===e?.kind?t.announce(o.announceRowMinimumHeightReset(e.row)):t.announce(o.resetRowMinimumHeight):"column"===e?.kind||"cell"===e?.kind?t.announce(o.announceColumnWidthReset(e.column)):t.announce(o.resetColumnWidth)}var oe=/* @__PURE__ */new WeakMap;function re(t){for(const e of[...oe.get(t)??[]])e()}function ie(t,e,n,o,r,i=nt,l,s={}){let a=!0,c=null,d=null;const u=document.createElement("div");u.className="notectl-table-context-menu",u.setAttribute("role","menu"),u.setAttribute("aria-label",i.tableActions),u.setAttribute("contenteditable","false"),u.setAttribute("data-notectl-no-print","");const h=[];let b=0;const m=function(t){return[{type:"item",label:t.insertRowAbove,command:"addRowAbove"},{type:"item",label:t.insertRowBelow,command:"addRowBelow"},{type:"separator"},{type:"item",label:t.insertColumnLeft,command:"addColumnLeft"},{type:"item",label:t.insertColumnRight,command:"addColumnRight"},{type:"separator"},{type:"item",label:t.deleteRow,command:"deleteRow"},{type:"item",label:t.deleteColumn,command:"deleteColumn"},{type:"separator"},{type:"submenu",label:t.borderColorLabel,id:"borderColor"},{type:"submenu",label:t.sizeLabel,id:"size"},{type:"separator"},{type:"item",label:t.deleteTable,command:"deleteTable"}]}(i);for(const z of m){if("separator"===z.type){const t=document.createElement("div");t.setAttribute("role","separator"),u.appendChild(t);continue}const t=document.createElement("button");t.type="button",t.setAttribute("role","menuitem"),t.textContent=z.label,"submenu"===z.type&&(t.dataset.submenu=z.id,t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false")),"item"===z.type&&(t.dataset.command=z.command),t.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),t.addEventListener("click",n=>{n.stopPropagation(),"item"===z.type?(e.executeCommand(z.command),S()):"submenu"===z.type&&f(t)}),h.push(t),u.appendChild(t)}const p=document.createElement("div");function f(e){if(w(),e.setAttribute("aria-expanded","true"),l)d=l.open({anchor:e,position:"right",referenceNode:u,parent:{close:()=>S(),getElement:()=>u},onClose:()=>{d=null,c=null,x()},content:(t,n)=>{t.className="notectl-table-context-menu",t.setAttribute("contenteditable","false"),t.setAttribute("data-notectl-no-print",""),c=t,t.addEventListener("keydown",t=>{if(t.stopPropagation(),t.target instanceof HTMLInputElement)return;const o="rtl"===getComputedStyle(u).direction?"ArrowRight":"ArrowLeft";t.key===o&&(t.preventDefault(),n(),e.focus())}),g(t,e)}});else{c=document.createElement("div"),c.className="notectl-table-context-menu",c.setAttribute("contenteditable","false"),c.setAttribute("data-notectl-no-print",""),c.addEventListener("keydown",t=>{if(t.stopPropagation(),t.target instanceof HTMLInputElement)return;const n="rtl"===getComputedStyle(u).direction?"ArrowRight":"ArrowLeft";t.key===n&&(t.preventDefault(),w(),e.focus())}),g(c,e),t.appendChild(c);const n=u.getBoundingClientRect(),o="rtl"===getComputedStyle(u).direction;D(c,n,{position:"right",isRtl:o}),"size"!==e.dataset.submenu&&requestAnimationFrame(()=>{(c?.querySelector("button"))?.focus()})}}function g(t,o){"size"!==o.dataset.submenu?dt(t,e,n,S,i):function(t,e,n,o=nt){const r=e.getService?.(gt),i=wt(n.config??{}),l=r?function(t,e){return e?t.getSize(e):t.getSelectionSize()}(r,n.target):null;t.classList.add("notectl-table-size-editor"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-label",o.sizeDialogLabel);const s=document.createElement("div");s.className="notectl-table-size-editor__title",s.textContent=o.sizeDialogLabel,t.appendChild(s);const a=Ut(t,"column-width",o.columnWidthLabel,l?.columnWidthPx??"unavailable",i.minColumnWidthPx,i.maxColumnWidthPx,o),c=Ut(t,"row-min-height",o.rowMinimumHeightLabel,l?.rowMinHeightPx??"unavailable",i.minRowHeightPx,i.maxRowHeightPx,o),d=document.createElement("div");d.className="notectl-table-size-editor__resets";const u=te(o.resetColumnWidth,"notectl-table-size-editor__reset"),h=te(o.resetRowMinimumHeight,"notectl-table-size-editor__reset"),b=te(o.resetAllSizes,"notectl-table-size-editor__reset notectl-table-size-editor__reset--all");u.disabled=a.input.disabled,h.disabled=c.input.disabled,b.disabled=a.input.disabled&&c.input.disabled,d.append(u,h,b),t.appendChild(d);const m=document.createElement("div");m.className="notectl-table-size-editor__actions";const p=te(o.cancel),f=te(o.apply,"notectl-table-size-editor__apply");f.disabled=!r||!!e.isReadOnly?.(),m.append(p,f),t.appendChild(m),a.input.addEventListener("input",()=>{a.dirty=!0,Qt(a)}),c.input.addEventListener("input",()=>{c.dirty=!0,Qt(c)}),f.addEventListener("click",()=>{if(!r||e.isReadOnly?.())return;const t={};let i=!0;if(a.dirty){const e=Jt(a,o);null===e?i=!1:t.columnWidthPx=e}if(c.dirty){const e=Jt(c,o);null===e?i=!1:t.rowMinHeightPx=e}i&&(a.dirty||c.dirty?function(t,e,n){return e?t.setSize(e,n):t.setSelectionSize(n)}(r,n.target,t)&&(function(t,e,n,o){const r=[];"number"==typeof n.columnWidthPx&&("column"===e?.kind||"cell"===e?.kind?r.push(o.announceColumnWidthSet(e.column,n.columnWidthPx)):r.push(`${o.columnWidthLabel}: ${String(n.columnWidthPx)}`)),"number"==typeof n.rowMinHeightPx&&("row"===e?.kind||"cell"===e?.kind?r.push(o.announceRowMinimumHeightSet(e.row,n.rowMinHeightPx)):r.push(`${o.rowMinimumHeightLabel}: ${String(n.rowMinHeightPx)}`)),r.length>0&&t.announce(r.join(" "))}(e,n.target,t,o),n.onClose()):n.onClose())}),p.addEventListener("click",n.onClose),u.addEventListener("click",()=>{r&&ee(r,n.target,"columnWidthPx")&&(Gt(a,"auto",o),ne(e,n.target,"columnWidthPx",o))}),h.addEventListener("click",()=>{r&&ee(r,n.target,"rowMinHeightPx")&&(Gt(c,"auto",o),ne(e,n.target,"rowMinHeightPx",o))}),b.addEventListener("click",()=>{r&&ee(r,n.target)&&(a.input.disabled||Gt(a,"auto",o),c.input.disabled||Gt(c,"auto",o),e.announce(o.announceTableSizesReset))}),t.addEventListener("keydown",e=>{if("Escape"===e.key)return e.preventDefault(),e.stopPropagation(),void n.onClose();"Tab"===e.key&&function(t,e){const n=function(t){return Array.from(t.querySelectorAll("input, button")).filter(t=>!t.disabled)}(t),o=n[0],r=n[n.length-1];if(!o||!r)return;const i=function(t){const e=t.getRootNode();return e instanceof ShadowRoot||e instanceof Document?e.activeElement:document.activeElement}(t),l=e.shiftKey&&(i===o||!t.contains(i)),s=!(e.shiftKey||i!==r&&t.contains(i));(l||s)&&(e.preventDefault(),(l?r:o).focus())}(t,e)}),requestAnimationFrame(()=>{([a.input,c.input].find(t=>!t.disabled)??p).focus()})}(t,e,{target:s.sizeTarget,config:s.sizingConfig,onClose:S},i)}function w(){d?(d.close(),d=null,c=null):c&&(c.remove(),c=null),x()}function x(){for(const t of h)t.dataset.submenu&&t.setAttribute("aria-expanded","false")}p.className="notectl-table-context-menu__hint",p.setAttribute("aria-hidden","true"),p.textContent=i.menuKeyboardHint,u.appendChild(p),T(h,b),u.addEventListener("keydown",t=>{switch(t.stopPropagation(),t.key){case"Escape":return t.preventDefault(),void S();case"ArrowDown":return t.preventDefault(),b=(b+1)%h.length,T(h,b),void h[b]?.focus();case"ArrowUp":return t.preventDefault(),b=(b-1+h.length)%h.length,T(h,b),void h[b]?.focus();case"ArrowRight":case"ArrowLeft":{t.preventDefault();const e="rtl"===getComputedStyle(u).direction?"ArrowLeft":"ArrowRight";if(t.key===e){const t=h[b];t?.dataset.submenu&&f(t)}else w(),h[b]?.focus();return}case"Enter":case" ":{t.preventDefault();const n=h[b];if(!n)return;return void(n.dataset.submenu?f(n):n.dataset.command&&(e.executeCommand(n.dataset.command),S()))}case"Home":return t.preventDefault(),b=0,T(h,b),void h[b]?.focus();case"End":return t.preventDefault(),b=h.length-1,T(h,b),void h[b]?.focus()}}),t.appendChild(u),D(u,o,{position:"below-start",isRtl:$(t)}),h[0]?.focus(),requestAnimationFrame(()=>{a&&h[0]&&h[0].focus()});const v=t=>{const e=t.composedPath();e.includes(u)||c&&e.includes(c)||S()};let C=null,y=!1;function S(){if(!a)return;a=!1,w(),u.remove(),null!==C&&(clearTimeout(C),C=null),y&&(document.removeEventListener("mousedown",v,!0),y=!1),oe.get(e)?.delete(S),r?.();const t=s.restoreFocusTo;t?.isConnected&&requestAnimationFrame(()=>t.focus({preventScroll:!0}))}C=setTimeout(()=>{C=null,document.addEventListener("mousedown",v,!0),y=!0},0);const R=oe.get(e)??/* @__PURE__ */new Set;return R.add(S),oe.set(e,R),{isOpen:()=>a,close:S,destroy:S}}var le=/* @__PURE__ */new WeakMap;function se(t,e){const n=t.getState();if(!p(n.selection))return!1;const o=n.selection,r=G(n,o.anchor.blockId);return!!r&&e(n,o,r)}function ae(t){return se(t,(e,n,o)=>{const r=o.tableIndex+1;if(r>=e.doc.children.length)return!1;const i=e.doc.children[r];if(!i)return!1;const l=e.transaction("command").setSelection(m(i.id,0)).build();return t.dispatch(l),!0})}function ce(t,e){if((t.getService?.(bt)?.getSelectedRange())?.tableId!==e.tableId)return{kind:"cell",tableId:e.tableId,row:e.rowIndex,column:e.colIndex}}function de(t,e,n,o){const r=t.getState().getBlock(e.tableId);if(!r||"table"!==r.type)return!1;const l=q(r).cells,s=l[l.findIndex(t=>t.cell.id===e.cellId)+n];return!!s&&(o?function(t,e,n,o){const r=t.getState(),l=J(r,e,n,o);if(!l)return!1;const s=tt(r,l),a=r.getBlock(s);if(!a)return!1;const c=i(a),d=r.transaction("command").setSelection(m(s,c)).build();return t.dispatch(d),!0}(t,e.tableId,s.rowStart,s.columnStart):ue(t,e.tableId,s.rowStart,s.columnStart))}function ue(t,e,n,o){const r=t.getState(),i=J(r,e,n,o);if(!i)return!1;const l=Q(r,i),s=r.transaction("command").setSelection(m(l,0)).build();return t.dispatch(s),!0}function he(t,e){const n=t.getState(),o=n.getNodePath(e);if(!o)return!1;const r=n.transaction("input").setSelection(b(e,o)).build();return t.dispatch(r),!0}var be='<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M6 1v10M1 6h10" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/></svg>';function me(t,e,n){const o=document.createElement("button");return o.className=t,o.innerHTML=e,o.title=n,o.type="button",o.setAttribute("aria-label",n),o.setAttribute("contenteditable","false"),o.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),o}function pe(t,e){const n=document.createElement("div");n.className=`ntbl-insert-line ntbl-insert-line--${t}`,n.setAttribute("contenteditable","false"),n.setAttribute("data-notectl-no-print","");const o=me("ntbl-insert-btn",be,e);return n.appendChild(o),n}function fe(t,e){const n=document.createElement("button");n.className=`ntbl-add-zone ${t}`,n.type="button",n.setAttribute("contenteditable","false"),n.setAttribute("aria-label",e),n.setAttribute("data-notectl-no-print",""),n.title=e;const o=document.createElement("span");return o.className="ntbl-add-icon",o.innerHTML=be,n.appendChild(o),n.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),n}function ge(t){const e=document.createElement("div");return e.className=t,e.setAttribute("contenteditable","false"),e.setAttribute("data-notectl-no-print",""),e}function we(t,e,n,o){const r=document.createElement("button");return r.type="button",r.className=`ntbl-resize-separator ntbl-resize-separator--${t}`,r.dataset.kind=t,r.dataset.index=String(e),r.setAttribute("role","separator"),r.setAttribute("aria-orientation","column"===t?"vertical":"horizontal"),r.setAttribute("aria-label",n),r.setAttribute("contenteditable","false"),r.setAttribute("data-notectl-no-print",""),r.title=`${n}. ${o}`,r}function xe(t,e){N(t,"none"===e?{backgroundColor:"transparent",border:"1px dashed rgba(128,128,128,0.4)"}:e?{backgroundColor:e,border:"1px solid rgba(0,0,0,0.15)"}:{backgroundColor:"var(--notectl-border)",border:"1px solid rgba(0,0,0,0.15)"})}function ve(t,e,n,o,r){const i=document.createElement("div");if(i.className=`ntbl-handle ${t}`,i.dataset.index=String(e),r){const t=me("ntbl-handle-select","",r.label);t.setAttribute("aria-pressed",r.selected?"true":"false"),t.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),r.onSelect(e)}),i.appendChild(t)}const l=me("ntbl-handle-delete",'<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewBox="0 0 10 10" fill="none"><path d="M2 2l6 6M8 2l-6 6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>',n);return l.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation(),o(e)}),i.appendChild(l),i}function Ce(t,e){const n=t.getBoundingClientRect(),o=e.getBoundingClientRect();return{top:n.top-o.top+e.scrollTop,left:n.left-o.left+e.scrollLeft}}function ye(t,e=0){const n=t.getBoundingClientRect(),o=Array.from(t.querySelectorAll(":scope > colgroup > col"));if(o.length>0){const t=o.map((t,e)=>{const o=t.getBoundingClientRect();return{index:e,position:o.left-n.left,width:o.width}});if(t.every(t=>t.width>0))return t}const r=o.length||e,i=n.width||t.offsetWidth;if(r<=0||i<=0)return[];const l=i/r;return Array.from({length:r},(t,e)=>({index:e,position:l*e,width:l}))}var Se={...ft,directResize:!0},Re=class{tableId;numRows;numCols;currentNode;readOnly=!1;activeRowIndex=-1;activeColIndex=-1;resizeSession=null;colBar;rowBar;colResizeBar;rowResizeBar;resizeIndicator;insertLineH;insertLineV;addRowZone;addColZone;deleteTableBtn;borderColorBtn;actionsBtn;contextHint;observer;wrapperEl;borderColorPopup=null;activeContextMenu=null;container;tableEl;getState;dispatchFn;pluginContext;locale;config;onWrapperScroll=()=>this.positionControls();onPointerMove=t=>this.moveResize(t);onPointerUp=t=>this.finishResize(t);onPointerCancel=t=>this.cancelResize(t);onDocumentKeyDown=t=>{"Escape"===t.key&&this.resizeSession&&(t.preventDefault(),t.stopPropagation(),this.cancelActiveResize())};onMouseMove=t=>{if(this.readOnly||this.resizeSession)return;const e=this.tableEl.getBoundingClientRect(),n=t.clientX-e.left,o=t.clientY-e.top;if(!(n>=-10&&n<=e.width+10&&o>=-10&&o<=e.height+10))return void this.hideInsertLines();const r=function(t,e,n,o){let r=Number.POSITIVE_INFINITY,i=null;for(const a of n){const t=Math.abs(e-a.position);t<r&&t<10&&(r=t,i=a)}let l=Number.POSITIVE_INFINITY,s=null;for(const a of o){const e=Math.abs(t-a.position);e<l&&e<10&&(l=e,s=a)}return i&&(!s||r<=l)?{type:"row",border:i}:s?{type:"col",border:s}:{type:"none",border:null}}(n,o,function(t){const e=t.querySelectorAll(":scope > tbody > tr"),n=t.getBoundingClientRect().top,o=[];for(let r=1;r<e.length;r++){const t=e[r];t&&o.push({position:Math.round(t.getBoundingClientRect().top-n),index:r})}return o}(this.tableEl),function(t,e=0){if("number"==typeof t){if(e<=1)return[];const n=t/e;return Array.from({length:e-1},(t,e)=>({position:Math.round(n*(e+1)),index:e+1}))}const n=ye(t,e);if(n.length<=1)return[];const o="rtl"===getComputedStyle(t).direction;return n.slice(0,-1).map((t,e)=>({position:Math.round(o?t.position:t.position+t.width),index:e+1}))}(this.tableEl,this.numCols));"row"===r.type&&r.border?(this.showHorizontalLine(r.border),this.hideVerticalLine()):"col"===r.type&&r.border?(this.showVerticalLine(r.border),this.hideHorizontalLine()):this.hideInsertLines()};onMouseLeave=()=>{this.hideInsertLines()};constructor(t,e,n,o,r,i,l=nt,s=Se){if(this.container=t,this.tableEl=e,this.getState=o,this.dispatchFn=r,this.pluginContext=i??null,this.locale=l,this.config={...wt(s),directResize:s.directResize??!0},this.wrapperEl=e.closest(".notectl-table-wrapper"),this.tableId=n.id,this.currentNode=n,this.numRows=q(n).rowCount,this.numCols=this.countCols(n),this.colBar=ge("ntbl-col-bar"),this.rowBar=ge("ntbl-row-bar"),this.colResizeBar=ge("ntbl-col-resize-bar"),this.rowResizeBar=ge("ntbl-row-resize-bar"),this.resizeIndicator=function(){const t=document.createElement("div");return t.className="ntbl-resize-indicator",t.setAttribute("aria-hidden","true"),t.setAttribute("contenteditable","false"),t.setAttribute("data-notectl-no-print",""),t}(),this.insertLineH=pe("horizontal",l.insertRow),this.insertLineV=pe("vertical",l.insertColumn),this.addRowZone=fe("ntbl-add-row",l.addRow),this.addColZone=fe("ntbl-add-col",l.addColumn),this.deleteTableBtn=me("ntbl-delete-table-btn",'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none"><path d="M9 3h6m-9 4h12M10 11v6m4-6v6m-9 3h14l-1-13H6L5 20z" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg>',l.deleteTable),this.deleteTableBtn.setAttribute("data-notectl-no-print",""),i){const t=ct(o(),this.tableId);this.borderColorBtn=function(t,e){const n=me("ntbl-border-color-btn",'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none"><path d="M3 3h18v18H3V3zm0 6h18M3 15h18M9 3v18M15 3v18" stroke="currentColor" stroke-width="1.5"/></svg>',t);n.setAttribute("data-notectl-no-print","");const o=document.createElement("span");return o.className="ntbl-border-color-swatch",xe(o,e),n.appendChild(o),n}(l.borderColor,t),this.actionsBtn=function(t){const e=me("ntbl-actions-btn",'<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="currentColor"><circle cx="12" cy="5" r="2"/><circle cx="12" cy="12" r="2"/><circle cx="12" cy="19" r="2"/></svg>',t);return e.setAttribute("data-notectl-no-print",""),e}(l.tableActionsHint)}else this.borderColorBtn=null,this.actionsBtn=null;t.append(this.colBar,this.rowBar,this.insertLineH,this.insertLineV,this.addRowZone,this.addColZone,this.deleteTableBtn),this.config.directResize&&t.append(this.colResizeBar,this.rowResizeBar,this.resizeIndicator),this.borderColorBtn&&t.appendChild(this.borderColorBtn),this.actionsBtn&&t.appendChild(this.actionsBtn),this.contextHint=function(t){const e=document.createElement("div");return e.className="ntbl-context-hint",e.setAttribute("aria-hidden","true"),e.setAttribute("contenteditable","false"),e.setAttribute("data-notectl-no-print",""),e.textContent=t,e}(l.contextMenuHint),t.appendChild(this.contextHint),this.rebuildColHandles(),this.rebuildRowHandles(),this.rebuildResizeSeparators(),this.bindEventListeners(),this.setReadOnly(i?.isReadOnly?.()??!1),this.observer=new ResizeObserver(()=>{this.positionControls()}),this.observer.observe(e),this.wrapperEl&&(this.observer.observe(this.wrapperEl),this.wrapperEl.addEventListener("scroll",this.onWrapperScroll,{passive:!0})),requestAnimationFrame(()=>this.positionControls())}update(t){this.tableId=t.id,this.currentNode=t;const e=q(t).rowCount,n=this.countCols(t);if(e===this.numRows&&n===this.numCols||(this.numRows=e,this.numCols=n,this.rebuildColHandles(),this.rebuildRowHandles(),this.rebuildResizeSeparators()),this.updateHandleSelectionState(),this.borderColorBtn){const e=this.borderColorBtn.querySelector(".ntbl-border-color-swatch");if(e){const n=t.attrs?.borderColor;xe(e,n)}}requestAnimationFrame(()=>this.positionControls())}setReadOnly(t){this.readOnly=t,this.container.toggleAttribute("data-notectl-table-readonly",t);const e=[this.colBar,this.rowBar,this.colResizeBar,this.rowResizeBar,this.addRowZone,this.addColZone,this.deleteTableBtn,this.insertLineH,this.insertLineV,...this.borderColorBtn?[this.borderColorBtn]:[],...this.actionsBtn?[this.actionsBtn]:[]];for(const n of e){n instanceof HTMLButtonElement&&(n.disabled=t);for(const e of n.querySelectorAll("button"))e.disabled=t}t&&(this.hideInsertLines(),this.cancelActiveResize(),this.activeContextMenu?.close(),this.activeContextMenu=null,this.closeBorderColorPopup())}destroy(){this.cancelActiveResize(),this.activeContextMenu?.destroy(),this.closeBorderColorPopup(),this.observer.disconnect(),this.wrapperEl?.removeEventListener("scroll",this.onWrapperScroll),this.container.removeEventListener("mousemove",this.onMouseMove),this.container.removeEventListener("mouseleave",this.onMouseLeave),this.colBar.remove(),this.rowBar.remove(),this.colResizeBar.remove(),this.rowResizeBar.remove(),this.resizeIndicator.remove(),this.insertLineH.remove(),this.insertLineV.remove(),this.addRowZone.remove(),this.addColZone.remove(),this.deleteTableBtn.remove(),this.borderColorBtn?.remove(),this.actionsBtn?.remove(),this.contextHint.remove()}bindEventListeners(){const t=this.insertLineH.querySelector(".ntbl-insert-btn"),e=this.insertLineV.querySelector(".ntbl-insert-btn");if(t.addEventListener("click",()=>{this.activeRowIndex>=0&&this.dispatchTransaction(Tt(this.getState(),this.tableId,this.activeRowIndex))}),e.addEventListener("click",()=>{this.activeColIndex>=0&&this.dispatchTransaction(Dt(this.getState(),this.tableId,this.activeColIndex))}),this.addRowZone.addEventListener("click",()=>{this.dispatchTransaction(Tt(this.getState(),this.tableId,this.numRows))}),this.addColZone.addEventListener("click",()=>{this.dispatchTransaction(Dt(this.getState(),this.tableId,this.numCols))}),this.deleteTableBtn.addEventListener("click",()=>{this.dispatchTransaction(_t(this.getState(),this.tableId))}),this.borderColorBtn&&this.pluginContext){const t=this.pluginContext;this.borderColorBtn.addEventListener("click",()=>{this.toggleBorderColorPopup(t)})}if(this.actionsBtn&&this.pluginContext){const t=this.pluginContext;this.actionsBtn.addEventListener("click",()=>{this.openActionsMenu(t)})}this.container.addEventListener("mousemove",this.onMouseMove),this.container.addEventListener("mouseleave",this.onMouseLeave)}openActionsMenu(t){if(this.readOnly||t.isReadOnly?.())return;if(this.activeContextMenu?.isOpen())return this.activeContextMenu.close(),void(this.activeContextMenu=null);if(!this.actionsBtn)return;const e=this.actionsBtn.getBoundingClientRect();this.activeContextMenu=ie(this.container,t,this.tableId,e,()=>{this.activeContextMenu=null},this.locale,void 0,{sizingConfig:this.config,restoreFocusTo:this.actionsBtn})}toggleBorderColorPopup(t){this.readOnly||t.isReadOnly?.()||(this.borderColorPopup?this.closeBorderColorPopup():(this.borderColorPopup=document.createElement("div"),this.borderColorPopup.className="notectl-table-context-menu",N(this.borderColorPopup,{position:"absolute",top:"24px",left:"24px",zIndex:"10000"}),this.borderColorPopup.setAttribute("contenteditable","false"),dt(this.borderColorPopup,t,this.tableId,()=>{this.closeBorderColorPopup()},this.locale),this.container.appendChild(this.borderColorPopup)))}closeBorderColorPopup(){this.borderColorPopup&&(this.borderColorPopup.remove(),this.borderColorPopup=null)}dispatchTransaction(t){!t||this.readOnly||this.pluginContext?.isReadOnly?.()||this.dispatchFn(t)}countCols(t){return q(t).columnCount}positionControls(){const t=Ce(this.tableEl,this.container),e=this.tableEl.getBoundingClientRect();N(this.colBar,{left:`${String(t.left)}px`,top:`${String(t.top-24)}px`}),B(this.rowBar,"top",`${String(t.top)}px`),function(t,e,n=0){const o=t.children;if(0===o.length)return;const r="number"==typeof e?Array.from({length:n},(t,o)=>({index:o,position:e/n*o,width:e/n})):ye(e,n);for(let l=0;l<o.length;l++){const t=o[l],e=r[l];e&&N(t,{left:`${Math.round(e.position)}px`,width:`${Math.round(e.width)}px`})}const i=r.reduce((t,e)=>Math.max(t,e.position+e.width),0);B(t,"width",`${Math.round(i)}px`)}(this.colBar,this.tableEl,this.numCols),function(t,e){const n=t.children;if(0===n.length)return;const o=e.querySelectorAll(":scope > tbody > tr"),r=e.getBoundingClientRect();let i=0;for(let l=0;l<n.length;l++){const t=n[l],e=o[l];if(e){const n=e.getBoundingClientRect(),o=n.top-r.top,l=n.height||e.offsetHeight;N(t,{top:`${o}px`,height:`${l}px`}),i=o+l}}B(t,"height",`${i}px`)}(this.rowBar,this.tableEl),function(t,e,n,o){const r=Ce(n,o),i=n.getBoundingClientRect(),l=i.height||n.offsetHeight;N(t,{width:`${i.width||n.offsetWidth}px`,left:`${r.left}px`}),N(e,{height:`${l}px`,top:`${r.top}px`})}(this.addRowZone,this.addColZone,this.tableEl,this.container),this.config.directResize&&this.positionResizeSeparators(t,e)}positionResizeSeparators(t,e){N(this.colResizeBar,{left:`${String(t.left)}px`,top:`${String(t.top)}px`,width:`${String(e.width)}px`,height:`${String(e.height)}px`}),N(this.rowResizeBar,{left:`${String(t.left)}px`,top:`${String(t.top)}px`,width:`${String(e.width)}px`,height:`${String(e.height)}px`});const n="rtl"===getComputedStyle(this.tableEl).direction,o=ye(this.tableEl,this.numCols);for(let i=0;i<this.colResizeBar.children.length;i++){const t=this.colResizeBar.children[i],r=o[i];if(!r)continue;const l=n?r.position:r.position+r.width;N(t,{left:`${String(l)}px`,top:"0px",height:`${String(e.height)}px`}),this.updateSeparatorValue(t,"column",i,r.width)}const r=Array.from(this.tableEl.querySelectorAll(":scope > tbody > tr"));for(let i=0;i<this.rowResizeBar.children.length;i++){const t=this.rowResizeBar.children[i],n=r[i];if(!n)continue;const o=n.getBoundingClientRect(),l=o.bottom-e.top;N(t,{left:"0px",top:`${String(l)}px`,width:`${String(e.width)}px`}),this.updateSeparatorValue(t,"row",i,o.height||n.offsetHeight)}}updateSeparatorValue(t,e,n,o){const r="column"===e?this.config.minColumnWidthPx:this.config.minRowHeightPx,i="column"===e?this.config.maxColumnWidthPx:this.config.maxRowHeightPx,l=Math.round(o);t.setAttribute("aria-valuemin",String(r)),t.setAttribute("aria-valuemax",String(i)),t.setAttribute("aria-valuenow",String(l)),t.setAttribute("aria-valuetext",`${String(l)} px`),t.dataset.index=String(n)}startResize(t,e,n){if(this.readOnly||this.pluginContext?.isReadOnly?.()||0!==t.button&&"touch"!==t.pointerType)return;const o=this.getRenderedDimension(e,n);null!==o&&(t.preventDefault(),t.stopPropagation(),this.cancelActiveResize(),this.resizeSession={kind:e,index:n,pointerId:t.pointerId,startCoordinate:"column"===e?t.clientX:t.clientY,startSize:o,currentSize:o},t.currentTarget?.setPointerCapture?.(t.pointerId),document.addEventListener("pointermove",this.onPointerMove),document.addEventListener("pointerup",this.onPointerUp),document.addEventListener("pointercancel",this.onPointerCancel),document.addEventListener("keydown",this.onDocumentKeyDown,!0),this.container.classList.add(`ntbl-container--resizing-${e}`),this.updateResizeIndicator(o,t.clientX,t.clientY))}moveResize(t){const e=this.resizeSession;if(!e||e.pointerId!==t.pointerId)return;t.preventDefault();let n=("column"===e.kind?t.clientX:t.clientY)-e.startCoordinate;"column"===e.kind&&"rtl"===getComputedStyle(this.tableEl).direction&&(n*=-1);const o=this.clampDimension(e.kind,e.startSize+n);e.currentSize=o,this.applyResizePreview(e.kind,e.index,o),this.updateResizeIndicator(o,t.clientX,t.clientY),this.positionControls()}finishResize(t){const e=this.resizeSession;if(!e||e.pointerId!==t.pointerId)return;t.currentTarget?.releasePointerCapture?.(t.pointerId),this.resizeSession=null,this.detachResizeListeners(),this.hideResizeIndicator();const n=Math.round(e.currentSize),o=this.getSizingService();("column"===e.kind?o?.setSize({kind:"column",tableId:this.tableId,column:e.index},{columnWidthPx:n}):o?.setSize({kind:"row",tableId:this.tableId,row:e.index},{rowMinHeightPx:n}))?"column"===e.kind?this.pluginContext?.announce(this.locale.announceColumnWidthSet(e.index,n)):this.pluginContext?.announce(this.locale.announceRowMinimumHeightSet(e.index,n)):this.restoreCanonicalDimensions()}cancelResize(t){this.resizeSession?.pointerId===t.pointerId&&this.cancelActiveResize()}cancelActiveResize(){this.resizeSession&&(this.resizeSession=null,this.detachResizeListeners(),this.hideResizeIndicator(),this.restoreCanonicalDimensions(),this.positionControls())}detachResizeListeners(){document.removeEventListener("pointermove",this.onPointerMove),document.removeEventListener("pointerup",this.onPointerUp),document.removeEventListener("pointercancel",this.onPointerCancel),document.removeEventListener("keydown",this.onDocumentKeyDown,!0),this.container.classList.remove("ntbl-container--resizing-column"),this.container.classList.remove("ntbl-container--resizing-row")}getRenderedDimension(t,e){if("column"===t)return ye(this.tableEl,this.numCols)[e]?.width??null;const n=Array.from(this.tableEl.querySelectorAll(":scope > tbody > tr"))[e];return n&&(n.getBoundingClientRect().height||n.offsetHeight)||null}clampDimension(t,e){const n="column"===t?this.config.minColumnWidthPx:this.config.minRowHeightPx,o="column"===t?this.config.maxColumnWidthPx:this.config.maxRowHeightPx;return Math.min(o,Math.max(n,e))}applyResizePreview(t,e,n){if("column"===t){const t=this.tableEl.querySelectorAll(":scope > colgroup > col")[e];if(!t)return;H(t,"width"),t.setAttribute("width",String(n));const o=xt(this.currentNode,this.numCols),r=o.reduce((t,o,r)=>t+(r===e?n:o??this.config.minColumnWidthPx),0);return B(this.tableEl,"minWidth",`${String(r)}px`),void(o.length>=this.numCols&&o.every((t,n)=>n===e||null!==t)?B(this.tableEl,"width",`${String(r)}px`):H(this.tableEl,"width"))}const o=this.tableEl.querySelectorAll(":scope > tbody > tr")[e];o&&(H(o,"height"),o.setAttribute("height",String(n)))}restoreCanonicalDimensions(){const t=xt(this.currentNode,this.numCols),e=Array.from(this.tableEl.querySelectorAll(":scope > colgroup > col"));let n=0;for(let i=0;i<e.length;i++){const o=e[i];if(!o)continue;const r=t[i]??null;o.removeAttribute("width"),null===r?(H(o,"width"),o.removeAttribute("data-notectl-width-px")):(B(o,"width",`${String(r)}px`),o.setAttribute("data-notectl-width-px",String(r))),n+=r??this.config.minColumnWidthPx}B(this.tableEl,"minWidth",`${String(n)}px`),t.length>=this.numCols&&t.every(t=>null!==t)?B(this.tableEl,"width",`${String(n)}px`):H(this.tableEl,"width");const o=s(this.currentNode),r=Array.from(this.tableEl.querySelectorAll(":scope > tbody > tr"));for(let i=0;i<r.length;i++){const t=r[i],e=o[i];if(!t||!e)continue;t.removeAttribute("height");const n=Ct(e);null===n?(H(t,"height"),t.removeAttribute("data-notectl-min-height-px")):(B(t,"height",`${String(n)}px`),t.setAttribute("data-notectl-min-height-px",String(n)))}}updateResizeIndicator(t,e,n){const o=this.container.getBoundingClientRect();this.resizeIndicator.textContent=`${String(Math.round(t))} px`,N(this.resizeIndicator,{left:`${String(e-o.left+this.container.scrollLeft+12)}px`,top:`${String(n-o.top+this.container.scrollTop+12)}px`}),this.resizeIndicator.classList.add("ntbl-resize-indicator--visible")}hideResizeIndicator(){this.resizeIndicator.classList.remove("ntbl-resize-indicator--visible")}showHorizontalLine(t){this.activeRowIndex=t.index;const e=Ce(this.tableEl,this.container);N(this.insertLineH,{top:e.top+t.position-1+"px",left:`${e.left}px`,width:`${this.tableEl.offsetWidth}px`}),this.insertLineH.classList.add("ntbl-insert-line--visible")}showVerticalLine(t){this.activeColIndex=t.index;const e=Ce(this.tableEl,this.container);N(this.insertLineV,{left:e.left+t.position-1+"px",top:`${e.top}px`,height:`${this.tableEl.offsetHeight}px`}),this.insertLineV.classList.add("ntbl-insert-line--visible")}hideInsertLines(){this.hideHorizontalLine(),this.hideVerticalLine()}hideHorizontalLine(){this.insertLineH.classList.remove("ntbl-insert-line--visible"),this.activeRowIndex=-1}hideVerticalLine(){this.insertLineV.classList.remove("ntbl-insert-line--visible"),this.activeColIndex=-1}rebuildColHandles(){this.colBar.innerHTML="";for(let t=0;t<this.numCols;t++){const e=ve("ntbl-col-handle",t,this.locale.deleteColumn,t=>{this.dispatchTransaction(Ot(this.getState(),this.tableId,t))},{label:this.locale.selectColumnLabel(t),onSelect:t=>this.selectColumn(t)});this.colBar.appendChild(e)}}rebuildRowHandles(){this.rowBar.innerHTML="";for(let t=0;t<this.numRows;t++){const e=ve("ntbl-row-handle",t,this.locale.deleteRow,t=>{this.dispatchTransaction(Wt(this.getState(),this.tableId,t))},{label:this.locale.selectRowLabel(t),onSelect:t=>this.selectRow(t)});this.rowBar.appendChild(e)}}rebuildResizeSeparators(){if(this.colResizeBar.innerHTML="",this.rowResizeBar.innerHTML="",!this.config.directResize)return;const t=this.locale.resizeKeyboardHint(this.config.keyboardResizeStepPx,this.config.keyboardResizeLargeStepPx);for(let e=0;e<this.numCols;e++){const n=we("column",e,this.locale.resizeColumnSeparatorLabel(e),t);n.addEventListener("pointerdown",t=>this.startResize(t,"column",e)),n.addEventListener("keydown",t=>this.resizeFromKeyboard(t,"column",e)),this.colResizeBar.appendChild(n)}for(let e=0;e<this.numRows;e++){const n=we("row",e,this.locale.resizeRowSeparatorLabel(e),t);n.addEventListener("pointerdown",t=>this.startResize(t,"row",e)),n.addEventListener("keydown",t=>this.resizeFromKeyboard(t,"row",e)),this.rowResizeBar.appendChild(n)}this.setReadOnly(this.readOnly)}resizeFromKeyboard(t,e,n){if(this.readOnly||this.pluginContext?.isReadOnly?.())return;const o=this.getSizingService();if(!o)return;const r=t.currentTarget;if("Delete"===t.key||"Backspace"===t.key){t.preventDefault(),t.stopPropagation();const i="column"===e?{kind:"column",tableId:this.tableId,column:n}:{kind:"row",tableId:this.tableId,row:n},l="column"===e?"columnWidthPx":"rowMinHeightPx";return void(o.resetSize(i,l)&&(this.restoreKeyboardResizeFocus(r),this.pluginContext?.announce("column"===e?this.locale.announceColumnWidthReset(n):this.locale.announceRowMinimumHeightReset(n))))}const i="column"===e?"ArrowLeft":"ArrowUp",l="column"===e?"ArrowRight":"ArrowDown";if(t.key!==i&&t.key!==l)return;t.preventDefault(),t.stopPropagation();const s=this.getRenderedDimension(e,n);if(null===s)return;const a=t.shiftKey?this.config.keyboardResizeLargeStepPx:this.config.keyboardResizeStepPx;let c=t.key===l?1:-1;"column"===e&&"rtl"===getComputedStyle(this.tableEl).direction&&(c=1===c?-1:1);const d=Math.round(this.clampDimension(e,s+a*c));("column"===e?o.setSize({kind:"column",tableId:this.tableId,column:n},{columnWidthPx:d}):o.setSize({kind:"row",tableId:this.tableId,row:n},{rowMinHeightPx:d}))&&(this.restoreKeyboardResizeFocus(r),this.pluginContext?.announce("column"===e?this.locale.announceColumnWidthSet(n,d):this.locale.announceRowMinimumHeightSet(n,d)),this.updateSeparatorValue(r,e,n,d))}restoreKeyboardResizeFocus(t){t.isConnected&&t.focus({preventScroll:!0})}selectColumn(t){this.readOnly||0===this.numRows||(this.getSelectionService()?.setSelectedRange({tableId:this.tableId,fromRow:0,fromCol:t,toRow:this.numRows-1,toCol:t}),this.updateHandleSelectionState())}selectRow(t){this.readOnly||0===this.numCols||(this.getSelectionService()?.setSelectedRange({tableId:this.tableId,fromRow:t,fromCol:0,toRow:t,toCol:this.numCols-1}),this.updateHandleSelectionState())}updateHandleSelectionState(){const t=this.getSelectionService()?.getSelectedRange();for(let e=0;e<this.colBar.children.length;e++){const n=!!t&&t.tableId===this.tableId&&Math.min(t.fromCol,t.toCol)===e&&Math.max(t.fromCol,t.toCol)===e&&0===Math.min(t.fromRow,t.toRow)&&Math.max(t.fromRow,t.toRow)===this.numRows-1;this.colBar.children[e]?.querySelector(".ntbl-handle-select")?.setAttribute("aria-pressed",n?"true":"false")}for(let e=0;e<this.rowBar.children.length;e++){const n=!!t&&t.tableId===this.tableId&&Math.min(t.fromRow,t.toRow)===e&&Math.max(t.fromRow,t.toRow)===e&&0===Math.min(t.fromCol,t.toCol)&&Math.max(t.fromCol,t.toCol)===this.numCols-1;this.rowBar.children[e]?.querySelector(".ntbl-handle-select")?.setAttribute("aria-pressed",n?"true":"false")}}getSizingService(){return this.pluginContext?.getService?.(gt)}getSelectionService(){return this.pluginContext?.getService?.(bt)}},ze={minColumnWidthPx:60,minRowHeightPx:24,maxColumnWidthPx:1e4,maxRowHeightPx:1e4,keyboardResizeStepPx:8,keyboardResizeLargeStepPx:32,directResize:!0};function Ie(t,e){"none"===e?(B(t,"--ntbl-border-color","transparent"),t.classList.add("notectl-table--borderless")):e?(B(t,"--ntbl-border-color",e),t.classList.remove("notectl-table--borderless")):(H(t,"--ntbl-border-color"),t.classList.remove("notectl-table--borderless"))}function ke(t,e,n,o=ze){const r=q(n).columnCount;for(B(t,"--ntbl-min-column-width",`${String(o.minColumnWidthPx)}px`);e.children.length>r;)e.lastElementChild?.remove();for(;e.children.length<r;)e.appendChild(document.createElement("col"));const i=n.attrs?.columnWidthsPx,l=Array.isArray(i)?i:[];let s=0;for(let a=0;a<r;a++){const t=e.children[a];if(!t)continue;t.removeAttribute("width");const n=l[a],r="number"==typeof n&&Number.isFinite(n)&&n>0?n:void 0;void 0!==r?(B(t,"width",`${String(r)}px`),t.setAttribute("data-notectl-width-px",String(r))):(H(t,"width"),t.removeAttribute("data-notectl-width-px")),s+=r??o.minColumnWidthPx}r>0?(B(t,"minWidth",`${String(s)}px`),l.length>=r&&l.slice(0,r).every(t=>"number"==typeof t)?B(t,"width",`${String(s)}px`):H(t,"width")):(H(t,"minWidth"),H(t,"width"))}function Ae(t,e){const n=e.attrs?.minHeightPx;t.removeAttribute("height"),"number"==typeof n&&Number.isFinite(n)&&n>0?(B(t,"height",`${String(n)}px`),t.setAttribute("data-notectl-min-height-px",String(n))):(H(t,"height"),t.removeAttribute("data-notectl-min-height-px"))}function Ee(t,e){const n=Array.from(t.querySelectorAll(":scope > tr"));for(const o of s(e)){const t=n.find(t=>t.getAttribute("data-block-id")===o.id);t&&Ae(t,o)}}function Pe(t){if(!t)return;const{borderColor:e,columnWidthsPx:n,...o}=t;return Object.keys(o).length>0?o:void 0}function Me(t){if(!t)return;const{minHeightPx:e,...n}=t;return Object.keys(n).length>0?n:void 0}var Le={maxPickerRows:8,maxPickerCols:8,...ft,directResize:!0},Be="border: 1px solid var(--ntbl-bc, #d0d0d0); padding: 8px 12px; vertical-align: top",He=class{id="table";name="Table";priority=40;config;locale;selectionService=null;cleanupMouseSelection=null;cleanupClipboard=null;context=null;controls=/* @__PURE__ */new Set;constructor(t){const e=wt(t??{});this.config={...Le,...t,...e,maxPickerRows:Ne(t?.maxPickerRows,Le.maxPickerRows),maxPickerCols:Ne(t?.maxPickerCols,Le.maxPickerCols),directResize:t?.directResize??!0}}async init(t){this.locale=await M(t,this.config.locale,nt,rt),t.registerStyleSheet('\n/* Table */\n.notectl-table-wrapper {\n\tmargin: 8px 0;\n\toverflow-x: auto;\n\tposition: relative;\n}\n\n.notectl-table {\n\twidth: 100%;\n\tborder-collapse: collapse;\n\ttable-layout: fixed;\n}\n\n.notectl-table col {\n\tbox-sizing: border-box;\n}\n\n/* Border resolution order: per-table local override → theme component token → theme global token.\n * The inline --ntbl-border-color is set by the toolbar\'s "border color" action and must win\n * over the theme so per-table customizations remain visible after a theme switch.\n */\n.notectl-table td {\n\tborder: 1px solid var(--ntbl-border-color, var(--notectl-table-border, var(--notectl-border)));\n\tbackground: var(--notectl-table-cell-bg, transparent);\n\tpadding: 8px 12px;\n\tmin-width: var(--ntbl-min-column-width, 60px);\n\tvertical-align: top;\n\tmin-height: 1.6em;\n}\n\n.notectl-table th {\n\tborder: 1px solid var(--ntbl-border-color, var(--notectl-table-border, var(--notectl-border)));\n\tbackground: var(--notectl-table-header-bg, var(--notectl-surface-raised));\n\tpadding: 8px 12px;\n\tmin-width: var(--ntbl-min-column-width, 60px);\n\tvertical-align: top;\n\ttext-align: start;\n\tfont-weight: 600;\n}\n\n.notectl-table--borderless td {\n\tborder: 1px dashed rgba(128, 128, 128, 0.15);\n}\n\n@media print {\n\t.notectl-table--borderless td {\n\t\tborder: none;\n\t}\n}\n\n.notectl-table td:focus-within {\n\toutline: 2px solid var(--notectl-primary);\n\toutline-offset: -2px;\n}\n\n.notectl-table-cell--selected {\n\tbackground: var(--notectl-primary-muted);\n}\n\n/* Table Context Menu */\n.notectl-table-context-menu {\n\tbackground: var(--notectl-surface-overlay);\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 6px;\n\tbox-shadow: 0 4px 12px var(--notectl-shadow);\n\tpadding: 4px 0;\n\tmin-width: 180px;\n\tz-index: 10000;\n}\n\n.notectl-table-context-menu button {\n\tdisplay: block;\n\twidth: 100%;\n\tpadding: 8px 12px;\n\ttext-align: start;\n\tborder: none;\n\tbackground: none;\n\tcursor: pointer;\n\tfont-size: 14px;\n\tcolor: var(--notectl-fg);\n\tfont-family: inherit;\n}\n\n.notectl-table-context-menu button:hover {\n\tbackground: var(--notectl-hover-bg);\n}\n\n.notectl-table-context-menu hr {\n\tborder: none;\n\tborder-top: 1px solid var(--notectl-border);\n\tmargin: 4px 0;\n}\n\n/* === Table Controls === */\n\n/* Outer container for table + controls */\n.ntbl-container {\n\tposition: relative;\n\tmargin: 8px 0;\n\tpadding-block-start: 24px;\n\tpadding-inline-start: 24px;\n}\n\n.ntbl-container .notectl-table-wrapper {\n\tmargin: 0;\n}\n\n.ntbl-container.notectl-table--selected .notectl-table-wrapper {\n\toutline: 2px solid var(--notectl-primary-fg);\n\toutline-offset: 2px;\n\tborder-radius: 6px;\n}\n\n/* --- Column Handle Bar --- */\n.ntbl-col-bar {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 24px;\n\theight: 20px;\n\tdisplay: flex;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tz-index: 3;\n\tpointer-events: none;\n}\n\n.ntbl-container:hover .ntbl-col-bar,\n.ntbl-container:focus-within .ntbl-col-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-container.notectl-table--selected .ntbl-col-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n/* --- Row Handle Bar --- */\n.ntbl-row-bar {\n\tposition: absolute;\n\ttop: 24px;\n\tinset-inline-start: 0;\n\twidth: 20px;\n\tdisplay: flex;\n\tflex-direction: column;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tz-index: 3;\n\tpointer-events: none;\n}\n\n.ntbl-container:hover .ntbl-row-bar,\n.ntbl-container:focus-within .ntbl-row-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-container.notectl-table--selected .ntbl-row-bar {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n/* --- Handle (shared base) --- */\n.ntbl-handle {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\ttransition: background 0.15s ease;\n\tborder-radius: 3px;\n}\n\n.ntbl-handle-select {\n\tposition: absolute;\n\tinset: 0;\n\twidth: 100%;\n\theight: 100%;\n\tborder: 0;\n\tborder-radius: inherit;\n\tbackground: transparent;\n\tcursor: pointer;\n}\n\n.ntbl-handle-select[aria-pressed="true"] {\n\tbackground: var(--notectl-primary-muted);\n\tbox-shadow: inset 0 0 0 1px var(--notectl-primary);\n}\n\n.ntbl-handle-select:focus-visible {\n\toutline: none;\n\tbox-shadow: inset 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-col-handle {\n\theight: 100%;\n\tbackground: var(--notectl-hover-bg);\n\tborder-radius: 4px 4px 0 0;\n}\n\n.ntbl-col-handle:hover {\n\tbackground: var(--notectl-border);\n}\n\n.ntbl-row-handle {\n\twidth: 100%;\n\tbackground: var(--notectl-hover-bg);\n\tborder-start-start-radius: 4px;\n\tborder-end-start-radius: 4px;\n}\n\n.ntbl-row-handle:hover {\n\tbackground: var(--notectl-border);\n}\n\n/* --- Handle Delete Button --- */\n.ntbl-handle-delete {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 16px;\n\theight: 16px;\n\tborder: none;\n\tbackground: transparent;\n\tcolor: var(--notectl-fg-muted);\n\tcursor: pointer;\n\tborder-radius: 3px;\n\tpadding: 0;\n\topacity: 0;\n\ttransform: scale(0.7);\n\ttransition: opacity 0.15s, transform 0.15s,\n\t\tbackground 0.15s, color 0.15s;\n\tz-index: 1;\n}\n\n/* --- Logical column/row resize separators --- */\n.ntbl-col-resize-bar,\n.ntbl-row-resize-bar {\n\tposition: absolute;\n\tinset: 0 auto auto 0;\n\tz-index: 8;\n\tpointer-events: none;\n}\n\n.ntbl-resize-separator {\n\tposition: absolute;\n\tdisplay: block;\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tbackground: transparent;\n\topacity: 0;\n\tpointer-events: none;\n\ttouch-action: none;\n}\n\n.ntbl-resize-separator--column {\n\twidth: 12px;\n\ttransform: translateX(-6px);\n\tcursor: col-resize;\n}\n\n.ntbl-resize-separator--row {\n\theight: 12px;\n\ttransform: translateY(-6px);\n\tcursor: row-resize;\n}\n\n.ntbl-container:hover .ntbl-resize-separator,\n.ntbl-container:focus-within .ntbl-resize-separator,\n.ntbl-container.notectl-table--selected .ntbl-resize-separator,\n.ntbl-container--resizing-column .ntbl-resize-separator--column,\n.ntbl-container--resizing-row .ntbl-resize-separator--row {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-resize-separator::after {\n\tcontent: "";\n\tposition: absolute;\n\tbackground: var(--notectl-primary);\n\topacity: 0.35;\n}\n\n.ntbl-resize-separator--column::after {\n\tinset: 0 auto 0 5px;\n\twidth: 2px;\n}\n\n.ntbl-resize-separator--row::after {\n\tinset: 5px 0 auto 0;\n\theight: 2px;\n}\n\n.ntbl-resize-separator:hover::after,\n.ntbl-resize-separator:focus-visible::after {\n\topacity: 1;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-resize-separator:focus-visible {\n\toutline: none;\n}\n\n.ntbl-resize-indicator {\n\tposition: absolute;\n\tdisplay: none;\n\tz-index: 12;\n\tpadding: 3px 7px;\n\tborder-radius: 4px;\n\tbackground: var(--notectl-fg);\n\tcolor: var(--notectl-bg);\n\tfont: 12px/1.4 monospace;\n\tpointer-events: none;\n\twhite-space: nowrap;\n}\n\n.ntbl-resize-indicator--visible {\n\tdisplay: block;\n}\n\n.ntbl-container--resizing-column,\n.ntbl-container--resizing-column * {\n\tcursor: col-resize !important;\n\tuser-select: none !important;\n}\n\n.ntbl-container--resizing-row,\n.ntbl-container--resizing-row * {\n\tcursor: row-resize !important;\n\tuser-select: none !important;\n}\n\n.ntbl-handle:hover .ntbl-handle-delete,\n.ntbl-handle:focus-within .ntbl-handle-delete {\n\topacity: 1;\n\ttransform: scale(1);\n}\n\n.ntbl-handle-delete:hover,\n.ntbl-handle-delete:focus-visible {\n\tbackground: var(--notectl-danger-muted);\n\tcolor: var(--notectl-danger);\n}\n\n.ntbl-handle-delete:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n/* --- Insert Lines --- */\n.ntbl-insert-line {\n\tposition: absolute;\n\tpointer-events: none;\n\topacity: 0;\n\ttransition: opacity 0.15s ease;\n\tz-index: 6;\n}\n\n.ntbl-insert-line--visible {\n\topacity: 1;\n\tpointer-events: auto;\n}\n\n.ntbl-insert-line--horizontal {\n\theight: 2px;\n\tbackground: linear-gradient(\n\t\t90deg,\n\t\ttransparent,\n\t\tvar(--notectl-primary) 8%,\n\t\tvar(--notectl-primary) 92%,\n\t\ttransparent\n\t);\n\tbox-shadow: 0 0 6px var(--notectl-focus-ring);\n}\n\n.ntbl-insert-line--vertical {\n\twidth: 2px;\n\tbackground: linear-gradient(\n\t\t180deg,\n\t\ttransparent,\n\t\tvar(--notectl-primary) 8%,\n\t\tvar(--notectl-primary) 92%,\n\t\ttransparent\n\t);\n\tbox-shadow: 0 0 6px var(--notectl-focus-ring);\n}\n\n/* --- Insert Button on Line --- */\n.ntbl-insert-btn {\n\tposition: absolute;\n\twidth: 20px;\n\theight: 20px;\n\tborder-radius: 50%;\n\tbackground: var(--notectl-surface-raised);\n\tborder: 2px solid var(--notectl-primary);\n\tcolor: var(--notectl-primary);\n\tcursor: pointer;\n\tpointer-events: all;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpadding: 0;\n\tbox-shadow: 0 2px 8px var(--notectl-focus-ring);\n\ttransition: background 0.15s, color 0.15s,\n\t\ttransform 0.15s, box-shadow 0.15s;\n}\n\n.ntbl-insert-line--horizontal .ntbl-insert-btn {\n\tleft: 50%;\n\ttop: -9px;\n\ttransform: translateX(-50%);\n}\n\n.ntbl-insert-line--vertical .ntbl-insert-btn {\n\ttop: 50%;\n\tinset-inline-start: -9px;\n\ttransform: translateY(-50%);\n}\n\n.ntbl-insert-btn:hover,\n.ntbl-insert-btn:focus-visible {\n\tbackground: var(--notectl-primary);\n\tcolor: var(--notectl-primary-fg);\n\tbox-shadow: 0 2px 12px var(--notectl-focus-ring);\n}\n\n.ntbl-insert-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-insert-line--horizontal .ntbl-insert-btn:hover {\n\ttransform: translateX(-50%) scale(1.2);\n}\n\n.ntbl-insert-line--vertical .ntbl-insert-btn:hover {\n\ttransform: translateY(-50%) scale(1.2);\n}\n\n/* --- Add Row / Add Column Zones --- */\n.ntbl-add-zone {\n\tposition: absolute;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tcursor: pointer;\n\tuser-select: none;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.2s ease,\n\t\tborder-color 0.2s ease;\n}\n\n.ntbl-container:hover .ntbl-add-zone,\n.ntbl-container:focus-within .ntbl-add-zone {\n\topacity: 1;\n}\n\n.ntbl-container.notectl-table--selected .ntbl-add-zone {\n\topacity: 1;\n}\n\n.ntbl-delete-table-btn {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 0;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid var(--notectl-danger);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-surface-raised);\n\tcolor: var(--notectl-danger);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.15s, border-color 0.15s;\n\tz-index: 7;\n}\n\n.ntbl-container:hover .ntbl-delete-table-btn,\n.ntbl-container:focus-within .ntbl-delete-table-btn,\n.ntbl-container.notectl-table--selected .ntbl-delete-table-btn {\n\topacity: 1;\n}\n\n.ntbl-delete-table-btn:hover,\n.ntbl-delete-table-btn:focus-visible {\n\tbackground: var(--notectl-danger-muted);\n\tborder-color: var(--notectl-danger);\n}\n\n.ntbl-delete-table-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n/* --- Context Menu Discovery Hint --- */\n.ntbl-context-hint {\n\tposition: absolute;\n\ttop: 4px;\n\tinset-inline-end: 0;\n\tfont-size: 11px;\n\tcolor: var(--notectl-fg-muted);\n\tpadding: 2px 8px;\n\tborder-radius: 4px;\n\topacity: 0;\n\ttransition: opacity 0.2s ease;\n\tpointer-events: none;\n\twhite-space: nowrap;\n\tz-index: 5;\n}\n\n.ntbl-container:hover .ntbl-context-hint,\n.ntbl-container:focus-within .ntbl-context-hint,\n.ntbl-container.notectl-table--selected .ntbl-context-hint {\n\topacity: 1;\n}\n\n/* --- Table Actions Button --- */\n.ntbl-actions-btn {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 48px;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-surface-raised);\n\tcolor: var(--notectl-fg-muted);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.15s, border-color 0.15s;\n\tz-index: 7;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n.ntbl-container:hover .ntbl-actions-btn,\n.ntbl-container:focus-within .ntbl-actions-btn,\n.ntbl-container.notectl-table--selected .ntbl-actions-btn {\n\topacity: 1;\n}\n\n.ntbl-actions-btn:hover,\n.ntbl-actions-btn:focus-visible {\n\tbackground: var(--notectl-hover-bg);\n\tborder-color: var(--notectl-primary);\n}\n\n.ntbl-actions-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n/* --- Border Color Button --- */\n.ntbl-border-color-btn {\n\tposition: absolute;\n\ttop: 0;\n\tinset-inline-start: 24px;\n\twidth: 20px;\n\theight: 20px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-surface-raised);\n\tcolor: var(--notectl-fg-muted);\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\topacity: 0;\n\ttransition: opacity 0.2s ease, background 0.15s, border-color 0.15s;\n\tz-index: 7;\n\tcursor: pointer;\n\tpadding: 0;\n}\n\n.ntbl-container:hover .ntbl-border-color-btn,\n.ntbl-container:focus-within .ntbl-border-color-btn,\n.ntbl-container.notectl-table--selected .ntbl-border-color-btn {\n\topacity: 1;\n}\n\n.ntbl-border-color-btn:hover,\n.ntbl-border-color-btn:focus-visible {\n\tbackground: var(--notectl-hover-bg);\n\tborder-color: var(--notectl-primary);\n}\n\n.ntbl-border-color-btn:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-border-color-swatch {\n\twidth: 10px;\n\theight: 10px;\n\tborder-radius: 2px;\n\tborder: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n/* --- Context Menu Keyboard Hint --- */\n.notectl-table-context-menu__hint {\n\tpadding: 4px 12px 6px;\n\tfont-size: 11px;\n\tcolor: var(--notectl-fg-muted);\n\tborder-top: 1px solid var(--notectl-border);\n\tmargin-top: 4px;\n\ttext-align: center;\n\tuser-select: none;\n}\n\n/* --- Context Menu Focus --- */\n.notectl-table-context-menu button:focus-visible {\n\toutline: none;\n\tbackground: var(--notectl-primary-muted);\n\tbox-shadow: inset 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.notectl-table-context-menu [role="separator"] {\n\tborder: none;\n\tborder-top: 1px solid var(--notectl-border);\n\tmargin: 4px 0;\n\theight: 0;\n}\n\n/* --- Precise size editor --- */\n.notectl-table-size-editor {\n\tbox-sizing: border-box;\n\twidth: 340px;\n\tmax-width: calc(100vw - 16px);\n\tmin-width: 260px;\n\tpadding: 12px;\n}\n\n.notectl-table-size-editor__title {\n\tmargin-block-end: 10px;\n\tfont-weight: 600;\n}\n\n.notectl-table-size-editor__field {\n\tdisplay: grid;\n\tgap: 4px;\n\tmargin-block-end: 10px;\n\tfont-size: 13px;\n}\n\n.notectl-table-size-editor__input-wrap {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n}\n\n.notectl-table-size-editor input {\n\tbox-sizing: border-box;\n\tmin-width: 0;\n\twidth: 100%;\n\tpadding: 6px 8px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-bg);\n\tcolor: var(--notectl-fg);\n\tfont: inherit;\n}\n\n.notectl-table-size-editor input:focus-visible {\n\toutline: 2px solid var(--notectl-focus-ring);\n\toutline-offset: 1px;\n}\n\n.notectl-table-size-editor input[aria-invalid="true"] {\n\tborder-color: var(--notectl-danger);\n}\n\n.notectl-table-size-editor__unit {\n\tcolor: var(--notectl-fg-muted);\n}\n\n.notectl-table-size-editor__error {\n\tmin-height: 1.2em;\n\tcolor: var(--notectl-danger);\n\tfont-size: 11px;\n}\n\n.notectl-table-size-editor__resets,\n.notectl-table-size-editor__actions {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 4px;\n}\n\n.notectl-table-size-editor__resets {\n\tpadding-block-end: 10px;\n\tborder-block-end: 1px solid var(--notectl-border);\n}\n\n.notectl-table-size-editor__actions {\n\tjustify-content: flex-end;\n\tpadding-block-start: 10px;\n}\n\n.notectl-table-size-editor button {\n\twidth: auto;\n\tpadding: 6px 8px;\n\tborder-radius: 4px;\n\tfont-size: 12px;\n}\n\n.notectl-table-context-menu .notectl-table-size-editor__apply {\n\tbackground: var(--notectl-primary);\n\tcolor: var(--notectl-primary-fg);\n}\n\n.notectl-table-context-menu .notectl-table-size-editor button:disabled {\n\topacity: 0.5;\n\tcursor: not-allowed;\n}\n\n/* Read-only tables keep semantic dimensions but expose no mutation affordances. */\n.ntbl-container[data-notectl-table-readonly] {\n\tpadding-block-start: 0;\n\tpadding-inline-start: 0;\n}\n\n.ntbl-container[data-notectl-table-readonly] > :is(\n\t.ntbl-col-bar,\n\t.ntbl-row-bar,\n\t.ntbl-col-resize-bar,\n\t.ntbl-row-resize-bar,\n\t.ntbl-insert-line,\n\t.ntbl-add-zone,\n\t.ntbl-delete-table-btn,\n\t.ntbl-border-color-btn,\n\t.ntbl-actions-btn,\n\t.ntbl-context-hint,\n\t.ntbl-resize-indicator\n) {\n\tdisplay: none !important;\n}\n\n.ntbl-add-row {\n\tbottom: 0;\n\theight: 24px;\n\tborder: 1px dashed var(--notectl-border);\n\tborder-end-start-radius: 6px;\n\tborder-end-end-radius: 6px;\n\tborder-block-start: none;\n\tcolor: var(--notectl-fg-muted);\n\ttransform: translateY(100%);\n}\n\n.ntbl-add-row:hover,\n.ntbl-add-row:focus-visible {\n\tbackground: var(--notectl-primary-muted);\n\tborder-color: var(--notectl-primary);\n\tcolor: var(--notectl-primary);\n}\n\n.ntbl-add-row:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-add-col {\n\tinset-inline-end: 0;\n\ttop: 24px;\n\twidth: 24px;\n\tborder: 1px dashed var(--notectl-border);\n\tborder-start-end-radius: 6px;\n\tborder-end-end-radius: 6px;\n\tborder-inline-start: none;\n\tcolor: var(--notectl-fg-muted);\n\ttransform: translateX(100%);\n}\n\n[dir="rtl"] .ntbl-add-col {\n\ttransform: translateX(-100%);\n}\n\n.ntbl-add-col:hover,\n.ntbl-add-col:focus-visible {\n\tbackground: var(--notectl-primary-muted);\n\tborder-color: var(--notectl-primary);\n\tcolor: var(--notectl-primary);\n}\n\n.ntbl-add-col:focus-visible {\n\toutline: none;\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n}\n\n.ntbl-add-icon {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\ttransition: transform 0.2s ease;\n}\n\n.ntbl-add-zone:hover .ntbl-add-icon {\n\ttransform: scale(1.15);\n}\n\n@media print {\n\t.notectl-table-wrapper {\n\t\toverflow: visible;\n\t}\n\n\t.ntbl-container {\n\t\tpadding: 0;\n\t}\n\n\t.ntbl-container > [data-notectl-no-print] {\n\t\tdisplay: none !important;\n\t}\n}\n'),this.context=t,this.registerNodeSpecs(t),this.registerNodeViews(t),Xt(t,this.locale),t.registerCommand("resetTableBorderColor",()=>at(t,this.locale)),function(t,e,n={}){t.registerKeymap({Tab:()=>function(t,e){return se(t,(n,o,r)=>!!de(t,r,1,!1)||!t.isReadOnly?.()&&Ft(t,e))}(t,e),"Shift-Tab":()=>function(t){return se(t,(e,n,o)=>de(t,o,-1,!1)||!0)}(t),Backspace:()=>function(t){return se(t,(e,n,o)=>{if(!h(n))return!1;if(0!==n.anchor.offset)return!1;if(!function(t,e){const n=t.getBlock(e.tableId);return"table"===n?.type&&q(n).cells[0]?.cell.id===e.cellId}(e,o))return!1;const r=Q(e,o.cellId);return n.anchor.blockId===r&&he(t,o.tableId)})}(t),Delete:()=>function(t){return se(t,(e,n,o)=>{if(!h(n))return!1;const r=e.getBlock(n.anchor.blockId);if(!r)return!1;const l=i(r);if(n.anchor.offset!==l)return!1;if(!function(t,e){const n=t.getBlock(e.tableId);if(!n||"table"!==n.type)return!1;const o=q(n).cells;return o[o.length-1]?.cell.id===e.cellId}(e,o))return!1;const s=tt(e,o.cellId);return n.anchor.blockId===s&&he(t,o.tableId)})}(t),ArrowDown:()=>function(t){return se(t,(e,n,o)=>{const r=tt(e,o.cellId);return n.anchor.blockId===r&&(o.rowEnd>=o.totalRows?ae(t):ue(t,o.tableId,o.rowEnd,o.colIndex))})}(t),ArrowUp:()=>function(t){return se(t,(e,n,o)=>{const r=Q(e,o.cellId);return n.anchor.blockId===r&&!(o.rowIndex<=0)&&ue(t,o.tableId,o.rowIndex-1,o.colIndex)})}(t),ArrowRight:()=>function(t){return se(t,(e,n,o)=>{if(!h(n))return!1;const r=e.getBlock(n.anchor.blockId);if(!r)return!1;const l=i(r);if(n.anchor.offset!==l)return!1;const s=tt(e,o.cellId);return n.anchor.blockId===s&&(de(t,o,1,!1)||!0)})}(t),ArrowLeft:()=>function(t){return se(t,(e,n,o)=>{if(!h(n))return!1;if(0!==n.anchor.offset)return!1;const r=Q(e,o.cellId);return n.anchor.blockId===r&&(de(t,o,-1,!0)||!0)})}(t),Escape:()=>ae(t),"Shift-F10":()=>function(t,e,n){return!t.isReadOnly?.()&&se(t,(o,r,i)=>{const l=t.getContainer(),s=l.querySelector(`[data-block-id="${i.cellId}"]`);if(!s)return!1;const a=s.getBoundingClientRect(),c=new DOMRect(a.left+a.width/2,a.bottom,0,0),d=l.querySelector(`[data-block-id="${i.tableId}"].ntbl-container`)??l;le.get(t)?.close();const u=W(l)??s,h=ie(d,t,i.tableId,c,()=>{le.delete(t)},e,void 0,{sizeTarget:ce(t,i),sizingConfig:n,restoreFocusTo:u});return le.set(t,h),!0})}(t,e,n)},{priority:"context"})}(t,this.locale,this.config),this.registerToolbarItem(t),this.selectionService=function(t){let e=null,n=null,o=[],r=/* @__PURE__ */new Set;function i(){const t=l();if(!t)return o=[],void(r=/* @__PURE__ */new Set);const{grid:e,range:n}=t,i=e.cellsInRange({fromRow:n.fromRow,fromColumn:n.fromCol,toRow:n.toRow,toColumn:n.toCol}).map(t=>t.cell.id);o=i,r=new Set(i)}function l(){if(!e||!n)return null;const o=t.getState().getBlock(e.tableId);if(!o||"table"!==o.type)return s(),null;const r=q(o);return mt(r)!==n?(s(),null):{range:e,grid:r}}function s(){e=null,n=null,o=[],r=/* @__PURE__ */new Set}const a={getSelectedRange:()=>l()?.range??null,setSelectedRange(o){const r=t.getState();let l=null;if(o){const r=t.getState().getBlock(o.tableId),i="table"===r?.type?q(r):null,a=[o.fromRow,o.fromCol,o.toRow,o.toCol],c=i&&a.every(Number.isInteger)&&o.fromRow>=0&&o.toRow>=0&&o.fromCol>=0&&o.toCol>=0&&o.fromRow<i.rowCount&&o.toRow<i.rowCount&&o.fromCol<i.columnCount&&o.toCol<i.columnCount&&i?F(i,{fromRow:o.fromRow,fromColumn:o.fromCol,toRow:o.toRow,toColumn:o.toCol}):null;i&&c?(e={tableId:o.tableId,fromRow:c.fromRow,fromCol:c.fromColumn,toRow:c.toRow,toCol:c.toColumn},n=mt(i),l=i.cellAt(c.fromRow,c.fromColumn)?.cell.id??null):s()}else s();i();const a=p(r.selection)?G(r,r.selection.anchor.blockId):null,c=l&&a?.tableId!==o?.tableId?m(Q(r,l),0):r.selection;t.dispatch(r.transaction("api").setSelection(c).build())},clearSelectionSilent(){s()},getSelectedCellIds:()=>(i(),o),isSelected:t=>(i(),r.has(t))};return t.registerService(bt,a),a}(t),function(t,e={}){const n=wt(e),o={getSelectionSize(){const e=St(t);return e?kt(e):null},setSelectionSize(e){if(t.isReadOnly())return!1;const o=St(t);return!!o&&At(t,o,e,n)},resetSelectionSize(e){if(t.isReadOnly())return!1;const o=St(t);return!!o&&Et(t,o,e,n)},getSize(e){const n=Rt(t.getState(),e);return n?kt(n):null},setSize(e,o){if(t.isReadOnly())return!1;const r=Rt(t.getState(),e);return!!r&&At(t,r,o,n)},resetSize(e,o){if(t.isReadOnly())return!1;const r=Rt(t.getState(),e);return!!r&&Et(t,r,o,n)}};t.registerService(gt,o)}(t,this.config)}onReady(){this.context&&this.selectionService&&(this.cleanupMouseSelection=function(t,e){const n=t.getContainer();let o=null,r=!1;function i(i){if(0!==i.button||t.isReadOnly?.())return;if(!L(i,n))return;const l=i.target.closest("td[data-block-id]");if(!l)return o=null,r=!1,void e.setSelectedRange(null);if(i.shiftKey){if(o){const n=G(t.getState(),l.getAttribute("data-block-id"));if(!n||n.tableId!==o.tableId)return o=null,void e.setSelectedRange(null);i.preventDefault(),e.setSelectedRange(pt(o,n))}}else{e.setSelectedRange(null);const n=G(t.getState(),l.getAttribute("data-block-id"));if(!n)return o=null,void(r=!1);o={tableId:n.tableId,cellId:n.cellId,rowStart:n.rowIndex,rowEnd:n.rowEnd,colStart:n.colIndex,colEnd:n.colEnd},r=!0}}function l(n){if(t.isReadOnly?.()||!r||!o)return;const i=n.target.closest("td[data-block-id]");if(!i)return;const l=G(t.getState(),i.getAttribute("data-block-id"));l&&l.tableId===o.tableId&&l.cellId!==o.cellId&&(n.preventDefault(),e.setSelectedRange(pt(o,l)))}function s(){r=!1}return n.addEventListener("mousedown",i),n.addEventListener("mousemove",l),document.addEventListener("mouseup",s),()=>{n.removeEventListener("mousedown",i),n.removeEventListener("mousemove",l),document.removeEventListener("mouseup",s)}}(this.context,this.selectionService),this.cleanupClipboard=function(t,e){const n=t.getContainer(),o=o=>{L(o,n)&&ut(o,t,e)},i=o=>{L(o,n)&&(t.isReadOnly?.()||ut(o,t,e)&&function(t,e){const n=e.getSelectedRange();if(!n)return;const o=t.getState(),i=o.getBlock(n.tableId);if(!i||"table"!==i.type)return;const a=q(i).cellsInRange({fromRow:n.fromRow,fromColumn:n.fromCol,toRow:n.toRow,toColumn:n.toCol});if(0===a.length)return;const d=o.transaction("input");let u=null;for(const h of a){const t=o.getNodePath(h.cell.id);if(!t)return;for(let o=s(h.cell).length-1;o>=0;o--)d.removeNode(t,o);const e=r(),n=l(f("paragraph"),[c("")],e);d.insertNode(t,0,n),u??=e}u&&(d.setSelection(m(u,0)),t.dispatch(d.build()),e.clearSelectionSilent())}(t,e))};return n.addEventListener("copy",o,!0),n.addEventListener("cut",i,!0),()=>{n.removeEventListener("copy",o,!0),n.removeEventListener("cut",i,!0)}}(this.context,this.selectionService))}destroy(){this.context&&re(this.context),this.cleanupMouseSelection?.(),this.cleanupMouseSelection=null,this.cleanupClipboard?.(),this.cleanupClipboard=null,this.selectionService=null,this.controls.clear(),this.context=null}onReadOnlyChange(t){for(const e of this.controls)e.setReadOnly(t);t&&this.context&&re(this.context)}decorations(t){if(!this.selectionService)return k.empty;if(!this.selectionService.getSelectedRange())return k.empty;const e=t.selection;if(!p(e)||!et(t,e.anchor.blockId))return this.selectionService.clearSelectionSilent(),k.empty;const n=this.selectionService.getSelectedCellIds();if(0===n.length)return k.empty;const o=[];for(const r of n)o.push(I(r,{class:"notectl-table-cell--selected"}));return k.create(o)}registerNodeSpecs(e){const n=this.config;e.registerNodeSpec({type:"table",attrs:{columnWidthsPx:{allowArray:!0}},group:"block",content:{allow:["table_row"],min:1},isolating:!0,selectable:!0,normalizeAttrs:t=>function(t,e){const n=De(t.attrs,["borderColor","columnWidthsPx"]),o=t.attrs?.borderColor;("none"===o||"string"==typeof o&&O(o))&&(n.borderColor=o);const r=q(t),i=t.attrs?.columnWidthsPx;if(Array.isArray(i)&&r.columnCount>0){const t=Array.from({length:r.columnCount},(t,n)=>{const o=x(i[n]);return void 0===o?null:Math.min(e.maxColumnWidthPx,Math.max(e.minColumnWidthPx,o))});t.some(t=>null!==t)&&(n.columnWidthsPx=Object.freeze(t))}return Object.keys(n).length>0?n:void 0}(t,this.config),normalizeNode:Te,transformSelectionSlice:K,toDOM(t){const e=document.createElement("div");return e.className="notectl-table-wrapper",e.setAttribute("data-block-id",t.id),e.setAttribute("part","table"),e},toHTML(e,o,r){const i=e.attrs?.borderColor,l=xt(e,q(e).columnCount),s=function(e,n,o){const r=n.reduce((t,e)=>t+(e??o),0),i=`border-collapse: collapse; table-layout: fixed; ${n.length>0&&n.every(t=>null!==t)?`width: ${String(r)}px`:"width: 100%"}; min-width: ${String(r)}px`;return e?"none"===e?`${i}; --ntbl-bc: transparent`:O(e)?`${i}; --ntbl-bc: ${t(e)}`:i:i}(i,l,n.minColumnWidthPx);return`<table${r?.styleAttr(s)??` style="${s}"`}><colgroup>${l.map(t=>null===t?"<col>":`<col${y(S,"width",t,r)}>`).join("")}</colgroup><tbody>${o}</tbody></table>`},sanitize:{tags:["table","colgroup","col","thead","tbody","tfoot"],attrs:[S,"width","span"]}}),e.registerNodeSpec({type:"table_row",group:"table_content",content:{allow:["table_cell"],min:0},normalizeAttrs:t=>function(t,e){const n=De(t.attrs,["minHeightPx"]),o=x(t.attrs?.minHeightPx);return void 0!==o&&(n.minHeightPx=Math.min(e.maxRowHeightPx,Math.max(e.minRowHeightPx,o))),Object.keys(n).length>0?n:void 0}(t,this.config),toDOM(t){const e=document.createElement("tr");return e.setAttribute("data-block-id",t.id),e.setAttribute("role","row"),e.setAttribute("part","table-row"),e},toHTML:(t,e,n)=>`<tr${y(R,"height",t.attrs?.minHeightPx,n)}>${e}</tr>`,sanitize:{tags:["tr"],attrs:[R,"height"]}}),e.registerNodeSpec({type:"table_cell",group:"table_content",content:{allow:["paragraph","list_item","heading","blockquote","image","video","horizontal_rule"],min:1},isolating:!0,normalizeAttrs:$e,toDOM(t){const e=document.createElement("td");return e.setAttribute("data-block-id",t.id),e.setAttribute("role","cell"),e.setAttribute("part","table-cell"),e},toHTML(t,e,n){const o=t.attrs?.colspan??1,r=t.attrs?.rowspan??1,i=[n?.styleAttr(Be)??` style="${Be}"`];return o>1&&i.push(` colspan="${o}"`),r>1&&i.push(` rowspan="${r}"`),`<td${i.join("")}>${e}</td>`},sanitize:{tags:["td","th"],attrs:["colspan","rowspan"]}})}registerNodeViews(t){t.getSchemaRegistry(),t.registerNodeView("table",function(t,e,n=nt,o=ze,r={}){return(t,i,l)=>{let c=t;const d=document.createElement("div");d.className="ntbl-container",d.setAttribute("data-block-id",t.id),d.setAttribute("data-selectable","true");const u=document.createElement("div");u.className="notectl-table-wrapper",u.setAttribute("part","table");const h=document.createElement("table");h.className="notectl-table",h.setAttribute("role","table");const b=document.createElement("colgroup");b.className="notectl-table-columns",h.appendChild(b);const m=s(t).length,p=q(t).columnCount;h.setAttribute("aria-label",n.tableAriaLabel(m,p)),h.setAttribute("aria-description",n.tableAriaDescription);const f=document.createElement("tbody");h.appendChild(f),u.appendChild(h),d.appendChild(u),Ie(h,t.attrs?.borderColor),ke(h,b,t,o);const g=document.createElement("div");g.className="notectl-sr-only",g.setAttribute("aria-live","polite"),g.setAttribute("aria-atomic","true"),d.appendChild(g);const w=function(t,e,n,o,r,i,l,s){return new Re(t,e,n,o,r,i,l,s)}(d,h,t,i,l,e,n,o);w.setReadOnly(e?.isReadOnly?.()??!1),r.onControlsCreated?.(w);let x=!1;const v=requestAnimationFrame(()=>{x||(Ie(h,c.attrs?.borderColor),ke(h,b,c,o),Ee(f,c))});let C=null,y=t.id;const S=t=>{if(!e||e.isReadOnly?.())return;t.preventDefault(),t.stopPropagation(),C?.close();const r=new DOMRect(t.clientX,t.clientY,0,0),i=t.target?.closest("td[data-block-id]"),l=i?.getAttribute("data-block-id"),s=l?G(e.getState(),l):null,a=!!l&&(e.getService?.(bt)?.isSelected(l)??!1),c=W(d)??(i instanceof HTMLElement?i:null);C=ie(d,e,y,r,()=>{C=null},n,void 0,{sizeTarget:s&&!a?{kind:"cell",tableId:s.tableId,row:s.rowIndex,column:s.colIndex}:void 0,sizingConfig:o,restoreFocusTo:c})};return h.addEventListener("contextmenu",S),{dom:d,contentDOM:f,update(t){if("table"!==t.type)return!1;if(!function(t,e){if(t.id!==e.id||t.htmlId!==e.htmlId)return!1;if(!a(Pe(t.attrs),Pe(e.attrs)))return!1;const n=s(t),o=s(e);return n.length===o.length&&n.every((t,e)=>{const n=o[e];return void 0!==n&&t.id===n.id&&t.htmlId===n.htmlId&&t.children===n.children&&a(Me(t.attrs),Me(n.attrs))})}(c,t))return!1;y=t.id,d.setAttribute("data-block-id",t.id),d.setAttribute("data-selectable","true");const e=s(t).length,r=q(t).columnCount;return h.setAttribute("aria-label",n.tableAriaLabel(e,r)),Ie(h,t.attrs?.borderColor),ke(h,b,t,o),Ee(f,t),w.update(t),c=t,!0},destroy(){x=!0,cancelAnimationFrame(v),C?.destroy(),h.removeEventListener("contextmenu",S),r.onControlsDestroyed?.(w),w.destroy()},selectNode(){d.classList.add("notectl-table--selected")},deselectNode(){d.classList.remove("notectl-table--selected")}}}}(0,t,this.locale,this.config,{onControlsCreated:t=>{this.controls.add(t)},onControlsDestroyed:t=>{this.controls.delete(t)}})),t.registerNodeView("table_row",(t,e,n)=>{let o=t;const r=document.createElement("tr");r.setAttribute("data-block-id",t.id),r.setAttribute("role","row"),r.setAttribute("part","table-row"),Ae(r,t);let i=!1;const l=requestAnimationFrame(()=>{i||Ae(r,o)});return{dom:r,contentDOM:r,update:t=>"table_row"===t.type&&t.children===o.children&&(r.setAttribute("data-block-id",t.id),Ae(r,t),o=t,!0),destroy(){i=!0,cancelAnimationFrame(l)}}}),t.registerNodeView("table_cell",(t,e,n)=>{const o=document.createElement("td");o.setAttribute("data-block-id",t.id),o.setAttribute("role","cell"),o.setAttribute("part","table-cell");const r=t.attrs?.colspan??1,i=t.attrs?.rowspan??1;r>1&&(o.colSpan=r),i>1&&(o.rowSpan=i);const l=t.attrs?.align;return l&&"left"!==l&&B(o,"textAlign",l),{dom:o,contentDOM:o,update(t){if("table_cell"!==t.type)return!1;o.setAttribute("data-block-id",t.id);const e=t.attrs?.colspan??1,n=t.attrs?.rowspan??1;return e>1?o.colSpan=e:o.removeAttribute("colspan"),n>1?o.rowSpan=n:o.removeAttribute("rowspan"),!1},destroy(){}}})}registerToolbarItem(t){const e=this.config.maxPickerRows??8,n=this.config.maxPickerCols??8;t.registerToolbarItem({id:"table",group:"insert",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 3h18v18H3V3zm2 2v4h6V5H5zm8 0v4h6V5h-6zm-8 6v4h6v-4H5zm8 0v4h6v-4h-6zm-8 6v4h6v-4H5zm8 0v4h6v-4h-6z"/></svg>',label:this.locale.insertTable,tooltip:this.locale.insertTable,command:"insertTable",popupType:"gridPicker",popupConfig:{maxRows:e,maxCols:n,onSelect:(e,n)=>{jt(t,e,n)}},isActive:t=>!!p(t.selection)&&et(t,t.selection.anchor.blockId)})}};function Ne(t,e){return"number"==typeof t&&Number.isInteger(t)&&t>0?Math.min(t,100):e}function $e(t){const e=De(t.attrs,["colspan","rowspan"]),n=V(t.attrs?.colspan),o=V(t.attrs?.rowspan);return n>1&&(e.colspan=n),o>1&&(e.rowspan=o),Object.keys(e).length>0?e:void 0}function Te(t){const e=s(t);let n=!1;const o=e.map((t,o)=>{let r=!1;const i=s(t).map(t=>{const n=V(t.attrs?.rowspan),i=Math.min(n,e.length-o);if(i===n)return t;r=!0;const{rowspan:l,...s}=t.attrs??{},a={...s,...i>1?{rowspan:i}:{}},{attrs:c,...d}=t;return Object.keys(a).length>0?{...d,attrs:a}:d});return r?(n=!0,{...t,children:i}):t});return n?{...t,children:o}:t}function De(t,e){const n={};for(const[o,r]of Object.entries(t??{})){if(e.includes(o))continue;const t=We(r);void 0!==t&&(n[o]=t)}return n}function We(t){if("string"==typeof t||"boolean"==typeof t)return t;if("number"==typeof t)return Number.isFinite(t)?t:void 0;if(!Array.isArray(t))return;const e=[];for(const n of t)if(null===n||"string"==typeof n||"boolean"==typeof n)e.push(n);else{if("number"!=typeof n||!Number.isFinite(n))return;e.push(n)}return Object.freeze(e)}export{nt as a,bt as i,ft as n,rt as o,gt as r,He as t};
2
+ //# sourceMappingURL=TablePlugin-CPvg9YZS.mjs.map