@brightspot/ui 3.0.1-cms-ui-migration.0 → 3.0.1-cms-ui-migration.1

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 (719) hide show
  1. package/dist/custom-elements.json +1508 -1508
  2. package/dist/storybook/assets/{ActionBar.stories-CXEvFUN5.js → ActionBar.stories-BhdqLyzJ.js} +1 -1
  3. package/dist/storybook/assets/{ActionItem.stories-8-qQmVGz.js → ActionItem.stories-17zjMCkO.js} +1 -1
  4. package/dist/storybook/assets/{Avatar.stories-LOTCiTgV.js → Avatar.stories-C5m3-zOH.js} +1 -1
  5. package/dist/storybook/assets/{AvatarGroup.stories-N17TVn4O.js → AvatarGroup.stories-DE88PJ6w.js} +1 -1
  6. package/dist/storybook/assets/{Badge.stories-2IRfk8Ri.js → Badge.stories-D905HmvO.js} +1 -1
  7. package/dist/storybook/assets/{Button-CQ2CjiFm.js → Button-ANyLESGb.js} +1 -1
  8. package/dist/storybook/assets/{Button.stories-DwyviUHj.js → Button.stories-DbH6q5L3.js} +1 -1
  9. package/dist/storybook/assets/{ButtonGroup.stories-D6nkkXxD.js → ButtonGroup.stories-loqgAB7p.js} +1 -1
  10. package/dist/storybook/assets/{Celebrate.stories-DtKNptXA.js → Celebrate.stories-CRO3rSgp.js} +1 -1
  11. package/dist/storybook/assets/{Checkbox.stories--fetKLgV.js → Checkbox.stories-SZtgfbFe.js} +1 -1
  12. package/dist/storybook/assets/{CircularProgress.stories-vK3MWdEg.js → CircularProgress.stories-VayPxO4M.js} +1 -1
  13. package/dist/storybook/assets/{ClipboardMixin.stories-BXOX2e9A.js → ClipboardMixin.stories-0EB2O2zT.js} +1 -1
  14. package/dist/storybook/assets/{Color-6BZIO3FS-DIO6ExZa.js → Color-6BZIO3FS-CFpcD80i.js} +1 -1
  15. package/dist/storybook/assets/{Colors.stories-Z-o0Dmyi.js → Colors.stories-BJGM6xnp.js} +1 -1
  16. package/dist/storybook/assets/{CombinedEffects.stories-BIvRmEL2.js → CombinedEffects.stories-DUwocYcn.js} +1 -1
  17. package/dist/storybook/assets/{ComponentStatesMixin-BeLIKOsg.js → ComponentStatesMixin-MUqdPCf7.js} +1 -1
  18. package/dist/storybook/assets/{ComponentStatesMixin.stories-u03jgLUU.js → ComponentStatesMixin.stories-DjrxNwE7.js} +1 -1
  19. package/dist/storybook/assets/{CopyToClipboard.stories-D23guAYu.js → CopyToClipboard.stories-DptOcPq6.js} +1 -1
  20. package/dist/storybook/assets/{Debounce.stories-Bz3JaQJY.js → Debounce.stories-BbcIWmhD.js} +1 -1
  21. package/dist/storybook/assets/{DocsRenderer-LL677BLK-CaEKjMeC.js → DocsRenderer-LL677BLK-Yy8fjeNG.js} +3 -3
  22. package/dist/storybook/assets/{Dropdown.stories-CNxtx8UX.js → Dropdown.stories-Du3LrBR6.js} +1 -1
  23. package/dist/storybook/assets/{EmptyState.stories-Ck5T6q1T.js → EmptyState.stories-Dy9P8aOY.js} +1 -1
  24. package/dist/storybook/assets/{Events.stories-Cx10pvVB.js → Events.stories-DvdVQxDf.js} +1 -1
  25. package/dist/storybook/assets/{Heading.stories-mbkSoA5r.js → Heading.stories-BQ1jFOKn.js} +1 -1
  26. package/dist/storybook/assets/{HueRipple.stories-B-DDviMh.js → HueRipple.stories-CrZFjnRl.js} +1 -1
  27. package/dist/storybook/assets/{Icon.stories-Dodo1jjZ.js → Icon.stories-C2Tj8Lx1.js} +1 -1
  28. package/dist/storybook/assets/{IconButton.stories-eAU6vNiX.js → IconButton.stories-DFqouOJb.js} +1 -1
  29. package/dist/storybook/assets/{LinearProgress.stories-BqAUCgwy.js → LinearProgress.stories-DtNw3QX3.js} +1 -1
  30. package/dist/storybook/assets/{Pagination.stories-CVK8mlEU.js → Pagination.stories-CFiZ9APs.js} +1 -1
  31. package/dist/storybook/assets/{Popover.stories-CC2R-jiv.js → Popover.stories-DkkTuYag.js} +1 -1
  32. package/dist/storybook/assets/{ReadyMixin-CAkCCAOH.js → ReadyMixin-BA01Vm_B.js} +1 -1
  33. package/dist/storybook/assets/{RovingTabindexMixin.stories-Dgm5izU_.js → RovingTabindexMixin.stories-BesAqt48.js} +1 -1
  34. package/dist/storybook/assets/{Rtc.stories-D9uVCq71.js → Rtc.stories-iTw43rjp.js} +1 -1
  35. package/dist/storybook/assets/{ScrollShadow.stories-D5GJ6Zes.js → ScrollShadow.stories-QYqQCcAo.js} +1 -1
  36. package/dist/storybook/assets/{Switch.stories-D7HV0v6i.js → Switch.stories-BKArq9Mk.js} +1 -1
  37. package/dist/storybook/assets/{Tab.stories-CwHBngmO.js → Tab.stories-8UdDPvE5.js} +1 -1
  38. package/dist/storybook/assets/{Tabs.stories-D87ILflp.js → Tabs.stories-BPGMZ552.js} +1 -1
  39. package/dist/storybook/assets/{Throttle.stories-C13Vl7yt.js → Throttle.stories-CYl5d0r6.js} +1 -1
  40. package/dist/storybook/assets/{Tooltip.stories-BRmAKppC.js → Tooltip.stories-cZ0zSlwX.js} +1 -1
  41. package/dist/storybook/assets/{Upload.stories-CvceXasD.js → Upload.stories-CPC7N0Ed.js} +1 -1
  42. package/dist/storybook/assets/{UploadItem.stories-BF6c7tVM.js → UploadItem.stories-D0LClT0a.js} +1 -1
  43. package/dist/storybook/assets/{Welcome.stories-Ciht_H8A.js → Welcome.stories-C8JUaRas.js} +1 -1
  44. package/dist/storybook/assets/{Widget.stories-30UYw1gn.js → Widget.stories-C1FxF24-.js} +1 -1
  45. package/dist/storybook/assets/{WithTooltip-65CFNBJE-Q8AG_oZS.js → WithTooltip-65CFNBJE-BMBo-fie.js} +1 -1
  46. package/dist/storybook/assets/{blocks-DIrsUt2U.js → blocks-BTsuXRXZ.js} +5 -5
  47. package/dist/storybook/assets/{formatter-EIJCOSYU-BcNb3EA1.js → formatter-EIJCOSYU-BJ1Cwrpx.js} +1 -1
  48. package/dist/storybook/assets/if-defined-BPCd2NXs.js +1 -0
  49. package/dist/storybook/assets/{iframe-D5Uwm8Zd.js → iframe-B3YWTqkR.js} +4 -4
  50. package/dist/storybook/assets/{index-BOlx3-q7.js → index-BBUTVEdP.js} +1 -1
  51. package/dist/storybook/assets/{onFind-Cp2DO8R2.js → onFind-NC0lGo-r.js} +1 -1
  52. package/dist/storybook/assets/{onFind.stories-BDK06xaW.js → onFind.stories-CqbwQgQF.js} +1 -1
  53. package/dist/storybook/assets/{onRemove.stories-TSKvqih3.js → onRemove.stories-Y8Ycs77o.js} +1 -1
  54. package/dist/storybook/assets/{onVisible.stories-DiOPobn8.js → onVisible.stories-CcLUE35q.js} +1 -1
  55. package/dist/storybook/assets/{style-map-Cy6U2K_U.js → style-map-MSB_ngx3.js} +1 -1
  56. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-NNCQVsSv.js → syntaxhighlighter-ED5Y7EFY-BjkjEDMG.js} +1 -1
  57. package/dist/storybook/iframe.html +1 -1
  58. package/dist/storybook/project.json +1 -1
  59. package/package.json +2 -2
  60. package/src/legacy/tool-ui/src/AIInline.css +123 -0
  61. package/src/legacy/tool-ui/src/ActionBar.css +41 -0
  62. package/src/legacy/tool-ui/src/Admin.css +258 -0
  63. package/src/legacy/tool-ui/src/AdobeStock.css +3 -0
  64. package/src/legacy/tool-ui/src/AnalyticsWidget.css +34 -0
  65. package/src/legacy/tool-ui/src/AnalyticsWidget.ts +158 -0
  66. package/src/legacy/tool-ui/src/Apis.css +31 -0
  67. package/src/legacy/tool-ui/src/AppetizeioEmbedded.css +58 -0
  68. package/src/legacy/tool-ui/src/AssociatedContentWidget.css +68 -0
  69. package/src/legacy/tool-ui/src/AutoExpand.css +33 -0
  70. package/src/legacy/tool-ui/src/Avatar.css +31 -0
  71. package/src/legacy/tool-ui/src/BackgroundTasks.css +29 -0
  72. package/src/legacy/tool-ui/src/Base.css +80 -0
  73. package/src/legacy/tool-ui/src/Board.css +160 -0
  74. package/src/legacy/tool-ui/src/Board.ts +515 -0
  75. package/src/legacy/tool-ui/src/BroadcastAlertBanner.ts +93 -0
  76. package/src/legacy/tool-ui/src/BulkUpload.css +51 -0
  77. package/src/legacy/tool-ui/src/BulkWorkflow.css +47 -0
  78. package/src/legacy/tool-ui/src/BulkWorkflow.ts +110 -0
  79. package/src/legacy/tool-ui/src/BulletedList.css +11 -0
  80. package/src/legacy/tool-ui/src/CIGCluster/README.md +32 -0
  81. package/src/legacy/tool-ui/src/CIGCluster/index.ts +144 -0
  82. package/src/legacy/tool-ui/src/CIGCluster.css +60 -0
  83. package/src/legacy/tool-ui/src/Calendar.css +110 -0
  84. package/src/legacy/tool-ui/src/Card.css +28 -0
  85. package/src/legacy/tool-ui/src/Celebrate.ts +87 -0
  86. package/src/legacy/tool-ui/src/Chart.ts +53 -0
  87. package/src/legacy/tool-ui/src/ChartCompat.ts +413 -0
  88. package/src/legacy/tool-ui/src/ChartTable.ts +22 -0
  89. package/src/legacy/tool-ui/src/Checkbox.css +22 -0
  90. package/src/legacy/tool-ui/src/CodeMirror.css +161 -0
  91. package/src/legacy/tool-ui/src/Collections.css +74 -0
  92. package/src/legacy/tool-ui/src/ColorInputSpectrum.css +140 -0
  93. package/src/legacy/tool-ui/src/ComboInput.css +253 -0
  94. package/src/legacy/tool-ui/src/Compat.css +383 -0
  95. package/src/legacy/tool-ui/src/ComponentStatesMixin.ts +27 -0
  96. package/src/legacy/tool-ui/src/ContentColors.css +19 -0
  97. package/src/legacy/tool-ui/src/ContentEdit.css +1065 -0
  98. package/src/legacy/tool-ui/src/ContentEditDrawer.css +274 -0
  99. package/src/legacy/tool-ui/src/ContentEditDrawer.ts +217 -0
  100. package/src/legacy/tool-ui/src/ContentEditPanel.ts +188 -0
  101. package/src/legacy/tool-ui/src/ContentEditSites.ts +101 -0
  102. package/src/legacy/tool-ui/src/ContentForm.css +87 -0
  103. package/src/legacy/tool-ui/src/ContentForm.ts +104 -0
  104. package/src/legacy/tool-ui/src/ContentInputGroup.css +678 -0
  105. package/src/legacy/tool-ui/src/ContentInputGroup.ts +86 -0
  106. package/src/legacy/tool-ui/src/ContentReporting.css +54 -0
  107. package/src/legacy/tool-ui/src/ContentSelector.css +215 -0
  108. package/src/legacy/tool-ui/src/ContentSelectorActions.ts +428 -0
  109. package/src/legacy/tool-ui/src/ContentSummary.css +176 -0
  110. package/src/legacy/tool-ui/src/ContentSummary.ts +223 -0
  111. package/src/legacy/tool-ui/src/ContentTemplatesWidget.css +54 -0
  112. package/src/legacy/tool-ui/src/ContentTools.css +109 -0
  113. package/src/legacy/tool-ui/src/ContentType.css +27 -0
  114. package/src/legacy/tool-ui/src/Conversation.css +325 -0
  115. package/src/legacy/tool-ui/src/Conversation.ts +836 -0
  116. package/src/legacy/tool-ui/src/CopySiteWidget.css +8 -0
  117. package/src/legacy/tool-ui/src/CopyToClipboard/README.md +23 -0
  118. package/src/legacy/tool-ui/src/CopyToClipboard/index.ts +54 -0
  119. package/src/legacy/tool-ui/src/CopyToClipboard.css +10 -0
  120. package/src/legacy/tool-ui/src/Crosslinker.css +486 -0
  121. package/src/legacy/tool-ui/src/Crosslinker.ts +46 -0
  122. package/src/legacy/tool-ui/src/CustomKeyboard.css +25 -0
  123. package/src/legacy/tool-ui/src/DashboardRow.css +54 -0
  124. package/src/legacy/tool-ui/src/DashboardWidget.css +444 -0
  125. package/src/legacy/tool-ui/src/DateStringField.css +78 -0
  126. package/src/legacy/tool-ui/src/DateTimeInput.css +11 -0
  127. package/src/legacy/tool-ui/src/Dialog.css +441 -0
  128. package/src/legacy/tool-ui/src/Diff.css +280 -0
  129. package/src/legacy/tool-ui/src/Diff.ts +89 -0
  130. package/src/legacy/tool-ui/src/Downloads.css +7 -0
  131. package/src/legacy/tool-ui/src/Dropdown.css +63 -0
  132. package/src/legacy/tool-ui/src/EditFieldUpdateCache.ts +129 -0
  133. package/src/legacy/tool-ui/src/EmbeddedInputGroup/README.md +3 -0
  134. package/src/legacy/tool-ui/src/EmbeddedInputGroup/index.ts +189 -0
  135. package/src/legacy/tool-ui/src/EmbeddedInputGroup.css +75 -0
  136. package/src/legacy/tool-ui/src/Enhancement.css +135 -0
  137. package/src/legacy/tool-ui/src/Entry.ts +875 -0
  138. package/src/legacy/tool-ui/src/EventEmitterMixin.ts +71 -0
  139. package/src/legacy/tool-ui/src/ExternalCalendars.ts +34 -0
  140. package/src/legacy/tool-ui/src/ExternalItemObjects.ts +36 -0
  141. package/src/legacy/tool-ui/src/FileInput.css +150 -0
  142. package/src/legacy/tool-ui/src/FocusRegions.ts +530 -0
  143. package/src/legacy/tool-ui/src/FormFilter.css +93 -0
  144. package/src/legacy/tool-ui/src/FullscreenView.css +152 -0
  145. package/src/legacy/tool-ui/src/GCA.css +9 -0
  146. package/src/legacy/tool-ui/src/Global.d.ts +219 -0
  147. package/src/legacy/tool-ui/src/GraphQL.css +74 -0
  148. package/src/legacy/tool-ui/src/GraphQLApis.css +4 -0
  149. package/src/legacy/tool-ui/src/Guide.css +193 -0
  150. package/src/legacy/tool-ui/src/GuideField.css +25 -0
  151. package/src/legacy/tool-ui/src/Hierarchy.css +68 -0
  152. package/src/legacy/tool-ui/src/Icon/index.css +11 -0
  153. package/src/legacy/tool-ui/src/Icon/index.ts +69 -0
  154. package/src/legacy/tool-ui/src/ImageEditor.css +522 -0
  155. package/src/legacy/tool-ui/src/ImageRecognition.css +11 -0
  156. package/src/legacy/tool-ui/src/Incompatible.css +42 -0
  157. package/src/legacy/tool-ui/src/InputRow.css +26 -0
  158. package/src/legacy/tool-ui/src/Label.css +33 -0
  159. package/src/legacy/tool-ui/src/LabeledCheckbox.css +13 -0
  160. package/src/legacy/tool-ui/src/Link.css +4 -0
  161. package/src/legacy/tool-ui/src/LinkCarousel.css +77 -0
  162. package/src/legacy/tool-ui/src/LinkList.css +53 -0
  163. package/src/legacy/tool-ui/src/LinkTable.css +105 -0
  164. package/src/legacy/tool-ui/src/ListManager.css +27 -0
  165. package/src/legacy/tool-ui/src/LiveBlog.css +290 -0
  166. package/src/legacy/tool-ui/src/LiveBlog.ts +47 -0
  167. package/src/legacy/tool-ui/src/Loader.svg +16 -0
  168. package/src/legacy/tool-ui/src/LocationMap.css +25 -0
  169. package/src/legacy/tool-ui/src/LookingGlass.css +31 -0
  170. package/src/legacy/tool-ui/src/LucideDynamicLoader.ts +31 -0
  171. package/src/legacy/tool-ui/src/MailPublishing.css +32 -0
  172. package/src/legacy/tool-ui/src/Mention.css +34 -0
  173. package/src/legacy/tool-ui/src/MenuView.css +659 -0
  174. package/src/legacy/tool-ui/src/Message.css +239 -0
  175. package/src/legacy/tool-ui/src/Month.css +65 -0
  176. package/src/legacy/tool-ui/src/NavRail/index.css +47 -0
  177. package/src/legacy/tool-ui/src/NavRail/index.ts +40 -0
  178. package/src/legacy/tool-ui/src/Notification.css +197 -0
  179. package/src/legacy/tool-ui/src/Notifications.ts +139 -0
  180. package/src/legacy/tool-ui/src/Page.css +884 -0
  181. package/src/legacy/tool-ui/src/PageNav.ts +108 -0
  182. package/src/legacy/tool-ui/src/PaginatedResult.css +20 -0
  183. package/src/legacy/tool-ui/src/Pagination.css +119 -0
  184. package/src/legacy/tool-ui/src/PastePopup.css +11 -0
  185. package/src/legacy/tool-ui/src/PlaceholderEditableMixin.ts +86 -0
  186. package/src/legacy/tool-ui/src/Popup.css +413 -0
  187. package/src/legacy/tool-ui/src/PostPublish.ts +12 -0
  188. package/src/legacy/tool-ui/src/PrePublish.ts +63 -0
  189. package/src/legacy/tool-ui/src/Preview.css +134 -0
  190. package/src/legacy/tool-ui/src/PrivilegeAccessWidget.css +27 -0
  191. package/src/legacy/tool-ui/src/ProfileDropdown.css +95 -0
  192. package/src/legacy/tool-ui/src/ProseMirror-table.css +159 -0
  193. package/src/legacy/tool-ui/src/ProseMirror.css +180 -0
  194. package/src/legacy/tool-ui/src/ProseMirrorContainer.css +40 -0
  195. package/src/legacy/tool-ui/src/ProseMirrorEnhancementMenu.css +68 -0
  196. package/src/legacy/tool-ui/src/ProseMirrorFindReplace.css +132 -0
  197. package/src/legacy/tool-ui/src/QueryField.css +77 -0
  198. package/src/legacy/tool-ui/src/README.md +235 -0
  199. package/src/legacy/tool-ui/src/RadialProgressBar.css +11 -0
  200. package/src/legacy/tool-ui/src/RadialProgressBar.ts +73 -0
  201. package/src/legacy/tool-ui/src/Radio.css +22 -0
  202. package/src/legacy/tool-ui/src/RepeatableContentInputGroup.css +470 -0
  203. package/src/legacy/tool-ui/src/RepeatableContentSelector.css +177 -0
  204. package/src/legacy/tool-ui/src/RepeatableTextInput.css +71 -0
  205. package/src/legacy/tool-ui/src/Revision.css +70 -0
  206. package/src/legacy/tool-ui/src/Revisions.css +292 -0
  207. package/src/legacy/tool-ui/src/RichText.css +15 -0
  208. package/src/legacy/tool-ui/src/SearchControlsToggle.ts +90 -0
  209. package/src/legacy/tool-ui/src/SearchFields.css +109 -0
  210. package/src/legacy/tool-ui/src/SearchInput.css +27 -0
  211. package/src/legacy/tool-ui/src/SearchResult.css +523 -0
  212. package/src/legacy/tool-ui/src/SearchWidget.css +441 -0
  213. package/src/legacy/tool-ui/src/SearchWidget.ts +154 -0
  214. package/src/legacy/tool-ui/src/SearchWidgetAdvanced.css +109 -0
  215. package/src/legacy/tool-ui/src/SharePreview.css +71 -0
  216. package/src/legacy/tool-ui/src/SkipLinks.css +23 -0
  217. package/src/legacy/tool-ui/src/SkipLinks.ts +112 -0
  218. package/src/legacy/tool-ui/src/SlackAuthentication.css +9 -0
  219. package/src/legacy/tool-ui/src/Sortable.css +50 -0
  220. package/src/legacy/tool-ui/src/Spellcheck.css +34 -0
  221. package/src/legacy/tool-ui/src/StyleEmbeddedContent.css +62 -0
  222. package/src/legacy/tool-ui/src/Suggestions.css +53 -0
  223. package/src/legacy/tool-ui/src/Suggestions.ts +209 -0
  224. package/src/legacy/tool-ui/src/TabBar.css +174 -0
  225. package/src/legacy/tool-ui/src/TabContainer.css +40 -0
  226. package/src/legacy/tool-ui/src/Table.css +107 -0
  227. package/src/legacy/tool-ui/src/TableSizerPopup.css +42 -0
  228. package/src/legacy/tool-ui/src/Taxonomy.css +60 -0
  229. package/src/legacy/tool-ui/src/TextInput.css +40 -0
  230. package/src/legacy/tool-ui/src/Theme.css +64 -0
  231. package/src/legacy/tool-ui/src/ThemeBundleEditor.css +93 -0
  232. package/src/legacy/tool-ui/src/TimedContent.css +74 -0
  233. package/src/legacy/tool-ui/src/Toggleable/README.md +90 -0
  234. package/src/legacy/tool-ui/src/Toggleable/index.ts +230 -0
  235. package/src/legacy/tool-ui/src/Translation.css +115 -0
  236. package/src/legacy/tool-ui/src/Translation.ts +20 -0
  237. package/src/legacy/tool-ui/src/TreeList.css +45 -0
  238. package/src/legacy/tool-ui/src/Types.ts +44 -0
  239. package/src/legacy/tool-ui/src/Utilities.css +7 -0
  240. package/src/legacy/tool-ui/src/ViewMirror.css +7 -0
  241. package/src/legacy/tool-ui/src/ViewPreview.css +59 -0
  242. package/src/legacy/tool-ui/src/ViewWatchers.css +69 -0
  243. package/src/legacy/tool-ui/src/Viewers.css +21 -0
  244. package/src/legacy/tool-ui/src/Week.css +23 -0
  245. package/src/legacy/tool-ui/src/Widget.css +622 -0
  246. package/src/legacy/tool-ui/src/WorkStreams.css +97 -0
  247. package/src/legacy/tool-ui/src/Workflow.css +100 -0
  248. package/src/legacy/tool-ui/src/Workstreams.ts +52 -0
  249. package/src/legacy/tool-ui/src/WrappingMixin.ts +77 -0
  250. package/src/legacy/tool-ui/src/additional-tailwind-classes.txt +205 -0
  251. package/src/legacy/tool-ui/src/bsp-tracking.d.ts +27 -0
  252. package/src/legacy/tool-ui/src/dialog/README.md +83 -0
  253. package/src/legacy/tool-ui/src/dialog/index.ts +465 -0
  254. package/src/legacy/tool-ui/src/dom/README.md +63 -0
  255. package/src/legacy/tool-ui/src/dom/Tether.ts +135 -0
  256. package/src/legacy/tool-ui/src/dom/TetherLayout.ts +149 -0
  257. package/src/legacy/tool-ui/src/dom/aria.ts +123 -0
  258. package/src/legacy/tool-ui/src/dom/closest.ts +5 -0
  259. package/src/legacy/tool-ui/src/dom/create.ts +46 -0
  260. package/src/legacy/tool-ui/src/dom/find.ts +5 -0
  261. package/src/legacy/tool-ui/src/dom/findAll.ts +5 -0
  262. package/src/legacy/tool-ui/src/dom/focusable.ts +29 -0
  263. package/src/legacy/tool-ui/src/dom/ifClick.ts +18 -0
  264. package/src/legacy/tool-ui/src/dom/ifMatches.ts +17 -0
  265. package/src/legacy/tool-ui/src/dom/ifUnmodified.ts +16 -0
  266. package/src/legacy/tool-ui/src/dom/insertBefore.ts +4 -0
  267. package/src/legacy/tool-ui/src/dom/insertFirst.ts +4 -0
  268. package/src/legacy/tool-ui/src/dom/insertLast.ts +4 -0
  269. package/src/legacy/tool-ui/src/dom/keyboard.ts +176 -0
  270. package/src/legacy/tool-ui/src/dom/onFind.ts +277 -0
  271. package/src/legacy/tool-ui/src/dom/onFindOnce.ts +31 -0
  272. package/src/legacy/tool-ui/src/dom/onRTEReady.ts +105 -0
  273. package/src/legacy/tool-ui/src/dom/onRemove.ts +27 -0
  274. package/src/legacy/tool-ui/src/dom/onVisible.ts +29 -0
  275. package/src/legacy/tool-ui/src/dom/popupMenu.d.ts +6 -0
  276. package/src/legacy/tool-ui/src/dom/popupMenu.js +282 -0
  277. package/src/legacy/tool-ui/src/dom/previousUntil.ts +22 -0
  278. package/src/legacy/tool-ui/src/dropdown/README.md +9 -0
  279. package/src/legacy/tool-ui/src/dropdown/index.ts +105 -0
  280. package/src/legacy/tool-ui/src/form/CodeInput/CodeMirror.less +168 -0
  281. package/src/legacy/tool-ui/src/form/CodeInput/CodeMirror.ts +15 -0
  282. package/src/legacy/tool-ui/src/form/CodeInput/index.ts +86 -0
  283. package/src/legacy/tool-ui/src/form/FormFilter/README.md +31 -0
  284. package/src/legacy/tool-ui/src/form/FormFilter/index.ts +340 -0
  285. package/src/legacy/tool-ui/src/form/Input/index.less +43 -0
  286. package/src/legacy/tool-ui/src/form/Input/index.ts +92 -0
  287. package/src/legacy/tool-ui/src/form/SearchInput/README.md +23 -0
  288. package/src/legacy/tool-ui/src/form/SearchInput/index.ts +89 -0
  289. package/src/legacy/tool-ui/src/form/TextAreaInput/index.less +11 -0
  290. package/src/legacy/tool-ui/src/form/TextAreaInput/index.ts +36 -0
  291. package/src/legacy/tool-ui/src/graphql/GraphQL.ts +49 -0
  292. package/src/legacy/tool-ui/src/graphql/GraphQLPreview.ts +23 -0
  293. package/src/legacy/tool-ui/src/main/resources/settings.properties +1 -0
  294. package/src/legacy/tool-ui/src/main/webapp/WEB-INF/web.xml +81 -0
  295. package/src/legacy/tool-ui/src/main/webapp/script/bsp-uploader.js +170 -0
  296. package/src/legacy/tool-ui/src/main/webapp/script/bsp-utils.js +393 -0
  297. package/src/legacy/tool-ui/src/main/webapp/script/content/layout-element.js +141 -0
  298. package/src/legacy/tool-ui/src/main/webapp/script/input/query.js +78 -0
  299. package/src/legacy/tool-ui/src/main/webapp/script/input/workflow.js +718 -0
  300. package/src/legacy/tool-ui/src/main/webapp/script/jquery.extra.js +633 -0
  301. package/src/legacy/tool-ui/src/main/webapp/script/v3/Dropbox.js +18 -0
  302. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdate.js +406 -0
  303. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdateCache.js +1 -0
  304. package/src/legacy/tool-ui/src/main/webapp/script/v3/Notification.js +151 -0
  305. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/edit.js +194 -0
  306. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/state.js +785 -0
  307. package/src/legacy/tool-ui/src/main/webapp/script/v3/csrf.js +35 -0
  308. package/src/legacy/tool-ui/src/main/webapp/script/v3/dashboard.js +65 -0
  309. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/dataTransfer.js +129 -0
  310. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/file.js +433 -0
  311. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/object.js +743 -0
  312. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/read-only.js +17 -0
  313. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.frame.js +478 -0
  314. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.repeatable.js +2406 -0
  315. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.d.ts +2 -0
  316. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.js +446 -0
  317. package/src/legacy/tool-ui/src/main/webapp/script/v3/search-filters.js +62 -0
  318. package/src/legacy/tool-ui/src/main/webapp/script/v3/search.js +53 -0
  319. package/src/legacy/tool-ui/src/main/webapp/script/v3.js +1049 -0
  320. package/src/legacy/tool-ui/src/main/webapp/style/v3/ExternalPreviewFrame.less +6 -0
  321. package/src/legacy/tool-ui/src/main/webapp/style/v3/WidgetSearchAdvancedQuery.less +24 -0
  322. package/src/legacy/tool-ui/src/main/webapp/style/v3/element.less +11 -0
  323. package/src/legacy/tool-ui/src/main/webapp/style/v3/icon/ajax-loader.gif +0 -0
  324. package/src/legacy/tool-ui/src/main/webapp/style/v3/index.less +98 -0
  325. package/src/legacy/tool-ui/src/main/webapp/style/v3/repeatable.less +89 -0
  326. package/src/legacy/tool-ui/src/main/webapp/style/v3/variables.less +53 -0
  327. package/src/legacy/tool-ui/src/main/webapp/v4/ActionBar.less +44 -0
  328. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.js +16 -0
  329. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.less +253 -0
  330. package/src/legacy/tool-ui/src/main/webapp/v4/AdobeStock.less +20 -0
  331. package/src/legacy/tool-ui/src/main/webapp/v4/Apis.less +43 -0
  332. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.js +84 -0
  333. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.less +36 -0
  334. package/src/legacy/tool-ui/src/main/webapp/v4/AutoSubmit.js +68 -0
  335. package/src/legacy/tool-ui/src/main/webapp/v4/Avatar.less +30 -0
  336. package/src/legacy/tool-ui/src/main/webapp/v4/BackgroundTasks.less +52 -0
  337. package/src/legacy/tool-ui/src/main/webapp/v4/Badge.less +10 -0
  338. package/src/legacy/tool-ui/src/main/webapp/v4/Board.less +311 -0
  339. package/src/legacy/tool-ui/src/main/webapp/v4/Bridge.js +536 -0
  340. package/src/legacy/tool-ui/src/main/webapp/v4/BulletedList.less +17 -0
  341. package/src/legacy/tool-ui/src/main/webapp/v4/Button.less +105 -0
  342. package/src/legacy/tool-ui/src/main/webapp/v4/CIGCluster.less +55 -0
  343. package/src/legacy/tool-ui/src/main/webapp/v4/Card.less +53 -0
  344. package/src/legacy/tool-ui/src/main/webapp/v4/Checkbox.less +99 -0
  345. package/src/legacy/tool-ui/src/main/webapp/v4/CheckboxInput.js +22 -0
  346. package/src/legacy/tool-ui/src/main/webapp/v4/Collections.less +49 -0
  347. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInput.js +5 -0
  348. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.js +107 -0
  349. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.less +319 -0
  350. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.js +1491 -0
  351. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.less +403 -0
  352. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.js +29 -0
  353. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.less +73 -0
  354. package/src/legacy/tool-ui/src/main/webapp/v4/Compat.less +7 -0
  355. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.js +2427 -0
  356. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.less +1512 -0
  357. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEditDrawer.less +329 -0
  358. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEditSites.less +5 -0
  359. package/src/legacy/tool-ui/src/main/webapp/v4/ContentForm.less +174 -0
  360. package/src/legacy/tool-ui/src/main/webapp/v4/ContentInputGroup.less +669 -0
  361. package/src/legacy/tool-ui/src/main/webapp/v4/ContentLock.js +470 -0
  362. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.js +32 -0
  363. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.less +39 -0
  364. package/src/legacy/tool-ui/src/main/webapp/v4/ContentSelector.less +268 -0
  365. package/src/legacy/tool-ui/src/main/webapp/v4/ContentSummary.less +238 -0
  366. package/src/legacy/tool-ui/src/main/webapp/v4/ContentTools.less +73 -0
  367. package/src/legacy/tool-ui/src/main/webapp/v4/ContentType.less +24 -0
  368. package/src/legacy/tool-ui/src/main/webapp/v4/CopyToClipboard.less +20 -0
  369. package/src/legacy/tool-ui/src/main/webapp/v4/DashboardRow.less +40 -0
  370. package/src/legacy/tool-ui/src/main/webapp/v4/DashboardWidget.less +193 -0
  371. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.js +31 -0
  372. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.less +52 -0
  373. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.js +485 -0
  374. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.less +148 -0
  375. package/src/legacy/tool-ui/src/main/webapp/v4/DateTimeInput.less +58 -0
  376. package/src/legacy/tool-ui/src/main/webapp/v4/Diff.less +322 -0
  377. package/src/legacy/tool-ui/src/main/webapp/v4/Downloads.css +11 -0
  378. package/src/legacy/tool-ui/src/main/webapp/v4/Draggable.less +42 -0
  379. package/src/legacy/tool-ui/src/main/webapp/v4/Dropdown.less +76 -0
  380. package/src/legacy/tool-ui/src/main/webapp/v4/EmbeddedInputGroup.less +141 -0
  381. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.js +264 -0
  382. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.less +157 -0
  383. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemAuth.js +16 -0
  384. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemImport.less +3 -0
  385. package/src/legacy/tool-ui/src/main/webapp/v4/FileInput.less +194 -0
  386. package/src/legacy/tool-ui/src/main/webapp/v4/Form.js +31 -0
  387. package/src/legacy/tool-ui/src/main/webapp/v4/FormFilter.less +189 -0
  388. package/src/legacy/tool-ui/src/main/webapp/v4/Frame.less +26 -0
  389. package/src/legacy/tool-ui/src/main/webapp/v4/GraphQLApis.less +4 -0
  390. package/src/legacy/tool-ui/src/main/webapp/v4/Grid.less +48 -0
  391. package/src/legacy/tool-ui/src/main/webapp/v4/Guide.less +209 -0
  392. package/src/legacy/tool-ui/src/main/webapp/v4/GuideField.less +108 -0
  393. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.js +100 -0
  394. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.less +89 -0
  395. package/src/legacy/tool-ui/src/main/webapp/v4/Highlight.less +5 -0
  396. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.less +53 -0
  397. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.ts +49 -0
  398. package/src/legacy/tool-ui/src/main/webapp/v4/IconButton.less +111 -0
  399. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.js +2403 -0
  400. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.less +922 -0
  401. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditorBundle.js +5 -0
  402. package/src/legacy/tool-ui/src/main/webapp/v4/Input.less +15 -0
  403. package/src/legacy/tool-ui/src/main/webapp/v4/InputRow.less +35 -0
  404. package/src/legacy/tool-ui/src/main/webapp/v4/Label.less +12 -0
  405. package/src/legacy/tool-ui/src/main/webapp/v4/LabeledCheckbox.less +35 -0
  406. package/src/legacy/tool-ui/src/main/webapp/v4/Link.less +93 -0
  407. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.js +40 -0
  408. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.less +143 -0
  409. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.js +14 -0
  410. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.less +150 -0
  411. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.js +123 -0
  412. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.less +112 -0
  413. package/src/legacy/tool-ui/src/main/webapp/v4/Location.js +19 -0
  414. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.js +148 -0
  415. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.less +62 -0
  416. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.js +24 -0
  417. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.less +30 -0
  418. package/src/legacy/tool-ui/src/main/webapp/v4/Message.js +14 -0
  419. package/src/legacy/tool-ui/src/main/webapp/v4/Message.less +189 -0
  420. package/src/legacy/tool-ui/src/main/webapp/v4/Month.less +102 -0
  421. package/src/legacy/tool-ui/src/main/webapp/v4/Notification.less +278 -0
  422. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.js +32 -0
  423. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.less +21 -0
  424. package/src/legacy/tool-ui/src/main/webapp/v4/NumberedList.less +17 -0
  425. package/src/legacy/tool-ui/src/main/webapp/v4/Page.js +890 -0
  426. package/src/legacy/tool-ui/src/main/webapp/v4/Page.less +922 -0
  427. package/src/legacy/tool-ui/src/main/webapp/v4/PaginatedResult.less +89 -0
  428. package/src/legacy/tool-ui/src/main/webapp/v4/Pagination.less +80 -0
  429. package/src/legacy/tool-ui/src/main/webapp/v4/Popup.less +415 -0
  430. package/src/legacy/tool-ui/src/main/webapp/v4/PrePublish.less +5 -0
  431. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.js +758 -0
  432. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.less +495 -0
  433. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewEditor.js +86 -0
  434. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewOverlay.js +1005 -0
  435. package/src/legacy/tool-ui/src/main/webapp/v4/ProfileDropdown.less +66 -0
  436. package/src/legacy/tool-ui/src/main/webapp/v4/PubSub.js +47 -0
  437. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.js +211 -0
  438. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.less +147 -0
  439. package/src/legacy/tool-ui/src/main/webapp/v4/RadialProgressBar.less +20 -0
  440. package/src/legacy/tool-ui/src/main/webapp/v4/RegionMap.js +215 -0
  441. package/src/legacy/tool-ui/src/main/webapp/v4/Repeatable.less +102 -0
  442. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.js +160 -0
  443. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.less +731 -0
  444. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentSelector.less +296 -0
  445. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableTextInput.less +156 -0
  446. package/src/legacy/tool-ui/src/main/webapp/v4/Reset.less +373 -0
  447. package/src/legacy/tool-ui/src/main/webapp/v4/Revision.less +50 -0
  448. package/src/legacy/tool-ui/src/main/webapp/v4/RichText.less +32 -0
  449. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.js +154 -0
  450. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.less +197 -0
  451. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.js +281 -0
  452. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.less +403 -0
  453. package/src/legacy/tool-ui/src/main/webapp/v4/SearchInput.less +65 -0
  454. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.js +255 -0
  455. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.less +479 -0
  456. package/src/legacy/tool-ui/src/main/webapp/v4/SearchWidget.less +697 -0
  457. package/src/legacy/tool-ui/src/main/webapp/v4/SearchWidgetAdvanced.less +115 -0
  458. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.js +56 -0
  459. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.less +95 -0
  460. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.js +874 -0
  461. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.less +242 -0
  462. package/src/legacy/tool-ui/src/main/webapp/v4/StandardForm.less +12 -0
  463. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.js +100 -0
  464. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.less +131 -0
  465. package/src/legacy/tool-ui/src/main/webapp/v4/StyleguidePresets.js +357 -0
  466. package/src/legacy/tool-ui/src/main/webapp/v4/Suggestions.less +121 -0
  467. package/src/legacy/tool-ui/src/main/webapp/v4/TabBar.less +258 -0
  468. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.js +360 -0
  469. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.less +26 -0
  470. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.js +27 -0
  471. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.less +84 -0
  472. package/src/legacy/tool-ui/src/main/webapp/v4/Text.less +41 -0
  473. package/src/legacy/tool-ui/src/main/webapp/v4/TextInput.less +32 -0
  474. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.js +224 -0
  475. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.less +106 -0
  476. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.js +147 -0
  477. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.less +202 -0
  478. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContentBundle.js +8 -0
  479. package/src/legacy/tool-ui/src/main/webapp/v4/TreeList.less +93 -0
  480. package/src/legacy/tool-ui/src/main/webapp/v4/Utils.css +14 -0
  481. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.js +2417 -0
  482. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.less +737 -0
  483. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditorBundle.js +8 -0
  484. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.js +52 -0
  485. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.less +42 -0
  486. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.d.ts +13 -0
  487. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.js +177 -0
  488. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.less +147 -0
  489. package/src/legacy/tool-ui/src/main/webapp/v4/Viewers.less +70 -0
  490. package/src/legacy/tool-ui/src/main/webapp/v4/Week.less +32 -0
  491. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.js +90 -0
  492. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.less +224 -0
  493. package/src/legacy/tool-ui/src/main/webapp/v4/Workflow.less +153 -0
  494. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/fileMock.js +1 -0
  495. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/styleMock.js +1 -0
  496. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/textArea.mock.js +20 -0
  497. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/globals.js +770 -0
  498. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/ProseMirror.test.js +16 -0
  499. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/index.html +54 -0
  500. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/CommentManager.test.js +29 -0
  501. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/index.html +35 -0
  502. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/CustomKeyboard.js +42 -0
  503. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/index.html +37 -0
  504. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/EnhancementManager.test.js +288 -0
  505. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/block.html +38 -0
  506. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/inline.html +38 -0
  507. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/no-popups.html +38 -0
  508. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/ListManager.js +257 -0
  509. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/index.html +38 -0
  510. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/hierarchal.html +33 -0
  511. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/index.html +33 -0
  512. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/menubar.test.js +195 -0
  513. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/small.html +34 -0
  514. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/tags.html +34 -0
  515. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/PlaceholderManager.test.js +134 -0
  516. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-editable-placeholder.html +32 -0
  517. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-text.html +34 -0
  518. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/index.html +31 -0
  519. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/TableManager.test.js +63 -0
  520. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/existing.html +48 -0
  521. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/TrackManager.test.js +291 -0
  522. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/existing.html +39 -0
  523. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/insert.html +37 -0
  524. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/Sortable.test.js +105 -0
  525. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/ProseMirror.test.js +41 -0
  526. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/codemirror-shim.test.js +72 -0
  527. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/collab_manager/CollabManager.test.js +46 -0
  528. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/enhancement_manager/EnhancementManager.test.js +84 -0
  529. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/list_manager/ListManager.test.js +54 -0
  530. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/menubar/menubar.test.js +183 -0
  531. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/spellcheck/SpellCheck.test.js +45 -0
  532. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/BSSerializer.test.js +346 -0
  533. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/menuItemsBuilder.test.js +226 -0
  534. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/utilities.test.js +118 -0
  535. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/Appetizeio.js +5 -0
  536. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.js +113 -0
  537. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.less +77 -0
  538. package/src/legacy/tool-ui/src/main/webapp/v4/bsp-rings-bg.svg +9 -0
  539. package/src/legacy/tool-ui/src/main/webapp/v4/compat/Fetch.js +16 -0
  540. package/src/legacy/tool-ui/src/main/webapp/v4/compat/jquery.js +32 -0
  541. package/src/legacy/tool-ui/src/main/webapp/v4/compat/requirejs.js +13 -0
  542. package/src/legacy/tool-ui/src/main/webapp/v4/dom/Tether.js +1 -0
  543. package/src/legacy/tool-ui/src/main/webapp/v4/dom/TetherLayout.js +1 -0
  544. package/src/legacy/tool-ui/src/main/webapp/v4/dom/closest.js +1 -0
  545. package/src/legacy/tool-ui/src/main/webapp/v4/dom/create.js +1 -0
  546. package/src/legacy/tool-ui/src/main/webapp/v4/dom/find.js +1 -0
  547. package/src/legacy/tool-ui/src/main/webapp/v4/dom/findAll.js +1 -0
  548. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifClick.js +1 -0
  549. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifMatches.js +1 -0
  550. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifUnmodified.js +1 -0
  551. package/src/legacy/tool-ui/src/main/webapp/v4/dom/index.js +5 -0
  552. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertBefore.js +1 -0
  553. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertFirst.js +1 -0
  554. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertLast.js +1 -0
  555. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFind.js +1 -0
  556. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFindOnce.js +1 -0
  557. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRTEReady.js +1 -0
  558. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRemove.js +1 -0
  559. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onVisible.js +1 -0
  560. package/src/legacy/tool-ui/src/main/webapp/v4/dom/previousUntil.js +1 -0
  561. package/src/legacy/tool-ui/src/main/webapp/v4/dom/resolveIconCompat.js +40 -0
  562. package/src/legacy/tool-ui/src/main/webapp/v4/graphql/GraphQL.less +171 -0
  563. package/src/legacy/tool-ui/src/main/webapp/v4/mail-publishing/MailPublishing.less +38 -0
  564. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/Socket.js +1 -0
  565. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/index.js +1 -0
  566. package/src/legacy/tool-ui/src/main/webapp/v4/rte/Mention.less +35 -0
  567. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.js +909 -0
  568. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.less +759 -0
  569. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirrorContainer.less +29 -0
  570. package/src/legacy/tool-ui/src/main/webapp/v4/rte/README.md +68 -0
  571. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.d.ts +8 -0
  572. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.js +274 -0
  573. package/src/legacy/tool-ui/src/main/webapp/v4/rte/collab-workflow.jpeg +0 -0
  574. package/src/legacy/tool-ui/src/main/webapp/v4/rte/interchangeable.ts +250 -0
  575. package/src/legacy/tool-ui/src/main/webapp/v4/rte/mention.js +90 -0
  576. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/PluginProvider.js +124 -0
  577. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/README.md +46 -0
  578. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/AIInlineManager.ts +124 -0
  579. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInline.less +244 -0
  580. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInlineView.ts +1019 -0
  581. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_manager/AiManager.ts +199 -0
  582. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/CollabManager.js +339 -0
  583. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.js +96 -0
  584. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.less +11 -0
  585. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/CollabEditing.less +18 -0
  586. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/comment_manager/CommentManager.js +348 -0
  587. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.js +110 -0
  588. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.less +21 -0
  589. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/README.md +29 -0
  590. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/EnhancementManager.js +428 -0
  591. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/README.md +63 -0
  592. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/commands.js +690 -0
  593. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/constants.js +12 -0
  594. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/enhancement-creation.jpeg +0 -0
  595. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/index.js +15 -0
  596. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/rte-flow.jpeg +0 -0
  597. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ActionButtonView.js +86 -0
  598. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/BlockSubmenuView.js +60 -0
  599. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/Enhancement.less +67 -0
  600. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/EnhancementView.js +208 -0
  601. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.js +102 -0
  602. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.less +45 -0
  603. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ProsemirrorEnhancementMenu.less +113 -0
  604. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/SubmenuView.js +365 -0
  605. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/FindReplaceManager.js +239 -0
  606. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/FindView.js +604 -0
  607. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/ProseMirrorFindReplace.less +174 -0
  608. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/FullscreenManager.js +57 -0
  609. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/README.md +26 -0
  610. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/commands.js +16 -0
  611. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/index.js +4 -0
  612. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.js +474 -0
  613. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.less +383 -0
  614. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/htmlEditorManager.js +66 -0
  615. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/views/HtmlEditorView.js +97 -0
  616. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.js +342 -0
  617. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.less +42 -0
  618. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/README.md +50 -0
  619. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/commands.js +207 -0
  620. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/constants.js +26 -0
  621. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/index.js +4 -0
  622. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/Menubar.js +485 -0
  623. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/README.md +40 -0
  624. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.js +842 -0
  625. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.less +821 -0
  626. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/PasteManager.js +368 -0
  627. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/views/PastePopup.less +5 -0
  628. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/placeholder_manager/PlaceHolderManager.js +128 -0
  629. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/README.md +13 -0
  630. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/RawTextManager.js +96 -0
  631. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/index.js +3 -0
  632. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-plugin.js +280 -0
  633. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-service.js +94 -0
  634. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck.less +73 -0
  635. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/TableManager.js +57 -0
  636. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/commands.js +97 -0
  637. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/ProseMirror-table.less +137 -0
  638. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerPopup.less +19 -0
  639. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerView.js +88 -0
  640. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableView.js +613 -0
  641. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/README.md +13 -0
  642. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/TrackManager.js +905 -0
  643. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/BSSerializer.js +819 -0
  644. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/README.md +80 -0
  645. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/commands.js +98 -0
  646. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.d.ts +84 -0
  647. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.js +87 -0
  648. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/index.js +13 -0
  649. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/keymapBuilder.js +223 -0
  650. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/menuItemsBuilder.js +559 -0
  651. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/schemaBuilder.js +1281 -0
  652. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.d.ts +4 -0
  653. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.js +359 -0
  654. package/src/legacy/tool-ui/src/main/webapp/v4/theme/ColorRotator.js +1 -0
  655. package/src/legacy/tool-ui/src/main/webapp/v4/theme/Theme.less +224 -0
  656. package/src/legacy/tool-ui/src/main/webapp/v4/translation/Translation.less +114 -0
  657. package/src/legacy/tool-ui/src/main/webapp/v4/util/debounce.js +1 -0
  658. package/src/legacy/tool-ui/src/main/webapp/v4/util/getComponentKey.js +1 -0
  659. package/src/legacy/tool-ui/src/main/webapp/v4/util/noise.js +1 -0
  660. package/src/legacy/tool-ui/src/main/webapp/v4/util/repaint.js +1 -0
  661. package/src/legacy/tool-ui/src/main/webapp/v4/util/storage.js +1 -0
  662. package/src/legacy/tool-ui/src/main/webapp/v4/util/throttle.js +1 -0
  663. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AnalyticsWidget.less +18 -0
  664. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.js +33 -0
  665. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.less +19 -0
  666. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.js +217 -0
  667. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.less +410 -0
  668. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskRelatedWidget.less +3 -0
  669. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentFilters.less +23 -0
  670. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.js +7 -0
  671. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.less +92 -0
  672. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.js +19 -0
  673. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.less +65 -0
  674. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkWorkflow.less +103 -0
  675. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.js +7 -0
  676. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.less +109 -0
  677. package/src/legacy/tool-ui/src/main/webapp/v4/widget/CalendarAccessOverview.less +26 -0
  678. package/src/legacy/tool-ui/src/main/webapp/v4/widget/CalendarEventSummary.less +15 -0
  679. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.js +13 -0
  680. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.less +3 -0
  681. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ContentColors.less +17 -0
  682. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ContentTemplatesWidget.less +123 -0
  683. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Conversation.less +537 -0
  684. package/src/legacy/tool-ui/src/main/webapp/v4/widget/CopySiteWidget.less +13 -0
  685. package/src/legacy/tool-ui/src/main/webapp/v4/widget/FormSubmission.less +3 -0
  686. package/src/legacy/tool-ui/src/main/webapp/v4/widget/LiveBlog.less +158 -0
  687. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.js +25 -0
  688. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.less +16 -0
  689. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.js +33 -0
  690. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.less +10 -0
  691. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Revisions.js +61 -0
  692. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Revisions.less +280 -0
  693. package/src/legacy/tool-ui/src/main/webapp/v4/widget/SavedSearch.less +13 -0
  694. package/src/legacy/tool-ui/src/main/webapp/v4/widget/SemRushDashboardWidget.less +6 -0
  695. package/src/legacy/tool-ui/src/main/webapp/v4/widget/SlackAuthentication.less +13 -0
  696. package/src/legacy/tool-ui/src/main/webapp/v4/widget/WorkStreams.less +39 -0
  697. package/src/legacy/tool-ui/src/platform.ts +25 -0
  698. package/src/legacy/tool-ui/src/rtc/Socket.ts +205 -0
  699. package/src/legacy/tool-ui/src/rtc/index.ts +276 -0
  700. package/src/legacy/tool-ui/src/table/README.md +3 -0
  701. package/src/legacy/tool-ui/src/table/index.ts +107 -0
  702. package/src/legacy/tool-ui/src/theme/ColorRotator.ts +32 -0
  703. package/src/legacy/tool-ui/src/theme/Theme.ts +516 -0
  704. package/src/legacy/tool-ui/src/theme/index.ts +7 -0
  705. package/src/legacy/tool-ui/src/util/README.md +42 -0
  706. package/src/legacy/tool-ui/src/util/debounce.ts +22 -0
  707. package/src/legacy/tool-ui/src/util/getComponentKey.ts +25 -0
  708. package/src/legacy/tool-ui/src/util/noise.ts +51 -0
  709. package/src/legacy/tool-ui/src/util/repaint.ts +17 -0
  710. package/src/legacy/tool-ui/src/util/storage.ts +21 -0
  711. package/src/legacy/tool-ui/src/util/string.ts +15 -0
  712. package/src/legacy/tool-ui/src/util/svg.ts +46 -0
  713. package/src/legacy/tool-ui/src/util/throttle.ts +37 -0
  714. package/src/legacy/tool-ui/src/util/transition.ts +5 -0
  715. package/src/legacy/tool-ui/src/v5.css +149 -0
  716. package/src/legacy/tool-ui/src/v5.ts +2059 -0
  717. package/src/legacy/tool-ui/src/widget/README.md +27 -0
  718. package/src/legacy/tool-ui/src/widget/index.ts +160 -0
  719. package/dist/storybook/assets/if-defined-C1_PRAyA.js +0 -1
