@pie-lib/editable-html-tip-tap 2.2.0-beta.7 → 3.0.0-next.35

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 (374) hide show
  1. package/dist/components/CharacterPicker.d.ts +31 -0
  2. package/dist/components/CharacterPicker.js +141 -0
  3. package/dist/components/EditableHtml.d.ts +11 -0
  4. package/dist/components/EditableHtml.js +330 -0
  5. package/dist/components/MenuBar.d.ts +11 -0
  6. package/dist/components/MenuBar.js +528 -0
  7. package/dist/components/TiptapContainer.d.ts +11 -0
  8. package/dist/components/TiptapContainer.js +167 -0
  9. package/dist/components/characters/characterUtils.d.ts +35 -0
  10. package/dist/components/characters/characterUtils.js +465 -0
  11. package/dist/components/characters/custom-popper.d.ts +14 -0
  12. package/dist/components/characters/custom-popper.js +32 -0
  13. package/dist/components/common/done-button.d.ts +30 -0
  14. package/dist/components/common/done-button.js +26 -0
  15. package/dist/components/common/toolbar-buttons.d.ts +38 -0
  16. package/dist/components/common/toolbar-buttons.js +96 -0
  17. package/dist/components/icons/CssIcon.d.ts +11 -0
  18. package/dist/components/icons/CssIcon.js +14 -0
  19. package/dist/components/icons/RespArea.d.ts +26 -0
  20. package/dist/components/icons/RespArea.js +42 -0
  21. package/dist/components/icons/TableIcons.d.ts +14 -0
  22. package/dist/components/icons/TableIcons.js +34 -0
  23. package/dist/components/icons/TextAlign.d.ts +18 -0
  24. package/dist/components/icons/TextAlign.js +143 -0
  25. package/dist/components/image/AltDialog.d.ts +22 -0
  26. package/dist/components/image/AltDialog.js +61 -0
  27. package/dist/components/image/ImageToolbar.d.ts +24 -0
  28. package/dist/components/image/ImageToolbar.js +80 -0
  29. package/dist/components/image/InsertImageHandler.d.ts +32 -0
  30. package/dist/components/image/InsertImageHandler.js +53 -0
  31. package/dist/components/media/MediaDialog.d.ts +43 -0
  32. package/dist/components/media/MediaDialog.js +389 -0
  33. package/dist/components/media/MediaToolbar.d.ts +19 -0
  34. package/dist/components/media/MediaToolbar.js +41 -0
  35. package/dist/components/media/MediaWrapper.d.ts +19 -0
  36. package/dist/components/respArea/DragInTheBlank/DragInTheBlank.d.ts +23 -0
  37. package/dist/components/respArea/DragInTheBlank/DragInTheBlank.js +58 -0
  38. package/dist/components/respArea/DragInTheBlank/choice.d.ts +56 -0
  39. package/dist/components/respArea/DragInTheBlank/choice.js +157 -0
  40. package/dist/components/respArea/ExplicitConstructedResponse.d.ts +20 -0
  41. package/dist/components/respArea/ExplicitConstructedResponse.js +84 -0
  42. package/dist/components/respArea/InlineDropdown.d.ts +18 -0
  43. package/dist/components/respArea/InlineDropdown.js +126 -0
  44. package/dist/components/respArea/MathTemplated.d.ts +19 -0
  45. package/dist/components/respArea/MathTemplated.js +98 -0
  46. package/dist/components/respArea/ToolbarIcon.d.ts +14 -0
  47. package/dist/components/respArea/ToolbarIcon.js +17 -0
  48. package/dist/components/respArea/inlineDropdownUtils.d.ts +15 -0
  49. package/dist/components/respArea/inlineDropdownUtils.js +15 -0
  50. package/dist/constants.d.ts +13 -0
  51. package/dist/constants.js +4 -0
  52. package/dist/extensions/css.d.ts +11 -0
  53. package/dist/extensions/css.js +120 -0
  54. package/dist/extensions/custom-toolbar-wrapper.d.ts +11 -0
  55. package/dist/extensions/custom-toolbar-wrapper.js +61 -0
  56. package/dist/extensions/div-node.d.ts +10 -0
  57. package/dist/extensions/div-node.js +42 -0
  58. package/dist/extensions/ensure-empty-root-div.d.ts +14 -0
  59. package/dist/extensions/ensure-empty-root-div.js +24 -0
  60. package/dist/extensions/ensure-list-item-content-is-div.d.ts +15 -0
  61. package/dist/extensions/ensure-list-item-content-is-div.js +31 -0
  62. package/dist/extensions/extended-list-item.d.ts +13 -0
  63. package/dist/extensions/extended-list-item.js +5 -0
  64. package/dist/extensions/extended-table-cell.d.ts +10 -0
  65. package/dist/extensions/extended-table-cell.js +6 -0
  66. package/dist/extensions/extended-table.d.ts +17 -0
  67. package/dist/extensions/extended-table.js +34 -0
  68. package/dist/extensions/heading-paragraph.d.ts +17 -0
  69. package/dist/extensions/heading-paragraph.js +30 -0
  70. package/dist/extensions/image-component.d.ts +22 -0
  71. package/dist/extensions/image-component.js +225 -0
  72. package/dist/extensions/image.d.ts +10 -0
  73. package/dist/extensions/image.js +68 -0
  74. package/dist/extensions/index.d.ts +16 -0
  75. package/dist/extensions/index.js +64 -0
  76. package/dist/extensions/math.d.ts +15 -0
  77. package/dist/extensions/math.js +213 -0
  78. package/dist/extensions/media.d.ts +19 -0
  79. package/dist/extensions/media.js +149 -0
  80. package/dist/extensions/responseArea.d.ts +27 -0
  81. package/dist/extensions/responseArea.js +255 -0
  82. package/dist/index.d.ts +13 -0
  83. package/dist/index.js +7 -0
  84. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +16 -0
  85. package/dist/styles/editorContainerStyles.d.ts +134 -0
  86. package/dist/theme.d.ts +9 -0
  87. package/dist/utils/helper.d.ts +9 -0
  88. package/dist/utils/helper.js +27 -0
  89. package/dist/utils/size.d.ts +9 -0
  90. package/dist/utils/size.js +14 -0
  91. package/dist/utils/toolbar.d.ts +10 -0
  92. package/dist/utils/toolbar.js +7 -0
  93. package/package.json +43 -29
  94. package/CHANGELOG.json +0 -32
  95. package/CHANGELOG.md +0 -2532
  96. package/lib/__tests__/EditableHtml.test.js +0 -831
  97. package/lib/__tests__/EditableHtml.test.js.map +0 -1
  98. package/lib/__tests__/constants.test.js +0 -21
  99. package/lib/__tests__/constants.test.js.map +0 -1
  100. package/lib/__tests__/div-to-paragraph-conversion.test.js +0 -213
  101. package/lib/__tests__/div-to-paragraph-conversion.test.js.map +0 -1
  102. package/lib/__tests__/extensions.test.js +0 -209
  103. package/lib/__tests__/extensions.test.js.map +0 -1
  104. package/lib/__tests__/index.test.js +0 -250
  105. package/lib/__tests__/index.test.js.map +0 -1
  106. package/lib/__tests__/size-utils.test.js +0 -57
  107. package/lib/__tests__/size-utils.test.js.map +0 -1
  108. package/lib/__tests__/theme.test.js +0 -17
  109. package/lib/__tests__/theme.test.js.map +0 -1
  110. package/lib/components/CharacterPicker.js +0 -226
  111. package/lib/components/CharacterPicker.js.map +0 -1
  112. package/lib/components/EditableHtml.js +0 -388
  113. package/lib/components/EditableHtml.js.map +0 -1
  114. package/lib/components/MenuBar.js +0 -702
  115. package/lib/components/MenuBar.js.map +0 -1
  116. package/lib/components/TiptapContainer.js +0 -242
  117. package/lib/components/TiptapContainer.js.map +0 -1
  118. package/lib/components/__tests__/AltDialog.test.js +0 -201
  119. package/lib/components/__tests__/AltDialog.test.js.map +0 -1
  120. package/lib/components/__tests__/CharacterPicker.test.js +0 -455
  121. package/lib/components/__tests__/CharacterPicker.test.js.map +0 -1
  122. package/lib/components/__tests__/CssIcon.test.js +0 -58
  123. package/lib/components/__tests__/CssIcon.test.js.map +0 -1
  124. package/lib/components/__tests__/DragInTheBlank.test.js +0 -295
  125. package/lib/components/__tests__/DragInTheBlank.test.js.map +0 -1
  126. package/lib/components/__tests__/ExplicitConstructedResponse.test.js +0 -345
  127. package/lib/components/__tests__/ExplicitConstructedResponse.test.js.map +0 -1
  128. package/lib/components/__tests__/ImageToolbar.test.js +0 -185
  129. package/lib/components/__tests__/ImageToolbar.test.js.map +0 -1
  130. package/lib/components/__tests__/InlineDropdown.test.js +0 -839
  131. package/lib/components/__tests__/InlineDropdown.test.js.map +0 -1
  132. package/lib/components/__tests__/InsertImageHandler.test.js +0 -171
  133. package/lib/components/__tests__/InsertImageHandler.test.js.map +0 -1
  134. package/lib/components/__tests__/MediaDialog.test.js +0 -433
  135. package/lib/components/__tests__/MediaDialog.test.js.map +0 -1
  136. package/lib/components/__tests__/MediaToolbar.test.js +0 -126
  137. package/lib/components/__tests__/MediaToolbar.test.js.map +0 -1
  138. package/lib/components/__tests__/MediaWrapper.test.js +0 -96
  139. package/lib/components/__tests__/MediaWrapper.test.js.map +0 -1
  140. package/lib/components/__tests__/MenuBar.test.js +0 -502
  141. package/lib/components/__tests__/MenuBar.test.js.map +0 -1
  142. package/lib/components/__tests__/RespArea.test.js +0 -171
  143. package/lib/components/__tests__/RespArea.test.js.map +0 -1
  144. package/lib/components/__tests__/TableIcons.test.js +0 -153
  145. package/lib/components/__tests__/TableIcons.test.js.map +0 -1
  146. package/lib/components/__tests__/TextAlign.test.js +0 -209
  147. package/lib/components/__tests__/TextAlign.test.js.map +0 -1
  148. package/lib/components/__tests__/TiptapContainer.test.js +0 -196
  149. package/lib/components/__tests__/TiptapContainer.test.js.map +0 -1
  150. package/lib/components/__tests__/characterUtils.test.js +0 -178
  151. package/lib/components/__tests__/characterUtils.test.js.map +0 -1
  152. package/lib/components/__tests__/choice.test.js +0 -213
  153. package/lib/components/__tests__/choice.test.js.map +0 -1
  154. package/lib/components/__tests__/custom-popper.test.js +0 -108
  155. package/lib/components/__tests__/custom-popper.test.js.map +0 -1
  156. package/lib/components/__tests__/done-button.test.js +0 -72
  157. package/lib/components/__tests__/done-button.test.js.map +0 -1
  158. package/lib/components/__tests__/toolbar-buttons.test.js +0 -277
  159. package/lib/components/__tests__/toolbar-buttons.test.js.map +0 -1
  160. package/lib/components/characters/characterUtils.js +0 -378
  161. package/lib/components/characters/characterUtils.js.map +0 -1
  162. package/lib/components/characters/custom-popper.js +0 -44
  163. package/lib/components/characters/custom-popper.js.map +0 -1
  164. package/lib/components/common/done-button.js +0 -34
  165. package/lib/components/common/done-button.js.map +0 -1
  166. package/lib/components/common/toolbar-buttons.js +0 -149
  167. package/lib/components/common/toolbar-buttons.js.map +0 -1
  168. package/lib/components/icons/CssIcon.js +0 -25
  169. package/lib/components/icons/CssIcon.js.map +0 -1
  170. package/lib/components/icons/RespArea.js +0 -72
  171. package/lib/components/icons/RespArea.js.map +0 -1
  172. package/lib/components/icons/TableIcons.js +0 -53
  173. package/lib/components/icons/TableIcons.js.map +0 -1
  174. package/lib/components/icons/TextAlign.js +0 -157
  175. package/lib/components/icons/TextAlign.js.map +0 -1
  176. package/lib/components/image/AltDialog.js +0 -98
  177. package/lib/components/image/AltDialog.js.map +0 -1
  178. package/lib/components/image/ImageToolbar.js +0 -137
  179. package/lib/components/image/ImageToolbar.js.map +0 -1
  180. package/lib/components/image/InsertImageHandler.js +0 -135
  181. package/lib/components/image/InsertImageHandler.js.map +0 -1
  182. package/lib/components/media/MediaDialog.js +0 -594
  183. package/lib/components/media/MediaDialog.js.map +0 -1
  184. package/lib/components/media/MediaToolbar.js +0 -74
  185. package/lib/components/media/MediaToolbar.js.map +0 -1
  186. package/lib/components/media/MediaWrapper.js +0 -67
  187. package/lib/components/media/MediaWrapper.js.map +0 -1
  188. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +0 -84
  189. package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +0 -1
  190. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js +0 -90
  191. package/lib/components/respArea/DragInTheBlank/__tests__/choice.test.js.map +0 -1
  192. package/lib/components/respArea/DragInTheBlank/choice.js +0 -253
  193. package/lib/components/respArea/DragInTheBlank/choice.js.map +0 -1
  194. package/lib/components/respArea/ExplicitConstructedResponse.js +0 -137
  195. package/lib/components/respArea/ExplicitConstructedResponse.js.map +0 -1
  196. package/lib/components/respArea/InlineDropdown.js +0 -223
  197. package/lib/components/respArea/InlineDropdown.js.map +0 -1
  198. package/lib/components/respArea/MathTemplated.js +0 -130
  199. package/lib/components/respArea/MathTemplated.js.map +0 -1
  200. package/lib/components/respArea/ToolbarIcon.js +0 -81
  201. package/lib/components/respArea/ToolbarIcon.js.map +0 -1
  202. package/lib/components/respArea/__tests__/MathTemplated.test.js +0 -217
  203. package/lib/components/respArea/__tests__/MathTemplated.test.js.map +0 -1
  204. package/lib/components/respArea/inlineDropdownUtils.js +0 -67
  205. package/lib/components/respArea/inlineDropdownUtils.js.map +0 -1
  206. package/lib/constants.js +0 -11
  207. package/lib/constants.js.map +0 -1
  208. package/lib/extensions/__tests__/css.test.js +0 -214
  209. package/lib/extensions/__tests__/css.test.js.map +0 -1
  210. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js +0 -175
  211. package/lib/extensions/__tests__/custom-toolbar-wrapper.test.js.map +0 -1
  212. package/lib/extensions/__tests__/divNode.test.js +0 -108
  213. package/lib/extensions/__tests__/divNode.test.js.map +0 -1
  214. package/lib/extensions/__tests__/ensure-empty-root-div.test.js +0 -50
  215. package/lib/extensions/__tests__/ensure-empty-root-div.test.js.map +0 -1
  216. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js +0 -60
  217. package/lib/extensions/__tests__/ensure-list-item-content-is-div.test.js.map +0 -1
  218. package/lib/extensions/__tests__/extended-list-item.test.js +0 -13
  219. package/lib/extensions/__tests__/extended-list-item.test.js.map +0 -1
  220. package/lib/extensions/__tests__/extended-table-cell.test.js +0 -15
  221. package/lib/extensions/__tests__/extended-table-cell.test.js.map +0 -1
  222. package/lib/extensions/__tests__/extended-table.test.js +0 -200
  223. package/lib/extensions/__tests__/extended-table.test.js.map +0 -1
  224. package/lib/extensions/__tests__/image-component.test.js +0 -432
  225. package/lib/extensions/__tests__/image-component.test.js.map +0 -1
  226. package/lib/extensions/__tests__/image.test.js +0 -313
  227. package/lib/extensions/__tests__/image.test.js.map +0 -1
  228. package/lib/extensions/__tests__/math.test.js +0 -1411
  229. package/lib/extensions/__tests__/math.test.js.map +0 -1
  230. package/lib/extensions/__tests__/media-node-view.test.js +0 -307
  231. package/lib/extensions/__tests__/media-node-view.test.js.map +0 -1
  232. package/lib/extensions/__tests__/media.test.js +0 -292
  233. package/lib/extensions/__tests__/media.test.js.map +0 -1
  234. package/lib/extensions/__tests__/responseArea.test.js +0 -736
  235. package/lib/extensions/__tests__/responseArea.test.js.map +0 -1
  236. package/lib/extensions/css.js +0 -227
  237. package/lib/extensions/css.js.map +0 -1
  238. package/lib/extensions/custom-toolbar-wrapper.js +0 -92
  239. package/lib/extensions/custom-toolbar-wrapper.js.map +0 -1
  240. package/lib/extensions/div-node.js +0 -83
  241. package/lib/extensions/div-node.js.map +0 -1
  242. package/lib/extensions/ensure-empty-root-div.js +0 -48
  243. package/lib/extensions/ensure-empty-root-div.js.map +0 -1
  244. package/lib/extensions/ensure-list-item-content-is-div.js +0 -64
  245. package/lib/extensions/ensure-list-item-content-is-div.js.map +0 -1
  246. package/lib/extensions/extended-list-item.js +0 -15
  247. package/lib/extensions/extended-list-item.js.map +0 -1
  248. package/lib/extensions/extended-table-cell.js +0 -22
  249. package/lib/extensions/extended-table-cell.js.map +0 -1
  250. package/lib/extensions/extended-table.js +0 -75
  251. package/lib/extensions/extended-table.js.map +0 -1
  252. package/lib/extensions/heading-paragraph.js +0 -61
  253. package/lib/extensions/heading-paragraph.js.map +0 -1
  254. package/lib/extensions/image-component.js +0 -351
  255. package/lib/extensions/image-component.js.map +0 -1
  256. package/lib/extensions/image.js +0 -134
  257. package/lib/extensions/image.js.map +0 -1
  258. package/lib/extensions/index.js +0 -46
  259. package/lib/extensions/index.js.map +0 -1
  260. package/lib/extensions/math.js +0 -469
  261. package/lib/extensions/math.js.map +0 -1
  262. package/lib/extensions/media.js +0 -243
  263. package/lib/extensions/media.js.map +0 -1
  264. package/lib/extensions/responseArea.js +0 -452
  265. package/lib/extensions/responseArea.js.map +0 -1
  266. package/lib/index.js +0 -37
  267. package/lib/index.js.map +0 -1
  268. package/lib/styles/editorContainerStyles.js +0 -137
  269. package/lib/styles/editorContainerStyles.js.map +0 -1
  270. package/lib/theme.js +0 -8
  271. package/lib/theme.js.map +0 -1
  272. package/lib/utils/__tests__/helper.test.js +0 -107
  273. package/lib/utils/__tests__/helper.test.js.map +0 -1
  274. package/lib/utils/__tests__/toolbar.test.js +0 -38
  275. package/lib/utils/__tests__/toolbar.test.js.map +0 -1
  276. package/lib/utils/helper.js +0 -73
  277. package/lib/utils/helper.js.map +0 -1
  278. package/lib/utils/size.js +0 -26
  279. package/lib/utils/size.js.map +0 -1
  280. package/lib/utils/toolbar.js +0 -19
  281. package/lib/utils/toolbar.js.map +0 -1
  282. package/src/__tests__/EditableHtml.test.jsx +0 -588
  283. package/src/__tests__/constants.test.js +0 -19
  284. package/src/__tests__/div-to-paragraph-conversion.test.jsx +0 -125
  285. package/src/__tests__/extensions.test.js +0 -208
  286. package/src/__tests__/index.test.jsx +0 -154
  287. package/src/__tests__/size-utils.test.js +0 -64
  288. package/src/__tests__/theme.test.js +0 -17
  289. package/src/components/CharacterPicker.jsx +0 -237
  290. package/src/components/EditableHtml.jsx +0 -458
  291. package/src/components/MenuBar.jsx +0 -561
  292. package/src/components/TiptapContainer.jsx +0 -235
  293. package/src/components/__tests__/AltDialog.test.jsx +0 -147
  294. package/src/components/__tests__/CharacterPicker.test.jsx +0 -270
  295. package/src/components/__tests__/CssIcon.test.jsx +0 -46
  296. package/src/components/__tests__/DragInTheBlank.test.jsx +0 -255
  297. package/src/components/__tests__/ExplicitConstructedResponse.test.jsx +0 -209
  298. package/src/components/__tests__/ImageToolbar.test.jsx +0 -128
  299. package/src/components/__tests__/InlineDropdown.test.jsx +0 -557
  300. package/src/components/__tests__/InsertImageHandler.test.js +0 -161
  301. package/src/components/__tests__/MediaDialog.test.jsx +0 -293
  302. package/src/components/__tests__/MediaToolbar.test.jsx +0 -74
  303. package/src/components/__tests__/MediaWrapper.test.jsx +0 -81
  304. package/src/components/__tests__/MenuBar.test.jsx +0 -250
  305. package/src/components/__tests__/RespArea.test.jsx +0 -122
  306. package/src/components/__tests__/TableIcons.test.jsx +0 -149
  307. package/src/components/__tests__/TextAlign.test.jsx +0 -167
  308. package/src/components/__tests__/TiptapContainer.test.jsx +0 -138
  309. package/src/components/__tests__/characterUtils.test.js +0 -166
  310. package/src/components/__tests__/choice.test.jsx +0 -171
  311. package/src/components/__tests__/custom-popper.test.jsx +0 -82
  312. package/src/components/__tests__/done-button.test.jsx +0 -54
  313. package/src/components/__tests__/toolbar-buttons.test.jsx +0 -234
  314. package/src/components/characters/characterUtils.js +0 -447
  315. package/src/components/characters/custom-popper.js +0 -38
  316. package/src/components/common/done-button.jsx +0 -27
  317. package/src/components/common/toolbar-buttons.jsx +0 -127
  318. package/src/components/icons/CssIcon.jsx +0 -15
  319. package/src/components/icons/RespArea.jsx +0 -71
  320. package/src/components/icons/TableIcons.jsx +0 -52
  321. package/src/components/icons/TextAlign.jsx +0 -114
  322. package/src/components/image/AltDialog.jsx +0 -82
  323. package/src/components/image/ImageToolbar.jsx +0 -99
  324. package/src/components/image/InsertImageHandler.js +0 -107
  325. package/src/components/media/MediaDialog.jsx +0 -596
  326. package/src/components/media/MediaToolbar.jsx +0 -49
  327. package/src/components/media/MediaWrapper.jsx +0 -39
  328. package/src/components/respArea/DragInTheBlank/DragInTheBlank.jsx +0 -76
  329. package/src/components/respArea/DragInTheBlank/__tests__/choice.test.jsx +0 -72
  330. package/src/components/respArea/DragInTheBlank/choice.jsx +0 -259
  331. package/src/components/respArea/ExplicitConstructedResponse.jsx +0 -136
  332. package/src/components/respArea/InlineDropdown.jsx +0 -240
  333. package/src/components/respArea/MathTemplated.jsx +0 -124
  334. package/src/components/respArea/ToolbarIcon.jsx +0 -66
  335. package/src/components/respArea/__tests__/MathTemplated.test.jsx +0 -210
  336. package/src/components/respArea/inlineDropdownUtils.js +0 -79
  337. package/src/constants.js +0 -5
  338. package/src/extensions/__tests__/css.test.js +0 -196
  339. package/src/extensions/__tests__/custom-toolbar-wrapper.test.jsx +0 -180
  340. package/src/extensions/__tests__/divNode.test.js +0 -87
  341. package/src/extensions/__tests__/ensure-empty-root-div.test.js +0 -57
  342. package/src/extensions/__tests__/ensure-list-item-content-is-div.test.js +0 -44
  343. package/src/extensions/__tests__/extended-list-item.test.js +0 -13
  344. package/src/extensions/__tests__/extended-table-cell.test.js +0 -22
  345. package/src/extensions/__tests__/extended-table.test.js +0 -183
  346. package/src/extensions/__tests__/image-component.test.jsx +0 -346
  347. package/src/extensions/__tests__/image.test.js +0 -237
  348. package/src/extensions/__tests__/math.test.js +0 -900
  349. package/src/extensions/__tests__/media-node-view.test.jsx +0 -298
  350. package/src/extensions/__tests__/media.test.js +0 -271
  351. package/src/extensions/__tests__/responseArea.test.js +0 -655
  352. package/src/extensions/css.js +0 -233
  353. package/src/extensions/custom-toolbar-wrapper.jsx +0 -78
  354. package/src/extensions/div-node.js +0 -86
  355. package/src/extensions/ensure-empty-root-div.js +0 -47
  356. package/src/extensions/ensure-list-item-content-is-div.js +0 -62
  357. package/src/extensions/extended-list-item.js +0 -10
  358. package/src/extensions/extended-table-cell.js +0 -19
  359. package/src/extensions/extended-table.js +0 -60
  360. package/src/extensions/heading-paragraph.js +0 -53
  361. package/src/extensions/image-component.jsx +0 -340
  362. package/src/extensions/image.js +0 -109
  363. package/src/extensions/index.js +0 -81
  364. package/src/extensions/math.js +0 -454
  365. package/src/extensions/media.js +0 -188
  366. package/src/extensions/responseArea.js +0 -407
  367. package/src/index.jsx +0 -5
  368. package/src/styles/editorContainerStyles.js +0 -145
  369. package/src/theme.js +0 -1
  370. package/src/utils/__tests__/helper.test.js +0 -126
  371. package/src/utils/__tests__/toolbar.test.js +0 -43
  372. package/src/utils/helper.js +0 -69
  373. package/src/utils/size.js +0 -32
  374. package/src/utils/toolbar.js +0 -15
