@forgedevstack/ink 1.1.9 → 1.2.1

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 (247) hide show
  1. package/CHANGELOG.md +16 -1
  2. package/dist/common-components/Box/Box.cjs +1 -1
  3. package/dist/common-components/Box/Box.js +7 -6
  4. package/dist/common-components/Button/Button.cjs +1 -1
  5. package/dist/common-components/Button/Button.js +9 -8
  6. package/dist/common-components/Canvas/Canvas.cjs +1 -1
  7. package/dist/common-components/Canvas/Canvas.js +3 -2
  8. package/dist/common-components/ContextMenu/ContextMenu.cjs +1 -1
  9. package/dist/common-components/ContextMenu/ContextMenu.js +3 -2
  10. package/dist/common-components/Field/Field.cjs +1 -1
  11. package/dist/common-components/Field/Field.js +11 -10
  12. package/dist/common-components/icons/GripIcon.cjs +1 -1
  13. package/dist/common-components/icons/GripIcon.js +3 -2
  14. package/dist/components/InkEditor/InkEditor.cjs +1 -1
  15. package/dist/components/InkEditor/InkEditor.d.ts.map +1 -1
  16. package/dist/components/InkEditor/InkEditor.js +1308 -1028
  17. package/dist/components/InkEditor/components/AiPanel/AiPanel.cjs +1 -1
  18. package/dist/components/InkEditor/components/AiPanel/AiPanel.js +13 -12
  19. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.cjs +1 -0
  20. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.const.cjs +1 -0
  21. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.const.d.ts +20 -0
  22. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.const.d.ts.map +1 -0
  23. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.const.js +25 -0
  24. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.d.ts +4 -0
  25. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.d.ts.map +1 -0
  26. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.js +61 -0
  27. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.types.d.ts +11 -0
  28. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.types.d.ts.map +1 -0
  29. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.utils.cjs +1 -0
  30. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.utils.d.ts +19 -0
  31. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.utils.d.ts.map +1 -0
  32. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.utils.js +30 -0
  33. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.utils.test.d.ts +2 -0
  34. package/dist/components/InkEditor/components/AiSelectionBubble/AiSelectionBubble.utils.test.d.ts.map +1 -0
  35. package/dist/components/InkEditor/components/AiSelectionBubble/index.d.ts +4 -0
  36. package/dist/components/InkEditor/components/AiSelectionBubble/index.d.ts.map +1 -0
  37. package/dist/components/InkEditor/components/BlockHandles/BlockHandles.cjs +1 -1
  38. package/dist/components/InkEditor/components/BlockHandles/BlockHandles.js +7 -6
  39. package/dist/components/InkEditor/components/CommentsPanel/CommentsPanel.cjs +1 -1
  40. package/dist/components/InkEditor/components/CommentsPanel/CommentsPanel.d.ts +2 -0
  41. package/dist/components/InkEditor/components/CommentsPanel/CommentsPanel.d.ts.map +1 -1
  42. package/dist/components/InkEditor/components/CommentsPanel/CommentsPanel.js +16 -15
  43. package/dist/components/InkEditor/components/ExcelSheetPanel/ExcelSheetPanel.cjs +1 -1
  44. package/dist/components/InkEditor/components/ExcelSheetPanel/ExcelSheetPanel.d.ts.map +1 -1
  45. package/dist/components/InkEditor/components/ExcelSheetPanel/ExcelSheetPanel.js +84 -97
  46. package/dist/components/InkEditor/components/FindReplace/FindReplace.cjs +1 -1
  47. package/dist/components/InkEditor/components/FindReplace/FindReplace.js +21 -20
  48. package/dist/components/InkEditor/components/GraphEditModal/GraphEditModal.cjs +1 -1
  49. package/dist/components/InkEditor/components/GraphEditModal/GraphEditModal.js +17 -16
  50. package/dist/components/InkEditor/components/GraphPicker/GraphPicker.cjs +1 -1
  51. package/dist/components/InkEditor/components/GraphPicker/GraphPicker.js +3 -2
  52. package/dist/components/InkEditor/components/HtmlSourcePanel/HtmlSourcePanel.cjs +1 -1
  53. package/dist/components/InkEditor/components/HtmlSourcePanel/HtmlSourcePanel.js +7 -6
  54. package/dist/components/InkEditor/components/ImageFrame/ImageFrame.cjs +1 -0
  55. package/dist/components/InkEditor/components/ImageFrame/ImageFrame.d.ts +8 -0
  56. package/dist/components/InkEditor/components/ImageFrame/ImageFrame.d.ts.map +1 -0
  57. package/dist/components/InkEditor/components/ImageFrame/ImageFrame.js +54 -0
  58. package/dist/components/InkEditor/components/ImageFrame/index.d.ts +3 -0
  59. package/dist/components/InkEditor/components/ImageFrame/index.d.ts.map +1 -0
  60. package/dist/components/InkEditor/components/InlineToolbar/InlineToolbar.cjs +1 -1
  61. package/dist/components/InkEditor/components/InlineToolbar/InlineToolbar.js +11 -10
  62. package/dist/components/InkEditor/components/MentionMenu/MentionMenu.cjs +1 -0
  63. package/dist/components/InkEditor/components/MentionMenu/MentionMenu.d.ts +16 -0
  64. package/dist/components/InkEditor/components/MentionMenu/MentionMenu.d.ts.map +1 -0
  65. package/dist/components/InkEditor/components/MentionMenu/MentionMenu.js +21 -0
  66. package/dist/components/InkEditor/components/MentionMenu/index.d.ts +3 -0
  67. package/dist/components/InkEditor/components/MentionMenu/index.d.ts.map +1 -0
  68. package/dist/components/InkEditor/components/OutlineRail/OutlineRail.cjs +1 -1
  69. package/dist/components/InkEditor/components/OutlineRail/OutlineRail.js +11 -10
  70. package/dist/components/InkEditor/components/PresenceStack/PresenceStack.cjs +1 -1
  71. package/dist/components/InkEditor/components/PresenceStack/PresenceStack.js +3 -2
  72. package/dist/components/InkEditor/components/RemoteCursors/RemoteCursors.cjs +1 -1
  73. package/dist/components/InkEditor/components/RemoteCursors/RemoteCursors.js +6 -5
  74. package/dist/components/InkEditor/components/SignPad/SignPad.cjs +1 -1
  75. package/dist/components/InkEditor/components/SignPad/SignPad.js +7 -6
  76. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.cjs +1 -1
  77. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.js +7 -6
  78. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.cjs +1 -1
  79. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.const.cjs +1 -1
  80. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.const.js +8 -7
  81. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.js +38 -38
  82. package/dist/components/InkEditor/components/ThemePicker/ThemePicker.cjs +1 -1
  83. package/dist/components/InkEditor/components/ThemePicker/ThemePicker.d.ts.map +1 -1
  84. package/dist/components/InkEditor/components/ThemePicker/ThemePicker.js +56 -39
  85. package/dist/components/InkEditor/components/TitleGallery/TitleGallery.cjs +1 -1
  86. package/dist/components/InkEditor/components/TitleGallery/TitleGallery.js +3 -2
  87. package/dist/components/InkEditor/components/ToolbarButton/ToolbarButton.cjs +1 -1
  88. package/dist/components/InkEditor/components/ToolbarButton/ToolbarButton.js +13 -12
  89. package/dist/components/InkEditor/components/ToolbarColorPicker/ToolbarColorPicker.cjs +1 -1
  90. package/dist/components/InkEditor/components/ToolbarColorPicker/ToolbarColorPicker.js +9 -8
  91. package/dist/components/InkEditor/components/ToolbarCustomize/ToolbarCustomize.cjs +1 -1
  92. package/dist/components/InkEditor/components/ToolbarCustomize/ToolbarCustomize.const.cjs +1 -1
  93. package/dist/components/InkEditor/components/ToolbarCustomize/ToolbarCustomize.const.js +9 -8
  94. package/dist/components/InkEditor/components/ToolbarCustomize/ToolbarCustomize.js +9 -8
  95. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.cjs +1 -1
  96. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.js +19 -18
  97. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.utils.cjs +1 -1
  98. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.utils.js +6 -5
  99. package/dist/components/InkEditor/components/VersionHistory/VersionHistory.cjs +1 -0
  100. package/dist/components/InkEditor/components/VersionHistory/VersionHistory.d.ts +11 -0
  101. package/dist/components/InkEditor/components/VersionHistory/VersionHistory.d.ts.map +1 -0
  102. package/dist/components/InkEditor/components/VersionHistory/VersionHistory.js +22 -0
  103. package/dist/components/InkEditor/components/VersionHistory/index.d.ts +3 -0
  104. package/dist/components/InkEditor/components/VersionHistory/index.d.ts.map +1 -0
  105. package/dist/components/InkEditor/components/index.d.ts +7 -0
  106. package/dist/components/InkEditor/components/index.d.ts.map +1 -1
  107. package/dist/components/InkEditor/helpers/format.utils.cjs +3 -2
  108. package/dist/components/InkEditor/helpers/format.utils.d.ts +1 -0
  109. package/dist/components/InkEditor/helpers/format.utils.d.ts.map +1 -1
  110. package/dist/components/InkEditor/helpers/format.utils.js +106 -84
  111. package/dist/components/InkEditor/helpers/index.d.ts +1 -1
  112. package/dist/components/InkEditor/helpers/index.d.ts.map +1 -1
  113. package/dist/components/InkWorkspace/InkWorkspace.cjs +1 -1
  114. package/dist/components/InkWorkspace/InkWorkspace.d.ts.map +1 -1
  115. package/dist/components/InkWorkspace/InkWorkspace.js +136 -144
  116. package/dist/components/InkWorkspace/hooks/useInkWorkspace.cjs +1 -1
  117. package/dist/components/InkWorkspace/hooks/useInkWorkspace.js +8 -7
  118. package/dist/constants/contextMenu.const.cjs +1 -1
  119. package/dist/constants/contextMenu.const.d.ts +8 -0
  120. package/dist/constants/contextMenu.const.d.ts.map +1 -1
  121. package/dist/constants/contextMenu.const.js +30 -22
  122. package/dist/constants/defaultIcons.cjs +1 -1
  123. package/dist/constants/defaultIcons.js +6 -5
  124. package/dist/constants/defaults.const.cjs +1 -1
  125. package/dist/constants/defaults.const.d.ts.map +1 -1
  126. package/dist/constants/defaults.const.js +150 -138
  127. package/dist/constants/numbers.cjs +1 -1
  128. package/dist/constants/numbers.js +28 -27
  129. package/dist/constants/toolbar.const.cjs +1 -1
  130. package/dist/constants/toolbar.const.d.ts +7 -0
  131. package/dist/constants/toolbar.const.d.ts.map +1 -1
  132. package/dist/constants/toolbar.const.js +16 -9
  133. package/dist/constants/toolbarMenu.const.cjs +1 -1
  134. package/dist/constants/toolbarMenu.const.d.ts.map +1 -1
  135. package/dist/constants/toolbarMenu.const.js +25 -11
  136. package/dist/hooks/useInkCollaboration.cjs +1 -1
  137. package/dist/hooks/useInkCollaboration.js +15 -14
  138. package/dist/hooks/useToolbarOverflow.cjs +1 -1
  139. package/dist/hooks/useToolbarOverflow.js +12 -11
  140. package/dist/index.cjs +1 -1
  141. package/dist/index.js +145 -144
  142. package/dist/plugins/ai/demoProvider.cjs +1 -1
  143. package/dist/plugins/ai/demoProvider.js +3 -2
  144. package/dist/plugins/ai/index.cjs +1 -1
  145. package/dist/plugins/ai/index.js +25 -24
  146. package/dist/plugins/excel/excel.utils.cjs +1 -1
  147. package/dist/plugins/excel/excel.utils.js +17 -16
  148. package/dist/plugins/graph/graph.utils.cjs +1 -1
  149. package/dist/plugins/graph/graph.utils.js +7 -6
  150. package/dist/plugins/theme/inkTheme.cjs +1 -1
  151. package/dist/plugins/theme/inkTheme.js +22 -19
  152. package/dist/plugins/titles/titles.const.cjs +1 -1
  153. package/dist/plugins/titles/titles.const.js +9 -8
  154. package/dist/plugins/titles/titles.utils.cjs +1 -1
  155. package/dist/plugins/titles/titles.utils.js +3 -2
  156. package/dist/styles.css +1 -1
  157. package/dist/types/collab.types.d.ts +0 -1
  158. package/dist/types/collab.types.d.ts.map +1 -1
  159. package/dist/types/features.types.d.ts +1 -1
  160. package/dist/types/features.types.d.ts.map +1 -1
  161. package/dist/types/ink.types.d.ts +1 -3
  162. package/dist/types/ink.types.d.ts.map +1 -1
  163. package/dist/utils/blocks.utils.cjs +1 -1
  164. package/dist/utils/blocks.utils.js +19 -18
  165. package/dist/utils/collab.utils.cjs +1 -1
  166. package/dist/utils/collab.utils.js +7 -6
  167. package/dist/utils/comments.utils.cjs +1 -1
  168. package/dist/utils/comments.utils.d.ts +4 -0
  169. package/dist/utils/comments.utils.d.ts.map +1 -1
  170. package/dist/utils/comments.utils.js +26 -18
  171. package/dist/utils/comments.utils.test.d.ts +2 -0
  172. package/dist/utils/comments.utils.test.d.ts.map +1 -0
  173. package/dist/utils/exportDocument.utils.cjs +2 -0
  174. package/dist/utils/exportDocument.utils.d.ts +16 -0
  175. package/dist/utils/exportDocument.utils.d.ts.map +1 -0
  176. package/dist/utils/exportDocument.utils.js +85 -0
  177. package/dist/utils/exportDocument.utils.test.d.ts +2 -0
  178. package/dist/utils/exportDocument.utils.test.d.ts.map +1 -0
  179. package/dist/utils/formatPainter.utils.cjs +1 -0
  180. package/dist/utils/formatPainter.utils.d.ts +11 -0
  181. package/dist/utils/formatPainter.utils.d.ts.map +1 -0
  182. package/dist/utils/formatPainter.utils.js +20 -0
  183. package/dist/utils/formatPainter.utils.test.d.ts +2 -0
  184. package/dist/utils/formatPainter.utils.test.d.ts.map +1 -0
  185. package/dist/utils/history.utils.cjs +1 -1
  186. package/dist/utils/history.utils.js +3 -2
  187. package/dist/utils/image.utils.cjs +1 -0
  188. package/dist/utils/image.utils.d.ts +14 -0
  189. package/dist/utils/image.utils.d.ts.map +1 -0
  190. package/dist/utils/image.utils.js +33 -0
  191. package/dist/utils/image.utils.test.d.ts +2 -0
  192. package/dist/utils/image.utils.test.d.ts.map +1 -0
  193. package/dist/utils/index.d.ts +10 -3
  194. package/dist/utils/index.d.ts.map +1 -1
  195. package/dist/utils/license.utils.cjs +1 -1
  196. package/dist/utils/license.utils.js +8 -7
  197. package/dist/utils/markdown.utils.cjs +11 -0
  198. package/dist/utils/markdown.utils.d.ts +7 -0
  199. package/dist/utils/markdown.utils.d.ts.map +1 -0
  200. package/dist/utils/markdown.utils.js +87 -0
  201. package/dist/utils/markdown.utils.test.d.ts +2 -0
  202. package/dist/utils/markdown.utils.test.d.ts.map +1 -0
  203. package/dist/utils/mentions.utils.cjs +1 -0
  204. package/dist/utils/mentions.utils.d.ts +13 -0
  205. package/dist/utils/mentions.utils.d.ts.map +1 -0
  206. package/dist/utils/mentions.utils.js +23 -0
  207. package/dist/utils/mentions.utils.test.d.ts +2 -0
  208. package/dist/utils/mentions.utils.test.d.ts.map +1 -0
  209. package/dist/utils/outline.utils.cjs +1 -1
  210. package/dist/utils/outline.utils.js +9 -8
  211. package/dist/utils/paste.utils.cjs +1 -1
  212. package/dist/utils/paste.utils.d.ts +2 -0
  213. package/dist/utils/paste.utils.d.ts.map +1 -1
  214. package/dist/utils/paste.utils.js +53 -19
  215. package/dist/utils/paste.utils.test.d.ts +2 -0
  216. package/dist/utils/paste.utils.test.d.ts.map +1 -0
  217. package/dist/utils/premium.utils.cjs +1 -1
  218. package/dist/utils/premium.utils.js +12 -11
  219. package/dist/utils/selection.utils.cjs +1 -1
  220. package/dist/utils/selection.utils.js +3 -2
  221. package/dist/utils/slash.utils.cjs +1 -1
  222. package/dist/utils/slash.utils.js +10 -9
  223. package/dist/utils/table.utils.cjs +1 -1
  224. package/dist/utils/table.utils.d.ts +8 -0
  225. package/dist/utils/table.utils.d.ts.map +1 -1
  226. package/dist/utils/table.utils.js +78 -54
  227. package/dist/utils/toolbarStorage.utils.cjs +1 -1
  228. package/dist/utils/toolbarStorage.utils.js +15 -14
  229. package/dist/utils/trackChanges.utils.cjs +1 -1
  230. package/dist/utils/trackChanges.utils.js +9 -8
  231. package/dist/utils/typo.utils.cjs +1 -1
  232. package/dist/utils/typo.utils.js +8 -7
  233. package/dist/utils/versions.utils.cjs +1 -0
  234. package/dist/utils/versions.utils.d.ts +11 -0
  235. package/dist/utils/versions.utils.d.ts.map +1 -0
  236. package/dist/utils/versions.utils.js +36 -0
  237. package/dist/utils/versions.utils.test.d.ts +2 -0
  238. package/dist/utils/versions.utils.test.d.ts.map +1 -0
  239. package/dist/utils/words.utils.cjs +1 -1
  240. package/dist/utils/words.utils.js +3 -2
  241. package/package.json +1 -1
  242. package/dist/components/InkEditor/components/ThemePicker/hooks/index.d.ts +0 -3
  243. package/dist/components/InkEditor/components/ThemePicker/hooks/index.d.ts.map +0 -1
  244. package/dist/components/InkEditor/components/ThemePicker/hooks/useThemePickerMenu.cjs +0 -1
  245. package/dist/components/InkEditor/components/ThemePicker/hooks/useThemePickerMenu.d.ts +0 -13
  246. package/dist/components/InkEditor/components/ThemePicker/hooks/useThemePickerMenu.d.ts.map +0 -1
  247. package/dist/components/InkEditor/components/ThemePicker/hooks/useThemePickerMenu.js +0 -39
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../constants/numbers.cjs"),_=require("../constants/generals.const.cjs"),u=require("../constants/defaults.const.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");require("react");require("react-dom");const N=`${u.INK_OUTLINE_HEADING_SELECTOR}, [${u.INK_ATTR_TITLE}]`,O={H1:e.NUMBER_ONE,H2:e.NUMBER_TWO,H3:e.NUMBER_THREE},R=t=>t.hasAttribute(u.INK_ATTR_TITLE)?e.NUMBER_ONE:O[t.tagName]??null,f=t=>{if(!t)return[];const o=t.querySelectorAll(N),n=[];return o.forEach((r,l)=>{if(!(r instanceof HTMLElement))return;const i=R(r);if(!i)return;const s=(r.textContent??_.EMPTY_STRING).trim();s&&n.push({index:l,level:i,text:s})}),n},M=(t,o)=>{const r=t.querySelectorAll(N).item(o);r instanceof HTMLElement&&r.scrollIntoView({block:"center",behavior:"smooth"})},T=t=>{if(!t)return{line:e.NUMBER_ONE,col:e.NUMBER_ONE};const o=window.getSelection();if(!o||o.rangeCount===e.NUMBER_ZERO)return{line:e.NUMBER_ONE,col:e.NUMBER_ONE};const n=o.getRangeAt(e.NUMBER_ZERO);if(!t.contains(n.startContainer))return{line:e.NUMBER_ONE,col:e.NUMBER_ONE};const r=t.querySelectorAll("p, h1, h2, h3, h4, h5, h6, li, blockquote, pre");let l=e.NUMBER_ONE,i=!1;r.forEach((E,a)=>{i||!(E instanceof HTMLElement)||(E.contains(n.startContainer)||E===n.startContainer)&&(l=a+e.NUMBER_ONE,i=!0)});const s=i?r.item(l-e.NUMBER_ONE):null;if(!(s instanceof HTMLElement))return{line:l,col:e.NUMBER_ONE};const c=n.cloneRange();return c.selectNodeContents(s),c.setEnd(n.startContainer,n.startOffset),{line:l,col:c.toString().length+e.NUMBER_ONE}};exports.collectOutlineItems=f;exports.getCaretLineCol=T;exports.scrollOutlineHeading=M;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../constants/numbers.cjs"),_=require("../constants/generals.const.cjs"),u=require("../constants/defaults.const.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");require("./exportDocument.utils.cjs");require("react");require("react-dom");const N=`${u.INK_OUTLINE_HEADING_SELECTOR}, [${u.INK_ATTR_TITLE}]`,O={H1:e.NUMBER_ONE,H2:e.NUMBER_TWO,H3:e.NUMBER_THREE},R=t=>t.hasAttribute(u.INK_ATTR_TITLE)?e.NUMBER_ONE:O[t.tagName]??null,f=t=>{if(!t)return[];const o=t.querySelectorAll(N),n=[];return o.forEach((r,l)=>{if(!(r instanceof HTMLElement))return;const i=R(r);if(!i)return;const s=(r.textContent??_.EMPTY_STRING).trim();s&&n.push({index:l,level:i,text:s})}),n},M=(t,o)=>{const r=t.querySelectorAll(N).item(o);r instanceof HTMLElement&&r.scrollIntoView({block:"center",behavior:"smooth"})},T=t=>{if(!t)return{line:e.NUMBER_ONE,col:e.NUMBER_ONE};const o=window.getSelection();if(!o||o.rangeCount===e.NUMBER_ZERO)return{line:e.NUMBER_ONE,col:e.NUMBER_ONE};const n=o.getRangeAt(e.NUMBER_ZERO);if(!t.contains(n.startContainer))return{line:e.NUMBER_ONE,col:e.NUMBER_ONE};const r=t.querySelectorAll("p, h1, h2, h3, h4, h5, h6, li, blockquote, pre");let l=e.NUMBER_ONE,i=!1;r.forEach((E,a)=>{i||!(E instanceof HTMLElement)||(E.contains(n.startContainer)||E===n.startContainer)&&(l=a+e.NUMBER_ONE,i=!0)});const s=i?r.item(l-e.NUMBER_ONE):null;if(!(s instanceof HTMLElement))return{line:l,col:e.NUMBER_ONE};const c=n.cloneRange();return c.selectNodeContents(s),c.setEnd(n.startContainer,n.startOffset),{line:l,col:c.toString().length+e.NUMBER_ONE}};exports.collectOutlineItems=f;exports.getCaretLineCol=T;exports.scrollOutlineHeading=M;
@@ -4,26 +4,27 @@ import { INK_OUTLINE_HEADING_SELECTOR as h, INK_ATTR_TITLE as E } from "../const
4
4
  import "../constants/openai.const.js";
