@forgedevstack/ink 1.1.6 → 1.1.8

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 (278) hide show
  1. package/CHANGELOG.md +57 -1
  2. package/README.md +9 -1
  3. package/bin/ink.const.mjs +26 -0
  4. package/bin/ink.mjs +58 -0
  5. package/dist/common-components/icons/BulletListIcon.cjs +1 -0
  6. package/dist/common-components/icons/BulletListIcon.d.ts +3 -0
  7. package/dist/common-components/icons/BulletListIcon.d.ts.map +1 -0
  8. package/dist/common-components/icons/BulletListIcon.js +11 -0
  9. package/dist/common-components/icons/ChecklistIcon.cjs +1 -0
  10. package/dist/common-components/icons/ChecklistIcon.d.ts +3 -0
  11. package/dist/common-components/icons/ChecklistIcon.d.ts.map +1 -0
  12. package/dist/common-components/icons/ChecklistIcon.js +10 -0
  13. package/dist/common-components/icons/ImageToolIcon.cjs +1 -0
  14. package/dist/common-components/icons/ImageToolIcon.d.ts +3 -0
  15. package/dist/common-components/icons/ImageToolIcon.d.ts.map +1 -0
  16. package/dist/common-components/icons/ImageToolIcon.js +10 -0
  17. package/dist/common-components/icons/LinkToolIcon.cjs +1 -0
  18. package/dist/common-components/icons/LinkToolIcon.d.ts +3 -0
  19. package/dist/common-components/icons/LinkToolIcon.d.ts.map +1 -0
  20. package/dist/common-components/icons/LinkToolIcon.js +9 -0
  21. package/dist/common-components/icons/OrderedListIcon.cjs +1 -0
  22. package/dist/common-components/icons/OrderedListIcon.d.ts +3 -0
  23. package/dist/common-components/icons/OrderedListIcon.d.ts.map +1 -0
  24. package/dist/common-components/icons/OrderedListIcon.js +9 -0
  25. package/dist/common-components/icons/QuoteIcon.cjs +1 -0
  26. package/dist/common-components/icons/QuoteIcon.d.ts +3 -0
  27. package/dist/common-components/icons/QuoteIcon.d.ts.map +1 -0
  28. package/dist/common-components/icons/QuoteIcon.js +6 -0
  29. package/dist/common-components/icons/TableToolIcon.cjs +1 -0
  30. package/dist/common-components/icons/TableToolIcon.d.ts +3 -0
  31. package/dist/common-components/icons/TableToolIcon.d.ts.map +1 -0
  32. package/dist/common-components/icons/TableToolIcon.js +9 -0
  33. package/dist/common-components/icons/index.d.ts +7 -0
  34. package/dist/common-components/icons/index.d.ts.map +1 -1
  35. package/dist/common-components/index.d.ts +1 -1
  36. package/dist/common-components/index.d.ts.map +1 -1
  37. package/dist/components/InkEditor/InkEditor.cjs +1 -1
  38. package/dist/components/InkEditor/InkEditor.d.ts.map +1 -1
  39. package/dist/components/InkEditor/InkEditor.js +1230 -778
  40. package/dist/components/InkEditor/components/AiPanel/AiPanel.cjs +1 -1
  41. package/dist/components/InkEditor/components/AiPanel/AiPanel.d.ts.map +1 -1
  42. package/dist/components/InkEditor/components/AiPanel/AiPanel.js +58 -52
  43. package/dist/components/InkEditor/components/ExcelSheetPanel/ExcelSheetPanel.cjs +1 -0
  44. package/dist/components/InkEditor/components/ExcelSheetPanel/ExcelSheetPanel.d.ts +4 -0
  45. package/dist/components/InkEditor/components/ExcelSheetPanel/ExcelSheetPanel.d.ts.map +1 -0
  46. package/dist/components/InkEditor/components/ExcelSheetPanel/ExcelSheetPanel.js +209 -0
  47. package/dist/components/InkEditor/components/ExcelSheetPanel/ExcelSheetPanel.types.d.ts +10 -0
  48. package/dist/components/InkEditor/components/ExcelSheetPanel/ExcelSheetPanel.types.d.ts.map +1 -0
  49. package/dist/components/InkEditor/components/ExcelSheetPanel/index.d.ts +3 -0
  50. package/dist/components/InkEditor/components/ExcelSheetPanel/index.d.ts.map +1 -0
  51. package/dist/components/InkEditor/components/GraphEditModal/GraphEditModal.cjs +1 -0
  52. package/dist/components/InkEditor/components/GraphEditModal/GraphEditModal.d.ts +4 -0
  53. package/dist/components/InkEditor/components/GraphEditModal/GraphEditModal.d.ts.map +1 -0
  54. package/dist/components/InkEditor/components/GraphEditModal/GraphEditModal.js +91 -0
  55. package/dist/components/InkEditor/components/GraphEditModal/GraphEditModal.types.d.ts +11 -0
  56. package/dist/components/InkEditor/components/GraphEditModal/GraphEditModal.types.d.ts.map +1 -0
  57. package/dist/components/InkEditor/components/GraphEditModal/index.d.ts +3 -0
  58. package/dist/components/InkEditor/components/GraphEditModal/index.d.ts.map +1 -0
  59. package/dist/components/InkEditor/components/GraphPicker/GraphPicker.cjs +1 -0
  60. package/dist/components/InkEditor/components/GraphPicker/GraphPicker.d.ts +4 -0
  61. package/dist/components/InkEditor/components/GraphPicker/GraphPicker.d.ts.map +1 -0
  62. package/dist/components/InkEditor/components/GraphPicker/GraphPicker.js +98 -0
  63. package/dist/components/InkEditor/components/GraphPicker/GraphPicker.types.d.ts +10 -0
  64. package/dist/components/InkEditor/components/GraphPicker/GraphPicker.types.d.ts.map +1 -0
  65. package/dist/components/InkEditor/components/GraphPicker/index.d.ts +3 -0
  66. package/dist/components/InkEditor/components/GraphPicker/index.d.ts.map +1 -0
  67. package/dist/components/InkEditor/components/HtmlSourcePanel/HtmlSourcePanel.cjs +1 -0
  68. package/dist/components/InkEditor/components/HtmlSourcePanel/HtmlSourcePanel.d.ts +4 -0
  69. package/dist/components/InkEditor/components/HtmlSourcePanel/HtmlSourcePanel.d.ts.map +1 -0
  70. package/dist/components/InkEditor/components/HtmlSourcePanel/HtmlSourcePanel.js +27 -0
  71. package/dist/components/InkEditor/components/HtmlSourcePanel/HtmlSourcePanel.types.d.ts +7 -0
  72. package/dist/components/InkEditor/components/HtmlSourcePanel/HtmlSourcePanel.types.d.ts.map +1 -0
  73. package/dist/components/InkEditor/components/HtmlSourcePanel/index.d.ts +3 -0
  74. package/dist/components/InkEditor/components/HtmlSourcePanel/index.d.ts.map +1 -0
  75. package/dist/components/InkEditor/components/OutlineRail/OutlineRail.cjs +1 -0
  76. package/dist/components/InkEditor/components/OutlineRail/OutlineRail.d.ts +4 -0
  77. package/dist/components/InkEditor/components/OutlineRail/OutlineRail.d.ts.map +1 -0
  78. package/dist/components/InkEditor/components/OutlineRail/OutlineRail.js +36 -0
  79. package/dist/components/InkEditor/components/OutlineRail/OutlineRail.types.d.ts +8 -0
  80. package/dist/components/InkEditor/components/OutlineRail/OutlineRail.types.d.ts.map +1 -0
  81. package/dist/components/InkEditor/components/OutlineRail/index.d.ts +3 -0
  82. package/dist/components/InkEditor/components/OutlineRail/index.d.ts.map +1 -0
  83. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.cjs +1 -1
  84. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.d.ts +1 -0
  85. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.d.ts.map +1 -1
  86. package/dist/components/InkEditor/components/SlashMenu/SlashMenu.js +62 -17
  87. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.cjs +1 -0
  88. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.const.cjs +1 -0
  89. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.const.d.ts +10 -0
  90. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.const.d.ts.map +1 -0
  91. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.const.js +18 -0
  92. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.d.ts +4 -0
  93. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.d.ts.map +1 -0
  94. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.js +95 -0
  95. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.types.d.ts +11 -0
  96. package/dist/components/InkEditor/components/TableSizePicker/TableSizePicker.types.d.ts.map +1 -0
  97. package/dist/components/InkEditor/components/TableSizePicker/index.d.ts +3 -0
  98. package/dist/components/InkEditor/components/TableSizePicker/index.d.ts.map +1 -0
  99. package/dist/components/InkEditor/components/ThemePicker/ThemePicker.cjs +1 -0
  100. package/dist/components/InkEditor/components/ThemePicker/ThemePicker.d.ts +4 -0
  101. package/dist/components/InkEditor/components/ThemePicker/ThemePicker.d.ts.map +1 -0
  102. package/dist/components/InkEditor/components/ThemePicker/ThemePicker.js +81 -0
  103. package/dist/components/InkEditor/components/ThemePicker/ThemePicker.types.d.ts +12 -0
  104. package/dist/components/InkEditor/components/ThemePicker/ThemePicker.types.d.ts.map +1 -0
  105. package/dist/components/InkEditor/components/ThemePicker/index.d.ts +3 -0
  106. package/dist/components/InkEditor/components/ThemePicker/index.d.ts.map +1 -0
  107. package/dist/components/InkEditor/components/TitleGallery/TitleGallery.cjs +1 -0
  108. package/dist/components/InkEditor/components/TitleGallery/TitleGallery.d.ts +4 -0
  109. package/dist/components/InkEditor/components/TitleGallery/TitleGallery.d.ts.map +1 -0
  110. package/dist/components/InkEditor/components/TitleGallery/TitleGallery.js +79 -0
  111. package/dist/components/InkEditor/components/TitleGallery/TitleGallery.types.d.ts +10 -0
  112. package/dist/components/InkEditor/components/TitleGallery/TitleGallery.types.d.ts.map +1 -0
  113. package/dist/components/InkEditor/components/TitleGallery/index.d.ts +3 -0
  114. package/dist/components/InkEditor/components/TitleGallery/index.d.ts.map +1 -0
  115. package/dist/components/InkEditor/components/ToolbarButton/ToolbarButton.cjs +1 -1
  116. package/dist/components/InkEditor/components/ToolbarButton/ToolbarButton.d.ts.map +1 -1
  117. package/dist/components/InkEditor/components/ToolbarButton/ToolbarButton.js +41 -17
  118. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.cjs +1 -1
  119. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.d.ts.map +1 -1
  120. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.js +93 -18
  121. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.types.d.ts +6 -0
  122. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.types.d.ts.map +1 -0
  123. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.utils.cjs +1 -0
  124. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.utils.d.ts +3 -0
  125. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.utils.d.ts.map +1 -0
  126. package/dist/components/InkEditor/components/ToolbarDropdown/ToolbarDropdown.utils.js +15 -0
  127. package/dist/components/InkEditor/components/ToolbarDropdown/index.d.ts +2 -0
  128. package/dist/components/InkEditor/components/ToolbarDropdown/index.d.ts.map +1 -1
  129. package/dist/components/InkEditor/components/index.d.ts +16 -0
  130. package/dist/components/InkEditor/components/index.d.ts.map +1 -1
  131. package/dist/components/InkEditor/helpers/format.utils.cjs +2 -2
  132. package/dist/components/InkEditor/helpers/format.utils.d.ts +1 -1
  133. package/dist/components/InkEditor/helpers/format.utils.d.ts.map +1 -1
  134. package/dist/components/InkEditor/helpers/format.utils.js +72 -72
  135. package/dist/constants/colorMode.const.cjs +1 -1
  136. package/dist/constants/colorMode.const.d.ts +1 -1
  137. package/dist/constants/colorMode.const.d.ts.map +1 -1
  138. package/dist/constants/colorMode.const.js +4 -4
  139. package/dist/constants/contextMenu.const.cjs +1 -1
  140. package/dist/constants/contextMenu.const.d.ts +2 -0
  141. package/dist/constants/contextMenu.const.d.ts.map +1 -1
  142. package/dist/constants/contextMenu.const.js +17 -15
  143. package/dist/constants/defaultIcons.cjs +1 -1
  144. package/dist/constants/defaultIcons.d.ts.map +1 -1
  145. package/dist/constants/defaultIcons.js +35 -18
  146. package/dist/constants/defaults.const.cjs +1 -1
  147. package/dist/constants/defaults.const.d.ts +95 -1
  148. package/dist/constants/defaults.const.d.ts.map +1 -1
  149. package/dist/constants/defaults.const.js +323 -57
  150. package/dist/constants/generals.const.cjs +1 -1
  151. package/dist/constants/generals.const.d.ts +90 -0
  152. package/dist/constants/generals.const.d.ts.map +1 -1
  153. package/dist/constants/generals.const.js +75 -4
  154. package/dist/constants/index.d.ts +1 -0
  155. package/dist/constants/index.d.ts.map +1 -1
  156. package/dist/constants/keyboard.const.cjs +1 -1
  157. package/dist/constants/keyboard.const.d.ts +1 -0
  158. package/dist/constants/keyboard.const.d.ts.map +1 -1
  159. package/dist/constants/keyboard.const.js +2 -1
  160. package/dist/constants/lists.const.cjs +1 -1
  161. package/dist/constants/lists.const.d.ts +1 -0
  162. package/dist/constants/lists.const.d.ts.map +1 -1
  163. package/dist/constants/lists.const.js +10 -9
  164. package/dist/constants/numbers.cjs +1 -1
  165. package/dist/constants/numbers.d.ts +19 -1
  166. package/dist/constants/numbers.d.ts.map +1 -1
  167. package/dist/constants/numbers.js +46 -27
  168. package/dist/constants/plugins.const.cjs +1 -0
  169. package/dist/constants/plugins.const.d.ts +13 -0
  170. package/dist/constants/plugins.const.d.ts.map +1 -0
  171. package/dist/constants/plugins.const.js +45 -0
  172. package/dist/constants/premium.const.cjs +1 -1
  173. package/dist/constants/premium.const.d.ts.map +1 -1
  174. package/dist/constants/premium.const.js +10 -9
  175. package/dist/constants/table.const.cjs +1 -1
  176. package/dist/constants/table.const.d.ts +4 -0
  177. package/dist/constants/table.const.d.ts.map +1 -1
  178. package/dist/constants/table.const.js +10 -6
  179. package/dist/constants/toolbar.const.cjs +1 -1
  180. package/dist/constants/toolbar.const.d.ts +8 -0
  181. package/dist/constants/toolbar.const.d.ts.map +1 -1
  182. package/dist/constants/toolbar.const.js +16 -8
  183. package/dist/constants/toolbarMenu.const.cjs +1 -1
  184. package/dist/constants/toolbarMenu.const.d.ts +2 -0
  185. package/dist/constants/toolbarMenu.const.d.ts.map +1 -1
  186. package/dist/constants/toolbarMenu.const.js +80 -18
  187. package/dist/hooks/index.d.ts +2 -0
  188. package/dist/hooks/index.d.ts.map +1 -0
  189. package/dist/hooks/useToolbarOverflow.cjs +1 -0
  190. package/dist/hooks/useToolbarOverflow.d.ts +8 -0
  191. package/dist/hooks/useToolbarOverflow.d.ts.map +1 -0
  192. package/dist/hooks/useToolbarOverflow.js +29 -0
  193. package/dist/index.cjs +1 -1
  194. package/dist/index.d.ts +6 -3
  195. package/dist/index.d.ts.map +1 -1
  196. package/dist/index.js +126 -93
  197. package/dist/plugins/excel/excel.utils.cjs +1 -0
  198. package/dist/plugins/excel/excel.utils.d.ts +13 -0
  199. package/dist/plugins/excel/excel.utils.d.ts.map +1 -0
  200. package/dist/plugins/excel/excel.utils.js +40 -0
  201. package/dist/plugins/excel/index.d.ts +3 -0
  202. package/dist/plugins/excel/index.d.ts.map +1 -0
  203. package/dist/plugins/graph/graph.const.cjs +1 -0
  204. package/dist/plugins/graph/graph.const.d.ts +14 -0
  205. package/dist/plugins/graph/graph.const.d.ts.map +1 -0
  206. package/dist/plugins/graph/graph.const.js +24 -0
  207. package/dist/plugins/graph/graph.types.d.ts +7 -0
  208. package/dist/plugins/graph/graph.types.d.ts.map +1 -0
  209. package/dist/plugins/graph/graph.utils.cjs +1 -0
  210. package/dist/plugins/graph/graph.utils.d.ts +11 -0
  211. package/dist/plugins/graph/graph.utils.d.ts.map +1 -0
  212. package/dist/plugins/graph/graph.utils.js +76 -0
  213. package/dist/plugins/graph/index.d.ts +4 -0
  214. package/dist/plugins/graph/index.d.ts.map +1 -0
  215. package/dist/plugins/host/index.d.ts +2 -0
  216. package/dist/plugins/host/index.d.ts.map +1 -0
  217. package/dist/plugins/host/inkPlugins.cjs +1 -0
  218. package/dist/plugins/host/inkPlugins.d.ts +16 -0
  219. package/dist/plugins/host/inkPlugins.d.ts.map +1 -0
  220. package/dist/plugins/host/inkPlugins.js +20 -0
  221. package/dist/plugins/index.d.ts +5 -0
  222. package/dist/plugins/index.d.ts.map +1 -0
  223. package/dist/plugins/theme/index.d.ts +4 -0
  224. package/dist/plugins/theme/index.d.ts.map +1 -0
  225. package/dist/plugins/theme/inkTheme.cjs +1 -0
  226. package/dist/plugins/theme/inkTheme.d.ts +5 -0
  227. package/dist/plugins/theme/inkTheme.d.ts.map +1 -0
  228. package/dist/plugins/theme/inkTheme.js +30 -0
  229. package/dist/plugins/theme/theme.const.cjs +1 -0
  230. package/dist/plugins/theme/theme.const.d.ts +9 -0
  231. package/dist/plugins/theme/theme.const.d.ts.map +1 -0
  232. package/dist/plugins/theme/theme.const.js +15 -0
  233. package/dist/plugins/theme/theme.types.d.ts +12 -0
  234. package/dist/plugins/theme/theme.types.d.ts.map +1 -0
  235. package/dist/plugins/titles/index.d.ts +4 -0
  236. package/dist/plugins/titles/index.d.ts.map +1 -0
  237. package/dist/plugins/titles/titles.const.cjs +1 -0
  238. package/dist/plugins/titles/titles.const.d.ts +4 -0
  239. package/dist/plugins/titles/titles.const.d.ts.map +1 -0
  240. package/dist/plugins/titles/titles.const.js +15 -0
  241. package/dist/plugins/titles/titles.types.d.ts +2 -0
  242. package/dist/plugins/titles/titles.types.d.ts.map +1 -0
  243. package/dist/plugins/titles/titles.utils.cjs +1 -0
  244. package/dist/plugins/titles/titles.utils.d.ts +3 -0
  245. package/dist/plugins/titles/titles.utils.d.ts.map +1 -0
  246. package/dist/plugins/titles/titles.utils.js +14 -0
  247. package/dist/styles.css +1 -1
  248. package/dist/types/features.types.d.ts +1 -1
  249. package/dist/types/features.types.d.ts.map +1 -1
  250. package/dist/types/index.d.ts +3 -1
  251. package/dist/types/index.d.ts.map +1 -1
  252. package/dist/types/ink.types.d.ts +15 -2
  253. package/dist/types/ink.types.d.ts.map +1 -1
  254. package/dist/types/outline.types.d.ts +6 -0
  255. package/dist/types/outline.types.d.ts.map +1 -0
  256. package/dist/types/plugin.types.d.ts +8 -0
  257. package/dist/types/plugin.types.d.ts.map +1 -0
  258. package/dist/types/premium.types.d.ts +2 -2
  259. package/dist/types/premium.types.d.ts.map +1 -1
  260. package/dist/utils/index.d.ts +5 -2
  261. package/dist/utils/index.d.ts.map +1 -1
  262. package/dist/utils/outline.utils.cjs +1 -0
  263. package/dist/utils/outline.utils.d.ts +8 -0
  264. package/dist/utils/outline.utils.d.ts.map +1 -0
  265. package/dist/utils/outline.utils.js +49 -0
  266. package/dist/utils/slash.utils.cjs +1 -1
  267. package/dist/utils/slash.utils.d.ts +5 -0
  268. package/dist/utils/slash.utils.d.ts.map +1 -1
  269. package/dist/utils/slash.utils.js +24 -7
  270. package/dist/utils/table.utils.cjs +1 -1
  271. package/dist/utils/table.utils.d.ts +4 -0
  272. package/dist/utils/table.utils.d.ts.map +1 -1
  273. package/dist/utils/table.utils.js +84 -45
  274. package/dist/utils/words.utils.cjs +1 -0
  275. package/dist/utils/words.utils.d.ts +2 -0
  276. package/dist/utils/words.utils.d.ts.map +1 -0
  277. package/dist/utils/words.utils.js +14 -0
  278. package/package.json +7 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # Changelog
