@atlaskit/editor-plugin-table 0.0.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (617) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/plugins/table/commands/clear.js +64 -0
  3. package/dist/cjs/plugins/table/commands/collapse.js +24 -0
  4. package/dist/cjs/plugins/table/commands/go-to-next-cell.js +66 -0
  5. package/dist/cjs/plugins/table/commands/hover.js +183 -0
  6. package/dist/cjs/plugins/table/commands/index.js +235 -0
  7. package/dist/cjs/plugins/table/commands/insert.js +186 -0
  8. package/dist/cjs/plugins/table/commands/misc.js +509 -0
  9. package/dist/cjs/plugins/table/commands/selection.js +419 -0
  10. package/dist/cjs/plugins/table/commands/sort.js +94 -0
  11. package/dist/cjs/plugins/table/commands/split-cell.js +38 -0
  12. package/dist/cjs/plugins/table/commands/toggle.js +124 -0
  13. package/dist/cjs/plugins/table/commands-with-analytics.js +543 -0
  14. package/dist/cjs/plugins/table/create-plugin-config.js +31 -0
  15. package/dist/cjs/plugins/table/event-handlers.js +441 -0
  16. package/dist/cjs/plugins/table/handlers.js +155 -0
  17. package/dist/cjs/plugins/table/index.js +347 -0
  18. package/dist/cjs/plugins/table/nodeviews/OverflowShadowsObserver.js +182 -0
  19. package/dist/cjs/plugins/table/nodeviews/TableComponent.js +610 -0
  20. package/dist/cjs/plugins/table/nodeviews/table.js +261 -0
  21. package/dist/cjs/plugins/table/nodeviews/tableCell.js +123 -0
  22. package/dist/cjs/plugins/table/nodeviews/types.js +5 -0
  23. package/dist/cjs/plugins/table/nodeviews/update-overflow-shadows.js +67 -0
  24. package/dist/cjs/plugins/table/pm-plugins/decorations/plugin.js +81 -0
  25. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/column-controls.js +88 -0
  26. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/column-resizing.js +55 -0
  27. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/compose-decorations.js +21 -0
  28. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/index.js +35 -0
  29. package/dist/cjs/plugins/table/pm-plugins/decorations/utils/types.js +5 -0
  30. package/dist/cjs/plugins/table/pm-plugins/default-table-selection.js +12 -0
  31. package/dist/cjs/plugins/table/pm-plugins/keymap.js +59 -0
  32. package/dist/cjs/plugins/table/pm-plugins/main.js +308 -0
  33. package/dist/cjs/plugins/table/pm-plugins/plugin-factory.js +65 -0
  34. package/dist/cjs/plugins/table/pm-plugins/plugin-key.js +11 -0
  35. package/dist/cjs/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.js +79 -0
  36. package/dist/cjs/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +118 -0
  37. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/commands.js +30 -0
  38. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/index.js +51 -0
  39. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.js +46 -0
  40. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +590 -0
  41. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin-key.js +11 -0
  42. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin-state.js +68 -0
  43. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin.js +34 -0
  44. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/types.js +5 -0
  45. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/util.js +25 -0
  46. package/dist/cjs/plugins/table/pm-plugins/table-local-id.js +205 -0
  47. package/dist/cjs/plugins/table/pm-plugins/table-resizing/commands.js +158 -0
  48. package/dist/cjs/plugins/table/pm-plugins/table-resizing/event-handlers.js +182 -0
  49. package/dist/cjs/plugins/table/pm-plugins/table-resizing/index.js +29 -0
  50. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin-factory.js +40 -0
  51. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin-key.js +11 -0
  52. package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin.js +70 -0
  53. package/dist/cjs/plugins/table/pm-plugins/table-resizing/reducer.js +46 -0
  54. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +71 -0
  55. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/column-state.js +107 -0
  56. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/content-width.js +112 -0
  57. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/dom.js +158 -0
  58. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/index.js +209 -0
  59. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/misc.js +115 -0
  60. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-column.js +19 -0
  61. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +279 -0
  62. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +364 -0
  63. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +132 -0
  64. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/types.js +5 -0
  65. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/unit-to-number.js +12 -0
  66. package/dist/cjs/plugins/table/pm-plugins/table-selection-keymap.js +23 -0
  67. package/dist/cjs/plugins/table/reducer.js +107 -0
  68. package/dist/cjs/plugins/table/todo-stubs.js +10 -0
  69. package/dist/cjs/plugins/table/toolbar.js +325 -0
  70. package/dist/cjs/plugins/table/transforms/column-width.js +196 -0
  71. package/dist/cjs/plugins/table/transforms/delete-columns.js +293 -0
  72. package/dist/cjs/plugins/table/transforms/delete-rows.js +176 -0
  73. package/dist/cjs/plugins/table/transforms/fix-tables.js +250 -0
  74. package/dist/cjs/plugins/table/transforms/index.js +85 -0
  75. package/dist/cjs/plugins/table/transforms/merge.js +349 -0
  76. package/dist/cjs/plugins/table/transforms/metadata.js +23 -0
  77. package/dist/cjs/plugins/table/transforms/replace-table.js +48 -0
  78. package/dist/cjs/plugins/table/transforms/split.js +92 -0
  79. package/dist/cjs/plugins/table/types.js +106 -0
  80. package/dist/cjs/plugins/table/ui/FloatingContextualButton/index.js +194 -0
  81. package/dist/cjs/plugins/table/ui/FloatingContextualButton/styles.js +26 -0
  82. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +529 -0
  83. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/index.js +116 -0
  84. package/dist/cjs/plugins/table/ui/FloatingContextualMenu/styles.js +34 -0
  85. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/DeleteButton.js +49 -0
  86. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.js +71 -0
  87. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/index.js +365 -0
  88. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/types.js +5 -0
  89. package/dist/cjs/plugins/table/ui/FloatingInsertButton/InsertButton.js +118 -0
  90. package/dist/cjs/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +108 -0
  91. package/dist/cjs/plugins/table/ui/FloatingInsertButton/index.js +244 -0
  92. package/dist/cjs/plugins/table/ui/LayoutButton/index.js +255 -0
  93. package/dist/cjs/plugins/table/ui/TableFloatingControls/CornerControls/index.js +140 -0
  94. package/dist/cjs/plugins/table/ui/TableFloatingControls/NumberColumn/index.js +146 -0
  95. package/dist/cjs/plugins/table/ui/TableFloatingControls/RowControls/index.js +135 -0
  96. package/dist/cjs/plugins/table/ui/TableFloatingControls/index.js +229 -0
  97. package/dist/cjs/plugins/table/ui/common-styles.js +48 -0
  98. package/dist/cjs/plugins/table/ui/consts.js +109 -0
  99. package/dist/cjs/plugins/table/ui/messages.js +48 -0
  100. package/dist/cjs/plugins/table/ui/ui-styles.js +116 -0
  101. package/dist/cjs/plugins/table/utils/analytics.js +86 -0
  102. package/dist/cjs/plugins/table/utils/collapse.js +98 -0
  103. package/dist/cjs/plugins/table/utils/column-controls.js +234 -0
  104. package/dist/cjs/plugins/table/utils/decoration.js +405 -0
  105. package/dist/cjs/plugins/table/utils/dom.js +224 -0
  106. package/dist/cjs/plugins/table/utils/get-allow-add-column-custom-step.js +13 -0
  107. package/dist/cjs/plugins/table/utils/index.js +355 -0
  108. package/dist/cjs/plugins/table/utils/nodes.js +159 -0
  109. package/dist/cjs/plugins/table/utils/paste.js +148 -0
  110. package/dist/cjs/plugins/table/utils/referentiality.js +29 -0
  111. package/dist/cjs/plugins/table/utils/row-controls.js +254 -0
  112. package/dist/cjs/plugins/table/utils/selection.js +116 -0
  113. package/dist/cjs/plugins/table/utils/table.js +48 -0
  114. package/dist/cjs/plugins/table/utils/update-plugin-state-decorations.js +16 -0
  115. package/dist/cjs/plugins/table-plugin.js +4 -45
  116. package/dist/cjs/version.json +1 -1
  117. package/dist/es2019/plugins/table/commands/clear.js +48 -0
  118. package/dist/es2019/plugins/table/commands/collapse.js +14 -0
  119. package/dist/es2019/plugins/table/commands/go-to-next-cell.js +47 -0
  120. package/dist/es2019/plugins/table/commands/hover.js +117 -0
  121. package/dist/es2019/plugins/table/commands/index.js +7 -0
  122. package/dist/es2019/plugins/table/commands/insert.js +141 -0
  123. package/dist/es2019/plugins/table/commands/misc.js +405 -0
  124. package/dist/es2019/plugins/table/commands/selection.js +369 -0
  125. package/dist/es2019/plugins/table/commands/sort.js +74 -0
  126. package/dist/es2019/plugins/table/commands/split-cell.js +29 -0
  127. package/dist/es2019/plugins/table/commands/toggle.js +76 -0
  128. package/dist/es2019/plugins/table/commands-with-analytics.js +409 -0
  129. package/dist/es2019/plugins/table/create-plugin-config.js +14 -0
  130. package/dist/es2019/plugins/table/event-handlers.js +387 -0
  131. package/dist/es2019/plugins/table/handlers.js +123 -0
  132. package/dist/es2019/plugins/table/index.js +308 -0
  133. package/dist/es2019/plugins/table/nodeviews/OverflowShadowsObserver.js +159 -0
  134. package/dist/es2019/plugins/table/nodeviews/TableComponent.js +578 -0
  135. package/dist/es2019/plugins/table/nodeviews/table.js +200 -0
  136. package/dist/es2019/plugins/table/nodeviews/tableCell.js +77 -0
  137. package/dist/es2019/plugins/table/nodeviews/types.js +1 -0
  138. package/dist/es2019/plugins/table/nodeviews/update-overflow-shadows.js +52 -0
  139. package/dist/es2019/plugins/table/pm-plugins/decorations/plugin.js +52 -0
  140. package/dist/es2019/plugins/table/pm-plugins/decorations/utils/column-controls.js +67 -0
  141. package/dist/es2019/plugins/table/pm-plugins/decorations/utils/column-resizing.js +27 -0
  142. package/dist/es2019/plugins/table/pm-plugins/decorations/utils/compose-decorations.js +7 -0
  143. package/dist/es2019/plugins/table/pm-plugins/decorations/utils/index.js +3 -0
  144. package/dist/es2019/plugins/table/pm-plugins/decorations/utils/types.js +1 -0
  145. package/dist/es2019/plugins/table/pm-plugins/default-table-selection.js +5 -0
  146. package/dist/es2019/plugins/table/pm-plugins/keymap.js +34 -0
  147. package/dist/es2019/plugins/table/pm-plugins/main.js +274 -0
  148. package/dist/es2019/plugins/table/pm-plugins/plugin-factory.js +46 -0
  149. package/dist/es2019/plugins/table/pm-plugins/plugin-key.js +2 -0
  150. package/dist/es2019/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.js +66 -0
  151. package/dist/es2019/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +106 -0
  152. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/commands.js +9 -0
  153. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/index.js +5 -0
  154. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.js +34 -0
  155. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +546 -0
  156. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/plugin-key.js +2 -0
  157. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/plugin-state.js +47 -0
  158. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/plugin.js +17 -0
  159. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/types.js +1 -0
  160. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/util.js +14 -0
  161. package/dist/es2019/plugins/table/pm-plugins/table-local-id.js +203 -0
  162. package/dist/es2019/plugins/table/pm-plugins/table-resizing/commands.js +109 -0
  163. package/dist/es2019/plugins/table/pm-plugins/table-resizing/event-handlers.js +173 -0
  164. package/dist/es2019/plugins/table/pm-plugins/table-resizing/index.js +3 -0
  165. package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin-factory.js +20 -0
  166. package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin-key.js +2 -0
  167. package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin.js +58 -0
  168. package/dist/es2019/plugins/table/pm-plugins/table-resizing/reducer.js +31 -0
  169. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +45 -0
  170. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/column-state.js +78 -0
  171. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/content-width.js +97 -0
  172. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/dom.js +124 -0
  173. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/index.js +9 -0
  174. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/misc.js +90 -0
  175. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-column.js +8 -0
  176. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +221 -0
  177. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +276 -0
  178. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +105 -0
  179. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/types.js +1 -0
  180. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/unit-to-number.js +1 -0
  181. package/dist/es2019/plugins/table/pm-plugins/table-selection-keymap.js +10 -0
  182. package/dist/es2019/plugins/table/reducer.js +103 -0
  183. package/dist/es2019/plugins/table/todo-stubs.js +1 -0
  184. package/dist/es2019/plugins/table/toolbar.js +287 -0
  185. package/dist/es2019/plugins/table/transforms/column-width.js +163 -0
  186. package/dist/es2019/plugins/table/transforms/delete-columns.js +247 -0
  187. package/dist/es2019/plugins/table/transforms/delete-rows.js +135 -0
  188. package/dist/es2019/plugins/table/transforms/fix-tables.js +218 -0
  189. package/dist/es2019/plugins/table/transforms/index.js +7 -0
  190. package/dist/es2019/plugins/table/transforms/merge.js +312 -0
  191. package/dist/es2019/plugins/table/transforms/metadata.js +11 -0
  192. package/dist/es2019/plugins/table/transforms/replace-table.js +33 -0
  193. package/dist/es2019/plugins/table/transforms/split.js +72 -0
  194. package/dist/es2019/plugins/table/types.js +84 -0
  195. package/dist/es2019/plugins/table/ui/FloatingContextualButton/index.js +142 -0
  196. package/dist/es2019/plugins/table/ui/FloatingContextualButton/styles.js +28 -0
  197. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +482 -0
  198. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/index.js +99 -0
  199. package/dist/es2019/plugins/table/ui/FloatingContextualMenu/styles.js +48 -0
  200. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/DeleteButton.js +36 -0
  201. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.js +59 -0
  202. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/index.js +302 -0
  203. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/types.js +1 -0
  204. package/dist/es2019/plugins/table/ui/FloatingInsertButton/InsertButton.js +96 -0
  205. package/dist/es2019/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +96 -0
  206. package/dist/es2019/plugins/table/ui/FloatingInsertButton/index.js +199 -0
  207. package/dist/es2019/plugins/table/ui/LayoutButton/index.js +195 -0
  208. package/dist/es2019/plugins/table/ui/TableFloatingControls/CornerControls/index.js +95 -0
  209. package/dist/es2019/plugins/table/ui/TableFloatingControls/NumberColumn/index.js +91 -0
  210. package/dist/es2019/plugins/table/ui/TableFloatingControls/RowControls/index.js +82 -0
  211. package/dist/es2019/plugins/table/ui/TableFloatingControls/index.js +158 -0
  212. package/dist/es2019/plugins/table/ui/common-styles.js +647 -0
  213. package/dist/es2019/plugins/table/ui/consts.js +61 -0
  214. package/dist/es2019/plugins/table/ui/messages.js +38 -0
  215. package/dist/es2019/plugins/table/ui/ui-styles.js +398 -0
  216. package/dist/es2019/plugins/table/utils/analytics.js +65 -0
  217. package/dist/es2019/plugins/table/utils/collapse.js +84 -0
  218. package/dist/es2019/plugins/table/utils/column-controls.js +178 -0
  219. package/dist/es2019/plugins/table/utils/decoration.js +346 -0
  220. package/dist/es2019/plugins/table/utils/dom.js +160 -0
  221. package/dist/es2019/plugins/table/utils/get-allow-add-column-custom-step.js +5 -0
  222. package/dist/es2019/plugins/table/utils/index.js +10 -0
  223. package/dist/es2019/plugins/table/utils/nodes.js +104 -0
  224. package/dist/es2019/plugins/table/utils/paste.js +117 -0
  225. package/dist/es2019/plugins/table/utils/referentiality.js +18 -0
  226. package/dist/es2019/plugins/table/utils/row-controls.js +210 -0
  227. package/dist/es2019/plugins/table/utils/selection.js +95 -0
  228. package/dist/es2019/plugins/table/utils/table.js +27 -0
  229. package/dist/es2019/plugins/table/utils/update-plugin-state-decorations.js +3 -0
  230. package/dist/es2019/plugins/table-plugin.js +1 -44
  231. package/dist/es2019/version.json +1 -1
  232. package/dist/esm/plugins/table/commands/clear.js +48 -0
  233. package/dist/esm/plugins/table/commands/collapse.js +14 -0
  234. package/dist/esm/plugins/table/commands/go-to-next-cell.js +50 -0
  235. package/dist/esm/plugins/table/commands/hover.js +149 -0
  236. package/dist/esm/plugins/table/commands/index.js +7 -0
  237. package/dist/esm/plugins/table/commands/insert.js +153 -0
  238. package/dist/esm/plugins/table/commands/misc.js +427 -0
  239. package/dist/esm/plugins/table/commands/selection.js +401 -0
  240. package/dist/esm/plugins/table/commands/sort.js +79 -0
  241. package/dist/esm/plugins/table/commands/split-cell.js +28 -0
  242. package/dist/esm/plugins/table/commands/toggle.js +97 -0
  243. package/dist/esm/plugins/table/commands-with-analytics.js +464 -0
  244. package/dist/esm/plugins/table/create-plugin-config.js +20 -0
  245. package/dist/esm/plugins/table/event-handlers.js +387 -0
  246. package/dist/esm/plugins/table/handlers.js +140 -0
  247. package/dist/esm/plugins/table/index.js +312 -0
  248. package/dist/esm/plugins/table/nodeviews/OverflowShadowsObserver.js +177 -0
  249. package/dist/esm/plugins/table/nodeviews/TableComponent.js +596 -0
  250. package/dist/esm/plugins/table/nodeviews/table.js +235 -0
  251. package/dist/esm/plugins/table/nodeviews/tableCell.js +111 -0
  252. package/dist/esm/plugins/table/nodeviews/types.js +1 -0
  253. package/dist/esm/plugins/table/nodeviews/update-overflow-shadows.js +54 -0
  254. package/dist/esm/plugins/table/pm-plugins/decorations/plugin.js +58 -0
  255. package/dist/esm/plugins/table/pm-plugins/decorations/utils/column-controls.js +71 -0
  256. package/dist/esm/plugins/table/pm-plugins/decorations/utils/column-resizing.js +40 -0
  257. package/dist/esm/plugins/table/pm-plugins/decorations/utils/compose-decorations.js +12 -0
  258. package/dist/esm/plugins/table/pm-plugins/decorations/utils/index.js +3 -0
  259. package/dist/esm/plugins/table/pm-plugins/decorations/utils/types.js +1 -0
  260. package/dist/esm/plugins/table/pm-plugins/default-table-selection.js +5 -0
  261. package/dist/esm/plugins/table/pm-plugins/keymap.js +36 -0
  262. package/dist/esm/plugins/table/pm-plugins/main.js +278 -0
  263. package/dist/esm/plugins/table/pm-plugins/plugin-factory.js +51 -0
  264. package/dist/esm/plugins/table/pm-plugins/plugin-key.js +2 -0
  265. package/dist/esm/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.js +66 -0
  266. package/dist/esm/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +102 -0
  267. package/dist/esm/plugins/table/pm-plugins/sticky-headers/commands.js +17 -0
  268. package/dist/esm/plugins/table/pm-plugins/sticky-headers/index.js +5 -0
  269. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.js +34 -0
  270. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +588 -0
  271. package/dist/esm/plugins/table/pm-plugins/sticky-headers/plugin-key.js +2 -0
  272. package/dist/esm/plugins/table/pm-plugins/sticky-headers/plugin-state.js +57 -0
  273. package/dist/esm/plugins/table/pm-plugins/sticky-headers/plugin.js +21 -0
  274. package/dist/esm/plugins/table/pm-plugins/sticky-headers/types.js +1 -0
  275. package/dist/esm/plugins/table/pm-plugins/sticky-headers/util.js +16 -0
  276. package/dist/esm/plugins/table/pm-plugins/table-local-id.js +205 -0
  277. package/dist/esm/plugins/table/pm-plugins/table-resizing/commands.js +127 -0
  278. package/dist/esm/plugins/table/pm-plugins/table-resizing/event-handlers.js +159 -0
  279. package/dist/esm/plugins/table/pm-plugins/table-resizing/index.js +3 -0
  280. package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin-factory.js +26 -0
  281. package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin-key.js +2 -0
  282. package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin.js +52 -0
  283. package/dist/esm/plugins/table/pm-plugins/table-resizing/reducer.js +35 -0
  284. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/colgroup.js +50 -0
  285. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/column-state.js +80 -0
  286. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/content-width.js +104 -0
  287. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/dom.js +125 -0
  288. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/index.js +9 -0
  289. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/misc.js +88 -0
  290. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-column.js +8 -0
  291. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-logic.js +257 -0
  292. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +320 -0
  293. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +109 -0
  294. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/types.js +1 -0
  295. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/unit-to-number.js +3 -0
  296. package/dist/esm/plugins/table/pm-plugins/table-selection-keymap.js +10 -0
  297. package/dist/esm/plugins/table/reducer.js +95 -0
  298. package/dist/esm/plugins/table/todo-stubs.js +1 -0
  299. package/dist/esm/plugins/table/toolbar.js +290 -0
  300. package/dist/esm/plugins/table/transforms/column-width.js +175 -0
  301. package/dist/esm/plugins/table/transforms/delete-columns.js +271 -0
  302. package/dist/esm/plugins/table/transforms/delete-rows.js +156 -0
  303. package/dist/esm/plugins/table/transforms/fix-tables.js +229 -0
  304. package/dist/esm/plugins/table/transforms/index.js +7 -0
  305. package/dist/esm/plugins/table/transforms/merge.js +324 -0
  306. package/dist/esm/plugins/table/transforms/metadata.js +13 -0
  307. package/dist/esm/plugins/table/transforms/replace-table.js +34 -0
  308. package/dist/esm/plugins/table/transforms/split.js +82 -0
  309. package/dist/esm/plugins/table/types.js +90 -0
  310. package/dist/esm/plugins/table/ui/FloatingContextualButton/index.js +167 -0
  311. package/dist/esm/plugins/table/ui/FloatingContextualButton/styles.js +11 -0
  312. package/dist/esm/plugins/table/ui/FloatingContextualMenu/ContextualMenu.js +501 -0
  313. package/dist/esm/plugins/table/ui/FloatingContextualMenu/index.js +96 -0
  314. package/dist/esm/plugins/table/ui/FloatingContextualMenu/styles.js +15 -0
  315. package/dist/esm/plugins/table/ui/FloatingDeleteButton/DeleteButton.js +37 -0
  316. package/dist/esm/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.js +61 -0
  317. package/dist/esm/plugins/table/ui/FloatingDeleteButton/index.js +333 -0
  318. package/dist/esm/plugins/table/ui/FloatingDeleteButton/types.js +1 -0
  319. package/dist/esm/plugins/table/ui/FloatingInsertButton/InsertButton.js +90 -0
  320. package/dist/esm/plugins/table/ui/FloatingInsertButton/getPopupOptions.js +96 -0
  321. package/dist/esm/plugins/table/ui/FloatingInsertButton/index.js +214 -0
  322. package/dist/esm/plugins/table/ui/LayoutButton/index.js +227 -0
  323. package/dist/esm/plugins/table/ui/TableFloatingControls/CornerControls/index.js +120 -0
  324. package/dist/esm/plugins/table/ui/TableFloatingControls/NumberColumn/index.js +126 -0
  325. package/dist/esm/plugins/table/ui/TableFloatingControls/RowControls/index.js +113 -0
  326. package/dist/esm/plugins/table/ui/TableFloatingControls/index.js +207 -0
  327. package/dist/esm/plugins/table/ui/common-styles.js +25 -0
  328. package/dist/esm/plugins/table/ui/consts.js +61 -0
  329. package/dist/esm/plugins/table/ui/messages.js +38 -0
  330. package/dist/esm/plugins/table/ui/ui-styles.js +73 -0
  331. package/dist/esm/plugins/table/utils/analytics.js +71 -0
  332. package/dist/esm/plugins/table/utils/collapse.js +84 -0
  333. package/dist/esm/plugins/table/utils/column-controls.js +202 -0
  334. package/dist/esm/plugins/table/utils/decoration.js +366 -0
  335. package/dist/esm/plugins/table/utils/dom.js +175 -0
  336. package/dist/esm/plugins/table/utils/get-allow-add-column-custom-step.js +5 -0
  337. package/dist/esm/plugins/table/utils/index.js +10 -0
  338. package/dist/esm/plugins/table/utils/nodes.js +112 -0
  339. package/dist/esm/plugins/table/utils/paste.js +115 -0
  340. package/dist/esm/plugins/table/utils/referentiality.js +20 -0
  341. package/dist/esm/plugins/table/utils/row-controls.js +221 -0
  342. package/dist/esm/plugins/table/utils/selection.js +96 -0
  343. package/dist/esm/plugins/table/utils/table.js +30 -0
  344. package/dist/esm/plugins/table/utils/update-plugin-state-decorations.js +5 -0
  345. package/dist/esm/plugins/table-plugin.js +1 -42
  346. package/dist/esm/version.json +1 -1
  347. package/dist/types/plugins/table/commands/clear.d.ts +3 -0
  348. package/dist/types/plugins/table/commands/collapse.d.ts +2 -0
  349. package/dist/types/plugins/table/commands/go-to-next-cell.d.ts +4 -0
  350. package/dist/types/plugins/table/commands/hover.d.ts +8 -0
  351. package/dist/types/plugins/table/commands/index.d.ts +7 -0
  352. package/dist/types/plugins/table/commands/insert.d.ts +10 -0
  353. package/dist/types/plugins/table/commands/misc.d.ts +27 -0
  354. package/dist/types/plugins/table/commands/selection.d.ts +8 -0
  355. package/dist/types/plugins/table/commands/sort.d.ts +3 -0
  356. package/dist/types/plugins/table/commands/split-cell.d.ts +6 -0
  357. package/dist/types/plugins/table/commands/toggle.d.ts +12 -0
  358. package/dist/types/plugins/table/commands-with-analytics.d.ts +26 -0
  359. package/dist/types/plugins/table/create-plugin-config.d.ts +2 -0
  360. package/dist/types/plugins/table/event-handlers.d.ts +16 -0
  361. package/dist/types/plugins/table/handlers.d.ts +3 -0
  362. package/dist/types/plugins/table/index.d.ts +18 -0
  363. package/dist/types/plugins/table/nodeviews/OverflowShadowsObserver.d.ts +26 -0
  364. package/dist/types/plugins/table/nodeviews/TableComponent.d.ts +72 -0
  365. package/dist/types/plugins/table/nodeviews/__mocks__/OverflowShadowsObserver.d.ts +9 -0
  366. package/dist/types/plugins/table/nodeviews/__mocks__/OverridableMock.d.ts +9 -0
  367. package/dist/types/plugins/table/nodeviews/table.d.ts +31 -0
  368. package/dist/types/plugins/table/nodeviews/tableCell.d.ts +19 -0
  369. package/dist/types/plugins/table/nodeviews/types.d.ts +23 -0
  370. package/dist/types/plugins/table/nodeviews/update-overflow-shadows.d.ts +8 -0
  371. package/dist/types/plugins/table/pm-plugins/decorations/plugin.d.ts +7 -0
  372. package/dist/types/plugins/table/pm-plugins/decorations/utils/column-controls.d.ts +3 -0
  373. package/dist/types/plugins/table/pm-plugins/decorations/utils/column-resizing.d.ts +2 -0
  374. package/dist/types/plugins/table/pm-plugins/decorations/utils/compose-decorations.d.ts +2 -0
  375. package/dist/types/plugins/table/pm-plugins/decorations/utils/index.d.ts +3 -0
  376. package/dist/types/plugins/table/pm-plugins/decorations/utils/types.d.ts +6 -0
  377. package/dist/types/plugins/table/pm-plugins/default-table-selection.d.ts +5 -0
  378. package/dist/types/plugins/table/pm-plugins/keymap.d.ts +5 -0
  379. package/dist/types/plugins/table/pm-plugins/main.d.ts +8 -0
  380. package/dist/types/plugins/table/pm-plugins/plugin-factory.d.ts +1 -0
  381. package/dist/types/plugins/table/pm-plugins/plugin-key.d.ts +3 -0
  382. package/dist/types/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.d.ts +4 -0
  383. package/dist/types/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.d.ts +15 -0
  384. package/dist/types/plugins/table/pm-plugins/sticky-headers/commands.d.ts +3 -0
  385. package/dist/types/plugins/table/pm-plugins/sticky-headers/index.d.ts +6 -0
  386. package/dist/types/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.d.ts +6 -0
  387. package/dist/types/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.d.ts +65 -0
  388. package/dist/types/plugins/table/pm-plugins/sticky-headers/plugin-key.d.ts +3 -0
  389. package/dist/types/plugins/table/pm-plugins/sticky-headers/plugin-state.d.ts +3 -0
  390. package/dist/types/plugins/table/pm-plugins/sticky-headers/plugin.d.ts +4 -0
  391. package/dist/types/plugins/table/pm-plugins/sticky-headers/types.d.ts +16 -0
  392. package/dist/types/plugins/table/pm-plugins/sticky-headers/util.d.ts +2 -0
  393. package/dist/types/plugins/table/pm-plugins/table-local-id.d.ts +22 -0
  394. package/dist/types/plugins/table/pm-plugins/table-resizing/commands.d.ts +25 -0
  395. package/dist/types/plugins/table/pm-plugins/table-resizing/event-handlers.d.ts +4 -0
  396. package/dist/types/plugins/table/pm-plugins/table-resizing/index.d.ts +3 -0
  397. package/dist/types/plugins/table/pm-plugins/table-resizing/plugin-factory.d.ts +4 -0
  398. package/dist/types/plugins/table/pm-plugins/table-resizing/plugin-key.d.ts +3 -0
  399. package/dist/types/plugins/table/pm-plugins/table-resizing/plugin.d.ts +6 -0
  400. package/dist/types/plugins/table/pm-plugins/table-resizing/reducer.d.ts +3 -0
  401. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/colgroup.d.ts +8 -0
  402. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/column-state.d.ts +14 -0
  403. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/content-width.d.ts +4 -0
  404. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/dom.d.ts +13 -0
  405. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/index.d.ts +12 -0
  406. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +22 -0
  407. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/resize-column.d.ts +2 -0
  408. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/resize-logic.d.ts +4 -0
  409. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/resize-state.d.ts +29 -0
  410. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/scale-table.d.ts +17 -0
  411. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/types.d.ts +22 -0
  412. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/unit-to-number.d.ts +1 -0
  413. package/dist/types/plugins/table/pm-plugins/table-selection-keymap.d.ts +4 -0
  414. package/dist/types/plugins/table/reducer.d.ts +3 -0
  415. package/dist/types/plugins/table/todo-stubs.d.ts +1 -0
  416. package/dist/types/plugins/table/toolbar.d.ts +36 -0
  417. package/dist/types/plugins/table/transforms/column-width.d.ts +18 -0
  418. package/dist/types/plugins/table/transforms/delete-columns.d.ts +3 -0
  419. package/dist/types/plugins/table/transforms/delete-rows.d.ts +3 -0
  420. package/dist/types/plugins/table/transforms/fix-tables.d.ts +10 -0
  421. package/dist/types/plugins/table/transforms/index.d.ts +7 -0
  422. package/dist/types/plugins/table/transforms/merge.d.ts +5 -0
  423. package/dist/types/plugins/table/transforms/metadata.d.ts +21 -0
  424. package/dist/types/plugins/table/transforms/replace-table.d.ts +5 -0
  425. package/dist/types/plugins/table/transforms/split.d.ts +9 -0
  426. package/dist/types/plugins/table/types.d.ts +328 -0
  427. package/dist/types/plugins/table/ui/FloatingContextualButton/index.d.ts +29 -0
  428. package/dist/types/plugins/table/ui/FloatingContextualButton/styles.d.ts +1 -0
  429. package/dist/types/plugins/table/ui/FloatingContextualMenu/ContextualMenu.d.ts +87 -0
  430. package/dist/types/plugins/table/ui/FloatingContextualMenu/index.d.ts +22 -0
  431. package/dist/types/plugins/table/ui/FloatingContextualMenu/styles.d.ts +2 -0
  432. package/dist/types/plugins/table/ui/FloatingDeleteButton/DeleteButton.d.ts +14 -0
  433. package/dist/types/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.d.ts +10 -0
  434. package/dist/types/plugins/table/ui/FloatingDeleteButton/index.d.ts +54 -0
  435. package/dist/types/plugins/table/ui/FloatingDeleteButton/types.d.ts +1 -0
  436. package/dist/types/plugins/table/ui/FloatingInsertButton/InsertButton.d.ts +12 -0
  437. package/dist/types/plugins/table/ui/FloatingInsertButton/getPopupOptions.d.ts +3 -0
  438. package/dist/types/plugins/table/ui/FloatingInsertButton/index.d.ts +35 -0
  439. package/dist/types/plugins/table/ui/LayoutButton/index.d.ts +21 -0
  440. package/dist/types/plugins/table/ui/TableFloatingControls/CornerControls/index.d.ts +19 -0
  441. package/dist/types/plugins/table/ui/TableFloatingControls/NumberColumn/index.d.ts +21 -0
  442. package/dist/types/plugins/table/ui/TableFloatingControls/RowControls/index.d.ts +17 -0
  443. package/dist/types/plugins/table/ui/TableFloatingControls/index.d.ts +40 -0
  444. package/dist/types/plugins/table/ui/common-styles.d.ts +4 -0
  445. package/dist/types/plugins/table/ui/consts.d.ts +39 -0
  446. package/dist/types/plugins/table/ui/messages.d.ts +38 -0
  447. package/dist/types/plugins/table/ui/ui-styles.d.ts +15 -0
  448. package/dist/types/plugins/table/utils/analytics.d.ts +18 -0
  449. package/dist/types/plugins/table/utils/collapse.d.ts +29 -0
  450. package/dist/types/plugins/table/utils/column-controls.d.ts +10 -0
  451. package/dist/types/plugins/table/utils/decoration.d.ts +13 -0
  452. package/dist/types/plugins/table/utils/dom.d.ts +17 -0
  453. package/dist/types/plugins/table/utils/get-allow-add-column-custom-step.d.ts +2 -0
  454. package/dist/types/plugins/table/utils/index.d.ts +11 -0
  455. package/dist/types/plugins/table/utils/nodes.d.ts +12 -0
  456. package/dist/types/plugins/table/utils/paste.d.ts +14 -0
  457. package/dist/types/plugins/table/utils/referentiality.d.ts +2 -0
  458. package/dist/types/plugins/table/utils/row-controls.d.ts +16 -0
  459. package/dist/types/plugins/table/utils/selection.d.ts +6 -0
  460. package/dist/types/plugins/table/utils/table.d.ts +4 -0
  461. package/dist/types/plugins/table/utils/update-plugin-state-decorations.d.ts +4 -0
  462. package/dist/types/plugins/table-plugin.d.ts +1 -1
  463. package/package.json +27 -5
  464. package/report.api.md +50 -1
  465. package/src/plugins/table/__tests__/integration/block-node-selection.ts +164 -0
  466. package/src/plugins/table/__tests__/unit/commands/go-to-next-cell.ts +155 -0
  467. package/src/plugins/table/__tests__/unit/commands/insert.ts +116 -0
  468. package/src/plugins/table/__tests__/unit/commands/misc.ts +165 -0
  469. package/src/plugins/table/__tests__/unit/commands.ts +982 -0
  470. package/src/plugins/table/__tests__/unit/event-handlers.ts +130 -0
  471. package/src/plugins/table/__tests__/unit/get-toolbar-config.ts +140 -0
  472. package/src/plugins/table/__tests__/unit/nodeviews/OverflowShadowsObserver.ts +153 -0
  473. package/src/plugins/table/__tests__/unit/nodeviews/TableComponent.tsx +388 -0
  474. package/src/plugins/table/__tests__/unit/nodeviews/table.ts +121 -0
  475. package/src/plugins/table/__tests__/unit/pm-plugins/decorations/column-controls.ts +34 -0
  476. package/src/plugins/table/__tests__/unit/pm-plugins/decorations/column-resizing.ts +152 -0
  477. package/src/plugins/table/__tests__/unit/pm-plugins/decorations/plugin.ts +140 -0
  478. package/src/plugins/table/__tests__/unit/pm-plugins/main-with-allow-collapse.ts +100 -0
  479. package/src/plugins/table/__tests__/unit/pm-plugins/main.ts +187 -0
  480. package/src/plugins/table/__tests__/unit/pm-plugins/safari-delete-composition-text-issue-workaround.ts +83 -0
  481. package/src/plugins/table/__tests__/unit/pm-plugins/sticky-headers/tableRow.tsx +603 -0
  482. package/src/plugins/table/__tests__/unit/pm-plugins/table-local-id.ts +515 -0
  483. package/src/plugins/table/__tests__/unit/pm-plugins/table-resizing/colgroup.ts +86 -0
  484. package/src/plugins/table/__tests__/unit/pm-plugins/table-resizing/event-handlers.ts +132 -0
  485. package/src/plugins/table/__tests__/unit/pm-plugins/table-selection-keymap.ts +564 -0
  486. package/src/plugins/table/__tests__/unit/toolbar.ts +240 -0
  487. package/src/plugins/table/__tests__/unit/utils/collapse.ts +74 -0
  488. package/src/plugins/table/__tests__/unit/utils/column-controls.ts +61 -0
  489. package/src/plugins/table/__tests__/visual-regression/__fixtures__/table-with-100-numbered-list-items.json +20272 -0
  490. package/src/plugins/table/__tests__/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-column-menu-item-should-remove-the-table-column-on-click-1-snap.png +3 -0
  491. package/src/plugins/table/__tests__/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-column-menu-item-visual-hints-should-be-added-to-the-table-column-on-hover-1-snap.png +3 -0
  492. package/src/plugins/table/__tests__/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-row-menu-item-should-remove-the-table-row-on-click-1-snap.png +3 -0
  493. package/src/plugins/table/__tests__/visual-regression/__image_snapshots__/cell-options-menu-ts-table-cell-options-menu-delete-row-menu-item-visual-hints-should-be-added-to-the-table-row-on-hover-1-snap.png +3 -0
  494. package/src/plugins/table/__tests__/visual-regression/__image_snapshots__/copy-button-ts-floating-toolbar-copy-button-table-target-node-displays-blue-border-when-copy-button-is-hovered-1-snap.png +3 -0
  495. package/src/plugins/table/__tests__/visual-regression/__image_snapshots__/index-ts-snapshot-test-table-numbered-list-should-not-overflow-table-cell-when-there-are-more-than-100-ordered-list-items-1-snap.png +3 -0
  496. package/src/plugins/table/__tests__/visual-regression/__image_snapshots__/index-ts-snapshot-test-table-numbered-list-should-not-overflow-table-cell-when-there-are-more-than-100-ordered-list-items-2-snap.png +3 -0
  497. package/src/plugins/table/__tests__/visual-regression/__image_snapshots__/index-ts-snapshot-test-table-numbered-list-should-not-overflow-table-cell-when-there-are-more-than-100-ordered-list-items-3-snap.png +3 -0
  498. package/src/plugins/table/__tests__/visual-regression/cell-options-menu.ts +97 -0
  499. package/src/plugins/table/__tests__/visual-regression/index.ts +42 -0
  500. package/src/plugins/table/commands/clear.ts +58 -0
  501. package/src/plugins/table/commands/collapse.ts +16 -0
  502. package/src/plugins/table/commands/go-to-next-cell.ts +56 -0
  503. package/src/plugins/table/commands/hover.ts +192 -0
  504. package/src/plugins/table/commands/index.ts +40 -0
  505. package/src/plugins/table/commands/insert.ts +174 -0
  506. package/src/plugins/table/commands/misc.ts +506 -0
  507. package/src/plugins/table/commands/selection.ts +406 -0
  508. package/src/plugins/table/commands/sort.ts +109 -0
  509. package/src/plugins/table/commands/split-cell.ts +28 -0
  510. package/src/plugins/table/commands/toggle.ts +93 -0
  511. package/src/plugins/table/commands-with-analytics.ts +523 -0
  512. package/src/plugins/table/create-plugin-config.ts +18 -0
  513. package/src/plugins/table/event-handlers.ts +514 -0
  514. package/src/plugins/table/handlers.ts +169 -0
  515. package/src/plugins/table/index.tsx +413 -0
  516. package/src/plugins/table/nodeviews/OverflowShadowsObserver.ts +189 -0
  517. package/src/plugins/table/nodeviews/TableComponent.tsx +693 -0
  518. package/src/plugins/table/nodeviews/__mocks__/OverflowShadowsObserver.ts +13 -0
  519. package/src/plugins/table/nodeviews/__mocks__/OverridableMock.ts +21 -0
  520. package/src/plugins/table/nodeviews/table.tsx +241 -0
  521. package/src/plugins/table/nodeviews/tableCell.tsx +110 -0
  522. package/src/plugins/table/nodeviews/types.ts +29 -0
  523. package/src/plugins/table/nodeviews/update-overflow-shadows.ts +72 -0
  524. package/src/plugins/table/pm-plugins/decorations/plugin.ts +74 -0
  525. package/src/plugins/table/pm-plugins/decorations/utils/column-controls.ts +89 -0
  526. package/src/plugins/table/pm-plugins/decorations/utils/column-resizing.ts +46 -0
  527. package/src/plugins/table/pm-plugins/decorations/utils/compose-decorations.ts +11 -0
  528. package/src/plugins/table/pm-plugins/decorations/utils/index.ts +6 -0
  529. package/src/plugins/table/pm-plugins/decorations/utils/types.ts +10 -0
  530. package/src/plugins/table/pm-plugins/default-table-selection.ts +5 -0
  531. package/src/plugins/table/pm-plugins/keymap.ts +108 -0
  532. package/src/plugins/table/pm-plugins/main.ts +399 -0
  533. package/src/plugins/table/pm-plugins/plugin-factory.ts +43 -0
  534. package/src/plugins/table/pm-plugins/plugin-key.ts +4 -0
  535. package/src/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.ts +78 -0
  536. package/src/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.ts +118 -0
  537. package/src/plugins/table/pm-plugins/sticky-headers/commands.ts +12 -0
  538. package/src/plugins/table/pm-plugins/sticky-headers/index.ts +7 -0
  539. package/src/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.ts +37 -0
  540. package/src/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.ts +658 -0
  541. package/src/plugins/table/pm-plugins/sticky-headers/plugin-key.ts +6 -0
  542. package/src/plugins/table/pm-plugins/sticky-headers/plugin-state.ts +55 -0
  543. package/src/plugins/table/pm-plugins/sticky-headers/plugin.ts +36 -0
  544. package/src/plugins/table/pm-plugins/sticky-headers/types.ts +20 -0
  545. package/src/plugins/table/pm-plugins/sticky-headers/util.ts +18 -0
  546. package/src/plugins/table/pm-plugins/table-local-id.ts +203 -0
  547. package/src/plugins/table/pm-plugins/table-resizing/commands.ts +168 -0
  548. package/src/plugins/table/pm-plugins/table-resizing/event-handlers.ts +218 -0
  549. package/src/plugins/table/pm-plugins/table-resizing/index.ts +3 -0
  550. package/src/plugins/table/pm-plugins/table-resizing/plugin-factory.ts +28 -0
  551. package/src/plugins/table/pm-plugins/table-resizing/plugin-key.ts +6 -0
  552. package/src/plugins/table/pm-plugins/table-resizing/plugin.ts +79 -0
  553. package/src/plugins/table/pm-plugins/table-resizing/reducer.ts +40 -0
  554. package/src/plugins/table/pm-plugins/table-resizing/utils/colgroup.ts +58 -0
  555. package/src/plugins/table/pm-plugins/table-resizing/utils/column-state.ts +122 -0
  556. package/src/plugins/table/pm-plugins/table-resizing/utils/content-width.ts +130 -0
  557. package/src/plugins/table/pm-plugins/table-resizing/utils/dom.ts +176 -0
  558. package/src/plugins/table/pm-plugins/table-resizing/utils/index.ts +37 -0
  559. package/src/plugins/table/pm-plugins/table-resizing/utils/misc.ts +136 -0
  560. package/src/plugins/table/pm-plugins/table-resizing/utils/resize-column.ts +23 -0
  561. package/src/plugins/table/pm-plugins/table-resizing/utils/resize-logic.ts +275 -0
  562. package/src/plugins/table/pm-plugins/table-resizing/utils/resize-state.ts +348 -0
  563. package/src/plugins/table/pm-plugins/table-resizing/utils/scale-table.ts +142 -0
  564. package/src/plugins/table/pm-plugins/table-resizing/utils/types.ts +23 -0
  565. package/src/plugins/table/pm-plugins/table-resizing/utils/unit-to-number.ts +2 -0
  566. package/src/plugins/table/pm-plugins/table-selection-keymap.ts +32 -0
  567. package/src/plugins/table/reducer.ts +106 -0
  568. package/src/plugins/table/todo-stubs.ts +1 -0
  569. package/src/plugins/table/toolbar.ts +401 -0
  570. package/src/plugins/table/transforms/column-width.ts +187 -0
  571. package/src/plugins/table/transforms/delete-columns.ts +251 -0
  572. package/src/plugins/table/transforms/delete-rows.ts +150 -0
  573. package/src/plugins/table/transforms/fix-tables.ts +296 -0
  574. package/src/plugins/table/transforms/index.ts +7 -0
  575. package/src/plugins/table/transforms/merge.ts +312 -0
  576. package/src/plugins/table/transforms/metadata.ts +35 -0
  577. package/src/plugins/table/transforms/replace-table.ts +48 -0
  578. package/src/plugins/table/transforms/split.ts +99 -0
  579. package/src/plugins/table/types.ts +345 -0
  580. package/src/plugins/table/ui/FloatingContextualButton/index.tsx +196 -0
  581. package/src/plugins/table/ui/FloatingContextualButton/styles.ts +29 -0
  582. package/src/plugins/table/ui/FloatingContextualMenu/ContextualMenu.tsx +524 -0
  583. package/src/plugins/table/ui/FloatingContextualMenu/__tests__/ContextualMenu.tsx +55 -0
  584. package/src/plugins/table/ui/FloatingContextualMenu/__tests__/FloatingContextualMenu.tsx +49 -0
  585. package/src/plugins/table/ui/FloatingContextualMenu/index.tsx +131 -0
  586. package/src/plugins/table/ui/FloatingContextualMenu/styles.ts +53 -0
  587. package/src/plugins/table/ui/FloatingDeleteButton/DeleteButton.tsx +49 -0
  588. package/src/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.ts +75 -0
  589. package/src/plugins/table/ui/FloatingDeleteButton/index.tsx +384 -0
  590. package/src/plugins/table/ui/FloatingDeleteButton/types.ts +1 -0
  591. package/src/plugins/table/ui/FloatingInsertButton/InsertButton.tsx +132 -0
  592. package/src/plugins/table/ui/FloatingInsertButton/getPopupOptions.ts +122 -0
  593. package/src/plugins/table/ui/FloatingInsertButton/index.tsx +268 -0
  594. package/src/plugins/table/ui/LayoutButton/index.tsx +220 -0
  595. package/src/plugins/table/ui/TableFloatingControls/CornerControls/index.tsx +105 -0
  596. package/src/plugins/table/ui/TableFloatingControls/NumberColumn/index.tsx +108 -0
  597. package/src/plugins/table/ui/TableFloatingControls/RowControls/index.tsx +119 -0
  598. package/src/plugins/table/ui/TableFloatingControls/index.tsx +202 -0
  599. package/src/plugins/table/ui/common-styles.ts +726 -0
  600. package/src/plugins/table/ui/consts.ts +100 -0
  601. package/src/plugins/table/ui/messages.ts +43 -0
  602. package/src/plugins/table/ui/ui-styles.ts +459 -0
  603. package/src/plugins/table/utils/analytics.ts +81 -0
  604. package/src/plugins/table/utils/collapse.ts +99 -0
  605. package/src/plugins/table/utils/column-controls.ts +225 -0
  606. package/src/plugins/table/utils/decoration.ts +456 -0
  607. package/src/plugins/table/utils/dom.ts +211 -0
  608. package/src/plugins/table/utils/get-allow-add-column-custom-step.ts +11 -0
  609. package/src/plugins/table/utils/index.ts +69 -0
  610. package/src/plugins/table/utils/nodes.ts +140 -0
  611. package/src/plugins/table/utils/paste.ts +164 -0
  612. package/src/plugins/table/utils/referentiality.ts +24 -0
  613. package/src/plugins/table/utils/row-controls.ts +238 -0
  614. package/src/plugins/table/utils/selection.ts +107 -0
  615. package/src/plugins/table/utils/table.ts +31 -0
  616. package/src/plugins/table/utils/update-plugin-state-decorations.ts +14 -0
  617. package/src/plugins/table-plugin.ts +1 -38
