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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/README.md +54 -35
  2. package/dist/custom-elements.json +1924 -1924
  3. package/dist/storybook/assets/{ActionBar.stories-hJ_5cm-P.js → ActionBar.stories-CSxtZl7v.js} +1 -1
  4. package/dist/storybook/assets/{ActionItem.stories-Bjx2803w.js → ActionItem.stories-BWcMRMP3.js} +1 -1
  5. package/dist/storybook/assets/{Avatar.stories-Cj0YgZ6f.js → Avatar.stories-CYTUGXzH.js} +1 -1
  6. package/dist/storybook/assets/{AvatarGroup.stories-Lh_sQFCU.js → AvatarGroup.stories-CSYBYo_5.js} +1 -1
  7. package/dist/storybook/assets/{Badge.stories-BL7RUibx.js → Badge.stories-LuF4BuVr.js} +1 -1
  8. package/dist/storybook/assets/{Button-BPHNcxqK.js → Button-CrXCMxHb.js} +1 -1
  9. package/dist/storybook/assets/{Button.stories-CAYO4gdU.js → Button.stories-JVwxdrdM.js} +1 -1
  10. package/dist/storybook/assets/{ButtonGroup.stories-Cd13Us5K.js → ButtonGroup.stories-qtq64a1H.js} +1 -1
  11. package/dist/storybook/assets/{Celebrate.stories-D_KE3Qze.js → Celebrate.stories-DjTtaSd6.js} +1 -1
  12. package/dist/storybook/assets/{Checkbox.stories-Aj1xgZVn.js → Checkbox.stories-v1Pr5mL6.js} +1 -1
  13. package/dist/storybook/assets/{CircularProgress.stories-BecV_v6d.js → CircularProgress.stories-DkV7PJ4D.js} +1 -1
  14. package/dist/storybook/assets/{ClipboardMixin.stories-DU-WiZ2f.js → ClipboardMixin.stories-Dh5c7uSM.js} +1 -1
  15. package/dist/storybook/assets/{Color-6BZIO3FS-BYl4KZZn.js → Color-6BZIO3FS-B1gcREt6.js} +1 -1
  16. package/dist/storybook/assets/{Colors.stories-BMUVUy2q.js → Colors.stories-DnubtRqn.js} +1 -1
  17. package/dist/storybook/assets/{CombinedEffects.stories-FHcPKFm6.js → CombinedEffects.stories-By6akSve.js} +1 -1
  18. package/dist/storybook/assets/{ComponentStatesMixin-EMUnfT5y.js → ComponentStatesMixin-CPLGv3h-.js} +1 -1
  19. package/dist/storybook/assets/{ComponentStatesMixin.stories-SXq0kzS9.js → ComponentStatesMixin.stories-CiQ_lyhm.js} +1 -1
  20. package/dist/storybook/assets/{CopyToClipboard.stories-u43lhvcI.js → CopyToClipboard.stories-cJ7rl3mj.js} +1 -1
  21. package/dist/storybook/assets/{Debounce.stories-BdCn5qgO.js → Debounce.stories-Bw-goobU.js} +1 -1
  22. package/dist/storybook/assets/{DocsRenderer-LL677BLK-DxiEJ_jx.js → DocsRenderer-LL677BLK-CNW57dGQ.js} +3 -3
  23. package/dist/storybook/assets/{Dropdown.stories-BWSRwjIF.js → Dropdown.stories-CwC3HXXd.js} +1 -1
  24. package/dist/storybook/assets/{EmptyState.stories-BpobeZL5.js → EmptyState.stories-BUEJwuhP.js} +1 -1
  25. package/dist/storybook/assets/{Events.stories-CP5kMzpr.js → Events.stories-D1mf9buv.js} +1 -1
  26. package/dist/storybook/assets/{Heading.stories-CbJD-oTB.js → Heading.stories-DO906G4P.js} +1 -1
  27. package/dist/storybook/assets/{HueRipple.stories-BOABJ7zw.js → HueRipple.stories-BOySRSZB.js} +1 -1
  28. package/dist/storybook/assets/{Icon.stories-CWlUHL4j.js → Icon.stories-BsqgTbdG.js} +1 -1
  29. package/dist/storybook/assets/{IconButton.stories-BWBs-OLT.js → IconButton.stories-aza1AAKk.js} +1 -1
  30. package/dist/storybook/assets/{LinearProgress.stories-LZ0GZoxF.js → LinearProgress.stories-CDYmiiex.js} +1 -1
  31. package/dist/storybook/assets/{Pagination.stories-CbLaR3P9.js → Pagination.stories-LXB-x7YB.js} +1 -1
  32. package/dist/storybook/assets/{Popover.stories-JHrWqYZw.js → Popover.stories-DY1HesPJ.js} +1 -1
  33. package/dist/storybook/assets/{ReadyMixin-B1H2a9x8.js → ReadyMixin-DmOC67IJ.js} +1 -1
  34. package/dist/storybook/assets/{RovingTabindexMixin.stories-UMHpYG73.js → RovingTabindexMixin.stories-BWy0Rq8d.js} +1 -1
  35. package/dist/storybook/assets/{Rtc.stories-VQtNSlls.js → Rtc.stories-DrmdqqbI.js} +1 -1
  36. package/dist/storybook/assets/{ScrollShadow.stories-CYdi8Tgp.js → ScrollShadow.stories-DiKFPazh.js} +1 -1
  37. package/dist/storybook/assets/{Switch.stories-D8F2hZCf.js → Switch.stories-BgFnw8_z.js} +1 -1
  38. package/dist/storybook/assets/{Tab.stories-wgBP0lTj.js → Tab.stories-c2wLMooF.js} +1 -1
  39. package/dist/storybook/assets/{Tabs.stories-C00rr5sf.js → Tabs.stories-CjH8seNP.js} +1 -1
  40. package/dist/storybook/assets/{Throttle.stories-BhQEfJbS.js → Throttle.stories-CXysc_QE.js} +1 -1
  41. package/dist/storybook/assets/{Tooltip.stories-CGoZ5qTn.js → Tooltip.stories-6qzyByPm.js} +1 -1
  42. package/dist/storybook/assets/{Upload.stories-B3K-HAXw.js → Upload.stories-BLxykydQ.js} +1 -1
  43. package/dist/storybook/assets/{UploadItem.stories-71ArSoUh.js → UploadItem.stories-CcfcqdJW.js} +1 -1
  44. package/dist/storybook/assets/{Welcome.stories-CihlfFXS.js → Welcome.stories-CzYS_3fH.js} +1 -1
  45. package/dist/storybook/assets/{Widget.stories-1u4KbiJM.js → Widget.stories-Du7T4LAI.js} +1 -1
  46. package/dist/storybook/assets/{WithTooltip-65CFNBJE-B3Jitxw9.js → WithTooltip-65CFNBJE-D4LfXdYt.js} +1 -1
  47. package/dist/storybook/assets/{blocks-C1HaXuQB.js → blocks-DR3fGePu.js} +5 -5
  48. package/dist/storybook/assets/{formatter-EIJCOSYU-Dy9Lt9fs.js → formatter-EIJCOSYU-Cf01216O.js} +1 -1
  49. package/dist/storybook/assets/if-defined-DaMmbcIU.js +1 -0
  50. package/dist/storybook/assets/{iframe-Dx6IxWXF.js → iframe-CQArUhO8.js} +4 -4
  51. package/dist/storybook/assets/{index-OrjedSVh.js → index-B1uI_67G.js} +1 -1
  52. package/dist/storybook/assets/{onFind-YTqjw6W0.js → onFind-BpFkN2Rh.js} +1 -1
  53. package/dist/storybook/assets/{onFind.stories-DEvwTrmx.js → onFind.stories-Cxdeg69X.js} +1 -1
  54. package/dist/storybook/assets/{onRemove.stories-D5mO-Lin.js → onRemove.stories-BHEWpNrE.js} +1 -1
  55. package/dist/storybook/assets/{onVisible.stories-C3Rcz0Eb.js → onVisible.stories-DFJ3S_ZS.js} +1 -1
  56. package/dist/storybook/assets/{style-map-CiMHry7H.js → style-map-DJ83UC3V.js} +1 -1
  57. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-DIZnuhb2.js → syntaxhighlighter-ED5Y7EFY-zYN83mxK.js} +1 -1
  58. package/dist/storybook/iframe.html +1 -1
  59. package/dist/storybook/project.json +1 -1
  60. package/package.json +16 -2
  61. package/dist/storybook/assets/if-defined-CA2KmTqA.js +0 -1
  62. package/src/legacy/tool-ui/src/main/resources/settings.properties +0 -1
  63. package/src/legacy/tool-ui/src/main/webapp/WEB-INF/web.xml +0 -81
  64. package/src/legacy/tool-ui/src/main/webapp/script/bsp-uploader.js +0 -170
  65. package/src/legacy/tool-ui/src/main/webapp/script/bsp-utils.js +0 -393
  66. package/src/legacy/tool-ui/src/main/webapp/script/content/layout-element.js +0 -141
  67. package/src/legacy/tool-ui/src/main/webapp/script/input/query.js +0 -78
  68. package/src/legacy/tool-ui/src/main/webapp/script/input/workflow.js +0 -718
  69. package/src/legacy/tool-ui/src/main/webapp/script/jquery.extra.js +0 -633
  70. package/src/legacy/tool-ui/src/main/webapp/script/v3/Dropbox.js +0 -18
  71. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdate.js +0 -406
  72. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdateCache.js +0 -1
  73. package/src/legacy/tool-ui/src/main/webapp/script/v3/Notification.js +0 -151
  74. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/edit.js +0 -194
  75. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/state.js +0 -785
  76. package/src/legacy/tool-ui/src/main/webapp/script/v3/csrf.js +0 -35
  77. package/src/legacy/tool-ui/src/main/webapp/script/v3/dashboard.js +0 -65
  78. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/dataTransfer.js +0 -129
  79. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/file.js +0 -433
  80. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/object.js +0 -743
  81. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/read-only.js +0 -17
  82. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.frame.js +0 -478
  83. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.repeatable.js +0 -2406
  84. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.d.ts +0 -2
  85. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.js +0 -446
  86. package/src/legacy/tool-ui/src/main/webapp/script/v3/search-filters.js +0 -62
  87. package/src/legacy/tool-ui/src/main/webapp/script/v3/search.js +0 -53
  88. package/src/legacy/tool-ui/src/main/webapp/script/v3.js +0 -1049
  89. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.js +0 -16
  90. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.js +0 -84
  91. package/src/legacy/tool-ui/src/main/webapp/v4/AutoSubmit.js +0 -68
  92. package/src/legacy/tool-ui/src/main/webapp/v4/Bridge.js +0 -536
  93. package/src/legacy/tool-ui/src/main/webapp/v4/CheckboxInput.js +0 -22
  94. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInput.js +0 -5
  95. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.js +0 -107
  96. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.js +0 -1491
  97. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.js +0 -29
  98. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.js +0 -2427
  99. package/src/legacy/tool-ui/src/main/webapp/v4/ContentLock.js +0 -470
  100. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.js +0 -32
  101. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.js +0 -31
  102. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.js +0 -485
  103. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.js +0 -264
  104. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemAuth.js +0 -16
  105. package/src/legacy/tool-ui/src/main/webapp/v4/Form.js +0 -31
  106. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.js +0 -100
  107. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.ts +0 -49
  108. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.js +0 -2403
  109. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditorBundle.js +0 -5
  110. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.js +0 -40
  111. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.js +0 -14
  112. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.js +0 -123
  113. package/src/legacy/tool-ui/src/main/webapp/v4/Location.js +0 -19
  114. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.js +0 -148
  115. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.js +0 -24
  116. package/src/legacy/tool-ui/src/main/webapp/v4/Message.js +0 -14
  117. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.js +0 -32
  118. package/src/legacy/tool-ui/src/main/webapp/v4/Page.js +0 -890
  119. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.js +0 -758
  120. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewEditor.js +0 -86
  121. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewOverlay.js +0 -1005
  122. package/src/legacy/tool-ui/src/main/webapp/v4/PubSub.js +0 -47
  123. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.js +0 -211
  124. package/src/legacy/tool-ui/src/main/webapp/v4/RegionMap.js +0 -215
  125. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.js +0 -160
  126. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.js +0 -154
  127. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.js +0 -281
  128. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.js +0 -255
  129. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.js +0 -56
  130. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.js +0 -874
  131. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.js +0 -100
  132. package/src/legacy/tool-ui/src/main/webapp/v4/StyleguidePresets.js +0 -357
  133. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.js +0 -360
  134. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.js +0 -27
  135. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.js +0 -224
  136. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.js +0 -147
  137. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContentBundle.js +0 -8
  138. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.js +0 -2417
  139. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditorBundle.js +0 -8
  140. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.js +0 -52
  141. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.d.ts +0 -13
  142. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.js +0 -177
  143. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.js +0 -90
  144. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/fileMock.js +0 -1
  145. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/styleMock.js +0 -1
  146. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/textArea.mock.js +0 -20
  147. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/globals.js +0 -770
  148. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/ProseMirror.test.js +0 -16
  149. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/index.html +0 -54
  150. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/CommentManager.test.js +0 -29
  151. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/index.html +0 -35
  152. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -42
  153. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/index.html +0 -37
  154. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -288
  155. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/block.html +0 -38
  156. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/inline.html +0 -38
  157. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/no-popups.html +0 -38
  158. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/ListManager.js +0 -257
  159. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/index.html +0 -38
  160. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/hierarchal.html +0 -33
  161. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/index.html +0 -33
  162. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/menubar.test.js +0 -195
  163. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/small.html +0 -34
  164. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/tags.html +0 -34
  165. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/PlaceholderManager.test.js +0 -134
  166. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-editable-placeholder.html +0 -32
  167. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-text.html +0 -34
  168. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/index.html +0 -31
  169. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/TableManager.test.js +0 -63
  170. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/existing.html +0 -48
  171. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/TrackManager.test.js +0 -291
  172. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/existing.html +0 -39
  173. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/insert.html +0 -37
  174. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/Sortable.test.js +0 -105
  175. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/ProseMirror.test.js +0 -41
  176. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/codemirror-shim.test.js +0 -72
  177. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/collab_manager/CollabManager.test.js +0 -46
  178. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/enhancement_manager/EnhancementManager.test.js +0 -84
  179. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/list_manager/ListManager.test.js +0 -54
  180. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/menubar/menubar.test.js +0 -183
  181. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/spellcheck/SpellCheck.test.js +0 -45
  182. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/BSSerializer.test.js +0 -346
  183. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/menuItemsBuilder.test.js +0 -226
  184. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/utilities.test.js +0 -118
  185. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/Appetizeio.js +0 -5
  186. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.js +0 -113
  187. package/src/legacy/tool-ui/src/main/webapp/v4/compat/Fetch.js +0 -16
  188. package/src/legacy/tool-ui/src/main/webapp/v4/compat/jquery.js +0 -32
  189. package/src/legacy/tool-ui/src/main/webapp/v4/compat/requirejs.js +0 -13
  190. package/src/legacy/tool-ui/src/main/webapp/v4/dom/Tether.js +0 -1
  191. package/src/legacy/tool-ui/src/main/webapp/v4/dom/TetherLayout.js +0 -1
  192. package/src/legacy/tool-ui/src/main/webapp/v4/dom/closest.js +0 -1
  193. package/src/legacy/tool-ui/src/main/webapp/v4/dom/create.js +0 -1
  194. package/src/legacy/tool-ui/src/main/webapp/v4/dom/find.js +0 -1
  195. package/src/legacy/tool-ui/src/main/webapp/v4/dom/findAll.js +0 -1
  196. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifClick.js +0 -1
  197. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifMatches.js +0 -1
  198. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifUnmodified.js +0 -1
  199. package/src/legacy/tool-ui/src/main/webapp/v4/dom/index.js +0 -5
  200. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertBefore.js +0 -1
  201. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertFirst.js +0 -1
  202. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertLast.js +0 -1
  203. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFind.js +0 -1
  204. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFindOnce.js +0 -1
  205. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRTEReady.js +0 -1
  206. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRemove.js +0 -1
  207. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onVisible.js +0 -1
  208. package/src/legacy/tool-ui/src/main/webapp/v4/dom/previousUntil.js +0 -1
  209. package/src/legacy/tool-ui/src/main/webapp/v4/dom/resolveIconCompat.js +0 -40
  210. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/Socket.js +0 -1
  211. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/index.js +0 -1
  212. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.js +0 -909
  213. package/src/legacy/tool-ui/src/main/webapp/v4/rte/README.md +0 -68
  214. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.d.ts +0 -8
  215. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.js +0 -274
  216. package/src/legacy/tool-ui/src/main/webapp/v4/rte/collab-workflow.jpeg +0 -0
  217. package/src/legacy/tool-ui/src/main/webapp/v4/rte/interchangeable.ts +0 -250
  218. package/src/legacy/tool-ui/src/main/webapp/v4/rte/mention.js +0 -90
  219. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/PluginProvider.js +0 -124
  220. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/README.md +0 -46
  221. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/AIInlineManager.ts +0 -124
  222. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInlineView.ts +0 -1019
  223. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_manager/AiManager.ts +0 -199
  224. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/CollabManager.js +0 -339
  225. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.js +0 -96
  226. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/comment_manager/CommentManager.js +0 -348
  227. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.js +0 -110
  228. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/README.md +0 -29
  229. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/EnhancementManager.js +0 -428
  230. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/README.md +0 -63
  231. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/commands.js +0 -690
  232. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/constants.js +0 -12
  233. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/enhancement-creation.jpeg +0 -0
  234. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/index.js +0 -15
  235. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/rte-flow.jpeg +0 -0
  236. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ActionButtonView.js +0 -86
  237. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/BlockSubmenuView.js +0 -60
  238. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/EnhancementView.js +0 -208
  239. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.js +0 -102
  240. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/SubmenuView.js +0 -365
  241. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/FindReplaceManager.js +0 -239
  242. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/FindView.js +0 -604
  243. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/FullscreenManager.js +0 -57
  244. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/README.md +0 -26
  245. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/commands.js +0 -16
  246. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/index.js +0 -4
  247. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.js +0 -474
  248. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/htmlEditorManager.js +0 -66
  249. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/views/HtmlEditorView.js +0 -97
  250. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.js +0 -342
  251. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/README.md +0 -50
  252. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/commands.js +0 -207
  253. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/constants.js +0 -26
  254. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/index.js +0 -4
  255. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/Menubar.js +0 -485
  256. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/README.md +0 -40
  257. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.js +0 -842
  258. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/PasteManager.js +0 -368
  259. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/placeholder_manager/PlaceHolderManager.js +0 -128
  260. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/README.md +0 -13
  261. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/RawTextManager.js +0 -96
  262. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/index.js +0 -3
  263. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-plugin.js +0 -280
  264. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-service.js +0 -94
  265. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/TableManager.js +0 -57
  266. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/commands.js +0 -97
  267. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerView.js +0 -88
  268. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableView.js +0 -613
  269. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/README.md +0 -13
  270. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/TrackManager.js +0 -905
  271. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/BSSerializer.js +0 -819
  272. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/README.md +0 -80
  273. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/commands.js +0 -98
  274. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.d.ts +0 -84
  275. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.js +0 -87
  276. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/index.js +0 -13
  277. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/keymapBuilder.js +0 -223
  278. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/menuItemsBuilder.js +0 -559
  279. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/schemaBuilder.js +0 -1281
  280. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.d.ts +0 -4
  281. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.js +0 -359
  282. package/src/legacy/tool-ui/src/main/webapp/v4/theme/ColorRotator.js +0 -1
  283. package/src/legacy/tool-ui/src/main/webapp/v4/util/debounce.js +0 -1
  284. package/src/legacy/tool-ui/src/main/webapp/v4/util/getComponentKey.js +0 -1
  285. package/src/legacy/tool-ui/src/main/webapp/v4/util/noise.js +0 -1
  286. package/src/legacy/tool-ui/src/main/webapp/v4/util/repaint.js +0 -1
  287. package/src/legacy/tool-ui/src/main/webapp/v4/util/storage.js +0 -1
  288. package/src/legacy/tool-ui/src/main/webapp/v4/util/throttle.js +0 -1
  289. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.js +0 -33
  290. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.js +0 -217
  291. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.js +0 -7
  292. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.js +0 -19
  293. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.js +0 -7
  294. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.js +0 -13
  295. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.js +0 -25
  296. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.js +0 -33
  297. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Revisions.js +0 -61
@@ -1,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
- }