@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,365 +0,0 @@
1
- import {
2
- clearEnhancement,
3
- editEnhancement,
4
- removeEnhancement,
5
- moveEnhancementUp,
6
- moveEnhancementDown,
7
- moveEnhancement,
8
- } from '../commands'
9
- import { constants } from '../../../settings'
10
- import { ActionButtonView } from './ActionButtonView'
11
- import create from '../../../../dom/create'
12
-
13
- if (!window.BRIGHTSPOT?.ui.cms.enableV5UI) {
14
- await import('./Enhancement.less')
15
- await import('./ProsemirrorEnhancementMenu.less')
16
- }
17
-
18
- /**
19
- * This is the submenu for enhancements.
20
- */
21
- class SubmenuView {
22
- /**
23
- * @param {Prosemirror.Model.Node} node The node associated with this submenu
24
- * @param {Prosemirror.EditorView} editorView
25
- * @param {Element} companionDom The DOM element in the RTE associated with this
26
- * view
27
- */
28
- constructor(node, editorView, getPos, companionDom) {
29
- this.node = node
30
- this.companionDom = companionDom
31
- this.editorView = editorView
32
- this.getPos = getPos
33
- this.submenuDOM = document.createElement('div')
34
- this.companionDom.submenu = this.submenuDOM
35
-
36
- this.render()
37
-
38
- PubSub.subscribe('blockEnhancementCleared', (evt) => {
39
- this.close(evt)
40
- })
41
- }
42
-
43
- /**
44
- * This is a small hack to handle keyboard events for
45
- * accessibility. Since the frame API needs a DOM
46
- * event trigger, we need to simulate a click
47
- * on the keyboard event trigger.
48
- *
49
- * @param {Event} evt
50
- */
51
- _handleKeyboardInteraction(evt) {
52
- const key = evt.key
53
- if (key === 'Enter') {
54
- evt.target.click()
55
- } else {
56
- return false
57
- }
58
- }
59
-
60
- /**
61
- * Event handler for when the user interacts with
62
- * the submenu buttons.
63
- *
64
- * @private
65
- * @param {Event} evt
66
- * @param {string} actionType
67
- */
68
- _handleAction = (evt, actionType) => {
69
- if (evt.key) {
70
- this._handleKeyboardInteraction(evt)
71
- return
72
- }
73
- evt.preventDefault()
74
- switch (actionType) {
75
- case 'clearFormatting':
76
- clearEnhancement(this.node)(
77
- this.editorView.state,
78
- this.editorView.dispatch,
79
- this.editorView,
80
- )
81
- break
82
- case 'edit':
83
- editEnhancement(this.node)(
84
- this.editorView.state,
85
- this.editorView.dispatch,
86
- this.editorView,
87
- evt,
88
- )
89
- break
90
-
91
- case 'convert':
92
- break
93
- case 'remove':
94
- removeEnhancement(this.editorView, this.getPos)
95
- break
96
- case 'upward':
97
- moveEnhancementUp(this.editorView, this.getPos)
98
- break
99
- case 'downward':
100
- moveEnhancementDown(this.editorView, this.getPos)
101
- break
102
- case 'pointAndClick':
103
- moveEnhancement(this.editorView, this.getPos)
104
- break
105
- }
106
- this.close(evt)
107
- // Calling render again ensures we have a clean set of menu buttons
108
- // after the item has moved (e.g. to help determine if the upward
109
- // and downward arrows should be displayed).
110
- // Should not run if the user clicked on the convert button dropdown
111
- if (actionType !== 'convert') {
112
- this.render()
113
- }
114
- }
115
-
116
- _getActions = (meta) => {
117
- const actions = []
118
- const loadableTypes = this.node.attrs.attributes['data-loadable-types']
119
-
120
- if (meta.popup) {
121
- actions.push({
122
- action: 'edit',
123
- title: 'Edit',
124
- icon: 'edit',
125
- })
126
- }
127
-
128
- if (meta.isConvertible && loadableTypes) {
129
- actions.push({
130
- action: 'convert',
131
- title: 'Convert',
132
- icon: 'more_horiz',
133
- loadableTypes: loadableTypes,
134
- })
135
- }
136
- if (meta.line) {
137
- actions.push({
138
- action: 'upward',
139
- title: 'Move Up',
140
- icon: 'arrow_upward',
141
- })
142
- actions.push({
143
- action: 'downward',
144
- title: 'Move Down',
145
- icon: 'arrow_downward',
146
- })
147
- if (meta.readOnly) {
148
- actions.push({
149
- action: 'pointAndClick',
150
- title: 'Anchor',
151
- icon: 'open_with',
152
- })
153
- }
154
- }
155
- if (!meta.readOnly) {
156
- actions.push({
157
- action: 'clearFormatting',
158
- title: 'Clear Formatting',
159
- icon: 'link_off',
160
- })
161
- } else {
162
- actions.push({
163
- action: 'remove',
164
- title: 'Remove',
165
- icon: 'remove',
166
- })
167
- }
168
- return actions
169
- }
170
-
171
- /**
172
- * Generates the content for the submenu
173
- *
174
- * @private
175
- * @return {Element} All of the content wrapped inside this
176
- * element.
177
- */
178
- _getContent() {
179
- const attributes = this.node.attrs.attributes
180
- const meta = this.node.attrs.meta
181
- const container = document.createElement(constants.ELEMENTS.DIV)
182
- container.className = 'ProsemirrorEnhancementMenu-container'
183
- const href = attributes ? attributes.href : null
184
- const label = meta.displayName
185
- const actions = this._getActions(meta)
186
-
187
- container.appendChild(
188
- create(
189
- 'span',
190
- { className: 'ProsemirrorEnhancementMenu-container-label' },
191
- label,
192
- ),
193
- )
194
-
195
- if (href) {
196
- container.appendChild(
197
- create(
198
- 'a',
199
- {
200
- className: 'ProsemirrorEnhancementMenu-container-link-goto',
201
- href: href,
202
- target: '_blank',
203
- },
204
- 'Go to Link',
205
- ),
206
- )
207
- container.appendChild(
208
- create(
209
- 'a',
210
- {
211
- 'data-frame-post': '',
212
- class: 'ProsemirrorEnhancementMenu-container-link',
213
- href: href,
214
- target: '_blank',
215
- },
216
- href,
217
- ),
218
- )
219
- }
220
-
221
- actions.forEach((metaObj) => {
222
- const { action, title, icon } = metaObj
223
- const rteId = this.editorView.props.props.ctx.id
224
- const handleAction = this._handleAction
225
- const button = new ActionButtonView({
226
- action,
227
- title,
228
- icon,
229
- handleAction,
230
- rteId,
231
- })
232
- container.appendChild(button)
233
- })
234
-
235
- return container
236
- }
237
-
238
- /**
239
- * Positions the submenu.
240
- */
241
- positionSubmenu = () => {
242
- if (!this.editorView.submenu.isOpen) {
243
- return
244
- }
245
- const enhancementPos =
246
- this.editorView.submenu.tetheredTo.getBoundingClientRect()
247
- const enhancementTop = enhancementPos.top
248
- const enhancementLeft = enhancementPos.left
249
- const enhancementRight = enhancementPos.right
250
- const prosemirrorContainer = this.editorView.dom.parentNode
251
- const prosemirrorContainerPos = prosemirrorContainer.getBoundingClientRect()
252
- const containerTop = prosemirrorContainerPos.top
253
- const containerLeft = prosemirrorContainerPos.left
254
- const containerRight = prosemirrorContainerPos.right
255
- this.editorView.submenu.style.top = `${
256
- enhancementTop - containerTop + 20
257
- }px`
258
-
259
- const submenuPos = this.editorView.submenu.getBoundingClientRect()
260
- const submenuWidth = submenuPos.width
261
-
262
- if (
263
- submenuWidth > containerRight - enhancementLeft &&
264
- submenuWidth < enhancementRight - containerLeft
265
- ) {
266
- this.editorView.submenu.style.right = `${
267
- containerRight - enhancementRight
268
- }px`
269
- this.editorView.submenu.style.left = 'auto'
270
- } else if (enhancementLeft + submenuWidth > containerRight) {
271
- this.editorView.submenu.style.left = `${
272
- containerRight - submenuWidth - containerLeft
273
- }px`
274
- this.editorView.submenu.style.right = 'auto'
275
- } else {
276
- this.editorView.submenu.style.left = `${
277
- enhancementLeft - containerLeft
278
- }px`
279
- this.editorView.submenu.style.right = 'auto'
280
- }
281
- }
282
-
283
- /**
284
- * Draws the submenu.
285
- */
286
- render() {
287
- const rteId = this.editorView.props.props.ctx.id
288
- PubSub.publish(`${rteId}-submenu-view-destroy`)
289
- this.submenuDOM.innerHTML = ''
290
- this.submenuDOM.className = 'ProsemirrorEnhancementMenu'
291
- const contentElement = this._getContent()
292
- this.submenuDOM.appendChild(contentElement)
293
- }
294
-
295
- /**
296
- * Opens the submenu.
297
- *
298
- * @param {Event} evt The event object.
299
- */
300
- open = (evt) => {
301
- evt.preventDefault()
302
- evt.stopImmediatePropagation()
303
- const target =
304
- evt.currentTarget.parentElement.closest('.Enhancement') ||
305
- evt.currentTarget
306
- const pos = this.editorView.state.selection.$from.pos
307
- const nodeAtPos = this.editorView.state.doc.nodeAt(pos)
308
-
309
- this.editorView.submenu.isOpen = true
310
- this.editorView.submenu.tetheredTo = target
311
- this.editorView.submenu.innerHTML = ''
312
-
313
- // Check if cursor is on other marks and show the additional submenus.
314
- if (nodeAtPos) {
315
- const domNode = this.editorView.domAtPos(pos, 1).node
316
- const elements = new Set()
317
-
318
- if (domNode.nodeType === Node.TEXT_NODE) {
319
- let parent = domNode.parentElement
320
- while (parent) {
321
- if (
322
- RICH_TEXT_ELEMENTS.some((item) => {
323
- return item.tag === parent.tagName.toLowerCase()
324
- })
325
- ) {
326
- elements.add(parent)
327
- } else if (parent?.classList.contains('.ProseMirror')) {
328
- break
329
- }
330
- parent = parent.parentElement
331
- }
332
- }
333
-
334
- if (elements.size > 0) {
335
- elements.forEach((element) => {
336
- if (element.submenu) {
337
- this.editorView.submenu.appendChild(element.submenu)
338
- }
339
- })
340
- } else {
341
- this.editorView.submenu.appendChild(this.submenuDOM)
342
- }
343
- } else {
344
- this.editorView.submenu.appendChild(this.submenuDOM)
345
- }
346
-
347
- this.editorView.submenu.classList.add('open')
348
- this.positionSubmenu()
349
- }
350
-
351
- /**
352
- * Closes the submenu.
353
- * @param {Event} evt The event object.
354
- */
355
- close(evt) {
356
- if (evt && evt.key && evt.key !== constants.KEY_MAPPINGS.ESCAPE) {
357
- return
358
- }
359
- this.editorView.submenu.classList.remove('open')
360
- this.editorView.submenu.isOpen = false
361
- this.editorView.submenu.tetheredTo = null
362
- }
363
- }
364
-
365
- export { SubmenuView }
@@ -1,239 +0,0 @@
1
- import { Plugin, PluginKey } from 'prosemirror-state'
2
- import { FindView } from './views/FindView'
3
- import { Decoration, DecorationSet } from 'prosemirror-view'
4
- import { keydownHandler } from 'prosemirror-keymap'
5
- import { findKeyMapping, keyMappingHandler } from '../../settings/keymapBuilder'
6
-
7
- const key = new PluginKey('findReplace')
8
- const keyHandler = {}
9
-
10
- keyHandler[findKeyMapping('find')] = keyMappingHandler('rte2-toolbar-find')
11
-
12
- /**
13
- * Menu action for when user toggles the find menu icon.
14
- */
15
- const toggleFind = () => {
16
- return function (state, dispatch, editorView) {
17
- dispatch(
18
- state.tr.setMeta(key, {
19
- toggleFind: true,
20
- }),
21
- )
22
-
23
- return true
24
- }
25
- }
26
-
27
- /**
28
- * Escapes string of text so that it can be used as a regex.
29
- *
30
- * @param {string} text String to be escaped
31
- */
32
- const escapeRegEx = (text) => {
33
- return text.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&')
34
- }
35
-
36
- /**
37
- * Creates a decoration set based on the items 'found' by our view. This is triggered
38
- * by the user interacting with the Find and Replace view widget.
39
- *
40
- * @param {ProseMirror.EditorView} doc
41
- * @param {Array.<Object.<number|string>>} toFind Data representation
42
- * of found items
43
- * @returns {ProseMirror.DecorationSet}
44
- */
45
- const getDecos = (doc, toFind) => {
46
- const decos = toFind.map((item) => {
47
- let className = 'ProseMirrorFindReplace-found'
48
- if (item.isActive) {
49
- className = `${className} active`
50
- }
51
- return Decoration.inline(
52
- item.from,
53
- item.to,
54
- {
55
- class: className,
56
- },
57
- {
58
- text: item.text,
59
- idx: item.idx,
60
- },
61
- )
62
- })
63
- return DecorationSet.create(doc, decos)
64
- }
65
-
66
- /**
67
- * This also creates a decoration set of 'found' items, but this is triggered directly
68
- * by state changes in the editorView (e.g. user has already run a find and left the find open
69
- * and then typed the word to be found in the editorView).
70
- *
71
- * @param {ProseMirror.EditorView} doc
72
- * @param {string} text
73
- * @param {number} current
74
- * @param {boolean} matchCase
75
- * @param {boolean} matchWholeWord
76
- * @param {boolean} isReplaceAction
77
- */
78
- const handleFind = (
79
- doc,
80
- text,
81
- current,
82
- matchCase,
83
- matchWholeWord,
84
- isReplaceAction,
85
- ) => {
86
- let options = 'gi'
87
- if (matchCase) {
88
- options = 'g'
89
- }
90
- const escapedText = escapeRegEx(text)
91
- let wordRegEx = new RegExp(escapedText, options)
92
- if (matchWholeWord) {
93
- wordRegEx = new RegExp(`\\b${escapedText}\\b`, options)
94
- }
95
- const decos = []
96
- current = current ? parseInt(current) : 0
97
- let idx = 1
98
- let found = []
99
- doc.descendants((node, pos) => {
100
- if (node.isText) {
101
- let match
102
- while ((match = wordRegEx.exec(node.text))) {
103
- let className = 'ProseMirrorFindReplace-found'
104
- if (idx === current && !isReplaceAction) {
105
- className = 'ProseMirrorFindReplace-found active'
106
- }
107
- decos.push(
108
- Decoration.inline(
109
- pos + match.index,
110
- pos + match.index + match[0].length,
111
- {
112
- class: className,
113
- },
114
- {
115
- text,
116
- idx,
117
- },
118
- ),
119
- )
120
- idx++
121
- found.push({
122
- from: pos + match.index,
123
- to: pos + match.index + match[0].length,
124
- })
125
- }
126
- }
127
- })
128
-
129
- return {
130
- set: DecorationSet.create(doc, decos),
131
- total: decos.length,
132
- found,
133
- }
134
- }
135
-
136
- /**
137
- * Find and replace plugin.
138
- */
139
- const findReplacePlugin = () => {
140
- return new Plugin({
141
- key,
142
-
143
- view(editorView) {
144
- this.view = new FindView(editorView, this.key.key)
145
- const dom = this.view.dom
146
- const toolbar = editorView.dom.parentNode.querySelector(
147
- '.ProseMirrorToolbar',
148
- )
149
- toolbar.appendChild(dom)
150
- return this.view
151
- },
152
-
153
- state: {
154
- init(config) {
155
- const pluginState = new Map()
156
- const activeStates = new Map()
157
- activeStates.set('find', false)
158
- pluginState.set('activeStates', activeStates)
159
- const decos = DecorationSet.empty
160
- pluginState.set('decos', decos)
161
- return pluginState
162
- },
163
-
164
- apply(tr, value, oldState, newState) {
165
- const pluginState = value
166
- const meta = tr.getMeta(this)
167
- let decos = pluginState.get('decos').map(tr.mapping, tr.doc)
168
-
169
- if (meta && meta.hasOwnProperty('toggleFind')) {
170
- const currentState = pluginState
171
- const newCurrentState = !currentState.get('activeStates').get('find')
172
- if (!newCurrentState) {
173
- this.spec.view.findInputEle.value = ''
174
- decos = DecorationSet.empty
175
- PubSub.publish('findReset', {
176
- total: 0,
177
- })
178
- }
179
- pluginState.get('activeStates').set('find', newCurrentState)
180
- }
181
-
182
- if (meta && meta.hasOwnProperty('toFind')) {
183
- decos = getDecos(newState.doc, meta.toFind)
184
- } else if (
185
- this.spec.view.findInputEle &&
186
- this.spec.view.findInputEle.value
187
- ) {
188
- const results = handleFind(
189
- newState.doc,
190
- this.spec.view.findInputEle.value,
191
- this.spec.view.current,
192
- this.spec.view.matchCase.checked,
193
- this.spec.view.matchWholeWord.checked,
194
- this.spec.view.isReplaceAction,
195
- )
196
- decos = results.set
197
-
198
- // The following publishes are set up so that this plugin can
199
- // let its view know that UI state data has changed and allow the
200
- // view to update itself accordingly, rather than the plugin accessing
201
- // view methods to update the view. UI state data changes can be triggered
202
- // either by our widget view or by editorView itself, but this isolates
203
- // UI state data changes to be made only in the view.
204
- if (this.spec.view.total < results.total) {
205
- PubSub.publish('findAdded', {
206
- total: results.total,
207
- })
208
- }
209
-
210
- if (this.spec.view.total > results.total) {
211
- PubSub.publish('findRemoved', {
212
- total: results.total,
213
- })
214
- }
215
- }
216
-
217
- pluginState.set('decos', decos)
218
- return pluginState
219
- },
220
- },
221
-
222
- props: {
223
- decorations(state) {
224
- const pluginState = this.getState(state)
225
- return pluginState.get('decos')
226
- },
227
- handleKeyDown: (view, event) => {
228
- keydownHandler(keyHandler)(view, event)
229
-
230
- // Prevent native find from opening when in RTE.
231
- if (event.key === 'f' && event.metaKey) {
232
- return true
233
- }
234
- },
235
- },
236
- })
237
- }
238
-
239
- export { findReplacePlugin, toggleFind, escapeRegEx }