5
5
  import "react/jsx-runtime";
6
6
  import "./paste.utils.js";
7
+ import "./exportDocument.utils.js";
7
8
  import "react";
8
9
  import "react-dom";
9
- const f = `${h}, [${E}]`, g = {
10
+ const f = `${h}, [${E}]`, p = {
10
11
  H1: t,
11
12
  H2: N,
12
13
  H3: T
13
- }, p = (e) => e.hasAttribute(E) ? t : g[e.tagName] ?? null, S = (e) => {
14
+ }, g = (e) => e.hasAttribute(E) ? t : p[e.tagName] ?? null, U = (e) => {
14
15
  if (!e) return [];
15
16
  const o = e.querySelectorAll(f), n = [];
16
17
  return o.forEach((r, i) => {
17
18
  if (!(r instanceof HTMLElement)) return;
18
- const l = p(r);
19
+ const l = g(r);
19
20
  if (!l) return;
20
21
  const c = (r.textContent ?? _).trim();
21
22
  c && n.push({ index: i, level: l, text: c });
22
23
  }), n;
23
- }, U = (e, o) => {
24
+ }, b = (e, o) => {
24
25
  const r = e.querySelectorAll(f).item(o);
25
26
  r instanceof HTMLElement && r.scrollIntoView({ block: "center", behavior: "smooth" });
26
- }, b = (e) => {
27
+ }, d = (e) => {
27
28
  if (!e) return { line: t, col: t };
28
29
  const o = window.getSelection();
29
30
  if (!o || o.rangeCount === u)
@@ -43,7 +44,7 @@ const f = `${h}, [${E}]`, g = {
43
44
  return s.selectNodeContents(c), s.setEnd(n.startContainer, n.startOffset), { line: i, col: s.toString().length + t };
44
45
  };
45
46
  export {
46
- S as collectOutlineItems,
47
- b as getCaretLineCol,
48
- U as scrollOutlineHeading
47
+ U as collectOutlineItems,
48
+ d as getCaretLineCol,
49
+ b as scrollOutlineHeading
49
50
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../constants/openai.const.cjs");const s=require("../constants/premium.const.cjs");require("react/jsx-runtime");require("react");require("react-dom");const u=new Set(s.INK_PASTE_ALLOWED_TAGS),l=new Set(s.INK_PASTE_ALLOWED_ATTRS),c=(e,o)=>{if(e.nodeType===Node.TEXT_NODE){o.appendChild(e.cloneNode(!0));return}if(e.nodeType!==Node.ELEMENT_NODE)return;const n=e,t=n.tagName.toLowerCase();if(t==="script"||t==="style"||t==="iframe"||t==="object")return;if(!u.has(t)){Array.from(n.childNodes).forEach(r=>c(r,o));return}const a=document.createElement(t);Array.from(n.attributes).forEach(r=>{const i=r.name.toLowerCase();l.has(i)&&(i.startsWith("on")||(i==="href"||i==="src")&&r.value.trim().toLowerCase().startsWith("javascript:")||a.setAttribute(r.name,r.value))}),Array.from(n.childNodes).forEach(r=>c(r,a)),o.appendChild(a)},m=e=>{if(!e.trim())return"";const o=document.createElement("template");o.innerHTML=e;const n=document.createElement("div");return Array.from(o.content.childNodes).forEach(t=>c(t,n)),n.innerHTML},d=e=>e&&e.getData("text/html")||"",f=e=>e&&e.getData("text/plain")||"";exports.extractClipboardHtml=d;exports.extractClipboardText=f;exports.sanitizePastedHtml=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../constants/openai.const.cjs");const m=require("../constants/premium.const.cjs");require("react/jsx-runtime");require("./exportDocument.utils.cjs");require("react");require("react-dom");const d=new Set(m.INK_PASTE_ALLOWED_TAGS),E=new Set(m.INK_PASTE_ALLOWED_ATTRS),a=(e,o)=>{if(e.nodeType===Node.TEXT_NODE){o.appendChild(e.cloneNode(!0));return}if(e.nodeType!==Node.ELEMENT_NODE)return;const i=e,t=i.tagName.toLowerCase();if(t==="script"||t==="style"||t==="iframe"||t==="object")return;if(!d.has(t)){Array.from(i.childNodes).forEach(r=>a(r,o));return}const s=document.createElement(t);Array.from(i.attributes).forEach(r=>{const n=r.name.toLowerCase();E.has(n)&&(n.startsWith("on")||(n==="href"||n==="src")&&r.value.trim().toLowerCase().startsWith("javascript:")||s.setAttribute(r.name,r.value))}),Array.from(i.childNodes).forEach(r=>a(r,s)),o.appendChild(s)},T=/mso-|urn:schemas-microsoft-com|docs-internal-guid/i,A=/MsoListParagraph/i,L=/mso-list/i,u=e=>{const o=e.parentNode;if(o){for(;e.firstChild;)o.insertBefore(e.firstChild,e);e.remove()}},l=e=>T.test(e),f=e=>{if(!e.trim()||!l(e))return e;const o=document.createElement("div");o.innerHTML=e,o.querySelectorAll("style, meta, link, script").forEach(t=>t.remove());let i=null;return Array.from(o.querySelectorAll("p")).forEach(t=>{const s=t.getAttribute("style")??"",r=t.getAttribute("class")??"";if(!(A.test(r)||L.test(s))){i=null;return}const c=document.createElement("li");c.innerHTML=t.innerHTML,i?t.remove():(i=document.createElement("ul"),t.replaceWith(i)),i.appendChild(c)}),Array.from(o.querySelectorAll("*")).forEach(t=>{const s=t.tagName.toLowerCase();if(s.includes(":")){u(t);return}Array.from(t.attributes).forEach(r=>{const n=r.name.toLowerCase(),c=r.value;n==="style"&&/mso-|docs-/i.test(c)&&t.removeAttribute(r.name),n==="class"&&/mso|apple-|docs-/i.test(c)&&t.removeAttribute(r.name),n==="id"&&/docs-internal/i.test(c)&&t.removeAttribute(r.name)}),s==="span"&&t.attributes.length===0&&u(t)}),o.innerHTML},p=e=>{const o=l(e)?f(e):e;if(!o.trim())return"";const i=document.createElement("template");i.innerHTML=o;const t=document.createElement("div");return Array.from(i.content.childNodes).forEach(s=>a(s,t)),t.innerHTML},y=e=>e&&e.getData("text/html")||"",_=e=>e&&e.getData("text/plain")||"";exports.cleanOfficeHtml=f;exports.extractClipboardHtml=y;exports.extractClipboardText=_;exports.isOfficeHtml=l;exports.sanitizePastedHtml=p;
@@ -1,3 +1,5 @@
1
+ export declare const isOfficeHtml: (html: string) => boolean;
2
+ export declare const cleanOfficeHtml: (html: string) => string;
1
3
  export declare const sanitizePastedHtml: (html: string) => string;
2
4
  export declare const extractClipboardHtml: (data: DataTransfer | null) => string;
3
5
  export declare const extractClipboardText: (data: DataTransfer | null) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"paste.utils.d.ts","sourceRoot":"","sources":["../../src/utils/paste.utils.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,MAOjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,YAAY,GAAG,IAAI,KAAG,MAGhE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,YAAY,GAAG,IAAI,KAAG,MAGhE,CAAC"}
1
+ {"version":3,"file":"paste.utils.d.ts","sourceRoot":"","sources":["../../src/utils/paste.utils.ts"],"names":[],"mappings":"AAqDA,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OAAyC,CAAC;AAEtF,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,MA2C9C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,MAQjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,YAAY,GAAG,IAAI,KAAG,MAGhE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,YAAY,GAAG,IAAI,KAAG,MAGhE,CAAC"}
@@ -1,35 +1,69 @@
1
1
  import "../constants/openai.const.js";
2
- import { INK_PASTE_ALLOWED_TAGS as s, INK_PASTE_ALLOWED_ATTRS as m } from "../constants/premium.const.js";
2
+ import { INK_PASTE_ALLOWED_TAGS as u, INK_PASTE_ALLOWED_ATTRS as f } from "../constants/premium.const.js";
3
3
  import "react/jsx-runtime";
4
+ import "./exportDocument.utils.js";
4
5
  import "react";
5
6
  import "react-dom";
6
- const u = new Set(s), f = new Set(m), c = (t, n) => {
7
+ const d = new Set(u), E = new Set(f), a = (t, o) => {
7
8
  if (t.nodeType === Node.TEXT_NODE) {
8
- n.appendChild(t.cloneNode(!0));
9
+ o.appendChild(t.cloneNode(!0));
9
10
  return;
10
11
  }
11
12
  if (t.nodeType !== Node.ELEMENT_NODE) return;
12
- const o = t, e = o.tagName.toLowerCase();
13
+ const n = t, e = n.tagName.toLowerCase();
13
14
  if (e === "script" || e === "style" || e === "iframe" || e === "object")
14
15
  return;
15
- if (!u.has(e)) {
16
- Array.from(o.childNodes).forEach((r) => c(r, n));
16
+ if (!d.has(e)) {
17
+ Array.from(n.childNodes).forEach((r) => a(r, o));
17
18
  return;
18
19
  }
19
- const a = document.createElement(e);
20
- Array.from(o.attributes).forEach((r) => {
20
+ const s = document.createElement(e);
21
+ Array.from(n.attributes).forEach((r) => {
21
22
  const i = r.name.toLowerCase();
22
- f.has(i) && (i.startsWith("on") || (i === "href" || i === "src") && r.value.trim().toLowerCase().startsWith("javascript:") || a.setAttribute(r.name, r.value));
23
- }), Array.from(o.childNodes).forEach((r) => c(r, a)), n.appendChild(a);
24
- }, A = (t) => {
25
- if (!t.trim()) return "";
26
- const n = document.createElement("template");
27
- n.innerHTML = t;
23
+ E.has(i) && (i.startsWith("on") || (i === "href" || i === "src") && r.value.trim().toLowerCase().startsWith("javascript:") || s.setAttribute(r.name, r.value));
24
+ }), Array.from(n.childNodes).forEach((r) => a(r, s)), o.appendChild(s);
25
+ }, A = /mso-|urn:schemas-microsoft-com|docs-internal-guid/i, T = /MsoListParagraph/i, L = /mso-list/i, l = (t) => {
26
+ const o = t.parentNode;
27
+ if (o) {
28
+ for (; t.firstChild; ) o.insertBefore(t.firstChild, t);
29
+ t.remove();
30
+ }
31
+ }, m = (t) => A.test(t), p = (t) => {
32
+ if (!t.trim() || !m(t)) return t;
28
33
  const o = document.createElement("div");
29
- return Array.from(n.content.childNodes).forEach((e) => c(e, o)), o.innerHTML;
30
- }, h = (t) => t && t.getData("text/html") || "", L = (t) => t && t.getData("text/plain") || "";
34
+ o.innerHTML = t, o.querySelectorAll("style, meta, link, script").forEach((e) => e.remove());
35
+ let n = null;
36
+ return Array.from(o.querySelectorAll("p")).forEach((e) => {
37
+ const s = e.getAttribute("style") ?? "", r = e.getAttribute("class") ?? "";
38
+ if (!(T.test(r) || L.test(s))) {
39
+ n = null;
40
+ return;
41
+ }
42
+ const c = document.createElement("li");
43
+ c.innerHTML = e.innerHTML, n ? e.remove() : (n = document.createElement("ul"), e.replaceWith(n)), n.appendChild(c);
44
+ }), Array.from(o.querySelectorAll("*")).forEach((e) => {
45
+ const s = e.tagName.toLowerCase();
46
+ if (s.includes(":")) {
47
+ l(e);
48
+ return;
49
+ }
50
+ Array.from(e.attributes).forEach((r) => {
51
+ const i = r.name.toLowerCase(), c = r.value;
52
+ i === "style" && /mso-|docs-/i.test(c) && e.removeAttribute(r.name), i === "class" && /mso|apple-|docs-/i.test(c) && e.removeAttribute(r.name), i === "id" && /docs-internal/i.test(c) && e.removeAttribute(r.name);
53
+ }), s === "span" && e.attributes.length === 0 && l(e);
54
+ }), o.innerHTML;
55
+ }, v = (t) => {
56
+ const o = m(t) ? p(t) : t;
57
+ if (!o.trim()) return "";
58
+ const n = document.createElement("template");
59
+ n.innerHTML = o;
60
+ const e = document.createElement("div");
61
+ return Array.from(n.content.childNodes).forEach((s) => a(s, e)), e.innerHTML;
62
+ }, b = (t) => t && t.getData("text/html") || "", H = (t) => t && t.getData("text/plain") || "";
31
63
  export {
32
- h as extractClipboardHtml,
33
- L as extractClipboardText,
34
- A as sanitizePastedHtml
64
+ p as cleanOfficeHtml,
65
+ b as extractClipboardHtml,
66
+ H as extractClipboardText,
67
+ m as isOfficeHtml,
68
+ v as sanitizePastedHtml
35
69
  };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=paste.utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paste.utils.test.d.ts","sourceRoot":"","sources":["../../src/utils/paste.utils.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../constants/openai.const.cjs");const s=require("../constants/premium.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");require("react");require("react-dom");const E=()=>Object.fromEntries(s.INK_PREMIUM_FEATURES.map(e=>[e,!1])),n=()=>Object.fromEntries(s.INK_PREMIUM_FEATURES.map(e=>[e,!0])),l=/^[A-Z0-9]{4}(?:_[A-Z0-9]{4}){3}$/,a=e=>{if(!e)return!1;const t=e.trim();if(!t.startsWith(s.INK_PREMIUM_LICENSE_PREFIX))return!1;const r=t.slice(s.INK_PREMIUM_LICENSE_PREFIX.length);return l.test(r)},I=e=>{const t=!!(e!=null&&e.enabled||a(e==null?void 0:e.licenseKey));if(!t)return{active:!1,features:E()};const r=n();if(e!=null&&e.features)for(const u of s.INK_PREMIUM_FEATURES)e.features[u]===!1&&(r[u]=!1);return{active:t,features:r}},_=(e,t)=>e.active&&e.features[t],m=e=>{if(!e)return{};const t={};return Object.keys(s.INK_THEME_CSS_VARS).forEach(r=>{const u=e[r];u&&(t[s.INK_THEME_CSS_VARS[r]]=u)}),t};exports.hasInkPremiumFeature=_;exports.isInkPremiumLicenseKey=a;exports.resolveInkPremium=I;exports.themeTokensToStyle=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../constants/openai.const.cjs");const s=require("../constants/premium.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");require("./exportDocument.utils.cjs");require("react");require("react-dom");const E=()=>Object.fromEntries(s.INK_PREMIUM_FEATURES.map(e=>[e,!1])),n=()=>Object.fromEntries(s.INK_PREMIUM_FEATURES.map(e=>[e,!0])),l=/^[A-Z0-9]{4}(?:_[A-Z0-9]{4}){3}$/,a=e=>{if(!e)return!1;const r=e.trim();if(!r.startsWith(s.INK_PREMIUM_LICENSE_PREFIX))return!1;const t=r.slice(s.INK_PREMIUM_LICENSE_PREFIX.length);return l.test(t)},I=e=>{const r=!!(e!=null&&e.enabled||a(e==null?void 0:e.licenseKey));if(!r)return{active:!1,features:E()};const t=n();if(e!=null&&e.features)for(const u of s.INK_PREMIUM_FEATURES)e.features[u]===!1&&(t[u]=!1);return{active:r,features:t}},_=(e,r)=>e.active&&e.features[r],i=e=>{if(!e)return{};const r={};return Object.keys(s.INK_THEME_CSS_VARS).forEach(t=>{const u=e[t];u&&(r[s.INK_THEME_CSS_VARS[t]]=u)}),r};exports.hasInkPremiumFeature=_;exports.isInkPremiumLicenseKey=a;exports.resolveInkPremium=I;exports.themeTokensToStyle=i;
@@ -1,35 +1,36 @@
1
1
  import "../constants/openai.const.js";
2
- import { INK_PREMIUM_LICENSE_PREFIX as u, INK_PREMIUM_FEATURES as a, INK_THEME_CSS_VARS as l } from "../constants/premium.const.js";
2
+ import { INK_PREMIUM_LICENSE_PREFIX as u, INK_PREMIUM_FEATURES as a, INK_THEME_CSS_VARS as m } from "../constants/premium.const.js";
3
3
  import "react/jsx-runtime";
4
4
  import "./paste.utils.js";
5
+ import "./exportDocument.utils.js";
5
6
  import "react";
6
7
  import "react-dom";
7
- const m = () => Object.fromEntries(a.map((e) => [e, !1])), o = () => Object.fromEntries(a.map((e) => [e, !0])), n = /^[A-Z0-9]{4}(?:_[A-Z0-9]{4}){3}$/, E = (e) => {
8
+ const o = () => Object.fromEntries(a.map((e) => [e, !1])), l = () => Object.fromEntries(a.map((e) => [e, !0])), n = /^[A-Z0-9]{4}(?:_[A-Z0-9]{4}){3}$/, E = (e) => {
8
9
  if (!e) return !1;
9
10
  const t = e.trim();
10
11
  if (!t.startsWith(u)) return !1;
11
12
  const r = t.slice(u.length);
12
13
  return n.test(r);
13
- }, P = (e) => {
14
+ }, S = (e) => {
14
15
  const t = !!(e != null && e.enabled || E(e == null ? void 0 : e.licenseKey));
15
16
  if (!t)
16
- return { active: !1, features: m() };
17
- const r = o();
17
+ return { active: !1, features: o() };
18
+ const r = l();
18
19
  if (e != null && e.features)
19
20
  for (const s of a)
20
21
  e.features[s] === !1 && (r[s] = !1);
21
22
  return { active: t, features: r };
22
- }, S = (e, t) => e.active && e.features[t], N = (e) => {
23
+ }, N = (e, t) => e.active && e.features[t], O = (e) => {
23
24
  if (!e) return {};
24
25
  const t = {};
25
- return Object.keys(l).forEach((r) => {
26
+ return Object.keys(m).forEach((r) => {
26
27
  const s = e[r];
27
- s && (t[l[r]] = s);
28
+ s && (t[m[r]] = s);
28
29
  }), t;
29
30
  };
30
31
  export {
31
- S as hasInkPremiumFeature,
32
+ N as hasInkPremiumFeature,
32
33
  E as isInkPremiumLicenseKey,
33
- P as resolveInkPremium,
34
- N as themeTokensToStyle
34
+ S as resolveInkPremium,
35
+ O as themeTokensToStyle
35
36
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../constants/numbers.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");require("react");require("react-dom");const g=3,i=(e,n)=>{const t=[];let r=n;for(;r&&r!==e;){const o=r.parentNode;if(!o)return[];t.unshift(Array.from(o.childNodes).indexOf(r)),r=o}return t},a=(e,n)=>{let t=e;for(const r of n){const o=t.childNodes[r];if(!o)return null;t=o}return t},u=e=>{var n;return e.nodeType===g?((n=e.textContent)==null?void 0:n.length)??c.NUMBER_ZERO:e.childNodes.length},f=e=>{if(!e)return null;const n=window.getSelection();if(!n||n.rangeCount===c.NUMBER_ZERO)return null;const t=n.getRangeAt(c.NUMBER_ZERO);return e.contains(t.commonAncestorContainer)?{startPath:i(e,t.startContainer),startOffset:t.startOffset,endPath:i(e,t.endContainer),endOffset:t.endOffset}:null},l=(e,n)=>{if(!e||!n)return;const t=a(e,n.startPath),r=a(e,n.endPath);if(!t||!r)return;const o=window.getSelection();if(o)try{const s=document.createRange(),d=Math.min(n.startOffset,u(t)),h=Math.min(n.endOffset,u(r));s.setStart(t,d),s.setEnd(r,h),o.removeAllRanges(),o.addRange(s)}catch{return}},O=(e,n)=>{const t=!!(e&&document.activeElement===e),r=t?f(e):null;n(),t&&r&&l(e,r)};exports.captureSelectionInRoot=f;exports.restoreSelectionInRoot=l;exports.withPreservedSelection=O;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../constants/numbers.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");require("./exportDocument.utils.cjs");require("react");require("react-dom");const g=3,i=(e,n)=>{const t=[];let r=n;for(;r&&r!==e;){const o=r.parentNode;if(!o)return[];t.unshift(Array.from(o.childNodes).indexOf(r)),r=o}return t},a=(e,n)=>{let t=e;for(const r of n){const o=t.childNodes[r];if(!o)return null;t=o}return t},u=e=>{var n;return e.nodeType===g?((n=e.textContent)==null?void 0:n.length)??c.NUMBER_ZERO:e.childNodes.length},f=e=>{if(!e)return null;const n=window.getSelection();if(!n||n.rangeCount===c.NUMBER_ZERO)return null;const t=n.getRangeAt(c.NUMBER_ZERO);return e.contains(t.commonAncestorContainer)?{startPath:i(e,t.startContainer),startOffset:t.startOffset,endPath:i(e,t.endContainer),endOffset:t.endOffset}:null},l=(e,n)=>{if(!e||!n)return;const t=a(e,n.startPath),r=a(e,n.endPath);if(!t||!r)return;const o=window.getSelection();if(o)try{const s=document.createRange(),d=Math.min(n.startOffset,u(t)),h=Math.min(n.endOffset,u(r));s.setStart(t,d),s.setEnd(r,h),o.removeAllRanges(),o.addRange(s)}catch{return}},O=(e,n)=>{const t=!!(e&&document.activeElement===e),r=t?f(e):null;n(),t&&r&&l(e,r)};exports.captureSelectionInRoot=f;exports.restoreSelectionInRoot=l;exports.withPreservedSelection=O;
@@ -2,6 +2,7 @@ import { NUMBER_ZERO as c } from "../constants/numbers.js";
2
2
  import "../constants/openai.const.js";
3
3
  import "react/jsx-runtime";
4
4
  import "./paste.utils.js";
5
+ import "./exportDocument.utils.js";
5
6
  import "react";
6
7
  import "react-dom";
7
8
  const u = 3, i = (t, n) => {
@@ -47,12 +48,12 @@ const u = 3, i = (t, n) => {
47
48
  } catch {
48
49
  return;
49
50
  }
50
- }, E = (t, n) => {
51
+ }, w = (t, n) => {
51
52
  const e = !!(t && document.activeElement === t), r = e ? h(t) : null;
52
53
  n(), e && r && m(t, r);
53
54
  };
54
55
  export {
55
56
  h as captureSelectionInRoot,
56
57
  m as restoreSelectionInRoot,
57
- E as withPreservedSelection
58
+ w as withPreservedSelection
58
59
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../constants/numbers.cjs"),o=require("../constants/defaults.const.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");require("react");require("react-dom");const a=(r,e)=>r.label.toLowerCase().includes(e)||r.description.toLowerCase().includes(e)||r.category.toLowerCase().includes(e)||r.shortcut.toLowerCase().includes(e)?!0:r.keywords.some(t=>t.includes(e)),S=r=>{const e=r.trim().toLowerCase();return e?o.INK_SLASH_COMMANDS.filter(t=>a(t,e)).slice(0,c.INK_SLASH_MENU_MAX_ITEMS):o.INK_SLASH_COMMANDS.slice(0,c.INK_SLASH_MENU_MAX_ITEMS)},i=r=>{const e=[],t=new Map;return r.forEach(s=>{const u=s.category||o.SLASH_CATEGORY_BASIC,n=t.get(u);if(!n){e.push(u),t.set(u,[s]);return}n.push(s)}),e.map(s=>({category:s,items:t.get(s)??[]}))},l=r=>{const e=r.match(/(?:^|\s)\/([^\s]*)$/);return e?e[1]??"":null};exports.extractSlashQuery=l;exports.filterSlashCommands=S;exports.groupSlashCommands=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../constants/numbers.cjs"),o=require("../constants/defaults.const.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");require("./exportDocument.utils.cjs");require("react");require("react-dom");const a=(r,e)=>r.label.toLowerCase().includes(e)||r.description.toLowerCase().includes(e)||r.category.toLowerCase().includes(e)||r.shortcut.toLowerCase().includes(e)?!0:r.keywords.some(t=>t.includes(e)),S=r=>{const e=r.trim().toLowerCase();return e?o.INK_SLASH_COMMANDS.filter(t=>a(t,e)).slice(0,c.INK_SLASH_MENU_MAX_ITEMS):o.INK_SLASH_COMMANDS.slice(0,c.INK_SLASH_MENU_MAX_ITEMS)},i=r=>{const e=[],t=new Map;return r.forEach(s=>{const u=s.category||o.SLASH_CATEGORY_BASIC,n=t.get(u);if(!n){e.push(u),t.set(u,[s]);return}n.push(s)}),e.map(s=>({category:s,items:t.get(s)??[]}))},l=r=>{const e=r.match(/(?:^|\s)\/([^\s]*)$/);return e?e[1]??"":null};exports.extractSlashQuery=l;exports.filterSlashCommands=S;exports.groupSlashCommands=i;
@@ -1,20 +1,21 @@
1
1
  import { INK_SLASH_MENU_MAX_ITEMS as u } from "../constants/numbers.js";
2
- import { INK_SLASH_COMMANDS as c, SLASH_CATEGORY_BASIC as a } from "../constants/defaults.const.js";
2
+ import { INK_SLASH_COMMANDS as c, SLASH_CATEGORY_BASIC as i } from "../constants/defaults.const.js";
3
3
  import "../constants/openai.const.js";
4
4
  import "react/jsx-runtime";
5
5
  import "./paste.utils.js";
6
+ import "./exportDocument.utils.js";
6
7
  import "react";
7
8
  import "react-dom";
8
- const i = (t, r) => t.label.toLowerCase().includes(r) || t.description.toLowerCase().includes(r) || t.category.toLowerCase().includes(r) || t.shortcut.toLowerCase().includes(r) ? !0 : t.keywords.some((e) => e.includes(r)), d = (t) => {
9
+ const a = (t, r) => t.label.toLowerCase().includes(r) || t.description.toLowerCase().includes(r) || t.category.toLowerCase().includes(r) || t.shortcut.toLowerCase().includes(r) ? !0 : t.keywords.some((e) => e.includes(r)), L = (t) => {
9
10
  const r = t.trim().toLowerCase();
10
- return r ? c.filter((e) => i(e, r)).slice(
11
+ return r ? c.filter((e) => a(e, r)).slice(
11
12
  0,
12
13
  u
13
14
  ) : c.slice(0, u);
14
- }, L = (t) => {
15
+ }, _ = (t) => {
15
16
  const r = [], e = /* @__PURE__ */ new Map();
16
17
  return t.forEach((o) => {
17
- const s = o.category || a, n = e.get(s);
18
+ const s = o.category || i, n = e.get(s);
18
19
  if (!n) {
19
20
  r.push(s), e.set(s, [o]);
20
21
  return;
@@ -24,12 +25,12 @@ const i = (t, r) => t.label.toLowerCase().includes(r) || t.description.toLowerCa
24
25
  category: o,
25
26
  items: e.get(o) ?? []
26
27
  }));
27
- }, _ = (t) => {
28
+ }, w = (t) => {
28
29
  const r = t.match(/(?:^|\s)\/([^\s]*)$/);
29
30
  return r ? r[1] ?? "" : null;
30
31
  };
31
32
  export {
32
- _ as extractSlashQuery,
33
- d as filterSlashCommands,
34
- L as groupSlashCommands
33
+ w as extractSlashQuery,
34
+ L as filterSlashCommands,
35
+ _ as groupSlashCommands
35
36
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../constants/numbers.cjs"),u=require("../constants/generals.const.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");const r=require("../constants/table.const.cjs");require("./paste.utils.cjs");require("react");require("react-dom");const m=(t,e,n)=>Math.min(n,Math.max(e,t)),A=t=>{const e=document.createElement(t);return e.contentEditable="true",e.innerHTML="<br>",e},d=t=>{const e=t.parentElement;return e?Array.from(e.cells).indexOf(t):0},B=(t=a.INK_DEFAULT_TABLE_ROWS,e=a.INK_DEFAULT_TABLE_COLS)=>{const n=m(t,a.INK_TABLE_MIN_ROWS,a.INK_TABLE_MAX_ROWS),o=m(e,a.INK_TABLE_MIN_COLS,a.INK_TABLE_MAX_COLS),l=Array.from({length:o},(c,T)=>`<th contenteditable="true">${r.TABLE_HEADER_PREFIX}${T+1}</th>`).join(u.EMPTY_STRING),s=Array.from({length:Math.max(0,n-1)},()=>`<tr>${Array.from({length:o},()=>'<td contenteditable="true"><br></td>').join(u.EMPTY_STRING)}</tr>`).join(u.EMPTY_STRING),_=`<${r.TABLE_COLGROUP}>${Array.from({length:o},()=>`<${r.TABLE_COL}>`).join(u.EMPTY_STRING)}</${r.TABLE_COLGROUP}>`;return`<table class="${r.TABLE_CLASS_NAME}">${_}<thead><tr>${l}</tr></thead><tbody>${s}</tbody></table><p><br></p>`},C=()=>{const t=window.getSelection();if(!t||t.rangeCount===0)return null;let e=t.anchorNode;return e&&e.nodeType===Node.TEXT_NODE&&(e=e.parentElement),e instanceof Element?e.closest(r.TABLE_CELL_SELECTOR):null},h=(t,e)=>{var T,i;const n=t.closest(r.TABLE_ROW_TAG),o=t.closest(r.TABLE_TAG);if(!n||!o)return!1;const l=n.cells.length;if(o.rows.length>=a.INK_TABLE_MAX_ROWS)return!1;const _=!!n.closest(r.TABLE_SECTION_THEAD)?r.TABLE_CELL_TAG_TH:r.TABLE_CELL_TAG_TD,c=document.createElement(r.TABLE_ROW_TAG);for(let E=0;E<l;E+=1)c.appendChild(A(_));return e==="before"?(T=n.parentElement)==null||T.insertBefore(c,n):(i=n.parentElement)==null||i.insertBefore(c,n.nextSibling),!0},b=(t,e)=>{const n=t.closest(r.TABLE_TAG);if(!n)return!1;const o=d(t);if(o<0)return!1;const l=n.rows[0];if(!l||l.cells.length>=a.INK_TABLE_MAX_COLS)return!1;const s=e==="before"?o:o+1;return Array.from(n.rows).forEach(_=>{const c=_.cells[s]??null,T=_.closest(r.TABLE_SECTION_THEAD)?r.TABLE_CELL_TAG_TH:r.TABLE_CELL_TAG_TD,i=A(T);c?_.insertBefore(i,c):_.appendChild(i)}),L(n),!0},R=t=>{const e=t.closest(r.TABLE_ROW_TAG),n=t.closest(r.TABLE_TAG);return!e||!n||n.rows.length<=a.INK_TABLE_MIN_ROWS?!1:(e.remove(),!0)},g=t=>{const e=t.closest(r.TABLE_TAG);if(!e)return!1;const n=d(t);if(n<0)return!1;const o=e.rows[0];return!o||o.cells.length<=a.INK_TABLE_MIN_COLS?!1:(Array.from(e.rows).forEach(l=>{const s=l.cells[n];s&&s.remove()}),L(e),!0)},O=t=>{const e=t.closest(r.TABLE_TAG);if(!e)return!1;const n=e.tHead,o=n==null?void 0:n.querySelector(r.TABLE_ROW_TAG);if(n&&o){const T=e.tBodies[0]??e.createTBody(),i=document.createElement(r.TABLE_ROW_TAG);return Array.from(o.cells).forEach(E=>{const f=A(r.TABLE_CELL_TAG_TD);f.innerHTML=E.innerHTML,i.appendChild(f)}),T.insertBefore(i,T.firstChild),n.remove(),!0}const l=e.tBodies[0]??e.querySelector(r.TABLE_SECTION_TBODY),s=l==null?void 0:l.querySelector(r.TABLE_ROW_TAG);if(!l||!s)return!1;const _=e.createTHead(),c=document.createElement(r.TABLE_ROW_TAG);return Array.from(s.cells).forEach((T,i)=>{const E=A(r.TABLE_CELL_TAG_TH);E.innerHTML=T.innerHTML||`${r.TABLE_HEADER_PREFIX}${i+1}`,c.appendChild(E)}),_.appendChild(c),s.remove(),!0},L=t=>{var o,l;let e=t.querySelector(r.TABLE_COLGROUP);const n=((o=t.rows[0])==null?void 0:o.cells.length)??0;for(e||(e=document.createElement(r.TABLE_COLGROUP),t.insertBefore(e,t.firstChild));e.children.length<n;)e.appendChild(document.createElement(r.TABLE_COL));for(;e.children.length>n;)(l=e.lastElementChild)==null||l.remove();return e.getElementsByTagName(r.TABLE_COL)},I=(t,e,n)=>{const o=e.getBoundingClientRect();return Math.abs(o.right-t)>n?null:d(e)},N=(t,e,n)=>{const l=L(t).item(e);if(!l)return;const s=Math.max(a.INK_TABLE_COL_MIN_WIDTH_PX,n);l.style.width=`${s}px`};exports.buildTableHtml=B;exports.deleteTableColumn=g;exports.deleteTableRow=R;exports.ensureTableColgroup=L;exports.getColumnResizeIndex=I;exports.getTableCellFromSelection=C;exports.insertTableColumn=b;exports.insertTableRow=h;exports.setTableColumnWidth=N;exports.toggleTableHeaderRow=O;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const T=require("../constants/numbers.cjs"),L=require("../constants/generals.const.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");const r=require("../constants/table.const.cjs");require("./paste.utils.cjs");require("./exportDocument.utils.cjs");require("react");require("react-dom");const m=(t,e,n)=>Math.min(n,Math.max(e,t)),E=t=>{const e=document.createElement(t);return e.contentEditable="true",e.innerHTML="<br>",e},f=t=>{const e=t.parentElement;return e?Array.from(e.cells).indexOf(t):0},h=(t=T.INK_DEFAULT_TABLE_ROWS,e=T.INK_DEFAULT_TABLE_COLS)=>{const n=m(t,T.INK_TABLE_MIN_ROWS,T.INK_TABLE_MAX_ROWS),o=m(e,T.INK_TABLE_MIN_COLS,T.INK_TABLE_MAX_COLS),l=Array.from({length:o},(c,a)=>`<th contenteditable="true">${r.TABLE_HEADER_PREFIX}${a+1}</th>`).join(L.EMPTY_STRING),s=Array.from({length:Math.max(0,n-1)},()=>`<tr>${Array.from({length:o},()=>'<td contenteditable="true"><br></td>').join(L.EMPTY_STRING)}</tr>`).join(L.EMPTY_STRING),i=`<${r.TABLE_COLGROUP}>${Array.from({length:o},()=>`<${r.TABLE_COL}>`).join(L.EMPTY_STRING)}</${r.TABLE_COLGROUP}>`;return`<table class="${r.TABLE_CLASS_NAME}">${i}<thead><tr>${l}</tr></thead><tbody>${s}</tbody></table><p><br></p>`},O=()=>{const t=window.getSelection();if(!t||t.rangeCount===0)return null;let e=t.anchorNode;return e&&e.nodeType===Node.TEXT_NODE&&(e=e.parentElement),e instanceof Element?e.closest(r.TABLE_CELL_SELECTOR):null},R=(t,e)=>{var a,_;const n=t.closest(r.TABLE_ROW_TAG),o=t.closest(r.TABLE_TAG);if(!n||!o)return!1;const l=n.cells.length;if(o.rows.length>=T.INK_TABLE_MAX_ROWS)return!1;const i=!!n.closest(r.TABLE_SECTION_THEAD)?r.TABLE_CELL_TAG_TH:r.TABLE_CELL_TAG_TD,c=document.createElement(r.TABLE_ROW_TAG);for(let u=0;u<l;u+=1)c.appendChild(E(i));return e==="before"?(a=n.parentElement)==null||a.insertBefore(c,n):(_=n.parentElement)==null||_.insertBefore(c,n.nextSibling),!0},N=(t,e)=>{const n=t.closest(r.TABLE_TAG);if(!n)return!1;const o=f(t);if(o<0)return!1;const l=n.rows[0];if(!l||l.cells.length>=T.INK_TABLE_MAX_COLS)return!1;const s=e==="before"?o:o+1;return Array.from(n.rows).forEach(i=>{const c=i.cells[s]??null,a=i.closest(r.TABLE_SECTION_THEAD)?r.TABLE_CELL_TAG_TH:r.TABLE_CELL_TAG_TD,_=E(a);c?i.insertBefore(_,c):i.appendChild(_)}),A(n),!0},p=t=>{const e=t.closest(r.TABLE_ROW_TAG),n=t.closest(r.TABLE_TAG);return!e||!n||n.rows.length<=T.INK_TABLE_MIN_ROWS?!1:(e.remove(),!0)},I=t=>{const e=t.closest(r.TABLE_TAG);if(!e)return!1;const n=f(t);if(n<0)return!1;const o=e.rows[0];return!o||o.cells.length<=T.INK_TABLE_MIN_COLS?!1:(Array.from(e.rows).forEach(l=>{const s=l.cells[n];s&&s.remove()}),A(e),!0)},S=t=>{const e=t.closest(r.TABLE_TAG);if(!e)return!1;const n=e.tHead,o=n==null?void 0:n.querySelector(r.TABLE_ROW_TAG);if(n&&o){const a=e.tBodies[0]??e.createTBody(),_=document.createElement(r.TABLE_ROW_TAG);return Array.from(o.cells).forEach(u=>{const C=E(r.TABLE_CELL_TAG_TD);C.innerHTML=u.innerHTML,_.appendChild(C)}),a.insertBefore(_,a.firstChild),n.remove(),!0}const l=e.tBodies[0]??e.querySelector(r.TABLE_SECTION_TBODY),s=l==null?void 0:l.querySelector(r.TABLE_ROW_TAG);if(!l||!s)return!1;const i=e.createTHead(),c=document.createElement(r.TABLE_ROW_TAG);return Array.from(s.cells).forEach((a,_)=>{const u=E(r.TABLE_CELL_TAG_TH);u.innerHTML=a.innerHTML||`${r.TABLE_HEADER_PREFIX}${_+1}`,c.appendChild(u)}),i.appendChild(c),s.remove(),!0},A=t=>{var o,l;let e=t.querySelector(r.TABLE_COLGROUP);const n=((o=t.rows[0])==null?void 0:o.cells.length)??0;for(e||(e=document.createElement(r.TABLE_COLGROUP),t.insertBefore(e,t.firstChild));e.children.length<n;)e.appendChild(document.createElement(r.TABLE_COL));for(;e.children.length>n;)(l=e.lastElementChild)==null||l.remove();return e.getElementsByTagName(r.TABLE_COL)},G=(t,e,n)=>{const o=e.getBoundingClientRect();return Math.abs(o.right-t)>n?null:f(e)},B="#e0e7ff",d="top",b="middle",g="bottom",M=t=>{var n;const e=t.nextElementSibling;return e instanceof HTMLTableCellElement?(t.colSpan+=e.colSpan,(n=e.textContent)!=null&&n.trim()&&(t.append(document.createTextNode(" ")),t.append(...Array.from(e.childNodes))),e.remove(),!0):!1},y=t=>{if(t.colSpan<=1)return!1;t.colSpan-=1;const e=document.createElement(t.tagName.toLowerCase());return e.innerHTML="<br>",t.after(e),!0},w=t=>{const e=t.style.backgroundColor;return t.style.backgroundColor=e?"":B,!0},H=t=>{const e=[d,b,g],n=t.style.verticalAlign,o=e.indexOf(n);return t.style.verticalAlign=e[(o+1)%e.length]??d,!0},x=(t,e,n)=>{const l=A(t).item(e);if(!l)return;const s=Math.max(T.INK_TABLE_COL_MIN_WIDTH_PX,n);l.style.width=`${s}px`};exports.CELL_ALIGN_BOTTOM=g;exports.CELL_ALIGN_MIDDLE=b;exports.CELL_ALIGN_TOP=d;exports.CELL_BACKGROUND=B;exports.buildTableHtml=h;exports.deleteTableColumn=I;exports.deleteTableRow=p;exports.ensureTableColgroup=A;exports.getColumnResizeIndex=G;exports.getTableCellFromSelection=O;exports.insertTableColumn=N;exports.insertTableRow=R;exports.mergeTableCellRight=M;exports.setTableCellBackground=w;exports.setTableCellVerticalAlign=H;exports.setTableColumnWidth=x;exports.splitTableCell=y;exports.toggleTableHeaderRow=S;
@@ -7,5 +7,13 @@ export declare const deleteTableColumn: (cell: HTMLTableCellElement) => boolean;
7
7
  export declare const toggleTableHeaderRow: (cell: HTMLTableCellElement) => boolean;
8
8
  export declare const ensureTableColgroup: (table: HTMLTableElement) => HTMLCollectionOf<HTMLTableColElement>;
9
9
  export declare const getColumnResizeIndex: (clientX: number, cell: HTMLTableCellElement, edgePx: number) => number | null;
10
+ export declare const CELL_BACKGROUND = "#e0e7ff";
11
+ export declare const CELL_ALIGN_TOP = "top";
12
+ export declare const CELL_ALIGN_MIDDLE = "middle";
13
+ export declare const CELL_ALIGN_BOTTOM = "bottom";
14
+ export declare const mergeTableCellRight: (cell: HTMLTableCellElement) => boolean;
15
+ export declare const splitTableCell: (cell: HTMLTableCellElement) => boolean;
16
+ export declare const setTableCellBackground: (cell: HTMLTableCellElement) => boolean;
17
+ export declare const setTableCellVerticalAlign: (cell: HTMLTableCellElement) => boolean;
10
18
  export declare const setTableColumnWidth: (table: HTMLTableElement, columnIndex: number, widthPx: number) => void;
11
19
  //# sourceMappingURL=table.utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.utils.d.ts","sourceRoot":"","sources":["../../src/utils/table.utils.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,cAAc,GACzB,aAA6B,EAC7B,aAA6B,KAC5B,MAeF,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAO,oBAAoB,GAAG,IASnE,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,MAAM,oBAAoB,EAC1B,UAAU,QAAQ,GAAG,OAAO,KAC3B,OAkBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,oBAAoB,EAC1B,UAAU,QAAQ,GAAG,OAAO,KAC3B,OAuBF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,oBAAoB,KAAG,OAO3D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,oBAAoB,KAAG,OAa9D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,oBAAoB,KAAG,OA8BjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,gBAAgB,KAAG,gBAAgB,CAAC,mBAAmB,CAcjG,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,MAAM,oBAAoB,EAC1B,QAAQ,MAAM,KACb,MAAM,GAAG,IAIX,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,OAAO,gBAAgB,EACvB,aAAa,MAAM,EACnB,SAAS,MAAM,KACd,IAMF,CAAC"}
1
+ {"version":3,"file":"table.utils.d.ts","sourceRoot":"","sources":["../../src/utils/table.utils.ts"],"names":[],"mappings":"AAwCA,eAAO,MAAM,cAAc,GACzB,aAA6B,EAC7B,aAA6B,KAC5B,MAeF,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAO,oBAAoB,GAAG,IASnE,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,MAAM,oBAAoB,EAC1B,UAAU,QAAQ,GAAG,OAAO,KAC3B,OAkBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,oBAAoB,EAC1B,UAAU,QAAQ,GAAG,OAAO,KAC3B,OAuBF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,oBAAoB,KAAG,OAO3D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM,oBAAoB,KAAG,OAa9D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,oBAAoB,KAAG,OA8BjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,gBAAgB,KAAG,gBAAgB,CAAC,mBAAmB,CAcjG,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,MAAM,oBAAoB,EAC1B,QAAQ,MAAM,KACb,MAAM,GAAG,IAIX,CAAC;AAEF,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,cAAc,QAAQ,CAAC;AACpC,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,eAAO,MAAM,mBAAmB,GAAI,MAAM,oBAAoB,KAAG,OAUhE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,oBAAoB,KAAG,OAO3D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,MAAM,oBAAoB,KAAG,OAInE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,MAAM,oBAAoB,KAAG,OAMtE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,OAAO,gBAAgB,EACvB,aAAa,MAAM,EACnB,SAAS,MAAM,KACd,IAMF,CAAC"}
@@ -1,111 +1,135 @@
1
- import { INK_DEFAULT_TABLE_ROWS as I, INK_DEFAULT_TABLE_COLS as S, INK_TABLE_MIN_COLS as B, INK_TABLE_MIN_ROWS as b, INK_TABLE_MAX_COLS as w, INK_TABLE_MAX_ROWS as y, INK_TABLE_COL_MIN_WIDTH_PX as M } from "../constants/numbers.js";
1
+ import { INK_DEFAULT_TABLE_ROWS as x, INK_DEFAULT_TABLE_COLS as O, INK_TABLE_MIN_COLS as B, INK_TABLE_MIN_ROWS as N, INK_TABLE_MAX_COLS as y, INK_TABLE_MAX_ROWS as S, INK_TABLE_COL_MIN_WIDTH_PX as R } from "../constants/numbers.js";
2
2
  import { EMPTY_STRING as m } from "../constants/generals.const.js";
3
3
  import "../constants/openai.const.js";
4
4
  import "react/jsx-runtime";
5
- import { TABLE_HEADER_PREFIX as N, TABLE_COLGROUP as T, TABLE_COL as _, TABLE_CLASS_NAME as O, TABLE_TAG as d, TABLE_ROW_TAG as u, TABLE_CELL_SELECTOR as x, TABLE_SECTION_THEAD as R, TABLE_CELL_TAG_TH as h, TABLE_CELL_TAG_TD as A, TABLE_SECTION_TBODY as H } from "../constants/table.const.js";
5
+ import { TABLE_HEADER_PREFIX as w, TABLE_COLGROUP as T, TABLE_COL as L, TABLE_CLASS_NAME as M, TABLE_TAG as d, TABLE_ROW_TAG as f, TABLE_CELL_SELECTOR as H, TABLE_SECTION_THEAD as I, TABLE_CELL_TAG_TH as _, TABLE_CELL_TAG_TD as C, TABLE_SECTION_TBODY as $ } from "../constants/table.const.js";
6
6
  import "./paste.utils.js";
7
+ import "./exportDocument.utils.js";
7
8
  import "react";
8
9
  import "react-dom";
9
10
  const g = (t, e, n) => Math.min(n, Math.max(e, t)), E = (t) => {
10
11
  const e = document.createElement(t);
11
12
  return e.contentEditable = "true", e.innerHTML = "<br>", e;
12
- }, L = (t) => {
13
+ }, h = (t) => {
13
14
  const e = t.parentElement;
14
15
  return e ? Array.from(e.cells).indexOf(t) : 0;
15
- }, q = (t = I, e = S) => {
16
- const n = g(t, b, y), r = g(e, B, w), o = Array.from(
16
+ }, Y = (t = x, e = O) => {
17
+ const n = g(t, N, S), r = g(e, B, y), o = Array.from(
17
18
  { length: r },
18
- (s, c) => `<th contenteditable="true">${N}${c + 1}</th>`
19
+ (s, c) => `<th contenteditable="true">${w}${c + 1}</th>`
19
20
  ).join(m), l = Array.from({ length: Math.max(0, n - 1) }, () => `<tr>${Array.from(
20
21
  { length: r },
21
22
  () => '<td contenteditable="true"><br></td>'
22
- ).join(m)}</tr>`).join(m), a = `<${T}>${Array.from({ length: r }, () => `<${_}>`).join(m)}</${T}>`;
23
- return `<table class="${O}">${a}<thead><tr>${o}</tr></thead><tbody>${l}</tbody></table><p><br></p>`;
24
- }, F = () => {
23
+ ).join(m)}</tr>`).join(m), a = `<${T}>${Array.from({ length: r }, () => `<${L}>`).join(m)}</${T}>`;
24
+ return `<table class="${M}">${a}<thead><tr>${o}</tr></thead><tbody>${l}</tbody></table><p><br></p>`;
25
+ }, z = () => {
25
26
  const t = window.getSelection();
26
27
  if (!t || t.rangeCount === 0) return null;
27
28
  let e = t.anchorNode;
28
- return e && e.nodeType === Node.TEXT_NODE && (e = e.parentElement), e instanceof Element ? e.closest(x) : null;
29
- }, P = (t, e) => {
29
+ return e && e.nodeType === Node.TEXT_NODE && (e = e.parentElement), e instanceof Element ? e.closest(H) : null;
30
+ }, V = (t, e) => {
30
31
  var c, i;
31
- const n = t.closest(u), r = t.closest(d);
32
+ const n = t.closest(f), r = t.closest(d);
32
33
  if (!n || !r) return !1;
33
34
  const o = n.cells.length;
34
- if (r.rows.length >= y) return !1;
35
- const a = !!n.closest(R) ? h : A, s = document.createElement(u);
36
- for (let f = 0; f < o; f += 1)
35
+ if (r.rows.length >= S) return !1;
36
+ const a = !!n.closest(I) ? _ : C, s = document.createElement(f);
37
+ for (let u = 0; u < o; u += 1)
37
38
  s.appendChild(E(a));
38
39
  return e === "before" ? (c = n.parentElement) == null || c.insertBefore(s, n) : (i = n.parentElement) == null || i.insertBefore(s, n.nextSibling), !0;
39
- }, U = (t, e) => {
40
+ }, J = (t, e) => {
40
41
  const n = t.closest(d);
41
42
  if (!n) return !1;
42
- const r = L(t);
43
+ const r = h(t);
43
44
  if (r < 0) return !1;
44
45
  const o = n.rows[0];
45
- if (!o || o.cells.length >= w) return !1;
46
+ if (!o || o.cells.length >= y) return !1;
46
47
  const l = e === "before" ? r : r + 1;
47
48
  return Array.from(n.rows).forEach((a) => {
48
- const s = a.cells[l] ?? null, c = a.closest(R) ? h : A, i = E(c);
49
+ const s = a.cells[l] ?? null, c = a.closest(I) ? _ : C, i = E(c);
49
50
  s ? a.insertBefore(i, s) : a.appendChild(i);
50
- }), C(n), !0;
51
- }, Y = (t) => {
52
- const e = t.closest(u), n = t.closest(d);
53
- return !e || !n || n.rows.length <= b ? !1 : (e.remove(), !0);
54
- }, z = (t) => {
51
+ }), A(n), !0;
52
+ }, Q = (t) => {
53
+ const e = t.closest(f), n = t.closest(d);
54
+ return !e || !n || n.rows.length <= N ? !1 : (e.remove(), !0);
55
+ }, Z = (t) => {
55
56
  const e = t.closest(d);
56
57
  if (!e) return !1;
57
- const n = L(t);
58
+ const n = h(t);
58
59
  if (n < 0) return !1;
59
60
  const r = e.rows[0];
60
61
  return !r || r.cells.length <= B ? !1 : (Array.from(e.rows).forEach((o) => {
61
62
  const l = o.cells[n];
62
63
  l && l.remove();
63
- }), C(e), !0);
64
- }, k = (t) => {
64
+ }), A(e), !0);
65
+ }, ee = (t) => {
65
66
  const e = t.closest(d);
66
67
  if (!e) return !1;
67
- const n = e.tHead, r = n == null ? void 0 : n.querySelector(u);
68
+ const n = e.tHead, r = n == null ? void 0 : n.querySelector(f);
68
69
  if (n && r) {
69
- const c = e.tBodies[0] ?? e.createTBody(), i = document.createElement(u);
70
- return Array.from(r.cells).forEach((f) => {
71
- const p = E(A);
72
- p.innerHTML = f.innerHTML, i.appendChild(p);
70
+ const c = e.tBodies[0] ?? e.createTBody(), i = document.createElement(f);
71
+ return Array.from(r.cells).forEach((u) => {
72
+ const p = E(C);
73
+ p.innerHTML = u.innerHTML, i.appendChild(p);
73
74
  }), c.insertBefore(i, c.firstChild), n.remove(), !0;
74
75
  }
75
- const o = e.tBodies[0] ?? e.querySelector(H), l = o == null ? void 0 : o.querySelector(u);
76
+ const o = e.tBodies[0] ?? e.querySelector($), l = o == null ? void 0 : o.querySelector(f);
76
77
  if (!o || !l) return !1;
77
- const a = e.createTHead(), s = document.createElement(u);
78
+ const a = e.createTHead(), s = document.createElement(f);
78
79
  return Array.from(l.cells).forEach((c, i) => {
79
- const f = E(h);
80
- f.innerHTML = c.innerHTML || `${N}${i + 1}`, s.appendChild(f);
80
+ const u = E(_);
81
+ u.innerHTML = c.innerHTML || `${w}${i + 1}`, s.appendChild(u);
81
82
  }), a.appendChild(s), l.remove(), !0;
82
- }, C = (t) => {
83
+ }, A = (t) => {
83
84
  var r, o;
84
85
  let e = t.querySelector(T);
85
86
  const n = ((r = t.rows[0]) == null ? void 0 : r.cells.length) ?? 0;
86
87
  for (e || (e = document.createElement(T), t.insertBefore(e, t.firstChild)); e.children.length < n; )
87
- e.appendChild(document.createElement(_));
88
+ e.appendChild(document.createElement(L));
88
89
  for (; e.children.length > n; )
89
90
  (o = e.lastElementChild) == null || o.remove();
90
- return e.getElementsByTagName(_);
91
- }, J = (t, e, n) => {
91
+ return e.getElementsByTagName(L);
92
+ }, te = (t, e, n) => {
92
93
  const r = e.getBoundingClientRect();
93
- return Math.abs(r.right - t) > n ? null : L(e);
94
- }, Q = (t, e, n) => {
95
- const o = C(t).item(e);
94
+ return Math.abs(r.right - t) > n ? null : h(e);
95
+ }, D = "#e0e7ff", b = "top", G = "middle", v = "bottom", ne = (t) => {
96
+ var n;
97
+ const e = t.nextElementSibling;
98
+ return e instanceof HTMLTableCellElement ? (t.colSpan += e.colSpan, (n = e.textContent) != null && n.trim() && (t.append(document.createTextNode(" ")), t.append(...Array.from(e.childNodes))), e.remove(), !0) : !1;
99
+ }, re = (t) => {
100
+ if (t.colSpan <= 1) return !1;
101
+ t.colSpan -= 1;
102
+ const e = document.createElement(t.tagName.toLowerCase());
103
+ return e.innerHTML = "<br>", t.after(e), !0;
104
+ }, oe = (t) => {
105
+ const e = t.style.backgroundColor;
106
+ return t.style.backgroundColor = e ? "" : D, !0;
107
+ }, le = (t) => {
108
+ const e = [b, G, v], n = t.style.verticalAlign, r = e.indexOf(n);
109
+ return t.style.verticalAlign = e[(r + 1) % e.length] ?? b, !0;
110
+ }, se = (t, e, n) => {
111
+ const o = A(t).item(e);
96
112
  if (!o) return;
97
- const l = Math.max(M, n);
113
+ const l = Math.max(R, n);
98
114
  o.style.width = `${l}px`;
99
115
  };
100
116
  export {
101
- q as buildTableHtml,
102
- z as deleteTableColumn,
103
- Y as deleteTableRow,
104
- C as ensureTableColgroup,
105
- J as getColumnResizeIndex,
106
- F as getTableCellFromSelection,
107
- U as insertTableColumn,
108
- P as insertTableRow,
109
- Q as setTableColumnWidth,
110
- k as toggleTableHeaderRow
117
+ v as CELL_ALIGN_BOTTOM,
118
+ G as CELL_ALIGN_MIDDLE,
119
+ b as CELL_ALIGN_TOP,
120
+ D as CELL_BACKGROUND,
121
+ Y as buildTableHtml,
122
+ Z as deleteTableColumn,
123
+ Q as deleteTableRow,
124
+ A as ensureTableColgroup,
125
+ te as getColumnResizeIndex,
126
+ z as getTableCellFromSelection,
127
+ J as insertTableColumn,
128
+ V as insertTableRow,
129
+ ne as mergeTableCellRight,
130
+ oe as setTableCellBackground,
131
+ le as setTableCellVerticalAlign,
132
+ se as setTableColumnWidth,
133
+ re as splitTableCell,
134
+ ee as toggleTableHeaderRow
111
135
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../constants/numbers.cjs"),c=require("../constants/generals.const.cjs"),n=require("../constants/toolbarMenu.const.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");const T=require("./storage.utils.cjs");require("react");require("react-dom");const a=()=>typeof sessionStorage<"u",s=(e,t)=>t?`${e}:${t}`:e,i=e=>e?T.isLocalStorageAvailable()?localStorage:null:a()?sessionStorage:null,_=(e,t)=>{const r=i(e);if(!r)return null;try{const o=r.getItem(s(n.TOOLBAR_STORAGE_KEY_HIDDEN,t));return o===null?null:o===n.TOOLBAR_STORAGE_VALUE_TRUE}catch{return null}},E=(e,t,r)=>{const o=i(t);if(o)try{o.setItem(s(n.TOOLBAR_STORAGE_KEY_HIDDEN,r),e?n.TOOLBAR_STORAGE_VALUE_TRUE:n.TOOLBAR_STORAGE_VALUE_FALSE)}catch{return}},R=e=>typeof e=="string"&&e.length>l.NUMBER_ZERO,u=e=>{if(!e||e===c.EMPTY_STRING)return null;try{const t=JSON.parse(e);if(!Array.isArray(t))return null;const r=t.filter(R);return r.length>l.NUMBER_ZERO?r:null}catch{return null}},I=(e,t)=>{const r=i(e);if(!r)return null;try{const o=r.getItem(s(n.TOOLBAR_STORAGE_KEY_ITEMS,t));return o===null?null:u(o)}catch{return null}},b=(e,t,r)=>{const o=i(t);if(o)try{o.setItem(s(n.TOOLBAR_STORAGE_KEY_ITEMS,r),JSON.stringify(e))}catch{return}},O=e=>{const t=[];for(const r of e){if(r===n.TOOLBAR_OPTION_DIVIDER){if(t.length===l.NUMBER_ZERO||t[t.length-1]===n.TOOLBAR_OPTION_DIVIDER)continue;t.push(r);continue}t.push(r)}for(;t.length>l.NUMBER_ZERO&&t[t.length-1]===n.TOOLBAR_OPTION_DIVIDER;)t.pop();return t},g=(e,t)=>O(e.filter(r=>r===n.TOOLBAR_OPTION_DIVIDER||t.has(r))),A=e=>{const t=new Set,r=[];for(const o of e)o!==n.TOOLBAR_OPTION_DIVIDER&&(t.has(o)||(t.add(o),r.push(o)));return r};exports.buildToolbarStorageKey=s;exports.buildVisibleToolbarItems=g;exports.isSessionStorageAvailable=a;exports.listCustomizableToolbarOptions=A;exports.normalizeToolbarItems=O;exports.parseToolbarItems=u;exports.readToolbarHidden=_;exports.readToolbarItems=I;exports.writeToolbarHidden=E;exports.writeToolbarItems=b;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../constants/numbers.cjs"),c=require("../constants/generals.const.cjs"),n=require("../constants/toolbarMenu.const.cjs");require("../constants/openai.const.cjs");require("react/jsx-runtime");require("./paste.utils.cjs");const T=require("./storage.utils.cjs");require("./exportDocument.utils.cjs");require("react");require("react-dom");const a=()=>typeof sessionStorage<"u",s=(t,e)=>e?`${t}:${e}`:t,i=t=>t?T.isLocalStorageAvailable()?localStorage:null:a()?sessionStorage:null,_=(t,e)=>{const r=i(t);if(!r)return null;try{const o=r.getItem(s(n.TOOLBAR_STORAGE_KEY_HIDDEN,e));return o===null?null:o===n.TOOLBAR_STORAGE_VALUE_TRUE}catch{return null}},E=(t,e,r)=>{const o=i(e);if(o)try{o.setItem(s(n.TOOLBAR_STORAGE_KEY_HIDDEN,r),t?n.TOOLBAR_STORAGE_VALUE_TRUE:n.TOOLBAR_STORAGE_VALUE_FALSE)}catch{return}},R=t=>typeof t=="string"&&t.length>l.NUMBER_ZERO,u=t=>{if(!t||t===c.EMPTY_STRING)return null;try{const e=JSON.parse(t);if(!Array.isArray(e))return null;const r=e.filter(R);return r.length>l.NUMBER_ZERO?r:null}catch{return null}},I=(t,e)=>{const r=i(t);if(!r)return null;try{const o=r.getItem(s(n.TOOLBAR_STORAGE_KEY_ITEMS,e));return o===null?null:u(o)}catch{return null}},b=(t,e,r)=>{const o=i(e);if(o)try{o.setItem(s(n.TOOLBAR_STORAGE_KEY_ITEMS,r),JSON.stringify(t))}catch{return}},O=t=>{const e=[];for(const r of t){if(r===n.TOOLBAR_OPTION_DIVIDER){if(e.length===l.NUMBER_ZERO||e[e.length-1]===n.TOOLBAR_OPTION_DIVIDER)continue;e.push(r);continue}e.push(r)}for(;e.length>l.NUMBER_ZERO&&e[e.length-1]===n.TOOLBAR_OPTION_DIVIDER;)e.pop();return e},g=(t,e)=>O(t.filter(r=>r===n.TOOLBAR_OPTION_DIVIDER||e.has(r))),A=t=>{const e=new Set,r=[];for(const o of t)o!==n.TOOLBAR_OPTION_DIVIDER&&(e.has(o)||(e.add(o),r.push(o)));return r};exports.buildToolbarStorageKey=s;exports.buildVisibleToolbarItems=g;exports.isSessionStorageAvailable=a;exports.listCustomizableToolbarOptions=A;exports.normalizeToolbarItems=O;exports.parseToolbarItems=u;exports.readToolbarHidden=_;exports.readToolbarItems=I;exports.writeToolbarHidden=E;exports.writeToolbarItems=b;