@@ -0,0 +1,1491 @@
1
+ import create from './dom/create'
2
+ import find from './dom/find'
3
+ import findAll from './dom/findAll'
4
+ import ifClick from './dom/ifClick'
5
+ import Tether from './dom/Tether'
6
+ import Cookies from 'js.cookie'
7
+
8
+ let idIndex = 0
9
+ let current
10
+ const tooltips = window.BRIGHTSPOT?.ui?.tooltips
11
+
12
+ export default class ComboInput {
13
+ constructor(select, settings) {
14
+ this._select = select
15
+ this._reorderSelectOptions()
16
+ this._getOptionsIndex = 0
17
+ this._getOptionsUrl =
18
+ typeof settings.getOptionsUrl === 'function' && settings.getOptionsUrl
19
+ this._modifier = settings.modifier
20
+ this._duplicates = new Map()
21
+ this._createNewListItem = null
22
+ this._createNewList = null
23
+ this._fetchOnce = this._select.hasAttribute('data-fetch-once')
24
+ this._optionsLoaded = false
25
+
26
+ this._list = create('ul', {
27
+ id: '_cb' + idIndex++,
28
+ className: 'ComboInput-list',
29
+ 'aria-label': select.getAttribute('aria-label') || undefined,
30
+ role: 'listbox',
31
+ 'aria-multiselectable': select.hasAttribute('multiple') || undefined,
32
+
33
+ onclick: (e) => {
34
+ if (!e.target.getAttribute('data-create')) {
35
+ e.preventDefault()
36
+ e.stopPropagation()
37
+
38
+ const target = e.target.classList.contains('ComboInput-check')
39
+ ? e.target.parentElement
40
+ : e.target
41
+
42
+ if (target.classList.contains('ComboInput-option')) {
43
+ this.updateValue(
44
+ target.getAttribute('data-value'),
45
+ target.getAttribute('data-missing-option'),
46
+ )
47
+ }
48
+ }
49
+ },
50
+
51
+ onmouseover: (e) => {
52
+ const option = e.target.getAttribute('data-create')
53
+ ? e.target.closest('.ComboInput-option')
54
+ : e.target
55
+
56
+ if (option.classList.contains('ComboInput-option')) {
57
+ this._highlightOption(option, 0)
58
+ }
59
+ },
60
+ })
61
+
62
+ this._label = create('div', {
63
+ className: 'ComboInput-label',
64
+ dataset: {
65
+ placeholder:
66
+ select.getAttribute('data-placeholder') ||
67
+ select.getAttribute('placeholder') ||
68
+ '',
69
+ },
70
+ })
71
+
72
+ let searchWidgetFilter = select.closest('.SearchWidget-filter')
73
+ if (searchWidgetFilter) {
74
+ let missing = find(searchWidgetFilter, 'input[type="checkbox"]')
75
+ if (
76
+ missing &&
77
+ missing.closest('.SearchWidget-filter') === searchWidgetFilter
78
+ ) {
79
+ this._missing = missing
80
+ }
81
+ }
82
+
83
+ this.updateList()
84
+ const groups = findAll(this._list, '.ComboInput-heading')
85
+ for (let key = 0; key < groups.length; key++) {
86
+ if (groups[key].getAttribute('data-value')) {
87
+ this.updateSelection(groups[key])
88
+ }
89
+ }
90
+ this.updateLabel()
91
+
92
+ this._filter = create('input', {
93
+ type: 'text',
94
+ className: 'ComboInput-filter',
95
+ 'aria-autocomplete': 'list',
96
+ 'aria-controls': this._list.id,
97
+ placeholder: window.CONTENT_SELECT_PLACEHOLDER
98
+ ? window.CONTENT_SELECT_PLACEHOLDER
99
+ : 'Search',
100
+ oninput: this.filterList.bind(this),
101
+ })
102
+
103
+ this._container = create(
104
+ 'div',
105
+ {
106
+ id: select.id || undefined,
107
+ className: 'ComboInput',
108
+ tabIndex: select.tabIndex || 0,
109
+ role: 'combobox',
110
+ 'aria-label': select.getAttribute('aria-label') || undefined,
111
+ 'aria-haspopup': 'listbox',
112
+ 'aria-owns': this._list.id,
113
+ 'aria-expanded': 'false',
114
+ 'aria-required': select.getAttribute('aria-required') || undefined,
115
+
116
+ onclick: (e) => {
117
+ e.preventDefault()
118
+ this.toggleList()
119
+ },
120
+
121
+ onkeydown: (e) => {
122
+ // allows shiftKey + Tab events & checks for remaining keys in ifUnmodified
123
+ if (e.ctrlKey || e.altKey || e.metaKey) return
124
+ const activeOption = this._getActiveOption()
125
+ const isExpanded =
126
+ this._container.getAttribute('aria-expanded') === 'true'
127
+
128
+ switch (e.key) {
129
+ case 'Enter':
130
+ if (this._select.classList.contains('is-readOnly')) {
131
+ e.preventDefault()
132
+ e.stopPropagation()
133
+ return
134
+ }
135
+
136
+ if (!isExpanded) {
137
+ this.showList()
138
+ e.preventDefault()
139
+ return
140
+ }
141
+
142
+ if (activeOption) {
143
+ if (activeOption.classList.contains('nested')) {
144
+ e.preventDefault()
145
+ this.toggleCreateNewList()
146
+ return
147
+ } else if (
148
+ activeOption.dataset.sublist ||
149
+ activeOption.dataset.create
150
+ ) {
151
+ const createLink =
152
+ activeOption.querySelector('a.objectId-create')
153
+
154
+ if (createLink) {
155
+ createLink.click()
156
+ this.hideList()
157
+ }
158
+ } else {
159
+ this.updateValue(
160
+ activeOption.getAttribute('data-value'),
161
+ activeOption.getAttribute('data-missing-option'),
162
+ )
163
+ this.hideList()
164
+ }
165
+
166
+ if (!this._select.multiple) this._container.focus()
167
+ }
168
+
169
+ e.preventDefault()
170
+ e.stopPropagation()
171
+ return
172
+
173
+ case 'Escape':
174
+ if (this._container.matches('[aria-expanded="true"]')) {
175
+ this.hideList()
176
+ this._container.focus()
177
+ e.preventDefault()
178
+ e.stopPropagation()
179
+ }
180
+ return
181
+
182
+ case 'ArrowUp':
183
+ this.showList()
184
+ this._highlightOption(activeOption || this._list.firstChild, -1)
185
+ this.scrollList()
186
+ e.preventDefault()
187
+ e.stopPropagation()
188
+ return
189
+
190
+ case 'ArrowDown':
191
+ this.showList()
192
+ this._highlightOption(activeOption || this._list.lastChild, 1)
193
+ this.scrollList()
194
+ e.preventDefault()
195
+ e.stopPropagation()
196
+ return
197
+ case 'ArrowRight':
198
+ this.focusFavorite()
199
+ return
200
+
201
+ case 'Tab':
202
+ this.hideList()
203
+ return
204
+ }
205
+
206
+ if (this !== current && !e.shiftKey) {
207
+ this.showList()
208
+ }
209
+ },
210
+ },
211
+ this._label,
212
+ this._filter,
213
+ this._list,
214
+ create('span', { class: 'ComboInput-icon', 'aria-hidden': true }),
215
+ )
216
+
217
+ if (
218
+ !this._container.getAttribute('aria-label') ||
219
+ this._container.getAttribute('aria-label').toLowerCase() === 'type'
220
+ ) {
221
+ const parentEl =
222
+ select.closest('.CIG-small') || select.closest('.CIG-large')
223
+ if (parentEl) {
224
+ let sibling = parentEl.previousElementSibling
225
+ if (
226
+ sibling &&
227
+ !sibling.classList.contains('CIG-label') &&
228
+ sibling.classList.contains('CIG-note')
229
+ ) {
230
+ sibling = sibling.previousElementSibling
231
+ }
232
+
233
+ if (sibling && sibling.classList.contains('CIG-label')) {
234
+ const label = sibling.querySelector('label')
235
+ if (label) {
236
+ const labelText = label.innerText
237
+ if (labelText) {
238
+ this._container.setAttribute('aria-label', labelText)
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
244
+
245
+ select.removeAttribute('id')
246
+
247
+ if (this._select.multiple) {
248
+ this._container.classList.add('is-multiple')
249
+ this._container.setAttribute(
250
+ 'aria-label',
251
+ `${this._container.getAttribute('aria-label')}, ${
252
+ window?.BRIGHTSPOT?.ui?.tooltips?.combo?.multi
253
+ }`,
254
+ )
255
+ } else {
256
+ // Handles syncing with the underlying select for compatibility with v3 js
257
+ this._select.addEventListener('change', (event) => {
258
+ this.updateValue(event.target.value)
259
+ })
260
+ }
261
+
262
+ const observer = new MutationObserver((mutations) => {
263
+ let placeholderChanged
264
+
265
+ for (const mutation of mutations) {
266
+ for (const node of mutation.removedNodes) {
267
+ if (node === select) {
268
+ observer.disconnect()
269
+ return
270
+ }
271
+ }
272
+
273
+ if (
274
+ mutation.attributeName === 'data-placeholder' ||
275
+ mutation.attributeName === 'placeholder'
276
+ ) {
277
+ placeholderChanged = true
278
+ }
279
+ }
280
+
281
+ if (placeholderChanged) {
282
+ this._label.dataset.placeholder =
283
+ this._select.dataset.placeholder ||
284
+ this._select.getAttribute('placeholder')
285
+ }
286
+
287
+ if (this._select.value && this._missing) {
288
+ this._missing.checked = false
289
+ this._missing.dispatchEvent(
290
+ new CustomEvent('change', { bubbles: true }),
291
+ )
292
+ }
293
+ this.updateList()
294
+ this._setFocus()
295
+ this.updateLabel()
296
+ }).observe(select, {
297
+ childList: true,
298
+ subtree: true,
299
+ attributeFilter: ['data-placeholder', 'placeholder'],
300
+ })
301
+
302
+ if (!select.isConnected) return
303
+
304
+ select.hidden = true
305
+ select.parentNode.insertBefore(this._container, select.nextSibling)
306
+ }
307
+
308
+ destroy() {
309
+ this._container.remove()
310
+ this._list.remove()
311
+ this._select.hidden = false
312
+
313
+ for (const c of [...this._select.classList]) {
314
+ if (c.startsWith('_')) {
315
+ this._select.classList.remove(c)
316
+ }
317
+ }
318
+ }
319
+
320
+ _reorderSelectOptions() {
321
+ const first = this._select.firstChild
322
+
323
+ for (const option of Array.from(
324
+ findAll(this._select, 'option'),
325
+ ).reverse()) {
326
+ if (option.selected) {
327
+ const parent = option.closest('optgroup') || this._select
328
+ parent.insertBefore(option, parent.firstChild)
329
+ }
330
+ }
331
+ }
332
+
333
+ handleIntersect = (entries, observer) => {
334
+ for (let entry of entries) {
335
+ if (entry.isIntersecting === false) {
336
+ this._list.style.display = 'none'
337
+ } else {
338
+ this._list.style.display = 'block'
339
+ }
340
+ }
341
+ }
342
+
343
+ scrollList() {
344
+ const active = this._getActiveOption()
345
+ if (!active) return
346
+ const listRect = this._list.getBoundingClientRect()
347
+ const optionRect = active.getBoundingClientRect()
348
+
349
+ // ensures the list scrolls only when the option is not in view
350
+ if (optionRect.bottom > listRect.bottom) {
351
+ active.scrollIntoView(false)
352
+ } else if (optionRect.top < listRect.top) {
353
+ active.scrollIntoView(true)
354
+ }
355
+ }
356
+
357
+ toggleSelection(checkbox, group) {
358
+ checkbox.classList.toggle('is-checked')
359
+ const id = group.getAttribute('data-value')
360
+ const options = findAll(
361
+ this._list,
362
+ `.ComboInput-option[data-source="${CSS.escape(id)}"]`,
363
+ )
364
+ for (let key = 0; key < options.length; key++) {
365
+ options[key].setAttribute(
366
+ 'aria-selected',
367
+ checkbox.classList.contains('is-checked'),
368
+ )
369
+ }
370
+ this.updateLabel()
371
+ }
372
+
373
+ updateSelection(group) {
374
+ if (group) {
375
+ const id = group.getAttribute('data-value')
376
+ const escapedId = CSS.escape(id)
377
+ let options = findAll(
378
+ this._list,
379
+ `.ComboInput-option[data-source="${escapedId}"]:not([data-is-hidden])`,
380
+ )
381
+ if (options.length === 0) {
382
+ group.setAttribute('data-hidden', true)
383
+ return
384
+ }
385
+ const selectedOptions = findAll(
386
+ this._list,
387
+ `.ComboInput-option[data-source="${escapedId}"][aria-selected="true"]`,
388
+ )
389
+ const checkbox = find(group, '.ComboInput-selectOption')
390
+ checkbox.classList.toggle(
391
+ 'is-checked',
392
+ options.length > 0 && options.length === selectedOptions.length,
393
+ )
394
+ }
395
+ }
396
+
397
+ updateList() {
398
+ if (this._select.dataset.collapseDuplicateOptions) {
399
+ // Only collapse if underlying select supports multiples.
400
+ if (this._select.hasAttribute('multiple')) {
401
+ const children = Array.from(this._select.childNodes)
402
+
403
+ for (const child of children) {
404
+ if (this._duplicates.has(child.value)) {
405
+ continue
406
+ }
407
+
408
+ const duplicates = children.filter(
409
+ (c) => c.textContent === child.textContent,
410
+ )
411
+
412
+ if (duplicates.length > 1) {
413
+ duplicates.forEach((option, i) => {
414
+ if (i === 0) {
415
+ this._duplicates.set(option.value, {
416
+ display: true,
417
+ text: option.textContent,
418
+ })
419
+ } else {
420
+ this._duplicates.set(option.value, {
421
+ display: false,
422
+ text: option.textContent,
423
+ })
424
+ }
425
+ })
426
+ }
427
+ }
428
+ } else {
429
+ console.warn(
430
+ 'Select element has "data-collapse-duplicate-options" without a "multiple" attribute.',
431
+ this._select,
432
+ )
433
+ }
434
+ }
435
+
436
+ this._list.innerHTML = ''
437
+ this._createOptions(this._select, 0)
438
+ }
439
+
440
+ _createOptions(select, index, group, grpIdx) {
441
+ if (!grpIdx) {
442
+ grpIdx = 0
443
+ }
444
+ for (const child of select.childNodes) {
445
+ switch (child.tagName) {
446
+ case 'OPTGROUP': {
447
+ const grpId = `${this._list.id}-g${grpIdx++}`
448
+ const optionGroup = create('ul', {
449
+ className: 'ComboInput-optionGroup',
450
+ role: 'group',
451
+ 'aria-labelledby': grpId,
452
+ })
453
+ const sectionHeading = create(
454
+ 'div',
455
+ { id: grpId, className: 'ComboInput-heading' },
456
+ child.label,
457
+ )
458
+ const option = create('li', sectionHeading, optionGroup)
459
+ if (child.getAttribute('data-select-option')) {
460
+ optionGroup.dataset.selectOption = child.dataset.selectOption
461
+ sectionHeading.dataset.value = child.getAttribute('value')
462
+ sectionHeading.appendChild(
463
+ create('span', {
464
+ className: 'ComboInput-selectOption',
465
+ onclick: (e) => {
466
+ this.toggleSelection(e.target, sectionHeading)
467
+ },
468
+ }),
469
+ )
470
+ }
471
+ this._list.appendChild(option)
472
+ index = this._createOptions(child, index, optionGroup, grpIdx)
473
+ break
474
+ }
475
+
476
+ case 'OPTION': {
477
+ let htmlString = child.dataset.dropDownHtml || child.dataset.labelHtml
478
+ if (!child.getAttribute('data-create')) {
479
+ const opt = create(
480
+ 'li',
481
+ {
482
+ id: `${this._list.id}-o${index++}`,
483
+ className: 'ComboInput-option',
484
+ role: 'option',
485
+ 'aria-selected':
486
+ !(this._missing && this._missing.checked) &&
487
+ (child.selected || child.value === select.value),
488
+ 'data-value': child.value,
489
+ },
490
+ create('span', {
491
+ class: 'ComboInput-check',
492
+ 'aria-hidden': true,
493
+ }),
494
+ htmlString
495
+ ? create('div', {
496
+ className: 'ComboInput-option-iframe',
497
+ innerHTML: htmlString,
498
+ })
499
+ : child.label || '',
500
+ )
501
+ if (
502
+ !opt.textContent &&
503
+ (select.dataset.placeholder || select.getAttribute('placeholder'))
504
+ ) {
505
+ opt.appendChild(
506
+ create(
507
+ 'div',
508
+ { className: 'ComboInput-option-iframe' },
509
+ create(
510
+ 'span',
511
+ { className: 'ContentSelector-placeholder' },
512
+ select.dataset.placeholder ||
513
+ select.getAttribute('placeholder'),
514
+ ),
515
+ ),
516
+ )
517
+ }
518
+ if (
519
+ this._duplicates.has(child.value) &&
520
+ !this._duplicates.get(child.value).display
521
+ ) {
522
+ opt.classList.add('is-hidden')
523
+ }
524
+ if (!child.label && opt.children.length <= 1) {
525
+ opt.classList.add('is-empty')
526
+ opt.setAttribute('aria-label', tooltips?.combo?.empty)
527
+ }
528
+
529
+ if (this._modifier === 'is-hidePlaceholder') {
530
+ // hide placeholder option from screen reader
531
+ const placeholderElm =
532
+ child.value === '' &&
533
+ opt.querySelector('.ContentSelector-placeholder')
534
+ if (
535
+ opt.classList.contains('is-empty') ||
536
+ placeholderElm ||
537
+ child.dataset.allTypes === 'true'
538
+ ) {
539
+ opt.role = 'presentation'
540
+ opt.setAttribute('aria-selected', 'false')
541
+ opt.classList.add('ComboInput-placeholder-option')
542
+ opt.classList.remove('ComboInput-option')
543
+ }
544
+ }
545
+
546
+ if (
547
+ this._duplicates.has(child.value) &&
548
+ !this._duplicates.get(child.value).display
549
+ ) {
550
+ opt.classList.add('is-hidden')
551
+ }
552
+ if (child.getAttribute('data-can-favorite')) {
553
+ let favButtonClassName = 'ComboInput-option-favorite'
554
+ let favTitle = tooltips?.action?.unfavorite
555
+ if (!child.parentElement.getAttribute('data-favorites')) {
556
+ const favOptGroup = this._select.querySelector(
557
+ 'optgroup[data-favorites]',
558
+ )
559
+ if (favOptGroup) {
560
+ const existingFav = favOptGroup.querySelector(
561
+ `option[value="${CSS.escape(child.value)}"]`,
562
+ )
563
+ if (!existingFav) {
564
+ favButtonClassName = favButtonClassName + ' is-unstarred'
565
+ favTitle = tooltips?.action?.favorite
566
+ }
567
+ } else {
568
+ favButtonClassName = favButtonClassName + ' is-unstarred'
569
+ favTitle = tooltips?.action?.favorite
570
+ }
571
+ }
572
+ const favButton = create(
573
+ 'button',
574
+ {
575
+ className: favButtonClassName,
576
+ type: 'button',
577
+ 'data-id': child.value,
578
+ title: favTitle,
579
+ 'aria-label': favTitle,
580
+ onkeydown: async (e) => {
581
+ switch (e.code) {
582
+ case 'ArrowLeft':
583
+ this._filter.focus()
584
+ return
585
+ case 'ArrowUp':
586
+ case 'ArrowDown':
587
+ this._filter.focus()
588
+ this.showList()
589
+ this._highlightOption(
590
+ this._getActiveOption(),
591
+ e.code === 'ArrowUp' ? -1 : 1,
592
+ )
593
+ this.scrollList()
594
+ return
595
+ case 'Escape':
596
+ this.hideList()
597
+ this._container.focus()
598
+ e.stopPropagation()
599
+ return
600
+ case 'Tab':
601
+ this._filter.focus()
602
+ this.hideList()
603
+ return
604
+ }
605
+ },
606
+ onclick: async (evt) => {
607
+ const connectedFavorites = this._list.querySelectorAll(`
608
+ .ComboInput-option-favorite[data-id="${CSS.escape(child.value)}"]`)
609
+ connectedFavorites.forEach((favorite) => {
610
+ const status = favorite.classList.contains('is-unstarred')
611
+ ? tooltips?.action?.unfavorite
612
+ : tooltips?.action?.favorite
613
+ favorite.title = status
614
+ favorite.nextElementSibling.textContent = status
615
+ favorite.classList.toggle('is-unstarred')
616
+ favorite.setAttribute('aria-label', status)
617
+ })
618
+ let url
619
+ let typeIds = child.getAttribute('data-typeids')
620
+ if (typeIds) {
621
+ let typeIdsParam = typeIds.split(',').join('&typeIds=')
622
+ url =
623
+ CONTEXT_PATH +
624
+ 'update-dropdown-favorites?action=update&typeIds=' +
625
+ typeIdsParam +
626
+ '&id=' +
627
+ child.value
628
+ } else {
629
+ url =
630
+ CONTEXT_PATH +
631
+ 'update-dropdown-favorites?action=update&typeIds=' +
632
+ child.value
633
+ }
634
+ const headers = new Headers()
635
+ headers.append('Brightspot-CSRF', Cookies.get('bsp.csrf'))
636
+ try {
637
+ const response = await fetch(url, {
638
+ method: 'POST',
639
+ headers: headers,
640
+ })
641
+ if (
642
+ response.redirected &&
643
+ response.url.includes(
644
+ window.BRIGHTSPOT.web.pagePaths[
645
+ 'com.psddev.cms.auth.LogInPage'
646
+ ],
647
+ )
648
+ ) {
649
+ throw new Error(
650
+ 'ComboInput: Redirected response received for click.',
651
+ )
652
+ }
653
+ } catch (error) {
654
+ console.error(error)
655
+ }
656
+ },
657
+ },
658
+ create('span', {
659
+ class: 'ComboInput-option-favorite-icon',
660
+ 'aria-hidden': true,
661
+ }),
662
+ )
663
+ opt.appendChild(favButton)
664
+ opt.appendChild(
665
+ create('span', {
666
+ 'aria-live': 'polite',
667
+ class: 'screen-reader-only',
668
+ }),
669
+ )
670
+ }
671
+ if (child.getAttribute('data-source')) {
672
+ opt.setAttribute('data-source', child.getAttribute('data-source'))
673
+ }
674
+ if (group) {
675
+ group.appendChild(opt)
676
+ } else {
677
+ this._list.appendChild(opt)
678
+ }
679
+ } else if (
680
+ child.getAttribute('data-create-types') &&
681
+ !child.closest('.SearchWidget-filter')
682
+ ) {
683
+ const createTypes = JSON.parse(child.dataset.createTypes)
684
+ this._createNewList = create(
685
+ 'ul',
686
+ {
687
+ role: 'listbox',
688
+ hidden: 'true',
689
+ },
690
+ createTypes.map((c) =>
691
+ create(
692
+ 'li',
693
+ {
694
+ className: 'ComboInput-option',
695
+ 'data-sublist': true,
696
+ role: 'none', // Set role to none until list expanded to ensure screen reader does not count this item in total list count.
697
+ id: `${this._list.id}-o${index++}`,
698
+ },
699
+ create('a', {
700
+ className: 'objectId-create nested',
701
+ tabIndex: '-1', // Prevent default tabbing behavior for items in list.
702
+ href: c.href,
703
+ target: `create-new-object-${this._list.id}`,
704
+ 'data-create': true,
705
+ 'data-popup-mode': 'noGap fromBottom',
706
+ innerHTML: c.label || '',
707
+ }),
708
+ ),
709
+ ),
710
+ )
711
+ this._createNewListItem = create(
712
+ 'li',
713
+ {
714
+ className: 'ComboInput-option nested',
715
+ 'data-create': true,
716
+ role: 'button',
717
+ 'aria-expanded': false,
718
+ 'aria-label': child.label,
719
+ id: `${this._list.id}-o${index++}`,
720
+ onclick: (e) => {
721
+ if (e.target.tagName !== 'A') {
722
+ e.preventDefault()
723
+ e.stopPropagation()
724
+ this.toggleCreateNewList()
725
+ this._filter.focus()
726
+ }
727
+ },
728
+ },
729
+ create(
730
+ 'span',
731
+ {
732
+ innerHTML: child.label || '',
733
+ className: 'ComboInput-option-nestedLabel',
734
+ 'data-create': true,
735
+ },
736
+ create(
737
+ 'span',
738
+ {
739
+ className: 'ComboInput-option-arrow',
740
+ },
741
+ create('span', {
742
+ class: 'ComboInput-option-arrow-icon',
743
+ 'aria-hidden': true,
744
+ }),
745
+ ),
746
+ ),
747
+ this._createNewList,
748
+ )
749
+
750
+ this._list.insertBefore(
751
+ this._createNewListItem,
752
+ this._list.firstElementChild,
753
+ )
754
+ } else if (
755
+ child.getAttribute('data-create') &&
756
+ !child.closest('.SearchWidget-filter')
757
+ ) {
758
+ this._list.insertBefore(
759
+ create(
760
+ 'li',
761
+ {
762
+ id: `${this._list.id}-o${index++}`,
763
+ className: 'ComboInput-option',
764
+ role: 'option',
765
+ 'aria-selected': false,
766
+ 'data-create': true,
767
+ },
768
+ create('span', {
769
+ class: 'ComboInput-check',
770
+ 'aria-hidden': true,
771
+ }),
772
+ create('a', {
773
+ className: 'objectId-create',
774
+ href: child.getAttribute('data-href'),
775
+ target: `create-new-object-${this._list.id}`,
776
+ 'data-create': true,
777
+ 'data-popup-mode': 'noGap fromBottom',
778
+ innerHTML: child.label || '',
779
+ }),
780
+ ),
781
+ this._list.firstElementChild,
782
+ )
783
+ }
784
+ break
785
+ }
786
+ }
787
+ }
788
+
789
+ if (this._missing && !find(this._list, '[data-missing-option=true]')) {
790
+ const missing = create(
791
+ 'li',
792
+ {
793
+ id: `${this._list.id}-o${index++}`,
794
+ className: 'ComboInput-option',
795
+ role: 'option',
796
+ 'data-missing-option': true,
797
+ 'aria-selected': this._missing.checked,
798
+ },
799
+ create('span', {
800
+ class: 'ComboInput-check',
801
+ 'aria-hidden': true,
802
+ }),
803
+ window.SEARCH_FILTER_IS_MISSING
804
+ ? window.SEARCH_FILTER_IS_MISSING
805
+ : 'Is Missing',
806
+ )
807
+
808
+ if (this._list.firstElementChild.getAttribute('data-value')) {
809
+ this._list.insertBefore(missing, this._list.firstElementChild)
810
+ } else {
811
+ this._list.insertBefore(
812
+ missing,
813
+ this._list.firstElementChild.nextElementSibling,
814
+ )
815
+ }
816
+ }
817
+
818
+ if (
819
+ this._select.multiple &&
820
+ this._select.getAttribute('data-allow-select-all')
821
+ ) {
822
+ const selectAll = create(
823
+ 'li',
824
+ {
825
+ id: `${this._list.id}-o${index++}`,
826
+ className: 'ComboInput-option',
827
+ role: 'option',
828
+ 'data-select-all': true,
829
+ 'aria-selected':
830
+ findAll(this._list, '[aria-selected=true]').length ===
831
+ this._getOptions().length,
832
+ },
833
+ create('span', {
834
+ class: 'ComboInput-check',
835
+ 'aria-hidden': true,
836
+ }),
837
+ this._select.getAttribute('data-select-all-label'),
838
+ )
839
+ this._list.insertBefore(selectAll, this._list.firstElementChild)
840
+ }
841
+
842
+ return index
843
+ }
844
+
845
+ _getOptions() {
846
+ return findAll(this._list, '.ComboInput-option')
847
+ }
848
+
849
+ _highlightOption(option, move) {
850
+ if (!option) {
851
+ return
852
+ }
853
+
854
+ const options = []
855
+
856
+ for (const o of this._getOptions()) {
857
+ o.classList.remove('is-active')
858
+
859
+ if (!o.hidden && !o.parentElement.hidden) {
860
+ options.push(o)
861
+ }
862
+ }
863
+
864
+ const length = options.length
865
+ let index
866
+
867
+ for (let i = 0; i < length; ++i) {
868
+ if (option === options[i]) {
869
+ index = i
870
+ break
871
+ }
872
+ }
873
+
874
+ index = (index + move) % length
875
+
876
+ while (index < 0) {
877
+ index += length
878
+ }
879
+
880
+ const highlight = options[index]
881
+
882
+ if (highlight) {
883
+ this._filter.setAttribute('aria-activedescendant', highlight.id)
884
+ highlight.classList.add('is-active')
885
+ }
886
+ }
887
+
888
+ _getActiveOption() {
889
+ return find(this._list, '.ComboInput-option.is-active')
890
+ }
891
+
892
+ /**
893
+ * 1. If no options are selected before listbox receives focus, the first option in the list receives focus
894
+ * 2. If options are selected before listbox receives focus:
895
+ * - If it's a single-select listbox, the selected option receives focus
896
+ * - If it's multi-select listbox, focus is set on the first option from the selected list of options
897
+ */
898
+ _setFocus() {
899
+ let itemIndex = 0
900
+ if (this._list.querySelector('li[aria-selected="true"]')) {
901
+ const options = this._getOptions()
902
+ while (
903
+ itemIndex < options.length &&
904
+ options[itemIndex].matches('[aria-selected="false"]')
905
+ ) {
906
+ itemIndex++
907
+ }
908
+ }
909
+ this._highlightOption(find(this._list, '.ComboInput-option'), itemIndex)
910
+ }
911
+
912
+ updateLabel() {
913
+ this._label.innerHTML = ''
914
+ this._selectParent = this._select.parentElement
915
+ this._actionCreateEl = this._selectParent
916
+ ? this._selectParent.querySelector('.action.action-create')
917
+ : null
918
+
919
+ const selectAll = find(
920
+ this._list,
921
+ '[data-select-all=true][aria-selected=true]',
922
+ )
923
+ if (selectAll) {
924
+ this._label.appendChild(
925
+ create(
926
+ 'div',
927
+ { className: 'ComboInput-selected' },
928
+ selectAll.textContent || '',
929
+ ),
930
+ )
931
+ } else {
932
+ const selected = Array.prototype.filter.call(
933
+ this._getOptions(),
934
+ (child) =>
935
+ child.getAttribute('aria-selected') === 'true' &&
936
+ !child.getAttribute('data-no-permission'),
937
+ )
938
+
939
+ const displays = []
940
+
941
+ for (const child of selected) {
942
+ const childCopy = child.cloneNode(true)
943
+ const selection = this._select.closest('.SearchWidget-filterItem')
944
+
945
+ if (selection) {
946
+ this._select.classList.toggle(
947
+ 'is-readOnly',
948
+ selection.parentNode.classList.contains('is-multiple') &&
949
+ childCopy.getAttribute('data-value'),
950
+ )
951
+ }
952
+
953
+ // Remove any markup used for Favorites display.
954
+ childCopy.querySelector('[data-id]')?.remove()
955
+
956
+ let display
957
+ if (childCopy.getAttribute('data-missing-option')) {
958
+ let placeholderOption = find(
959
+ this._list,
960
+ '.ComboInput-option[data-value=""]',
961
+ )
962
+ if (!placeholderOption) {
963
+ placeholderOption = find(
964
+ this._list,
965
+ '.ComboInput-placeholder-option',
966
+ )
967
+ }
968
+ display = childCopy.textContent + ': ' + placeholderOption?.innerHTML
969
+ } else {
970
+ display = childCopy.innerHTML
971
+ }
972
+
973
+ if (display && !displays.some((d) => d === display)) {
974
+ displays.push(display)
975
+ }
976
+ }
977
+
978
+ let display
979
+ const displaysLength = displays.length
980
+
981
+ if (displaysLength > 0) {
982
+ if (this._select.closest('.CIG-row')) {
983
+ display = displays.join(', ')
984
+ } else {
985
+ display = displays[0]
986
+
987
+ if (displaysLength > 1) {
988
+ display += ` +${displaysLength - 1}`
989
+ }
990
+ }
991
+ }
992
+
993
+ if (display) {
994
+ this._label.appendChild(
995
+ create('div', {
996
+ className: 'ComboInput-selected',
997
+ innerHTML: display,
998
+ }),
999
+ )
1000
+ if (this._actionCreateEl) {
1001
+ this._actionCreateEl.setAttribute(
1002
+ 'aria-label',
1003
+ `${this._actionCreateEl.innerText.toLowerCase()} ${
1004
+ this._label.innerText
1005
+ }`,
1006
+ )
1007
+ }
1008
+ }
1009
+ }
1010
+ }
1011
+
1012
+ async populateFavorites() {
1013
+ if (this._select.querySelector('option[data-can-favorite]')) {
1014
+ // If the select has a sibling input element, that will have data-typeIds attr and this is a content dropdown;
1015
+ // else, this is a type dropdown. If it is an ObjectType, the typeIds will populate in typesArrayOption instead
1016
+ // of validTypeIds.
1017
+ const input = this._select.parentNode.querySelector('input[data-typeids]')
1018
+ const validTypeIds = this._select.getAttribute('data-typeIds')
1019
+ var options = this._select.options
1020
+ const typesArrayOptions = Array.from(options).map(
1021
+ (option) => option.value,
1022
+ )
1023
+ const hasDataTypeids = Array.from(options).some((option) =>
1024
+ option.hasAttribute('data-typeids'),
1025
+ )
1026
+ let url
1027
+ let data = new FormData()
1028
+ if (input && hasDataTypeids) {
1029
+ const validTypeIdsParam = input.getAttribute('data-typeIds').split(',')
1030
+ url =
1031
+ CONTEXT_PATH +
1032
+ 'update-dropdown-favorites?action=getExisting&isFavoritedType=false'
1033
+ validTypeIdsParam.forEach((id) => {
1034
+ data.append('validTypeIds', id)
1035
+ })
1036
+ } else if (validTypeIds || typesArrayOptions) {
1037
+ url =
1038
+ CONTEXT_PATH +
1039
+ 'update-dropdown-favorites?action=getExisting&isFavoritedType=true'
1040
+ const typeIds = validTypeIds
1041
+ ? validTypeIds.split(',')
1042
+ : typesArrayOptions
1043
+ typeIds.forEach((id) => {
1044
+ data.append('validTypeIds', id)
1045
+ })
1046
+ } else {
1047
+ url =
1048
+ CONTEXT_PATH +
1049
+ 'update-dropdown-favorites?action=getExisting&isFavoritedType=true'
1050
+ }
1051
+ const headers = new Headers()
1052
+ headers.append('Brightspot-CSRF', Cookies.get('bsp.csrf'))
1053
+ try {
1054
+ const response = await fetch(url, {
1055
+ method: 'POST',
1056
+ headers: headers,
1057
+ body: data,
1058
+ })
1059
+ if (
1060
+ response.redirected &&
1061
+ response.url.includes(
1062
+ window.BRIGHTSPOT.web.pagePaths['com.psddev.cms.auth.LogInPage'],
1063
+ )
1064
+ ) {
1065
+ throw new Error(
1066
+ 'ComboInput: Redirected response received for favorites.',
1067
+ )
1068
+ }
1069
+ const responseText = await response.text()
1070
+ const favOptGroup = new DOMParser()
1071
+ .parseFromString(responseText, 'text/html')
1072
+ .body.querySelector('optgroup')
1073
+ const oldFavorites = this._select.querySelector(
1074
+ 'optgroup[data-favorites]',
1075
+ )
1076
+ if (oldFavorites) {
1077
+ const selectedOptions = Array.from(
1078
+ this._list.querySelectorAll('li[aria-selected="true"]'),
1079
+ )
1080
+
1081
+ const selectedValues = new Set(
1082
+ selectedOptions.map((li) => li.dataset.value),
1083
+ )
1084
+
1085
+ for (const option of this._select.querySelectorAll('option')) {
1086
+ if (selectedValues.has(option.value)) {
1087
+ option.selected = true
1088
+ }
1089
+ }
1090
+
1091
+ oldFavorites.remove()
1092
+ }
1093
+ if (favOptGroup && favOptGroup.hasChildNodes()) {
1094
+ const allTypesOption = this._select.querySelector(
1095
+ 'option[data-all-types]',
1096
+ )
1097
+ const dataMirror = this._select.querySelector('option[data-mirror]')
1098
+ if (allTypesOption) {
1099
+ allTypesOption.after(favOptGroup)
1100
+ } else if (dataMirror) {
1101
+ dataMirror.after(favOptGroup)
1102
+ } else {
1103
+ this._select.prepend(favOptGroup)
1104
+ }
1105
+ }
1106
+ } catch (error) {
1107
+ console.error(error)
1108
+ }
1109
+ }
1110
+ }
1111
+
1112
+ focusFavorite() {
1113
+ const highlight = this._getActiveOption() || this._list.lastChild
1114
+ const fav = highlight.querySelector('.ComboInput-option-favorite')
1115
+ if (fav) {
1116
+ fav.focus()
1117
+ }
1118
+ }
1119
+
1120
+ showList() {
1121
+ if (this._container.getAttribute('aria-expanded') === 'true') {
1122
+ return true
1123
+ }
1124
+
1125
+ if (this._select.classList.contains('is-readOnly')) {
1126
+ return
1127
+ }
1128
+
1129
+ if (current) {
1130
+ current.hideList()
1131
+ }
1132
+
1133
+ this._container.style.width = `${
1134
+ this._container.getBoundingClientRect().width
1135
+ }px`
1136
+
1137
+ this._container.setAttribute('aria-expanded', 'true')
1138
+ this._filter.value = ''
1139
+ this._filter.focus()
1140
+ this.filterList()
1141
+
1142
+ this._setFocus()
1143
+
1144
+ for (const group of findAll(this._list, '.ComboInput-heading')) {
1145
+ if (group.getAttribute('data-value')) {
1146
+ this.updateSelection(group)
1147
+ }
1148
+ }
1149
+
1150
+ current = this
1151
+
1152
+ this._list.classList.add('is-expanded')
1153
+ this._tether = new Tether(this._container, this._list)
1154
+
1155
+ const options = {
1156
+ root: null,
1157
+ rootMargin: '0px',
1158
+ threshold: 0,
1159
+ }
1160
+ if (!this._observer) {
1161
+ this._observer = new IntersectionObserver(this.handleIntersect, options)
1162
+ }
1163
+ this._observer.observe(this._container)
1164
+ }
1165
+
1166
+ hideList() {
1167
+ if (this._container.getAttribute('aria-expanded') === 'false') {
1168
+ return true
1169
+ }
1170
+
1171
+ if (this._observer) {
1172
+ this._observer.unobserve(this._container)
1173
+ }
1174
+ if (this._tether) {
1175
+ this._tether.destroy()
1176
+ }
1177
+ // Reset filter value as dynamic values are updated by content state handler, and trigger input event so that contentState can update values
1178
+ this._filter.value = ''
1179
+ this._filter.dispatchEvent(new Event('input', { bubbles: true }))
1180
+
1181
+ current = null
1182
+
1183
+ this._container.style.width = ''
1184
+
1185
+ if (this._createNewListItem?.getAttribute('aria-expanded') === 'true') {
1186
+ this.toggleCreateNewList()
1187
+ }
1188
+
1189
+ this._container.setAttribute('aria-expanded', 'false')
1190
+ this._list.classList.remove('is-expanded')
1191
+
1192
+ if (this._select.multiple) {
1193
+ const values = new Set()
1194
+
1195
+ for (const child of this._getOptions()) {
1196
+ if (
1197
+ child.getAttribute('aria-selected') === 'true' &&
1198
+ !child.getAttribute('data-select-all')
1199
+ ) {
1200
+ values.add(child.getAttribute('data-value'))
1201
+ }
1202
+ }
1203
+
1204
+ let changed = false
1205
+
1206
+ for (const option of findAll(this._select, 'option')) {
1207
+ const newSelected = values.has(option.value)
1208
+
1209
+ if (option.selected !== newSelected) {
1210
+ changed = true
1211
+ }
1212
+
1213
+ option.selected = newSelected
1214
+ }
1215
+
1216
+ this._reorderSelectOptions()
1217
+
1218
+ if (changed) {
1219
+ this._select.dispatchEvent(new CustomEvent('change', { bubbles: true }))
1220
+ }
1221
+ }
1222
+
1223
+ this._select.dispatchEvent(
1224
+ new CustomEvent('combo-input:hide', { bubbles: true }),
1225
+ )
1226
+ }
1227
+
1228
+ toggleList() {
1229
+ if (this._container.getAttribute('aria-expanded') === 'true') {
1230
+ this.hideList()
1231
+ } else {
1232
+ this.showList()
1233
+ }
1234
+ }
1235
+
1236
+ toggleCreateNewList() {
1237
+ if (
1238
+ this._container.getAttribute('aria-expanded') === 'true' &&
1239
+ this._createNewListItem.getAttribute('aria-expanded') === 'true'
1240
+ ) {
1241
+ this._createNewList.setAttribute('hidden', '')
1242
+ this._createNewListItem.setAttribute('aria-expanded', 'false')
1243
+ for (const item of this._createNewList.children) {
1244
+ item?.setAttribute('role', 'none')
1245
+ }
1246
+ } else if (
1247
+ this._createNewListItem.getAttribute('aria-expanded') === 'false'
1248
+ ) {
1249
+ this._createNewList.removeAttribute('hidden')
1250
+ this._createNewListItem.setAttribute('aria-expanded', 'true')
1251
+
1252
+ for (const item of this._createNewList.children) {
1253
+ item?.setAttribute('role', 'option')
1254
+ }
1255
+ }
1256
+ }
1257
+
1258
+ async filterList() {
1259
+ const value = this._filter.value
1260
+ const optionsUrl = this._getOptionsUrl
1261
+ ? this._getOptionsUrl(this._filter.value)
1262
+ : null
1263
+
1264
+ if (optionsUrl && !(this._fetchOnce && this._optionsLoaded)) {
1265
+ try {
1266
+ ++this._getOptionsIndex
1267
+ const index = this._getOptionsIndex
1268
+
1269
+ // In fetch-once mode, always fetch with empty query to get all options
1270
+ const fetchUrl = this._fetchOnce ? this._getOptionsUrl('') : optionsUrl
1271
+
1272
+ const response = await fetch(fetchUrl, {
1273
+ credentials: 'include',
1274
+ })
1275
+ if (
1276
+ response.redirected &&
1277
+ response.url.includes(
1278
+ window.BRIGHTSPOT.web.pagePaths['com.psddev.cms.auth.LogInPage'],
1279
+ )
1280
+ ) {
1281
+ throw new Error(
1282
+ 'ComboInput: Redirected response received for options update.',
1283
+ )
1284
+ }
1285
+ const optionsHtml = await response.text()
1286
+
1287
+ if (this._getOptionsIndex === index) {
1288
+ const selectedOptions = []
1289
+ const selectedValues = new Set()
1290
+ if (!this._select.value && this._select.firstChild) {
1291
+ this._select.firstChild.selected = true
1292
+ }
1293
+ for (const o of findAll(this._select, 'option')) {
1294
+ if (o.selected) {
1295
+ selectedOptions.push(o)
1296
+ selectedValues.add(o.value)
1297
+ }
1298
+ }
1299
+
1300
+ this._select.innerHTML = optionsHtml
1301
+
1302
+ for (const o of findAll(this._select, 'option')) {
1303
+ if (selectedValues.has(o.value)) {
1304
+ o.remove()
1305
+ }
1306
+ }
1307
+
1308
+ const first = this._select.firstChild
1309
+
1310
+ for (const o of selectedOptions) {
1311
+ this._select.insertBefore(o, first)
1312
+ }
1313
+
1314
+ // If fetch-once mode, mark as loaded for client-side filtering on subsequent calls
1315
+ if (this._fetchOnce) {
1316
+ this._optionsLoaded = true
1317
+ }
1318
+ }
1319
+ } catch (error) {
1320
+ console.error(error)
1321
+ }
1322
+ if (!value || value.trim().length === 0) {
1323
+ this.populateFavorites()
1324
+ }
1325
+ } else {
1326
+ if (value && !this._select.getAttribute('data-dynamic-value-generator')) {
1327
+ const re = new RegExp(
1328
+ value.replace(/\s/, '').split('').join('(?:.*\\W)?'),
1329
+ 'i',
1330
+ )
1331
+
1332
+ let highlighted
1333
+
1334
+ for (const child of this._getOptions()) {
1335
+ if (re.test(child.textContent)) {
1336
+ child.hidden = false
1337
+
1338
+ if (!highlighted) {
1339
+ highlighted = true
1340
+ this._highlightOption(child, 0)
1341
+ }
1342
+ } else {
1343
+ child.hidden = true
1344
+ }
1345
+ }
1346
+ } else {
1347
+ for (const child of this._getOptions()) {
1348
+ child.hidden = false
1349
+ }
1350
+ this.populateFavorites()
1351
+ }
1352
+ }
1353
+ }
1354
+
1355
+ updateValue(value, missing) {
1356
+ const selectAllOption = find(this._list, '[data-select-all=true]')
1357
+ if (this._select.multiple) {
1358
+ if (
1359
+ selectAllOption &&
1360
+ value === selectAllOption.getAttribute('data-value')
1361
+ ) {
1362
+ selectAllOption.setAttribute(
1363
+ 'aria-selected',
1364
+ selectAllOption.getAttribute('aria-selected') !== 'true',
1365
+ )
1366
+ findAll(
1367
+ this._list,
1368
+ '.ComboInput-option:not([data-select-all])',
1369
+ ).forEach((child) => {
1370
+ child.setAttribute(
1371
+ 'aria-selected',
1372
+ selectAllOption.getAttribute('aria-selected'),
1373
+ )
1374
+ })
1375
+ } else {
1376
+ const escapedValue = CSS.escape(value)
1377
+ const selectedOption = find(
1378
+ this._list,
1379
+ `.ComboInput-option[data-value="${escapedValue}"]`,
1380
+ )
1381
+ if (!selectedOption) {
1382
+ return
1383
+ }
1384
+ if (this._duplicates.has(value)) {
1385
+ for (const key of this._duplicates.keys()) {
1386
+ if (this._duplicates.get(key).text === selectedOption.textContent) {
1387
+ const duplicate = find(
1388
+ this._list,
1389
+ `.ComboInput-option[data-value="${CSS.escape(key)}"]`,
1390
+ )
1391
+ duplicate.setAttribute(
1392
+ 'aria-selected',
1393
+ duplicate.getAttribute('aria-selected') !== 'true',
1394
+ )
1395
+ }
1396
+ }
1397
+ } else {
1398
+ selectedOption.setAttribute(
1399
+ 'aria-selected',
1400
+ selectedOption.getAttribute('aria-selected') !== 'true',
1401
+ )
1402
+ }
1403
+ if (selectAllOption) {
1404
+ selectAllOption.setAttribute(
1405
+ 'aria-selected',
1406
+ findAll(this._list, '[aria-selected=true]').length ===
1407
+ this._getOptions().length,
1408
+ )
1409
+ }
1410
+
1411
+ const source = selectedOption.getAttribute('data-source')
1412
+ if (source != null) {
1413
+ this.updateSelection(
1414
+ find(
1415
+ this._list,
1416
+ `.ComboInput-heading[data-value="${CSS.escape(source)}"]`,
1417
+ ),
1418
+ )
1419
+ }
1420
+ }
1421
+
1422
+ this._filter.focus()
1423
+ this._filter.select()
1424
+ } else {
1425
+ if (missing) {
1426
+ find(this._list, '[data-missing-option=true]').setAttribute(
1427
+ 'aria-selected',
1428
+ !this._missing.checked,
1429
+ )
1430
+ const selectedOption = Array.from(this._getOptions()).find(
1431
+ (option) =>
1432
+ option.getAttribute('role') === 'option' &&
1433
+ option.getAttribute('aria-selected') === 'true' &&
1434
+ option.getAttribute('data-missing-option') !== 'true',
1435
+ )
1436
+ if (selectedOption) {
1437
+ selectedOption.setAttribute('aria-selected', 'false')
1438
+ }
1439
+ } else {
1440
+ for (const child of this._getOptions()) {
1441
+ if (child.getAttribute('role') === 'option') {
1442
+ if (value === child.getAttribute('data-value')) {
1443
+ child.setAttribute('aria-selected', 'true')
1444
+ } else {
1445
+ child.setAttribute('aria-selected', 'false')
1446
+ }
1447
+ }
1448
+ }
1449
+ }
1450
+
1451
+ this.hideList()
1452
+ if (missing) {
1453
+ if (this._missing.checked) {
1454
+ this._missing.checked = false
1455
+ } else {
1456
+ this._missing.checked = true
1457
+ this._select.value = value
1458
+ }
1459
+ this._missing.dispatchEvent(
1460
+ new CustomEvent('change', { bubbles: true }),
1461
+ )
1462
+ } else if (this._select.value !== value) {
1463
+ this._select.value = value
1464
+ this._select.dispatchEvent(new CustomEvent('change', { bubbles: true }))
1465
+ if (this._missing) {
1466
+ this._missing.checked = false
1467
+ this._missing.dispatchEvent(
1468
+ new CustomEvent('change', { bubbles: true }),
1469
+ )
1470
+ }
1471
+ } else if (this._missing && this._missing.checked) {
1472
+ this._missing.checked = false
1473
+ this._missing.dispatchEvent(
1474
+ new CustomEvent('change', { bubbles: true }),
1475
+ )
1476
+ }
1477
+ }
1478
+
1479
+ this.updateLabel()
1480
+ }
1481
+ }
1482
+
1483
+ // Hide list when clicked outside.
1484
+ window.addEventListener(
1485
+ 'click',
1486
+ ifClick((event) => {
1487
+ if (current && !current._container.contains(event.target)) {
1488
+ current.hideList()
1489
+ }
1490
+ }),
1491
+ )