@brightspot/ui 3.0.1-cms-ui-migration.2 → 3.0.1-cms-ui-migration.3

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 (297) hide show
  1. package/README.md +54 -35
  2. package/dist/custom-elements.json +1924 -1924
  3. package/dist/storybook/assets/{ActionBar.stories-hJ_5cm-P.js → ActionBar.stories-CSxtZl7v.js} +1 -1
  4. package/dist/storybook/assets/{ActionItem.stories-Bjx2803w.js → ActionItem.stories-BWcMRMP3.js} +1 -1
  5. package/dist/storybook/assets/{Avatar.stories-Cj0YgZ6f.js → Avatar.stories-CYTUGXzH.js} +1 -1
  6. package/dist/storybook/assets/{AvatarGroup.stories-Lh_sQFCU.js → AvatarGroup.stories-CSYBYo_5.js} +1 -1
  7. package/dist/storybook/assets/{Badge.stories-BL7RUibx.js → Badge.stories-LuF4BuVr.js} +1 -1
  8. package/dist/storybook/assets/{Button-BPHNcxqK.js → Button-CrXCMxHb.js} +1 -1
  9. package/dist/storybook/assets/{Button.stories-CAYO4gdU.js → Button.stories-JVwxdrdM.js} +1 -1
  10. package/dist/storybook/assets/{ButtonGroup.stories-Cd13Us5K.js → ButtonGroup.stories-qtq64a1H.js} +1 -1
  11. package/dist/storybook/assets/{Celebrate.stories-D_KE3Qze.js → Celebrate.stories-DjTtaSd6.js} +1 -1
  12. package/dist/storybook/assets/{Checkbox.stories-Aj1xgZVn.js → Checkbox.stories-v1Pr5mL6.js} +1 -1
  13. package/dist/storybook/assets/{CircularProgress.stories-BecV_v6d.js → CircularProgress.stories-DkV7PJ4D.js} +1 -1
  14. package/dist/storybook/assets/{ClipboardMixin.stories-DU-WiZ2f.js → ClipboardMixin.stories-Dh5c7uSM.js} +1 -1
  15. package/dist/storybook/assets/{Color-6BZIO3FS-BYl4KZZn.js → Color-6BZIO3FS-B1gcREt6.js} +1 -1
  16. package/dist/storybook/assets/{Colors.stories-BMUVUy2q.js → Colors.stories-DnubtRqn.js} +1 -1
  17. package/dist/storybook/assets/{CombinedEffects.stories-FHcPKFm6.js → CombinedEffects.stories-By6akSve.js} +1 -1
  18. package/dist/storybook/assets/{ComponentStatesMixin-EMUnfT5y.js → ComponentStatesMixin-CPLGv3h-.js} +1 -1
  19. package/dist/storybook/assets/{ComponentStatesMixin.stories-SXq0kzS9.js → ComponentStatesMixin.stories-CiQ_lyhm.js} +1 -1
  20. package/dist/storybook/assets/{CopyToClipboard.stories-u43lhvcI.js → CopyToClipboard.stories-cJ7rl3mj.js} +1 -1
  21. package/dist/storybook/assets/{Debounce.stories-BdCn5qgO.js → Debounce.stories-Bw-goobU.js} +1 -1
  22. package/dist/storybook/assets/{DocsRenderer-LL677BLK-DxiEJ_jx.js → DocsRenderer-LL677BLK-CNW57dGQ.js} +3 -3
  23. package/dist/storybook/assets/{Dropdown.stories-BWSRwjIF.js → Dropdown.stories-CwC3HXXd.js} +1 -1
  24. package/dist/storybook/assets/{EmptyState.stories-BpobeZL5.js → EmptyState.stories-BUEJwuhP.js} +1 -1
  25. package/dist/storybook/assets/{Events.stories-CP5kMzpr.js → Events.stories-D1mf9buv.js} +1 -1
  26. package/dist/storybook/assets/{Heading.stories-CbJD-oTB.js → Heading.stories-DO906G4P.js} +1 -1
  27. package/dist/storybook/assets/{HueRipple.stories-BOABJ7zw.js → HueRipple.stories-BOySRSZB.js} +1 -1
  28. package/dist/storybook/assets/{Icon.stories-CWlUHL4j.js → Icon.stories-BsqgTbdG.js} +1 -1
  29. package/dist/storybook/assets/{IconButton.stories-BWBs-OLT.js → IconButton.stories-aza1AAKk.js} +1 -1
  30. package/dist/storybook/assets/{LinearProgress.stories-LZ0GZoxF.js → LinearProgress.stories-CDYmiiex.js} +1 -1
  31. package/dist/storybook/assets/{Pagination.stories-CbLaR3P9.js → Pagination.stories-LXB-x7YB.js} +1 -1
  32. package/dist/storybook/assets/{Popover.stories-JHrWqYZw.js → Popover.stories-DY1HesPJ.js} +1 -1
  33. package/dist/storybook/assets/{ReadyMixin-B1H2a9x8.js → ReadyMixin-DmOC67IJ.js} +1 -1
  34. package/dist/storybook/assets/{RovingTabindexMixin.stories-UMHpYG73.js → RovingTabindexMixin.stories-BWy0Rq8d.js} +1 -1
  35. package/dist/storybook/assets/{Rtc.stories-VQtNSlls.js → Rtc.stories-DrmdqqbI.js} +1 -1
  36. package/dist/storybook/assets/{ScrollShadow.stories-CYdi8Tgp.js → ScrollShadow.stories-DiKFPazh.js} +1 -1
  37. package/dist/storybook/assets/{Switch.stories-D8F2hZCf.js → Switch.stories-BgFnw8_z.js} +1 -1
  38. package/dist/storybook/assets/{Tab.stories-wgBP0lTj.js → Tab.stories-c2wLMooF.js} +1 -1
  39. package/dist/storybook/assets/{Tabs.stories-C00rr5sf.js → Tabs.stories-CjH8seNP.js} +1 -1
  40. package/dist/storybook/assets/{Throttle.stories-BhQEfJbS.js → Throttle.stories-CXysc_QE.js} +1 -1
  41. package/dist/storybook/assets/{Tooltip.stories-CGoZ5qTn.js → Tooltip.stories-6qzyByPm.js} +1 -1
  42. package/dist/storybook/assets/{Upload.stories-B3K-HAXw.js → Upload.stories-BLxykydQ.js} +1 -1
  43. package/dist/storybook/assets/{UploadItem.stories-71ArSoUh.js → UploadItem.stories-CcfcqdJW.js} +1 -1
  44. package/dist/storybook/assets/{Welcome.stories-CihlfFXS.js → Welcome.stories-CzYS_3fH.js} +1 -1
  45. package/dist/storybook/assets/{Widget.stories-1u4KbiJM.js → Widget.stories-Du7T4LAI.js} +1 -1
  46. package/dist/storybook/assets/{WithTooltip-65CFNBJE-B3Jitxw9.js → WithTooltip-65CFNBJE-D4LfXdYt.js} +1 -1
  47. package/dist/storybook/assets/{blocks-C1HaXuQB.js → blocks-DR3fGePu.js} +5 -5
  48. package/dist/storybook/assets/{formatter-EIJCOSYU-Dy9Lt9fs.js → formatter-EIJCOSYU-Cf01216O.js} +1 -1
  49. package/dist/storybook/assets/if-defined-DaMmbcIU.js +1 -0
  50. package/dist/storybook/assets/{iframe-Dx6IxWXF.js → iframe-CQArUhO8.js} +4 -4
  51. package/dist/storybook/assets/{index-OrjedSVh.js → index-B1uI_67G.js} +1 -1
  52. package/dist/storybook/assets/{onFind-YTqjw6W0.js → onFind-BpFkN2Rh.js} +1 -1
  53. package/dist/storybook/assets/{onFind.stories-DEvwTrmx.js → onFind.stories-Cxdeg69X.js} +1 -1
  54. package/dist/storybook/assets/{onRemove.stories-D5mO-Lin.js → onRemove.stories-BHEWpNrE.js} +1 -1
  55. package/dist/storybook/assets/{onVisible.stories-C3Rcz0Eb.js → onVisible.stories-DFJ3S_ZS.js} +1 -1
  56. package/dist/storybook/assets/{style-map-CiMHry7H.js → style-map-DJ83UC3V.js} +1 -1
  57. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-DIZnuhb2.js → syntaxhighlighter-ED5Y7EFY-zYN83mxK.js} +1 -1
  58. package/dist/storybook/iframe.html +1 -1
  59. package/dist/storybook/project.json +1 -1
  60. package/package.json +16 -2
  61. package/dist/storybook/assets/if-defined-CA2KmTqA.js +0 -1
  62. package/src/legacy/tool-ui/src/main/resources/settings.properties +0 -1
  63. package/src/legacy/tool-ui/src/main/webapp/WEB-INF/web.xml +0 -81
  64. package/src/legacy/tool-ui/src/main/webapp/script/bsp-uploader.js +0 -170
  65. package/src/legacy/tool-ui/src/main/webapp/script/bsp-utils.js +0 -393
  66. package/src/legacy/tool-ui/src/main/webapp/script/content/layout-element.js +0 -141
  67. package/src/legacy/tool-ui/src/main/webapp/script/input/query.js +0 -78
  68. package/src/legacy/tool-ui/src/main/webapp/script/input/workflow.js +0 -718
  69. package/src/legacy/tool-ui/src/main/webapp/script/jquery.extra.js +0 -633
  70. package/src/legacy/tool-ui/src/main/webapp/script/v3/Dropbox.js +0 -18
  71. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdate.js +0 -406
  72. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdateCache.js +0 -1
  73. package/src/legacy/tool-ui/src/main/webapp/script/v3/Notification.js +0 -151
  74. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/edit.js +0 -194
  75. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/state.js +0 -785
  76. package/src/legacy/tool-ui/src/main/webapp/script/v3/csrf.js +0 -35
  77. package/src/legacy/tool-ui/src/main/webapp/script/v3/dashboard.js +0 -65
  78. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/dataTransfer.js +0 -129
  79. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/file.js +0 -433
  80. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/object.js +0 -743
  81. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/read-only.js +0 -17
  82. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.frame.js +0 -478
  83. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.repeatable.js +0 -2406
  84. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.d.ts +0 -2
  85. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.js +0 -446
  86. package/src/legacy/tool-ui/src/main/webapp/script/v3/search-filters.js +0 -62
  87. package/src/legacy/tool-ui/src/main/webapp/script/v3/search.js +0 -53
  88. package/src/legacy/tool-ui/src/main/webapp/script/v3.js +0 -1049
  89. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.js +0 -16
  90. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.js +0 -84
  91. package/src/legacy/tool-ui/src/main/webapp/v4/AutoSubmit.js +0 -68
  92. package/src/legacy/tool-ui/src/main/webapp/v4/Bridge.js +0 -536
  93. package/src/legacy/tool-ui/src/main/webapp/v4/CheckboxInput.js +0 -22
  94. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInput.js +0 -5
  95. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.js +0 -107
  96. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.js +0 -1491
  97. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.js +0 -29
  98. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.js +0 -2427
  99. package/src/legacy/tool-ui/src/main/webapp/v4/ContentLock.js +0 -470
  100. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.js +0 -32
  101. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.js +0 -31
  102. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.js +0 -485
  103. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.js +0 -264
  104. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemAuth.js +0 -16
  105. package/src/legacy/tool-ui/src/main/webapp/v4/Form.js +0 -31
  106. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.js +0 -100
  107. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.ts +0 -49
  108. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.js +0 -2403
  109. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditorBundle.js +0 -5
  110. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.js +0 -40
  111. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.js +0 -14
  112. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.js +0 -123
  113. package/src/legacy/tool-ui/src/main/webapp/v4/Location.js +0 -19
  114. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.js +0 -148
  115. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.js +0 -24
  116. package/src/legacy/tool-ui/src/main/webapp/v4/Message.js +0 -14
  117. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.js +0 -32
  118. package/src/legacy/tool-ui/src/main/webapp/v4/Page.js +0 -890
  119. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.js +0 -758
  120. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewEditor.js +0 -86
  121. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewOverlay.js +0 -1005
  122. package/src/legacy/tool-ui/src/main/webapp/v4/PubSub.js +0 -47
  123. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.js +0 -211
  124. package/src/legacy/tool-ui/src/main/webapp/v4/RegionMap.js +0 -215
  125. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.js +0 -160
  126. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.js +0 -154
  127. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.js +0 -281
  128. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.js +0 -255
  129. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.js +0 -56
  130. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.js +0 -874
  131. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.js +0 -100
  132. package/src/legacy/tool-ui/src/main/webapp/v4/StyleguidePresets.js +0 -357
  133. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.js +0 -360
  134. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.js +0 -27
  135. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.js +0 -224
  136. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.js +0 -147
  137. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContentBundle.js +0 -8
  138. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.js +0 -2417
  139. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditorBundle.js +0 -8
  140. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.js +0 -52
  141. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.d.ts +0 -13
  142. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.js +0 -177
  143. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.js +0 -90
  144. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/fileMock.js +0 -1
  145. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/styleMock.js +0 -1
  146. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/textArea.mock.js +0 -20
  147. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/globals.js +0 -770
  148. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/ProseMirror.test.js +0 -16
  149. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/index.html +0 -54
  150. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/CommentManager.test.js +0 -29
  151. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/index.html +0 -35
  152. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -42
  153. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/index.html +0 -37
  154. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -288
  155. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/block.html +0 -38
  156. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/inline.html +0 -38
  157. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/no-popups.html +0 -38
  158. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/ListManager.js +0 -257
  159. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/index.html +0 -38
  160. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/hierarchal.html +0 -33
  161. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/index.html +0 -33
  162. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/menubar.test.js +0 -195
  163. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/small.html +0 -34
  164. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/tags.html +0 -34
  165. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/PlaceholderManager.test.js +0 -134
  166. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-editable-placeholder.html +0 -32
  167. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-text.html +0 -34
  168. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/index.html +0 -31
  169. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/TableManager.test.js +0 -63
  170. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/existing.html +0 -48
  171. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/TrackManager.test.js +0 -291
  172. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/existing.html +0 -39
  173. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/insert.html +0 -37
  174. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/Sortable.test.js +0 -105
  175. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/ProseMirror.test.js +0 -41
  176. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/codemirror-shim.test.js +0 -72
  177. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/collab_manager/CollabManager.test.js +0 -46
  178. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -84
  179. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/list_manager/ListManager.test.js +0 -54
  180. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/menubar/menubar.test.js +0 -183
  181. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/spellcheck/SpellCheck.test.js +0 -45
  182. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/BSSerializer.test.js +0 -346
  183. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/menuItemsBuilder.test.js +0 -226
  184. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/utilities.test.js +0 -118
  185. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/Appetizeio.js +0 -5
  186. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.js +0 -113
  187. package/src/legacy/tool-ui/src/main/webapp/v4/compat/Fetch.js +0 -16
  188. package/src/legacy/tool-ui/src/main/webapp/v4/compat/jquery.js +0 -32
  189. package/src/legacy/tool-ui/src/main/webapp/v4/compat/requirejs.js +0 -13
  190. package/src/legacy/tool-ui/src/main/webapp/v4/dom/Tether.js +0 -1
  191. package/src/legacy/tool-ui/src/main/webapp/v4/dom/TetherLayout.js +0 -1
  192. package/src/legacy/tool-ui/src/main/webapp/v4/dom/closest.js +0 -1
  193. package/src/legacy/tool-ui/src/main/webapp/v4/dom/create.js +0 -1
  194. package/src/legacy/tool-ui/src/main/webapp/v4/dom/find.js +0 -1
  195. package/src/legacy/tool-ui/src/main/webapp/v4/dom/findAll.js +0 -1
  196. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifClick.js +0 -1
  197. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifMatches.js +0 -1
  198. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifUnmodified.js +0 -1
  199. package/src/legacy/tool-ui/src/main/webapp/v4/dom/index.js +0 -5
  200. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertBefore.js +0 -1
  201. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertFirst.js +0 -1
  202. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertLast.js +0 -1
  203. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFind.js +0 -1
  204. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFindOnce.js +0 -1
  205. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRTEReady.js +0 -1
  206. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRemove.js +0 -1
  207. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onVisible.js +0 -1
  208. package/src/legacy/tool-ui/src/main/webapp/v4/dom/previousUntil.js +0 -1
  209. package/src/legacy/tool-ui/src/main/webapp/v4/dom/resolveIconCompat.js +0 -40
  210. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/Socket.js +0 -1
  211. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/index.js +0 -1
  212. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.js +0 -909
  213. package/src/legacy/tool-ui/src/main/webapp/v4/rte/README.md +0 -68
  214. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.d.ts +0 -8
  215. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.js +0 -274
  216. package/src/legacy/tool-ui/src/main/webapp/v4/rte/collab-workflow.jpeg +0 -0
  217. package/src/legacy/tool-ui/src/main/webapp/v4/rte/interchangeable.ts +0 -250
  218. package/src/legacy/tool-ui/src/main/webapp/v4/rte/mention.js +0 -90
  219. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/PluginProvider.js +0 -124
  220. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/README.md +0 -46
  221. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/AIInlineManager.ts +0 -124
  222. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInlineView.ts +0 -1019
  223. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_manager/AiManager.ts +0 -199
  224. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/CollabManager.js +0 -339
  225. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.js +0 -96
  226. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/comment_manager/CommentManager.js +0 -348
  227. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -110
  228. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/README.md +0 -29
  229. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/EnhancementManager.js +0 -428
  230. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/README.md +0 -63
  231. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/commands.js +0 -690
  232. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/constants.js +0 -12
  233. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/enhancement-creation.jpeg +0 -0
  234. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/index.js +0 -15
  235. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/rte-flow.jpeg +0 -0
  236. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ActionButtonView.js +0 -86
  237. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/BlockSubmenuView.js +0 -60
  238. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/EnhancementView.js +0 -208
  239. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.js +0 -102
  240. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/SubmenuView.js +0 -365
  241. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/FindReplaceManager.js +0 -239
  242. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/FindView.js +0 -604
  243. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/FullscreenManager.js +0 -57
  244. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/README.md +0 -26
  245. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/commands.js +0 -16
  246. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/index.js +0 -4
  247. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.js +0 -474
  248. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/htmlEditorManager.js +0 -66
  249. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/views/HtmlEditorView.js +0 -97
  250. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.js +0 -342
  251. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/README.md +0 -50
  252. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/commands.js +0 -207
  253. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/constants.js +0 -26
  254. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/index.js +0 -4
  255. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/Menubar.js +0 -485
  256. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/README.md +0 -40
  257. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.js +0 -842
  258. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/PasteManager.js +0 -368
  259. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/placeholder_manager/PlaceHolderManager.js +0 -128
  260. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/README.md +0 -13
  261. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/RawTextManager.js +0 -96
  262. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/index.js +0 -3
  263. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-plugin.js +0 -280
  264. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-service.js +0 -94
  265. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/TableManager.js +0 -57
  266. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/commands.js +0 -97
  267. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerView.js +0 -88
  268. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableView.js +0 -613
  269. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/README.md +0 -13
  270. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/TrackManager.js +0 -905
  271. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/BSSerializer.js +0 -819
  272. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/README.md +0 -80
  273. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/commands.js +0 -98
  274. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.d.ts +0 -84
  275. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.js +0 -87
  276. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/index.js +0 -13
  277. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/keymapBuilder.js +0 -223
  278. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/menuItemsBuilder.js +0 -559
  279. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/schemaBuilder.js +0 -1281
  280. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.d.ts +0 -4
  281. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.js +0 -359
  282. package/src/legacy/tool-ui/src/main/webapp/v4/theme/ColorRotator.js +0 -1
  283. package/src/legacy/tool-ui/src/main/webapp/v4/util/debounce.js +0 -1
  284. package/src/legacy/tool-ui/src/main/webapp/v4/util/getComponentKey.js +0 -1
  285. package/src/legacy/tool-ui/src/main/webapp/v4/util/noise.js +0 -1
  286. package/src/legacy/tool-ui/src/main/webapp/v4/util/repaint.js +0 -1
  287. package/src/legacy/tool-ui/src/main/webapp/v4/util/storage.js +0 -1
  288. package/src/legacy/tool-ui/src/main/webapp/v4/util/throttle.js +0 -1
  289. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.js +0 -33
  290. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.js +0 -217
  291. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.js +0 -7
  292. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.js +0 -19
  293. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.js +0 -7
  294. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.js +0 -13
  295. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.js +0 -25
  296. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.js +0 -33
  297. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Revisions.js +0 -61
