@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 +0,0 @@
1
- {"version":3,"file":"InlineDropdown.test.js","names":["_react","_interopRequireDefault","require","_react2","_mathRendering","_InlineDropdown","_excluded","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","jest","mock","renderMath","fn","NodeViewWrapper","_ref","children","props","_objectWithoutProperties2","createElement","_extends2","mockCreatePortal","node","requireActual","createPortal","describe","buildMockEditor","overrides","undefined","mockNodeAt","pos","nodeSize","mockDoc","descendants","nodeAt","mockTr","doc","setSelection","setMeta","state","selection","from","to","tr","view","coordsAtPos","top","left","dispatch","commands","focus","_tiptapContainerEl","document","_toolbarOpened","mockEditor","mockNode","attrs","index","value","error","mockOptions","respAreaToolbar","defaultProps","editor","getPos","options","selected","beforeEach","clearAllMocks","mockClear","body","configurable","it","_render","render","container","expect","toBeInTheDocument","_render2","getByTestId","_render3","valueDiv","querySelector","_render4","toHaveBeenCalledWith","updatedNode","_render5","rerender","_render6","toHaveStyle","margin","wrapper","getAttribute","not","toMatch","_render7","chevron","_asyncToGenerator2","_regenerator","mark","_callee","_render8","queryByTestId","wrap","_context","prev","next","waitFor","stop","_render9","_callee2","_render0","dropdown","_context2","fireEvent","click","_render1","height","_render10","display","_render11","cursor","emptyNode","_render12","any","Function","_callee3","_render13","_context3","mouseDown","_callee4","onInlineDropdownToolbarClose","_render14","_context4","_callee5","onToolbarCloseRequest","_render15","_context5","_tuple","_editor","onConfirm","anything","_callee6","_render16","_context6","_holdInlineDropdownToolbarIndex","_callee7","addSpy","removeSpy","_render17","removeCallsBeforeRerender","_context7","spyOn","calls","_ref9","_ref0","_slicedToArray2","type","removeCallsAfterRerender","_ref1","_ref10","toBeGreaterThan","mockRestore","_render18","dropdownDiv","border","_render19","minWidth","_render20","_render21","textContainer","textOverflow","whiteSpace","_callee8","containerEl","_context8","toHaveBeenCalled","toBe","_callee9","_context9","_callee0","mockToolbarComponent","mockOptionsWithCallback","_render22","_context0","_ref14","editorCallback","instanceId","_callee1","capturedCallback","_render23","_context1","_ref16","toBeDefined","_callee10","editorWithInstanceId","_render24","otherToolbar","_context10","_ref18","React","useEffect","setAttribute","appendChild","removeChild","_callee11","toolbarEditorInstance","_context11","_ref20","_callee12","editorWithToolbarOpened","_render25","_context12","_callee13","_render26","_context13","documentElement","_callee14","_render27","findByLabelText","_t","_context14","sent","_callee15","_render28","queryByLabelText","findByTestId","_t2","_context15","_callee16","_render29","_t3","_context16","call","toHaveBeenCalledTimes","toHaveBeenNthCalledWith"],"sources":["../../../src/components/__tests__/InlineDropdown.test.jsx"],"sourcesContent":["import React from 'react';\nimport { fireEvent, render, waitFor } from '@testing-library/react';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport InlineDropdown from '../respArea/InlineDropdown';\n\njest.mock('@pie-lib/math-rendering', () => ({\n renderMath: jest.fn(),\n}));\n\njest.mock('@tiptap/react', () => ({\n NodeViewWrapper: ({ children, ...props }) => (\n <div data-testid=\"node-view-wrapper\" {...props}>\n {children}\n </div>\n ),\n}));\n\nconst mockCreatePortal = jest.fn((node) => node);\n\njest.mock('react-dom', () => ({\n ...jest.requireActual('react-dom'),\n createPortal: (...args) => mockCreatePortal(...args),\n}));\n\ndescribe('InlineDropdown', () => {\n const buildMockEditor = (overrides = {}) => {\n const mockNodeAt = jest.fn((pos) => (pos === 5 ? { nodeSize: 1 } : null));\n const mockDoc = {\n descendants: jest.fn(),\n nodeAt: mockNodeAt,\n };\n const mockTr = {\n delete: jest.fn(),\n doc: { nodeAt: mockNodeAt },\n setSelection: jest.fn(),\n setMeta: jest.fn(function setMeta() {\n return mockTr;\n }),\n };\n return {\n state: {\n selection: {\n from: 0,\n to: 1,\n },\n tr: mockTr,\n doc: mockDoc,\n },\n view: {\n coordsAtPos: jest.fn(() => ({ top: 100, left: 50 })),\n dispatch: jest.fn(),\n },\n commands: {\n focus: jest.fn(),\n },\n _tiptapContainerEl: document.createElement('div'),\n _toolbarOpened: false,\n ...overrides,\n };\n };\n\n let mockEditor;\n\n const mockNode = {\n attrs: {\n index: '0',\n value: 'Selected Option',\n error: false,\n },\n nodeSize: 1,\n };\n\n const mockOptions = {\n respAreaToolbar: jest.fn(() => () => <div data-testid=\"inline-dropdown-toolbar\">Toolbar</div>),\n };\n\n const defaultProps = {\n editor: mockEditor,\n node: mockNode,\n getPos: () => 5,\n options: mockOptions,\n selected: false,\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n mockCreatePortal.mockClear();\n mockEditor = buildMockEditor();\n defaultProps.editor = mockEditor;\n Object.defineProperty(document.body, 'getBoundingClientRect', {\n value: jest.fn(() => ({ top: 0, left: 0 })),\n configurable: true,\n });\n });\n\n it('renders without crashing', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n expect(container).toBeInTheDocument();\n });\n\n it('renders NodeViewWrapper', () => {\n const { getByTestId } = render(<InlineDropdown {...defaultProps} />);\n expect(getByTestId('node-view-wrapper')).toBeInTheDocument();\n });\n\n it('displays selected value', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const valueDiv = container.querySelector('div[style*=\"border\"]');\n expect(valueDiv).toBeInTheDocument();\n });\n\n it('renders math inside the value control on mount', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const valueDiv = container.querySelector('div[style*=\"border\"]');\n\n expect(renderMath).toHaveBeenCalledWith(valueDiv);\n });\n\n it('re-renders math when the value changes', () => {\n const updatedNode = {\n ...mockNode,\n attrs: {\n ...mockNode.attrs,\n value: '<span>Updated math</span>',\n },\n };\n\n const { container, rerender } = render(<InlineDropdown {...defaultProps} />);\n\n renderMath.mockClear();\n\n rerender(<InlineDropdown {...defaultProps} node={updatedNode} />);\n\n const valueDiv = container.querySelector('div[style*=\"border\"]');\n expect(renderMath).toHaveBeenCalledWith(valueDiv);\n });\n\n it('uses 2px horizontal margin on the value control and no horizontal margin on the wrapper', () => {\n const { container, getByTestId } = render(<InlineDropdown {...defaultProps} />);\n const valueDiv = container.querySelector('div[style*=\"border\"]');\n expect(valueDiv).toHaveStyle({ margin: '0 2px' });\n const wrapper = getByTestId('node-view-wrapper');\n expect(wrapper.getAttribute('style') || '').not.toMatch(/margin/);\n });\n\n it('renders chevron icon', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const chevron = container.querySelector('svg');\n expect(chevron).toBeInTheDocument();\n });\n\n it('shows toolbar when selected and only this node is selected', async () => {\n const { queryByTestId } = render(<InlineDropdown {...defaultProps} selected={true} />);\n await waitFor(() => {\n // Toolbar is shown via portal\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n });\n\n it('does not show toolbar when not selected', () => {\n const { queryByTestId } = render(<InlineDropdown {...defaultProps} selected={false} />);\n expect(queryByTestId('inline-dropdown-toolbar')).not.toBeInTheDocument();\n });\n\n it('shows toolbar on click', async () => {\n const { container, queryByTestId } = render(<InlineDropdown {...defaultProps} />);\n const dropdown = container.querySelector('div[style*=\"border\"]');\n if (dropdown) {\n fireEvent.click(dropdown);\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n } else {\n // If dropdown is not found, just verify the component rendered\n expect(container).toBeInTheDocument();\n }\n });\n\n it('has correct minimum dimensions', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const wrapper = container.querySelector('[data-testid=\"node-view-wrapper\"]');\n expect(wrapper).toHaveStyle({ height: '50px' });\n });\n\n it('has inline-flex display', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const wrapper = container.querySelector('[data-testid=\"node-view-wrapper\"]');\n expect(wrapper).toHaveStyle({ display: 'inline-flex' });\n });\n\n it('has cursor pointer style', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const wrapper = container.querySelector('[data-testid=\"node-view-wrapper\"]');\n expect(wrapper).toHaveStyle({ cursor: 'pointer' });\n });\n\n it('renders with empty value as nbsp', () => {\n const emptyNode = { ...mockNode, attrs: { ...mockNode.attrs, value: '' } };\n const { container } = render(<InlineDropdown {...defaultProps} node={emptyNode} />);\n expect(container).toBeInTheDocument();\n });\n\n it('calls respAreaToolbar with correct params', () => {\n render(<InlineDropdown {...defaultProps} />);\n expect(mockOptions.respAreaToolbar).toHaveBeenCalledWith([mockNode, 5], mockEditor, expect.any(Function));\n });\n\n it('closes toolbar on outside click', async () => {\n const { container, queryByTestId } = render(<InlineDropdown {...defaultProps} selected={true} />);\n await waitFor(() => {\n fireEvent.mouseDown(document.body);\n });\n // After clicking outside, toolbar should be hidden\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).not.toBeInTheDocument();\n });\n });\n\n it('calls close callback when toolbar closes on outside click', async () => {\n const onInlineDropdownToolbarClose = jest.fn();\n const options = {\n ...mockOptions,\n onInlineDropdownToolbarClose,\n };\n\n const { queryByTestId } = render(<InlineDropdown {...defaultProps} options={options} selected={true} />);\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n\n fireEvent.mouseDown(document.body);\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).not.toBeInTheDocument();\n });\n\n expect(onInlineDropdownToolbarClose).toHaveBeenCalledWith(mockEditor);\n });\n\n it('uses the current node when closing on outside click after the node prop changes', async () => {\n const onToolbarCloseRequest = jest.fn((_tuple, _editor, onConfirm) => onConfirm());\n const options = {\n ...mockOptions,\n onToolbarCloseRequest,\n };\n const updatedNode = {\n attrs: { index: '1', value: 'Updated Option', error: false },\n nodeSize: 1,\n };\n\n const { queryByTestId, rerender } = render(<InlineDropdown {...defaultProps} options={options} selected={true} />);\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n\n rerender(<InlineDropdown {...defaultProps} options={options} node={updatedNode} selected={true} />);\n\n fireEvent.mouseDown(document.body);\n\n await waitFor(() => {\n expect(onToolbarCloseRequest).toHaveBeenCalledWith(\n [updatedNode, 5],\n expect.anything(),\n expect.any(Function),\n expect.any(Function),\n );\n });\n });\n\n it('respects hold state for the current node after the node prop changes', async () => {\n const updatedNode = {\n attrs: { index: '1', value: 'Updated Option', error: false },\n nodeSize: 1,\n };\n\n mockEditor._holdInlineDropdownToolbarIndex = '1';\n\n const { queryByTestId, rerender } = render(<InlineDropdown {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n\n rerender(<InlineDropdown {...defaultProps} node={updatedNode} selected={true} />);\n\n fireEvent.mouseDown(document.body);\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n });\n\n it('rebinds the outside-click listener when the node prop changes while the toolbar is open', async () => {\n const addSpy = jest.spyOn(document, 'addEventListener');\n const removeSpy = jest.spyOn(document, 'removeEventListener');\n const updatedNode = { ...mockNode, attrs: { ...mockNode.attrs, value: 'Updated Option' } };\n\n const { rerender } = render(<InlineDropdown {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(addSpy).toHaveBeenCalledWith('mousedown', expect.any(Function));\n });\n\n const removeCallsBeforeRerender = removeSpy.mock.calls.filter(([type]) => type === 'mousedown').length;\n\n rerender(<InlineDropdown {...defaultProps} node={updatedNode} selected={true} />);\n\n await waitFor(() => {\n const removeCallsAfterRerender = removeSpy.mock.calls.filter(([type]) => type === 'mousedown').length;\n expect(removeCallsAfterRerender).toBeGreaterThan(removeCallsBeforeRerender);\n expect(addSpy).toHaveBeenCalledWith('mousedown', expect.any(Function));\n });\n\n addSpy.mockRestore();\n removeSpy.mockRestore();\n });\n\n it('has correct border styling', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const dropdownDiv = container.querySelector('div[style*=\"border\"]');\n expect(dropdownDiv).toHaveStyle({ border: '1px solid #C0C3CF' });\n });\n\n it('has correct min width', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const dropdownDiv = container.querySelector('div[style*=\"border\"]');\n expect(dropdownDiv).toHaveStyle({ minWidth: '178px' });\n });\n\n it('positions chevron correctly', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const chevron = container.querySelector('svg');\n // Chevron styling is applied inline, just verify it rendered\n if (chevron) {\n expect(chevron).toBeInTheDocument();\n } else {\n expect(container).toBeInTheDocument();\n }\n });\n\n it('has ellipsis for overflow text', () => {\n const { container } = render(<InlineDropdown {...defaultProps} />);\n const textContainer = container.querySelector('div[style*=\"overflow\"]');\n expect(textContainer).toHaveStyle({ textOverflow: 'ellipsis', whiteSpace: 'nowrap' });\n });\n\n it('portals toolbar into editor container when _tiptapContainerEl is set', async () => {\n const containerEl = document.createElement('div');\n const editor = buildMockEditor({ _tiptapContainerEl: containerEl });\n\n render(<InlineDropdown {...defaultProps} editor={editor} selected={true} />);\n\n await waitFor(() => {\n expect(mockCreatePortal).toHaveBeenCalled();\n });\n\n expect(mockCreatePortal.mock.calls[0][1]).toBe(containerEl);\n });\n\n it('portals toolbar into document.body when _tiptapContainerEl is missing', async () => {\n const editor = buildMockEditor({ _tiptapContainerEl: undefined });\n\n render(<InlineDropdown {...defaultProps} editor={editor} selected={true} />);\n\n await waitFor(() => {\n expect(mockCreatePortal).toHaveBeenCalled();\n });\n\n expect(mockCreatePortal.mock.calls[0][1]).toBe(document.body);\n });\n\n it('passes editorCallback to InlineDropdownToolbar', async () => {\n const mockToolbarComponent = jest.fn(({ editorCallback }) => {\n editorCallback?.({ instanceId: 'test-instance' });\n return <div data-testid=\"inline-dropdown-toolbar\">Toolbar</div>;\n });\n\n const mockOptionsWithCallback = {\n respAreaToolbar: jest.fn(() => mockToolbarComponent),\n };\n\n const { queryByTestId } = render(\n <InlineDropdown {...defaultProps} options={mockOptionsWithCallback} selected={true} />,\n );\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n });\n\n it('stores toolbar editor instance in ref when editorCallback is called', async () => {\n let capturedCallback;\n const mockToolbarComponent = ({ editorCallback }) => {\n capturedCallback = editorCallback;\n return <div data-testid=\"inline-dropdown-toolbar\">Toolbar</div>;\n };\n\n const mockOptionsWithCallback = {\n respAreaToolbar: jest.fn(() => mockToolbarComponent),\n };\n\n const { queryByTestId } = render(\n <InlineDropdown {...defaultProps} options={mockOptionsWithCallback} selected={true} />,\n );\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n\n // Verify callback exists\n expect(capturedCallback).toBeDefined();\n });\n\n it('handles click outside logic with data-toolbar-for attribute', async () => {\n const editorWithInstanceId = {\n ...mockEditor,\n instanceId: 'editor-123',\n _toolbarOpened: false,\n };\n\n // Mock the toolbar callback to set the toolbar editor instance\n let capturedCallback;\n const mockToolbarComponent = ({ editorCallback }) => {\n React.useEffect(() => {\n capturedCallback = editorCallback;\n if (editorCallback) {\n editorCallback({ instanceId: 'editor-123' });\n }\n }, [editorCallback]);\n return <div data-testid=\"inline-dropdown-toolbar\">Toolbar</div>;\n };\n\n const mockOptionsWithCallback = {\n respAreaToolbar: jest.fn(() => mockToolbarComponent),\n };\n\n const { container, queryByTestId } = render(\n <InlineDropdown\n {...defaultProps}\n editor={editorWithInstanceId}\n options={mockOptionsWithCallback}\n selected={true}\n />,\n );\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n\n // Create an element with data-toolbar-for attribute\n const otherToolbar = document.createElement('div');\n otherToolbar.setAttribute('data-toolbar-for', 'editor-456');\n document.body.appendChild(otherToolbar);\n\n await waitFor(() => {\n fireEvent.mouseDown(otherToolbar);\n });\n\n // Cleanup\n document.body.removeChild(otherToolbar);\n expect(container).toBeInTheDocument();\n });\n\n it('does not close when clicking inside same editor toolbar', async () => {\n const editorWithInstanceId = {\n ...mockEditor,\n instanceId: 'editor-123',\n _toolbarOpened: false,\n };\n\n let toolbarEditorInstance;\n const mockToolbarComponent = ({ editorCallback }) => {\n React.useEffect(() => {\n if (editorCallback) {\n editorCallback({ instanceId: 'editor-123' });\n toolbarEditorInstance = { instanceId: 'editor-123' };\n }\n }, [editorCallback]);\n return <div data-testid=\"inline-dropdown-toolbar\">Toolbar</div>;\n };\n\n const mockOptionsWithCallback = {\n respAreaToolbar: jest.fn(() => mockToolbarComponent),\n };\n\n render(\n <InlineDropdown\n {...defaultProps}\n editor={editorWithInstanceId}\n options={mockOptionsWithCallback}\n selected={true}\n />,\n );\n\n await waitFor(() => {\n expect(mockOptionsWithCallback.respAreaToolbar).toHaveBeenCalled();\n });\n });\n\n it('checks editor._toolbarOpened in click outside handler', async () => {\n const editorWithToolbarOpened = buildMockEditor({ _toolbarOpened: true });\n\n const { queryByTestId } = render(\n <InlineDropdown {...defaultProps} editor={editorWithToolbarOpened} selected={true} />,\n );\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n\n // When _toolbarOpened is true, clicking outside should not close\n fireEvent.mouseDown(document.body);\n\n // Toolbar should still be visible\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n\n it('does not close toolbar when clicking the page scrollbar (documentElement)', async () => {\n const { queryByTestId } = render(<InlineDropdown {...defaultProps} selected={true} />);\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n\n fireEvent.mouseDown(document.documentElement);\n\n await waitFor(() => {\n expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n });\n });\n\n it('renders delete control on portaled custom toolbar when container el is set', async () => {\n const { findByLabelText } = render(<InlineDropdown {...defaultProps} selected />);\n expect(await findByLabelText('Delete')).toBeInTheDocument();\n });\n\n it('does not render portaled delete control when _tiptapContainerEl is missing', async () => {\n const editor = buildMockEditor({ _tiptapContainerEl: undefined });\n const { queryByLabelText, findByTestId } = render(<InlineDropdown {...defaultProps} editor={editor} selected />);\n expect(await findByTestId('inline-dropdown-toolbar')).toBeInTheDocument();\n expect(queryByLabelText('Delete')).not.toBeInTheDocument();\n });\n\n it('delete clears toolbar flag, removes node range, dispatches, and focuses', async () => {\n mockEditor._toolbarOpened = true;\n const { findByLabelText } = render(<InlineDropdown {...defaultProps} selected />);\n fireEvent.mouseDown(await findByLabelText('Delete'));\n expect(mockEditor.state.tr.delete).toHaveBeenCalledWith(5, 6);\n expect(mockEditor.view.dispatch).toHaveBeenCalledTimes(2);\n expect(mockEditor.view.dispatch).toHaveBeenNthCalledWith(1, mockEditor.state.tr);\n expect(mockEditor.view.dispatch).toHaveBeenNthCalledWith(2, mockEditor.state.tr);\n expect(mockEditor._toolbarOpened).toBe(false);\n expect(mockEditor.commands.focus).toHaveBeenCalled();\n });\n});\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAAwD,IAAAI,SAAA;AAAA,SAAAC,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAExDoB,IAAI,CAACC,IAAI,CAAC,yBAAyB,EAAE;EAAA,OAAO;IAC1CC,UAAU,EAAEF,IAAI,CAACG,EAAE,CAAC;EACtB,CAAC;AAAA,CAAC,CAAC;AAEHH,IAAI,CAACC,IAAI,CAAC,eAAe,EAAE;EAAA,OAAO;IAChCG,eAAe,EAAE,SAAjBA,eAAeA,CAAAC,IAAA;MAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;QAAKC,KAAK,OAAAC,yBAAA,aAAAH,IAAA,EAAA3B,SAAA;MAAA,oBACpCN,MAAA,YAAAqC,aAAA,YAAAC,SAAA;QAAK,eAAY;MAAmB,GAAKH,KAAK,GAC3CD,QACE,CAAC;IAAA;EAEV,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMK,gBAAgB,GAAGX,IAAI,CAACG,EAAE,CAAC,UAACS,IAAI;EAAA,OAAKA,IAAI;AAAA,EAAC;AAEhDZ,IAAI,CAACC,IAAI,CAAC,WAAW,EAAE;EAAA,OAAAT,aAAA,CAAAA,aAAA,KAClBQ,IAAI,CAACa,aAAa,CAAC,WAAW,CAAC;IAClCC,YAAY,EAAE,SAAdA,YAAYA,CAAA;MAAA,OAAeH,gBAAgB,CAAApB,KAAA,SAAAE,SAAQ,CAAC;IAAA;EAAA;AAAA,CACpD,CAAC;AAEHsB,QAAQ,CAAC,gBAAgB,EAAE,YAAM;EAC/B,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAA,EAAuB;IAAA,IAAnBC,SAAS,GAAAxB,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAyB,SAAA,GAAAzB,SAAA,MAAG,CAAC,CAAC;IACrC,IAAM0B,UAAU,GAAGnB,IAAI,CAACG,EAAE,CAAC,UAACiB,GAAG;MAAA,OAAMA,GAAG,KAAK,CAAC,GAAG;QAAEC,QAAQ,EAAE;MAAE,CAAC,GAAG,IAAI;IAAA,CAAC,CAAC;IACzE,IAAMC,OAAO,GAAG;MACdC,WAAW,EAAEvB,IAAI,CAACG,EAAE,CAAC,CAAC;MACtBqB,MAAM,EAAEL;IACV,CAAC;IACD,IAAMM,MAAM,GAAG;MACb,UAAQzB,IAAI,CAACG,EAAE,CAAC,CAAC;MACjBuB,GAAG,EAAE;QAAEF,MAAM,EAAEL;MAAW,CAAC;MAC3BQ,YAAY,EAAE3B,IAAI,CAACG,EAAE,CAAC,CAAC;MACvByB,OAAO,EAAE5B,IAAI,CAACG,EAAE,CAAC,SAASyB,OAAOA,CAAA,EAAG;QAClC,OAAOH,MAAM;MACf,CAAC;IACH,CAAC;IACD,OAAAjC,aAAA;MACEqC,KAAK,EAAE;QACLC,SAAS,EAAE;UACTC,IAAI,EAAE,CAAC;UACPC,EAAE,EAAE;QACN,CAAC;QACDC,EAAE,EAAER,MAAM;QACVC,GAAG,EAAEJ;MACP,CAAC;MACDY,IAAI,EAAE;QACJC,WAAW,EAAEnC,IAAI,CAACG,EAAE,CAAC;UAAA,OAAO;YAAEiC,GAAG,EAAE,GAAG;YAAEC,IAAI,EAAE;UAAG,CAAC;QAAA,CAAC,CAAC;QACpDC,QAAQ,EAAEtC,IAAI,CAACG,EAAE,CAAC;MACpB,CAAC;MACDoC,QAAQ,EAAE;QACRC,KAAK,EAAExC,IAAI,CAACG,EAAE,CAAC;MACjB,CAAC;MACDsC,kBAAkB,EAAEC,QAAQ,CAACjC,aAAa,CAAC,KAAK,CAAC;MACjDkC,cAAc,EAAE;IAAK,GAClB1B,SAAS;EAEhB,CAAC;EAED,IAAI2B,UAAU;EAEd,IAAMC,QAAQ,GAAG;IACfC,KAAK,EAAE;MACLC,KAAK,EAAE,GAAG;MACVC,KAAK,EAAE,iBAAiB;MACxBC,KAAK,EAAE;IACT,CAAC;IACD5B,QAAQ,EAAE;EACZ,CAAC;EAED,IAAM6B,WAAW,GAAG;IAClBC,eAAe,EAAEnD,IAAI,CAACG,EAAE,CAAC;MAAA,OAAM;QAAA,oBAAM/B,MAAA,YAAAqC,aAAA;UAAK,eAAY;QAAyB,GAAC,SAAY,CAAC;MAAA;IAAA;EAC/F,CAAC;EAED,IAAM2C,YAAY,GAAG;IACnBC,MAAM,EAAET,UAAU;IAClBhC,IAAI,EAAEiC,QAAQ;IACdS,MAAM,EAAE,SAARA,MAAMA,CAAA;MAAA,OAAQ,CAAC;IAAA;IACfC,OAAO,EAAEL,WAAW;IACpBM,QAAQ,EAAE;EACZ,CAAC;EAEDC,UAAU,CAAC,YAAM;IACfzD,IAAI,CAAC0D,aAAa,CAAC,CAAC;IACpB/C,gBAAgB,CAACgD,SAAS,CAAC,CAAC;IAC5Bf,UAAU,GAAG5B,eAAe,CAAC,CAAC;IAC9BoC,YAAY,CAACC,MAAM,GAAGT,UAAU;IAChC7D,MAAM,CAACgB,cAAc,CAAC2C,QAAQ,CAACkB,IAAI,EAAE,uBAAuB,EAAE;MAC5DZ,KAAK,EAAEhD,IAAI,CAACG,EAAE,CAAC;QAAA,OAAO;UAAEiC,GAAG,EAAE,CAAC;UAAEC,IAAI,EAAE;QAAE,CAAC;MAAA,CAAC,CAAC;MAC3CwB,YAAY,EAAE;IAChB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFC,EAAE,CAAC,0BAA0B,EAAE,YAAM;IACnC,IAAAC,OAAA,GAAsB,IAAAC,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAAF,OAAA,CAATE,SAAS;IACjBC,MAAM,CAACD,SAAS,CAAC,CAACE,iBAAiB,CAAC,CAAC;EACvC,CAAC,CAAC;EAEFL,EAAE,CAAC,yBAAyB,EAAE,YAAM;IAClC,IAAAM,QAAA,GAAwB,IAAAJ,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA5DiB,WAAW,GAAAD,QAAA,CAAXC,WAAW;IACnBH,MAAM,CAACG,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAACF,iBAAiB,CAAC,CAAC;EAC9D,CAAC,CAAC;EAEFL,EAAE,CAAC,yBAAyB,EAAE,YAAM;IAClC,IAAAQ,QAAA,GAAsB,IAAAN,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAAK,QAAA,CAATL,SAAS;IACjB,IAAMM,QAAQ,GAAGN,SAAS,CAACO,aAAa,CAAC,sBAAsB,CAAC;IAChEN,MAAM,CAACK,QAAQ,CAAC,CAACJ,iBAAiB,CAAC,CAAC;EACtC,CAAC,CAAC;EAEFL,EAAE,CAAC,gDAAgD,EAAE,YAAM;IACzD,IAAAW,QAAA,GAAsB,IAAAT,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAAQ,QAAA,CAATR,SAAS;IACjB,IAAMM,QAAQ,GAAGN,SAAS,CAACO,aAAa,CAAC,sBAAsB,CAAC;IAEhEN,MAAM,CAAChE,yBAAU,CAAC,CAACwE,oBAAoB,CAACH,QAAQ,CAAC;EACnD,CAAC,CAAC;EAEFT,EAAE,CAAC,wCAAwC,EAAE,YAAM;IACjD,IAAMa,WAAW,GAAAnF,aAAA,CAAAA,aAAA,KACZqD,QAAQ;MACXC,KAAK,EAAAtD,aAAA,CAAAA,aAAA,KACAqD,QAAQ,CAACC,KAAK;QACjBE,KAAK,EAAE;MAA2B;IACnC,EACF;IAED,IAAA4B,QAAA,GAAgC,IAAAZ,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAApEa,SAAS,GAAAW,QAAA,CAATX,SAAS;MAAEY,QAAQ,GAAAD,QAAA,CAARC,QAAQ;IAE3B3E,yBAAU,CAACyD,SAAS,CAAC,CAAC;IAEtBkB,QAAQ,cAACzG,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;MAAExC,IAAI,EAAE+D;IAAY,EAAE,CAAC,CAAC;IAEjE,IAAMJ,QAAQ,GAAGN,SAAS,CAACO,aAAa,CAAC,sBAAsB,CAAC;IAChEN,MAAM,CAAChE,yBAAU,CAAC,CAACwE,oBAAoB,CAACH,QAAQ,CAAC;EACnD,CAAC,CAAC;EAEFT,EAAE,CAAC,yFAAyF,EAAE,YAAM;IAClG,IAAAgB,QAAA,GAAmC,IAAAd,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAAvEa,SAAS,GAAAa,QAAA,CAATb,SAAS;MAAEI,WAAW,GAAAS,QAAA,CAAXT,WAAW;IAC9B,IAAME,QAAQ,GAAGN,SAAS,CAACO,aAAa,CAAC,sBAAsB,CAAC;IAChEN,MAAM,CAACK,QAAQ,CAAC,CAACQ,WAAW,CAAC;MAAEC,MAAM,EAAE;IAAQ,CAAC,CAAC;IACjD,IAAMC,OAAO,GAAGZ,WAAW,CAAC,mBAAmB,CAAC;IAChDH,MAAM,CAACe,OAAO,CAACC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAACC,GAAG,CAACC,OAAO,CAAC,QAAQ,CAAC;EACnE,CAAC,CAAC;EAEFtB,EAAE,CAAC,sBAAsB,EAAE,YAAM;IAC/B,IAAAuB,QAAA,GAAsB,IAAArB,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAAoB,QAAA,CAATpB,SAAS;IACjB,IAAMqB,OAAO,GAAGrB,SAAS,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9CN,MAAM,CAACoB,OAAO,CAAC,CAACnB,iBAAiB,CAAC,CAAC;EACrC,CAAC,CAAC;EAEFL,EAAE,CAAC,4DAA4D,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAC,QAAA;IAAA,IAAAC,QAAA,EAAAC,aAAA;IAAA,OAAAJ,YAAA,YAAAK,IAAA,WAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAAAL,QAAA,GACrC,IAAA3B,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEI,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAA9EoC,aAAa,GAAAD,QAAA,CAAbC,aAAa;UAAAE,QAAA,CAAAE,IAAA;UAAA,OACf,IAAAC,eAAO,EAAC,YAAM;YAClB;YACA/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;QAAA;UAAA,OAAA2B,QAAA,CAAAI,IAAA;MAAA;IAAA,GAAAR,OAAA;EAAA,CACH,GAAC;EAEF5B,EAAE,CAAC,yCAAyC,EAAE,YAAM;IAClD,IAAAqC,QAAA,GAA0B,IAAAnC,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;QAAEI,QAAQ,EAAE;MAAM,EAAE,CAAC,CAAC;MAA/EoC,aAAa,GAAAO,QAAA,CAAbP,aAAa;IACrB1B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACT,GAAG,CAAChB,iBAAiB,CAAC,CAAC;EAC1E,CAAC,CAAC;EAEFL,EAAE,CAAC,wBAAwB,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAW,SAAA;IAAA,IAAAC,QAAA,EAAApC,SAAA,EAAA2B,aAAA,EAAAU,QAAA;IAAA,OAAAd,YAAA,YAAAK,IAAA,WAAAU,SAAA;MAAA,kBAAAA,SAAA,CAAAR,IAAA,GAAAQ,SAAA,CAAAP,IAAA;QAAA;UAAAK,QAAA,GACU,IAAArC,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC,EAAzEa,SAAS,GAAAoC,QAAA,CAATpC,SAAS,EAAE2B,aAAa,GAAAS,QAAA,CAAbT,aAAa;UAC1BU,QAAQ,GAAGrC,SAAS,CAACO,aAAa,CAAC,sBAAsB,CAAC;UAAA,KAC5D8B,QAAQ;YAAAC,SAAA,CAAAP,IAAA;YAAA;UAAA;UACVQ,iBAAS,CAACC,KAAK,CAACH,QAAQ,CAAC;UAACC,SAAA,CAAAP,IAAA;UAAA,OACpB,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;UAAAoC,SAAA,CAAAP,IAAA;UAAA;QAAA;UAEF;UACA9B,MAAM,CAACD,SAAS,CAAC,CAACE,iBAAiB,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAoC,SAAA,CAAAL,IAAA;MAAA;IAAA,GAAAE,QAAA;EAAA,CAEzC,GAAC;EAEFtC,EAAE,CAAC,gCAAgC,EAAE,YAAM;IACzC,IAAA4C,QAAA,GAAsB,IAAA1C,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAAyC,QAAA,CAATzC,SAAS;IACjB,IAAMgB,OAAO,GAAGhB,SAAS,CAACO,aAAa,CAAC,mCAAmC,CAAC;IAC5EN,MAAM,CAACe,OAAO,CAAC,CAACF,WAAW,CAAC;MAAE4B,MAAM,EAAE;IAAO,CAAC,CAAC;EACjD,CAAC,CAAC;EAEF7C,EAAE,CAAC,yBAAyB,EAAE,YAAM;IAClC,IAAA8C,SAAA,GAAsB,IAAA5C,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAA2C,SAAA,CAAT3C,SAAS;IACjB,IAAMgB,OAAO,GAAGhB,SAAS,CAACO,aAAa,CAAC,mCAAmC,CAAC;IAC5EN,MAAM,CAACe,OAAO,CAAC,CAACF,WAAW,CAAC;MAAE8B,OAAO,EAAE;IAAc,CAAC,CAAC;EACzD,CAAC,CAAC;EAEF/C,EAAE,CAAC,0BAA0B,EAAE,YAAM;IACnC,IAAAgD,SAAA,GAAsB,IAAA9C,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAA6C,SAAA,CAAT7C,SAAS;IACjB,IAAMgB,OAAO,GAAGhB,SAAS,CAACO,aAAa,CAAC,mCAAmC,CAAC;IAC5EN,MAAM,CAACe,OAAO,CAAC,CAACF,WAAW,CAAC;MAAEgC,MAAM,EAAE;IAAU,CAAC,CAAC;EACpD,CAAC,CAAC;EAEFjD,EAAE,CAAC,kCAAkC,EAAE,YAAM;IAC3C,IAAMkD,SAAS,GAAAxH,aAAA,CAAAA,aAAA,KAAQqD,QAAQ;MAAEC,KAAK,EAAAtD,aAAA,CAAAA,aAAA,KAAOqD,QAAQ,CAACC,KAAK;QAAEE,KAAK,EAAE;MAAE;IAAE,EAAE;IAC1E,IAAAiE,SAAA,GAAsB,IAAAjD,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;QAAExC,IAAI,EAAEoG;MAAU,EAAE,CAAC,CAAC;MAA3E/C,SAAS,GAAAgD,SAAA,CAAThD,SAAS;IACjBC,MAAM,CAACD,SAAS,CAAC,CAACE,iBAAiB,CAAC,CAAC;EACvC,CAAC,CAAC;EAEFL,EAAE,CAAC,2CAA2C,EAAE,YAAM;IACpD,IAAAE,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;IAC5Cc,MAAM,CAAChB,WAAW,CAACC,eAAe,CAAC,CAACuB,oBAAoB,CAAC,CAAC7B,QAAQ,EAAE,CAAC,CAAC,EAAED,UAAU,EAAEsB,MAAM,CAACgD,GAAG,CAACC,QAAQ,CAAC,CAAC;EAC3G,CAAC,CAAC;EAEFrD,EAAE,CAAC,iCAAiC,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA2B,SAAA;IAAA,IAAAC,SAAA,EAAApD,SAAA,EAAA2B,aAAA;IAAA,OAAAJ,YAAA,YAAAK,IAAA,WAAAyB,SAAA;MAAA,kBAAAA,SAAA,CAAAvB,IAAA,GAAAuB,SAAA,CAAAtB,IAAA;QAAA;UAAAqB,SAAA,GACC,IAAArD,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEI,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAAzFS,SAAS,GAAAoD,SAAA,CAATpD,SAAS,EAAE2B,aAAa,GAAAyB,SAAA,CAAbzB,aAAa;UAAA0B,SAAA,CAAAtB,IAAA;UAAA,OAC1B,IAAAC,eAAO,EAAC,YAAM;YAClBO,iBAAS,CAACe,SAAS,CAAC7E,QAAQ,CAACkB,IAAI,CAAC;UACpC,CAAC,CAAC;QAAA;UAAA0D,SAAA,CAAAtB,IAAA;UAAA,OAEI,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACT,GAAG,CAAChB,iBAAiB,CAAC,CAAC;UAC1E,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAmD,SAAA,CAAApB,IAAA;MAAA;IAAA,GAAAkB,QAAA;EAAA,CACH,GAAC;EAEFtD,EAAE,CAAC,2DAA2D,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA+B,SAAA;IAAA,IAAAC,4BAAA,EAAAlE,OAAA,EAAAmE,SAAA,EAAA9B,aAAA;IAAA,OAAAJ,YAAA,YAAAK,IAAA,WAAA8B,SAAA;MAAA,kBAAAA,SAAA,CAAA5B,IAAA,GAAA4B,SAAA,CAAA3B,IAAA;QAAA;UACxDyB,4BAA4B,GAAGzH,IAAI,CAACG,EAAE,CAAC,CAAC;UACxCoD,OAAO,GAAA/D,aAAA,CAAAA,aAAA,KACR0D,WAAW;YACduE,4BAA4B,EAA5BA;UAA4B;UAAAC,SAAA,GAGJ,IAAA1D,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEG,OAAO,EAAEA,OAAQ;YAACC,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAAhGoC,aAAa,GAAA8B,SAAA,CAAb9B,aAAa;UAAA+B,SAAA,CAAA3B,IAAA;UAAA,OAEf,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;UAEFqC,iBAAS,CAACe,SAAS,CAAC7E,QAAQ,CAACkB,IAAI,CAAC;UAAC+D,SAAA,CAAA3B,IAAA;UAAA,OAE7B,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACT,GAAG,CAAChB,iBAAiB,CAAC,CAAC;UAC1E,CAAC,CAAC;QAAA;UAEFD,MAAM,CAACuD,4BAA4B,CAAC,CAAC/C,oBAAoB,CAAC9B,UAAU,CAAC;QAAC;QAAA;UAAA,OAAA+E,SAAA,CAAAzB,IAAA;MAAA;IAAA,GAAAsB,QAAA;EAAA,CACvE,GAAC;EAEF1D,EAAE,CAAC,iFAAiF,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAmC,SAAA;IAAA,IAAAC,qBAAA,EAAAtE,OAAA,EAAAoB,WAAA,EAAAmD,SAAA,EAAAlC,aAAA,EAAAf,QAAA;IAAA,OAAAW,YAAA,YAAAK,IAAA,WAAAkC,SAAA;MAAA,kBAAAA,SAAA,CAAAhC,IAAA,GAAAgC,SAAA,CAAA/B,IAAA;QAAA;UAC9E6B,qBAAqB,GAAG7H,IAAI,CAACG,EAAE,CAAC,UAAC6H,MAAM,EAAEC,OAAO,EAAEC,SAAS;YAAA,OAAKA,SAAS,CAAC,CAAC;UAAA,EAAC;UAC5E3E,OAAO,GAAA/D,aAAA,CAAAA,aAAA,KACR0D,WAAW;YACd2E,qBAAqB,EAArBA;UAAqB;UAEjBlD,WAAW,GAAG;YAClB7B,KAAK,EAAE;cAAEC,KAAK,EAAE,GAAG;cAAEC,KAAK,EAAE,gBAAgB;cAAEC,KAAK,EAAE;YAAM,CAAC;YAC5D5B,QAAQ,EAAE;UACZ,CAAC;UAAAyG,SAAA,GAEmC,IAAA9D,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEG,OAAO,EAAEA,OAAQ;YAACC,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAA1GoC,aAAa,GAAAkC,SAAA,CAAblC,aAAa,EAAEf,QAAQ,GAAAiD,SAAA,CAARjD,QAAQ;UAAAkD,SAAA,CAAA/B,IAAA;UAAA,OAEzB,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;UAEFU,QAAQ,cAACzG,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEG,OAAO,EAAEA,OAAQ;YAAC3C,IAAI,EAAE+D,WAAY;YAACnB,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC;UAEnGgD,iBAAS,CAACe,SAAS,CAAC7E,QAAQ,CAACkB,IAAI,CAAC;UAACmE,SAAA,CAAA/B,IAAA;UAAA,OAE7B,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC2D,qBAAqB,CAAC,CAACnD,oBAAoB,CAChD,CAACC,WAAW,EAAE,CAAC,CAAC,EAChBT,MAAM,CAACiE,QAAQ,CAAC,CAAC,EACjBjE,MAAM,CAACgD,GAAG,CAACC,QAAQ,CAAC,EACpBjD,MAAM,CAACgD,GAAG,CAACC,QAAQ,CACrB,CAAC;UACH,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAY,SAAA,CAAA7B,IAAA;MAAA;IAAA,GAAA0B,QAAA;EAAA,CACH,GAAC;EAEF9D,EAAE,CAAC,sEAAsE,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA2C,SAAA;IAAA,IAAAzD,WAAA,EAAA0D,SAAA,EAAAzC,aAAA,EAAAf,QAAA;IAAA,OAAAW,YAAA,YAAAK,IAAA,WAAAyC,SAAA;MAAA,kBAAAA,SAAA,CAAAvC,IAAA,GAAAuC,SAAA,CAAAtC,IAAA;QAAA;UACnErB,WAAW,GAAG;YAClB7B,KAAK,EAAE;cAAEC,KAAK,EAAE,GAAG;cAAEC,KAAK,EAAE,gBAAgB;cAAEC,KAAK,EAAE;YAAM,CAAC;YAC5D5B,QAAQ,EAAE;UACZ,CAAC;UAEDuB,UAAU,CAAC2F,+BAA+B,GAAG,GAAG;UAACF,SAAA,GAEb,IAAArE,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEI,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAAxFoC,aAAa,GAAAyC,SAAA,CAAbzC,aAAa,EAAEf,QAAQ,GAAAwD,SAAA,CAARxD,QAAQ;UAAAyD,SAAA,CAAAtC,IAAA;UAAA,OAEzB,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;UAEFU,QAAQ,cAACzG,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAExC,IAAI,EAAE+D,WAAY;YAACnB,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC;UAEjFgD,iBAAS,CAACe,SAAS,CAAC7E,QAAQ,CAACkB,IAAI,CAAC;UAAC0E,SAAA,CAAAtC,IAAA;UAAA,OAE7B,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;QAAA;UAAA,OAAAmE,SAAA,CAAApC,IAAA;MAAA;IAAA,GAAAkC,QAAA;EAAA,CACH,GAAC;EAEFtE,EAAE,CAAC,yFAAyF,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA+C,SAAA;IAAA,IAAAC,MAAA,EAAAC,SAAA,EAAA/D,WAAA,EAAAgE,SAAA,EAAA9D,QAAA,EAAA+D,yBAAA;IAAA,OAAApD,YAAA,YAAAK,IAAA,WAAAgD,SAAA;MAAA,kBAAAA,SAAA,CAAA9C,IAAA,GAAA8C,SAAA,CAAA7C,IAAA;QAAA;UACtFyC,MAAM,GAAGzI,IAAI,CAAC8I,KAAK,CAACpG,QAAQ,EAAE,kBAAkB,CAAC;UACjDgG,SAAS,GAAG1I,IAAI,CAAC8I,KAAK,CAACpG,QAAQ,EAAE,qBAAqB,CAAC;UACvDiC,WAAW,GAAAnF,aAAA,CAAAA,aAAA,KAAQqD,QAAQ;YAAEC,KAAK,EAAAtD,aAAA,CAAAA,aAAA,KAAOqD,QAAQ,CAACC,KAAK;cAAEE,KAAK,EAAE;YAAgB;UAAE;UAAA2F,SAAA,GAEnE,IAAA3E,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEI,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAAzEqB,QAAQ,GAAA8D,SAAA,CAAR9D,QAAQ;UAAAgE,SAAA,CAAA7C,IAAA;UAAA,OAEV,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAACuE,MAAM,CAAC,CAAC/D,oBAAoB,CAAC,WAAW,EAAER,MAAM,CAACgD,GAAG,CAACC,QAAQ,CAAC,CAAC;UACxE,CAAC,CAAC;QAAA;UAEIyB,yBAAyB,GAAGF,SAAS,CAACzI,IAAI,CAAC8I,KAAK,CAAC5J,MAAM,CAAC,UAAA6J,KAAA;YAAA,IAAAC,KAAA,OAAAC,eAAA,aAAAF,KAAA;cAAEG,IAAI,GAAAF,KAAA;YAAA,OAAME,IAAI,KAAK,WAAW;UAAA,EAAC,CAACzJ,MAAM;UAEtGmF,QAAQ,cAACzG,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAExC,IAAI,EAAE+D,WAAY;YAACnB,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC;UAACqF,SAAA,CAAA7C,IAAA;UAAA,OAE5E,IAAAC,eAAO,EAAC,YAAM;YAClB,IAAMmD,wBAAwB,GAAGV,SAAS,CAACzI,IAAI,CAAC8I,KAAK,CAAC5J,MAAM,CAAC,UAAAkK,KAAA;cAAA,IAAAC,MAAA,OAAAJ,eAAA,aAAAG,KAAA;gBAAEF,IAAI,GAAAG,MAAA;cAAA,OAAMH,IAAI,KAAK,WAAW;YAAA,EAAC,CAACzJ,MAAM;YACrGwE,MAAM,CAACkF,wBAAwB,CAAC,CAACG,eAAe,CAACX,yBAAyB,CAAC;YAC3E1E,MAAM,CAACuE,MAAM,CAAC,CAAC/D,oBAAoB,CAAC,WAAW,EAAER,MAAM,CAACgD,GAAG,CAACC,QAAQ,CAAC,CAAC;UACxE,CAAC,CAAC;QAAA;UAEFsB,MAAM,CAACe,WAAW,CAAC,CAAC;UACpBd,SAAS,CAACc,WAAW,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAX,SAAA,CAAA3C,IAAA;MAAA;IAAA,GAAAsC,QAAA;EAAA,CACzB,GAAC;EAEF1E,EAAE,CAAC,4BAA4B,EAAE,YAAM;IACrC,IAAA2F,SAAA,GAAsB,IAAAzF,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAAwF,SAAA,CAATxF,SAAS;IACjB,IAAMyF,WAAW,GAAGzF,SAAS,CAACO,aAAa,CAAC,sBAAsB,CAAC;IACnEN,MAAM,CAACwF,WAAW,CAAC,CAAC3E,WAAW,CAAC;MAAE4E,MAAM,EAAE;IAAoB,CAAC,CAAC;EAClE,CAAC,CAAC;EAEF7F,EAAE,CAAC,uBAAuB,EAAE,YAAM;IAChC,IAAA8F,SAAA,GAAsB,IAAA5F,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAA2F,SAAA,CAAT3F,SAAS;IACjB,IAAMyF,WAAW,GAAGzF,SAAS,CAACO,aAAa,CAAC,sBAAsB,CAAC;IACnEN,MAAM,CAACwF,WAAW,CAAC,CAAC3E,WAAW,CAAC;MAAE8E,QAAQ,EAAE;IAAQ,CAAC,CAAC;EACxD,CAAC,CAAC;EAEF/F,EAAE,CAAC,6BAA6B,EAAE,YAAM;IACtC,IAAAgG,SAAA,GAAsB,IAAA9F,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAA6F,SAAA,CAAT7F,SAAS;IACjB,IAAMqB,OAAO,GAAGrB,SAAS,CAACO,aAAa,CAAC,KAAK,CAAC;IAC9C;IACA,IAAIc,OAAO,EAAE;MACXpB,MAAM,CAACoB,OAAO,CAAC,CAACnB,iBAAiB,CAAC,CAAC;IACrC,CAAC,MAAM;MACLD,MAAM,CAACD,SAAS,CAAC,CAACE,iBAAiB,CAAC,CAAC;IACvC;EACF,CAAC,CAAC;EAEFL,EAAE,CAAC,gCAAgC,EAAE,YAAM;IACzC,IAAAiG,SAAA,GAAsB,IAAA/F,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,EAAK2E,YAAe,CAAC,CAAC;MAA1Da,SAAS,GAAA8F,SAAA,CAAT9F,SAAS;IACjB,IAAM+F,aAAa,GAAG/F,SAAS,CAACO,aAAa,CAAC,wBAAwB,CAAC;IACvEN,MAAM,CAAC8F,aAAa,CAAC,CAACjF,WAAW,CAAC;MAAEkF,YAAY,EAAE,UAAU;MAAEC,UAAU,EAAE;IAAS,CAAC,CAAC;EACvF,CAAC,CAAC;EAEFpG,EAAE,CAAC,sEAAsE,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA0E,SAAA;IAAA,IAAAC,WAAA,EAAA/G,MAAA;IAAA,OAAAmC,YAAA,YAAAK,IAAA,WAAAwE,SAAA;MAAA,kBAAAA,SAAA,CAAAtE,IAAA,GAAAsE,SAAA,CAAArE,IAAA;QAAA;UACnEoE,WAAW,GAAG1H,QAAQ,CAACjC,aAAa,CAAC,KAAK,CAAC;UAC3C4C,MAAM,GAAGrC,eAAe,CAAC;YAAEyB,kBAAkB,EAAE2H;UAAY,CAAC,CAAC;UAEnE,IAAApG,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEC,MAAM,EAAEA,MAAO;YAACG,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC;UAAC6G,SAAA,CAAArE,IAAA;UAAA,OAEvE,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAACvD,gBAAgB,CAAC,CAAC2J,gBAAgB,CAAC,CAAC;UAC7C,CAAC,CAAC;QAAA;UAEFpG,MAAM,CAACvD,gBAAgB,CAACV,IAAI,CAAC8I,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACwB,IAAI,CAACH,WAAW,CAAC;QAAC;QAAA;UAAA,OAAAC,SAAA,CAAAnE,IAAA;MAAA;IAAA,GAAAiE,QAAA;EAAA,CAC7D,GAAC;EAEFrG,EAAE,CAAC,uEAAuE,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA+E,SAAA;IAAA,IAAAnH,MAAA;IAAA,OAAAmC,YAAA,YAAAK,IAAA,WAAA4E,SAAA;MAAA,kBAAAA,SAAA,CAAA1E,IAAA,GAAA0E,SAAA,CAAAzE,IAAA;QAAA;UACpE3C,MAAM,GAAGrC,eAAe,CAAC;YAAEyB,kBAAkB,EAAEvB;UAAU,CAAC,CAAC;UAEjE,IAAA8C,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEC,MAAM,EAAEA,MAAO;YAACG,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC;UAACiH,SAAA,CAAAzE,IAAA;UAAA,OAEvE,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAACvD,gBAAgB,CAAC,CAAC2J,gBAAgB,CAAC,CAAC;UAC7C,CAAC,CAAC;QAAA;UAEFpG,MAAM,CAACvD,gBAAgB,CAACV,IAAI,CAAC8I,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACwB,IAAI,CAAC7H,QAAQ,CAACkB,IAAI,CAAC;QAAC;QAAA;UAAA,OAAA6G,SAAA,CAAAvE,IAAA;MAAA;IAAA,GAAAsE,QAAA;EAAA,CAC/D,GAAC;EAEF1G,EAAE,CAAC,gDAAgD,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAiF,SAAA;IAAA,IAAAC,oBAAA,EAAAC,uBAAA,EAAAC,SAAA,EAAAjF,aAAA;IAAA,OAAAJ,YAAA,YAAAK,IAAA,WAAAiF,SAAA;MAAA,kBAAAA,SAAA,CAAA/E,IAAA,GAAA+E,SAAA,CAAA9E,IAAA;QAAA;UAC7C2E,oBAAoB,GAAG3K,IAAI,CAACG,EAAE,CAAC,UAAA4K,MAAA,EAAwB;YAAA,IAArBC,cAAc,GAAAD,MAAA,CAAdC,cAAc;YACpDA,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAG;cAAEC,UAAU,EAAE;YAAgB,CAAC,CAAC;YACjD,oBAAO7M,MAAA,YAAAqC,aAAA;cAAK,eAAY;YAAyB,GAAC,SAAY,CAAC;UACjE,CAAC,CAAC;UAEImK,uBAAuB,GAAG;YAC9BzH,eAAe,EAAEnD,IAAI,CAACG,EAAE,CAAC;cAAA,OAAMwK,oBAAoB;YAAA;UACrD,CAAC;UAAAE,SAAA,GAEyB,IAAA7G,cAAM,eAC9B5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEG,OAAO,EAAEqH,uBAAwB;YAACpH,QAAQ,EAAE;UAAK,EAAE,CACvF,CAAC,EAFOoC,aAAa,GAAAiF,SAAA,CAAbjF,aAAa;UAAAkF,SAAA,CAAA9E,IAAA;UAAA,OAIf,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;QAAA;UAAA,OAAA2G,SAAA,CAAA5E,IAAA;MAAA;IAAA,GAAAwE,QAAA;EAAA,CACH,GAAC;EAEF5G,EAAE,CAAC,qEAAqE,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAyF,SAAA;IAAA,IAAAC,gBAAA,EAAAR,oBAAA,EAAAC,uBAAA,EAAAQ,SAAA,EAAAxF,aAAA;IAAA,OAAAJ,YAAA,YAAAK,IAAA,WAAAwF,SAAA;MAAA,kBAAAA,SAAA,CAAAtF,IAAA,GAAAsF,SAAA,CAAArF,IAAA;QAAA;UAElE2E,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAW,MAAA,EAA2B;YAAA,IAArBN,cAAc,GAAAM,MAAA,CAAdN,cAAc;YAC5CG,gBAAgB,GAAGH,cAAc;YACjC,oBAAO5M,MAAA,YAAAqC,aAAA;cAAK,eAAY;YAAyB,GAAC,SAAY,CAAC;UACjE,CAAC;UAEKmK,uBAAuB,GAAG;YAC9BzH,eAAe,EAAEnD,IAAI,CAACG,EAAE,CAAC;cAAA,OAAMwK,oBAAoB;YAAA;UACrD,CAAC;UAAAS,SAAA,GAEyB,IAAApH,cAAM,eAC9B5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEG,OAAO,EAAEqH,uBAAwB;YAACpH,QAAQ,EAAE;UAAK,EAAE,CACvF,CAAC,EAFOoC,aAAa,GAAAwF,SAAA,CAAbxF,aAAa;UAAAyF,SAAA,CAAArF,IAAA;UAAA,OAIf,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;UAEF;UACAD,MAAM,CAACiH,gBAAgB,CAAC,CAACI,WAAW,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAF,SAAA,CAAAnF,IAAA;MAAA;IAAA,GAAAgF,QAAA;EAAA,CACxC,GAAC;EAEFpH,EAAE,CAAC,6DAA6D,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA+F,UAAA;IAAA,IAAAC,oBAAA,EAAAN,gBAAA,EAAAR,oBAAA,EAAAC,uBAAA,EAAAc,SAAA,EAAAzH,SAAA,EAAA2B,aAAA,EAAA+F,YAAA;IAAA,OAAAnG,YAAA,YAAAK,IAAA,WAAA+F,UAAA;MAAA,kBAAAA,UAAA,CAAA7F,IAAA,GAAA6F,UAAA,CAAA5F,IAAA;QAAA;UAC1DyF,oBAAoB,GAAAjM,aAAA,CAAAA,aAAA,KACrBoD,UAAU;YACbqI,UAAU,EAAE,YAAY;YACxBtI,cAAc,EAAE;UAAK,IAGvB;UAEMgI,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAkB,MAAA,EAA2B;YAAA,IAArBb,cAAc,GAAAa,MAAA,CAAdb,cAAc;YAC5Cc,iBAAK,CAACC,SAAS,CAAC,YAAM;cACpBZ,gBAAgB,GAAGH,cAAc;cACjC,IAAIA,cAAc,EAAE;gBAClBA,cAAc,CAAC;kBAAEC,UAAU,EAAE;gBAAa,CAAC,CAAC;cAC9C;YACF,CAAC,EAAE,CAACD,cAAc,CAAC,CAAC;YACpB,oBAAO5M,MAAA,YAAAqC,aAAA;cAAK,eAAY;YAAyB,GAAC,SAAY,CAAC;UACjE,CAAC;UAEKmK,uBAAuB,GAAG;YAC9BzH,eAAe,EAAEnD,IAAI,CAACG,EAAE,CAAC;cAAA,OAAMwK,oBAAoB;YAAA;UACrD,CAAC;UAAAe,SAAA,GAEoC,IAAA1H,cAAM,eACzC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBACT0C,YAAY;YAChBC,MAAM,EAAEoI,oBAAqB;YAC7BlI,OAAO,EAAEqH,uBAAwB;YACjCpH,QAAQ,EAAE;UAAK,EAChB,CACH,CAAC,EAPOS,SAAS,GAAAyH,SAAA,CAATzH,SAAS,EAAE2B,aAAa,GAAA8F,SAAA,CAAb9F,aAAa;UAAAgG,UAAA,CAAA5F,IAAA;UAAA,OAS1B,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;UAEF;UACMwH,YAAY,GAAGjJ,QAAQ,CAACjC,aAAa,CAAC,KAAK,CAAC;UAClDkL,YAAY,CAACK,YAAY,CAAC,kBAAkB,EAAE,YAAY,CAAC;UAC3DtJ,QAAQ,CAACkB,IAAI,CAACqI,WAAW,CAACN,YAAY,CAAC;UAACC,UAAA,CAAA5F,IAAA;UAAA,OAElC,IAAAC,eAAO,EAAC,YAAM;YAClBO,iBAAS,CAACe,SAAS,CAACoE,YAAY,CAAC;UACnC,CAAC,CAAC;QAAA;UAEF;UACAjJ,QAAQ,CAACkB,IAAI,CAACsI,WAAW,CAACP,YAAY,CAAC;UACvCzH,MAAM,CAACD,SAAS,CAAC,CAACE,iBAAiB,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAyH,UAAA,CAAA1F,IAAA;MAAA;IAAA,GAAAsF,SAAA;EAAA,CACvC,GAAC;EAEF1H,EAAE,CAAC,yDAAyD,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA0G,UAAA;IAAA,IAAAV,oBAAA,EAAAW,qBAAA,EAAAzB,oBAAA,EAAAC,uBAAA;IAAA,OAAApF,YAAA,YAAAK,IAAA,WAAAwG,UAAA;MAAA,kBAAAA,UAAA,CAAAtG,IAAA,GAAAsG,UAAA,CAAArG,IAAA;QAAA;UACtDyF,oBAAoB,GAAAjM,aAAA,CAAAA,aAAA,KACrBoD,UAAU;YACbqI,UAAU,EAAE,YAAY;YACxBtI,cAAc,EAAE;UAAK;UAIjBgI,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAA2B,MAAA,EAA2B;YAAA,IAArBtB,cAAc,GAAAsB,MAAA,CAAdtB,cAAc;YAC5Cc,iBAAK,CAACC,SAAS,CAAC,YAAM;cACpB,IAAIf,cAAc,EAAE;gBAClBA,cAAc,CAAC;kBAAEC,UAAU,EAAE;gBAAa,CAAC,CAAC;gBAC5CmB,qBAAqB,GAAG;kBAAEnB,UAAU,EAAE;gBAAa,CAAC;cACtD;YACF,CAAC,EAAE,CAACD,cAAc,CAAC,CAAC;YACpB,oBAAO5M,MAAA,YAAAqC,aAAA;cAAK,eAAY;YAAyB,GAAC,SAAY,CAAC;UACjE,CAAC;UAEKmK,uBAAuB,GAAG;YAC9BzH,eAAe,EAAEnD,IAAI,CAACG,EAAE,CAAC;cAAA,OAAMwK,oBAAoB;YAAA;UACrD,CAAC;UAED,IAAA3G,cAAM,eACJ5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBACT0C,YAAY;YAChBC,MAAM,EAAEoI,oBAAqB;YAC7BlI,OAAO,EAAEqH,uBAAwB;YACjCpH,QAAQ,EAAE;UAAK,EAChB,CACH,CAAC;UAAC6I,UAAA,CAAArG,IAAA;UAAA,OAEI,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0G,uBAAuB,CAACzH,eAAe,CAAC,CAACmH,gBAAgB,CAAC,CAAC;UACpE,CAAC,CAAC;QAAA;QAAA;UAAA,OAAA+B,UAAA,CAAAnG,IAAA;MAAA;IAAA,GAAAiG,SAAA;EAAA,CACH,GAAC;EAEFrI,EAAE,CAAC,uDAAuD,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA8G,UAAA;IAAA,IAAAC,uBAAA,EAAAC,SAAA,EAAA7G,aAAA;IAAA,OAAAJ,YAAA,YAAAK,IAAA,WAAA6G,UAAA;MAAA,kBAAAA,UAAA,CAAA3G,IAAA,GAAA2G,UAAA,CAAA1G,IAAA;QAAA;UACpDwG,uBAAuB,GAAGxL,eAAe,CAAC;YAAE2B,cAAc,EAAE;UAAK,CAAC,CAAC;UAAA8J,SAAA,GAE/C,IAAAzI,cAAM,eAC9B5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEC,MAAM,EAAEmJ,uBAAwB;YAAChJ,QAAQ,EAAE;UAAK,EAAE,CACtF,CAAC,EAFOoC,aAAa,GAAA6G,SAAA,CAAb7G,aAAa;UAAA8G,UAAA,CAAA1G,IAAA;UAAA,OAIf,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;UAEF;UACAqC,iBAAS,CAACe,SAAS,CAAC7E,QAAQ,CAACkB,IAAI,CAAC;;UAElC;UACAM,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAuI,UAAA,CAAAxG,IAAA;MAAA;IAAA,GAAAqG,SAAA;EAAA,CACtE,GAAC;EAEFzI,EAAE,CAAC,2EAA2E,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAkH,UAAA;IAAA,IAAAC,SAAA,EAAAhH,aAAA;IAAA,OAAAJ,YAAA,YAAAK,IAAA,WAAAgH,UAAA;MAAA,kBAAAA,UAAA,CAAA9G,IAAA,GAAA8G,UAAA,CAAA7G,IAAA;QAAA;UAAA4G,SAAA,GACpD,IAAA5I,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEI,QAAQ,EAAE;UAAK,EAAE,CAAC,CAAC,EAA9EoC,aAAa,GAAAgH,SAAA,CAAbhH,aAAa;UAAAiH,UAAA,CAAA7G,IAAA;UAAA,OAEf,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;UAEFqC,iBAAS,CAACe,SAAS,CAAC7E,QAAQ,CAACoK,eAAe,CAAC;UAACD,UAAA,CAAA7G,IAAA;UAAA,OAExC,IAAAC,eAAO,EAAC,YAAM;YAClB/B,MAAM,CAAC0B,aAAa,CAAC,yBAAyB,CAAC,CAAC,CAACzB,iBAAiB,CAAC,CAAC;UACtE,CAAC,CAAC;QAAA;QAAA;UAAA,OAAA0I,UAAA,CAAA3G,IAAA;MAAA;IAAA,GAAAyG,SAAA;EAAA,CACH,GAAC;EAEF7I,EAAE,CAAC,4EAA4E,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAsH,UAAA;IAAA,IAAAC,SAAA,EAAAC,eAAA,EAAAC,EAAA;IAAA,OAAA1H,YAAA,YAAAK,IAAA,WAAAsH,UAAA;MAAA,kBAAAA,UAAA,CAAApH,IAAA,GAAAoH,UAAA,CAAAnH,IAAA;QAAA;UAAAgH,SAAA,GACnD,IAAAhJ,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEI,QAAQ;UAAA,EAAE,CAAC,CAAC,EAAzEyJ,eAAe,GAAAD,SAAA,CAAfC,eAAe;UAAAC,EAAA,GACvBhJ,MAAM;UAAAiJ,UAAA,CAAAnH,IAAA;UAAA,OAAOiH,eAAe,CAAC,QAAQ,CAAC;QAAA;UAAAC,EAAA,CAAAC,UAAA,CAAAC,IAAA,EAAEjJ,iBAAiB;QAAA;QAAA;UAAA,OAAAgJ,UAAA,CAAAjH,IAAA;MAAA;IAAA,GAAA6G,SAAA;EAAA,CAC1D,GAAC;EAEFjJ,EAAE,CAAC,4EAA4E,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAA4H,UAAA;IAAA,IAAAhK,MAAA,EAAAiK,SAAA,EAAAC,gBAAA,EAAAC,YAAA,EAAAC,GAAA;IAAA,OAAAjI,YAAA,YAAAK,IAAA,WAAA6H,UAAA;MAAA,kBAAAA,UAAA,CAAA3H,IAAA,GAAA2H,UAAA,CAAA1H,IAAA;QAAA;UACzE3C,MAAM,GAAGrC,eAAe,CAAC;YAAEyB,kBAAkB,EAAEvB;UAAU,CAAC,CAAC;UAAAoM,SAAA,GACtB,IAAAtJ,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEC,MAAM,EAAEA,MAAO;YAACG,QAAQ;UAAA,EAAE,CAAC,CAAC,EAAxG+J,gBAAgB,GAAAD,SAAA,CAAhBC,gBAAgB,EAAEC,YAAY,GAAAF,SAAA,CAAZE,YAAY;UAAAC,GAAA,GACtCvJ,MAAM;UAAAwJ,UAAA,CAAA1H,IAAA;UAAA,OAAOwH,YAAY,CAAC,yBAAyB,CAAC;QAAA;UAAAC,GAAA,CAAAC,UAAA,CAAAN,IAAA,EAAEjJ,iBAAiB;UACvED,MAAM,CAACqJ,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAACpI,GAAG,CAAChB,iBAAiB,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAuJ,UAAA,CAAAxH,IAAA;MAAA;IAAA,GAAAmH,SAAA;EAAA,CAC5D,GAAC;EAEFvJ,EAAE,CAAC,yEAAyE,mBAAAyB,kBAAA,0BAAAC,YAAA,YAAAC,IAAA,CAAE,SAAAkI,UAAA;IAAA,IAAAC,SAAA,EAAAX,eAAA,EAAAY,GAAA;IAAA,OAAArI,YAAA,YAAAK,IAAA,WAAAiI,UAAA;MAAA,kBAAAA,UAAA,CAAA/H,IAAA,GAAA+H,UAAA,CAAA9H,IAAA;QAAA;UAC5EpD,UAAU,CAACD,cAAc,GAAG,IAAI;UAACiL,SAAA,GACL,IAAA5J,cAAM,eAAC5F,MAAA,YAAAqC,aAAA,CAAChC,eAAA,WAAc,MAAAiC,SAAA,iBAAK0C,YAAY;YAAEI,QAAQ;UAAA,EAAE,CAAC,CAAC,EAAzEyJ,eAAe,GAAAW,SAAA,CAAfX,eAAe;UAAAY,GAAA,GACvBrH,iBAAS;UAAAsH,UAAA,CAAA9H,IAAA;UAAA,OAAiBiH,eAAe,CAAC,QAAQ,CAAC;QAAA;UAAAY,GAAA,CAAzCtG,SAAS,CAAAwG,IAAA,CAAAF,GAAA,EAAAC,UAAA,CAAAV,IAAA;UACnBlJ,MAAM,CAACtB,UAAU,CAACf,KAAK,CAACI,EAAE,UAAO,CAAC,CAACyC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;UAC7DR,MAAM,CAACtB,UAAU,CAACV,IAAI,CAACI,QAAQ,CAAC,CAAC0L,qBAAqB,CAAC,CAAC,CAAC;UACzD9J,MAAM,CAACtB,UAAU,CAACV,IAAI,CAACI,QAAQ,CAAC,CAAC2L,uBAAuB,CAAC,CAAC,EAAErL,UAAU,CAACf,KAAK,CAACI,EAAE,CAAC;UAChFiC,MAAM,CAACtB,UAAU,CAACV,IAAI,CAACI,QAAQ,CAAC,CAAC2L,uBAAuB,CAAC,CAAC,EAAErL,UAAU,CAACf,KAAK,CAACI,EAAE,CAAC;UAChFiC,MAAM,CAACtB,UAAU,CAACD,cAAc,CAAC,CAAC4H,IAAI,CAAC,KAAK,CAAC;UAC7CrG,MAAM,CAACtB,UAAU,CAACL,QAAQ,CAACC,KAAK,CAAC,CAAC8H,gBAAgB,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAwD,UAAA,CAAA5H,IAAA;MAAA;IAAA,GAAAyH,SAAA;EAAA,CACtD,GAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,171 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _InsertImageHandler = _interopRequireDefault(require("../image/InsertImageHandler"));
5
- describe('InsertImageHandler', function () {
6
- var mockNode = {
7
- attrs: {},
8
- nodeSize: 1
9
- };
10
- var NODE_POS = 5;
11
- var nodeInfo = function nodeInfo() {
12
- var node = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : mockNode;
13
- var pos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NODE_POS;
14
- return [node, pos];
15
- };
16
- var createMockEditor = function createMockEditor() {
17
- return {
18
- _insertingImage: true,
19
- state: {
20
- doc: {},
21
- tr: {
22
- setNodeMarkup: jest.fn(function (pos, type, attrs) {
23
- return {
24
- setNodeMarkup: jest.fn()
25
- };
26
- }),
27
- "delete": jest.fn(function (from, to) {
28
- return {
29
- "delete": jest.fn()
30
- };
31
- })
32
- }
33
- },
34
- view: {
35
- dispatch: jest.fn()
36
- }
37
- };
38
- };
39
- var mockOnFinish = jest.fn();
40
- beforeEach(function () {
41
- jest.clearAllMocks();
42
- });
43
- it('creates handler instance', function () {
44
- var editor = createMockEditor();
45
- var info = nodeInfo();
46
- var handler = new _InsertImageHandler["default"](editor, info, mockOnFinish);
47
- expect(handler).toBeDefined();
48
- expect(handler.editor).toBe(editor);
49
- expect(handler.nodeInfo).toBe(info);
50
- expect(handler.node).toBe(mockNode);
51
- expect(handler.onFinish).toBe(mockOnFinish);
52
- });
53
- it('stores nodePos from nodeInfo tuple', function () {
54
- var editor = createMockEditor();
55
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(mockNode, 42), mockOnFinish);
56
- expect(handler.nodePos).toBe(42);
57
- });
58
- it('stores isPasted parameter', function () {
59
- var editor = createMockEditor();
60
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish, true);
61
- expect(handler.isPasted).toBe(true);
62
- });
63
- it('defaults isPasted to false', function () {
64
- var editor = createMockEditor();
65
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
66
- expect(handler.isPasted).toBe(false);
67
- });
68
- it('cancel deletes node and calls onFinish', function () {
69
- var editor = createMockEditor();
70
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
71
- handler.cancel();
72
- expect(mockOnFinish).toHaveBeenCalledWith(false);
73
- expect(editor._insertingImage).toBe(false);
74
- });
75
- it('updateNode dispatches transaction with new attributes', function () {
76
- var editor = createMockEditor();
77
- var mockNodeAt = jest.fn(function () {
78
- return {
79
- attrs: {
80
- existing: 'value'
81
- }
82
- };
83
- });
84
- editor.state.doc.nodeAt = mockNodeAt;
85
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
86
- handler.updateNode({
87
- newAttr: 'newValue'
88
- });
89
- expect(mockNodeAt).toHaveBeenCalledWith(NODE_POS);
90
- expect(editor.view.dispatch).toHaveBeenCalled();
91
- });
92
- it('done calls onFinish with false on error', function () {
93
- var editor = createMockEditor();
94
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
95
- var consoleLogSpy = jest.spyOn(console, 'log').mockImplementation();
96
- handler.done('error', null);
97
- expect(consoleLogSpy).toHaveBeenCalledWith('error');
98
- expect(mockOnFinish).toHaveBeenCalledWith(false);
99
- expect(editor._insertingImage).toBe(false);
100
- consoleLogSpy.mockRestore();
101
- });
102
- it('done updates node and calls onFinish with true on success', function () {
103
- var editor = createMockEditor();
104
- var mockNodeAt = jest.fn(function () {
105
- return {
106
- attrs: {}
107
- };
108
- });
109
- editor.state.doc.nodeAt = mockNodeAt;
110
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
111
- handler.done(null, 'http://example.com/image.jpg');
112
- expect(editor.view.dispatch).toHaveBeenCalled();
113
- expect(mockOnFinish).toHaveBeenCalledWith(true);
114
- expect(editor._insertingImage).toBe(false);
115
- });
116
- it('fileChosen returns early when no file provided', function () {
117
- var editor = createMockEditor();
118
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
119
- handler.fileChosen(null);
120
- expect(editor.view.dispatch).not.toHaveBeenCalled();
121
- });
122
- it('fileChosen saves file and reads it as data URL', function () {
123
- var editor = createMockEditor();
124
- var mockNodeAt = jest.fn(function () {
125
- return {
126
- attrs: {}
127
- };
128
- });
129
- editor.state.doc.nodeAt = mockNodeAt;
130
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
131
- var mockFile = new File(['content'], 'test.jpg', {
132
- type: 'image/jpeg'
133
- });
134
- global.FileReader = jest.fn(function () {
135
- this.readAsDataURL = jest.fn(function () {
136
- this.result = 'data:image/jpeg;base64,abc123';
137
- this.onload();
138
- });
139
- });
140
- handler.fileChosen(mockFile);
141
- expect(handler.chosenFile).toBe(mockFile);
142
- expect(editor._insertingImage).toBe(false);
143
- });
144
- it('progress updates node with percent', function () {
145
- var editor = createMockEditor();
146
- var mockNodeAt = jest.fn(function () {
147
- return {
148
- attrs: {}
149
- };
150
- });
151
- editor.state.doc.nodeAt = mockNodeAt;
152
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
153
- handler.progress(50, 500, 1000);
154
- expect(editor.view.dispatch).toHaveBeenCalled();
155
- });
156
- it('getChosenFile returns the chosen file', function () {
157
- var editor = createMockEditor();
158
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
159
- var mockFile = new File(['content'], 'test.jpg', {
160
- type: 'image/jpeg'
161
- });
162
- handler.chosenFile = mockFile;
163
- expect(handler.getChosenFile()).toBe(mockFile);
164
- });
165
- it('getChosenFile returns null initially', function () {
166
- var editor = createMockEditor();
167
- var handler = new _InsertImageHandler["default"](editor, nodeInfo(), mockOnFinish);
168
- expect(handler.getChosenFile()).toBeNull();
169
- });
170
- });
171
- //# sourceMappingURL=InsertImageHandler.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InsertImageHandler.test.js","names":["_InsertImageHandler","_interopRequireDefault","require","describe","mockNode","attrs","nodeSize","NODE_POS","nodeInfo","node","arguments","length","undefined","pos","createMockEditor","_insertingImage","state","doc","tr","setNodeMarkup","jest","fn","type","from","to","view","dispatch","mockOnFinish","beforeEach","clearAllMocks","it","editor","info","handler","InsertImageHandler","expect","toBeDefined","toBe","onFinish","nodePos","isPasted","cancel","toHaveBeenCalledWith","mockNodeAt","existing","nodeAt","updateNode","newAttr","toHaveBeenCalled","consoleLogSpy","spyOn","console","mockImplementation","done","mockRestore","fileChosen","not","mockFile","File","global","FileReader","readAsDataURL","result","onload","chosenFile","progress","getChosenFile","toBeNull"],"sources":["../../../src/components/__tests__/InsertImageHandler.test.js"],"sourcesContent":["import InsertImageHandler from '../image/InsertImageHandler';\n\ndescribe('InsertImageHandler', () => {\n const mockNode = {\n attrs: {},\n nodeSize: 1,\n };\n\n const NODE_POS = 5;\n\n const nodeInfo = (node = mockNode, pos = NODE_POS) => [node, pos];\n\n const createMockEditor = () => ({\n _insertingImage: true,\n state: {\n doc: {},\n tr: {\n setNodeMarkup: jest.fn((pos, type, attrs) => ({ setNodeMarkup: jest.fn() })),\n delete: jest.fn((from, to) => ({ delete: jest.fn() })),\n },\n },\n view: {\n dispatch: jest.fn(),\n },\n });\n\n const mockOnFinish = jest.fn();\n\n beforeEach(() => {\n jest.clearAllMocks();\n });\n\n it('creates handler instance', () => {\n const editor = createMockEditor();\n const info = nodeInfo();\n const handler = new InsertImageHandler(editor, info, mockOnFinish);\n expect(handler).toBeDefined();\n expect(handler.editor).toBe(editor);\n expect(handler.nodeInfo).toBe(info);\n expect(handler.node).toBe(mockNode);\n expect(handler.onFinish).toBe(mockOnFinish);\n });\n\n it('stores nodePos from nodeInfo tuple', () => {\n const editor = createMockEditor();\n const handler = new InsertImageHandler(editor, nodeInfo(mockNode, 42), mockOnFinish);\n expect(handler.nodePos).toBe(42);\n });\n\n it('stores isPasted parameter', () => {\n const editor = createMockEditor();\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish, true);\n expect(handler.isPasted).toBe(true);\n });\n\n it('defaults isPasted to false', () => {\n const editor = createMockEditor();\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n expect(handler.isPasted).toBe(false);\n });\n\n it('cancel deletes node and calls onFinish', () => {\n const editor = createMockEditor();\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n handler.cancel();\n expect(mockOnFinish).toHaveBeenCalledWith(false);\n expect(editor._insertingImage).toBe(false);\n });\n\n it('updateNode dispatches transaction with new attributes', () => {\n const editor = createMockEditor();\n const mockNodeAt = jest.fn(() => ({ attrs: { existing: 'value' } }));\n editor.state.doc.nodeAt = mockNodeAt;\n\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n handler.updateNode({ newAttr: 'newValue' });\n\n expect(mockNodeAt).toHaveBeenCalledWith(NODE_POS);\n expect(editor.view.dispatch).toHaveBeenCalled();\n });\n\n it('done calls onFinish with false on error', () => {\n const editor = createMockEditor();\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation();\n\n handler.done('error', null);\n\n expect(consoleLogSpy).toHaveBeenCalledWith('error');\n expect(mockOnFinish).toHaveBeenCalledWith(false);\n expect(editor._insertingImage).toBe(false);\n consoleLogSpy.mockRestore();\n });\n\n it('done updates node and calls onFinish with true on success', () => {\n const editor = createMockEditor();\n const mockNodeAt = jest.fn(() => ({ attrs: {} }));\n editor.state.doc.nodeAt = mockNodeAt;\n\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n handler.done(null, 'http://example.com/image.jpg');\n\n expect(editor.view.dispatch).toHaveBeenCalled();\n expect(mockOnFinish).toHaveBeenCalledWith(true);\n expect(editor._insertingImage).toBe(false);\n });\n\n it('fileChosen returns early when no file provided', () => {\n const editor = createMockEditor();\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n handler.fileChosen(null);\n expect(editor.view.dispatch).not.toHaveBeenCalled();\n });\n\n it('fileChosen saves file and reads it as data URL', () => {\n const editor = createMockEditor();\n const mockNodeAt = jest.fn(() => ({ attrs: {} }));\n editor.state.doc.nodeAt = mockNodeAt;\n\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n const mockFile = new File(['content'], 'test.jpg', { type: 'image/jpeg' });\n\n global.FileReader = jest.fn(function () {\n this.readAsDataURL = jest.fn(function () {\n this.result = 'data:image/jpeg;base64,abc123';\n this.onload();\n });\n });\n\n handler.fileChosen(mockFile);\n\n expect(handler.chosenFile).toBe(mockFile);\n expect(editor._insertingImage).toBe(false);\n });\n\n it('progress updates node with percent', () => {\n const editor = createMockEditor();\n const mockNodeAt = jest.fn(() => ({ attrs: {} }));\n editor.state.doc.nodeAt = mockNodeAt;\n\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n handler.progress(50, 500, 1000);\n\n expect(editor.view.dispatch).toHaveBeenCalled();\n });\n\n it('getChosenFile returns the chosen file', () => {\n const editor = createMockEditor();\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n const mockFile = new File(['content'], 'test.jpg', { type: 'image/jpeg' });\n handler.chosenFile = mockFile;\n\n expect(handler.getChosenFile()).toBe(mockFile);\n });\n\n it('getChosenFile returns null initially', () => {\n const editor = createMockEditor();\n const handler = new InsertImageHandler(editor, nodeInfo(), mockOnFinish);\n expect(handler.getChosenFile()).toBeNull();\n });\n});\n"],"mappings":"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","ignoreList":[]}