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

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 (320) hide show
  1. package/README.md +56 -37
  2. package/dist/custom-elements.json +1807 -1807
  3. package/dist/storybook/assets/{ActionBar.stories-hJ_5cm-P.js → ActionBar.stories-BZAVK1QG.js} +1 -1
  4. package/dist/storybook/assets/{ActionItem.stories-Bjx2803w.js → ActionItem.stories-BqiWvlWi.js} +1 -1
  5. package/dist/storybook/assets/{Avatar.stories-Cj0YgZ6f.js → Avatar.stories-DkdB6hd_.js} +1 -1
  6. package/dist/storybook/assets/{AvatarGroup.stories-Lh_sQFCU.js → AvatarGroup.stories-DODqaIix.js} +1 -1
  7. package/dist/storybook/assets/{Badge.stories-BL7RUibx.js → Badge.stories-DZoum08S.js} +1 -1
  8. package/dist/storybook/assets/{Button-BPHNcxqK.js → Button-BkmBgNO-.js} +1 -1
  9. package/dist/storybook/assets/{Button.stories-CAYO4gdU.js → Button.stories-BFhCL2dp.js} +1 -1
  10. package/dist/storybook/assets/{ButtonGroup.stories-Cd13Us5K.js → ButtonGroup.stories-DlTGTvkq.js} +1 -1
  11. package/dist/storybook/assets/{Celebrate.stories-D_KE3Qze.js → Celebrate.stories-m4d4zTEz.js} +1 -1
  12. package/dist/storybook/assets/{Checkbox.stories-Aj1xgZVn.js → Checkbox.stories-Y253YeU7.js} +1 -1
  13. package/dist/storybook/assets/{CircularProgress.stories-BecV_v6d.js → CircularProgress.stories-6BD8uV5G.js} +1 -1
  14. package/dist/storybook/assets/{ClipboardMixin.stories-DU-WiZ2f.js → ClipboardMixin.stories-BkH66rIU.js} +1 -1
  15. package/dist/storybook/assets/{Color-6BZIO3FS-BYl4KZZn.js → Color-6BZIO3FS-iG0OjPBU.js} +1 -1
  16. package/dist/storybook/assets/{Colors.stories-BMUVUy2q.js → Colors.stories-BxiyQnEg.js} +1 -1
  17. package/dist/storybook/assets/{CombinedEffects.stories-FHcPKFm6.js → CombinedEffects.stories-Bs3U7qRl.js} +1 -1
  18. package/dist/storybook/assets/{ComponentStatesMixin-EMUnfT5y.js → ComponentStatesMixin-DampYb5c.js} +1 -1
  19. package/dist/storybook/assets/{ComponentStatesMixin.stories-SXq0kzS9.js → ComponentStatesMixin.stories-CZ2OW7as.js} +1 -1
  20. package/dist/storybook/assets/{CopyToClipboard.stories-u43lhvcI.js → CopyToClipboard.stories-CdlghjaE.js} +1 -1
  21. package/dist/storybook/assets/{Debounce.stories-BdCn5qgO.js → Debounce.stories-CymT8PnT.js} +1 -1
  22. package/dist/storybook/assets/{DocsRenderer-LL677BLK-DxiEJ_jx.js → DocsRenderer-LL677BLK-dqHCo-GE.js} +3 -3
  23. package/dist/storybook/assets/{Dropdown.stories-BWSRwjIF.js → Dropdown.stories-B6JwKg-I.js} +1 -1
  24. package/dist/storybook/assets/{EmptyState.stories-BpobeZL5.js → EmptyState.stories-Bk229lPH.js} +1 -1
  25. package/dist/storybook/assets/{Events.stories-CP5kMzpr.js → Events.stories-C8-k9cx8.js} +1 -1
  26. package/dist/storybook/assets/{Heading.stories-CbJD-oTB.js → Heading.stories-DIdnAQRG.js} +1 -1
  27. package/dist/storybook/assets/{HueRipple.stories-BOABJ7zw.js → HueRipple.stories-B1gXAEaH.js} +1 -1
  28. package/dist/storybook/assets/{Icon.stories-CWlUHL4j.js → Icon.stories--1VJ0_yt.js} +1 -1
  29. package/dist/storybook/assets/{IconButton.stories-BWBs-OLT.js → IconButton.stories-CS2rEIir.js} +1 -1
  30. package/dist/storybook/assets/{LinearProgress.stories-LZ0GZoxF.js → LinearProgress.stories-Bx0CQQls.js} +1 -1
  31. package/dist/storybook/assets/{Pagination.stories-CbLaR3P9.js → Pagination.stories-B4AogTXB.js} +1 -1
  32. package/dist/storybook/assets/{Popover.stories-JHrWqYZw.js → Popover.stories-BR88DPgU.js} +1 -1
  33. package/dist/storybook/assets/{ReadyMixin-B1H2a9x8.js → ReadyMixin-n6qZO39Y.js} +1 -1
  34. package/dist/storybook/assets/{RovingTabindexMixin.stories-UMHpYG73.js → RovingTabindexMixin.stories-1xTJSMSv.js} +1 -1
  35. package/dist/storybook/assets/{Rtc.stories-VQtNSlls.js → Rtc.stories-Rt0A_rUZ.js} +1 -1
  36. package/dist/storybook/assets/{ScrollShadow.stories-CYdi8Tgp.js → ScrollShadow.stories-CjLdJyYu.js} +1 -1
  37. package/dist/storybook/assets/{Switch.stories-D8F2hZCf.js → Switch.stories-CF8wO4v2.js} +1 -1
  38. package/dist/storybook/assets/{Tab.stories-wgBP0lTj.js → Tab.stories-C8XNshog.js} +1 -1
  39. package/dist/storybook/assets/{Tabs.stories-C00rr5sf.js → Tabs.stories-B01l4rQx.js} +1 -1
  40. package/dist/storybook/assets/{Throttle.stories-BhQEfJbS.js → Throttle.stories-Bpi0K5j9.js} +1 -1
  41. package/dist/storybook/assets/{Tooltip.stories-CGoZ5qTn.js → Tooltip.stories-BC4zMiZ1.js} +1 -1
  42. package/dist/storybook/assets/{Upload.stories-B3K-HAXw.js → Upload.stories-2pWv_fZ1.js} +1 -1
  43. package/dist/storybook/assets/{UploadItem.stories-71ArSoUh.js → UploadItem.stories-aLeAUM7y.js} +1 -1
  44. package/dist/storybook/assets/{Welcome.stories-CihlfFXS.js → Welcome.stories-DJV83eb7.js} +1 -1
  45. package/dist/storybook/assets/{Widget.stories-1u4KbiJM.js → Widget.stories-Cz0i2o6L.js} +1 -1
  46. package/dist/storybook/assets/{WithTooltip-65CFNBJE-B3Jitxw9.js → WithTooltip-65CFNBJE-D8QwVYG8.js} +1 -1
  47. package/dist/storybook/assets/{blocks-C1HaXuQB.js → blocks-BFmpEZRy.js} +5 -5
  48. package/dist/storybook/assets/{formatter-EIJCOSYU-Dy9Lt9fs.js → formatter-EIJCOSYU-CdwdJOPy.js} +1 -1
  49. package/dist/storybook/assets/if-defined-gbJXriW-.js +1 -0
  50. package/dist/storybook/assets/{iframe-Dx6IxWXF.js → iframe-CyssRDCd.js} +4 -4
  51. package/dist/storybook/assets/{index-OrjedSVh.js → index-B82i8dhg.js} +1 -1
  52. package/dist/storybook/assets/{onFind-YTqjw6W0.js → onFind-BFI1uIxr.js} +1 -1
  53. package/dist/storybook/assets/{onFind.stories-DEvwTrmx.js → onFind.stories-zZjQs_Gn.js} +1 -1
  54. package/dist/storybook/assets/{onRemove.stories-D5mO-Lin.js → onRemove.stories-pFBwAIex.js} +1 -1
  55. package/dist/storybook/assets/{onVisible.stories-C3Rcz0Eb.js → onVisible.stories-5dErOVRq.js} +1 -1
  56. package/dist/storybook/assets/{style-map-CiMHry7H.js → style-map-D0EcLEWO.js} +1 -1
  57. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-DIZnuhb2.js → syntaxhighlighter-ED5Y7EFY--2h_dVga.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/src/legacy/tool-ui/src/AnalyticsWidget.css +1 -1
  62. package/src/legacy/tool-ui/src/Board.css +1 -1
  63. package/src/legacy/tool-ui/src/BulkUpload.css +1 -1
  64. package/src/legacy/tool-ui/src/ComboInput.css +1 -1
  65. package/src/legacy/tool-ui/src/Compat.css +5 -5
  66. package/src/legacy/tool-ui/src/ContentEditDrawer.css +1 -1
  67. package/src/legacy/tool-ui/src/Dialog.css +1 -1
  68. package/src/legacy/tool-ui/src/FormFilter.css +1 -1
  69. package/src/legacy/tool-ui/src/Icon/index.css +1 -1
  70. package/src/legacy/tool-ui/src/ImageEditor.css +1 -1
  71. package/src/legacy/tool-ui/src/Incompatible.css +2 -2
  72. package/src/legacy/tool-ui/src/LinkCarousel.css +1 -1
  73. package/src/legacy/tool-ui/src/Page.css +1 -1
  74. package/src/legacy/tool-ui/src/RepeatableContentInputGroup.css +1 -1
  75. package/src/legacy/tool-ui/src/RichText.css +1 -1
  76. package/src/legacy/tool-ui/src/SearchWidget.css +2 -2
  77. package/src/legacy/tool-ui/src/SearchWidgetAdvanced.css +1 -1
  78. package/src/legacy/tool-ui/src/Widget.css +1 -1
  79. package/src/legacy/tool-ui/src/main/webapp/dist/v5.5e5d7f655e174ddd85f5.css +5 -0
  80. package/dist/storybook/assets/if-defined-CA2KmTqA.js +0 -1
  81. package/docs/adr/0001-retire-cms-ui-package-fold-under-src-legacy.md +0 -78
  82. package/docs/adr/0002-yarn-workspaces-preserve-cms-ui-deps.md +0 -130
  83. package/docs/adr/0003-bundle-equivalence-as-fold-acceptance-criterion.md +0 -286
  84. package/src/legacy/tool-ui/src/main/resources/settings.properties +0 -1
  85. package/src/legacy/tool-ui/src/main/webapp/WEB-INF/web.xml +0 -81
  86. package/src/legacy/tool-ui/src/main/webapp/dist/v5.5e3fdf0f0b20b4e3c170.css +0 -5
  87. package/src/legacy/tool-ui/src/main/webapp/script/bsp-uploader.js +0 -170
  88. package/src/legacy/tool-ui/src/main/webapp/script/bsp-utils.js +0 -393
  89. package/src/legacy/tool-ui/src/main/webapp/script/content/layout-element.js +0 -141
  90. package/src/legacy/tool-ui/src/main/webapp/script/input/query.js +0 -78
  91. package/src/legacy/tool-ui/src/main/webapp/script/input/workflow.js +0 -718
  92. package/src/legacy/tool-ui/src/main/webapp/script/jquery.extra.js +0 -633
  93. package/src/legacy/tool-ui/src/main/webapp/script/v3/Dropbox.js +0 -18
  94. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdate.js +0 -406
  95. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdateCache.js +0 -1
  96. package/src/legacy/tool-ui/src/main/webapp/script/v3/Notification.js +0 -151
  97. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/edit.js +0 -194
  98. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/state.js +0 -785
  99. package/src/legacy/tool-ui/src/main/webapp/script/v3/csrf.js +0 -35
  100. package/src/legacy/tool-ui/src/main/webapp/script/v3/dashboard.js +0 -65
  101. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/dataTransfer.js +0 -129
  102. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/file.js +0 -433
  103. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/object.js +0 -743
  104. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/read-only.js +0 -17
  105. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.frame.js +0 -478
  106. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.repeatable.js +0 -2406
  107. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.d.ts +0 -2
  108. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.js +0 -446
  109. package/src/legacy/tool-ui/src/main/webapp/script/v3/search-filters.js +0 -62
  110. package/src/legacy/tool-ui/src/main/webapp/script/v3/search.js +0 -53
  111. package/src/legacy/tool-ui/src/main/webapp/script/v3.js +0 -1049
  112. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.js +0 -16
  113. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.js +0 -84
  114. package/src/legacy/tool-ui/src/main/webapp/v4/AutoSubmit.js +0 -68
  115. package/src/legacy/tool-ui/src/main/webapp/v4/Bridge.js +0 -536
  116. package/src/legacy/tool-ui/src/main/webapp/v4/CheckboxInput.js +0 -22
  117. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInput.js +0 -5
  118. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.js +0 -107
  119. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.js +0 -1491
  120. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.js +0 -29
  121. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.js +0 -2427
  122. package/src/legacy/tool-ui/src/main/webapp/v4/ContentLock.js +0 -470
  123. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.js +0 -32
  124. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.js +0 -31
  125. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.js +0 -485
  126. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.js +0 -264
  127. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemAuth.js +0 -16
  128. package/src/legacy/tool-ui/src/main/webapp/v4/Form.js +0 -31
  129. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.js +0 -100
  130. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.ts +0 -49
  131. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.js +0 -2403
  132. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditorBundle.js +0 -5
  133. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.js +0 -40
  134. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.js +0 -14
  135. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.js +0 -123
  136. package/src/legacy/tool-ui/src/main/webapp/v4/Location.js +0 -19
  137. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.js +0 -148
  138. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.js +0 -24
  139. package/src/legacy/tool-ui/src/main/webapp/v4/Message.js +0 -14
  140. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.js +0 -32
  141. package/src/legacy/tool-ui/src/main/webapp/v4/Page.js +0 -890
  142. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.js +0 -758
  143. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewEditor.js +0 -86
  144. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewOverlay.js +0 -1005
  145. package/src/legacy/tool-ui/src/main/webapp/v4/PubSub.js +0 -47
  146. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.js +0 -211
  147. package/src/legacy/tool-ui/src/main/webapp/v4/RegionMap.js +0 -215
  148. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.js +0 -160
  149. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.js +0 -154
  150. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.js +0 -281
  151. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.js +0 -255
  152. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.js +0 -56
  153. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.js +0 -874
  154. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.js +0 -100
  155. package/src/legacy/tool-ui/src/main/webapp/v4/StyleguidePresets.js +0 -357
  156. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.js +0 -360
  157. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.js +0 -27
  158. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.js +0 -224
  159. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.js +0 -147
  160. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContentBundle.js +0 -8
  161. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.js +0 -2417
  162. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditorBundle.js +0 -8
  163. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.js +0 -52
  164. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.d.ts +0 -13
  165. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.js +0 -177
  166. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.js +0 -90
  167. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/fileMock.js +0 -1
  168. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/styleMock.js +0 -1
  169. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/textArea.mock.js +0 -20
  170. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/globals.js +0 -770
  171. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/ProseMirror.test.js +0 -16
  172. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/index.html +0 -54
  173. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/CommentManager.test.js +0 -29
  174. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/index.html +0 -35
  175. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -42
  176. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/index.html +0 -37
  177. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -288
  178. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/block.html +0 -38
  179. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/inline.html +0 -38
  180. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/no-popups.html +0 -38
  181. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/ListManager.js +0 -257
  182. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/index.html +0 -38
  183. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/hierarchal.html +0 -33
  184. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/index.html +0 -33
  185. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/menubar.test.js +0 -195
  186. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/small.html +0 -34
  187. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/tags.html +0 -34
  188. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/PlaceholderManager.test.js +0 -134
  189. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-editable-placeholder.html +0 -32
  190. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-text.html +0 -34
  191. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/index.html +0 -31
  192. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/TableManager.test.js +0 -63
  193. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/existing.html +0 -48
  194. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/TrackManager.test.js +0 -291
  195. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/existing.html +0 -39
  196. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/insert.html +0 -37
  197. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/Sortable.test.js +0 -105
  198. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/ProseMirror.test.js +0 -41
  199. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/codemirror-shim.test.js +0 -72
  200. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/collab_manager/CollabManager.test.js +0 -46
  201. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -84
  202. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/list_manager/ListManager.test.js +0 -54
  203. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/menubar/menubar.test.js +0 -183
  204. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/spellcheck/SpellCheck.test.js +0 -45
  205. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/BSSerializer.test.js +0 -346
  206. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/menuItemsBuilder.test.js +0 -226
  207. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/utilities.test.js +0 -118
  208. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/Appetizeio.js +0 -5
  209. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.js +0 -113
  210. package/src/legacy/tool-ui/src/main/webapp/v4/compat/Fetch.js +0 -16
  211. package/src/legacy/tool-ui/src/main/webapp/v4/compat/jquery.js +0 -32
  212. package/src/legacy/tool-ui/src/main/webapp/v4/compat/requirejs.js +0 -13
  213. package/src/legacy/tool-ui/src/main/webapp/v4/dom/Tether.js +0 -1
  214. package/src/legacy/tool-ui/src/main/webapp/v4/dom/TetherLayout.js +0 -1
  215. package/src/legacy/tool-ui/src/main/webapp/v4/dom/closest.js +0 -1
  216. package/src/legacy/tool-ui/src/main/webapp/v4/dom/create.js +0 -1
  217. package/src/legacy/tool-ui/src/main/webapp/v4/dom/find.js +0 -1
  218. package/src/legacy/tool-ui/src/main/webapp/v4/dom/findAll.js +0 -1
  219. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifClick.js +0 -1
  220. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifMatches.js +0 -1
  221. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifUnmodified.js +0 -1
  222. package/src/legacy/tool-ui/src/main/webapp/v4/dom/index.js +0 -5
  223. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertBefore.js +0 -1
  224. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertFirst.js +0 -1
  225. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertLast.js +0 -1
  226. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFind.js +0 -1
  227. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFindOnce.js +0 -1
  228. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRTEReady.js +0 -1
  229. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRemove.js +0 -1
  230. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onVisible.js +0 -1
  231. package/src/legacy/tool-ui/src/main/webapp/v4/dom/previousUntil.js +0 -1
  232. package/src/legacy/tool-ui/src/main/webapp/v4/dom/resolveIconCompat.js +0 -40
  233. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/Socket.js +0 -1
  234. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/index.js +0 -1
  235. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.js +0 -909
  236. package/src/legacy/tool-ui/src/main/webapp/v4/rte/README.md +0 -68
  237. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.d.ts +0 -8
  238. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.js +0 -274
  239. package/src/legacy/tool-ui/src/main/webapp/v4/rte/collab-workflow.jpeg +0 -0
  240. package/src/legacy/tool-ui/src/main/webapp/v4/rte/interchangeable.ts +0 -250
  241. package/src/legacy/tool-ui/src/main/webapp/v4/rte/mention.js +0 -90
  242. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/PluginProvider.js +0 -124
  243. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/README.md +0 -46
  244. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/AIInlineManager.ts +0 -124
  245. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInlineView.ts +0 -1019
  246. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_manager/AiManager.ts +0 -199
  247. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/CollabManager.js +0 -339
  248. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.js +0 -96
  249. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/comment_manager/CommentManager.js +0 -348
  250. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -110
  251. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/README.md +0 -29
  252. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/EnhancementManager.js +0 -428
  253. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/README.md +0 -63
  254. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/commands.js +0 -690
  255. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/constants.js +0 -12
  256. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/enhancement-creation.jpeg +0 -0
  257. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/index.js +0 -15
  258. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/rte-flow.jpeg +0 -0
  259. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ActionButtonView.js +0 -86
  260. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/BlockSubmenuView.js +0 -60
  261. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/EnhancementView.js +0 -208
  262. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.js +0 -102
  263. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/SubmenuView.js +0 -365
  264. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/FindReplaceManager.js +0 -239
  265. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/FindView.js +0 -604
  266. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/FullscreenManager.js +0 -57
  267. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/README.md +0 -26
  268. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/commands.js +0 -16
  269. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/index.js +0 -4
  270. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.js +0 -474
  271. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/htmlEditorManager.js +0 -66
  272. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/views/HtmlEditorView.js +0 -97
  273. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.js +0 -342
  274. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/README.md +0 -50
  275. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/commands.js +0 -207
  276. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/constants.js +0 -26
  277. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/index.js +0 -4
  278. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/Menubar.js +0 -485
  279. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/README.md +0 -40
  280. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.js +0 -842
  281. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/PasteManager.js +0 -368
  282. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/placeholder_manager/PlaceHolderManager.js +0 -128
  283. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/README.md +0 -13
  284. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/RawTextManager.js +0 -96
  285. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/index.js +0 -3
  286. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-plugin.js +0 -280
  287. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-service.js +0 -94
  288. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/TableManager.js +0 -57
  289. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/commands.js +0 -97
  290. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerView.js +0 -88
  291. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableView.js +0 -613
  292. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/README.md +0 -13
  293. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/TrackManager.js +0 -905
  294. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/BSSerializer.js +0 -819
  295. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/README.md +0 -80
  296. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/commands.js +0 -98
  297. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.d.ts +0 -84
  298. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.js +0 -87
  299. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/index.js +0 -13
  300. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/keymapBuilder.js +0 -223
  301. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/menuItemsBuilder.js +0 -559
  302. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/schemaBuilder.js +0 -1281
  303. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.d.ts +0 -4
  304. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.js +0 -359
  305. package/src/legacy/tool-ui/src/main/webapp/v4/theme/ColorRotator.js +0 -1
  306. package/src/legacy/tool-ui/src/main/webapp/v4/util/debounce.js +0 -1
  307. package/src/legacy/tool-ui/src/main/webapp/v4/util/getComponentKey.js +0 -1
  308. package/src/legacy/tool-ui/src/main/webapp/v4/util/noise.js +0 -1
  309. package/src/legacy/tool-ui/src/main/webapp/v4/util/repaint.js +0 -1
  310. package/src/legacy/tool-ui/src/main/webapp/v4/util/storage.js +0 -1
  311. package/src/legacy/tool-ui/src/main/webapp/v4/util/throttle.js +0 -1
  312. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.js +0 -33
  313. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.js +0 -217
  314. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.js +0 -7
  315. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.js +0 -19
  316. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.js +0 -7
  317. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.js +0 -13
  318. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.js +0 -25
  319. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.js +0 -33
  320. 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
- }