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