2
2
 
3
+ ## [Unreleased]
4
+
5
+ ## 1.1.8
6
+
7
+ ### Added
8
+ - Sheet panel options between the grid and Insert (add/remove row and column, clear, import)
9
+ - `npx @forgedevstack/ink --plugin titles|graph|theme|excel` installer
10
+ - Responsive toolbar overflow (`⋯`) so extra tools open on a second row
11
+ - Fill-screen mode (toolbar, double-click the bar, or Lab next to Share)
12
+ - Graph color editing and Bear Modal for graph values
13
+ - Sheet grid column/row hover like a spreadsheet
14
+ - Theming plugin (`theme`) — paper, snow, ink, dark — portal dark mode no longer restyles the editor
15
+ - Toolbar hover hint row and colored pips on installed plugins
16
+ - Outline toolbar toggle (`outline`)
17
+ - Graph context menu: bar / line / pie, edit values, Ask Ink AI
18
+ - Plugin host `inkPlugins` plus standalone Titles and Graph packages
19
+ - HTML source view toggle (`htmlSource` toolbar option and `features.htmlSource`)
20
+ - Table size picker (hover grid) for insert
21
+ - Table column resize from the cell edge
22
+ - Context menu: toggle header row
23
+ - Titles plugin: 30 Word-era title styles in a gallery (`titles`)
24
+ - Sheet plugin: grid editor and CSV import (`excel`)
25
+ - Graph plugin: bar, line, and pie inserts (`graph`)
26
+
27
+ ### Fixed
28
+ - Sheet and Graph toolbar buttons no longer stretch the row or force overflow scroll
29
+ - Font and list dropdowns keep light tokens when the host page is dark (`data-color-mode` + forced-light menu)
30
+ - Linking selected text keeps the range after the URL prompt
31
+ - Ink AI tabs no longer overlap
32
+ - Outline lists titles and can be shown or hidden
33
+
34
+ ## 1.1.7
35
+
36
+ ### Added
37
+ - Slash menu search row, category groups, descriptions, and keyboard shortcuts
38
+ - Slash inserts for paragraph, heading 3, quote, callout, code, and image
39
+ - Status bar word count + synced label when `showCharCount` is on
40
+ - Ask Ink AI toolbar pill
41
+ - `⌘K` opens the AI panel
42
+ - Paragraph / heading / font / list menus are a light boxed popover (white surface, Accent Soft hover, Ink Blue selected)
43
+ - Checklist toolbar button and `/todo` slash insert
44
+ - Format cluster uses letter glyphs B I U S in 28px buttons; active tools use accent fill + border
45
+ - Thin-stroke toolbar icons for lists, image, link, table, and quote
46
+ - Paragraph dropdown is a light boxed menu (Accent Soft hover, Ink Blue selected)
47
+ - Slash menu selected row, enter shortcut, and Type / + ⌘K hint
48
+ - Outline rail for document variant (`showOutline`, heading jump)
49
+ - Status bar line/column and synced indicator
50
+ - Premium `splitEditors` for extra document tabs ($19 pack and above)
51
+
52
+ ### Changed
53
+ - Editor tokens match the redesign (accent `#2951C4`, AI teal, tighter toolbar groups)
54
+
3
55
  ## 1.1.6
4
56
 
5
57
  ### Added
@@ -10,8 +62,12 @@
10
62
 
11
63
  ## 1.1.5
12
64
 
65
+ ### Added
66
+ - Editor variants chrome (`simple` / `agent` / `docx` / `notion-like` shells)
67
+
13
68
  ### Note
14
- - Editor variants chrome shipped via `feature/1.1.6-editor-views` and released as **1.1.6**
69
+ - npm: `@forgedevstack/ink@1.1.5` published to fill the version gap (dist-tag `historical`; `latest` remains 1.1.6)
70
+ - Portal/CMS dashboard track continued into **1.1.6**
15
71
 
16
72
  ## 1.1.4
17
73
 
package/README.md CHANGED
@@ -16,7 +16,15 @@
16
16
  ## Install
17
17
 
18
18
  ```bash
19
- npm install @forgedevstack/ink
19
+ npx i @forgedevstack/ink
20
+ npx @forgedevstack/ink --plugin titles graph theme excel
21
+ ```
22
+
23
+ ```bash
24
+ npx @forgedevstack/ink --plugin titles
25
+ npx @forgedevstack/ink --plugin graph
26
+ npx @forgedevstack/ink --plugin theme
27
+ npx @forgedevstack/ink --plugin excel
20
28
  ```
21
29
 