@@ -1,76 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { NodeViewWrapper } from '@tiptap/react';
4
- import DragDropTile from './choice';
5
- import omit from 'lodash-es/omit';
6
-
7
- export const onValueChange = (editor, node, pos, choice) => {
8
- const { tr } = editor.state;
9
-
10
- // Merge old and new attributes
11
- tr.setNodeMarkup(pos, undefined, {
12
- ...node.attrs,
13
- ...choice.value,
14
- });
15
- tr.isDone = true;
16
- editor.view.dispatch(tr);
17
- };
18
-
19
- export const onRemoveResponse = (editor, node, choice) => {
20
- const { tr } = editor.state;
21
-
22
- // Merge old and new attributes
23
- tr.setNodeMarkup(choice.pos, undefined, omit(node.attrs, ['value', 'id']));
24
- tr.isDone = true;
25
- editor.view.dispatch(tr);
26
- };
27
-
28
- const DragDrop = (props) => {
29
- const { editor, node, getPos, options, selected } = props;
30
- const { attrs: attributes } = node;
31
- const { inTable } = attributes;
32
- const pos = getPos();
33
-
34
- // console.log({nodeProps.children})
35
- return (
36
- <NodeViewWrapper
37
- className="drag-in-the-blank"
38
- data-selected={selected}
39
- style={{ display: 'inline', whiteSpace: 'normal' }}
40
- >
41
- <span
42
- {...attributes}
43
- style={{
44
- display: 'inline-flex',
45
- minHeight: '50px',
46
- minWidth: '178px',
47
- position: 'relative',
48
- margin: inTable ? '10px' : '0 10px',
49
- cursor: 'pointer',
50
- }}
51
- >
52
- <DragDropTile
53
- n={attributes}
54
- dragKey={attributes.id}
55
- targetId="0"
56
- pos={pos}
57
- value={attributes}
58
- duplicates={options.duplicates}
59
- selected={selected}
60
- onChange={(choice) => onValueChange(editor, node, pos, choice)}
61
- removeResponse={(choice) => onRemoveResponse(editor, node, choice)}
62
- ></DragDropTile>
63
- </span>
64
- </NodeViewWrapper>
65
- );
66
- };
67
-
68
- DragDrop.propTypes = {
69
- attributes: PropTypes.object,
70
- data: PropTypes.object,
71
- n: PropTypes.object,
72
- nodeProps: PropTypes.object,
73
- opts: PropTypes.object,
74
- };
75
-
76
- export default DragDrop;
@@ -1,72 +0,0 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import DragDropChoice from '../choice';
4
-
5
- // Mock @dnd-kit hooks to avoid DndContext requirement
6
- jest.mock('@dnd-kit/core', () => ({
7
- useDraggable: jest.fn(() => ({
8
- attributes: {},
9
- listeners: {},
10
- setNodeRef: jest.fn(),
11
- isDragging: false,
12
- })),
13
- useDroppable: jest.fn(() => ({
14
- setNodeRef: jest.fn(),
15
- isOver: false,
16
- active: null,
17
- })),
18
- }));
19
-
20
- jest.mock('@pie-lib/math-rendering', () => ({
21
- renderMath: jest.fn(),
22
- }));
23
-
24
- // Collect the CSS rules emotion/MUI injected into the document (jsdom uses insertRule).
25
- const collectEmotionRules = () => {
26
- const rules = [];
27
- for (const sheet of Array.from(document.styleSheets)) {
28
- try {
29
- for (const rule of Array.from(sheet.cssRules)) {
30
- rules.push(rule.cssText);
31
- }
32
- } catch (e) {
33
- /* inaccessible stylesheet */
34
- }
35
- }
36
- return rules;
37
- };
38
-
39
- describe('DragInTheBlank choice', () => {
40
- const defaultProps = {
41
- value: { id: '1', value: '<math>1/2</math>' },
42
- disabled: false,
43
- instanceId: 'test-instance',
44
- n: { index: 0 },
45
- onChange: jest.fn(),
46
- removeResponse: jest.fn(),
47
- duplicates: false,
48
- };
49
-
50
- it('renders without crashing', () => {
51
- const { container } = render(<DragDropChoice {...defaultProps} />);
52
- expect(container.firstChild).toBeInTheDocument();
53
- });
54
-
55
- describe('fraction math styling', () => {
56
- it('enlarges numerator/denominator digits adjacent to a fraction to 120%', () => {
57
- render(<DragDropChoice {...defaultProps} />);
58
- const rule = collectEmotionRules().find((r) => r.includes('mjx-mn') && r.includes('mjx-mfrac'));
59
- expect(rule).toBeDefined();
60
- expect(rule).toMatch(/mjx-mn:has\(~\s*mjx-mfrac\)/);
61
- expect(rule).toMatch(/mjx-mfrac\s*~\s*mjx-mn/);
62
- expect(rule).toMatch(/font-size:\s*120%\s*!important/i);
63
- });
64
-
65
- it('keeps the existing mjx-frac 120% rule', () => {
66
- render(<DragDropChoice {...defaultProps} />);
67
- const rule = collectEmotionRules().find((r) => /(^|[^-])mjx-frac/.test(r) && !r.includes('mjx-mfrac'));
68
- expect(rule).toBeDefined();
69
- expect(rule).toMatch(/font-size:\s*120%\s*!important/i);
70
- });
71
- });
72
- });
@@ -1,259 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { useDraggable, useDroppable } from '@dnd-kit/core';
4
- import { color } from '@pie-lib/render-ui';
5
- import { renderMath } from '@pie-lib/math-rendering';
6
- import { styled } from '@mui/material/styles';
7
- import classnames from 'classnames';
8
-
9
- import { GripIcon } from '../../icons/RespArea';
10
-
11
- const StyledContent = styled('span')(({ theme }) => ({
12
- border: `solid 0px ${theme.palette.primary.main}`,
13
- '& mjx-mn:has(~ mjx-mfrac), mjx-mfrac ~ mjx-mn': {
14
- fontSize: '120% !important',
15
- },
16
- '& mjx-frac': {
17
- fontSize: '120% !important',
18
- },
19
- }));
20
-
21
- export function BlankContent({ n, children, isDragging, isOver, dragItem, value, selected }) {
22
- const [hoveredElementSize, setHoveredElementSize] = useState(null);
23
- const elementRef = useRef(null);
24
-
25
- const handleClick = (event) => {
26
- if (!elementRef.current) return;
27
-
28
- if (elementRef.current.contains(event.target)) {
29
- elementRef.current.classList.add('selected');
30
- } else {
31
- elementRef.current.classList.remove('selected');
32
- }
33
- };
34
-
35
- useEffect(() => {
36
- document.addEventListener('click', handleClick);
37
- return () => {
38
- document.removeEventListener('click', handleClick);
39
- };
40
- }, []);
41
-
42
- useEffect(() => {
43
- if (elementRef.current && typeof renderMath === 'function') {
44
- renderMath(elementRef.current);
45
- }
46
- }, [value?.value, isOver, dragItem?.value?.value]);
47
-
48
- useEffect(() => {
49
- if (isOver && elementRef.current && !hoveredElementSize) {
50
- const node = elementRef.current;
51
- setHoveredElementSize({ width: node.offsetWidth, height: node.offsetHeight });
52
- } else if (!isOver && hoveredElementSize) {
53
- setHoveredElementSize(null);
54
- }
55
- }, [isOver, hoveredElementSize]);
56
-
57
- const label = dragItem && isOver ? dragItem.value.value : value.value || '\u00A0';
58
- const finalLabel = isDragging ? '\u00A0' : label;
59
- const hasGrip = finalLabel !== '\u00A0';
60
- const isPreview = dragItem && isOver;
61
-
62
- const borderStyle = selected
63
- ? `2px solid ${color.primaryDark()}`
64
- : isPreview
65
- ? `1px solid ${color.defaults.BORDER_DARK}`
66
- : `1px solid ${color.defaults.BORDER_LIGHT}`;
67
-
68
- return (
69
- <div
70
- ref={elementRef}
71
- className={selected ? 'selected' : undefined}
72
- style={{
73
- display: 'inline-flex',
74
- minWidth: '178px',
75
- minHeight: '36px',
76
- background: isPreview ? `${color.defaults.BORDER_LIGHT}` : `${color.defaults.WHITE}`,
77
- border: borderStyle,
78
- boxSizing: 'border-box',
79
- borderRadius: '3px',
80
- overflow: 'hidden',
81
- position: 'relative',
82
- padding: '8px 8px 8px 35px',
83
- width: hoveredElementSize ? hoveredElementSize.width : undefined,
84
- height: hoveredElementSize ? hoveredElementSize.height : undefined,
85
- touchAction: 'none',
86
- }}
87
- data-key={n.index}
88
- contentEditable={false}
89
- >
90
- {hasGrip && (
91
- <GripIcon
92
- style={{
93
- position: 'absolute',
94
- top: '6px',
95
- left: '15px',
96
- color: '#9B9B9B',
97
- }}
98
- contentEditable={false}
99
- />
100
- )}
101
- <span
102
- dangerouslySetInnerHTML={{
103
- __html: finalLabel,
104
- }}
105
- />
106
- {children}
107
- </div>
108
- );
109
- }
110
-
111
- BlankContent.propTypes = {
112
- n: PropTypes.object,
113
- children: PropTypes.node,
114
- isDragging: PropTypes.bool,
115
- isOver: PropTypes.bool,
116
- dragItem: PropTypes.object,
117
- value: PropTypes.object,
118
- selected: PropTypes.bool,
119
- };
120
-
121
- function DragDropChoice({
122
- value,
123
- disabled,
124
- instanceId,
125
- children,
126
- n,
127
- onChange,
128
- removeResponse,
129
- duplicates,
130
- pos,
131
- selected,
132
- }) {
133
- const {
134
- attributes: dragAttributes,
135
- listeners: dragListeners,
136
- setNodeRef: setDragNodeRef,
137
- isDragging,
138
- } = useDraggable({
139
- id: `drag-${n.index}`,
140
- disabled: disabled || !value?.value,
141
- data: {
142
- id: `drag-${n.index}`,
143
- value,
144
- instanceId,
145
- n,
146
- pos,
147
- opts: { duplicates },
148
- type: 'drag-in-the-blank-placed-choice',
149
- fromChoice: !value,
150
- onRemove: (draggedData) => removeResponse(draggedData),
151
- onDrop: (draggedData, dropData) => {
152
- // check if we're dropping into a blank
153
- const isValidBlank = dropData?.type === 'drag-in-the-blank-drop-choice';
154
-
155
- if (!isValidBlank) return;
156
-
157
- // place into blank
158
- onChange(draggedData);
159
-
160
- if (!duplicates && draggedData.fromChoice) {
161
- removeResponse(draggedData);
162
- }
163
- },
164
- },
165
- });
166
-
167
- const {
168
- setNodeRef: setDropNodeRef,
169
- isOver,
170
- active: dragItem,
171
- } = useDroppable({
172
- id: `drop-${n.index}`,
173
- data: {
174
- type: 'drag-in-the-blank-drop-choice',
175
- accepts: ['drag-in-the-blank-choice', 'drag-in-the-blank-placed-choice'],
176
- instanceId: instanceId,
177
- value: value,
178
- id: `drop-${n.index}`,
179
- pos,
180
- n,
181
- opts: { duplicates },
182
- onDrop: (draggedData, dropData) => {
183
- // check if we're dropping into a blank
184
- const isValidBlank = dropData?.type === 'drag-in-the-blank-drop-choice';
185
-
186
- if (!isValidBlank) return;
187
-
188
- // if the dragged and dropped data are the same, do nothing
189
- if (draggedData.value.id === dropData.value.id) return;
190
-
191
- if (draggedData.type === 'drag-in-the-blank-choice') {
192
- // place into blank
193
- onChange(draggedData);
194
-
195
- if (!duplicates && draggedData.fromChoice) {
196
- removeResponse(draggedData);
197
- }
198
- return;
199
- }
200
-
201
- // moving placed choice between blanks
202
- if (draggedData.type === 'drag-in-the-blank-placed-choice') {
203
- // clear target blank
204
- removeResponse(dropData);
205
-
206
- // set new blank value
207
- onChange(draggedData);
208
-
209
- // clear original blank - slight delay to ensure state updates correctly
210
- setTimeout(() => removeResponse(draggedData), 10);
211
- }
212
- },
213
- },
214
- });
215
-
216
- const setNodeRef = (node) => {
217
- setDragNodeRef(node);
218
- setDropNodeRef(node);
219
- };
220
-
221
- const dragContent = (
222
- <BlankContent
223
- n={n}
224
- isDragging={isDragging}
225
- isOver={isOver}
226
- dragItem={dragItem?.data?.current}
227
- value={value}
228
- selected={selected}
229
- >
230
- {children}
231
- </BlankContent>
232
- );
233
-
234
- const dragEl = !value ? (
235
- <span ref={setDropNodeRef}>{dragContent}</span>
236
- ) : (
237
- <span ref={setNodeRef} {...dragAttributes} {...dragListeners}>
238
- {dragContent}
239
- </span>
240
- );
241
-
242
- const content = <StyledContent className={classnames(isOver && 'over')}>{dragEl}</StyledContent>;
243
-
244
- return content;
245
- }
246
-
247
- DragDropChoice.propTypes = {
248
- value: PropTypes.object,
249
- disabled: PropTypes.bool,
250
- instanceId: PropTypes.string,
251
- children: PropTypes.node,
252
- n: PropTypes.object.isRequired,
253
- onChange: PropTypes.func.isRequired,
254
- removeResponse: PropTypes.func.isRequired,
255
- duplicates: PropTypes.bool,
256
- selected: PropTypes.bool,
257
- };
258
-
259
- export default DragDropChoice;
@@ -1,136 +0,0 @@
1
- import React, { useEffect, useRef, useState } from 'react';
2
- import { NodeViewWrapper } from '@tiptap/react';
3
- import ReactDOM from 'react-dom';
4
- import PropTypes from 'prop-types';
5
- import CustomToolbarWrapper from '../../extensions/custom-toolbar-wrapper';
6
- import { setToolbarOpened } from '../../utils/toolbar';
7
-
8
- const ExplicitConstructedResponse = (props) => {
9
- const { editor, node, getPos, options, selected } = props;
10
- const { attrs: attributes } = node;
11
- const { value } = attributes;
12
- const { respAreaToolbar, error: errorFn } = options;
13
- const pos = getPos();
14
- const [showToolbar, setShowToolbar] = useState(false);
15
- const EcrToolbar = respAreaToolbar([node, pos], editor, () => {});
16
- const toolbarRef = useRef(null);
17
-
18
- let error;
19
-
20
- if (errorFn) {
21
- const errorValue = errorFn();
22
- const respIndex = parseInt(attributes.index, 10);
23
-
24
- error = !!errorValue?.[respIndex]?.[0];
25
- }
26
-
27
- useEffect(() => {
28
- const { selection } = editor.state;
29
- const onlyThisNodeSelected = selection.from + node.nodeSize === selection.to;
30
-
31
- if (selected) {
32
- if (onlyThisNodeSelected) {
33
- setShowToolbar(selected);
34
- }
35
- } else {
36
- setShowToolbar(selected);
37
- }
38
- }, [editor, node, selected]);
39
-
40
- useEffect(() => {
41
- const handleClickOutside = (event) => {
42
- const insideCharacterPicker =
43
- event.target.closest('.insert-character-dialog') || event.target.closest('[data-toolbar-for]');
44
-
45
- if (
46
- !insideCharacterPicker &&
47
- toolbarRef.current &&
48
- !toolbarRef.current.contains(event.target) &&
49
- !event.target.closest('[data-inline-node]')
50
- ) {
51
- setShowToolbar(false);
52
- }
53
- };
54
-
55
- if (showToolbar) {
56
- document.addEventListener('mousedown', handleClickOutside);
57
- } else {
58
- document.removeEventListener('mousedown', handleClickOutside);
59
- }
60
-
61
- return () => document.removeEventListener('mousedown', handleClickOutside);
62
- }, [showToolbar]);
63
-
64
- return (
65
- <NodeViewWrapper
66
- className="drag-in-the-blank"
67
- data-selected={selected}
68
- style={{
69
- display: 'inline-flex',
70
- minHeight: '55px',
71
- position: 'relative',
72
- cursor: 'pointer',
73
- }}
74
- >
75
- <div
76
- {...attributes}
77
- style={{
78
- display: 'inline-flex',
79
- width: '100%',
80
- minHeight: '46px',
81
- height: '46px',
82
- backgroundColor: '#FFF',
83
- border: `1px solid ${error ? 'red' : '#C0C3CF'}`,
84
- boxSizing: 'border-box',
85
- borderRadius: '4px',
86
- overflow: 'hidden',
87
- padding: '12px 21px',
88
- margin: '0 4px',
89
- minWidth: '178px',
90
- visibility: showToolbar ? 'hidden' : 'visible',
91
- }}
92
- onClick={() => setShowToolbar(true)}
93
- dangerouslySetInnerHTML={{
94
- __html: value || '<div>&nbsp;</div>',
95
- }}
96
- />
97
- {showToolbar && (
98
- <React.Fragment>
99
- <div ref={toolbarRef} className="absolute z-50 bg-white shadow-lg rounded p-2" style={{ zIndex: 1 }}>
100
- <EcrToolbar />
101
- </div>
102
- {editor._tiptapContainerEl &&
103
- ReactDOM.createPortal(
104
- <CustomToolbarWrapper
105
- deletable
106
- toolbarOpts={{ minWidth: 'auto' }}
107
- autoWidth
108
- style={{ top: -40, left: 0, right: 0 }}
109
- onDelete={() => {
110
- const { tr } = editor.state;
111
- tr.delete(pos, pos + node.nodeSize);
112
- // Prevent the debounced onBlur/onDone from firing into the
113
- // now-deleted node's stale position
114
- setToolbarOpened(editor, false);
115
- editor.view.dispatch(tr);
116
- setShowToolbar(false);
117
- editor.commands.focus();
118
- }}
119
- showDone={false}
120
- />,
121
- editor._tiptapContainerEl,
122
- )}
123
- </React.Fragment>
124
- )}
125
- </NodeViewWrapper>
126
- );
127
- };
128
-
129
- ExplicitConstructedResponse.propTypes = {
130
- attributes: PropTypes.object,
131
- error: PropTypes.any,
132
- value: PropTypes.string,
133
- isFocused: PropTypes.bool,
134
- };
135
-
136
- export default ExplicitConstructedResponse;