@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,199 +0,0 @@
1
- import { ChangeSet } from 'prosemirror-changeset'
2
- import { DOMParser, Schema } from 'prosemirror-model'
3
- import { EditorState, Plugin, PluginKey, Transaction } from 'prosemirror-state'
4
- import { EditorView } from 'prosemirror-view'
5
- import { getLegacyHTMLTextForProsemirror } from '../../codemirror-shim'
6
- import moment from 'moment'
7
-
8
- const key = new PluginKey('ai')
9
-
10
- /**
11
- * The AI plugin.
12
- *
13
- * @param {*} schema The RTE schema.
14
- */
15
- const aiPlugin = (
16
- schema: Schema,
17
- userLabel: string,
18
- userId: string,
19
- compliantTagNameMap: Map<string, string>,
20
- ) => {
21
- return new Plugin({
22
- key,
23
- state: {
24
- init(state) {
25
- const pluginState = new Map()
26
- const activeStates = new Map()
27
- const disabledStates = new Map()
28
- const metaData = new Map()
29
- activeStates.set('toggleAiContent', false)
30
-
31
- pluginState.set('activeStates', activeStates)
32
- pluginState.set('disabledStates', disabledStates)
33
- pluginState.set('metaData', metaData)
34
- return pluginState
35
- },
36
- apply(transaction, value, oldState, newState) {
37
- const pluginState = value
38
- const meta = transaction.getMeta(key)
39
-
40
- if (meta && meta.hasOwnProperty('toggleAiContent')) {
41
- const currentTrackState = pluginState
42
-
43
- const newCurrentTrackState = !currentTrackState
44
- .get('activeStates')
45
- .get('toggleAiContent')
46
-
47
- pluginState
48
- .get('activeStates')
49
- .set('toggleAiContent', newCurrentTrackState)
50
- }
51
-
52
- transaction.setMeta('prevStateFromTo', {
53
- prevFrom: oldState.selection.from,
54
- prevTo: oldState.selection.to,
55
- })
56
-
57
- pluginState.set('prevPosition', oldState.selection.from)
58
- return pluginState
59
- },
60
- },
61
- appendTransaction(transactions, oldState, newState) {
62
- const tr = newState.tr
63
-
64
- transactions.forEach((transaction: Transaction, index) => {
65
- const meta = transaction.getMeta(key)
66
-
67
- const changeSet = ChangeSet.create(oldState.doc).addSteps(
68
- newState.doc,
69
- transaction.mapping.maps,
70
- null,
71
- )
72
-
73
- if (changeSet.changes.length) {
74
- changeSet.changes.forEach((change) => {
75
- const { fromB, toB } = change
76
-
77
- change.inserted.forEach((span) => {
78
- if (meta?.addedExternally) {
79
- const markType = schema.marks.ai
80
- const time = moment().format('MM/D/YYYY h:mm:ss A')
81
- const aiMark = markType.create({
82
- 'data-user-label': userLabel,
83
- 'data-time': time,
84
- 'data-user-id': userId,
85
- 'data-chat-id': meta?.chatId,
86
- 'data-response-id': meta?.responseId,
87
- title: `${userLabel}: ${time}`,
88
- })
89
-
90
- tr.addMark(fromB, toB, aiMark)
91
- } else {
92
- // Ensure that the AI mark is not applied to user typed text
93
- const hasAiMarkBefore =
94
- fromB > 0 &&
95
- schema.marks.ai.isInSet(
96
- newState.doc.resolve(fromB - 1).marks(),
97
- )
98
- const hasAiMarkAfter =
99
- toB < newState.doc.content.size &&
100
- schema.marks.ai.isInSet(newState.doc.resolve(toB).marks())
101
-
102
- if (hasAiMarkBefore || hasAiMarkAfter) {
103
- tr.removeMark(fromB, toB, schema.marks.ai)
104
- }
105
- }
106
- })
107
- })
108
- }
109
- })
110
-
111
- // Guard against infinite loops by checking if there are actual changes on the
112
- // transaction before returning it.
113
- if (tr.steps.length > 0) {
114
- return tr
115
- }
116
-
117
- return
118
- },
119
- props: {
120
- handleDOMEvents: {
121
- handleAi: (view, evt) => {
122
- const aiContent = evt.detail.aiContent
123
- const isReplace = evt.detail.replace
124
- const state = view.state
125
- const tr = state.tr
126
- const chatId = evt.detail.chatId
127
- const responseId = evt.detail.responseId
128
-
129
- const domFragment = document.createElement('div')
130
- domFragment.innerHTML = getLegacyHTMLTextForProsemirror(
131
- aiContent,
132
- state.schema,
133
- compliantTagNameMap,
134
- true,
135
- )
136
-
137
- const slice = DOMParser.fromSchema(schema).parseSlice(domFragment, {
138
- preserveWhitespace: 'full',
139
- })
140
-
141
- if (isReplace) {
142
- const markType = schema.marks.ai
143
- const time = moment().format('MM/D/YYYY h:mm:ss A')
144
- const aiMark = markType.create({
145
- 'data-user-label': userLabel,
146
- 'data-time': time,
147
- 'data-user-id': userId,
148
- 'data-chat-id': chatId,
149
- 'data-response-id': responseId,
150
- title: `${userLabel}: ${time}`,
151
- })
152
-
153
- tr.replaceWith(0, state.doc.content.size, slice.content)
154
-
155
- const newDocSize = tr.doc.content.size
156
- tr.addMark(0, newDocSize, aiMark)
157
- } else {
158
- const from = view.state.selection.ranges[0].$from.pos
159
- let to = view.state.selection.ranges[0].$to.pos
160
-
161
- to = from + slice.size + (from === 0 ? 1 : 0)
162
-
163
- tr.replaceSelection(slice)
164
- }
165
-
166
- tr.setMeta(key, {
167
- addedExternally: true,
168
- chatId: chatId,
169
- responseId: responseId,
170
- })
171
-
172
- view.dispatch(tr)
173
- },
174
- },
175
- },
176
- })
177
- }
178
-
179
- /**
180
- * Command triggered when user engages AI tracking. Dispatches
181
- * a meta update to toggle the tracking state.
182
- */
183
- const toggleAiContent = () => {
184
- return function (
185
- state: EditorState,
186
- dispatch: (tr: Transaction) => void,
187
- editorView?: EditorView,
188
- ) {
189
- dispatch(
190
- state.tr.setMeta(key, {
191
- toggleAiContent: true,
192
- }),
193
- )
194
-
195
- editorView?.dom.classList.toggle('ProseMirror-aiPreviewMode')
196
- }
197
- }
198
-
199
- export { aiPlugin, toggleAiContent }
@@ -1,339 +0,0 @@
1
- /* eslint-disable no-debugger */
2
- /* global RTE_CONTENT_IS_LOCKED */
3
- /* global RTE_CONTENT_IS_LOCKED_BY_ANOTHER_USER */
4
- /* global RTE_CONTENT_CANNOT_BE_EDITED_WARNING */
5
- import { Plugin, PluginKey } from 'prosemirror-state'
6
- import { Decoration, DecorationSet } from 'prosemirror-view'
7
- import { findParentNodeOfTypeClosestToPos } from 'prosemirror-utils'
8
- import { ChangeSet } from 'prosemirror-changeset'
9
- import { AvatarView } from './views/AvatarView'
10
-
11
- if (!window.BRIGHTSPOT?.ui.cms.enableV5UI) {
12
- await import('./views/CollabEditing.less')
13
- }
14
-
15
- const CONTENT_IS_LOCKED_TEXT =
16
- typeof RTE_CONTENT_IS_LOCKED !== 'undefined'
17
- ? RTE_CONTENT_IS_LOCKED
18
- : 'Pending edit from'
19
- const CONTENT_CAN_NOT_BE_EDITED_WARNING =
20
- typeof RTE_CONTENT_CANNOT_BE_EDITED_WARNING !== 'undefined'
21
- ? RTE_CONTENT_CANNOT_BE_EDITED_WARNING
22
- : 'This selection has content that is being edited by someone else and can not be modified.'
23
- const CONTENT_IS_LOCKED_BY_ANOTHER_USER_TEXT =
24
- typeof RTE_CONTENT_IS_LOCKED_BY_ANOTHER_USER !== 'undefined'
25
- ? RTE_CONTENT_IS_LOCKED_BY_ANOTHER_USER
26
- : 'another user'
27
- let globalLockedList = {}
28
- const key = new PluginKey('collabManager')
29
-
30
- /**
31
- * @param {Object.<number>} anchorMap
32
- * @param {Array.<Object.<number>>} rangeList
33
- * @param {string} userId
34
- * @param {ProseMirror.DecorationSet} decos
35
- * @param {ProseMirror.Model.Node} doc
36
- * @return {ProseMirror.DecorationSet}
37
- */
38
- const getDecos = (anchorMap, rangeList, lockedList, userId, decos, doc) => {
39
- const userData = new Map()
40
-
41
- Object.keys(anchorMap).forEach((key) => {
42
- decos = decos.remove(decos.find(null, null, (spec) => spec.id === key))
43
-
44
- if (key === userId) {
45
- return
46
- }
47
-
48
- if (anchorMap[key] === null) {
49
- return
50
- }
51
- const widget = document.createElement('span')
52
- // Getting the user's background and title from the user
53
- // avatar so that way the colors and title can match up
54
- // with the avatar if one exisys. We will store this data
55
- // in a map in case we see the same user in the range loop below.
56
- const userAvatar = document.querySelector(
57
- `.ToolUserAvatar[data-user-id="${key}"]`,
58
- )
59
- let backgroundColor = 'rgb(255, 71, 71)'
60
- let title = ''
61
- if (userAvatar && userAvatar.style) {
62
- backgroundColor = userAvatar.style.backgroundColor
63
- title = userAvatar.title
64
- userData.set(key, {
65
- backgroundColor,
66
- title,
67
- })
68
- }
69
- widget.style.borderColor = backgroundColor
70
- widget.style.backgroundColor = backgroundColor
71
- widget.title = title
72
- widget.className = 'ProseMirror-collabCursor'
73
- const deco = Decoration.widget(anchorMap[key], widget, {
74
- id: key,
75
- })
76
- decos = decos.add(doc, [deco])
77
- })
78
-
79
- rangeList.forEach((range) => {
80
- if (range.clientId === userId) {
81
- return
82
- }
83
-
84
- let highlightTitle = ''
85
- let highlightColor = 'rgb(255, 71, 71)'
86
- let red = 255
87
- let green = 71
88
- let blue = 71
89
-
90
- // Getting the user's background and title from the user
91
- // avatar so that way the colors and title can match up
92
- // with the avatar if one exists.
93
- if (userData.get(range.clientId)) {
94
- highlightColor = userData.get(range.clientId).backgroundColor
95
- highlightTitle = userData.get(range.clientId).title
96
- } else {
97
- const userAvatar = document.querySelector(
98
- `.ToolUserAvatar[data-user-id="${range.clientId}"]`,
99
- )
100
- if (userAvatar && userAvatar.style) {
101
- highlightColor = userAvatar.style.backgroundColor
102
- highlightTitle = userAvatar.title
103
- }
104
- }
105
- // Getting the rgb colors so that we can use rgba for the background
106
- // color and set an opacity. Otherwise, the background color is a
107
- // little too dark, making it hard to read the text underneath.
108
- const match = highlightColor.match(/rgb\((\d+), (\d+), (\d+)\)/)
109
- red = match[1]
110
- green = match[2]
111
- blue = match[3]
112
-
113
- const adjustedHighlightColor = `rgba(${red}, ${green}, ${blue}, .5)`
114
-
115
- decos = decos.remove(
116
- decos.find(null, null, (spec) => spec.id === range.clientId),
117
- )
118
-
119
- const deco = Decoration.inline(
120
- range.from,
121
- range.to,
122
- {
123
- class: 'collab-selection',
124
- style: `background-color: ${adjustedHighlightColor};`,
125
- title: highlightTitle,
126
- },
127
- {
128
- id: range.clientId,
129
- },
130
- )
131
- decos = decos.add(doc, [deco])
132
- })
133
-
134
- doc.descendants((node, pos, parent) => {
135
- decos = decos.remove(
136
- decos.find(null, null, (spec) => spec.id === node.attrs.id),
137
- )
138
-
139
- if (
140
- Object.keys(lockedList).indexOf(node.attrs.id) !== -1 &&
141
- lockedList[node.attrs.id] !== userId
142
- ) {
143
- const userAvatar = document.querySelector(
144
- `.ToolUserAvatar[data-user-id="${lockedList[node.attrs.id]}"]`,
145
- )
146
- let userName = CONTENT_IS_LOCKED_BY_ANOTHER_USER_TEXT
147
- if (userAvatar && userAvatar.title && userAvatar.title !== '') {
148
- userName = userAvatar.title
149
- }
150
- const widget = document.createElement('span')
151
- widget.className = 'CollabEditing-message-isLocked'
152
- widget.innerText = `${CONTENT_IS_LOCKED_TEXT} ${userName}`
153
- const deco = Decoration.widget(pos, widget, {
154
- id: node.attrs.id,
155
- })
156
- const nodeDeco = Decoration.node(
157
- pos,
158
- pos + node.nodeSize,
159
- {
160
- 'is-locked': 'true',
161
- class: 'is-locked',
162
- },
163
- {
164
- id: node.attrs.id,
165
- },
166
- )
167
- decos = decos.add(doc, [deco, nodeDeco])
168
- }
169
- })
170
- return decos
171
- }
172
-
173
- /**
174
- * The Collab plugin. This manages decorations that indicate other users'
175
- * cursor placement. It places a mock cursor when a user is simply anchored
176
- * or highlights the range a user is selecting. It maps the decorations through
177
- * each state change so that the decoration will remain anchored to the original
178
- * location, even as state changes modify positions. The plugin will remove anchors
179
- * and highlighted ranges when the RTE is notified that the user has changed
180
- * position.
181
- *
182
- * @param {*} schema The RTE schema.
183
- * @param {string} userId The current user's ID
184
- * @param {Object.<number>} anchorMap A mapping of userIds to their anchors, as
185
- * provided by the backend.
186
- * @param {Array.<Object.<number>>} rangeList A list of mappings of userIds to their
187
- * selected ranges, as provided by the backend.
188
- * @return {Function} This plugin.
189
- */
190
- const collabPlugin = (schema, userId, anchorMap, rangeList, lockedList) => {
191
- return new Plugin({
192
- key,
193
- view(editorView) {
194
- this.view = new AvatarView(editorView, userId, anchorMap)
195
- return this.view
196
- },
197
- state: {
198
- init(state) {
199
- const pluginState = new Map()
200
- let decos = DecorationSet.create(state.doc, [])
201
- if (
202
- Object.keys(anchorMap).length ||
203
- rangeList.length ||
204
- Object.keys(lockedList).length
205
- ) {
206
- decos = getDecos(
207
- anchorMap,
208
- rangeList,
209
- lockedList,
210
- userId,
211
- decos,
212
- state.doc,
213
- )
214
- }
215
- pluginState.set('decos', decos)
216
- const connectedIds = new Set()
217
- Object.keys(anchorMap).forEach((key) => {
218
- if (anchorMap[key] !== null) {
219
- connectedIds.add(key)
220
- }
221
- })
222
- pluginState.set('connectedIds', connectedIds)
223
- pluginState.set('userId', userId)
224
- return pluginState
225
- },
226
- apply(tr, value, oldState, newState) {
227
- const pluginState = value
228
- let decos = pluginState.get('decos').map(tr.mapping, tr.doc)
229
- const connectedIds = pluginState.get('connectedIds')
230
- const meta = tr.getMeta(this)
231
- if (meta && (meta.anchorMap || meta.rangeList || meta.lockedList)) {
232
- const anchorMap = meta.anchorMap
233
- const rangeList = meta.rangeList
234
- const lockedList = meta.lockedList
235
- globalLockedList = lockedList
236
- decos = getDecos(
237
- anchorMap,
238
- rangeList,
239
- lockedList,
240
- userId,
241
- decos,
242
- tr.doc,
243
- )
244
- Object.keys(anchorMap).forEach((key) => {
245
- if (anchorMap[key] === null) {
246
- connectedIds.delete(key)
247
- } else {
248
- connectedIds.add(key)
249
- }
250
- })
251
- }
252
- pluginState.set('connectedIds', connectedIds)
253
- pluginState.set('decos', decos)
254
- return pluginState
255
- },
256
- },
257
- props: {
258
- decorations(state) {
259
- return this.getState(state).get('decos')
260
- },
261
- },
262
- filterTransaction(tr, state) {
263
- let allowTransaction = true
264
- const collabManagerPluginState = state.collabManager$
265
- const connectedIds = collabManagerPluginState.get('connectedIds')
266
- const currentUserId = collabManagerPluginState.get('userId')
267
- const decos = collabManagerPluginState.get('decos')
268
- // This will hold all the table nodes that are currently being edited by
269
- // other users
270
- const tableSet = new Set()
271
- // Loop through the connected users to find any tables being edited
272
- for (let id of connectedIds.values()) {
273
- if (id === currentUserId) {
274
- continue
275
- }
276
- let userDecos = decos.find(null, null, (spec) => spec.id === id)
277
- let deco = userDecos.length ? userDecos[0] : null
278
- if (deco) {
279
- const pos = deco.from
280
- const tableNode = findParentNodeOfTypeClosestToPos(
281
- state.doc.resolve(pos),
282
- state.schema.nodes.table,
283
- )
284
-
285
- if (tableNode) {
286
- tableSet.add(tableNode.node)
287
- }
288
- }
289
- }
290
-
291
- // If we have any tables being edited, loop through the deleted content in the
292
- // changeSet to find if any of the content that was deleted contains a table being
293
- // edited, and if so, cancel this transaction.
294
- if (tableSet.size) {
295
- const changeSet = ChangeSet.create(state.doc).addSteps(
296
- state.doc,
297
- tr.mapping.maps,
298
- )
299
- changeSet.deleted.forEach((deletedSpan) => {
300
- const slice = deletedSpan.slice
301
- const content = slice.content.content
302
- const hasTableBeingEdited = content.some((node) => tableSet.has(node))
303
- if (hasTableBeingEdited) {
304
- window.alert(CONTENT_CAN_NOT_BE_EDITED_WARNING)
305
- allowTransaction = false
306
- }
307
- })
308
- } else {
309
- const steps = tr.steps
310
- if (!tr.docs || tr.type === 'received') {
311
- return allowTransaction
312
- }
313
- const prevDoc = tr.docs[0]
314
- const nodesModified = []
315
- steps.forEach((step) => {
316
- const { from, to } = step
317
- prevDoc.nodesBetween(from, to, (node) => {
318
- nodesModified.push(node)
319
- })
320
- })
321
-
322
- const hasLockedContent = nodesModified.some((node) => {
323
- return (
324
- Object.keys(globalLockedList).indexOf(node.attrs.id) !== -1 &&
325
- globalLockedList[node.attrs.id] !== userId
326
- )
327
- })
328
-
329
- if (hasLockedContent) {
330
- window.alert(CONTENT_CAN_NOT_BE_EDITED_WARNING)
331
- allowTransaction = false
332
- }
333
- }
334
-
335
- return allowTransaction
336
- },
337
- })
338
- }
339
- export { collabPlugin, getDecos }
@@ -1,96 +0,0 @@
1
- /* eslint-disable no-debugger */
2
- import { constants } from '../../../settings'
3
-
4
- if (!window.BRIGHTSPOT?.ui.cms.enableV5UI) {
5
- await import('./AvatarView.less')
6
- }
7
-
8
- /**
9
- * Controls the displaying of user avatars, which
10
- * represent concurrent users in the RTE within a
11
- * collaborative editing environment.
12
- *
13
- * @param {Prosemirror.EditorView} editorView
14
- * @param {string} userId Current userId
15
- * @param {Object.<string>} anchorMap Mapping of user ids to positions
16
- * in the editor.
17
- */
18
- class AvatarView {
19
- constructor(editorView, userId, anchorMap) {
20
- this.editorView = editorView
21
- this.userId = userId
22
- this.dom = editorView.dom.parentElement.querySelector(
23
- `.${constants.CLASSES.PM_AVATAR_WRAPPER}`,
24
- )
25
- /**
26
- * Holds the userIds of the currently displayed avatars.
27
- * @property {Map} currentAvatarIds
28
- */
29
- this.currentAvatarIds = new Map()
30
- const connectedIds = new Set()
31
- Object.keys(anchorMap).forEach((key) => {
32
- connectedIds.add(key)
33
- })
34
- this.render(connectedIds)
35
- }
36
-
37
- /**
38
- * Renders the UI.
39
- * @param {Set.<string>} connectedIds The ids of all the
40
- * concurrent users.
41
- */
42
- render(connectedIds) {
43
- // If a user id of a currently displayed avatar is not in
44
- // the connectedIds set, we should remove it.
45
- this.currentAvatarIds.forEach((value, id) => {
46
- if (!connectedIds.has(id)) {
47
- const avatar = this.dom.querySelector(
48
- `.ToolUserAvatar[data-user-id="${id}"]`,
49
- )
50
- if (avatar) {
51
- avatar.remove()
52
- this.currentAvatarIds.delete(id)
53
- }
54
- }
55
- })
56
- // For each of the connected users, we should display their avatar
57
- // if it's not already displayed. We will just clone the avatar
58
- // that is already on the page.
59
- connectedIds.forEach((id) => {
60
- if (id === this.userId) {
61
- return
62
- }
63
- const avatar = this.dom.querySelector(
64
- `.ToolUserAvatar[data-user-id="${id}"]`,
65
- )
66
- if (!avatar) {
67
- const mainAvatar = document.querySelector(
68
- `.ToolUserAvatar[data-user-id="${id}"]`,
69
- )
70
- if (mainAvatar) {
71
- const clonedAvatar = mainAvatar.cloneNode(true)
72
- this.dom.appendChild(clonedAvatar)
73
- this.currentAvatarIds.set(id, true)
74
- }
75
- }
76
- })
77
- }
78
-
79
- /**
80
- * ProseMirror calls this when the plugin's state
81
- * changes.
82
- *
83
- * @param {ProseMirror.State} oldState
84
- * @param {ProseMirror.State} newState
85
- */
86
- update(oldState, newState) {
87
- const connectedIds = newState.collabManager$.get('connectedIds')
88
- this.render(connectedIds)
89
- }
90
-
91
- destroy() {
92
- this.dom.remove()
93
- }
94
- }
95
-
96
- export { AvatarView }