@@ -0,0 +1,366 @@
1
+ import { TableMap } from '@atlaskit/editor-tables/table-map';
2
+ import { findTable, getCellsInRow, getSelectionRect } from '@atlaskit/editor-tables/utils';
3
+ import { Decoration } from 'prosemirror-view';
4
+ // import { nonNullable } from '@atlaskit/editor-core/src/utils';
5
+ import { nonNullable } from '@atlaskit/editor-common/utils';
6
+ import { TableCssClassName as ClassName, TableDecorations } from '../types';
7
+
8
+ var filterDecorationByKey = function filterDecorationByKey(key, decorationSet) {
9
+ return decorationSet.find(undefined, undefined, function (spec) {
10
+ return spec.key.indexOf(key) > -1;
11
+ });
12
+ };
13
+
14
+ export var findColumnControlSelectedDecoration = function findColumnControlSelectedDecoration(decorationSet) {
15
+ return filterDecorationByKey(TableDecorations.COLUMN_SELECTED, decorationSet);
16
+ };
17
+ export var findControlsHoverDecoration = function findControlsHoverDecoration(decorationSet) {
18
+ return filterDecorationByKey(TableDecorations.ALL_CONTROLS_HOVER, decorationSet);
19
+ };
20
+ export var createCellHoverDecoration = function createCellHoverDecoration(cells, type) {
21
+ return cells.map(function (cell) {
22
+ return Decoration.node(cell.pos, cell.pos + cell.node.nodeSize, {
23
+ class: ClassName.HOVERED_CELL_WARNING
24
+ }, {
25
+ key: TableDecorations.CELL_CONTROLS_HOVER
26
+ });
27
+ });
28
+ };
29
+ export var createControlsHoverDecoration = function createControlsHoverDecoration(cells, type, danger, selected) {
30
+ return cells.map(function (cell) {
31
+ var classes = [ClassName.HOVERED_CELL];
32
+
33
+ if (danger) {
34
+ classes.push(ClassName.HOVERED_CELL_IN_DANGER);
35
+ }
36
+
37
+ if (selected) {
38
+ classes.push(ClassName.SELECTED_CELL);
39
+ }
40
+
41
+ classes.push(type === 'column' ? ClassName.HOVERED_COLUMN : type === 'row' ? ClassName.HOVERED_ROW : ClassName.HOVERED_TABLE);
42
+ var key;
43
+
44
+ switch (type) {
45
+ case 'row':
46
+ key = TableDecorations.ROW_CONTROLS_HOVER;
47
+ break;
48
+
49
+ case 'column':
50
+ key = TableDecorations.COLUMN_CONTROLS_HOVER;
51
+ break;
52
+
53
+ default:
54
+ key = TableDecorations.TABLE_CONTROLS_HOVER;
55
+ break;
56
+ }
57
+
58
+ return Decoration.node(cell.pos, cell.pos + cell.node.nodeSize, {
59
+ class: classes.join(' ')
60
+ }, {
61
+ key: key
62
+ });
63
+ });
64
+ };
65
+ export var createColumnSelectedDecoration = function createColumnSelectedDecoration(tr) {
66
+ var selection = tr.selection,
67
+ doc = tr.doc;
68
+ var table = findTable(selection);
69
+ var rect = getSelectionRect(selection);
70
+
71
+ if (!table || !rect) {
72
+ return [];
73
+ }
74
+
75
+ var map = TableMap.get(table.node);
76
+ var cellPositions = map.cellsInRect(rect);
77
+ return cellPositions.map(function (pos, index) {
78
+ var cell = doc.nodeAt(pos + table.start);
79
+ return Decoration.node(pos + table.start, pos + table.start + cell.nodeSize, {
80
+ class: ClassName.COLUMN_SELECTED
81
+ }, {
82
+ key: "".concat(TableDecorations.COLUMN_SELECTED, "_").concat(index)
83
+ });
84
+ });
85
+ };
86
+ export var createColumnControlsDecoration = function createColumnControlsDecoration(selection) {
87
+ var cells = getCellsInRow(0)(selection) || [];
88
+ var index = 0;
89
+ return cells.map(function (cell) {
90
+ var colspan = cell.node.attrs.colspan || 1;
91
+ var element = document.createElement('div');
92
+ element.classList.add(ClassName.COLUMN_CONTROLS_DECORATIONS);
93
+ element.dataset.startIndex = "".concat(index);
94
+ index += colspan;
95
+ element.dataset.endIndex = "".concat(index);
96
+ return Decoration.widget(cell.pos + 1, function () {
97
+ return element;
98
+ }, {
99
+ key: "".concat(TableDecorations.COLUMN_CONTROLS_DECORATIONS, "_").concat(index),
100
+ // this decoration should be the first one, even before gap cursor.
101
+ side: -100
102
+ });
103
+ });
104
+ };
105
+ export var updateDecorations = function updateDecorations(node, decorationSet, decorations, key) {
106
+ var filteredDecorations = filterDecorationByKey(key, decorationSet);
107
+ var decorationSetFiltered = decorationSet.remove(filteredDecorations);
108
+ return decorationSetFiltered.add(node, decorations);
109
+ };
110
+
111
+ var makeArray = function makeArray(n) {
112
+ return Array.from(Array(n).keys());
113
+ };
114
+ /*
115
+ * This function will create two specific decorations for each cell in a column index target,
116
+ * for example given that table:
117
+ *
118
+ * ```
119
+ * 0 1 2 3
120
+ * _____________________ _______
121
+ * | | | |
122
+ * | B1 | C1 | A1 |
123
+ * |______|______ ______|______|
124
+ * | | | |
125
+ * | B2 | | A2 |
126
+ * |______ ______| |______|
127
+ * | | | D1 | |
128
+ * | B3 | C2 | | A3 |
129
+ * |______|______|______|______|
130
+ * ^ ^ ^ ^
131
+ * | | | |
132
+ * | | | |
133
+ * | | | |
134
+ * 0 1 3 4
135
+ * \ | | /
136
+ * \ | | /
137
+ * \ | | /
138
+ * \ | | /
139
+ * \ | | /
140
+ * columnEndIndexTarget === CellColumnPositioning.right
141
+ * ```
142
+ *
143
+ * When a user wants to resize a cell,
144
+ * they need to grab and hold the end of that column,
145
+ * and this will be the `columnEndIndexTarget` using
146
+ * the CellColumnPositioning interface.
147
+ *
148
+ * Let's say the `columnEndIndexTarget.right` is 3,
149
+ * so this function will return two types of decorations for each cell on that column,
150
+ * that means 2 `resizerHandle` and 2 `lastCellElement`,
151
+ * here is the explanation for each one of them :
152
+ *
153
+ * - resizerHandle:
154
+ *
155
+ * Given the cell C1, this decoration will add a div to create this area
156
+ * ```
157
+ * ▁▁▁▁▁▁▁▁▁▁▁▁▁
158
+ * | ▒▒|
159
+ * | C1 ▒▒|
160
+ * | ▒▒|
161
+ * ▔▔▔▔▔▔▔▔▔▔▔▔▔
162
+ * ```
163
+ * This ▒ represents the area where table resizing will start,
164
+ * and you can follow that using checking the class name `ClassName.RESIZE_HANDLE_DECORATION` on the code
165
+ *
166
+ * - lastCellElementDecoration
167
+ *
168
+ * Given the content of the cell C1
169
+ * ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
170
+ * | |
171
+ * | _____________ |
172
+ * | | | |
173
+ * | | <p> | |
174
+ * | |_____________| |
175
+ * | |
176
+ * | _____________ |
177
+ * | | | |
178
+ * | | <media> | |
179
+ * | |_____________| |
180
+ * | |
181
+ * | _____________ |
182
+ * | | | |
183
+ * | | <media> | |
184
+ * | |_____________| |
185
+ * | |
186
+ * ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
187
+ * Currently, we are removing the margin-bottom from the last media using this kind of CSS rule:
188
+ * `div:last-of-type`; This is quite unstable, and after we create the `resizerHandle` div,
189
+ * that logic will apply the margin in the wrong element, to avoid that,
190
+ * we will add a new class on the last item for each cell,
191
+ * hence the second media will receive this class `ClassName.LAST_ITEM_IN_CELL`
192
+ */
193
+
194
+
195
+ export var createResizeHandleDecoration = function createResizeHandleDecoration(tr, columnEndIndexTarget) {
196
+ var emptyResult = [[], []];
197
+ var table = findTable(tr.selection);
198
+
199
+ if (!table || !table.node) {
200
+ return emptyResult;
201
+ }
202
+
203
+ var map = TableMap.get(table.node);
204
+
205
+ if (!map.width) {
206
+ return emptyResult;
207
+ }
208
+
209
+ var createResizerHandleDecoration = function createResizerHandleDecoration(cellColumnPositioning, columnIndex, rowIndex, cellPos, cellNode) {
210
+ var element = document.createElement('div');
211
+ element.classList.add(ClassName.RESIZE_HANDLE_DECORATION);
212
+ element.dataset.startIndex = "".concat(cellColumnPositioning.left);
213
+ element.dataset.endIndex = "".concat(cellColumnPositioning.right);
214
+ var position = cellPos + cellNode.nodeSize - 1;
215
+ return Decoration.widget(position, element, {
216
+ key: "".concat(TableDecorations.COLUMN_RESIZING_HANDLE, "_").concat(rowIndex, "_").concat(columnIndex)
217
+ });
218
+ };
219
+
220
+ var createLastCellElementDecoration = function createLastCellElementDecoration(cellColumnPositioning, cellPos, cellNode) {
221
+ var lastItemPositions;
222
+ cellNode.forEach(function (childNode, offset, index) {
223
+ if (index === cellNode.childCount - 1) {
224
+ var from = offset + cellPos + 1;
225
+ lastItemPositions = {
226
+ from: from,
227
+ to: from + childNode.nodeSize
228
+ };
229
+ }
230
+ });
231
+
232
+ if (!lastItemPositions) {
233
+ return null;
234
+ }
235
+
236
+ return Decoration.node(lastItemPositions.from, lastItemPositions.to, {
237
+ class: ClassName.LAST_ITEM_IN_CELL
238
+ }, {
239
+ key: "".concat(TableDecorations.LAST_CELL_ELEMENT, "_").concat(cellColumnPositioning.left, "_").concat(cellColumnPositioning.right)
240
+ });
241
+ };
242
+
243
+ var resizeHandleCellDecorations = [];
244
+ var lastCellElementsDecorations = [];
245
+
246
+ for (var rowIndex = 0; rowIndex < map.height; rowIndex++) {
247
+ var seen = {};
248
+
249
+ for (var columnIndex = 0; columnIndex < map.width; columnIndex++) {
250
+ var cellPosition = map.map[map.width * rowIndex + columnIndex];
251
+
252
+ if (seen[cellPosition]) {
253
+ continue;
254
+ }
255
+
256
+ seen[cellPosition] = true;
257
+ var cellPos = table.start + cellPosition;
258
+ var cell = tr.doc.nodeAt(cellPos);
259
+
260
+ if (!cell) {
261
+ continue;
262
+ }
263
+
264
+ var colspan = cell.attrs.colspan || 1;
265
+ var startIndex = columnIndex;
266
+ var endIndex = colspan + startIndex;
267
+
268
+ if (endIndex !== columnEndIndexTarget.right) {
269
+ continue;
270
+ }
271
+
272
+ var resizerHandleDec = createResizerHandleDecoration({
273
+ left: startIndex,
274
+ right: endIndex
275
+ }, columnIndex, rowIndex, cellPos, cell);
276
+ var lastCellDec = createLastCellElementDecoration({
277
+ left: startIndex,
278
+ right: endIndex
279
+ }, cellPos, cell);
280
+ resizeHandleCellDecorations.push(resizerHandleDec);
281
+ lastCellElementsDecorations.push(lastCellDec);
282
+ }
283
+ }
284
+
285
+ return [resizeHandleCellDecorations, lastCellElementsDecorations.filter(nonNullable)];
286
+ };
287
+ /*
288
+ * This function will create a decoration for each cell using the right position on the CellColumnPositioning
289
+ * for example given that table:
290
+ *
291
+ * ```
292
+ * 0 1 2 3 <--- column indexes
293
+ * _____________________ _______
294
+ * | | | |
295
+ * | B1 | C1 | A1 |
296
+ * |______|______ ______|______|
297
+ * | | | |
298
+ * | B2 | D1 | A2 |
299
+ * |______ ______|______|______|
300
+ * | | | |
301
+ * | B3 | C2 | D2 |
302
+ * |______|______|_____________|
303
+ * ```
304
+ *
305
+ * and given the left and right represents the C1 cell:
306
+ *
307
+ * ```
308
+ * left right
309
+ * 1 3
310
+ * | |
311
+ * | |
312
+ * | |
313
+ * _______∨_____________∨_______
314
+ * | | | |
315
+ * | B1 | C1 | A1 |
316
+ * |______|______ ______|______|
317
+ * | | | |
318
+ * | B2 | D1 | A2 |
319
+ * |______ ______|______|______|
320
+ * | | | |
321
+ * | B3 | C2 | D2 |
322
+ * |______|______|_____________|
323
+ * ```
324
+ *
325
+ * Taking that table, and the right as parameters,
326
+ * this function will return two decorations applying a new class `ClassName.WITH_RESIZE_LINE`
327
+ * only on the cells: `C1` and `D1`.
328
+ */
329
+
330
+ export var createColumnLineResize = function createColumnLineResize(selection, cellColumnPositioning) {
331
+ var table = findTable(selection);
332
+
333
+ if (!table || cellColumnPositioning.right === null) {
334
+ return [];
335
+ }
336
+
337
+ var columnIndex = cellColumnPositioning.right - 1;
338
+ var map = TableMap.get(table.node);
339
+ var cellPositions = makeArray(map.height).map(function (rowIndex) {
340
+ return map.map[map.width * rowIndex + columnIndex];
341
+ }).filter(function (cellPosition, rowIndex) {
342
+ if (columnIndex === map.width) {
343
+ return true; // If is the last column no filter applied
344
+ }
345
+
346
+ var nextPosition = map.map[map.width * rowIndex + columnIndex + 1];
347
+ return cellPosition !== nextPosition; // Removed it if next position is merged
348
+ });
349
+ var cells = cellPositions.map(function (pos) {
350
+ return {
351
+ pos: pos + table.start,
352
+ node: table.node.nodeAt(pos)
353
+ };
354
+ });
355
+ return cells.map(function (cell, index) {
356
+ if (!cell || !cell.node) {
357
+ return;
358
+ }
359
+
360
+ return Decoration.node(cell.pos, cell.pos + cell.node.nodeSize, {
361
+ class: ClassName.WITH_RESIZE_LINE
362
+ }, {
363
+ key: "".concat(TableDecorations.COLUMN_RESIZING_HANDLE_LINE, "_").concat(cellColumnPositioning.right, "_").concat(index)
364
+ });
365
+ }).filter(nonNullable);
366
+ };
@@ -0,0 +1,175 @@
1
+ // import { containsClassName } from '@atlaskit/editor-core/src/utils';
2
+ // import { closestElement } from '@atlaskit/editor-core/src/utils/dom';
3
+ import { closestElement, containsClassName } from '@atlaskit/editor-common/utils';
4
+ import { TableCssClassName as ClassName } from '../types';
5
+ import { tableToolbarSize } from '../ui/consts';
6
+ var SELECTOR_TABLE_LEAFS = ".".concat(ClassName.TABLE_CELL, ", .").concat(ClassName.TABLE_HEADER_CELL);
7
+ export var isCell = function isCell(node) {
8
+ return Boolean(node && (['TH', 'TD'].indexOf(node.tagName) > -1 || !!closestElement(node, ".".concat(ClassName.TABLE_HEADER_CELL)) || !!closestElement(node, ".".concat(ClassName.TABLE_CELL))));
9
+ };
10
+ export var isCornerButton = function isCornerButton(node) {
11
+ return containsClassName(node, ClassName.CONTROLS_CORNER_BUTTON);
12
+ };
13
+ export var isInsertRowButton = function isInsertRowButton(node) {
14
+ return containsClassName(node, ClassName.CONTROLS_INSERT_ROW) || closestElement(node, ".".concat(ClassName.CONTROLS_INSERT_ROW)) || containsClassName(node, ClassName.CONTROLS_BUTTON_OVERLAY) && closestElement(node, ".".concat(ClassName.ROW_CONTROLS));
15
+ };
16
+ export var getColumnOrRowIndex = function getColumnOrRowIndex(target) {
17
+ return [parseInt(target.getAttribute('data-start-index') || '-1', 10), parseInt(target.getAttribute('data-end-index') || '-1', 10)];
18
+ };
19
+ export var isColumnControlsDecorations = function isColumnControlsDecorations(node) {
20
+ return containsClassName(node, ClassName.COLUMN_CONTROLS_DECORATIONS);
21
+ };
22
+ export var isRowControlsButton = function isRowControlsButton(node) {
23
+ return containsClassName(node, ClassName.ROW_CONTROLS_BUTTON) || containsClassName(node, ClassName.NUMBERED_COLUMN_BUTTON);
24
+ };
25
+ export var isResizeHandleDecoration = function isResizeHandleDecoration(node) {
26
+ return containsClassName(node, ClassName.RESIZE_HANDLE_DECORATION);
27
+ };
28
+ export var isTableControlsButton = function isTableControlsButton(node) {
29
+ return containsClassName(node, ClassName.CONTROLS_BUTTON) || containsClassName(node, ClassName.ROW_CONTROLS_BUTTON_WRAP);
30
+ };
31
+ export var isTableContainerOrWrapper = function isTableContainerOrWrapper(node) {
32
+ return containsClassName(node, ClassName.TABLE_CONTAINER) || containsClassName(node, ClassName.TABLE_NODE_WRAPPER);
33
+ };
34
+ /*
35
+ * This function returns which side of a given element the mouse cursor is,
36
+ * using as a base the half of the width by default, for example:
37
+ *
38
+ * legend
39
+ * ⌖ = mouse pointer
40
+ * ▒ = gap
41
+ *
42
+ * given this box:
43
+ * ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
44
+ * ┃ ┊ ┃
45
+ * ┃ left ┊ right ┃
46
+ * ┃ ┊ ┃
47
+ * ┗━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━┛
48
+ *
49
+ * if the mouse is on the left, it will return `left`,
50
+ * if it is on the right it will return `right`.
51
+ *
52
+ * You can extend this behavior using the parameter `gapInPixels`
53
+ * to determinate if the mouse is inside of a gap for each side,
54
+ * for example:
55
+ *
56
+ * given `gapInPixels` is `5`
57
+ * and given this box:
58
+ * ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
59
+ * ┃▒▒▒▒▒ ┊ ▒▒▒▒▒┃
60
+ * ┃▒▒▒▒▒ left ┊ right ▒▒▒▒▒┃
61
+ * ┃▒▒▒▒▒ ┊ ▒▒▒▒▒┃
62
+ * ┗━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━┛
63
+ *
64
+ * if the mouse cursor is inside of the gap like that:
65
+ *
66
+ * ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
67
+ * ┃▒▒▒▒▒ ┊ ▒▒▒▒▒┃
68
+ * ┃▒▒⌖▒▒ left ┊ right ▒▒▒▒▒┃
69
+ * ┃▒▒▒▒▒ ┊ ▒▒▒▒▒┃
70
+ * ┗━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━┛
71
+ *
72
+ * the function will return `left` because the mouse is inside of the gap on the left side.
73
+ *
74
+ * if the mouse cursor is outside of the gap like that:
75
+ *
76
+ * ┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┓
77
+ * ┃▒▒▒▒▒ ┊ ▒▒▒▒▒┃
78
+ * ┃▒▒▒▒▒ left ⌖ ┊ right ▒▒▒▒▒┃
79
+ * ┃▒▒▒▒▒ ┊ ▒▒▒▒▒┃
80
+ * ┗━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━┛
81
+ *
82
+ * the function will return `null` because the mouse is inside of left
83
+ * but is outside of the gap.
84
+ *
85
+ * the same is valid to the right side.
86
+ */
87
+
88
+ export var getMousePositionHorizontalRelativeByElement = function getMousePositionHorizontalRelativeByElement(mouseEvent, mouseMoveOptimization, elementContentRects, gapInPixels) {
89
+ var element = mouseEvent.target;
90
+
91
+ if (element instanceof HTMLElement) {
92
+ var width, x;
93
+ var closestCell = element.closest(SELECTOR_TABLE_LEAFS);
94
+
95
+ if (mouseMoveOptimization) {
96
+ var _closestCell$id, _elementContentRects$, _elementContentRects$2;
97
+
98
+ var id = (_closestCell$id = closestCell === null || closestCell === void 0 ? void 0 : closestCell.id) !== null && _closestCell$id !== void 0 ? _closestCell$id : '';
99
+ width = (_elementContentRects$ = elementContentRects === null || elementContentRects === void 0 ? void 0 : (_elementContentRects$2 = elementContentRects[id]) === null || _elementContentRects$2 === void 0 ? void 0 : _elementContentRects$2.width) !== null && _elementContentRects$ !== void 0 ? _elementContentRects$ : 0;
100
+ x = mouseEvent.offsetX;
101
+ } else {
102
+ var elementRect = element.getBoundingClientRect();
103
+ width = elementRect.width;
104
+ var left = elementRect.left;
105
+ x = mouseEvent.clientX - left;
106
+ }
107
+
108
+ if (width <= 0) {
109
+ return null;
110
+ }
111
+
112
+ if (!gapInPixels) {
113
+ return x / width > 0.5 ? 'right' : 'left';
114
+ } else {
115
+ if (x <= gapInPixels) {
116
+ return 'left';
117
+ } else if (x >= width - gapInPixels) {
118
+ return 'right';
119
+ }
120
+ }
121
+ }
122
+
123
+ return null;
124
+ };
125
+ export var getMousePositionVerticalRelativeByElement = function getMousePositionVerticalRelativeByElement(mouseEvent) {
126
+ var element = mouseEvent.target;
127
+
128
+ if (element instanceof HTMLElement) {
129
+ var elementRect = element.getBoundingClientRect();
130
+
131
+ if (elementRect.height <= 0) {
132
+ return null;
133
+ }
134
+
135
+ var y = mouseEvent.clientY - elementRect.top;
136
+ return y / elementRect.height > 0.5 ? 'bottom' : 'top';
137
+ }
138
+
139
+ return null;
140
+ };
141
+ export var updateResizeHandles = function updateResizeHandles(tableRef) {
142
+ if (!tableRef) {
143
+ return;
144
+ }
145
+
146
+ var height = tableRef.offsetHeight + tableToolbarSize; // see ED-7600
147
+
148
+ var nodes = Array.from(tableRef.querySelectorAll(".".concat(ClassName.RESIZE_HANDLE)));
149
+
150
+ if (!nodes || !nodes.length) {
151
+ return;
152
+ }
153
+
154
+ nodes.forEach(function (node) {
155
+ node.style.height = "".concat(height, "px");
156
+ });
157
+ };
158
+ export var hasResizeHandler = function hasResizeHandler(_ref) {
159
+ var columnEndIndexTarget = _ref.columnEndIndexTarget,
160
+ target = _ref.target;
161
+ var tableElement = closestElement(target, 'table');
162
+
163
+ if (!tableElement) {
164
+ return false;
165
+ }
166
+
167
+ var query = [".".concat(ClassName.RESIZE_HANDLE_DECORATION), "[data-end-index=\"".concat(columnEndIndexTarget, "\"]")];
168
+ var decorationElement = tableElement.querySelectorAll(query.join(''));
169
+
170
+ if (!decorationElement || decorationElement.length === 0) {
171
+ return false;
172
+ }
173
+
174
+ return true;
175
+ };
@@ -0,0 +1,5 @@
1
+ import { getPluginState } from '../pm-plugins/plugin-factory';
2
+ export function getAllowAddColumnCustomStep(state) {
3
+ var tablePluginState = getPluginState(state);
4
+ return Boolean(tablePluginState) && Boolean(tablePluginState.pluginConfig.allowAddColumnWithCustomStep);
5
+ }
@@ -0,0 +1,10 @@
1
+ export { getSelectedColumnIndexes, getSelectedRowIndexes, normalizeSelection, isSelectionUpdated } from './selection';
2
+ export { findControlsHoverDecoration, createControlsHoverDecoration, createColumnControlsDecoration, createColumnSelectedDecoration, createCellHoverDecoration, updateDecorations, createResizeHandleDecoration, createColumnLineResize } from './decoration';
3
+ export { isIsolating, containsHeaderColumn, containsHeaderRow, checkIfHeaderColumnEnabled, checkIfHeaderRowEnabled, checkIfNumberColumnEnabled, isLayoutSupported, getTableWidth, tablesHaveDifferentColumnWidths, tablesHaveDifferentNoOfColumns } from './nodes';
4
+ export { unwrapContentFromTable, removeTableFromFirstChild, removeTableFromLastChild, transformSliceToRemoveOpenTable, transformSliceToCorrectEmptyTableCells, transformSliceToFixHardBreakProblemOnCopyFromCell } from './paste';
5
+ export { isCell, isCornerButton, isInsertRowButton, isColumnControlsDecorations, isTableControlsButton, isTableContainerOrWrapper, isRowControlsButton, getColumnOrRowIndex, getMousePositionHorizontalRelativeByElement, getMousePositionVerticalRelativeByElement, updateResizeHandles, isResizeHandleDecoration, hasResizeHandler } from './dom';
6
+ export { getColumnsWidths, isColumnDeleteButtonVisible, getColumnDeleteButtonParams, getColumnClassNames } from './column-controls';
7
+ export { getRowHeights, isRowDeleteButtonVisible, getRowDeleteButtonParams, getRowsParams, getRowClassNames, copyPreviousRow } from './row-controls';
8
+ export { getSelectedTableInfo, getSelectedCellInfo } from './analytics';
9
+ export { getMergedCellsPositions } from './table';
10
+ export { updatePluginStateDecorations } from './update-plugin-state-decorations';
@@ -0,0 +1,112 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import { TableMap } from '@atlaskit/editor-tables/table-map';
3
+ import { hasParentNodeOfType } from 'prosemirror-utils';
4
+ import { findTable } from '@atlaskit/editor-tables/utils';
5
+ import { pluginKey } from '../pm-plugins/plugin-key';
6
+ export var isIsolating = function isIsolating(node) {
7
+ return !!node.type.spec.isolating;
8
+ };
9
+ export var containsHeaderColumn = function containsHeaderColumn(table) {
10
+ var map = TableMap.get(table); // Get cell positions for first column.
11
+
12
+ var cellPositions = map.cellsInRect({
13
+ left: 0,
14
+ top: 0,
15
+ right: 1,
16
+ bottom: map.height
17
+ });
18
+
19
+ for (var i = 0; i < cellPositions.length; i++) {
20
+ try {
21
+ var cell = table.nodeAt(cellPositions[i]);
22
+
23
+ if (cell && cell.type !== table.type.schema.nodes.tableHeader) {
24
+ return false;
25
+ }
26
+ } catch (e) {
27
+ return false;
28
+ }
29
+ }
30
+
31
+ return true;
32
+ };
33
+ export var containsHeaderRow = function containsHeaderRow(table) {
34
+ var map = TableMap.get(table);
35
+
36
+ for (var i = 0; i < map.width; i++) {
37
+ var cell = table.nodeAt(map.map[i]);
38
+
39
+ if (cell && cell.type !== table.type.schema.nodes.tableHeader) {
40
+ return false;
41
+ }
42
+ }
43
+
44
+ return true;
45
+ };
46
+ export var checkIfHeaderColumnEnabled = function checkIfHeaderColumnEnabled(selection) {
47
+ return filterNearSelection(selection, findTable, containsHeaderColumn, false);
48
+ };
49
+ export var checkIfHeaderRowEnabled = function checkIfHeaderRowEnabled(selection) {
50
+ return filterNearSelection(selection, findTable, containsHeaderRow, false);
51
+ };
52
+ export var checkIfNumberColumnEnabled = function checkIfNumberColumnEnabled(selection) {
53
+ return filterNearSelection(selection, findTable, function (table) {
54
+ return !!table.attrs.isNumberColumnEnabled;
55
+ }, false);
56
+ };
57
+ export var isLayoutSupported = function isLayoutSupported(state) {
58
+ var permittedLayouts = pluginKey.getState(state).pluginConfig.permittedLayouts;
59
+ var _state$schema$nodes = state.schema.nodes,
60
+ bodiedExtension = _state$schema$nodes.bodiedExtension,
61
+ layoutSection = _state$schema$nodes.layoutSection,
62
+ expand = _state$schema$nodes.expand;
63
+ return !hasParentNodeOfType([expand, layoutSection, bodiedExtension])(state.selection) && permittedLayouts && (permittedLayouts === 'all' || permittedLayouts.indexOf('default') > -1 && permittedLayouts.indexOf('wide') > -1 && permittedLayouts.indexOf('full-page') > -1);
64
+ };
65
+ export var getTableWidth = function getTableWidth(node) {
66
+ return getTableWidths(node).reduce(function (acc, current) {
67
+ return acc + current;
68
+ }, 0);
69
+ };
70
+ export var tablesHaveDifferentColumnWidths = function tablesHaveDifferentColumnWidths(currentTable, previousTable) {
71
+ var currentTableWidths = getTableWidths(currentTable);
72
+ var previousTableWidths = getTableWidths(previousTable);
73
+
74
+ if (currentTableWidths.length !== previousTableWidths.length) {
75
+ return true;
76
+ }
77
+
78
+ var sameWidths = currentTableWidths.every(function (value, index) {
79
+ return value === previousTableWidths[index];
80
+ });
81
+ return sameWidths === false;
82
+ };
83
+ export var tablesHaveDifferentNoOfColumns = function tablesHaveDifferentNoOfColumns(currentTable, previousTable) {
84
+ var prevMap = TableMap.get(previousTable);
85
+ var currentMap = TableMap.get(currentTable);
86
+ return prevMap.width !== currentMap.width;
87
+ };
88
+
89
+ function filterNearSelection(selection, findNode, predicate, defaultValue) {
90
+ var found = findNode(selection);
91
+
92
+ if (!found) {
93
+ return defaultValue;
94
+ }
95
+
96
+ return predicate(found.node, found.pos);
97
+ }
98
+
99
+ function getTableWidths(node) {
100
+ if (!node.content.firstChild) {
101
+ return [];
102
+ }
103
+
104
+ var tableWidths = [];
105
+ node.content.firstChild.content.forEach(function (cell) {
106
+ if (Array.isArray(cell.attrs.colwidth)) {
107
+ var colspan = cell.attrs.colspan || 1;
108
+ tableWidths.push.apply(tableWidths, _toConsumableArray(cell.attrs.colwidth.slice(0, colspan)));
109
+ }
110
+ });
111
+ return tableWidths;
112
+ }