@@ -1,690 +0,0 @@
1
- import {
2
- getEnhancementEditFormURL,
3
- setUpSubscription,
4
- setUpAndTriggerFrame,
5
- } from './EnhancementManager'
6
- import { closeLayeredPopups, getObjectValue } from '../../utilities'
7
- import { toggleMark, setBlockType } from 'prosemirror-commands'
8
- import { DOMSerializer, Fragment, Slice } from 'prosemirror-model'
9
- import { v1 as uuidv1 } from 'uuid'
10
- import { TextSelection, NodeSelection } from 'prosemirror-state'
11
- import scrollParent from 'scrollparent'
12
- import Cookies from 'js.cookie'
13
-
14
- function fetchInstance(typeId) {
15
- const body = new FormData()
16
- body.append('typeId', typeId)
17
-
18
- return fetch('/cms/rte/instance', {
19
- method: 'POST',
20
- headers: {
21
- 'Brightspot-CSRF': Cookies.get('bsp.csrf'),
22
- },
23
- body,
24
- })
25
- }
26
-
27
- // Returns all slots where an enhancement can be placed.
28
- function getSlots(state, getPos) {
29
- // Find all top level nodes and their offsets.
30
- const doc = state.doc
31
- const children = []
32
-
33
- doc.forEach((node, offset, index) => {
34
- children.push({ node, offset, index })
35
- })
36
-
37
- // Find all slots where an enhancement can be placed.
38
- const slots = []
39
- const from = getPos()
40
- const to = from + doc.nodeAt(from).nodeSize
41
- const lastIndex = children.length - 1
42
- const lineType = state.schema.nodes.line
43
-
44
- for (let i = 0, l = children.length; i < l; ++i) {
45
- const { node, offset, index } = children[i]
46
-
47
- const addSlot = (offset, emptyLine) => {
48
- slots.push({
49
- offset,
50
- current: offset === from,
51
- emptyLine,
52
- betweenLines:
53
- i > 0 &&
54
- i < lastIndex &&
55
- children[i - 1].node.type === lineType &&
56
- children[i + 1].node.type === lineType,
57
- })
58
- }
59
-
60
- if (node.type === lineType) {
61
- if (node.textContent === '') {
62
- // On an empty line.
63
- addSlot(offset, true)
64
- } else if (index === 0) {
65
- // At the beginning before a line of text.
66
- addSlot(offset)
67
- } else if (index === lastIndex) {
68
- // At the end after a line of text.
69
- addSlot(offset + node.nodeSize)
70
- }
71
- } else {
72
- // Before an enhancement, unless there was another enhancement before this
73
- // one, because it would've already been added.
74
- if (
75
- offset !== to &&
76
- (slots.length === 0 || offset !== slots[slots.length - 1].offset)
77
- ) {
78
- addSlot(offset)
79
- }
80
-
81
- // After an enhancement, unless this is the current enhancement that's
82
- // being moved.
83
- if (offset !== from) {
84
- addSlot(offset + node.nodeSize)
85
- }
86
- }
87
- }
88
-
89
- return slots
90
- }
91
-
92
- // Moves an enhancement.
93
- async function moveTo(state, dispatch, view, from, to, scroll) {
94
- const tr = state.tr
95
- const fromOffset = from.offset
96
- let toOffset = to.offset
97
- const enh = state.doc.nodeAt(fromOffset)
98
-
99
- // Deletes the enhancement at the original position.
100
- const del = () => {
101
- tr.setSelection(NodeSelection.create(tr.doc, fromOffset))
102
-
103
- // If the enhancement was in between two lines of text, insert an empty
104
- // line to maintain the paragraph structure.
105
- if (from.betweenLines) {
106
- tr.replaceSelectionWith(state.schema.nodes.line.create())
107
- } else {
108
- tr.deleteSelection()
109
- }
110
- }
111
-
112
- // Inserts the enhancement at the new position.
113
- const ins = () => {
114
- // If the enhancement is being moved in between two lines of text, delete
115
- // the empty line that's there.
116
- tr.setSelection(
117
- (to.emptyLine ? NodeSelection : TextSelection).create(tr.doc, toOffset),
118
- )
119
-
120
- tr.replaceSelectionWith(enh)
121
- }
122
-
123
- // Insert and delete from the bottom to the top so that the offsets aren't
124
- // affected.
125
- if (fromOffset > toOffset) {
126
- del()
127
- ins()
128
- } else {
129
- ins()
130
- del()
131
-
132
- // Recalculate the offset of where the enhancement moved to.
133
- toOffset -= enh.nodeSize
134
-
135
- if (from.betweenLines) {
136
- // Size of an empty line.
137
- toOffset += 2
138
- }
139
- }
140
-
141
- // Remember the enhancement position before the move.
142
- const fromDOM = view.nodeDOM(fromOffset)
143
- const parent = scrollParent(fromDOM)
144
- const fromTop = fromDOM.getBoundingClientRect().top
145
-
146
- // Select the moved enhancement and finalize the move.
147
- const finalize = () => {
148
- tr.setSelection(NodeSelection.create(tr.doc, toOffset))
149
- dispatch(tr)
150
- }
151
- // Animate the move using the ViewTransition API if the browser supports
152
- // it (https://developer.mozilla.org/en-US/docs/Web/API/View_Transition_API).
153
- if (window.BRIGHTSPOT?.ui.cms.enableV5UI && document.startViewTransition) {
154
- const container = fromDOM.closest('.ProseMirror')
155
- container.classList.add('is-viewTransition')
156
- const transition = document.startViewTransition(() => finalize())
157
- await transition.finished
158
- container.classList.remove('is-viewTransition')
159
- } else {
160
- finalize()
161
- }
162
-
163
- // Use the enhancement position before and after the move to scroll the parent
164
- // so that the user doesn't have to scroll to get back to the enhancement.
165
- if (scroll && parent) {
166
- parent.scrollTop +=
167
- view.nodeDOM(toOffset).getBoundingClientRect().top - fromTop
168
- }
169
- }
170
-
171
- /**
172
- * Sets up a popup for any enhancement that has a popup.
173
- *
174
- * @param {Object} meta
175
- * @param {ProseMirror.State} state
176
- * @param {ProseMirror.Dispatch} dispatch
177
- * @param {Event} evt
178
- */
179
- const setUpPopup = (editorView, meta, state, dispatch, evt) => {
180
- let url = getEnhancementEditFormURL(
181
- meta.typeId,
182
- evt.target,
183
- meta.isCustom,
184
- meta.customUrl,
185
- )
186
- // The user might have engaged the insert menu command after selecting
187
- // a node in the RTE, which would mean we might have some text that
188
- // we can send as the body query param
189
- const { from, to } = state.selection
190
- const text = state.doc.textBetween(from, to) || ''
191
- // Setting the body query param autopopulates the Body Text field. It is
192
- // ok to populate with an empty string because the form will handle validation
193
- // server-side.
194
- url = `${url}&body=${encodeURIComponent(text)}`
195
-
196
- const tempId = `Prosemirror.event-${Date.now()}`
197
- evt.target.setAttribute('href', url)
198
- evt.target.setAttribute('data-event-id', tempId)
199
- if (!meta.isCustom || (meta.isCustom && meta.isDataFramePost)) {
200
- evt.target.setAttribute('data-frame-post', 'true')
201
- }
202
-
203
- setUpSubscription(editorView, tempId, meta, state, dispatch, evt, text)
204
- setUpAndTriggerFrame(evt)
205
- }
206
-
207
- const insertNonEditableNoFieldsEnhancements = (obj) => {
208
- return function (state, dispatch, editorView, evt) {
209
- fetchInstance(obj.typeId)
210
- .then((res) => res.json())
211
- .then((data) => {
212
- const text = data.body || ''
213
- const contentJSON = [
214
- {
215
- type: obj.tag,
216
- content: [{ type: 'text', text: text }],
217
- attrs: {
218
- meta: obj,
219
- label: text,
220
- },
221
- },
222
- ]
223
- let fragment = Fragment.fromJSON(state.schema, contentJSON)
224
- const slice = new Slice(fragment, 0, 0)
225
- let transaction = state.tr
226
- transaction = transaction.replaceSelection(slice)
227
- dispatch(transaction)
228
- })
229
- .catch((error) => {
230
- console.error('RTE Error:', error)
231
- })
232
- }
233
- }
234
-
235
- /**
236
- * Inserts editable inline enhancements.
237
- *
238
- * @param {Object} meta The enhancement meta data.
239
- */
240
- const insertEditableInlineEnhancements = (meta) => {
241
- return function (state, dispatch, editorView, evt) {
242
- if (meta.popup) {
243
- setUpPopup(editorView, meta, state, dispatch, evt)
244
- } else {
245
- toggleMark(state.schema.marks[meta.tag])(state, dispatch)
246
- }
247
- }
248
- }
249
-
250
- /**
251
- * Command to insert enhancements without popups.
252
- * Enhancements that do not have popups are inserted as either nodes if they
253
- * are line enhancements or marks if they are inline.
254
- *
255
- * @param {Object.<string|Array.<string>>} obj The object representation
256
- * of the enhancement, which the backend provides
257
- */
258
- const insertEnhancementWithoutPopup = (obj) => {
259
- return function (state, dispatch, editorView) {
260
- const schema = state.config.schema
261
- let { $anchor } = state.selection
262
- const nodeType = schema.nodes[obj.tag]
263
- const defaultNodeType = schema.nodes.line
264
-
265
- if (obj.line) {
266
- fetchInstance(obj.typeId)
267
- .then((res) => res.json())
268
- .then((data) => {
269
- const parentNodeType = getObjectValue($anchor, 'parent.type.name')
270
- const newAlignmentState =
271
- parentNodeType === getObjectValue(nodeType, 'name')
272
- ? defaultNodeType
273
- : nodeType
274
- setBlockType(newAlignmentState, { meta: obj })(state, dispatch)
275
-
276
- if (
277
- state.selection.empty &&
278
- data.body &&
279
- parentNodeType !== nodeType.name
280
- ) {
281
- const tr = editorView.state.tr.insert(
282
- $anchor.pos,
283
- state.schema.text(data.body),
284
- )
285
- dispatch(tr)
286
- }
287
- })
288
- .catch((error) => {
289
- console.error('RTE Error:', error)
290
- })
291
- } else {
292
- toggleMark(schema.marks[obj.tag])(state, dispatch)
293
- }
294
- }
295
- }
296
-
297
- /**
298
- * Command to edit an enhancement, which involves gathering the
299
- * data to be sent to the server for the enhancement form generation
300
- * we well as triggering a frame with the popup that holds the form.
301
- * We also subscribe to when the form successful save topic is published
302
- * from the ehancement.jsp.
303
- *
304
- * @param {Prosemirror.Model.Node} node The node in the document tree that
305
- * represents the enhancement.
306
- */
307
- const editEnhancement = (node) => {
308
- /**
309
- * @param {Prosemirror.EditorState} state
310
- * @param {Prosemirror.EditorView.dispatch} dispatch Announces a transaction
311
- * This method is bound to the view instance, so that it can be easily passed around.
312
- * @param {Prosemirror.EditorView} editorView
313
- * @param {Event} evt The DOM event that triggered the edit action. We need this to
314
- * properly trigger the frame and popup.
315
- */
316
- return function (state, dispatch, editorView, evt) {
317
- const meta = node.attrs.meta
318
- const enhancementID = meta.typeId
319
- if (!enhancementID) {
320
- return false
321
- }
322
-
323
- closeLayeredPopups(evt)
324
-
325
- const doc = state.doc
326
- let nodeFrom, nodeTo
327
-
328
- doc.descendants((n, p) => {
329
- if (
330
- n.attrs.id === node.attrs.id ||
331
- n.marks.some((mark) => mark.attrs.id === node.attrs.id)
332
- ) {
333
- if (!nodeFrom) {
334
- nodeFrom = p
335
- }
336
-
337
- nodeTo = p + n.nodeSize
338
- }
339
- })
340
-
341
- const body =
342
- DOMSerializer.fromSchema(state.schema).serializeFragment(
343
- doc.slice(nodeFrom, nodeTo).content,
344
- ).firstElementChild?.innerHTML || ''
345
-
346
- const attributes = JSON.stringify(node.attrs.attributes)
347
- let url = getEnhancementEditFormURL(enhancementID, evt.target)
348
- url = `${url}&body=${encodeURIComponent(
349
- body,
350
- )}&attributes=${encodeURIComponent(attributes)}`
351
-
352
- const tempId = `Prosemirror.event-${Date.now()}`
353
- evt.target.setAttribute('href', url)
354
- evt.target.setAttribute('data-event-id', tempId)
355
- evt.target.setAttribute('data-frame-post', 'true')
356
-
357
- const { empty, from, to } = state.selection
358
- let tr = state.tr
359
- const id = uuidv1()
360
- if (empty) {
361
- tr = tr.setMeta('enhancementManager$', {
362
- add: { id, from },
363
- })
364
- } else {
365
- tr = tr.setMeta('enhancementManager$', {
366
- add: { id, from, to },
367
- })
368
- }
369
- dispatch(tr)
370
-
371
- setUpSubscription(
372
- editorView,
373
- tempId,
374
- meta,
375
- state,
376
- dispatch,
377
- evt,
378
- body,
379
- node,
380
- true,
381
- id,
382
- )
383
- setUpAndTriggerFrame(evt, node.attrs.id, editorView)
384
- PubSub.publish('collabLock', { id: node.attrs.id })
385
- }
386
- }
387
-
388
- /**
389
- * Command to insert an enhancement, which involves determining if text
390
- * has been selected in the RTE and then the Insert command was invoked
391
- * or just invoking the command. We know text has been selected if the state
392
- * selection is not empty. We also subscribe to when the form successful
393
- * save topic is published from the ehancement.jsp.
394
- *
395
- * @param {Object.<string>} meta The global config object for this type
396
- * of enhancement. We attach this to the data payload so we can later
397
- * in the publish step add it to the node attrs, making
398
- * it available on the node for when the user edits the enhancement.
399
- */
400
- const insertEnhancement = (meta) => {
401
- /**
402
- * @param {Prosemirror.EditorState} state
403
- * @param {Prosemirror.EditorView.dispatch} dispatch Announces a transaction
404
- * This method is bound to the view instance, so that it can be easily passed around.
405
- * @param {Prosemirror.EditorView} editorView
406
- * @param {Event} evt The DOM event that triggered the edit action. We need this to
407
- * properly trigger the frame and popup.
408
- */
409
- return function (state, dispatch, editorView, evt) {
410
- if (!meta.popup) {
411
- return
412
- }
413
-
414
- closeLayeredPopups(evt)
415
-
416
- if (
417
- evt.target.classList.contains('active') &&
418
- meta.line &&
419
- !meta.readOnly
420
- ) {
421
- clearEnhancement()(state, dispatch, evt)
422
- return
423
- }
424
-
425
- let url = getEnhancementEditFormURL(
426
- meta.typeId,
427
- evt.target,
428
- meta.isCustom,
429
- meta.customUrl,
430
- )
431
- // The user might have engaged the insert menu command after selecting
432
- // a node in the RTE, which would mean we might have some text that
433
- // we can send as the body query param.
434
- const { empty, from, to } = state.selection
435
-
436
- // Build markup of selected text checking if selection from/to are inline
437
- // text nodes and unwrapping if so.
438
- const body = document.createElement('DIV')
439
-
440
- body.append(
441
- DOMSerializer.fromSchema(state.schema).serializeFragment(
442
- state.doc.slice(from, to).content,
443
- ),
444
- )
445
-
446
- const bodyHtml = body?.innerHTML || ''
447
-
448
- // Setting the body query param autopopulates the Body Text field. It is
449
- // ok to populate with an empty string because the form will handle validation
450
- // server-side.
451
- url = `${url}&body=${encodeURIComponent(bodyHtml)}`
452
-
453
- const tempId = `Prosemirror.event-${Date.now()}`
454
- evt.target.setAttribute('href', url)
455
- evt.target.setAttribute('data-event-id', tempId)
456
- if (!meta.isCustom || (meta.isCustom && meta.isDataFramePost)) {
457
- evt.target.setAttribute('data-frame-post', 'true')
458
- }
459
-
460
- let tr = state.tr
461
- const id = uuidv1()
462
- if (empty) {
463
- tr = tr.setMeta('enhancementManager$', {
464
- add: { id, from },
465
- })
466
- } else {
467
- tr = tr.setMeta('enhancementManager$', {
468
- add: { id, from, to },
469
- })
470
- }
471
- dispatch(tr)
472
-
473
- setUpSubscription(
474
- editorView,
475
- tempId,
476
- meta,
477
- state,
478
- dispatch,
479
- evt,
480
- bodyHtml,
481
- null,
482
- false,
483
- id,
484
- )
485
- setUpAndTriggerFrame(evt, id, editorView)
486
- }
487
- }
488
-
489
- /**
490
- * Removes an enhancement from a text node in the RTE but retains
491
- * the text node without the enhancement (e.g. a user removes a link
492
- * but wants to retain the text of the link). If we are trying to remove
493
- * a mark from a mark's submenu we have to scan the whole document to
494
- * find a node that has the mark with the same UUID of the mark we are
495
- * trying to remove.
496
- *
497
- * @param {Prosemirror.Mark} enhancement The enhancement to be removed.
498
- */
499
- const clearEnhancement = (enhancement) => {
500
- return function (state, dispatch, evt) {
501
- if (!enhancement) {
502
- const { $anchor, anchor } = state.selection
503
- if (state.selection instanceof TextSelection) {
504
- enhancement = $anchor.parent
505
- } else {
506
- enhancement = state.doc.nodeAt(anchor)
507
- }
508
- }
509
-
510
- if (!enhancement) {
511
- return
512
- }
513
-
514
- const id = enhancement.attrs.id
515
- let tr = state.tr
516
- const isLine = getObjectValue(enhancement, 'attrs.meta.line')
517
- if (isLine) {
518
- const defaultNodeType = getObjectValue(state, 'schema.nodes.line')
519
- if (defaultNodeType) {
520
- PubSub.publish('blockEnhancementCleared', evt)
521
- return setBlockType(defaultNodeType)(state, dispatch)
522
- }
523
- } else {
524
- state.doc.descendants((node, pos) => {
525
- const marks = node.marks
526
- const matchingMarks = marks.filter((localMark) => {
527
- return localMark.attrs.id === id
528
- })
529
- matchingMarks.forEach((mark) => {
530
- tr = tr.removeMark(pos, pos + node.nodeSize, mark)
531
- })
532
- })
533
- }
534
-
535
- dispatch(tr)
536
- }
537
- }
538
-
539
- // Moves an enhancement to where the user clicks.
540
- const moveEnhancement = (view, getPos) => {
541
- // Create an overlay that displays where the user can click.
542
- const { state, dispatch } = view
543
- const overlay = document.createElement('div')
544
-
545
- overlay.classList.add('ProseMirror-moveEnhancementOverlay')
546
-
547
- const slots = getSlots(state, getPos)
548
- const from = slots.find((s) => s.current)
549
- const targets = new Map()
550
- const viewDOM = view.dom
551
-
552
- // Resize the overlay and position the targets.
553
- const position = () => {
554
- overlay.style.height = `${viewDOM.offsetHeight}px`
555
- overlay.style.left = `${viewDOM.offsetLeft}px`
556
- overlay.style.top = `${viewDOM.offsetTop}px`
557
- overlay.style.width = `${viewDOM.offsetWidth}px`
558
-
559
- for (const [target, toDOM] of targets) {
560
- target.style.top = `${toDOM.offsetTop}px`
561
- }
562
- }
563
-
564
- const observer = new ResizeObserver(position)
565
-
566
- // Create the targets where the user can click to move the enhancement.
567
- const removeOverlay = () => {
568
- overlay.parentNode.removeChild(overlay)
569
- observer.disconnect()
570
- }
571
-
572
- for (const to of slots) {
573
- const target = document.createElement('div')
574
-
575
- target.classList.add('ProseMirror-moveEnhancementTarget')
576
-
577
- if (to.emptyLine) {
578
- target.classList.add('is-emptyLine')
579
- }
580
-
581
- const toDOM = view.nodeDOM(to.offset)
582
-
583
- if (toDOM) {
584
- targets.set(target, toDOM)
585
- } else {
586
- target.classList.add('is-last')
587
- }
588
-
589
- if (to.current) {
590
- target.classList.add('is-cancel')
591
-
592
- target.innerText = 'Cancel'
593
- target.onclick = removeOverlay
594
- } else {
595
- target.innerText = 'Move'
596
-
597
- target.onclick = () => {
598
- // Remember how tall the enhancement was.
599
- const fromDOM = view.nodeDOM(from.offset)
600
- const parent = scrollParent(fromDOM)
601
- const fromHeight = fromDOM.getBoundingClientRect().height
602
-
603
- // Move the enhancement.
604
- moveTo(state, dispatch, view, from, to)
605
- removeOverlay()
606
-
607
- // If the enhancement was moved down, scroll up so that the RTE is
608
- // roughly at the same position as before.
609
- if (parent && from.offset < to.offset) {
610
- parent.scrollTop -= fromHeight
611
- }
612
- }
613
- }
614
-
615
- overlay.appendChild(target)
616
- }
617
-
618
- position()
619
- viewDOM.parentNode.insertBefore(overlay, viewDOM.nextSibling)
620
- observer.observe(viewDOM)
621
- }
622
-
623
- /**
624
- * Removes an enhancement completely.
625
- */
626
- const removeEnhancement = (view, getPos) => {
627
- const { state, dispatch } = view
628
- const { doc, tr } = state
629
- const from = getPos()
630
- const before = doc.childBefore(from)?.node?.type
631
- const after = doc.childAfter(from + doc.nodeAt(from).nodeSize)?.node?.type
632
- const lineType = state.schema.nodes.line
633
-
634
- tr.setSelection(NodeSelection.create(tr.doc, from))
635
-
636
- if (before === lineType && after === lineType) {
637
- tr.replaceSelectionWith(lineType.create())
638
- } else {
639
- tr.deleteSelection()
640
- }
641
-
642
- dispatch(tr)
643
- }
644
-
645
- /**
646
- * Moves an enhancement up a line.
647
- */
648
- const moveEnhancementUp = (view, getPos) => {
649
- const { state, dispatch } = view
650
- const slots = getSlots(state, getPos)
651
-
652
- for (let i = 1, l = slots.length; i < l; ++i) {
653
- const from = slots[i]
654
-
655
- if (from.current) {
656
- moveTo(state, dispatch, view, from, slots[i - 1], true)
657
- break
658
- }
659
- }
660
- }
661
-
662
- /**
663
- * Moves an enhancement down a line.
664
- */
665
- const moveEnhancementDown = (view, getPos) => {
666
- const { state, dispatch } = view
667
- const slots = getSlots(state, getPos)
668
-
669
- for (let i = 0, l = slots.length - 1; i < l; ++i) {
670
- const from = slots[i]
671
-
672
- if (from.current) {
673
- moveTo(state, dispatch, view, from, slots[i + 1], true)
674
- break
675
- }
676
- }
677
- }
678
-
679
- export {
680
- insertEnhancement,
681
- clearEnhancement,
682
- editEnhancement,
683
- removeEnhancement,
684
- moveEnhancementUp,
685
- moveEnhancementDown,
686
- moveEnhancement,
687
- insertEnhancementWithoutPopup,
688
- insertEditableInlineEnhancements,
689
- insertNonEditableNoFieldsEnhancements,
690
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Enhancements' Globals
3
- *
4
- * The following are currently globals produced by the backend
5
- * and placed directly in the HTML in the head of the document.
6
- * Abstracting that here to make it easier to move to a different
7
- * mode of backend communication (e.g. servlet) later.
8
- */
9
-
10
- const PM_CONTEXT_PATH = CONTEXT_PATH
11
-
12
- export { PM_CONTEXT_PATH }
@@ -1,15 +0,0 @@
1
- import { enhancementManagerPlugin } from './EnhancementManager'
2
- import {
3
- insertEnhancement,
4
- insertEnhancementWithoutPopup,
5
- insertEditableInlineEnhancements,
6
- insertNonEditableNoFieldsEnhancements,
7
- } from './commands'
8
-
9
- export {
10
- enhancementManagerPlugin,
11
- insertEnhancement,
12
- insertEnhancementWithoutPopup,
13
- insertEditableInlineEnhancements,
14
- insertNonEditableNoFieldsEnhancements,
15
- }