@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,890 +0,0 @@
1
- import create from './dom/create'
2
- import find from './dom/find'
3
- import findAll from './dom/findAll'
4
- import insertBefore from './dom/insertBefore'
5
- import onFind from './dom/onFind'
6
- import onFindOnce from './dom/onFindOnce'
7
- import onRemove from './dom/onRemove'
8
- import storage from './util/storage'
9
- import { tabbable } from 'tabbable'
10
- import {
11
- getFirstAndLastFocusableDescendants,
12
- getFocusableDescendants,
13
- } from '../../../dom/focusable'
14
- import { trapFocusWithin } from '../../../dom/keyboard'
15
-
16
- const tooltips = window.BRIGHTSPOT?.ui.tooltips
17
-
18
- onFind('.Page .Container-broadcast', (broadcast) => {
19
- const page = broadcast.closest('.Page')
20
- const observer = new ResizeObserver((entries) => {
21
- setBroadcastProperties(page, broadcast)
22
- })
23
- observer.observe(broadcast)
24
- setBroadcastProperties(page, broadcast)
25
- })
26
-
27
- // Toggle the main nav and the sub-nav items.
28
- onFind('.Page-nav', (nav) => {
29
- nav.setAttribute('inert', '')
30
- nav.addEventListener('keydown', (e) => {
31
- switch (e.key) {
32
- case 'Enter':
33
- document.activeElement
34
- .closest('li')
35
- .setAttribute(
36
- 'aria-expanded',
37
- document.activeElement.closest('li').matches('.is-expanded'),
38
- )
39
- break
40
- case 'ArrowUp':
41
- case 'ArrowLeft':
42
- _changeFocus(e.target.closest('li'), -1)
43
- e.preventDefault()
44
- e.stopPropagation()
45
- break
46
-
47
- case 'ArrowRight':
48
- case 'ArrowDown':
49
- _changeFocus(e.target.closest('li'), 1)
50
- e.preventDefault()
51
- e.stopPropagation()
52
- break
53
-
54
- case 'Escape':
55
- if (
56
- document.activeElement.closest('li').getAttribute('aria-expanded') ===
57
- 'false' ||
58
- document.activeElement.parentElement.parentElement.parentElement.classList.contains(
59
- 'selected',
60
- )
61
- ) {
62
- toggleMenu(nav.closest('.Page'), true)
63
- } else if (
64
- !e.target.closest('li').classList.contains('is-expanded') &&
65
- !e.target
66
- .closest('li')
67
- .closest('ul')
68
- .classList.contains('is-expanded')
69
- ) {
70
- toggleMenu(nav.closest('.Page'), true)
71
- } else {
72
- const linkParent = e.target.closest('.isNested')
73
- linkParent.classList.remove('is-expanded')
74
- linkParent.firstElementChild.focus()
75
- }
76
- break
77
- }
78
- })
79
-
80
- const toggle = insertBefore(
81
- create('button', {
82
- className: 'Page-navToggle',
83
- title: tooltips.menu.open,
84
- 'aria-label': tooltips.menu.open,
85
- 'aria-haspopup': 'true',
86
- 'aria-expanded': 'false',
87
- onclick: (e) => {
88
- toggleMenu(nav.closest('.Page'))
89
- },
90
- onkeydown: (e) => {
91
- const mainBody = nav.closest('.Page')
92
- const link = find(nav, ':scope > li')
93
- switch (e.key) {
94
- case 'ArrowUp':
95
- case 'ArrowLeft':
96
- nav.lastElementChild.querySelector('a').focus()
97
- break
98
-
99
- case 'ArrowDown':
100
- case 'ArrowRight':
101
- if (
102
- link.classList.contains('isNested') &&
103
- link.classList.contains('selected')
104
- ) {
105
- link
106
- .querySelector('ul')
107
- .firstElementChild.querySelector('a')
108
- .focus()
109
- } else {
110
- link.querySelector('a').focus()
111
- }
112
- break
113
- }
114
- },
115
- }),
116
- nav,
117
- )
118
-
119
- for (const item of findAll(nav, '.isNested')) {
120
- const key = `BSP.Page.navItemExpanded.${item.textContent.trim()}`
121
- const link = find(item, ':scope > a')
122
- const isExpanded = storage.get(key)
123
- const title = isExpanded ? tooltips.collapse : tooltips.expand
124
- const linkToggle = create('div', {
125
- className: 'Page-navItemToggle',
126
- 'aria-label': title,
127
- })
128
-
129
- link.setAttribute('tabindex', 0)
130
- item.setAttribute(
131
- 'aria-expanded',
132
- item.classList.toggle('is-expanded', isExpanded),
133
- )
134
- link.appendChild(linkToggle)
135
- link.title = title
136
- link.addEventListener('click', (e) => {
137
- e.preventDefault()
138
- const isExpanded = item.classList.toggle('is-expanded')
139
- link.title = isExpanded ? tooltips.collapse : tooltips.expand
140
- linkToggle.setAttribute('aria-label', link.title)
141
- storage.toggle(key, isExpanded)
142
- item.setAttribute('aria-expanded', isExpanded)
143
- if (isExpanded) {
144
- setTimeout(
145
- () => item.scrollIntoView({ behavior: 'smooth', block: 'nearest' }),
146
- 100,
147
- )
148
- }
149
- })
150
- }
151
-
152
- // Hide the nav when clicking outside of it.
153
- window.addEventListener('click', (e) => {
154
- if (
155
- !nav.contains(e.target) &&
156
- !toggle.contains(e.target) &&
157
- !window.BRIGHTSPOT?.ui.cms.enableV5UI
158
- ) {
159
- toggleMenu(nav.closest('.Page'), true)
160
- }
161
- })
162
- })
163
-
164
- // Rearrange all the controls in the header.
165
- onFind('.toolUserDisplay', (userDisplay) => {
166
- const notifications = userDisplay.querySelector('.toolUserNotifications')
167
- const notificationLink = userDisplay.querySelector('.toolUserNotifications a')
168
-
169
- userDisplay.parentNode.insertBefore(
170
- create(
171
- 'div',
172
- {
173
- className: 'Page-notifications',
174
- 'data-new': notificationLink.dataset.new,
175
- 'data-count': notificationLink.dataset.count,
176
- 'data-count-label': notificationLink.dataset.countLabel,
177
- },
178
- Array.from(notifications.children),
179
- ),
180
- userDisplay.nextSibling,
181
- )
182
-
183
- notifications.remove()
184
- })
185
-
186
- // Copy the profile actions into the profile popup.
187
- onFind('.Popup[name="profilePanel"] .p-tud > h1', (heading) => {
188
- const controls = create('div', { className: 'Widget-controls' })
189
-
190
- for (let link of document.querySelectorAll('.toolUserControls a')) {
191
- link = link.cloneNode(true)
192
-
193
- if (link.getAttribute('target')) {
194
- link.setAttribute('data-popup-mode', 'local')
195
- } else {
196
- link.setAttribute('target', '_top')
197
- }
198
-
199
- controls.appendChild(link)
200
- }
201
-
202
- heading.parentNode.insertBefore(controls, heading.nextSibling)
203
- })
204
-
205
- onFind('.ProfileDropdown-items > li', (listItem) => {
206
- listItem.addEventListener('click', (e) => {
207
- e.target.dispatchEvent(new CustomEvent('close', { bubbles: true }))
208
- })
209
- })
210
-
211
- function setBroadcastProperties(page, broadcast) {
212
- if (broadcast) {
213
- page.style.setProperty(
214
- '--Page-headerBottom',
215
- `calc(var(--Page-headerHeight) + ${broadcast.clientHeight}px)`,
216
- )
217
- }
218
- }
219
-
220
- function toggleMenu(pageEl, forceClose = false) {
221
- const nav = pageEl?.querySelector('.Page-nav')
222
- const willClose =
223
- pageEl.classList.contains('is-navigating') || forceClose === true
224
-
225
- willClose ? nav?.setAttribute('inert', '') : nav?.removeAttribute('inert')
226
-
227
- // When opened, move focus to the first focusable item in the nav.
228
- if (!willClose) {
229
- nav
230
- .querySelector(':scope .selected li:first-of-type')
231
- ?.querySelector('a')
232
- ?.focus()
233
- }
234
-
235
- const label = willClose ? tooltips.menu.open : tooltips.menu.close
236
-
237
- pageEl.classList.toggle(
238
- 'is-navigating',
239
- forceClose === true ? false : undefined,
240
- )
241
-
242
- const button = pageEl?.querySelector('.Page-navToggle')
243
- if (!button) return
244
- button.title = label
245
- button.setAttribute('aria-label', label)
246
- button.setAttribute('aria-expanded', !willClose)
247
- }
248
-
249
- // _changeFocus: focuses on the element currently being accessed by the keyboard based on the move value
250
- // move = -1 for arrow up or arrow left.
251
- // move = 1 for arrow down or arrow right
252
- function _changeFocus(currentFocus, move) {
253
- const nav = document.querySelector('.Page-nav')
254
-
255
- if (!currentFocus) {
256
- return
257
- }
258
-
259
- let currentFocusClassList = currentFocus.classList
260
- currentFocusClassList.remove('is-active')
261
-
262
- if (
263
- (currentFocusClassList.contains('selected') &&
264
- currentFocusClassList.contains('isNested')) ||
265
- currentFocusClassList.contains('is-expanded')
266
- ) {
267
- const firstEl = currentFocus.querySelector('ul').firstElementChild
268
- if (firstEl != null) {
269
- _changeFocus(firstEl, move)
270
- }
271
- }
272
-
273
- let nextFocus
274
- let currentFocusSibling
275
- const closestLi = currentFocus.closest('ul').closest('li')
276
- const closestNested = currentFocus.closest('.isNested')
277
-
278
- if (move === 1) {
279
- currentFocusSibling = currentFocus.nextSibling
280
- const containsIsExpanded = currentFocus.classList.contains('is-expanded')
281
-
282
- if (currentFocusSibling !== null) {
283
- if (containsIsExpanded) {
284
- nextFocus = currentFocus.querySelector('ul').firstElementChild
285
- } else if (currentFocusSibling.tagName === 'LI') {
286
- nextFocus = currentFocusSibling
287
- }
288
- } else {
289
- if (!containsIsExpanded) {
290
- if (closestNested.nextSibling !== null) {
291
- nextFocus = closestLi.nextSibling
292
- } else {
293
- nextFocus =
294
- nav.firstElementChild.querySelector('ul').firstElementChild
295
- }
296
- }
297
- }
298
- nextFocus.querySelector('a').focus()
299
- } else {
300
- currentFocusSibling = currentFocus.previousSibling
301
- if (currentFocusSibling !== null) {
302
- if (currentFocusSibling.tagName === 'LI') {
303
- nextFocus = currentFocusSibling
304
- nextFocus.querySelector('a').focus()
305
- }
306
- if (currentFocus.classList.contains('isNested')) {
307
- nextFocus = currentFocusSibling.querySelector('ul').lastElementChild
308
- nextFocus.querySelector('a').focus()
309
- }
310
- } else {
311
- const focusPreviousSibling = closestNested.previousSibling
312
- if (closestLi.classList.contains('isNested')) {
313
- nextFocus = closestLi
314
- } else if (focusPreviousSibling !== null) {
315
- if (focusPreviousSibling.classList.contains('selected')) {
316
- nextFocus = focusPreviousSibling.querySelector('ul').lastElementChild
317
- } else {
318
- nextFocus = closestLi
319
- }
320
- }
321
- if (closestNested.classList.contains('selected')) {
322
- const navLastChild = nav.lastElementChild
323
- if (navLastChild.classList.contains('is-expanded')) {
324
- nextFocus = navLastChild.querySelector('ul').lastElementChild
325
- } else {
326
- nextFocus = navLastChild
327
- }
328
- }
329
- nextFocus.querySelector('a').focus()
330
- }
331
- }
332
- }
333
-
334
- onFindOnce('.Page-login', () => {
335
- const pageLogin = document.querySelector('.Page-login')
336
- const loginId = pageLogin.querySelector('label')?.htmlFor
337
- if (loginId) document.getElementById(loginId)?.focus()
338
- })
339
-
340
- // Reloads the guide to the current subject (last item in a list of subjects).
341
- const subjects = []
342
- let currentHref
343
-
344
- function reloadGuide() {
345
- if (!document.querySelector('.Page').classList.contains('is-guideOpen')) {
346
- return
347
- }
348
-
349
- const { href, name } = subjects[subjects.length - 1]
350
-
351
- if (href && href !== currentHref) {
352
- currentHref = href
353
- const container = document.querySelector('.Page-guide')
354
-
355
- if (!container.querySelector(`:scope > .frame[name="${name}"]`)) {
356
- const frame = document.createElement('div')
357
-
358
- frame.classList.add('frame')
359
- frame.setAttribute('name', name)
360
- container.appendChild(frame)
361
-
362
- const params = new URLSearchParams()
363
-
364
- params.append('subject', href)
365
-
366
- const link = document.createElement('a')
367
- link.href = `${
368
- document.querySelector('.Page-guideLink a').href
369
- }?${params}`
370
- link.target = name
371
-
372
- document.body.appendChild(link)
373
- link.click()
374
- document.body.removeChild(link)
375
- }
376
-
377
- // Remove guides associated with removed popups.
378
- for (const frame of container.querySelectorAll(':scope > .frame')) {
379
- const frameName = frame.getAttribute('name')
380
-
381
- if (!subjects.some(({ name }) => name === frameName)) {
382
- container.removeChild(frame)
383
- }
384
- }
385
- }
386
- }
387
-
388
- function isFieldGuidePopup(div) {
389
- const subject = div.dataset.href
390
- const params = new URLSearchParams(subject)
391
- return params.get('isFieldGuide') === 'true'
392
- }
393
-
394
- // When a page or a popup opens, set it to the current subject.
395
- let subjectIndex = 0
396
-
397
- onFind(['.Page', '.Popup'], (element) => {
398
- // exclude calendar popup
399
- if (element.getAttribute('name') === 'DateStringCalendarFrame') {
400
- return
401
- }
402
-
403
- const href = element.dataset.href
404
-
405
- if (href) {
406
- subjects.push({
407
- href,
408
- name: `guide-${++subjectIndex}`,
409
- })
410
-
411
- if (isSubjectType(href)) {
412
- element.setAttribute('data-subject-type', 'true')
413
- }
414
-
415
- reloadGuide()
416
-
417
- onRemove(element, () => {
418
- subjects.splice(subjects.indexOf(href), 1)
419
- reloadGuide()
420
- })
421
- }
422
- })
423
-
424
- onFind('.Page-guideLink a', (link) => {
425
- const page = link.closest('.Page')
426
-
427
- if (page.classList.contains('is-guideOpen')) {
428
- link.setAttribute('aria-expanded', 'true')
429
- }
430
-
431
- link.addEventListener(
432
- 'click',
433
- (event) => {
434
- event.preventDefault()
435
- event.stopPropagation()
436
- const guideField = page.querySelector("div.Popup[name='guideField']")
437
- // Close the field level guide if it is open as both guide views should not be open at the same time
438
- if (guideField) {
439
- let button = guideField.querySelector('.closeButton')
440
- button.click()
441
- }
442
-
443
- const navToggle = page.querySelector('.Page-navToggle')
444
- if (navToggle?.getAttribute('aria-expanded') === 'true') {
445
- navToggle.click()
446
- }
447
-
448
- page.classList.add('is-guideOpen')
449
- link.setAttribute('aria-expanded', 'true')
450
- // Move focus to the guide close button once guide is opened
451
- const closeButton = '.Page-guide a.Guide-close'
452
- onFindOnce(closeButton, () => {
453
- const button = document.querySelector(closeButton)
454
- button.focus()
455
- })
456
- reloadGuide()
457
- },
458
- { capture: true },
459
- )
460
- })
461
-
462
- onFind('.Guide-close', (link) => {
463
- const page = link.closest('.Page')
464
-
465
- link.addEventListener(
466
- 'click',
467
- (event) => {
468
- event.preventDefault()
469
- event.stopPropagation()
470
- document
471
- .querySelector('.CIG-row.is-openPopup')
472
- ?.classList.remove('.is-openPopup')
473
- page.classList.remove('is-guideOpen')
474
- const guideLink = page.querySelector('.Page-guideLink a')
475
- guideLink.setAttribute('aria-expanded', 'false')
476
- guideLink.focus()
477
- fetch(link.href)
478
- },
479
- { capture: true },
480
- )
481
- })
482
-
483
- onFind(
484
- '.Popup[name="edit-guide"] .ActionBar > button[name="action-save"]',
485
- (button) => {
486
- button.addEventListener('click', () => {
487
- let frame = $(button).popup('source').frame('container')[0]
488
-
489
- if (frame) {
490
- if (frame.classList.contains('Guide-embedded')) {
491
- frame = frame.closest('.Guide')?.closest('.frame')
492
- }
493
-
494
- if (frame) {
495
- frame.parentNode?.removeChild(frame)
496
- }
497
- }
498
- })
499
- },
500
- )
501
-
502
- // If guide is open, scroll to the field that was clicked on
503
- onFind('a.CIG-guide', (link) => {
504
- link.addEventListener('click', (event) => {
505
- if (!document.querySelector('.Page').classList.contains('is-guideOpen')) {
506
- return
507
- }
508
- event.preventDefault()
509
- event.stopPropagation()
510
-
511
- const href = link.getAttribute('href')
512
- const params = href.substring(href.indexOf('?') + 1)
513
- const urlParams = new URLSearchParams(params)
514
- const fieldName = urlParams.get('fieldName')
515
-
516
- const item = document.querySelector(
517
- 'div.Guide-field[data-field="' + fieldName + '"]',
518
- )
519
- if (!item) {
520
- return
521
- }
522
- item.scrollIntoView({ behavior: 'smooth' })
523
- })
524
- })
525
-
526
- // Remove extra frame if editing a field level note after saving
527
- onFind('div.Popup[name="edit-guide"] button[name="action-save"]', (button) => {
528
- button.addEventListener('click', (event) => {
529
- const div = button.closest('div.Popup[name="edit-guide"]')
530
- if (!isFieldGuidePopup(div)) {
531
- return
532
- }
533
- const guideDiv = div.parentElement.querySelector(
534
- 'div.Popup[name="guideField"]',
535
- )
536
- guideDiv.parentElement.removeChild(guideDiv)
537
- })
538
- })
539
-
540
- // Refresh the main guide when closing the field level guide after closing
541
- onFind('div.Popup[name="edit-guide"] button.closeButton', (button) => {
542
- button.addEventListener('click', (event) => {
543
- const div = button.closest('div.Popup[name="edit-guide"]')
544
- if (!isFieldGuidePopup(div)) {
545
- return
546
- }
547
- // If the main guide has never been opened yet, no need to manually refresh the frame as it will update when it is
548
- // opened the first time
549
- const frameList = document.querySelectorAll('div.Page-guide>div.frame')
550
- if (!frameList.length) {
551
- return
552
- }
553
- const page = document.querySelector('.Page')
554
- let typeSubject
555
- let frame
556
- // If there are multiple frames (ex: popups), the last frame should be selected
557
- if (frameList.length > 1 && page.querySelector('div.Popup')?.dataset.href) {
558
- typeSubject = page.querySelector('div.Popup').dataset.href
559
- frame = frameList.item(frameList.length - 1)
560
- } else {
561
- typeSubject = document.querySelector('.Page').dataset.href
562
- frame = frameList.item(0)
563
- }
564
- if (!typeSubject) {
565
- return
566
- }
567
- const typeParams = new URLSearchParams()
568
- typeParams.append('subject', typeSubject)
569
- const link = create('a')
570
- link.href = `${
571
- document.querySelector('.Page-guideLink a').href
572
- }?${typeParams}`
573
- link.target = frame.getAttribute('name')
574
-
575
- document.body.appendChild(link)
576
- link.click()
577
- document.body.removeChild(link)
578
- })
579
- })
580
-
581
- onFind('.aria--skiptoContent', (btn) => {
582
- btn.addEventListener('click', (evt) => {
583
- // Choose the strategy for where focus should move:
584
- // Move focus to the <main> element (default).
585
- const main = document.querySelector('body main')
586
- let el = main
587
-
588
- // Move focus to Content Edit form?
589
- const ce = main.querySelector('.ContentEdit')
590
- if (ce) {
591
- el = ce.querySelector('.ContentEdit-left') ?? ce
592
- }
593
-
594
- // Move focus to the inner ".main"? (ie: when left-rail is present in settings pages.)
595
- const mm = main.querySelector('.main')
596
- if (mm) {
597
- el = mm
598
- }
599
-
600
- // Move focus to search results?
601
- const sres = main.querySelector(':scope .SearchWidget-result')
602
- if (sres) {
603
- el = sres
604
- }
605
-
606
- // Move focus to advanced search results?
607
- const advs = main.querySelector(':scope > .SearchWidget .SearchResult-view')
608
- if (advs) {
609
- el = advs
610
- }
611
-
612
- // Actually move focus.
613
- if (el) {
614
- el.setAttribute('tabindex', '-1')
615
- el.focus({ focusVisible: true })
616
- }
617
- })
618
- })
619
-
620
- function isSubjectType(subject) {
621
- const params = new URLSearchParams(subject)
622
- return (
623
- params.get('typeId') != null ||
624
- params.get('id') != null ||
625
- subject.includes('?typeId=') ||
626
- subject.includes('?id=')
627
- )
628
- }
629
-
630
- // SEARCH tabbing order functions
631
- function handleKeyDownForFocusTrap(
632
- e,
633
- hiddenSearch,
634
- closestPopup,
635
- isFullScreen = false,
636
- ) {
637
- if (e.key !== 'Tab') return
638
-
639
- const isGlobalSearchPopup =
640
- closestPopup !== document && closestPopup?.matches('.is-fromTop')
641
- const isQueryField =
642
- closestPopup !== document && closestPopup?.matches('[name="queryField"]')
643
-
644
- const selectors = {
645
- header:
646
- (isFullScreen && 'header.Page-header') ||
647
- (isGlobalSearchPopup && '.Page-search.toolSearch') ||
648
- null,
649
- popupClose: 'button.Popup-close.closeButton',
650
- searchInput: '.SearchInput.SearchWidget-query',
651
- actionsToggle: '.SearchWidget-actionsToggle',
652
- reset: '.action.action-cancel',
653
- contentTypeForm: '.searchFiltersType.SearchWidget-type',
654
- searchFiltersRest: '.searchFiltersRest',
655
- searchHistory: '.SearchWidget-history',
656
- create: '.SearchWidget-create',
657
- results: '.SearchWidget-result',
658
- pageGuide: isFullScreen ? '.Page-guide' : null,
659
- queryFieldDone: isQueryField ? '.QueryField-button' : null,
660
- }
661
-
662
- const elementGroups = Object.values(selectors)
663
- .filter((selector) => selector)
664
- .map((selector) => {
665
- const startIndex =
666
- selector === '.searchFiltersRest' && !hiddenSearch ? 1 : 0
667
- const domElement = selector.includes('Page-search.toolSearch')
668
- ? document
669
- : closestPopup
670
-
671
- return getFocusableDescendants(selector, domElement, startIndex)
672
- })
673
- .filter((group) => group !== null)
674
-
675
- trapFocusWithin(e, elementGroups, !isFullScreen)
676
- }
677
-
678
- function searchFilterFocus(e, array) {
679
- let lastItem
680
- let secondLastItem
681
-
682
- // If the last item is the Search Icon, the item before is the Combo Input.
683
- if (array[array.length - 1].classList.contains('ContentSelector-search')) {
684
- lastItem = array.pop()
685
- secondLastItem = array.pop()
686
- } else if (array[array.length - 1].classList.contains('ComboInput')) {
687
- // There is no Search Icon. Combo Input is the last item.
688
- lastItem = array.pop()
689
- }
690
-
691
- if (lastItem) {
692
- const itemsToAdd = secondLastItem ? [secondLastItem, lastItem] : [lastItem]
693
-
694
- if (itemsToAdd.length > 0) {
695
- array.splice(1, 0, ...itemsToAdd)
696
- }
697
- }
698
-
699
- let nextContainer = null
700
- if (array[0].nextElementSibling instanceof HTMLElement) {
701
- nextContainer = array[0].nextElementSibling
702
- }
703
-
704
- const newArray = nextContainer
705
- ? tabbable(nextContainer, { includeContainer: true })
706
- : []
707
- const activeElementIsHTMLElement =
708
- e.target instanceof HTMLElement || e.target instanceof SVGElement
709
- const currentActiveIndex =
710
- e.target && activeElementIsHTMLElement
711
- ? array.indexOf(document.activeElement)
712
- : -1
713
- const keyType = e.shiftKey ? 'back' : 'forward'
714
-
715
- if (keyType === 'forward') {
716
- if (currentActiveIndex >= 0 && currentActiveIndex < array.length - 1) {
717
- e.preventDefault()
718
- array[currentActiveIndex + 1]?.focus()
719
- } else if (currentActiveIndex === array.length - 1) {
720
- e.preventDefault()
721
- newArray[0]?.focus()
722
- }
723
- } else if (keyType === 'back') {
724
- if (activeElementIsHTMLElement && e.target === newArray[0]) {
725
- e.preventDefault()
726
- array[array.length - 1]?.focus()
727
- } else if (currentActiveIndex > 0) {
728
- e.preventDefault()
729
- array[currentActiveIndex - 1]?.focus()
730
- }
731
- }
732
- }
733
-
734
- function handleSearchWidget(findSelector, e) {
735
- if (e.key !== 'Tab') return
736
- onFind(findSelector, (el) => {
737
- const tabbableArray = tabbable(el, { includeContainer: true })
738
- if (tabbableArray && tabbableArray.length > 0) {
739
- searchFilterFocus(e, tabbableArray)
740
- }
741
- })
742
- }
743
-
744
- /*
745
- Change tabbing order to match the visual order for the Users & Roles and Dashboards admin pages,
746
- Search fullscreen pages and popups, and Content Edit pages
747
- */
748
- window.addEventListener('keydown', (e) => {
749
- if (e.key !== 'Tab') return
750
-
751
- const isAdminPage = document.querySelector('.Admin-main')
752
- const isContentEdit = document.querySelector('.content-edit')
753
- const isFullscreenSearch = document.querySelector(
754
- '.SearchWidget[name="searchAdvancedFull"]',
755
- )
756
- const isFullscreenRTE = e.target.closest('.ProseMirror-fullscreen-container')
757
-
758
- const visiblePopup = e.target.closest('.Popup.is-visible')
759
- const popupSource = visiblePopup?.dataset.popupSourceClass
760
-
761
- const isContentEditPopup = visiblePopup?.querySelector('.ContentEdit')
762
- const isGlobalSearchPopup = visiblePopup?.matches('[name="miscSearch"]')
763
- const isContentSelectorSearchPopup = popupSource?.includes(
764
- 'ContentSelector-search',
765
- )
766
- const isQueryFieldPopup = visiblePopup?.matches('[name="queryField"]')
767
- const isSearchPopup =
768
- isGlobalSearchPopup || isContentSelectorSearchPopup || isQueryFieldPopup
769
-
770
- const isBulkWorkflow = document.querySelector('.BulkWorkflow')
771
-
772
- if (
773
- !isSearchPopup &&
774
- !isFullscreenSearch &&
775
- !isFullscreenRTE &&
776
- !isContentEdit &&
777
- !isAdminPage &&
778
- !visiblePopup &&
779
- !isBulkWorkflow
780
- )
781
- return
782
-
783
- // SEARCH WIDGET
784
- const searchSelector =
785
- '.searchFilter.searchFilter-record.SearchWidget-filter.is-record.is-multiple.searchFilter-multiple'
786
- if (isBulkWorkflow) {
787
- const currentGroup = getFirstAndLastFocusableDescendants(isBulkWorkflow)
788
- if (!currentGroup) return
789
- trapFocusWithin(e, [currentGroup])
790
- } else if (isSearchPopup) {
791
- // check for search popups that have a search input that is display: none
792
- const searchQueryElement = visiblePopup.querySelector('.SearchWidget-query')
793
- const hiddenSearch =
794
- window.getComputedStyle(searchQueryElement).display === 'none'
795
- handleSearchWidget('.Popup ' + searchSelector, e)
796
- handleKeyDownForFocusTrap(e, hiddenSearch, visiblePopup)
797
- } else if (isFullscreenSearch && !visiblePopup) {
798
- handleSearchWidget(searchSelector, e)
799
- handleKeyDownForFocusTrap(e, false, document, true)
800
- }
801
-
802
- // FULLSCREEN RTE
803
- else if (isFullscreenRTE) {
804
- const elementGroups = [
805
- getFirstAndLastFocusableDescendants(isFullscreenRTE),
806
- ].filter((element) => element !== null)
807
- trapFocusWithin(e, elementGroups)
808
- }
809
-
810
- // CONTENT EDIT
811
- else if (isContentEditPopup || (!visiblePopup && isContentEdit)) {
812
- const contentEdit = isContentEditPopup ? visiblePopup : document
813
- const isV5UI = window.BRIGHTSPOT?.ui.cms.enableV5UI
814
-
815
- const elementGroups = [
816
- getFocusableDescendants('.Page-header', contentEdit),
817
- isV5UI ? getFocusableDescendants('btu-nav-rail', contentEdit) : null,
818
- isV5UI ? getFocusableDescendants('.Page-guide', contentEdit) : null,
819
- isV5UI ? getFocusableDescendants('.Page-askAi', contentEdit) : null,
820
- // V4-only "back" button
821
- !isV5UI
822
- ? getFocusableDescendants(
823
- '.popup-objectId-edit-heading.Link',
824
- contentEdit,
825
- )
826
- : null,
827
- // Legacy V4 Content Edit title
828
- !isV5UI
829
- ? getFocusableDescendants('.ContentEdit-title.breadcrumbs', contentEdit)
830
- : null,
831
- // V5-only content edit popup close button
832
- isV5UI && isContentEditPopup
833
- ? getFocusableDescendants(
834
- ':scope > .Popup-content > .Popup-close',
835
- contentEdit,
836
- )
837
- : null,
838
- getFocusableDescendants('.ContentEdit-top', contentEdit),
839
- getFocusableDescendants('.ContentEdit-left', contentEdit),
840
- getFocusableDescendants('.ContentEditDrawer.is-open', contentEdit),
841
- getFocusableDescendants('.ContentEdit-preview:not([inert])', contentEdit),
842
- getFocusableDescendants('.ContentEdit-right.is-visible', contentEdit),
843
- getFocusableDescendants('.ContentEdit-toolbar', contentEdit),
844
- !isV5UI ? getFocusableDescendants('.Page-guide', contentEdit) : null,
845
- !isV5UI ? getFocusableDescendants('.Page-askAi', contentEdit) : null,
846
- ].filter((element) => element !== null)
847
-
848
- trapFocusWithin(e, elementGroups, !!isContentEditPopup)
849
- }
850
-
851
- // DASHBOARDS and USERS & ROLES
852
- else if (isAdminPage && !visiblePopup) {
853
- const isV5UI = window.BRIGHTSPOT?.ui.cms.enableV5UI
854
-
855
- const elementGroups = [
856
- getFocusableDescendants('.Page-header', document),
857
- isV5UI ? getFocusableDescendants('btu-nav-rail', document) : null,
858
- isV5UI ? getFocusableDescendants('.Page-guide', document) : null,
859
- isV5UI ? getFocusableDescendants('.Page-askAi', document) : null,
860
- getFocusableDescendants(
861
- '.frame.loaded[name$="Result"] > ul.pagination',
862
- document,
863
- ),
864
- getFocusableDescendants('.leftNav.Admin-nav .Widget-controls', document),
865
- getFocusableDescendants(
866
- '.leftNav.Admin-nav .Widget-controls + ul.LinkTable',
867
- document,
868
- ),
869
- getFocusableDescendants('form[target$="Result"]', document),
870
- getFocusableDescendants(
871
- '.leftNav.Admin-nav form[target="dashboardsResult"] + ul.LinkTable',
872
- document,
873
- ),
874
- getFocusableDescendants(
875
- '.frame.loaded[name$="Result"] > ul.pagination + ul.LinkTable',
876
- document,
877
- ),
878
- ].filter((element) => element !== null)
879
-
880
- trapFocusWithin(e, elementGroups, false)
881
- }
882
-
883
- // REMAINING POPUPS
884
- else if (visiblePopup) {
885
- const elementGroups = [
886
- getFirstAndLastFocusableDescendants(visiblePopup),
887
- ].filter((element) => element !== null)
888
- trapFocusWithin(e, elementGroups)
889
- }
890
- })