22
30
  ```tsx
@@ -0,0 +1,26 @@
1
+ export const INK_PACKAGE_NAME = '@forgedevstack/ink';
2
+
3
+ export const PLUGIN_FLAG = '--plugin';
4
+
5
+ export const PLUGIN_PACKAGE_BY_NAME = {
6
+ titles: '@forgedevstack/ink-titles',
7
+ graph: '@forgedevstack/ink-graph',
8
+ theme: '@forgedevstack/ink-theme',
9
+ excel: '@forgedevstack/ink-excel',
10
+ };
11
+
12
+ export const NPM_INSTALL = 'npm';
13
+
14
+ export const NPM_INSTALL_ARGS = ['install'];
15
+
16
+ export const USAGE_LINES = [
17
+ 'npx i @forgedevstack/ink',
18
+ 'npx @forgedevstack/ink --plugin titles',
19
+ 'npx @forgedevstack/ink --plugin graph',
20
+ 'npx @forgedevstack/ink --plugin theme',
21
+ 'npx @forgedevstack/ink --plugin excel',
22
+ ];
23
+
24
+ export const UNKNOWN_PLUGIN_PREFIX = 'Unknown plugin:';
25
+
26
+ export const INSTALL_FAILED = 'Install failed.';
package/bin/ink.mjs ADDED
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawnSync } from 'node:child_process';
4
+ import {
5
+ INK_PACKAGE_NAME,
6
+ INSTALL_FAILED,
7
+ NPM_INSTALL,
8
+ NPM_INSTALL_ARGS,
9
+ PLUGIN_FLAG,
10
+ PLUGIN_PACKAGE_BY_NAME,
11
+ UNKNOWN_PLUGIN_PREFIX,
12
+ USAGE_LINES,
13
+ } from './ink.const.mjs';
14
+
15
+ const collectPluginNames = (argv) => {
16
+ const names = [];
17
+ let taking = false;
18
+ argv.forEach((arg) => {
19
+ if (arg === PLUGIN_FLAG) {
20
+ taking = true;
21
+ return;
22
+ }
23
+ if (arg.startsWith(`${PLUGIN_FLAG}=`)) {
24
+ taking = false;
25
+ names.push(arg.slice(PLUGIN_FLAG.length + 1));
26
+ return;
27
+ }
28
+ if (arg.startsWith('-')) {
29
+ taking = false;
30
+ return;
31
+ }
32
+ if (taking) names.push(arg);
33
+ });
34
+ return names.filter(Boolean);
35
+ };
36
+
37
+ const pluginNames = collectPluginNames(process.argv.slice(2));
38
+ const unknown = pluginNames.filter((name) => !PLUGIN_PACKAGE_BY_NAME[name]);
39
+ if (unknown.length > 0) {
40
+ process.stderr.write(`${UNKNOWN_PLUGIN_PREFIX} ${unknown.join(', ')}\n`);
41
+ process.stderr.write(`${USAGE_LINES.join('\n')}\n`);
42
+ process.exit(1);
43
+ }
44
+
45
+ const packages = [
46
+ INK_PACKAGE_NAME,
47
+ ...pluginNames.map((name) => PLUGIN_PACKAGE_BY_NAME[name]),
48
+ ];
49
+
50
+ const result = spawnSync(NPM_INSTALL, [...NPM_INSTALL_ARGS, ...packages], {
51
+ stdio: 'inherit',
52
+ shell: false,
53
+ });
54
+
55
+ if (result.status !== 0) {
56
+ process.stderr.write(`${INSTALL_FAILED}\n`);
57
+ process.exit(result.status ?? 1);
58
+ }
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),r=require("./Icon.const.cjs"),c=()=>e.jsx("span",{className:r.ICON_CLASS,"aria-hidden":"true",children:e.jsxs("svg",{viewBox:r.ICON_VIEWBOX,children:[e.jsx("circle",{cx:"5",cy:"6",r:"1.2",fill:"currentColor",stroke:"none"}),e.jsx("circle",{cx:"5",cy:"12",r:"1.2",fill:"currentColor",stroke:"none"}),e.jsx("circle",{cx:"5",cy:"18",r:"1.2",fill:"currentColor",stroke:"none"}),e.jsx("path",{d:"M9 6h11M9 12h11M9 18h11"})]})});exports.BulletListIcon=c;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ export declare const BulletListIcon: FC;
3
+ //# sourceMappingURL=BulletListIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulletListIcon.d.ts","sourceRoot":"","sources":["../../../src/common-components/icons/BulletListIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,eAAO,MAAM,cAAc,EAAE,EAS5B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { jsx as r, jsxs as c } from "react/jsx-runtime";
2
+ import { ICON_CLASS as e, ICON_VIEWBOX as o } from "./Icon.const.js";
3
+ const i = () => /* @__PURE__ */ r("span", { className: e, "aria-hidden": "true", children: /* @__PURE__ */ c("svg", { viewBox: o, children: [
4
+ /* @__PURE__ */ r("circle", { cx: "5", cy: "6", r: "1.2", fill: "currentColor", stroke: "none" }),
5
+ /* @__PURE__ */ r("circle", { cx: "5", cy: "12", r: "1.2", fill: "currentColor", stroke: "none" }),
6
+ /* @__PURE__ */ r("circle", { cx: "5", cy: "18", r: "1.2", fill: "currentColor", stroke: "none" }),
7
+ /* @__PURE__ */ r("path", { d: "M9 6h11M9 12h11M9 18h11" })
8
+ ] }) });
9
+ export {
10
+ i as BulletListIcon
11
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./Icon.const.cjs"),t=()=>e.jsx("span",{className:s.ICON_CLASS,"aria-hidden":"true",children:e.jsxs("svg",{viewBox:s.ICON_VIEWBOX,children:[e.jsx("rect",{x:"4",y:"4",width:"6",height:"6",rx:"1"}),e.jsx("path",{d:"M5.5 7l1.2 1.2L9.5 5.5"}),e.jsx("path",{d:"M13 7h7M4 14h16M4 19h16"})]})});exports.ChecklistIcon=t;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ export declare const ChecklistIcon: FC;
3
+ //# sourceMappingURL=ChecklistIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChecklistIcon.d.ts","sourceRoot":"","sources":["../../../src/common-components/icons/ChecklistIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,eAAO,MAAM,aAAa,EAAE,EAQ3B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { jsx as h, jsxs as r } from "react/jsx-runtime";
2
+ import { ICON_CLASS as t, ICON_VIEWBOX as e } from "./Icon.const.js";
3
+ const o = () => /* @__PURE__ */ h("span", { className: t, "aria-hidden": "true", children: /* @__PURE__ */ r("svg", { viewBox: e, children: [
4
+ /* @__PURE__ */ h("rect", { x: "4", y: "4", width: "6", height: "6", rx: "1" }),
5
+ /* @__PURE__ */ h("path", { d: "M5.5 7l1.2 1.2L9.5 5.5" }),
6
+ /* @__PURE__ */ h("path", { d: "M13 7h7M4 14h16M4 19h16" })
7
+ ] }) });
8
+ export {
9
+ o as ChecklistIcon
10
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("./Icon.const.cjs"),s=()=>e.jsx("span",{className:c.ICON_CLASS,"aria-hidden":"true",children:e.jsxs("svg",{viewBox:c.ICON_VIEWBOX,children:[e.jsx("rect",{x:"3.5",y:"5",width:"17",height:"14",rx:"1.5"}),e.jsx("circle",{cx:"9",cy:"10",r:"1.4"}),e.jsx("path",{d:"M3.5 16.5l5-4.5 4 3.5 3-2.5 5 3.5"})]})});exports.ImageToolIcon=s;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ export declare const ImageToolIcon: FC;
3
+ //# sourceMappingURL=ImageToolIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageToolIcon.d.ts","sourceRoot":"","sources":["../../../src/common-components/icons/ImageToolIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,eAAO,MAAM,aAAa,EAAE,EAQ3B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { jsx as r, jsxs as e } from "react/jsx-runtime";
2
+ import { ICON_CLASS as c, ICON_VIEWBOX as i } from "./Icon.const.js";
3
+ const s = () => /* @__PURE__ */ r("span", { className: c, "aria-hidden": "true", children: /* @__PURE__ */ e("svg", { viewBox: i, children: [
4
+ /* @__PURE__ */ r("rect", { x: "3.5", y: "5", width: "17", height: "14", rx: "1.5" }),
5
+ /* @__PURE__ */ r("circle", { cx: "9", cy: "10", r: "1.4" }),
6
+ /* @__PURE__ */ r("path", { d: "M3.5 16.5l5-4.5 4 3.5 3-2.5 5 3.5" })
7
+ ] }) });
8
+ export {
9
+ s as ImageToolIcon
10
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("./Icon.const.cjs"),o=()=>e.jsx("span",{className:n.ICON_CLASS,"aria-hidden":"true",children:e.jsxs("svg",{viewBox:n.ICON_VIEWBOX,children:[e.jsx("path",{d:"M10 13a5 5 0 0 0 7.07 0l1.41-1.41a5 5 0 0 0-7.07-7.07L10 5.93"}),e.jsx("path",{d:"M14 11a5 5 0 0 0-7.07 0L5.52 12.41a5 5 0 0 0 7.07 7.07L14 18.07"})]})});exports.LinkToolIcon=o;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ export declare const LinkToolIcon: FC;
3
+ //# sourceMappingURL=LinkToolIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkToolIcon.d.ts","sourceRoot":"","sources":["../../../src/common-components/icons/LinkToolIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,eAAO,MAAM,YAAY,EAAE,EAO1B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
2
+ import { ICON_CLASS as r, ICON_VIEWBOX as i } from "./Icon.const.js";
3
+ const n = () => /* @__PURE__ */ a("span", { className: r, "aria-hidden": "true", children: /* @__PURE__ */ o("svg", { viewBox: i, children: [
4
+ /* @__PURE__ */ a("path", { d: "M10 13a5 5 0 0 0 7.07 0l1.41-1.41a5 5 0 0 0-7.07-7.07L10 5.93" }),
5
+ /* @__PURE__ */ a("path", { d: "M14 11a5 5 0 0 0-7.07 0L5.52 12.41a5 5 0 0 0 7.07 7.07L14 18.07" })
6
+ ] }) });
7
+ export {
8
+ n as LinkToolIcon
9
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),s=require("./Icon.const.cjs"),r=()=>e.jsx("span",{className:s.ICON_CLASS,"aria-hidden":"true",children:e.jsxs("svg",{viewBox:s.ICON_VIEWBOX,children:[e.jsx("path",{d:"M4 6h2M4 12h2M4 18h2"}),e.jsx("path",{d:"M9 6h11M9 12h11M9 18h11"})]})});exports.OrderedListIcon=r;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ export declare const OrderedListIcon: FC;
3
+ //# sourceMappingURL=OrderedListIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderedListIcon.d.ts","sourceRoot":"","sources":["../../../src/common-components/icons/OrderedListIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,eAAO,MAAM,eAAe,EAAE,EAO7B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as h, jsxs as r } from "react/jsx-runtime";
2
+ import { ICON_CLASS as e, ICON_VIEWBOX as s } from "./Icon.const.js";
3
+ const o = () => /* @__PURE__ */ h("span", { className: e, "aria-hidden": "true", children: /* @__PURE__ */ r("svg", { viewBox: s, children: [
4
+ /* @__PURE__ */ h("path", { d: "M4 6h2M4 12h2M4 18h2" }),
5
+ /* @__PURE__ */ h("path", { d: "M9 6h11M9 12h11M9 18h11" })
6
+ ] }) });
7
+ export {
8
+ o as OrderedListIcon
9
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("./Icon.const.cjs"),t=()=>e.jsx("span",{className:c.ICON_CLASS,"aria-hidden":"true",children:e.jsx("svg",{viewBox:c.ICON_VIEWBOX,children:e.jsx("path",{d:"M8 17c-2 0-3.5-1.6-3.5-4 0-3 2.2-6.4 6-8l.8 1.2C9 7.4 8 9.2 8 11.2c.8 0 2 .5 2 2.2 0 2-1.2 3.6-2 3.6zm9 0c-2 0-3.5-1.6-3.5-4 0-3 2.2-6.4 6-8l.8 1.2c-2.3 1.2-3.3 3-3.3 5 0 .8.6 2.2 2 2.2 0 2-1.2 3.6-2 3.6z"})})});exports.QuoteIcon=t;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ export declare const QuoteIcon: FC;
3
+ //# sourceMappingURL=QuoteIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuoteIcon.d.ts","sourceRoot":"","sources":["../../../src/common-components/icons/QuoteIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,eAAO,MAAM,SAAS,EAAE,EAMvB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { jsx as c } from "react/jsx-runtime";
2
+ import { ICON_CLASS as o, ICON_VIEWBOX as r } from "./Icon.const.js";
3
+ const t = () => /* @__PURE__ */ c("span", { className: o, "aria-hidden": "true", children: /* @__PURE__ */ c("svg", { viewBox: r, children: /* @__PURE__ */ c("path", { d: "M8 17c-2 0-3.5-1.6-3.5-4 0-3 2.2-6.4 6-8l.8 1.2C9 7.4 8 9.2 8 11.2c.8 0 2 .5 2 2.2 0 2-1.2 3.6-2 3.6zm9 0c-2 0-3.5-1.6-3.5-4 0-3 2.2-6.4 6-8l.8 1.2c-2.3 1.2-3.3 3-3.3 5 0 .8.6 2.2 2 2.2 0 2-1.2 3.6-2 3.6z" }) }) });
4
+ export {
5
+ t as QuoteIcon
6
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("./Icon.const.cjs"),s=()=>e.jsx("span",{className:o.ICON_CLASS,"aria-hidden":"true",children:e.jsxs("svg",{viewBox:o.ICON_VIEWBOX,children:[e.jsx("rect",{x:"4",y:"5",width:"16",height:"14",rx:"1.2"}),e.jsx("path",{d:"M4 10h16M4 15h16M10 5v14M16 5v14"})]})});exports.TableToolIcon=s;
@@ -0,0 +1,3 @@
1
+ import { FC } from 'react';
2
+ export declare const TableToolIcon: FC;
3
+ //# sourceMappingURL=TableToolIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableToolIcon.d.ts","sourceRoot":"","sources":["../../../src/common-components/icons/TableToolIcon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,eAAO,MAAM,aAAa,EAAE,EAO3B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as r, jsxs as e } from "react/jsx-runtime";
2
+ import { ICON_CLASS as o, ICON_VIEWBOX as h } from "./Icon.const.js";
3
+ const s = () => /* @__PURE__ */ r("span", { className: o, "aria-hidden": "true", children: /* @__PURE__ */ e("svg", { viewBox: h, children: [
4
+ /* @__PURE__ */ r("rect", { x: "4", y: "5", width: "16", height: "14", rx: "1.2" }),
5
+ /* @__PURE__ */ r("path", { d: "M4 10h16M4 15h16M10 5v14M16 5v14" })
6
+ ] }) });
7
+ export {
8
+ s as TableToolIcon
9
+ };
@@ -1,4 +1,11 @@
1
1
  export { UndoIcon } from './UndoIcon';
2
2
  export { RedoIcon } from './RedoIcon';
3
3
  export { GripIcon } from './GripIcon';
4
+ export { BulletListIcon } from './BulletListIcon';
5
+ export { OrderedListIcon } from './OrderedListIcon';
6
+ export { ChecklistIcon } from './ChecklistIcon';
7
+ export { ImageToolIcon } from './ImageToolIcon';
8
+ export { LinkToolIcon } from './LinkToolIcon';
9
+ export { TableToolIcon } from './TableToolIcon';
10
+ export { QuoteIcon } from './QuoteIcon';
4
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common-components/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common-components/icons/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -8,5 +8,5 @@ export { Field } from './Field';
8
8
  export type { FieldProps } from './Field';
9
9
  export { ContextMenu } from './ContextMenu';
10
10
  export type { ContextMenuItem, ContextMenuProps } from './ContextMenu';
11
- export { UndoIcon, RedoIcon, GripIcon } from './icons';
11
+ export { UndoIcon, RedoIcon, GripIcon, BulletListIcon, OrderedListIcon, ChecklistIcon, ImageToolIcon, LinkToolIcon, TableToolIcon, QuoteIcon } from './icons';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common-components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common-components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),r=require("react"),O=require("../../constants/numbers.cjs"),I=require("../../constants/toolbar.const.cjs"),A=require("../../constants/toolbarMenu.const.cjs"),vt=require("../../constants/colorMode.const.cjs"),_e=require("../../constants/keyboard.const.cjs"),Ke=require("../../constants/fonts.const.cjs"),Xe=require("../../constants/lists.const.cjs"),x=require("../../constants/findReplaceMenu.const.cjs"),je=require("../../constants/blocks.const.cjs"),f=require("../../constants/defaults.const.cjs"),Io=require("../../constants/aiModels.const.cjs");require("../../constants/openai.const.cjs");const qt=require("../../constants/defaultIcons.cjs"),a=require("../../constants/contextMenu.const.cjs"),go=require("../../utils/cn.utils.cjs"),Ao=require("../../utils/typo.utils.cjs"),Kt=require("../../utils/id.utils.cjs"),M=require("../../utils/table.utils.cjs"),m=require("../../utils/blocks.utils.cjs"),H=require("../../utils/trackChanges.utils.cjs"),We=require("../../utils/comments.utils.cjs"),Ve=require("../../utils/history.utils.cjs"),Xt=require("../../utils/slash.utils.cjs"),v=require("../../utils/premium.utils.cjs"),Ge=require("../../utils/paste.utils.cjs"),jt=require("../../utils/memory.utils.cjs"),Ro=require("../../utils/findReplace.utils.cjs"),Ze=require("../../utils/selection.utils.cjs"),$=require("../../utils/toolbarStorage.utils.cjs"),bo=require("../../common-components/Button/Button.cjs"),Wt=require("../../common-components/ContextMenu/ContextMenu.cjs"),d=require("./helpers/format.utils.cjs"),ho=require("../../plugins/ai/aiPlugin.cjs"),g=require("./components/ToolbarButton/ToolbarButton.cjs"),Te=require("./components/ToolbarDropdown/ToolbarDropdown.cjs"),Vt=require("./components/ToolbarColorPicker/ToolbarColorPicker.cjs"),Bo=require("./components/CommentsPanel/CommentsPanel.cjs"),So=require("./components/AiPanel/AiPanel.cjs"),Do=require("./components/AiAutocomplete/AiAutocomplete.cjs"),Gt=require("./components/AiAutocomplete/AiAutocomplete.const.cjs"),Ye=require("./components/AiAutocomplete/AiAutocomplete.utils.cjs"),Mo=require("./components/BlockHandles/BlockHandles.cjs"),Ee=require("./components/BlockHandles/BlockHandles.const.cjs"),ko=require("./components/InlineToolbar/InlineToolbar.cjs"),fe=require("./components/InlineToolbar/InlineToolbar.const.cjs"),Zt=require("./components/InlineToolbar/InlineToolbar.utils.cjs"),Uo=require("./components/SlashMenu/SlashMenu.cjs"),Po=require("./components/TrackChangesBar/TrackChangesBar.cjs"),xo=require("./components/SignPad/SignPad.cjs"),Ho=require("./components/FindReplace/FindReplace.cjs"),wo=require("./components/ToolbarCustomize/ToolbarCustomize.cjs"),ze=()=>{const h=window.getSelection();if(!h||h.rangeCount===O.NUMBER_ZERO)return"";const N=h.getRangeAt(O.NUMBER_ZERO),B=document.createElement("div");return B.appendChild(N.cloneContents()),B.innerHTML},p=h=>{h==null||h.focus({preventScroll:!0})},Fo=h=>{var wt;const{value:N,defaultValue:B="",onChange:S,placeholder:$e=f.INK_PLACEHOLDER_DEFAULT,disabled:i=!1,readOnly:c=!1,minHeight:Oe=O.INK_MIN_HEIGHT,maxHeight:Ce,toolbar:ie=f.INK_DEFAULT_TOOLBAR,className:Yt="",testId:zt,allowImagePaste:Qe=!0,showCharCount:Je=!1,charCountMax:et,typoAutoFix:$t=!0,variant:tt=f.INK_DEFAULT_VARIANT,chrome:Qt=f.INK_DEFAULT_CHROME,colorMode:nt=vt.INK_DEFAULT_COLOR_MODE,features:Jt,author:q=f.INK_DEFAULT_AUTHOR,trackChanges:Q,onTrackChangesChange:me,trackChangesEnabled:ce,onTrackChangesEnabledChange:pe,comments:J,onCommentsChange:Le,showCommentsPanel:ee,onShowCommentsPanelChange:Ne,ai:E,slashCommands:en,tableRows:tn=f.INK_TABLE_DEFAULT_ROWS,tableCols:nn=f.INK_TABLE_DEFAULT_COLS,premium:on,theme:rn,icons:ot,pasteMode:sn="plain",onImageUpload:rt,wysiwyg:ln=!1,keepInMemory:K=!1,memoryKey:X,onToolbarChange:Ie,toolbarHidden:j,onToolbarHiddenChange:ge,style:cn,...an}=h,T={...f.INK_DEFAULT_FEATURES,...Jt},W=v.resolveInkPremium(on),un=v.hasInkPremiumFeature(W,"icons"),dn=v.hasInkPremiumFeature(W,"theme"),_n=v.hasInkPremiumFeature(W,"richPaste"),Tn=v.hasInkPremiumFeature(W,"imageUpload"),En=v.hasInkPremiumFeature(W,"wysiwyg")&&ln,C=un&&ot?{...qt.INK_DEFAULT_ICONS,...ot}:qt.INK_DEFAULT_ICONS,fn=dn?v.themeTokensToStyle(rn):{},On=_n&&sn==="rich",n=r.useRef(null),te=r.useRef(new Ve.InkHistoryStack(N??B)),V=r.useRef(null),w=r.useRef(null),[st,Cn]=r.useState(new Set),[mn,lt]=r.useState("p"),[pn,Ln]=r.useState(0),[Nn,In]=r.useState(O.INK_DEFAULT_TEXT_COLOR),[gn,An]=r.useState(O.INK_DEFAULT_HIGHLIGHT_COLOR),[G,it]=r.useState(ce??!1),[Rn,ct]=r.useState(Q??[]),[bn,at]=r.useState(J??[]),[hn,ut]=r.useState(ee??!1),[dt,Ae]=r.useState(!!(E!=null&&E.enabled&&E.openOnInit)),[ae,Bn]=r.useState(!1),_t=r.useRef(!1),[k,ne]=r.useState({visible:!1,suggestion:"",top:O.NUMBER_ZERO,left:O.NUMBER_ZERO}),oe=r.useRef(null),Z=r.useRef(O.NUMBER_ZERO),[Tt,Sn]=r.useState(""),[Dn,Mn]=r.useState(0),[kn,Et]=r.useState(!1),[Un,ue]=r.useState([]),[ft,Pn]=r.useState({top:0,left:0}),[Ot,Re]=r.useState(!1),[be,de]=r.useState(!1),[xn,Hn]=r.useState(x.FIND_REPLACE_FOCUS_FIND),[wn,Fn]=r.useState(Ke.FONT_VALUE_SYSTEM),[yn,Ct]=r.useState(Xe.LIST_VALUE_BULLET),[vn,qn]=r.useState(x.FIND_REPLACE_FOCUS_FIND),[he,Be]=r.useState({open:!1,x:O.NUMBER_ZERO,y:O.NUMBER_ZERO}),[Kn,mt]=r.useState(!1),[Se,De]=r.useState({open:!1,x:O.NUMBER_ZERO,y:O.NUMBER_ZERO}),[Me,Y]=r.useState({open:!1,top:O.NUMBER_ZERO,left:O.NUMBER_ZERO}),[ke,pt]=r.useState(()=>$.readToolbarItems(K,X)??ie),[Xn,Lt]=r.useState(()=>j!==void 0?j:$.readToolbarHidden(K,X)??!1),[jn,Nt]=r.useState(!1),It=r.useRef(!0),Wn=ie.join(","),U=Q??Rn,re=J??bn,Ue=ee??hn,gt=en??T.slash,At=j??Xn,Rt=ie,Vn=$.listCustomizableToolbarOptions(Rt),Pe=nt===vt.COLOR_MODE_SYSTEM?void 0:nt,xe=!!(T.ai&&(E!=null&&E.enabled)&&E.autocomplete!==!1&&!i&&!c),He=()=>{oe.current!==null&&(window.clearTimeout(oe.current),oe.current=null)},D=()=>{He(),Z.current+=1,ne(e=>e.visible||e.suggestion?{visible:!1,suggestion:"",top:O.NUMBER_ZERO,left:O.NUMBER_ZERO}:e)},Gn=()=>{if(!xe||ae||!n.current){D();return}const e=window.getSelection();if(!e||!e.isCollapsed){D();return}He(),ne(o=>o.visible||o.suggestion?{...o,visible:!1,suggestion:""}:o);const t=(E==null?void 0:E.providerId)||Io.INK_AI_DEMO_PROVIDER_ID;oe.current=window.setTimeout(()=>{if(oe.current=null,!n.current||_t.current)return;const o=window.getSelection();if(!o||!o.isCollapsed)return;const s=Ye.getTextBeforeCaret(n.current),u=Ye.getCaretPositionInRoot(n.current);if(!s.trim()||!u)return;const L=Z.current+1;Z.current=L;const b=n.current.innerHTML;ho.inkAi.runProvider(t,{capability:"autocomplete",html:b,prompt:s,modelId:E==null?void 0:E.modelId}).then(y=>{var yt;if(L!==Z.current)return;const P=((yt=y.text)==null?void 0:yt.trim())||"";if(!P){ne({visible:!1,suggestion:"",top:O.NUMBER_ZERO,left:O.NUMBER_ZERO});return}const Ft=n.current&&Ye.getCaretPositionInRoot(n.current)||u;ne({visible:!0,suggestion:P,top:Ft.top,left:Ft.left})}).catch(()=>{L===Z.current&&ne({visible:!1,suggestion:"",top:O.NUMBER_ZERO,left:O.NUMBER_ZERO})})},Gt.AI_AUTOCOMPLETE_DEBOUNCE_MS)};r.useEffect(()=>()=>{He(),Z.current+=1},[]),r.useEffect(()=>{_t.current=ae,ae&&D()},[ae]),r.useEffect(()=>{ce!==void 0&&it(ce)},[ce]),r.useEffect(()=>{Q&&ct(Q)},[Q]),r.useEffect(()=>{J&&at(J)},[J]),r.useEffect(()=>{ee!==void 0&&ut(ee)},[ee]),r.useEffect(()=>{j!==void 0&&Lt(j)},[j]),r.useEffect(()=>{if(It.current){It.current=!1;return}pt(ie)},[Wn]),r.useEffect(()=>{if(!n.current||N===void 0||N===V.current)return;if(n.current.innerHTML===N){V.current=N;return}const e=document.activeElement===n.current;Ze.withPreservedSelection(e?n.current:null,()=>{n.current&&(n.current.innerHTML=N)}),V.current=N},[N]),r.useEffect(()=>{if(!n.current)return;const e=K?jt.readInkMemory(X):"";if(e){n.current.innerHTML=e,V.current=e,te.current=new Ve.InkHistoryStack(e),S==null||S(e);return}N===void 0&&B&&(n.current.innerHTML=B,V.current=B,te.current=new Ve.InkHistoryStack(B),S==null||S(B))},[]);const we=e=>{var t;te.current.push(e),V.current=e,S==null||S(e),K&&jt.writeInkMemory(e,X),Je&&n.current&&Ln(((t=n.current.textContent)==null?void 0:t.length)??0)},F=e=>{n.current&&(Ze.withPreservedSelection(n.current,()=>{n.current&&(n.current.innerHTML=e)}),we(e))},Fe=e=>{Lt(e),ge==null||ge(e),$.writeToolbarHidden(e,K,X)},Zn=e=>{pt(e),Ie==null||Ie(e),$.writeToolbarItems(e,K,X)},Yn=(e,t)=>{if(e===A.TOOLBAR_OPTION_DIVIDER)return;const o=new Set(ke.filter(s=>s!==A.TOOLBAR_OPTION_DIVIDER));t?o.add(e):o.delete(e),Zn($.buildVisibleToolbarItems(Rt,o))},se=e=>{ct(e),me==null||me(e)},ye=e=>{at(e),Le==null||Le(e)},ve=e=>{ut(e),Ne==null||Ne(e)},zn=e=>{it(e),pe==null||pe(e)},$n=()=>{if(i||c){Y(u=>u.open?{...u,open:!1}:u);return}const e=window.getSelection();if(!e||e.isCollapsed||e.rangeCount===0||!Zt.selectionIsInsideElement(e,n.current)){Y(u=>u.open?{...u,open:!1}:u);return}const o=e.getRangeAt(0).getBoundingClientRect();if(o.width===0&&o.height===0){Y(u=>u.open?{...u,open:!1}:u);return}const s=Zt.clampInlineToolbarPosition({selectionRect:o,toolbarWidth:fe.INLINE_TOOLBAR_ESTIMATED_WIDTH_PX,toolbarHeight:fe.INLINE_TOOLBAR_ESTIMATED_HEIGHT_PX,viewport:{width:window.innerWidth,height:window.innerHeight},gap:fe.INLINE_TOOLBAR_GAP_PX,edgePadding:fe.INLINE_TOOLBAR_EDGE_PADDING_PX});Y({open:!0,top:s.top,left:s.left})},le=()=>{Cn(d.getActiveFormats());const e=d.queryCommandValue("formatBlock");if(e&&lt(e.toLowerCase().replace(/[<>]/g,"")),Ct(d.detectListType()),Sn(ze()),$n(),!n.current||!T.blocks)return;const t=window.getSelection(),o=(t==null?void 0:t.anchorNode)??null,s=m.getBlockElement(o,n.current);if(m.markActiveBlock(n.current,s),s){const u=n.current.getBoundingClientRect(),L=s.getBoundingClientRect();Mn(L.top-u.top+n.current.scrollTop),Et(!0)}else Et(!1)},_=()=>{var t,o,s;if(!n.current)return;let e=n.current.innerHTML;if(G&&T.trackChanges){const u=window.getSelection();if(u&&!u.isCollapsed){const L=ze();if(L){const b=H.createTrackChange("delete",L,q);se([...U,b]),Qn(b.id),e=n.current.innerHTML}}}if(we(e),le(),gt&&n.current){const u=((o=(t=window.getSelection())==null?void 0:t.anchorNode)==null?void 0:o.textContent)??"",L=Xt.extractSlashQuery(u);if(L!==null){ue(Xt.filterSlashCommands(L));const b=(s=window.getSelection())==null?void 0:s.getRangeAt(0);if(b&&n.current){const y=b.getBoundingClientRect(),P=n.current.getBoundingClientRect();Pn({top:y.bottom-P.top+8,left:y.left-P.left})}}else ue([])}xe?Gn():D()},bt=()=>{const e=k.suggestion;if(!e){D();return}p(n.current),d.execCommand(Gt.AI_AUTOCOMPLETE_COMMAND_INSERT_TEXT,e),D(),_()},Qn=e=>{const t=window.getSelection();if(!t||t.rangeCount===0)return;const o=ze();o&&d.insertHTML(H.wrapDeleteHtml(o,e))},Jn=()=>{if(!n.current||!$t||!T.typoAutoFix||i||c)return;const e=n.current.innerHTML,t=Ao.applyTypoAutoFix(e);t.html!==e&&(Ze.withPreservedSelection(n.current,()=>{n.current&&(n.current.innerHTML=t.html)}),we(t.html))},R=e=>{if(i||c)return;if(p(n.current),e==="clearFormat"){d.clearFormatDeep(),_();return}if(e==="directionLtr"&&n.current){d.setBlockDirection(n.current,je.DIR_LTR),_();return}if(e==="directionRtl"&&n.current){d.setBlockDirection(n.current,je.DIR_RTL),_();return}if(e==="superscript"||e==="subscript"){d.execCommand(e),_();return}const t=f.INK_BUTTON_CONFIG[e];t&&(t.value?d.execCommand(t.command,t.value):d.execCommand(t.command),_())},eo=e=>{i||c||(p(n.current),d.execCommand("formatBlock",e),lt(e),_())},to=e=>{i||c||(p(n.current),d.applyFontFamily(e),Fn(e),_())},no=e=>{i||c||(p(n.current),d.applyListType(e),Ct(e),_())},ht=e=>{Hn(e),qn(e),de(!0)},oo=e=>{if(i||c)return;const t=e===x.FIND_REPLACE_VALUE_REPLACE?x.FIND_REPLACE_FOCUS_REPLACE:x.FIND_REPLACE_FOCUS_FIND;ht(t)},qe=()=>{if(i||c)return;const e=window.prompt("Enter URL:","https://");e&&(p(n.current),d.insertLink(e),_())},Bt=async e=>Tn&&rt?rt(e):d.fileToDataUrl(e),ro=async()=>{if(i||c)return;const e=document.createElement("input");e.type="file",e.accept="image/*",e.onchange=async()=>{var s;const t=(s=e.files)==null?void 0:s[0];if(!t)return;const o=await Bt(t);p(n.current),d.insertImage(o,t.name),_()},e.click()},St=()=>{if(i||c||!T.table)return;p(n.current);const e=M.buildTableHtml(tn,nn);if(G&&T.trackChanges){const t=H.createTrackChange("insert",e,q);se([...U,t]),d.insertHTML(H.wrapInsertHtml(e,t.id))}else d.insertHTML(e);_()},Dt=()=>{const e=te.current.undo();if(e===null||!n.current){d.execCommand("undo"),_();return}F(e)},Mt=()=>{const e=te.current.redo();if(e===null||!n.current){d.execCommand("redo"),_();return}F(e)},so=e=>{i||c||(e.preventDefault(),De(t=>t.open?{...t,open:!1}:t),mt(!!(T.table&&M.getTableCellFromSelection())),Be({open:!0,x:e.clientX,y:e.clientY}))},lo=e=>{i||c||(e.preventDefault(),Be(t=>t.open?{...t,open:!1}:t),De({open:!0,x:e.clientX,y:e.clientY}))},kt=()=>{if(i||c||!T.comments)return;const e=window.prompt("Comment:");if(!(e!=null&&e.trim()))return;const t=Kt.createInkId("hl");if(p(n.current),!We.wrapSelectionAsComment(t))return;const s=We.createCommentThread(q,e.trim(),t);ye([s,...re]),ve(!0),_()},io=[{id:A.TOOLBAR_CONTEXT_MENU_ID_CUSTOMIZE,label:A.TOOLBAR_CONTEXT_MENU_LABEL_CUSTOMIZE,onSelect:()=>Nt(!0)},{id:A.TOOLBAR_CONTEXT_MENU_ID_HIDE,label:A.TOOLBAR_CONTEXT_MENU_LABEL_HIDE,onSelect:()=>Fe(!0)}],z=e=>{const t=M.getTableCellFromSelection();!t||!T.table||e(t)&&_()},co=[...T.table&&Kn?[{id:a.CONTEXT_MENU_ID_TABLE_ROW_ABOVE,label:a.CONTEXT_MENU_LABEL_TABLE_ROW_ABOVE,onSelect:()=>z(e=>M.insertTableRow(e,"before"))},{id:a.CONTEXT_MENU_ID_TABLE_ROW_BELOW,label:a.CONTEXT_MENU_LABEL_TABLE_ROW_BELOW,onSelect:()=>z(e=>M.insertTableRow(e,"after"))},{id:a.CONTEXT_MENU_ID_TABLE_COL_LEFT,label:a.CONTEXT_MENU_LABEL_TABLE_COL_LEFT,onSelect:()=>z(e=>M.insertTableColumn(e,"before"))},{id:a.CONTEXT_MENU_ID_TABLE_COL_RIGHT,label:a.CONTEXT_MENU_LABEL_TABLE_COL_RIGHT,onSelect:()=>z(e=>M.insertTableColumn(e,"after"))},{id:a.CONTEXT_MENU_ID_TABLE_DELETE_ROW,label:a.CONTEXT_MENU_LABEL_TABLE_DELETE_ROW,onSelect:()=>z(e=>M.deleteTableRow(e))},{id:a.CONTEXT_MENU_ID_TABLE_DELETE_COL,label:a.CONTEXT_MENU_LABEL_TABLE_DELETE_COL,onSelect:()=>z(e=>M.deleteTableColumn(e))}]:[],{id:a.CONTEXT_MENU_ID_BOLD,label:a.CONTEXT_MENU_LABEL_BOLD,onSelect:()=>R("bold")},{id:a.CONTEXT_MENU_ID_ITALIC,label:a.CONTEXT_MENU_LABEL_ITALIC,onSelect:()=>R("italic")},{id:a.CONTEXT_MENU_ID_UNDERLINE,label:a.CONTEXT_MENU_LABEL_UNDERLINE,onSelect:()=>R("underline")},{id:a.CONTEXT_MENU_ID_STRIKE,label:a.CONTEXT_MENU_LABEL_STRIKE,onSelect:()=>R("strikethrough")},{id:a.CONTEXT_MENU_ID_HEADING,label:a.CONTEXT_MENU_LABEL_HEADING,onSelect:()=>R("heading2")},{id:a.CONTEXT_MENU_ID_BULLET,label:a.CONTEXT_MENU_LABEL_BULLET,onSelect:()=>R("bulletList")},{id:a.CONTEXT_MENU_ID_ORDERED,label:a.CONTEXT_MENU_LABEL_ORDERED,onSelect:()=>R("orderedList")},{id:a.CONTEXT_MENU_ID_LINK,label:a.CONTEXT_MENU_LABEL_LINK,onSelect:()=>qe()},{id:a.CONTEXT_MENU_ID_CLEAR,label:a.CONTEXT_MENU_LABEL_CLEAR,onSelect:()=>R("clearFormat")},{id:a.CONTEXT_MENU_ID_FIND,label:a.CONTEXT_MENU_LABEL_FIND,disabled:!T.findReplace,onSelect:()=>de(!0)},{id:a.CONTEXT_MENU_ID_SIGNATURE,label:a.CONTEXT_MENU_LABEL_SIGNATURE,disabled:!T.signature,onSelect:()=>Re(!0)},{id:a.CONTEXT_MENU_ID_COMMENT,label:a.CONTEXT_MENU_LABEL_COMMENT,disabled:!T.comments,onSelect:()=>kt()},...At?[{id:A.CONTEXT_MENU_ID_SHOW_TOOLBAR,label:A.CONTEXT_MENU_LABEL_SHOW_TOOLBAR,onSelect:()=>Fe(!1)}]:[]],Ut=e=>{if(!n.current)return;const t=H.acceptTrackChangeInHtml(n.current.innerHTML,e);F(t),se(U.map(o=>o.id===e?{...o,accepted:!0}:o))},Pt=e=>{if(!n.current)return;const t=H.rejectTrackChangeInHtml(n.current.innerHTML,e);F(t),se(U.map(o=>o.id===e?{...o,rejected:!0}:o))},xt=async e=>{const t=await Bt(e),o=`<img src="${t}" alt="" style="max-width:100%;height:auto;" />`;if(G&&T.trackChanges){const s=H.createTrackChange("insert",o,q);se([...U,s]),d.insertHTML(H.wrapInsertHtml(o,s.id))}else d.insertImage(t);_()},ao=async e=>{if(i||c)return;const t=e.clipboardData;if(!t)return;if(On){const s=Ge.extractClipboardHtml(t);if(s){e.preventDefault();const L=Ge.sanitizePastedHtml(s);L&&(d.insertHTML(L),_());const b=t.items;if(Qe&&b)for(const y of Array.from(b)){if(!y.type.startsWith("image/"))continue;const P=y.getAsFile();P&&await xt(P)}return}const u=Ge.extractClipboardText(t);if(u){e.preventDefault(),d.insertHTML(u.replace(/\n/g,"<br />")),_();return}}if(!Qe)return;const o=t.items;if(o)for(const s of Array.from(o)){if(!s.type.startsWith("image/"))continue;e.preventDefault();const u=s.getAsFile();u&&await xt(u)}},uo=e=>{R(e)},_o=e=>{if(e.key===_e.KEY_TAB&&k.visible&&k.suggestion){e.preventDefault(),bt();return}if(e.key===_e.KEY_ENTER){D();return}if(d.tryConvertMarkdownListPrefix(e.nativeEvent)){_();return}if(e.key===_e.KEY_ESCAPE){if(k.visible){e.preventDefault(),D();return}ue([]),Y(t=>t.open?{...t,open:!1}:t)}(e.metaKey||e.ctrlKey)&&e.key===_e.KEY_Z&&(e.preventDefault(),e.shiftKey?Mt():Dt())},To=e=>{var o;p(n.current);const t=window.getSelection();if((o=t==null?void 0:t.anchorNode)!=null&&o.textContent){const u=t.anchorNode.textContent.replace(/(?:^|\s)\/[^\s]*$/," ");t.anchorNode.nodeType===Node.TEXT_NODE&&(t.anchorNode.textContent=u)}switch(ue([]),e.insert){case"heading1":d.execCommand("formatBlock","h1");break;case"heading2":d.execCommand("formatBlock","h2");break;case"bulletList":d.execCommand("insertUnorderedList");break;case"orderedList":d.execCommand("insertOrderedList");break;case"table":St();return;case"ai":Ae(!0);break}_()},Ht=e=>{if(!n.current)return;const t=window.getSelection(),o=m.getBlockElement((t==null?void 0:t.anchorNode)??null,n.current);o&&m.moveBlock(o,e)&&(_(),le())},Eo=e=>{if(!n.current)return;const t=window.getSelection(),o=m.getBlockElement((t==null?void 0:t.anchorNode)??null,n.current),s=n.current.querySelector(`.${f.INK_CLASS_BLOCK_ACTIVE}`),u=o??(s instanceof HTMLElement?s:null);if(!u){e.preventDefault();return}w.current=u,m.clearBlockDragClasses(n.current),m.markActiveBlock(n.current,u),m.markDraggingBlock(u),e.dataTransfer.setData(Ee.BLOCK_HANDLES_DRAG_MIME,Ee.BLOCK_HANDLES_DRAG_PAYLOAD),e.dataTransfer.effectAllowed=Ee.BLOCK_HANDLES_DRAG_EFFECT_MOVE},fo=e=>{if(!n.current||!w.current)return;e.preventDefault(),e.dataTransfer.dropEffect=Ee.BLOCK_HANDLES_DRAG_EFFECT_MOVE;const t=m.getBlockElement(e.target,n.current);if(!t||t===w.current){m.markDropTarget(n.current,null,null);return}const o=m.resolveDropPosition(e.clientY,t);m.markDropTarget(n.current,t,o)},Oo=e=>{if(!n.current||!w.current)return;e.preventDefault();const t=m.getBlockElement(e.target,n.current),o=w.current;t&&t!==o&&(m.resolveDropPosition(e.clientY,t)===je.BLOCK_DROP_POSITION_BEFORE?m.reorderBlockBefore(o,t):m.reorderBlockAfter(o,t))&&(_(),le()),m.clearBlockDragClasses(n.current),w.current=null},Co=()=>{n.current&&m.clearBlockDragClasses(n.current),w.current=null},mo=(e,t)=>{if(e==="divider")return l.jsx("span",{className:f.INK_CLASS_DIVIDER},`divider-${t}`);if(e==="headingDropdown")return l.jsx(Te.ToolbarDropdown,{title:"Heading",options:f.INK_HEADING_OPTIONS,value:mn||"p",disabled:i||c,onChange:eo},"heading");if(e===I.TOOLBAR_OPTION_FONT_DROPDOWN)return l.jsx(Te.ToolbarDropdown,{title:Ke.FONT_DROPDOWN_TITLE,options:Ke.INK_FONT_OPTIONS,value:wn,disabled:i||c,onChange:to},I.TOOLBAR_OPTION_FONT_DROPDOWN);if(e===I.TOOLBAR_OPTION_LIST_DROPDOWN)return l.jsx(Te.ToolbarDropdown,{title:Xe.LIST_DROPDOWN_TITLE,options:Xe.INK_LIST_OPTIONS,value:yn,disabled:i||c,onChange:no},I.TOOLBAR_OPTION_LIST_DROPDOWN);if(e==="textColor")return l.jsx(Vt.ToolbarColorPicker,{title:"Text color",type:"text",value:Nn,disabled:i||c,onChange:s=>{p(n.current),d.setTextColor(s),In(s),_()}},"textColor");if(e==="highlightColor")return l.jsx(Vt.ToolbarColorPicker,{title:"Highlight color",type:"highlight",value:gn,disabled:i||c,onChange:s=>{p(n.current),d.setHighlightColor(s),An(s),_()}},"highlightColor");if(e==="link")return l.jsx(g.ToolbarButton,{icon:C.link,title:"Insert link",disabled:i||c,onClick:qe},"link");if(e==="image")return l.jsx(g.ToolbarButton,{icon:C.image,title:"Insert image",disabled:i||c,onClick:()=>{ro()}},"image");if(e==="table")return T.table?l.jsx(g.ToolbarButton,{icon:C.table,title:"Insert table",disabled:i||c,onClick:St},"table"):null;if(e===I.TOOLBAR_OPTION_SIGNATURE)return T.signature?l.jsx(g.ToolbarButton,{icon:C.signature,title:"Sign pad",active:Ot,disabled:i||c,onClick:()=>Re(!0)},I.TOOLBAR_OPTION_SIGNATURE):null;if(e===I.TOOLBAR_OPTION_FIND_REPLACE)return T.findReplace?l.jsx(g.ToolbarButton,{icon:C.findReplace,title:"Find and replace",active:be,disabled:i||c,onClick:()=>{be?de(!1):ht(x.FIND_REPLACE_FOCUS_FIND)}},I.TOOLBAR_OPTION_FIND_REPLACE):null;if(e===I.TOOLBAR_OPTION_FIND_REPLACE_DROPDOWN)return T.findReplace?l.jsx(Te.ToolbarDropdown,{title:x.FIND_REPLACE_DROPDOWN_TITLE,options:x.INK_FIND_REPLACE_OPTIONS,value:vn,disabled:i||c,onChange:oo},I.TOOLBAR_OPTION_FIND_REPLACE_DROPDOWN):null;if(e===I.TOOLBAR_OPTION_HORIZONTAL_RULE)return T.horizontalRule?l.jsx(g.ToolbarButton,{icon:C.horizontalRule,title:"Horizontal rule",disabled:i||c,onClick:()=>{p(n.current),d.insertHTML("<hr />"),_()}},I.TOOLBAR_OPTION_HORIZONTAL_RULE):null;if(e==="undo")return l.jsx(g.ToolbarButton,{icon:C.undo,title:"Undo",disabled:i||c,onClick:Dt},"undo");if(e==="redo")return l.jsx(g.ToolbarButton,{icon:C.redo,title:"Redo",disabled:i||c,onClick:Mt},"redo");if(e==="trackChanges")return T.trackChanges?l.jsx(g.ToolbarButton,{icon:C.trackChanges,title:"Track changes",active:G,disabled:i||c,onClick:()=>zn(!G)},"trackChanges"):null;if(e==="comments")return T.comments?l.jsx(g.ToolbarButton,{icon:C.comments,title:"Comments",active:Ue,disabled:i||c,onClick:()=>{Ue?ve(!1):kt()}},"comments"):null;if(e==="ai")return!T.ai||!(E!=null&&E.enabled)?null:l.jsx(g.ToolbarButton,{icon:C.ai,title:"Ink AI",active:dt,disabled:i||c,onClick:()=>Ae(s=>!s)},"ai");const o=f.INK_BUTTON_CONFIG[e];return o?l.jsx(g.ToolbarButton,{icon:C[e]??e.slice(0,1).toUpperCase(),title:o.title,active:st.has(e),disabled:i||c,onClick:()=>R(e)},e):null},po=typeof Oe=="number"?`${Oe}px`:Oe,Lo=typeof Ce=="number"?`${Ce}px`:Ce,No=!!(E!=null&&E.enabled&&dt);return l.jsxs("div",{className:go.cn(f.INK_CLASS_ROOT,Yt),"data-testid":zt,"data-disabled":i||void 0,"data-variant":tt,"data-chrome":Qt,"data-color-mode":Pe,"data-premium":W.active||void 0,"data-wysiwyg":En||void 0,style:{...fn,...cn},...an,children:[At?l.jsx("div",{className:f.INK_CLASS_TOOLBAR_SHOW,children:l.jsx(bo.Button,{type:"button","aria-label":A.TOOLBAR_SHOW_CONTROL_ARIA_LABEL,onClick:()=>Fe(!1),children:A.TOOLBAR_SHOW_CONTROL_LABEL})}):l.jsx("div",{className:f.INK_CLASS_TOOLBAR,role:"toolbar","aria-label":"Ink formatting toolbar",onContextMenu:lo,children:ke.map(mo)}),l.jsx(wo.ToolbarCustomize,{open:jn,options:Vn,visibleItems:ke,onToggle:Yn,onClose:()=>Nt(!1)}),l.jsx(xo.SignPad,{open:Ot,onClose:()=>Re(!1),onConfirm:e=>{p(n.current),d.insertImage(e),_()}}),l.jsx(Ho.FindReplace,{open:be,focusField:xn,onClose:()=>de(!1),onReplace:(e,t,o)=>{if(!n.current)return;const s=Ro.replaceInHtml(n.current.innerHTML,e,t,o);F(s)}}),G&&T.trackChanges?l.jsx(Po.TrackChangesBar,{changes:U,onAccept:Ut,onReject:Pt,onAcceptAll:()=>U.forEach(e=>Ut(e.id)),onRejectAll:()=>U.forEach(e=>Pt(e.id))}):null,tt==="agent"?l.jsx("div",{className:"Ink-Editor__agent-bar",role:"status",children:A.AGENT_BAR_PLACEHOLDER}):null,l.jsxs("div",{className:f.INK_CLASS_SHELL,children:[l.jsxs("div",{className:f.INK_CLASS_BODY,children:[T.blocks?l.jsx(Mo.BlockHandles,{visible:kn&&!i&&!c,top:Dn,onMoveUp:()=>Ht("up"),onMoveDown:()=>Ht("down"),onDragStart:Eo}):null,l.jsx("div",{ref:n,className:f.INK_CLASS_CONTENT,contentEditable:!i&&!c,role:"textbox","aria-multiline":"true","aria-placeholder":$e,"data-placeholder":$e,suppressContentEditableWarning:!0,style:{minHeight:po,maxHeight:Lo},onInput:_,onBlur:Jn,onKeyUp:le,onKeyDown:_o,onMouseUp:le,onContextMenu:so,onDragOver:fo,onDrop:Oo,onDragEnd:Co,onPaste:e=>{ao(e)}}),gt?l.jsx(Uo.SlashMenu,{items:Un,top:ft.top,left:ft.left,onSelect:To}):null,xe?l.jsx(Do.AiAutocomplete,{suggestion:k.suggestion,position:{top:k.top,left:k.left},visible:k.visible,onAccept:bt,onDismiss:D}):null,l.jsx(ko.InlineToolbar,{open:Me.open,top:Me.top,left:Me.left,icons:{bold:C.bold,italic:C.italic,underline:C.underline,code:C.code,link:C.link,clearFormat:C.clearFormat},activeFormats:st,disabled:i||c,onFormat:uo,onLink:qe,onClose:()=>Y(e=>({...e,open:!1}))}),l.jsx(Wt.ContextMenu,{open:he.open,x:he.x,y:he.y,items:co,colorMode:Pe,onClose:()=>{mt(!1),Be(e=>({...e,open:!1}))}}),l.jsx(Wt.ContextMenu,{open:Se.open,x:Se.x,y:Se.y,items:io,colorMode:Pe,onClose:()=>De(e=>({...e,open:!1}))})]}),Ue&&T.comments?l.jsx(Bo.CommentsPanel,{comments:re,author:q,onClose:()=>ve(!1),onResolve:e=>{const t=re.find(o=>o.id===e);ye(re.map(o=>o.id===e?{...o,resolved:!0}:o)),t&&n.current&&F(We.removeCommentMark(n.current.innerHTML,t.highlightId))},onAddReply:(e,t)=>{ye(re.map(o=>o.id===e?{...o,replies:[...o.replies,{id:Kt.createInkId("reply"),author:q,body:t,timestamp:Date.now()}]}:o))}}):null,No&&E?l.jsx(So.AiPanel,{config:E,documentHtml:((wt=n.current)==null?void 0:wt.innerHTML)??N??"",selectionHtml:Tt,onBusyChange:Bn,onClose:()=>Ae(!1),onApplyHtml:e=>{if(p(n.current),Tt)d.insertHTML(e);else{F(e);return}_()}}):null]}),Je?l.jsxs("div",{className:f.INK_CLASS_FOOTER,children:[pn,et?` / ${et}`:""]}):null]})};exports.InkEditor=Fo;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),r=require("react"),C=require("../../constants/numbers.cjs"),E=require("../../constants/generals.const.cjs"),f=require("../../constants/toolbar.const.cjs"),I=require("../../constants/toolbarMenu.const.cjs"),An=require("../../constants/colorMode.const.cjs"),fe=require("../../constants/keyboard.const.cjs"),Ot=require("../../constants/fonts.const.cjs"),dt=require("../../constants/lists.const.cjs"),v=require("../../constants/findReplaceMenu.const.cjs"),Lt=require("../../constants/blocks.const.cjs"),s=require("../../constants/defaults.const.cjs"),Mr=require("../../constants/aiModels.const.cjs");require("../../constants/openai.const.cjs");const Rn=require("../../constants/defaultIcons.cjs"),O=require("../../constants/contextMenu.const.cjs"),Ce=require("../../constants/table.const.cjs"),Hr=require("../../utils/cn.utils.cjs"),Dr=require("../../utils/typo.utils.cjs"),mn=require("../../utils/id.utils.cjs"),P=require("../../utils/table.utils.cjs"),h=require("../../utils/blocks.utils.cjs"),y=require("../../utils/trackChanges.utils.cjs"),Nt=require("../../utils/comments.utils.cjs"),It=require("../../utils/history.utils.cjs"),pn=require("../../utils/slash.utils.cjs"),kr=require("../../utils/words.utils.cjs"),x=require("../../utils/outline.utils.cjs"),W=require("../../utils/premium.utils.cjs"),ft=require("../../utils/paste.utils.cjs"),Sn=require("../../utils/memory.utils.cjs"),Ur=require("../../utils/findReplace.utils.cjs"),Ae=require("../../utils/selection.utils.cjs"),le=require("../../utils/toolbarStorage.utils.cjs"),xr=require("../../plugins/titles/titles.const.cjs"),hn=require("../../plugins/titles/titles.utils.cjs"),gn=require("../../plugins/excel/excel.utils.cjs"),se=require("../../plugins/graph/graph.const.cjs"),G=require("../../plugins/graph/graph.utils.cjs"),Kr=require("../../plugins/theme/theme.const.cjs"),Fr=require("../../plugins/theme/inkTheme.cjs"),Re=require("../../plugins/host/inkPlugins.cjs"),wr=require("../../hooks/useToolbarOverflow.cjs"),vr=require("../../common-components/Button/Button.cjs"),Bn=require("../../common-components/ContextMenu/ContextMenu.cjs"),_=require("./helpers/format.utils.cjs"),yr=require("../../plugins/ai/aiPlugin.cjs"),g=require("./components/ToolbarButton/ToolbarButton.cjs"),He=require("./components/ToolbarDropdown/ToolbarDropdown.cjs"),bn=require("./components/ToolbarColorPicker/ToolbarColorPicker.cjs"),Gr=require("./components/CommentsPanel/CommentsPanel.cjs"),qr=require("./components/AiPanel/AiPanel.cjs"),Xr=require("./components/AiAutocomplete/AiAutocomplete.cjs"),Pn=require("./components/AiAutocomplete/AiAutocomplete.const.cjs"),Ct=require("./components/AiAutocomplete/AiAutocomplete.utils.cjs"),jr=require("./components/BlockHandles/BlockHandles.cjs"),De=require("./components/BlockHandles/BlockHandles.const.cjs"),Wr=require("./components/InlineToolbar/InlineToolbar.cjs"),ke=require("./components/InlineToolbar/InlineToolbar.const.cjs"),Mn=require("./components/InlineToolbar/InlineToolbar.utils.cjs"),Zr=require("./components/SlashMenu/SlashMenu.cjs"),Vr=require("./components/OutlineRail/OutlineRail.cjs"),Yr=require("./components/TrackChangesBar/TrackChangesBar.cjs"),zr=require("./components/SignPad/SignPad.cjs"),$r=require("./components/FindReplace/FindReplace.cjs"),Qr=require("./components/ToolbarCustomize/ToolbarCustomize.cjs"),Jr=require("./components/HtmlSourcePanel/HtmlSourcePanel.cjs"),el=require("./components/TableSizePicker/TableSizePicker.cjs"),tl=require("./components/TitleGallery/TitleGallery.cjs"),nl=require("./components/ExcelSheetPanel/ExcelSheetPanel.cjs"),ol=require("./components/GraphPicker/GraphPicker.cjs"),rl=require("./components/GraphEditModal/GraphEditModal.cjs"),ll=require("./components/ThemePicker/ThemePicker.cjs"),At=()=>{const H=window.getSelection();if(!H||H.rangeCount===C.NUMBER_ZERO)return"";const b=H.getRangeAt(C.NUMBER_ZERO),D=document.createElement("div");return D.appendChild(b.cloneContents()),D.innerHTML},B=H=>{H==null||H.focus({preventScroll:!0})},sl=H=>{var fn;const{value:b,defaultValue:D="",onChange:k,placeholder:Rt=s.INK_PLACEHOLDER_DEFAULT,disabled:c=!1,readOnly:a=!1,minHeight:Ue=C.INK_MIN_HEIGHT,maxHeight:xe,toolbar:Hn,className:Dn="",testId:kn,allowImagePaste:mt=!0,showCharCount:pt=!1,charCountMax:St,typoAutoFix:Un=!0,variant:me=s.INK_DEFAULT_VARIANT,chrome:xn=s.INK_DEFAULT_CHROME,colorMode:ht=An.INK_DEFAULT_COLOR_MODE,features:Kn,author:Z=s.INK_DEFAULT_AUTHOR,trackChanges:ie,onTrackChangesChange:Ke,trackChangesEnabled:pe,onTrackChangesEnabledChange:Fe,comments:ce,onCommentsChange:we,showCommentsPanel:ae,onShowCommentsPanelChange:ve,ai:A,slashCommands:Fn,tableRows:wn=s.INK_TABLE_DEFAULT_ROWS,tableCols:vn=s.INK_TABLE_DEFAULT_COLS,premium:yn,theme:Gn,icons:gt,pasteMode:qn="plain",onImageUpload:Bt,wysiwyg:Xn=!1,keepInMemory:V=!1,memoryKey:Y,onToolbarChange:ye,toolbarHidden:z,onToolbarHiddenChange:Ge,showOutline:jn,onOutlineChange:qe,style:Wn,...Zn}=H,Se=Hn??(me===s.INK_VARIANT_DOCUMENT?s.INK_CHROME_TOOLBAR:s.INK_DEFAULT_TOOLBAR),u={...s.INK_DEFAULT_FEATURES,...Kn},$=W.resolveInkPremium(yn),Vn=W.hasInkPremiumFeature($,"icons"),Yn=W.hasInkPremiumFeature($,"theme"),zn=W.hasInkPremiumFeature($,"richPaste"),$n=W.hasInkPremiumFeature($,"imageUpload"),Qn=W.hasInkPremiumFeature($,"wysiwyg")&&Xn,R=Vn&&gt?{...Rn.INK_DEFAULT_ICONS,...gt}:Rn.INK_DEFAULT_ICONS,Jn=Yn?W.themeTokensToStyle(Gn):{},eo=zn&&qn==="rich",o=r.useRef(null),he=r.useRef(null),ue=r.useRef(new It.InkHistoryStack(b??D)),Q=r.useRef(null),q=r.useRef(null),ge=r.useRef(E.EMPTY_STRING),[Xe,to]=r.useState(new Set),[no,bt]=r.useState("p"),[oo,ro]=r.useState(C.NUMBER_ZERO),[lo,so]=r.useState(C.NUMBER_ZERO),[io,Pt]=r.useState(C.NUMBER_ONE),[co,Mt]=r.useState(C.NUMBER_ONE),[ao,J]=r.useState([]),[uo,_o]=r.useState(C.NUMBER_ZERO),[To,je]=r.useState(E.EMPTY_STRING),[Eo,Oo]=r.useState(C.INK_DEFAULT_TEXT_COLOR),[Lo,No]=r.useState(C.INK_DEFAULT_HIGHLIGHT_COLOR),[ee,Ht]=r.useState(pe??!1),[Io,Dt]=r.useState(ie??[]),[fo,kt]=r.useState(ce??[]),[Co,Ut]=r.useState(ae??!1),[xt,_e]=r.useState(!!(A!=null&&A.enabled&&A.openOnInit)),[Be,Ao]=r.useState(!1),Kt=r.useRef(!1),[K,Te]=r.useState({visible:!1,suggestion:"",top:C.NUMBER_ZERO,left:C.NUMBER_ZERO}),Ee=r.useRef(null),te=r.useRef(C.NUMBER_ZERO),[Ft,Ro]=r.useState(""),[mo,po]=r.useState(0),[So,wt]=r.useState(!1),[ho,be]=r.useState([]),[vt,go]=r.useState({top:0,left:0}),[yt,We]=r.useState(!1),[Ze,Pe]=r.useState(!1),[Oe,Gt]=r.useState(!1),[qt,Xt]=r.useState(E.EMPTY_STRING),[Bo,bo]=r.useState(v.FIND_REPLACE_FOCUS_FIND),[Po,Mo]=r.useState(Ot.FONT_VALUE_SYSTEM),[Ho,jt]=r.useState(dt.LIST_VALUE_BULLET),[Do,ko]=r.useState(v.FIND_REPLACE_FOCUS_FIND),[Ve,Ye]=r.useState({open:!1,x:C.NUMBER_ZERO,y:C.NUMBER_ZERO}),[Uo,Wt]=r.useState(!1),[ze,$e]=r.useState({open:!1,x:C.NUMBER_ZERO,y:C.NUMBER_ZERO}),[Qe,ne]=r.useState({open:!1,top:C.NUMBER_ZERO,left:C.NUMBER_ZERO}),[oe,Zt]=r.useState(()=>le.readToolbarItems(V,Y)??Se),[xo,Vt]=r.useState(()=>z!==void 0?z:le.readToolbarHidden(V,Y)??!1),[Ko,Yt]=r.useState(!1),zt=r.useRef(!0),Fo=Se.join(","),F=ie??Io,de=ce??fo,Je=ae??Co,$t=Fn??u.slash,[et,wo]=r.useState(()=>jn??me===s.INK_VARIANT_DOCUMENT),[Qt,m]=r.useState(E.EMPTY_STRING),[vo,yo]=r.useState(!1),re=r.useRef(null),[Go,tt]=r.useState(!1),[qo,Xo]=r.useState("values"),[jo,Wo]=r.useState(se.GRAPH_SAMPLE),[Zo,Vo]=r.useState(()=>G.parseGraphColors(null)),[Yo,zo]=r.useState(Kr.THEME_DEFAULT),[Jt,$o]=r.useState(!1),Qo=!!(u.outline&&et),X=wr.useToolbarOverflow(oe.length),en=z??xo,tn=Se,Jo=le.listCustomizableToolbarOptions(tn),nt=ht===An.COLOR_MODE_SYSTEM?void 0:ht,ot=!!(u.ai&&(A!=null&&A.enabled)&&A.autocomplete!==!1&&!c&&!a),rt=()=>{Ee.current!==null&&(window.clearTimeout(Ee.current),Ee.current=null)},U=()=>{rt(),te.current+=1,Te(e=>e.visible||e.suggestion?{visible:!1,suggestion:"",top:C.NUMBER_ZERO,left:C.NUMBER_ZERO}:e)},er=()=>{if(!ot||Be||!o.current){U();return}const e=window.getSelection();if(!e||!e.isCollapsed){U();return}rt(),Te(n=>n.visible||n.suggestion?{...n,visible:!1,suggestion:""}:n);const t=(A==null?void 0:A.providerId)||Mr.INK_AI_DEMO_PROVIDER_ID;Ee.current=window.setTimeout(()=>{if(Ee.current=null,!o.current||Kt.current)return;const n=window.getSelection();if(!n||!n.isCollapsed)return;const i=Ct.getTextBeforeCaret(o.current),T=Ct.getCaretPositionInRoot(o.current);if(!i.trim()||!T)return;const N=te.current+1;te.current=N;const p=o.current.innerHTML;yr.inkAi.runProvider(t,{capability:"autocomplete",html:p,prompt:i,modelId:A==null?void 0:A.modelId}).then(L=>{var Ie;if(N!==te.current)return;const S=((Ie=L.text)==null?void 0:Ie.trim())||"";if(!S){Te({visible:!1,suggestion:"",top:C.NUMBER_ZERO,left:C.NUMBER_ZERO});return}const Me=o.current&&Ct.getCaretPositionInRoot(o.current)||T;Te({visible:!0,suggestion:S,top:Me.top,left:Me.left})}).catch(()=>{N===te.current&&Te({visible:!1,suggestion:"",top:C.NUMBER_ZERO,left:C.NUMBER_ZERO})})},Pn.AI_AUTOCOMPLETE_DEBOUNCE_MS)};r.useEffect(()=>()=>{rt(),te.current+=1},[]),r.useEffect(()=>{Kt.current=Be,Be&&U()},[Be]),r.useEffect(()=>{pe!==void 0&&Ht(pe)},[pe]),r.useEffect(()=>{ie&&Dt(ie)},[ie]),r.useEffect(()=>{ce&&kt(ce)},[ce]),r.useEffect(()=>{ae!==void 0&&Ut(ae)},[ae]),r.useEffect(()=>{z!==void 0&&Vt(z)},[z]),r.useEffect(()=>{if(zt.current){zt.current=!1;return}Zt(Se)},[Fo]),r.useEffect(()=>{if(!o.current||b===void 0||b===Q.current)return;if(o.current.innerHTML===b){Q.current=b;return}const e=document.activeElement===o.current;Ae.withPreservedSelection(e?o.current:null,()=>{o.current&&(o.current.innerHTML=b)}),Q.current=b},[b]),r.useEffect(()=>{if(!o.current)return;const e=V?Sn.readInkMemory(Y):"";if(e){o.current.innerHTML=e,Q.current=e,ue.current=new It.InkHistoryStack(e),k==null||k(e),u.outline&&J(x.collectOutlineItems(o.current));return}if(b!==void 0){u.outline&&J(x.collectOutlineItems(o.current));return}D&&(o.current.innerHTML=D,Q.current=D,ue.current=new It.InkHistoryStack(D),k==null||k(D),u.outline&&J(x.collectOutlineItems(o.current)))},[]),r.useEffect(()=>{const e=()=>{$o(document.fullscreenElement===he.current)};return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]);const lt=e=>{if(ue.current.push(e),Q.current=e,k==null||k(e),V&&Sn.writeInkMemory(e,Y),pt&&o.current){const n=o.current.textContent??E.EMPTY_STRING;ro(n.length),so(kr.countWords(n))}u.outline&&J(x.collectOutlineItems(o.current));const t=x.getCaretLineCol(o.current);Pt(t.line),Mt(t.col)},w=e=>{o.current&&(Ae.withPreservedSelection(o.current,()=>{o.current&&(o.current.innerHTML=e)}),lt(e))},st=e=>{Vt(e),Ge==null||Ge(e),le.writeToolbarHidden(e,V,Y)},tr=e=>{Zt(e),ye==null||ye(e),le.writeToolbarItems(e,V,Y)},nr=(e,t)=>{if(e===I.TOOLBAR_OPTION_DIVIDER)return;const n=new Set(oe.filter(i=>i!==I.TOOLBAR_OPTION_DIVIDER));t?n.add(e):n.delete(e),tr(le.buildVisibleToolbarItems(tn,n))},Le=e=>{Dt(e),Ke==null||Ke(e)},it=e=>{kt(e),we==null||we(e)},ct=e=>{Ut(e),ve==null||ve(e)},or=e=>{Ht(e),Fe==null||Fe(e)},rr=()=>{if(c||a){ne(T=>T.open?{...T,open:!1}:T);return}const e=window.getSelection();if(!e||e.isCollapsed||e.rangeCount===0||!Mn.selectionIsInsideElement(e,o.current)){ne(T=>T.open?{...T,open:!1}:T);return}const n=e.getRangeAt(0).getBoundingClientRect();if(n.width===0&&n.height===0){ne(T=>T.open?{...T,open:!1}:T);return}const i=Mn.clampInlineToolbarPosition({selectionRect:n,toolbarWidth:ke.INLINE_TOOLBAR_ESTIMATED_WIDTH_PX,toolbarHeight:ke.INLINE_TOOLBAR_ESTIMATED_HEIGHT_PX,viewport:{width:window.innerWidth,height:window.innerHeight},gap:ke.INLINE_TOOLBAR_GAP_PX,edgePadding:ke.INLINE_TOOLBAR_EDGE_PADDING_PX});ne({open:!0,top:i.top,left:i.left})},Ne=()=>{var p;to(_.getActiveFormats());const e=_.queryCommandValue("formatBlock");e&&bt(e.toLowerCase().replace(/[<>]/g,"")),jt(_.detectListType()),Ro(At());const t=(p=window.getSelection())==null?void 0:p.toString().trim();t&&(ge.current=t),rr();const n=x.getCaretLineCol(o.current);if(Pt(n.line),Mt(n.col),u.outline&&J(x.collectOutlineItems(o.current)),!o.current||!u.blocks)return;const i=window.getSelection(),T=(i==null?void 0:i.anchorNode)??null,N=h.getBlockElement(T,o.current);if(h.markActiveBlock(o.current,N),N){const L=o.current.getBoundingClientRect(),S=N.getBoundingClientRect();po(S.top-L.top+o.current.scrollTop),wt(!0)}else wt(!1)},d=()=>{var t,n,i;if(!o.current)return;let e=o.current.innerHTML;if(ee&&u.trackChanges){const T=window.getSelection();if(T&&!T.isCollapsed){const N=At();if(N){const p=y.createTrackChange("delete",N,Z);Le([...F,p]),lr(p.id),e=o.current.innerHTML}}}if(lt(e),Ne(),$t&&o.current){const T=((n=(t=window.getSelection())==null?void 0:t.anchorNode)==null?void 0:n.textContent)??"",N=pn.extractSlashQuery(T);if(N!==null){je(N),be(pn.filterSlashCommands(N));const p=(i=window.getSelection())==null?void 0:i.getRangeAt(0);if(p&&o.current){const L=p.getBoundingClientRect(),S=o.current.getBoundingClientRect();go({top:L.bottom-S.top+8,left:L.left-S.left})}}else je(E.EMPTY_STRING),be([])}ot?er():U()};r.useEffect(()=>{const e=o.current;if(!e||c||a||!u.table)return;const t=i=>{const T=i.target;if(!(T instanceof Element))return;const N=T.closest(Ce.TABLE_CELL_SELECTOR);if(!N||!e.contains(N))return;const p=N.closest(Ce.TABLE_TAG);if(!p)return;const L=P.getColumnResizeIndex(i.clientX,N,C.INK_TABLE_COL_RESIZE_EDGE_PX);if(L===null)return;i.preventDefault();const S=i.clientX,Me=N.getBoundingClientRect().width;p.classList.add(s.INK_CLASS_TABLE_RESIZE);const Ie=Pr=>{P.setTableColumnWidth(p,L,Me+(Pr.clientX-S))},Cn=()=>{p.classList.remove(s.INK_CLASS_TABLE_RESIZE),document.removeEventListener("pointermove",Ie),document.removeEventListener("pointerup",Cn),d()};document.addEventListener("pointermove",Ie),document.addEventListener("pointerup",Cn)},n=i=>{const T=i.target;if(!(T instanceof Element))return;const N=T.closest(Ce.TABLE_CELL_SELECTOR);if(e.querySelectorAll(Ce.TABLE_TAG).forEach(S=>{S.classList.contains(s.INK_CLASS_TABLE_RESIZE)||S.classList.remove(s.INK_CLASS_TABLE_RESIZE)}),!N||!e.contains(N))return;const L=N.closest(Ce.TABLE_TAG);L&&P.getColumnResizeIndex(i.clientX,N,C.INK_TABLE_COL_RESIZE_EDGE_PX)!==null&&L.classList.add(s.INK_CLASS_TABLE_RESIZE)};return e.addEventListener("pointerdown",t),e.addEventListener("pointermove",n),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("pointermove",n)}},[c,a,u.table]);const nn=()=>{const e=K.suggestion;if(!e){U();return}B(o.current),_.execCommand(Pn.AI_AUTOCOMPLETE_COMMAND_INSERT_TEXT,e),U(),d()},lr=e=>{const t=window.getSelection();if(!t||t.rangeCount===0)return;const n=At();n&&_.insertHTML(y.wrapDeleteHtml(n,e))},sr=()=>{if(!o.current||!Un||!u.typoAutoFix||c||a)return;const e=o.current.innerHTML,t=Dr.applyTypoAutoFix(e);t.html!==e&&(Ae.withPreservedSelection(o.current,()=>{o.current&&(o.current.innerHTML=t.html)}),lt(t.html))},M=e=>{if(c||a)return;if(B(o.current),e==="clearFormat"){_.clearFormatDeep(),d();return}if(e==="directionLtr"&&o.current){_.setBlockDirection(o.current,Lt.DIR_LTR),d();return}if(e==="directionRtl"&&o.current){_.setBlockDirection(o.current,Lt.DIR_RTL),d();return}if(e===f.TOOLBAR_OPTION_CHECKLIST){_.insertHTML(s.INK_CHECKLIST_HTML),d();return}const t=s.INK_BUTTON_CONFIG[e];t&&(t.value?_.execCommand(t.command,t.value):_.execCommand(t.command),d())},ir=e=>{c||a||(B(o.current),_.execCommand("formatBlock",e),bt(e),d())},cr=e=>{c||a||(B(o.current),_.applyFontFamily(e),Mo(e),d())},ar=e=>{c||a||(B(o.current),_.applyListType(e),jt(e),d())},on=e=>{bo(e),ko(e),Pe(!0)},ur=e=>{if(c||a)return;const t=e===v.FIND_REPLACE_VALUE_REPLACE?v.FIND_REPLACE_FOCUS_REPLACE:v.FIND_REPLACE_FOCUS_FIND;on(t)},at=()=>{var i;if(c||a)return;const e=Ae.captureSelectionInRoot(o.current),t=((i=window.getSelection())==null?void 0:i.toString().trim())||ge.current,n=window.prompt(E.INK_LINK_PROMPT,E.INK_LINK_PROMPT_DEFAULT);n&&(B(o.current),Ae.restoreSelectionInRoot(o.current,e),_.insertLink(n,t),d())},ut=e=>{c||a||(B(o.current),_.insertHTML(e),d())},_r=e=>{var n;const t=((n=window.getSelection())==null?void 0:n.toString().trim())||ge.current;ut(hn.buildTitleHtml(e,t||E.INK_TITLES_DEFAULT_TEXT))},rn=async e=>$n&&Bt?Bt(e):_.fileToDataUrl(e),ln=async()=>{if(c||a)return;const e=document.createElement("input");e.type="file",e.accept="image/*",e.onchange=async()=>{var i;const t=(i=e.files)==null?void 0:i[0];if(!t)return;const n=await rn(t);B(o.current),_.insertImage(n,t.name),d()},e.click()},sn=(e=wn,t=vn)=>{if(c||a||!u.table)return;B(o.current);const n=P.buildTableHtml(e,t);if(ee&&u.trackChanges){const i=y.createTrackChange("insert",n,Z);Le([...F,i]),_.insertHTML(y.wrapInsertHtml(n,i.id))}else _.insertHTML(n);d()},cn=()=>{const e=ue.current.undo();if(e===null||!o.current){_.execCommand("undo"),d();return}w(e)},an=()=>{const e=ue.current.redo();if(e===null||!o.current){_.execCommand("redo"),d();return}w(e)},Tr=e=>{if(c||a)return;e.preventDefault(),$e(n=>n.open?{...n,open:!1}:n);const t=u.graph?G.getGraphBlock(e.target):null;re.current=t,yo(!!t),Wt(!!(u.table&&P.getTableCellFromSelection())),Ye({open:!0,x:e.clientX,y:e.clientY})},_t=e=>{const t=re.current;if(!t)return;const n=G.parseGraphPoints(t.getAttribute(s.INK_ATTR_GRAPH_POINTS));G.replaceGraphBlock(t,e,n.length?n:se.GRAPH_SAMPLE),re.current=null,d()},un=e=>{const t=re.current;if(!t)return;const n=G.parseGraphPoints(t.getAttribute(s.INK_ATTR_GRAPH_POINTS));Wo(n.length?n:se.GRAPH_SAMPLE),Vo(G.parseGraphColors(t.getAttribute(s.INK_ATTR_GRAPH_COLORS))),Xo(e),tt(!0)},Er=(e,t)=>{const n=re.current;if(!n)return;const i=n.getAttribute(s.INK_ATTR_GRAPH)??se.GRAPH_KIND_DEFAULT;G.replaceGraphBlock(n,i,e,t),tt(!1),d()},_n=()=>{const e=he.current;if(!(!e||!u.fullscreen)){if(document.fullscreenElement){document.exitFullscreen();return}e.requestFullscreen()}},Or=()=>{const e=re.current;if(e){const t=document.createRange();t.selectNodeContents(e);const n=window.getSelection();n==null||n.removeAllRanges(),n==null||n.addRange(t)}_e(!0)},Tn=()=>{const e=!et;wo(e),e&&o.current&&J(x.collectOutlineItems(o.current)),qe==null||qe(e)},dr=e=>{c||a||(e.preventDefault(),Ye(t=>t.open?{...t,open:!1}:t),$e({open:!0,x:e.clientX,y:e.clientY}))},En=()=>{if(c||a||!u.comments)return;const e=window.prompt("Comment:");if(!(e!=null&&e.trim()))return;const t=mn.createInkId("hl");if(B(o.current),!Nt.wrapSelectionAsComment(t))return;const i=Nt.createCommentThread(Z,e.trim(),t);it([i,...de]),ct(!0),d()},Lr=[{id:I.TOOLBAR_CONTEXT_MENU_ID_CUSTOMIZE,label:I.TOOLBAR_CONTEXT_MENU_LABEL_CUSTOMIZE,onSelect:()=>Yt(!0)},{id:I.TOOLBAR_CONTEXT_MENU_ID_HIDE,label:I.TOOLBAR_CONTEXT_MENU_LABEL_HIDE,onSelect:()=>st(!0)}],j=e=>{const t=P.getTableCellFromSelection();!t||!u.table||e(t)&&d()},Nr=u.table&&Uo?[{id:O.CONTEXT_MENU_ID_TABLE_ROW_ABOVE,label:O.CONTEXT_MENU_LABEL_TABLE_ROW_ABOVE,onSelect:()=>j(e=>P.insertTableRow(e,"before"))},{id:O.CONTEXT_MENU_ID_TABLE_ROW_BELOW,label:O.CONTEXT_MENU_LABEL_TABLE_ROW_BELOW,onSelect:()=>j(e=>P.insertTableRow(e,"after"))},{id:O.CONTEXT_MENU_ID_TABLE_COL_LEFT,label:O.CONTEXT_MENU_LABEL_TABLE_COL_LEFT,onSelect:()=>j(e=>P.insertTableColumn(e,"before"))},{id:O.CONTEXT_MENU_ID_TABLE_COL_RIGHT,label:O.CONTEXT_MENU_LABEL_TABLE_COL_RIGHT,onSelect:()=>j(e=>P.insertTableColumn(e,"after"))},{id:O.CONTEXT_MENU_ID_TABLE_DELETE_ROW,label:O.CONTEXT_MENU_LABEL_TABLE_DELETE_ROW,onSelect:()=>j(e=>P.deleteTableRow(e))},{id:O.CONTEXT_MENU_ID_TABLE_DELETE_COL,label:O.CONTEXT_MENU_LABEL_TABLE_DELETE_COL,onSelect:()=>j(e=>P.deleteTableColumn(e))},{id:O.CONTEXT_MENU_ID_TABLE_HEADER,label:O.CONTEXT_MENU_LABEL_TABLE_HEADER,onSelect:()=>j(e=>P.toggleTableHeaderRow(e))}]:[],Ir=[...u.graph&&vo?[{id:E.CONTEXT_MENU_ID_GRAPH_BAR,label:E.CONTEXT_MENU_LABEL_GRAPH_BAR,onSelect:()=>_t("bar")},{id:E.CONTEXT_MENU_ID_GRAPH_LINE,label:E.CONTEXT_MENU_LABEL_GRAPH_LINE,onSelect:()=>_t("line")},{id:E.CONTEXT_MENU_ID_GRAPH_PIE,label:E.CONTEXT_MENU_LABEL_GRAPH_PIE,onSelect:()=>_t("pie")},{id:E.CONTEXT_MENU_ID_GRAPH_EDIT,label:E.CONTEXT_MENU_LABEL_GRAPH_EDIT,onSelect:()=>un("values")},{id:E.CONTEXT_MENU_ID_GRAPH_COLORS,label:E.CONTEXT_MENU_LABEL_GRAPH_COLORS,onSelect:()=>un("colors")},{id:E.CONTEXT_MENU_ID_GRAPH_AI,label:E.CONTEXT_MENU_LABEL_GRAPH_AI,onSelect:Or}]:[],...Nr,{id:O.CONTEXT_MENU_ID_BOLD,label:O.CONTEXT_MENU_LABEL_BOLD,onSelect:()=>M("bold")},{id:O.CONTEXT_MENU_ID_ITALIC,label:O.CONTEXT_MENU_LABEL_ITALIC,onSelect:()=>M("italic")},{id:O.CONTEXT_MENU_ID_UNDERLINE,label:O.CONTEXT_MENU_LABEL_UNDERLINE,onSelect:()=>M("underline")},{id:O.CONTEXT_MENU_ID_STRIKE,label:O.CONTEXT_MENU_LABEL_STRIKE,onSelect:()=>M("strikethrough")},{id:O.CONTEXT_MENU_ID_HEADING,label:O.CONTEXT_MENU_LABEL_HEADING,onSelect:()=>M("heading2")},{id:O.CONTEXT_MENU_ID_BULLET,label:O.CONTEXT_MENU_LABEL_BULLET,onSelect:()=>M("bulletList")},{id:O.CONTEXT_MENU_ID_ORDERED,label:O.CONTEXT_MENU_LABEL_ORDERED,onSelect:()=>M("orderedList")},{id:O.CONTEXT_MENU_ID_LINK,label:O.CONTEXT_MENU_LABEL_LINK,onSelect:()=>at()},{id:O.CONTEXT_MENU_ID_CLEAR,label:O.CONTEXT_MENU_LABEL_CLEAR,onSelect:()=>M("clearFormat")},{id:O.CONTEXT_MENU_ID_FIND,label:O.CONTEXT_MENU_LABEL_FIND,disabled:!u.findReplace,onSelect:()=>Pe(!0)},{id:O.CONTEXT_MENU_ID_SIGNATURE,label:O.CONTEXT_MENU_LABEL_SIGNATURE,disabled:!u.signature,onSelect:()=>We(!0)},{id:O.CONTEXT_MENU_ID_COMMENT,label:O.CONTEXT_MENU_LABEL_COMMENT,disabled:!u.comments,onSelect:()=>En()},...en?[{id:I.CONTEXT_MENU_ID_SHOW_TOOLBAR,label:I.CONTEXT_MENU_LABEL_SHOW_TOOLBAR,onSelect:()=>st(!1)}]:[]],On=e=>{if(!o.current)return;const t=y.acceptTrackChangeInHtml(o.current.innerHTML,e);w(t),Le(F.map(n=>n.id===e?{...n,accepted:!0}:n))},dn=e=>{if(!o.current)return;const t=y.rejectTrackChangeInHtml(o.current.innerHTML,e);w(t),Le(F.map(n=>n.id===e?{...n,rejected:!0}:n))},Ln=async e=>{const t=await rn(e),n=`<img src="${t}" alt="" style="max-width:100%;height:auto;" />`;if(ee&&u.trackChanges){const i=y.createTrackChange("insert",n,Z);Le([...F,i]),_.insertHTML(y.wrapInsertHtml(n,i.id))}else _.insertImage(t);d()},fr=async e=>{if(c||a)return;const t=e.clipboardData;if(!t)return;if(eo){const i=ft.extractClipboardHtml(t);if(i){e.preventDefault();const N=ft.sanitizePastedHtml(i);N&&(_.insertHTML(N),d());const p=t.items;if(mt&&p)for(const L of Array.from(p)){if(!L.type.startsWith("image/"))continue;const S=L.getAsFile();S&&await Ln(S)}return}const T=ft.extractClipboardText(t);if(T){e.preventDefault(),_.insertHTML(T.replace(/\n/g,"<br />")),d();return}}if(!mt)return;const n=t.items;if(n)for(const i of Array.from(n)){if(!i.type.startsWith("image/"))continue;e.preventDefault();const T=i.getAsFile();T&&await Ln(T)}},Cr=e=>{M(e)},Ar=e=>{if(e.key===fe.KEY_TAB&&K.visible&&K.suggestion){e.preventDefault(),nn();return}if(e.key===fe.KEY_ENTER){U();return}if(_.tryConvertMarkdownListPrefix(e.nativeEvent)){d();return}if(e.key===fe.KEY_ESCAPE){if(K.visible){e.preventDefault(),U();return}be([]),ne(t=>t.open?{...t,open:!1}:t)}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===fe.KEY_K){e.preventDefault(),u.ai&&(A!=null&&A.enabled)&&_e(!0);return}(e.metaKey||e.ctrlKey)&&e.key===fe.KEY_Z&&(e.preventDefault(),e.shiftKey?an():cn())},Rr=e=>{var n;B(o.current);const t=window.getSelection();if((n=t==null?void 0:t.anchorNode)!=null&&n.textContent){const T=t.anchorNode.textContent.replace(/(?:^|\s)\/[^\s]*$/," ");t.anchorNode.nodeType===Node.TEXT_NODE&&(t.anchorNode.textContent=T)}switch(je(E.EMPTY_STRING),be([]),e.insert){case"heading1":_.execCommand("formatBlock",s.INK_FORMAT_BLOCK_H1);break;case"heading2":_.execCommand("formatBlock",s.INK_FORMAT_BLOCK_H2);break;case"heading3":_.execCommand("formatBlock",s.INK_FORMAT_BLOCK_H3);break;case"paragraph":_.execCommand("formatBlock",s.INK_FORMAT_BLOCK_P);break;case"bulletList":_.execCommand("insertUnorderedList");break;case"orderedList":_.execCommand("insertOrderedList");break;case"checklist":_.insertHTML(s.INK_CHECKLIST_HTML);break;case"quote":_.execCommand("formatBlock",s.INK_FORMAT_BLOCK_QUOTE);break;case"code":_.execCommand("formatBlock",s.INK_FORMAT_BLOCK_PRE);break;case"callout":_.insertHTML(s.INK_CALLOUT_HTML);break;case"table":sn();return;case"image":ln();return;case"ai":_e(!0);break;case"titles":_.insertHTML(hn.buildTitleHtml(xr.TITLE_STYLE_DEFAULT,ge.current||E.INK_TITLES_DEFAULT_TEXT));break;case"excel":_.insertHTML(gn.excelGridToTableHtml(gn.createEmptyExcelGrid()));break;case"graph":_.insertHTML(G.buildGraphHtml(se.GRAPH_KIND_DEFAULT,se.GRAPH_SAMPLE));break}d()},Nn=e=>{if(!o.current)return;const t=window.getSelection(),n=h.getBlockElement((t==null?void 0:t.anchorNode)??null,o.current);n&&h.moveBlock(n,e)&&(d(),Ne())},mr=e=>{if(!o.current)return;const t=window.getSelection(),n=h.getBlockElement((t==null?void 0:t.anchorNode)??null,o.current),i=o.current.querySelector(`.${s.INK_CLASS_BLOCK_ACTIVE}`),T=n??(i instanceof HTMLElement?i:null);if(!T){e.preventDefault();return}q.current=T,h.clearBlockDragClasses(o.current),h.markActiveBlock(o.current,T),h.markDraggingBlock(T),e.dataTransfer.setData(De.BLOCK_HANDLES_DRAG_MIME,De.BLOCK_HANDLES_DRAG_PAYLOAD),e.dataTransfer.effectAllowed=De.BLOCK_HANDLES_DRAG_EFFECT_MOVE},pr=e=>{if(!o.current||!q.current)return;e.preventDefault(),e.dataTransfer.dropEffect=De.BLOCK_HANDLES_DRAG_EFFECT_MOVE;const t=h.getBlockElement(e.target,o.current);if(!t||t===q.current){h.markDropTarget(o.current,null,null);return}const n=h.resolveDropPosition(e.clientY,t);h.markDropTarget(o.current,t,n)},Sr=e=>{if(!o.current||!q.current)return;e.preventDefault();const t=h.getBlockElement(e.target,o.current),n=q.current;t&&t!==n&&(h.resolveDropPosition(e.clientY,t)===Lt.BLOCK_DROP_POSITION_BEFORE?h.reorderBlockBefore(n,t):h.reorderBlockAfter(n,t))&&(d(),Ne()),h.clearBlockDragClasses(o.current),q.current=null},hr=()=>{o.current&&h.clearBlockDragClasses(o.current),q.current=null},Tt=(e,t)=>{var i,T,N,p;if(e==="divider")return l.jsx("span",{className:s.INK_CLASS_DIVIDER},`divider-${t}`);if(e==="headingDropdown")return l.jsx(He.ToolbarDropdown,{title:"Heading",options:s.INK_HEADING_OPTIONS,value:no||"p",disabled:c||a,onChange:ir},"heading");if(e===f.TOOLBAR_OPTION_FONT_DROPDOWN)return l.jsx(He.ToolbarDropdown,{title:Ot.FONT_DROPDOWN_TITLE,options:Ot.INK_FONT_OPTIONS,value:Po,disabled:c||a,onChange:cr},f.TOOLBAR_OPTION_FONT_DROPDOWN);if(e===f.TOOLBAR_OPTION_LIST_DROPDOWN)return l.jsx(He.ToolbarDropdown,{title:dt.LIST_DROPDOWN_TITLE,options:dt.INK_LIST_OPTIONS,value:Ho,disabled:c||a,onChange:ar},f.TOOLBAR_OPTION_LIST_DROPDOWN);if(e==="textColor")return l.jsx(bn.ToolbarColorPicker,{title:"Text color",type:"text",value:Eo,disabled:c||a,onChange:L=>{B(o.current),_.setTextColor(L),Oo(L),d()}},"textColor");if(e==="highlightColor")return l.jsx(bn.ToolbarColorPicker,{title:"Highlight color",type:"highlight",value:Lo,disabled:c||a,onChange:L=>{B(o.current),_.setHighlightColor(L),No(L),d()}},"highlightColor");if(e==="link")return l.jsx(g.ToolbarButton,{icon:R.link,title:"Insert link",hint:I.TOOLBAR_OPTION_HINTS.link,onHint:m,disabled:c||a,onClick:at},"link");if(e==="image")return l.jsx(g.ToolbarButton,{hint:I.TOOLBAR_OPTION_HINTS.image,onHint:m,icon:R.image,title:"Insert image",disabled:c||a,onClick:()=>{ln()}},"image");if(e===f.TOOLBAR_OPTION_CHECKLIST)return l.jsx(g.ToolbarButton,{icon:R.checklist,title:"Checklist",hint:I.TOOLBAR_OPTION_HINTS.checklist,onHint:m,disabled:c||a,onClick:()=>M(f.TOOLBAR_OPTION_CHECKLIST)},f.TOOLBAR_OPTION_CHECKLIST);if(e==="table")return u.table?l.jsx(el.TableSizePicker,{icon:R.table,disabled:c||a,onSelect:sn},"table"):null;if(e===f.TOOLBAR_OPTION_TITLES)return u.titles?l.jsx(tl.TitleGallery,{icon:R.titles,disabled:c||a,pluginColor:(i=Re.inkPlugins.get("titles"))==null?void 0:i.color,hint:I.TOOLBAR_OPTION_HINTS.titles,onHint:m,onSelect:_r},f.TOOLBAR_OPTION_TITLES):null;if(e===f.TOOLBAR_OPTION_EXCEL)return u.excel?l.jsx(nl.ExcelSheetPanel,{icon:R.excel,disabled:c||a,pluginColor:(T=Re.inkPlugins.get("excel"))==null?void 0:T.color,hint:I.TOOLBAR_OPTION_HINTS.excel,onHint:m,onInsert:ut},f.TOOLBAR_OPTION_EXCEL):null;if(e===f.TOOLBAR_OPTION_GRAPH)return u.graph?l.jsx(ol.GraphPicker,{icon:R.graph,disabled:c||a,pluginColor:(N=Re.inkPlugins.get("graph"))==null?void 0:N.color,hint:I.TOOLBAR_OPTION_HINTS.graph,onHint:m,onInsert:ut},f.TOOLBAR_OPTION_GRAPH):null;if(e===f.TOOLBAR_OPTION_THEME)return u.theme?l.jsx(ll.ThemePicker,{icon:R.theme,disabled:c,pluginColor:(p=Re.inkPlugins.get("theme"))==null?void 0:p.color,hint:I.TOOLBAR_OPTION_HINTS.theme,onHint:m,value:Yo,onChange:L=>{zo(L),Fr.applyInkTheme(he.current,L)}},f.TOOLBAR_OPTION_THEME):null;if(e===f.TOOLBAR_OPTION_FULLSCREEN)return u.fullscreen?l.jsx(g.ToolbarButton,{icon:R.fullscreen,title:Jt?E.INK_FULLSCREEN_EXIT_TITLE:E.INK_FULLSCREEN_TITLE,hint:I.TOOLBAR_OPTION_HINTS.fullscreen,onHint:m,active:Jt,disabled:c,onClick:_n},f.TOOLBAR_OPTION_FULLSCREEN):null;if(e===f.TOOLBAR_OPTION_OUTLINE)return u.outline?l.jsx(g.ToolbarButton,{icon:R.outline,title:E.INK_OUTLINE_TOGGLE_TITLE,hint:I.TOOLBAR_OPTION_HINTS.outline,onHint:m,active:et,disabled:c,onClick:Tn},f.TOOLBAR_OPTION_OUTLINE):null;if(e===f.TOOLBAR_OPTION_HTML_SOURCE)return u.htmlSource?l.jsx(g.ToolbarButton,{className:s.INK_CLASS_BUTTON_WIDE,icon:l.jsx("span",{className:s.INK_CLASS_BUTTON_LABEL,children:E.INK_HTML_SOURCE_LABEL}),title:E.INK_HTML_SOURCE_TITLE,hint:I.TOOLBAR_OPTION_HINTS.htmlSource,onHint:m,active:Oe,disabled:c,onClick:()=>{var L;if(Oe){a||w(qt),Gt(!1);return}Xt(((L=o.current)==null?void 0:L.innerHTML)??b??E.EMPTY_STRING),Gt(!0)}},f.TOOLBAR_OPTION_HTML_SOURCE):null;if(e===f.TOOLBAR_OPTION_SIGNATURE)return u.signature?l.jsx(g.ToolbarButton,{icon:R.signature,title:"Sign pad",hint:I.TOOLBAR_OPTION_HINTS.signature,onHint:m,active:yt,disabled:c||a,onClick:()=>We(!0)},f.TOOLBAR_OPTION_SIGNATURE):null;if(e===f.TOOLBAR_OPTION_FIND_REPLACE)return u.findReplace?l.jsx(g.ToolbarButton,{icon:R.findReplace,title:"Find and replace",hint:I.TOOLBAR_OPTION_HINTS.findReplace,onHint:m,active:Ze,disabled:c||a,onClick:()=>{Ze?Pe(!1):on(v.FIND_REPLACE_FOCUS_FIND)}},f.TOOLBAR_OPTION_FIND_REPLACE):null;if(e===f.TOOLBAR_OPTION_FIND_REPLACE_DROPDOWN)return u.findReplace?l.jsx(He.ToolbarDropdown,{title:v.FIND_REPLACE_DROPDOWN_TITLE,options:v.INK_FIND_REPLACE_OPTIONS,value:Do,disabled:c||a,onChange:ur},f.TOOLBAR_OPTION_FIND_REPLACE_DROPDOWN):null;if(e===f.TOOLBAR_OPTION_HORIZONTAL_RULE)return u.horizontalRule?l.jsx(g.ToolbarButton,{icon:R.horizontalRule,title:"Horizontal rule",hint:I.TOOLBAR_OPTION_HINTS.horizontalRule,onHint:m,disabled:c||a,onClick:()=>{B(o.current),_.insertHTML("<hr />"),d()}},f.TOOLBAR_OPTION_HORIZONTAL_RULE):null;if(e==="undo")return l.jsx(g.ToolbarButton,{icon:R.undo,title:"Undo",hint:I.TOOLBAR_OPTION_HINTS.undo,onHint:m,disabled:c||a,onClick:cn},"undo");if(e==="redo")return l.jsx(g.ToolbarButton,{icon:R.redo,title:"Redo",hint:I.TOOLBAR_OPTION_HINTS.redo,onHint:m,disabled:c||a,onClick:an},"redo");if(e==="trackChanges")return u.trackChanges?l.jsx(g.ToolbarButton,{icon:R.trackChanges,title:"Track changes",hint:I.TOOLBAR_OPTION_HINTS.trackChanges,onHint:m,active:ee,disabled:c||a,onClick:()=>or(!ee)},"trackChanges"):null;if(e==="comments")return u.comments?l.jsx(g.ToolbarButton,{icon:R.comments,title:"Comments",hint:I.TOOLBAR_OPTION_HINTS.comments,onHint:m,active:Je,disabled:c||a,onClick:()=>{Je?ct(!1):En()}},"comments"):null;if(e==="code"){const L=s.INK_BUTTON_CONFIG.code;return l.jsx(g.ToolbarButton,{className:s.INK_CLASS_BUTTON_WIDE,icon:l.jsxs(l.Fragment,{children:[R.code,l.jsx("span",{className:s.INK_CLASS_BUTTON_LABEL,children:E.INK_CODE_LABEL})]}),title:L.title,hint:I.TOOLBAR_OPTION_HINTS.code,onHint:m,active:Xe.has(e),disabled:c||a,onClick:()=>M(e)},"code")}if(e==="ai"){if(!u.ai||!(A!=null&&A.enabled))return null;const L=Re.inkPlugins.get("ai");return l.jsxs("button",{type:"button",className:L?`${s.INK_CLASS_AI_PILL} ${s.INK_CLASS_AI_PILL_INSTALLED}`:s.INK_CLASS_AI_PILL,title:E.INK_AI_PILL_LABEL,style:L?{"--ink-plugin-color":L.color}:void 0,"aria-label":E.INK_AI_PILL_LABEL,"aria-pressed":xt,disabled:c||a,onMouseEnter:()=>m(I.TOOLBAR_OPTION_HINTS.ai),onMouseLeave:()=>m(E.EMPTY_STRING),onMouseDown:S=>{S.preventDefault()},onClick:()=>_e(S=>!S),children:[l.jsx("span",{className:s.INK_CLASS_AI_PILL_DOT,"aria-hidden":"true"}),E.INK_AI_PILL_LABEL]},"ai")}const n=s.INK_BUTTON_CONFIG[e];return n?l.jsx(g.ToolbarButton,{icon:R[e]??e.slice(0,1).toUpperCase(),title:n.title,hint:I.TOOLBAR_OPTION_HINTS[e],onHint:m,active:Xe.has(e),disabled:c||a,onClick:()=>M(e)},e):null},In=typeof Ue=="number"?`${Ue}px`:Ue,gr=typeof xe=="number"?`${xe}px`:xe,Br=!!(A!=null&&A.enabled&&xt),br=oe.slice(C.NUMBER_ZERO,X.fitCount),Et=oe.slice(X.fitCount);return l.jsxs("div",{ref:he,className:Hr.cn(s.INK_CLASS_ROOT,Dn),"data-testid":kn,"data-disabled":c||void 0,"data-variant":me,"data-chrome":xn,"data-color-mode":nt,"data-premium":$.active||void 0,"data-wysiwyg":Qn||void 0,style:{...Jn,...Wn},...Zn,children:[en?l.jsx("div",{className:s.INK_CLASS_TOOLBAR_SHOW,children:l.jsx(vr.Button,{type:"button","aria-label":I.TOOLBAR_SHOW_CONTROL_ARIA_LABEL,onClick:()=>st(!1),children:I.TOOLBAR_SHOW_CONTROL_LABEL})}):l.jsxs("div",{className:s.INK_CLASS_TOOLBAR,role:"toolbar","aria-label":"Ink formatting toolbar",onContextMenu:dr,onDoubleClick:_n,onMouseOver:e=>{const t=e.target.closest("button");if(!(t instanceof HTMLElement))return;const n=t.getAttribute("title")||t.getAttribute("aria-label")||E.EMPTY_STRING;n&&m(n)},onMouseLeave:()=>m(E.EMPTY_STRING),children:[l.jsx("div",{className:s.INK_CLASS_TOOLBAR_MEASURE,ref:X.measureRef,"aria-hidden":!0,children:oe.map(Tt)}),l.jsxs("div",{className:s.INK_CLASS_TOOLBAR_ROW,ref:X.rowRef,children:[br.map(Tt),Et.length>C.NUMBER_ZERO?l.jsx("span",{[s.INK_ATTR_MORE]:"",children:l.jsx(g.ToolbarButton,{icon:"⋯",title:E.INK_TOOLBAR_MORE_TITLE,hint:E.INK_TOOLBAR_MORE_TITLE,onHint:m,active:X.overflowOpen,disabled:c,onClick:()=>X.setOverflowOpen(e=>!e)})}):null]}),X.overflowOpen&&Et.length>C.NUMBER_ZERO?l.jsx("div",{className:s.INK_CLASS_TOOLBAR_OVERFLOW,children:Et.map(Tt)}):null,Qt?l.jsx("p",{className:s.INK_CLASS_TOOLBAR_HINT,children:Qt}):null]}),l.jsx(Qr.ToolbarCustomize,{open:Ko,options:Jo,visibleItems:oe,onToggle:nr,onClose:()=>Yt(!1)}),l.jsx(rl.GraphEditModal,{open:Go,mode:qo,points:jo,colors:Zo,onClose:()=>tt(!1),onApply:Er}),l.jsx(zr.SignPad,{open:yt,onClose:()=>We(!1),onConfirm:e=>{B(o.current),_.insertImage(e),d()}}),l.jsx($r.FindReplace,{open:Ze,focusField:Bo,onClose:()=>Pe(!1),onReplace:(e,t,n)=>{if(!o.current)return;const i=Ur.replaceInHtml(o.current.innerHTML,e,t,n);w(i)}}),ee&&u.trackChanges?l.jsx(Yr.TrackChangesBar,{changes:F,onAccept:On,onReject:dn,onAcceptAll:()=>F.forEach(e=>On(e.id)),onRejectAll:()=>F.forEach(e=>dn(e.id))}):null,me==="agent"?l.jsx("div",{className:"Ink-Editor__agent-bar",role:"status",children:I.AGENT_BAR_PLACEHOLDER}):null,l.jsxs("div",{className:s.INK_CLASS_SHELL,children:[Qo?l.jsx(Vr.OutlineRail,{items:ao,activeIndex:uo,onHide:Tn,onSelect:e=>{o.current&&(x.scrollOutlineHeading(o.current,e),_o(e))}}):null,l.jsxs("div",{className:s.INK_CLASS_BODY,children:[u.blocks?l.jsx(jr.BlockHandles,{visible:So&&!c&&!a,top:mo,onMoveUp:()=>Nn("up"),onMoveDown:()=>Nn("down"),onDragStart:mr}):null,l.jsx("div",{ref:o,className:Oe?`${s.INK_CLASS_CONTENT} ${s.INK_CLASS_CONTENT_HIDDEN}`:s.INK_CLASS_CONTENT,contentEditable:!c&&!a&&!Oe,role:"textbox","aria-multiline":"true","aria-placeholder":Rt,"data-placeholder":Rt,suppressContentEditableWarning:!0,style:{minHeight:In,maxHeight:gr},onInput:d,onBlur:sr,onKeyUp:Ne,onKeyDown:Ar,onMouseUp:Ne,onContextMenu:Tr,onDragOver:pr,onDrop:Sr,onDragEnd:hr,onPaste:e=>{fr(e)}}),Oe?l.jsx(Jr.HtmlSourcePanel,{value:qt,onChange:Xt,disabled:c||a,minHeight:In}):null,$t?l.jsx(Zr.SlashMenu,{items:ho,top:vt.top,left:vt.left,query:To,onSelect:Rr}):null,ot?l.jsx(Xr.AiAutocomplete,{suggestion:K.suggestion,position:{top:K.top,left:K.left},visible:K.visible,onAccept:nn,onDismiss:U}):null,l.jsx(Wr.InlineToolbar,{open:Qe.open,top:Qe.top,left:Qe.left,icons:{bold:R.bold,italic:R.italic,underline:R.underline,code:R.code,link:R.link,clearFormat:R.clearFormat},activeFormats:Xe,disabled:c||a,onFormat:Cr,onLink:at,onClose:()=>ne(e=>({...e,open:!1}))}),l.jsx(Bn.ContextMenu,{open:Ve.open,x:Ve.x,y:Ve.y,items:Ir,colorMode:nt,onClose:()=>{Wt(!1),Ye(e=>({...e,open:!1}))}}),l.jsx(Bn.ContextMenu,{open:ze.open,x:ze.x,y:ze.y,items:Lr,colorMode:nt,onClose:()=>$e(e=>({...e,open:!1}))})]}),Je&&u.comments?l.jsx(Gr.CommentsPanel,{comments:de,author:Z,onClose:()=>ct(!1),onResolve:e=>{const t=de.find(n=>n.id===e);it(de.map(n=>n.id===e?{...n,resolved:!0}:n)),t&&o.current&&w(Nt.removeCommentMark(o.current.innerHTML,t.highlightId))},onAddReply:(e,t)=>{it(de.map(n=>n.id===e?{...n,replies:[...n.replies,{id:mn.createInkId("reply"),author:Z,body:t,timestamp:Date.now()}]}:n))}}):null,Br&&A?l.jsx(qr.AiPanel,{config:A,documentHtml:((fn=o.current)==null?void 0:fn.innerHTML)??b??"",selectionHtml:Ft,onBusyChange:Ao,onClose:()=>_e(!1),onApplyHtml:e=>{if(B(o.current),Ft)_.insertHTML(e);else{w(e);return}d()}}):null]}),pt?l.jsxs("div",{className:s.INK_CLASS_FOOTER,children:[l.jsxs("span",{children:[lo," ",E.INK_FOOTER_WORDS_LABEL," ",E.INK_FOOTER_DOT," ",oo,St?` / ${St}`:""," ",E.INK_FOOTER_CHARS_LABEL]}),l.jsxs("span",{className:s.INK_CLASS_FOOTER_META,children:[l.jsxs("span",{children:[E.INK_FOOTER_LINE_LABEL," ",io,", ",E.INK_FOOTER_COL_LABEL," ",co]}),l.jsx("span",{className:"Ink-Editor__footer-sync",children:E.INK_FOOTER_SYNCED_LABEL})]})]}):null]})};exports.InkEditor=sl;
@@ -1 +1 @@
1
- {"version":3,"file":"InkEditor.d.ts","sourceRoot":"","sources":["../../../src/components/InkEditor/InkEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,EAAE,EAMR,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAEV,cAAc,EAIf,MAAM,aAAa,CAAC;AAkNrB,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAm8CxC,CAAC"}
1
+ {"version":3,"file":"InkEditor.d.ts","sourceRoot":"","sources":["../../../src/components/InkEditor/InkEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,EAAE,EAMR,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAEV,cAAc,EAKf,MAAM,aAAa,CAAC;AA8TrB,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA29DxC,CAAC"}