@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,1005 +0,0 @@
1
- import create from './dom/create'
2
- import repaint from './util/repaint'
3
- import throttle from './util/throttle'
4
-
5
- export default class PreviewOverlay {
6
- // Return the Greatest Common Denominator (GCD), recursively.
7
- static gcd(a, b) {
8
- return b ? PreviewOverlay.gcd(b, a % b) : a
9
- }
10
-
11
- static getObserver() {
12
- /*
13
- Note: The IntersectionObserver created below is never formally unobserved.
14
- Because, currently, preview overlays are only ever removed
15
- when their host frame is replaced which should in turn unobserve and GC automatically.
16
- */
17
- this._observer ??= new IntersectionObserver(
18
- (entries) => {
19
- for (const entry of entries) {
20
- const tooltip = entry.target.querySelector('.Preview-overlayTooltip')
21
- if (!entry.isIntersecting) {
22
- if (entry.rootBounds === null) return
23
-
24
- const irect = entry.intersectionRect
25
- const overlayRect = entry.boundingClientRect
26
-
27
- // Which portion of the overlay is offscreen?
28
- if (overlayRect.bottom > irect.bottom) {
29
- /* Bottom is offscreen */
30
- tooltip?.setAttribute('position', 'top')
31
- } else if (overlayRect.top < irect.top) {
32
- /* Top is offscreen */
33
- tooltip?.setAttribute('position', 'bottom')
34
- }
35
- } else {
36
- tooltip?.setAttribute('position', 'top')
37
- }
38
- }
39
- },
40
- { threshold: 1.0 },
41
- )
42
-
43
- return this._observer
44
- }
45
-
46
- static _previewOverlays = new Map()
47
- static _gapSize = 15
48
-
49
- constructor() {
50
- // static initialization
51
- }
52
-
53
- async initialize(data) {
54
- this._previewContainerId = data.previewContainerId
55
- this._allOverlays = data.overlays
56
- this._pauseUpdate = false
57
-
58
- const overlayFrame = document.createElement('iframe')
59
- overlayFrame.src = 'about:blank'
60
- overlayFrame.style = 'visibility:hidden;'
61
- overlayFrame.setAttribute('onload', "this.style.visibility='visible';")
62
- overlayFrame.scrolling = 'no'
63
- overlayFrame.classList.add('Preview-overlayFrame')
64
- overlayFrame.setAttribute('role', 'none')
65
- const previewIframe = this.getPreviewFrame(this._previewContainerId)
66
- const parent = previewIframe.parentNode
67
- parent.insertBefore(overlayFrame, previewIframe.nextSibling)
68
- overlayFrame?.contentDocument?.body.classList.add('overlay-hidden')
69
- this._overlayWindow = overlayFrame.contentWindow
70
- PreviewOverlay._previewOverlays.set(
71
- this._previewContainerId,
72
- this._overlayWindow,
73
- )
74
- this._overlayFrame = overlayFrame
75
-
76
- Object.assign(overlayFrame.style, {
77
- background: 'none',
78
- backgroundColor: 'transparent',
79
- transform: previewIframe.style.transform,
80
- width: previewIframe.style.width,
81
- })
82
-
83
- this._viewport = parseInt(previewIframe.style.width, 10)
84
-
85
- // initialize the deferInit state variable to false
86
- // This will make sure init() is not triggered twice after overlay frame is loaded the first time
87
- this._deferred = false
88
-
89
- this._overlayWindow.addEventListener('message', async ({ data }) => {
90
- if (typeof data !== 'object') return
91
-
92
- const type = data.type
93
- if (type === 'BSP.ContentEdit.UpdateOverlayBehaviors') {
94
- const overlay = this.Overlays.get(data.key)
95
- this.update(overlay, overlay.element, { behaviors: data.behaviors })
96
- } else if (type === 'BSP.Preview.UpdateOverlays') {
97
- const overlaysToUpdate = data.overlays
98
- overlaysToUpdate.forEach((overlay) => {
99
- const { id, name } = overlay
100
- const ovr = this.Overlays.get(`${id}/${name}`)
101
- ovr.hasFormField = true
102
- })
103
- } else if (type === 'BSP.Preview.UpdateInitToggle') {
104
- this._deferred = data.deferPreviewInit
105
- }
106
- })
107
-
108
- this._overlayWindow.addEventListener('click', (event) => {
109
- if (!event.target.closest('.Preview-overlay')) {
110
- this.Overlays?.forEach((ovr) => {
111
- this.update(ovr, ovr.element, {
112
- isSelected: false,
113
- })
114
- })
115
- } else {
116
- const element = event.target.closest('.Preview-overlay')
117
- const key = element.dataset.id + '/' + element.getAttribute('data-type')
118
- const overlay = this.Overlays.get(key)
119
- if (overlay) {
120
- this.update(overlay, overlay.element, { isSelected: true })
121
- this.Overlays.forEach((ovr, ovrKey) => {
122
- if (ovr.element) {
123
- if (ovrKey !== key) {
124
- this.update(ovr, ovr.element, {
125
- isSelected: false,
126
- isHover: false,
127
- })
128
- }
129
- }
130
- })
131
- getSubTree(overlay)
132
- }
133
- }
134
- })
135
- const getSubTree = (overlay) => {
136
- let parentKey = overlay.parentKey
137
- let child = overlay
138
- let subTree = []
139
- const { left, right } = overlay.element.getBoundingClientRect()
140
- const maxWidth = this._overlayWindow.innerWidth
141
- const updateWidth =
142
- left - overlay.depth * PreviewOverlay._gapSize >= 0 &&
143
- right + overlay.depth * PreviewOverlay._gapSize <= maxWidth
144
- while (parentKey !== null) {
145
- const ovr = this.Overlays.get(parentKey)
146
- const rect = child.element?.getBoundingClientRect()
147
- subTree.push(ovr)
148
- if (ovr.element) {
149
- this.update(
150
- ovr,
151
- ovr.element,
152
- { isVisible: true },
153
- {
154
- updateWidth,
155
- maxWidth,
156
- top: rect.top,
157
- bottom: rect.bottom,
158
- left: rect.left,
159
- right: rect.right,
160
- },
161
- )
162
- }
163
- parentKey = ovr.parentKey
164
- child = ovr
165
- }
166
- }
167
- let prevHovered
168
- let leafOverlay
169
- let path = new Set()
170
- let visibleImageToolTip
171
-
172
- const showImageToolTip = throttle(100, (event) => {
173
- if (this._deferred === undefined || this._deferred === true) return
174
- const overlayDocument = this._overlayWindow.document
175
- if (event.target.closest('.Preview-overlay')) {
176
- // Find all the overlays stacked beneath the pointer
177
- let els = overlayDocument.elementsFromPoint(
178
- event.clientX,
179
- event.clientY,
180
- )
181
-
182
- const imgTooltip = [...els].find((el) => {
183
- return el.classList.contains('Preview-imageOverlay')
184
- })
185
-
186
- if (
187
- (imgTooltip && !imgTooltip.isSameNode(visibleImageToolTip)) ||
188
- (!imgTooltip && visibleImageToolTip)
189
- ) {
190
- overlayDocument
191
- .querySelectorAll('.Preview-imageOverlay.is-visible')
192
- .forEach((ovr) => ovr.classList.remove('is-visible'))
193
- }
194
- if (imgTooltip) {
195
- imgTooltip.classList.add('is-visible')
196
- }
197
- visibleImageToolTip = imgTooltip
198
- } else if (visibleImageToolTip) {
199
- overlayDocument
200
- .querySelectorAll('.Preview-imageOverlay.is-visible')
201
- .forEach((ovr) => ovr.classList.remove('is-visible'))
202
- }
203
- })
204
-
205
- this._overlayWindow.addEventListener('mousemove', (event) => {
206
- showImageToolTip(event)
207
- })
208
-
209
- this._overlayWindow.addEventListener('mouseover', (event) => {
210
- // trigger init() in preview if dom parsing was previously deferred
211
- if (this._deferred === undefined || this._deferred === true) {
212
- const previewFrame = this.getPreviewFrame(this._previewContainerId)
213
- this._deferred = false
214
- previewFrame.contentWindow.postMessage(
215
- {
216
- type: 'BSP.Preview.Init',
217
- },
218
- '*',
219
- )
220
- return
221
- }
222
- const element = event.target
223
- const overlayDocument = this._overlayWindow.document
224
- this._pauseUpdate = true
225
- const overlaySelected = overlayDocument.querySelector(
226
- '.Preview-overlay.is-selected',
227
- )
228
- let key
229
- if (overlaySelected) {
230
- key =
231
- overlaySelected.dataset.id +
232
- '/' +
233
- overlaySelected.getAttribute('data-type')
234
- }
235
- if (!element.closest('.Preview-overlay')) {
236
- this.Overlays?.forEach((ovr, ovrKey) => {
237
- if (ovr.element) {
238
- if (ovrKey !== key) {
239
- this.update(ovr, ovr.element, {
240
- isHover: false,
241
- isVisible: false,
242
- isSelected: ovr.isSelected,
243
- })
244
- }
245
- }
246
- })
247
- prevHovered = null
248
- leafOverlay = null
249
- path.clear()
250
- } else {
251
- const element = event.target.closest('.Preview-overlay')
252
- const key = element.dataset.id + '/' + element.getAttribute('data-type')
253
- const overlay = this.Overlays.get(key)
254
-
255
- if (overlay) {
256
- this.update(overlay, overlay.element, { isHover: true })
257
- let selectedOverlay
258
- this.Overlays.forEach((ovr, ovrKey) => {
259
- if (ovr.element) {
260
- if (ovrKey !== key) {
261
- this.update(ovr, ovr.element, {
262
- isHover: false,
263
- isVisible: false,
264
- isSelected: ovr.isSelected,
265
- })
266
- }
267
- }
268
- })
269
- const prevHoverKey =
270
- prevHovered?.element.dataset.id +
271
- '/' +
272
- prevHovered?.element.getAttribute('data-type')
273
- if (prevHovered && prevHovered.parentKey === key) {
274
- if (!path.has(key)) {
275
- path.add(key)
276
- }
277
- getSubTree(leafOverlay)
278
- } else if (
279
- prevHovered &&
280
- prevHoverKey === overlay.parentKey &&
281
- path.has(key)
282
- ) {
283
- getSubTree(leafOverlay)
284
- } else {
285
- getSubTree(overlay)
286
- leafOverlay = overlay
287
- path.clear()
288
- path.add(key)
289
- }
290
- prevHovered = overlay
291
- }
292
- }
293
- })
294
-
295
- overlayFrame?.addEventListener('mouseleave', () => {
296
- overlayFrame?.contentDocument?.body.classList.remove('overlay-visible')
297
- overlayFrame?.contentDocument?.body.classList.add('overlay-hidden')
298
- this._pauseUpdate = false
299
- })
300
-
301
- overlayFrame?.addEventListener('mouseenter', () => {
302
- overlayFrame?.contentDocument?.body.classList.add('overlay-visible')
303
- overlayFrame?.contentDocument?.body.classList.remove('overlay-hidden')
304
- this._pauseUpdate = false
305
- })
306
-
307
- this._updateInterval = setInterval(() => {
308
- if (!this._pauseUpdate) {
309
- this.updateOverlays()
310
- }
311
- }, 500)
312
-
313
- window.addEventListener('scroll', this.updateOverlays)
314
-
315
- const preload = async () => {
316
- const overlayDocument = this._overlayWindow.document
317
- const overlayHtml = overlayDocument.documentElement
318
- const previewIframe = this.getPreviewFrame(this._previewContainerId)
319
- const scale = parseFloat(previewIframe.getAttribute('previewScale'))
320
- const html = window.document.documentElement
321
- const dir = html.getAttribute('dir') ? html.getAttribute('dir') : 'ltr'
322
- const savedTheme = html.getAttribute('data-theme')
323
- const storedTheme = window.localStorage.getItem('BSP.Theme')
324
- const placeholder = PREVIEW_EDIT_FIELD_PLACEHOLDER
325
- const bodyElm = overlayDocument.body
326
-
327
- const copyStylesAndScripts = () => {
328
- const head = window.document.head
329
- let stylesAndScripts = []
330
- const distCss = head.querySelector('link[id="dist-v4-css"]')
331
- const distCssv5 = head.querySelector('link[id="dist-v5-css"]')
332
- const distJs = head.querySelector('script[id="dist-v4-js"]')
333
- const distJsv5 = head.querySelector('script[id="dist-v5-js"]')
334
- let next = distCss ? distCss : distCssv5 ? distCssv5 : head.firstChild
335
- const js = distJsv5 ? distJsv5.nextSibling : distJs.nextSibling
336
- while (next !== js) {
337
- if (next.tagName === 'SCRIPT' || next.tagName === 'LINK') {
338
- stylesAndScripts.push({
339
- tag: next.tagName,
340
- ref: next.getAttribute('href') || next.getAttribute('src'),
341
- id: next.dataset.id,
342
- text: next.textContent,
343
- isv4: next === distJs || next === distCss ? true : false,
344
- })
345
- }
346
- next = next.nextSibling
347
- }
348
- return stylesAndScripts
349
- }
350
-
351
- const createTag = async (source) => {
352
- return new Promise((resolve) => {
353
- const tag = source.tag
354
- const ref = source.ref
355
- const id = source.id
356
-
357
- let elm = null
358
- if (tag === 'LINK') {
359
- elm = overlayDocument.createElement('link')
360
- elm.setAttribute('rel', 'stylesheet')
361
- elm.setAttribute('type', 'text/css')
362
- elm.setAttribute('href', ref)
363
-
364
- if (source.isv4) {
365
- elm.onload = () => {
366
- resolve()
367
- }
368
- } else {
369
- resolve()
370
- }
371
- } else if (tag === 'SCRIPT') {
372
- elm = overlayDocument.createElement('script')
373
- elm.setAttribute('type', 'text/javascript')
374
- elm.innerText = source.text
375
- if (ref) {
376
- elm.setAttribute('src', ref)
377
- }
378
- if (source.isv4) {
379
- elm.onload = () => {
380
- resolve()
381
- }
382
- } else {
383
- resolve()
384
- }
385
- }
386
- if (id) {
387
- elm.setAttribute('id', id)
388
- }
389
- overlayDocument.head.appendChild(elm)
390
- })
391
- }
392
-
393
- overlayHtml.setAttribute('dir', 'ltr')
394
- overlayHtml.setAttribute('data-preview-overlay', true)
395
- bodyElm.style.background = 'none'
396
- bodyElm.style.backgroundColor = 'transparent'
397
- bodyElm.style.visibility = 'hidden'
398
-
399
- // Inject Font Family.
400
- const link = overlayDocument.createElement('link')
401
- overlayDocument.head.appendChild(link)
402
- link.setAttribute(
403
- 'href',
404
- `https://fonts.googleapis.com/css?family=Noto+Sans:400,700`,
405
- )
406
- const relList = link.relList
407
- if (relList && relList.supports('preload')) {
408
- link.setAttribute('as', 'style')
409
- link.setAttribute('rel', 'preload')
410
- link.setAttribute('onload', 'this.rel="stylesheet"')
411
- link.setAttribute('crossOrigin', 'anonymous')
412
- } else {
413
- link.setAttribute('rel', 'stylesheet')
414
- }
415
- overlayHtml.style.setProperty('--PreviewScale', `${scale}`)
416
- // Apply an upscale flag to the overlay at a certain threshold.
417
- if (scale < 0.6) {
418
- overlayHtml.classList.add('should-upscale')
419
- }
420
- overlayHtml.setAttribute('dir', dir)
421
- if (savedTheme) {
422
- overlayHtml.setAttribute('data-theme', savedTheme)
423
- }
424
- if (storedTheme) {
425
- this._overlayWindow.localStorage.setItem('BSP.Theme', storedTheme)
426
- }
427
-
428
- overlayHtml.setAttribute('data-preview-field-placeholder', placeholder)
429
- const stylesAndScripts = copyStylesAndScripts()
430
-
431
- const waitForV4Deps = async () => {
432
- await Promise.all(
433
- stylesAndScripts.map(async (ss) => {
434
- await createTag(ss)
435
- }),
436
- )
437
- bodyElm.style.visibility = 'visible'
438
- }
439
-
440
- await waitForV4Deps()
441
- }
442
-
443
- this._overlayFrame.contentDocument
444
- .getElementsByTagName('html')[0]
445
- .style.setProperty(
446
- '--PreviewScale',
447
- this._overlayFrame.getAttribute('previewScale'),
448
- )
449
- if (
450
- this._overlayWindow.document.readyState === 'complete' ||
451
- this._overlayWindow.document.readyState === 'interactive'
452
- ) {
453
- await preload()
454
- } else {
455
- await new Promise((resolve) => {
456
- this._overlayWindow.addEventListener('load', async () => {
457
- await preload()
458
- resolve()
459
- })
460
- })
461
- }
462
- }
463
-
464
- static async create(data) {
465
- const previewOverlay = new PreviewOverlay()
466
- await previewOverlay.initialize(data)
467
- return previewOverlay
468
- }
469
-
470
- static getOverlayWindow(previewContainerId) {
471
- return PreviewOverlay._previewOverlays.get(previewContainerId)
472
- }
473
-
474
- reload(overlays, data, selectedViewport) {
475
- this._previewContainerId = data.previewContainerId
476
- this._allOverlays = data.overlays
477
- if (selectedViewport && selectedViewport !== this._viewport) {
478
- this._viewport = selectedViewport
479
- this.updateOverlays()
480
- }
481
- const overlayKeys = [...data.overlays.keys()]
482
- // reorder the filtered overlays based on the order in which markers appear in the template
483
- const sortOverlays = (a, b) => {
484
- if (a[1].parentKey === b[1].parentKey) {
485
- return overlayKeys.indexOf(a[0]) - overlayKeys.indexOf(b[0])
486
- } else if (a[0] === b[1].parentKey) {
487
- return -1
488
- } else if (b[0] === a[1].parentKey) {
489
- return 1
490
- } else {
491
- return (
492
- overlayKeys.indexOf(a[1].parentRoot) -
493
- overlayKeys.indexOf(b[1].parentRoot)
494
- )
495
- }
496
- }
497
- overlays = new Map([...overlays.entries()].sort(sortOverlays))
498
-
499
- // Update incoming overlays with metadata coming from preview markers
500
- overlays.forEach((overlay, key) => {
501
- const obj = this._allOverlays.get(key)
502
- if (obj) {
503
- Object.assign(overlay, obj)
504
- }
505
-
506
- // Prevent false positive linked overlays.
507
- if (!overlay.isShared) {
508
- overlay.linked = null
509
- }
510
-
511
- if (overlay.linked) {
512
- const linkedOverlay = this._allOverlays.get(`${overlay.linked}`)
513
- if (linkedOverlay) {
514
- overlay.dimensions =
515
- linkedOverlay.dimensions[`${overlay.linkedIdx}`] ??
516
- overlay.dimensions
517
- }
518
- }
519
- })
520
-
521
- if (!this.Overlays) {
522
- // When the preview overlay frame loads for the first time
523
- this.Overlays = new Map(overlays)
524
- this.Overlays.forEach((overlay, key) => {
525
- this.renderOverlay(overlay, key)
526
- })
527
- } else {
528
- // Every time preview refreshes
529
- // update existing overlay element styling or renders overlay element for new incoming overlays
530
- overlays.forEach((overlay, key) => {
531
- const o = this.Overlays.get(key)
532
- if (!o) {
533
- this.Overlays.set(key, overlay)
534
- this.renderOverlay(overlay, key)
535
- } else {
536
- this.update(o, o.element, overlay)
537
- }
538
- })
539
-
540
- // Restore/Remove overlay elements after preview refresh to match content form fields
541
- this.Overlays.forEach((o, k) => {
542
- // Does this runtime overlay exist in overlay map generated by the preview marker data?
543
- const obj = this._allOverlays.get(k)
544
- if (obj) {
545
- // Restore the overlay.
546
- this.update(
547
- o,
548
- o.element,
549
- Object.assign({}, obj, { isRemoved: false }),
550
- )
551
- if (o.parentKey) {
552
- const parent = this.Overlays.get(o.parentKey)
553
- // Restore the parent overlay.
554
- if (parent) {
555
- this.update(parent, parent.element, { isRemoved: false })
556
- }
557
- }
558
- // Check if the overlay should be removed as a result of a removed content module.
559
- } else {
560
- if (o.parentKey && this.Overlays.get(o.parentKey)) {
561
- const parent = this.Overlays.get(o.parentKey)
562
- // Remove the parent overlay.
563
- let refs = 0
564
- this.Overlays.forEach((overlay) => {
565
- if (overlay.parentKey && overlay.parentKey === o.parentKey) {
566
- refs++
567
- }
568
- })
569
- if (refs <= 1) {
570
- this.update(parent, parent.element, { isRemoved: true })
571
- }
572
- }
573
- this.update(o, o.element, { isRemoved: true })
574
- }
575
- })
576
- }
577
-
578
- // Re-render image overlay tooltips on preview refresh
579
- this.ImageTooltips = new Map(data.imageData)
580
- const imageTooltips = this._overlayWindow.document.querySelectorAll(
581
- '.Preview-imageOverlay',
582
- )
583
- imageTooltips.forEach((tooltipEl) => {
584
- tooltipEl.parentNode.removeChild(tooltipEl)
585
- })
586
- this.ImageTooltips.forEach((data, key) => {
587
- this.renderImageTooltip(data)
588
- })
589
- }
590
-
591
- destroy() {
592
- clearInterval(this._updateInterval)
593
- }
594
-
595
- getPreviewFrame = (mainObjectId) => {
596
- let frame
597
- if (!mainObjectId) {
598
- frame = document.querySelector(
599
- '.ContentEdit-previewDisplay iframe:first-of-type',
600
- )
601
- if (!frame) {
602
- frame = document.querySelector(
603
- '.PreviewFrame-typeDisplay iframe:first-of-type',
604
- )
605
- }
606
- } else {
607
- frame = document.querySelector(
608
- `iframe[data-container-id="${mainObjectId}"]`,
609
- )
610
- }
611
- return frame
612
- }
613
-
614
- updateOverlays = repaint(() => {
615
- // Always get the latest preview iframe. Each frame is removed during refresh.
616
- const previewFrame = this.getPreviewFrame(this._previewContainerId)
617
- Object.assign(this._overlayFrame.style, {
618
- transform: previewFrame.style.transform,
619
- width: previewFrame.style.width,
620
- })
621
-
622
- this.Overlays?.forEach((overlayObj) => {
623
- this.setDimensions(overlayObj)
624
- })
625
- })
626
-
627
- // Updates label position and content
628
- updateLabel(overlay, label) {
629
- const labelElm = overlay.querySelector('.Preview-overlayLabel')
630
- if (!labelElm) return
631
-
632
- labelElm.textContent = label
633
- const parentHeight = overlay.getBoundingClientRect().height
634
- const { height } = labelElm.getBoundingClientRect()
635
- if (height >= parentHeight) {
636
- labelElm.style.top = `-${labelElm.getBoundingClientRect().height}px`
637
- } else {
638
- labelElm.style.top = '0px'
639
- }
640
- }
641
-
642
- update(overlayObj, overlay, newStates, childDimensions) {
643
- if (!overlay) return
644
-
645
- // Merge the new states into the current but ignore undefined and null values.
646
- let update = Object.assign(
647
- overlayObj,
648
- Object.fromEntries(
649
- Object.entries(newStates).filter(
650
- ([key, value]) => value !== undefined && value !== null,
651
- ),
652
- ),
653
- )
654
-
655
- // string | null
656
- if (update.isShared) {
657
- overlay.classList.add('is-shared')
658
- overlay.dataset.editAction = update.isShared
659
- } else {
660
- overlay.classList.remove('is-shared')
661
- delete overlay.dataset.editAction
662
- }
663
-
664
- if (update.isLocked === true) {
665
- overlay.classList.add('is-locked')
666
- } else if (update.isLocked === false) {
667
- overlay.classList.remove('is-locked')
668
- }
669
-
670
- if (update.isRoot === true) {
671
- overlayObj.depth = 1
672
- overlay.classList.add('is-root')
673
- } else if (update.isRoot === false) {
674
- const parent = this.Overlays.get(overlayObj.parentKey)
675
- overlayObj.depth = parent?.depth + 1
676
- overlayObj.parentRoot = parent?.parentRoot
677
- if (parent?.isSelected) {
678
- overlay.classList.add('is-visible')
679
- overlayObj.isVisible = true
680
- }
681
- }
682
-
683
- if (update.isVisible === true) {
684
- overlay.classList.add('is-visible')
685
- } else if (update.isVisible === false) {
686
- overlay.classList.remove('is-visible')
687
- }
688
-
689
- if (update.isSelected === true) {
690
- overlay.classList.add('is-selected')
691
- } else if (update.isSelected === false) {
692
- overlay.classList.remove('is-selected')
693
- }
694
-
695
- if (update.isHover === true) {
696
- overlay.classList.add('is-hover')
697
- } else if (update.isHover === false) {
698
- overlay.classList.remove('is-hover')
699
- }
700
-
701
- if (update.isEmpty === true) {
702
- overlay.classList.add('is-empty')
703
- } else if (update.isEmpty === false) {
704
- this.updateLabel(overlay, overlayObj.label || overlayObj.name)
705
- overlay.classList.remove('is-empty')
706
- }
707
-
708
- if (update.isRemoved === true) {
709
- overlay.classList.add('is-removed')
710
- } else {
711
- overlay.classList.remove('is-removed')
712
- }
713
-
714
- this.setDimensions(overlayObj, childDimensions)
715
- }
716
-
717
- renderImageTooltip(data) {
718
- const overlayDocument = this._overlayWindow.document
719
- const body = overlayDocument.body
720
- const overlay = document.createElement('div')
721
- overlay.classList.add('Preview-imageOverlay')
722
- const labelElm = document.createElement('div')
723
- labelElm.className = 'Preview-overlayTooltip'
724
- labelElm.innerHTML = `<b>Image</b>`
725
-
726
- // Supplemental UI when the visual is an image.
727
- if (data) {
728
- const width = +data.width
729
- const height = +data.height
730
- let aspectRatio = null
731
-
732
- labelElm.classList.add('is-grid')
733
- labelElm.append(
734
- create(
735
- 'span',
736
- (width > 0 ? width : 'auto') + ' x ' + (height > 0 ? height : 'auto'),
737
- ),
738
- )
739
-
740
- if (width > 0 && height > 0) {
741
- const divisor = PreviewOverlay.gcd(width, height)
742
- if (divisor > 0) {
743
- aspectRatio = `${width / divisor}:${height / divisor}`
744
- }
745
- }
746
-
747
- labelElm.append(
748
- create('hr'),
749
- create('hr'),
750
- create('span', window.BRIGHTSPOT?.ui?.tooltips?.size),
751
- create('span', data.name),
752
- aspectRatio !== null
753
- ? create('span', window.BRIGHTSPOT?.ui?.tooltips?.aspectRatio)
754
- : '',
755
- aspectRatio !== null ? create('span', aspectRatio) : '',
756
- )
757
- }
758
- overlay.append(labelElm)
759
-
760
- // Attach all the tooltips first so that interactive overlays can layer ontop.
761
- body.prepend(overlay)
762
-
763
- window.requestAnimationFrame(() => {
764
- const { x, y, width, height } = data.rect
765
- const left = x + window.scrollX
766
- Object.assign(overlay.style, {
767
- height: height,
768
- left: left,
769
- position: 'absolute',
770
- top: y + window.scrollY,
771
- width: width,
772
- })
773
- })
774
-
775
- this.constructor.getObserver().observe(overlay)
776
- }
777
-
778
- renderOverlay(overlayObj) {
779
- const overlayDocument = this._overlayWindow.document
780
- const overlayBody = overlayDocument.body
781
- const isEmpty = !!overlayObj.isEmpty
782
- const { id, name, type } = overlayObj
783
-
784
- if (!id || !name) return
785
-
786
- if (type === 'bspField' && !overlayObj.dimensions && !isEmpty) {
787
- return
788
- }
789
- const overlay = overlayDocument.createElement('div')
790
- overlay.classList.add('Preview-overlay')
791
- overlay.dataset.id = id
792
- overlay.dataset.type = name
793
- const edit = window.parent.parent
794
-
795
- overlay.onclick = (evt) => {
796
- if (edit) {
797
- const name = overlay.dataset.type
798
- let rootOverlays = new Map()
799
- this.Overlays?.forEach((itemToFilter, itemKey) => {
800
- if (itemToFilter.isRoot) {
801
- const payloadItem = this._allOverlays.get(itemKey)
802
- if (payloadItem) {
803
- payloadItem.isRoot = true
804
- rootOverlays.set(itemKey, payloadItem)
805
- }
806
- }
807
- })
808
- let hasFormField = overlayObj.hasFormField
809
- let parentKey = overlayObj.parentKey
810
- let parentFields = []
811
- while (!hasFormField && parentKey) {
812
- const parent = this.Overlays.get(parentKey)
813
- parentFields.push({
814
- id: parent.id,
815
- name: parent.name,
816
- type: parent.type,
817
- isShared: parent.isShared,
818
- parentKey: parent.parentKey,
819
- })
820
- hasFormField = parent.hasFormField
821
- parentKey = parent.parentKey
822
- }
823
- edit.postMessage(
824
- {
825
- type: 'BSP.Preview.OverlayClick',
826
- id: overlay.dataset.id,
827
- label: overlay.label,
828
- name: name.split('/')[0],
829
- behavior: overlay.dataset.editAction,
830
- overlayType: overlayObj.type,
831
- previewContainerId: this._previewContainerId,
832
- overlays: this._allOverlays,
833
- parentFields: parentFields.reverse(),
834
- rootOverlays,
835
- isEnhancement: overlayObj.isEnhancement,
836
- hasFormField: overlayObj.hasFormField,
837
- },
838
- '*',
839
- )
840
- }
841
- }
842
-
843
- // Create overlay label when a overlay is rendered
844
- overlay.querySelector('.Preview-overlayLabel')?.remove()
845
- const labelElm = create(
846
- 'div',
847
- {
848
- className: 'Preview-overlayLabel',
849
- },
850
- overlayObj.label || overlayObj.name,
851
- )
852
-
853
- overlay.appendChild(labelElm)
854
-
855
- let firstChildElm = null
856
-
857
- if (overlayObj.type === 'bspModule' && !overlayObj.isShared) {
858
- firstChildElm = overlayBody.querySelector(
859
- `.Preview-overlay[data-id="${overlayObj.id}"]`,
860
- )
861
- }
862
-
863
- if (firstChildElm) {
864
- overlayBody.insertBefore(overlay, firstChildElm)
865
- } else {
866
- firstChildElm =
867
- !overlayObj.isShared &&
868
- overlayBody.querySelector(`.Preview-overlay.is-shared`)
869
-
870
- if (firstChildElm) {
871
- overlayBody.insertBefore(overlay, firstChildElm)
872
- } else {
873
- overlayBody.appendChild(overlay)
874
- }
875
- }
876
- overlayObj.element = overlay
877
-
878
- window.requestAnimationFrame(() => {
879
- this.update(overlayObj, overlay, {
880
- id,
881
- name,
882
- behaviors: overlayObj.behaviors,
883
- isShared: overlayObj.isShared,
884
- isEmpty: overlayObj.isEmpty === undefined ? false : overlayObj.isEmpty,
885
- isLocked: overlayObj.isLocked,
886
- isSelected: overlayObj.isSelected,
887
- isRoot: overlayObj.isRoot,
888
- isVisible: false,
889
- })
890
- })
891
- }
892
-
893
- setDimensions(overlayObj, childDimensions) {
894
- const original = overlayObj.dimensions
895
- const overlay = overlayObj.element
896
- if (!overlay) return
897
-
898
- const drawOverlay = (rect) => {
899
- const { x, y, width, height } = rect
900
- const left = x + window.scrollX
901
- const totalWidth = left + width
902
- Object.assign(overlay.style, {
903
- height: height,
904
- left:
905
- left - (left !== 0 && overlayObj.internalType === 'text' ? 10 : 0),
906
- position: 'absolute',
907
- top: y + window.scrollY,
908
- width:
909
- width +
910
- (totalWidth !== this._overlayWindow.innerWidth &&
911
- overlayObj.internalType === 'text'
912
- ? 20
913
- : 0),
914
- })
915
- }
916
-
917
- /**
918
- * Depending on the type of field, overlay box dimensions are calculated as follows:
919
- * Fields or shared modules rendered in preview - (leaf overlay) dimensions are calculated based on the underlying preview element
920
- * Everything else:
921
- * a). The dimensions are calculated based on child overlay dimensions
922
- * b). If there are no children present, they are calculated using underlying preview element
923
- */
924
-
925
- const leafOverlay =
926
- original &&
927
- overlayObj.type === 'bspField' &&
928
- ((!overlayObj.children && !overlayObj.fieldValue) || overlayObj.isShared)
929
-
930
- if (leafOverlay) {
931
- // leaf or last overlay in subtree
932
- drawOverlay(original)
933
- } else {
934
- const children = [...this.Overlays.values()].filter((o) => {
935
- return (
936
- o.parentKey === overlayObj.id + '/' + overlayObj.name &&
937
- o.dimensions &&
938
- !Array.isArray(o.dimensions)
939
- )
940
- })
941
- if (overlayObj.type === 'bspModule' && overlayObj.dimensions?.length) {
942
- // use the dimensions array for bspModules if present
943
- overlayObj.dimensions.forEach((dimension) => {
944
- drawOverlay(dimension)
945
- })
946
- } else if (children.length) {
947
- // if not calculate the dimensions of the field using it's child dimensions
948
- let top = null,
949
- left = null,
950
- bottom = null,
951
- right = null
952
- children.forEach((child) => {
953
- const rect = child.dimensions
954
- if (rect) {
955
- top = top !== null ? Math.min(top, rect.top) : rect.top
956
- left = left !== null ? Math.min(left, rect.left) : rect.left
957
- bottom =
958
- bottom !== null ? Math.max(bottom, rect.bottom) : rect.bottom
959
- right = right !== null ? Math.max(right, rect.right) : rect.right
960
- }
961
- })
962
-
963
- Object.assign(overlay.style, {
964
- width: right - left,
965
- left: left,
966
- position: 'absolute',
967
- top: top,
968
- height: bottom - top,
969
- })
970
- } else if (original) {
971
- // fallback to the dimensions object if no valid children dimensions present
972
- drawOverlay(original)
973
- }
974
- }
975
- if (childDimensions) {
976
- const { updateWidth, maxWidth } = childDimensions
977
- const { top, bottom, left, right } = overlay.getBoundingClientRect()
978
- let topPos = top
979
- let bottomPos = bottom
980
- let leftPos = left
981
- let rightPos = right
982
- if (top >= childDimensions.top) {
983
- topPos = childDimensions.top - PreviewOverlay._gapSize
984
- }
985
- if (bottom <= childDimensions.bottom) {
986
- bottomPos = childDimensions.bottom + PreviewOverlay._gapSize
987
- }
988
-
989
- overlay.style.top = topPos
990
- overlay.style.height = bottomPos - topPos
991
- if (updateWidth) {
992
- if (left >= childDimensions.left) {
993
- leftPos = childDimensions.left - PreviewOverlay._gapSize
994
- }
995
- if (right <= childDimensions.right) {
996
- rightPos = childDimensions.right + PreviewOverlay._gapSize
997
- }
998
- if (leftPos >= 0 && rightPos <= maxWidth) {
999
- overlay.style.left = leftPos
1000
- overlay.style.width = rightPos - leftPos
1001
- }
1002
- }
1003
- }
1004
- }
1005
- }