@brightspot/ui 3.0.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 (822) hide show
  1. package/dist/custom-elements.json +1375 -1375
  2. package/dist/storybook/assets/{ActionBar.stories-DRIVI-W2.js → ActionBar.stories-BhdqLyzJ.js} +1 -1
  3. package/dist/storybook/assets/{ActionItem.stories-5qlgxYNB.js → ActionItem.stories-17zjMCkO.js} +1 -1
  4. package/dist/storybook/assets/{Avatar.stories-B3VkhRhP.js → Avatar.stories-C5m3-zOH.js} +1 -1
  5. package/dist/storybook/assets/{AvatarGroup.stories-DOfim2NY.js → AvatarGroup.stories-DE88PJ6w.js} +1 -1
  6. package/dist/storybook/assets/{Badge.stories-B04VNAcc.js → Badge.stories-D905HmvO.js} +1 -1
  7. package/dist/storybook/assets/{Button-CILTcGRT.js → Button-ANyLESGb.js} +1 -1
  8. package/dist/storybook/assets/{Button.stories-CzWAltrX.js → Button.stories-DbH6q5L3.js} +1 -1
  9. package/dist/storybook/assets/{ButtonGroup.stories-1uAJf79o.js → ButtonGroup.stories-loqgAB7p.js} +1 -1
  10. package/dist/storybook/assets/{Celebrate.stories-BEqj0VnW.js → Celebrate.stories-CRO3rSgp.js} +1 -1
  11. package/dist/storybook/assets/{Checkbox.stories-DXAGFS0M.js → Checkbox.stories-SZtgfbFe.js} +1 -1
  12. package/dist/storybook/assets/{CircularProgress.stories-D4rftw22.js → CircularProgress.stories-VayPxO4M.js} +1 -1
  13. package/dist/storybook/assets/{ClipboardMixin.stories-z2n2HWt1.js → ClipboardMixin.stories-0EB2O2zT.js} +1 -1
  14. package/dist/storybook/assets/{Color-6BZIO3FS-C6KyMgZz.js → Color-6BZIO3FS-CFpcD80i.js} +1 -1
  15. package/dist/storybook/assets/{Colors.stories-CX-Ny3B_.js → Colors.stories-BJGM6xnp.js} +1 -1
  16. package/dist/storybook/assets/{CombinedEffects.stories-BkqtiVHp.js → CombinedEffects.stories-DUwocYcn.js} +1 -1
  17. package/dist/storybook/assets/{ComponentStatesMixin-DLd0feFg.js → ComponentStatesMixin-MUqdPCf7.js} +1 -1
  18. package/dist/storybook/assets/{ComponentStatesMixin.stories-D6Yc5Jgl.js → ComponentStatesMixin.stories-DjrxNwE7.js} +1 -1
  19. package/dist/storybook/assets/{CopyToClipboard.stories-B-omwDDJ.js → CopyToClipboard.stories-DptOcPq6.js} +1 -1
  20. package/dist/storybook/assets/{Debounce.stories-B2vE5QIx.js → Debounce.stories-BbcIWmhD.js} +1 -1
  21. package/dist/storybook/assets/{DocsRenderer-LL677BLK-DNUlRvMg.js → DocsRenderer-LL677BLK-Yy8fjeNG.js} +3 -3
  22. package/dist/storybook/assets/{Dropdown.stories-_bx4WDLr.js → Dropdown.stories-Du3LrBR6.js} +1 -1
  23. package/dist/storybook/assets/{EmptyState.stories-CGMbmo77.js → EmptyState.stories-Dy9P8aOY.js} +1 -1
  24. package/dist/storybook/assets/{Events.stories-CkQYKcoZ.js → Events.stories-DvdVQxDf.js} +1 -1
  25. package/dist/storybook/assets/{Heading.stories-BU5Do_od.js → Heading.stories-BQ1jFOKn.js} +1 -1
  26. package/dist/storybook/assets/{HueRipple.stories-Di2zmxo3.js → HueRipple.stories-CrZFjnRl.js} +1 -1
  27. package/dist/storybook/assets/{Icon.stories-Dk4ZXhhJ.js → Icon.stories-C2Tj8Lx1.js} +1 -1
  28. package/dist/storybook/assets/{IconButton.stories-BSCiXPXa.js → IconButton.stories-DFqouOJb.js} +1 -1
  29. package/dist/storybook/assets/{LinearProgress.stories-BGxPZuni.js → LinearProgress.stories-DtNw3QX3.js} +1 -1
  30. package/dist/storybook/assets/{Pagination.stories-z3Zq8b4f.js → Pagination.stories-CFiZ9APs.js} +1 -1
  31. package/dist/storybook/assets/{Popover.stories-C9GxWcax.js → Popover.stories-DkkTuYag.js} +1 -1
  32. package/dist/storybook/assets/{ReadyMixin-CQw8N6P9.js → ReadyMixin-BA01Vm_B.js} +1 -1
  33. package/dist/storybook/assets/{RovingTabindexMixin.stories-ByxLBi6m.js → RovingTabindexMixin.stories-BesAqt48.js} +1 -1
  34. package/dist/storybook/assets/{Rtc.stories-DQJlCXWR.js → Rtc.stories-iTw43rjp.js} +1 -1
  35. package/dist/storybook/assets/{ScrollShadow.stories-gjTIAbUA.js → ScrollShadow.stories-QYqQCcAo.js} +1 -1
  36. package/dist/storybook/assets/{Switch.stories-BEeqPZiP.js → Switch.stories-BKArq9Mk.js} +1 -1
  37. package/dist/storybook/assets/{Tab.stories-DpB3I-WZ.js → Tab.stories-8UdDPvE5.js} +1 -1
  38. package/dist/storybook/assets/{Tabs.stories-C6mG6Xi7.js → Tabs.stories-BPGMZ552.js} +1 -1
  39. package/dist/storybook/assets/{Throttle.stories-x9tpGeQh.js → Throttle.stories-CYl5d0r6.js} +1 -1
  40. package/dist/storybook/assets/{Tooltip.stories-CqcLqdmc.js → Tooltip.stories-cZ0zSlwX.js} +1 -1
  41. package/dist/storybook/assets/{Upload.stories-CMaAbCSH.js → Upload.stories-CPC7N0Ed.js} +1 -1
  42. package/dist/storybook/assets/{UploadItem.stories-GB98L3JQ.js → UploadItem.stories-D0LClT0a.js} +1 -1
  43. package/dist/storybook/assets/{Welcome.stories-6h9cUZ7v.js → Welcome.stories-C8JUaRas.js} +1 -1
  44. package/dist/storybook/assets/{Widget.stories-DiA1PR6Y.js → Widget.stories-C1FxF24-.js} +1 -1
  45. package/dist/storybook/assets/{WithTooltip-65CFNBJE-DTsHhBb_.js → WithTooltip-65CFNBJE-BMBo-fie.js} +1 -1
  46. package/dist/storybook/assets/{blocks-IXdn9TGW.js → blocks-BTsuXRXZ.js} +5 -5
  47. package/dist/storybook/assets/{formatter-EIJCOSYU-Cum4J6N4.js → formatter-EIJCOSYU-BJ1Cwrpx.js} +1 -1
  48. package/dist/storybook/assets/if-defined-BPCd2NXs.js +1 -0
  49. package/dist/storybook/assets/{iframe-Sf9RHZFu.js → iframe-B3YWTqkR.js} +4 -4
  50. package/dist/storybook/assets/{index-D605PvQH.js → index-BBUTVEdP.js} +1 -1
  51. package/dist/storybook/assets/{onFind-C41m8c_a.js → onFind-NC0lGo-r.js} +1 -1
  52. package/dist/storybook/assets/{onFind.stories-MOTfGlJd.js → onFind.stories-CqbwQgQF.js} +1 -1
  53. package/dist/storybook/assets/{onRemove.stories-DX58Bf6f.js → onRemove.stories-Y8Ycs77o.js} +1 -1
  54. package/dist/storybook/assets/{onVisible.stories-NNFeFeD8.js → onVisible.stories-CcLUE35q.js} +1 -1
  55. package/dist/storybook/assets/{style-map-B99QiqCo.js → style-map-MSB_ngx3.js} +1 -1
  56. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-BqQ-o9mS.js → syntaxhighlighter-ED5Y7EFY-BjkjEDMG.js} +1 -1
  57. package/dist/storybook/iframe.html +2 -2
  58. package/dist/storybook/project.json +1 -1
  59. package/docs/adr/0001-retire-cms-ui-package-fold-under-src-legacy.md +78 -0
  60. package/docs/adr/0002-yarn-workspaces-preserve-cms-ui-deps.md +130 -0
  61. package/docs/adr/0003-bundle-equivalence-as-fold-acceptance-criterion.md +286 -0
  62. package/package.json +6 -4
  63. package/src/legacy/tool-ui/src/AIInline.css +123 -0
  64. package/src/legacy/tool-ui/src/ActionBar.css +41 -0
  65. package/src/legacy/tool-ui/src/Admin.css +258 -0
  66. package/src/legacy/tool-ui/src/AdobeStock.css +3 -0
  67. package/src/legacy/tool-ui/src/AnalyticsWidget.css +34 -0
  68. package/src/legacy/tool-ui/src/AnalyticsWidget.ts +158 -0
  69. package/src/legacy/tool-ui/src/Apis.css +31 -0
  70. package/src/legacy/tool-ui/src/AppetizeioEmbedded.css +58 -0
  71. package/src/legacy/tool-ui/src/AssociatedContentWidget.css +68 -0
  72. package/src/legacy/tool-ui/src/AutoExpand.css +33 -0
  73. package/src/legacy/tool-ui/src/Avatar.css +31 -0
  74. package/src/legacy/tool-ui/src/BackgroundTasks.css +29 -0
  75. package/src/legacy/tool-ui/src/Base.css +80 -0
  76. package/src/legacy/tool-ui/src/Board.css +160 -0
  77. package/src/legacy/tool-ui/src/Board.ts +515 -0
  78. package/src/legacy/tool-ui/src/BroadcastAlertBanner.ts +93 -0
  79. package/src/legacy/tool-ui/src/BulkUpload.css +51 -0
  80. package/src/legacy/tool-ui/src/BulkWorkflow.css +47 -0
  81. package/src/legacy/tool-ui/src/BulkWorkflow.ts +110 -0
  82. package/src/legacy/tool-ui/src/BulletedList.css +11 -0
  83. package/src/legacy/tool-ui/src/CIGCluster/README.md +32 -0
  84. package/src/legacy/tool-ui/src/CIGCluster/index.ts +144 -0
  85. package/src/legacy/tool-ui/src/CIGCluster.css +60 -0
  86. package/src/legacy/tool-ui/src/Calendar.css +110 -0
  87. package/src/legacy/tool-ui/src/Card.css +28 -0
  88. package/src/legacy/tool-ui/src/Celebrate.ts +87 -0
  89. package/src/legacy/tool-ui/src/Chart.ts +53 -0
  90. package/src/legacy/tool-ui/src/ChartCompat.ts +413 -0
  91. package/src/legacy/tool-ui/src/ChartTable.ts +22 -0
  92. package/src/legacy/tool-ui/src/Checkbox.css +22 -0
  93. package/src/legacy/tool-ui/src/CodeMirror.css +161 -0
  94. package/src/legacy/tool-ui/src/Collections.css +74 -0
  95. package/src/legacy/tool-ui/src/ColorInputSpectrum.css +140 -0
  96. package/src/legacy/tool-ui/src/ComboInput.css +253 -0
  97. package/src/legacy/tool-ui/src/Compat.css +383 -0
  98. package/src/legacy/tool-ui/src/ComponentStatesMixin.ts +27 -0
  99. package/src/legacy/tool-ui/src/ContentColors.css +19 -0
  100. package/src/legacy/tool-ui/src/ContentEdit.css +1065 -0
  101. package/src/legacy/tool-ui/src/ContentEditDrawer.css +274 -0
  102. package/src/legacy/tool-ui/src/ContentEditDrawer.ts +217 -0
  103. package/src/legacy/tool-ui/src/ContentEditPanel.ts +188 -0
  104. package/src/legacy/tool-ui/src/ContentEditSites.ts +101 -0
  105. package/src/legacy/tool-ui/src/ContentForm.css +87 -0
  106. package/src/legacy/tool-ui/src/ContentForm.ts +104 -0
  107. package/src/legacy/tool-ui/src/ContentInputGroup.css +678 -0
  108. package/src/legacy/tool-ui/src/ContentInputGroup.ts +86 -0
  109. package/src/legacy/tool-ui/src/ContentReporting.css +54 -0
  110. package/src/legacy/tool-ui/src/ContentSelector.css +215 -0
  111. package/src/legacy/tool-ui/src/ContentSelectorActions.ts +428 -0
  112. package/src/legacy/tool-ui/src/ContentSummary.css +176 -0
  113. package/src/legacy/tool-ui/src/ContentSummary.ts +223 -0
  114. package/src/legacy/tool-ui/src/ContentTemplatesWidget.css +54 -0
  115. package/src/legacy/tool-ui/src/ContentTools.css +109 -0
  116. package/src/legacy/tool-ui/src/ContentType.css +27 -0
  117. package/src/legacy/tool-ui/src/Conversation.css +325 -0
  118. package/src/legacy/tool-ui/src/Conversation.ts +836 -0
  119. package/src/legacy/tool-ui/src/CopySiteWidget.css +8 -0
  120. package/src/legacy/tool-ui/src/CopyToClipboard/README.md +23 -0
  121. package/src/legacy/tool-ui/src/CopyToClipboard/index.ts +54 -0
  122. package/src/legacy/tool-ui/src/CopyToClipboard.css +10 -0
  123. package/src/legacy/tool-ui/src/Crosslinker.css +486 -0
  124. package/src/legacy/tool-ui/src/Crosslinker.ts +46 -0
  125. package/src/legacy/tool-ui/src/CustomKeyboard.css +25 -0
  126. package/src/legacy/tool-ui/src/DashboardRow.css +54 -0
  127. package/src/legacy/tool-ui/src/DashboardWidget.css +444 -0
  128. package/src/legacy/tool-ui/src/DateStringField.css +78 -0
  129. package/src/legacy/tool-ui/src/DateTimeInput.css +11 -0
  130. package/src/legacy/tool-ui/src/Dialog.css +441 -0
  131. package/src/legacy/tool-ui/src/Diff.css +280 -0
  132. package/src/legacy/tool-ui/src/Diff.ts +89 -0
  133. package/src/legacy/tool-ui/src/Downloads.css +7 -0
  134. package/src/legacy/tool-ui/src/Dropdown.css +63 -0
  135. package/src/legacy/tool-ui/src/EditFieldUpdateCache.ts +129 -0
  136. package/src/legacy/tool-ui/src/EmbeddedInputGroup/README.md +3 -0
  137. package/src/legacy/tool-ui/src/EmbeddedInputGroup/index.ts +189 -0
  138. package/src/legacy/tool-ui/src/EmbeddedInputGroup.css +75 -0
  139. package/src/legacy/tool-ui/src/Enhancement.css +135 -0
  140. package/src/legacy/tool-ui/src/Entry.ts +875 -0
  141. package/src/legacy/tool-ui/src/EventEmitterMixin.ts +71 -0
  142. package/src/legacy/tool-ui/src/ExternalCalendars.ts +34 -0
  143. package/src/legacy/tool-ui/src/ExternalItemObjects.ts +36 -0
  144. package/src/legacy/tool-ui/src/FileInput.css +150 -0
  145. package/src/legacy/tool-ui/src/FocusRegions.ts +530 -0
  146. package/src/legacy/tool-ui/src/FormFilter.css +93 -0
  147. package/src/legacy/tool-ui/src/FullscreenView.css +152 -0
  148. package/src/legacy/tool-ui/src/GCA.css +9 -0
  149. package/src/legacy/tool-ui/src/Global.d.ts +219 -0
  150. package/src/legacy/tool-ui/src/GraphQL.css +74 -0
  151. package/src/legacy/tool-ui/src/GraphQLApis.css +4 -0
  152. package/src/legacy/tool-ui/src/Guide.css +193 -0
  153. package/src/legacy/tool-ui/src/GuideField.css +25 -0
  154. package/src/legacy/tool-ui/src/Hierarchy.css +68 -0
  155. package/src/legacy/tool-ui/src/Icon/index.css +11 -0
  156. package/src/legacy/tool-ui/src/Icon/index.ts +69 -0
  157. package/src/legacy/tool-ui/src/ImageEditor.css +522 -0
  158. package/src/legacy/tool-ui/src/ImageRecognition.css +11 -0
  159. package/src/legacy/tool-ui/src/Incompatible.css +42 -0
  160. package/src/legacy/tool-ui/src/InputRow.css +26 -0
  161. package/src/legacy/tool-ui/src/Label.css +33 -0
  162. package/src/legacy/tool-ui/src/LabeledCheckbox.css +13 -0
  163. package/src/legacy/tool-ui/src/Link.css +4 -0
  164. package/src/legacy/tool-ui/src/LinkCarousel.css +77 -0
  165. package/src/legacy/tool-ui/src/LinkList.css +53 -0
  166. package/src/legacy/tool-ui/src/LinkTable.css +105 -0
  167. package/src/legacy/tool-ui/src/ListManager.css +27 -0
  168. package/src/legacy/tool-ui/src/LiveBlog.css +290 -0
  169. package/src/legacy/tool-ui/src/LiveBlog.ts +47 -0
  170. package/src/legacy/tool-ui/src/Loader.svg +16 -0
  171. package/src/legacy/tool-ui/src/LocationMap.css +25 -0
  172. package/src/legacy/tool-ui/src/LookingGlass.css +31 -0
  173. package/src/legacy/tool-ui/src/LucideDynamicLoader.ts +31 -0
  174. package/src/legacy/tool-ui/src/MailPublishing.css +32 -0
  175. package/src/legacy/tool-ui/src/Mention.css +34 -0
  176. package/src/legacy/tool-ui/src/MenuView.css +659 -0
  177. package/src/legacy/tool-ui/src/Message.css +239 -0
  178. package/src/legacy/tool-ui/src/Month.css +65 -0
  179. package/src/legacy/tool-ui/src/NavRail/index.css +47 -0
  180. package/src/legacy/tool-ui/src/NavRail/index.ts +40 -0
  181. package/src/legacy/tool-ui/src/Notification.css +197 -0
  182. package/src/legacy/tool-ui/src/Notifications.ts +139 -0
  183. package/src/legacy/tool-ui/src/Page.css +884 -0
  184. package/src/legacy/tool-ui/src/PageNav.ts +108 -0
  185. package/src/legacy/tool-ui/src/PaginatedResult.css +20 -0
  186. package/src/legacy/tool-ui/src/Pagination.css +119 -0
  187. package/src/legacy/tool-ui/src/PastePopup.css +11 -0
  188. package/src/legacy/tool-ui/src/PlaceholderEditableMixin.ts +86 -0
  189. package/src/legacy/tool-ui/src/Popup.css +413 -0
  190. package/src/legacy/tool-ui/src/PostPublish.ts +12 -0
  191. package/src/legacy/tool-ui/src/PrePublish.ts +63 -0
  192. package/src/legacy/tool-ui/src/Preview.css +134 -0
  193. package/src/legacy/tool-ui/src/PrivilegeAccessWidget.css +27 -0
  194. package/src/legacy/tool-ui/src/ProfileDropdown.css +95 -0
  195. package/src/legacy/tool-ui/src/ProseMirror-table.css +159 -0
  196. package/src/legacy/tool-ui/src/ProseMirror.css +180 -0
  197. package/src/legacy/tool-ui/src/ProseMirrorContainer.css +40 -0
  198. package/src/legacy/tool-ui/src/ProseMirrorEnhancementMenu.css +68 -0
  199. package/src/legacy/tool-ui/src/ProseMirrorFindReplace.css +132 -0
  200. package/src/legacy/tool-ui/src/QueryField.css +77 -0
  201. package/src/legacy/tool-ui/src/README.md +235 -0
  202. package/src/legacy/tool-ui/src/RadialProgressBar.css +11 -0
  203. package/src/legacy/tool-ui/src/RadialProgressBar.ts +73 -0
  204. package/src/legacy/tool-ui/src/Radio.css +22 -0
  205. package/src/legacy/tool-ui/src/RepeatableContentInputGroup.css +470 -0
  206. package/src/legacy/tool-ui/src/RepeatableContentSelector.css +177 -0
  207. package/src/legacy/tool-ui/src/RepeatableTextInput.css +71 -0
  208. package/src/legacy/tool-ui/src/Revision.css +70 -0
  209. package/src/legacy/tool-ui/src/Revisions.css +292 -0
  210. package/src/legacy/tool-ui/src/RichText.css +15 -0
  211. package/src/legacy/tool-ui/src/SearchControlsToggle.ts +90 -0
  212. package/src/legacy/tool-ui/src/SearchFields.css +109 -0
  213. package/src/legacy/tool-ui/src/SearchInput.css +27 -0
  214. package/src/legacy/tool-ui/src/SearchResult.css +523 -0
  215. package/src/legacy/tool-ui/src/SearchWidget.css +441 -0
  216. package/src/legacy/tool-ui/src/SearchWidget.ts +154 -0
  217. package/src/legacy/tool-ui/src/SearchWidgetAdvanced.css +109 -0
  218. package/src/legacy/tool-ui/src/SharePreview.css +71 -0
  219. package/src/legacy/tool-ui/src/SkipLinks.css +23 -0
  220. package/src/legacy/tool-ui/src/SkipLinks.ts +112 -0
  221. package/src/legacy/tool-ui/src/SlackAuthentication.css +9 -0
  222. package/src/legacy/tool-ui/src/Sortable.css +50 -0
  223. package/src/legacy/tool-ui/src/Spellcheck.css +34 -0
  224. package/src/legacy/tool-ui/src/StyleEmbeddedContent.css +62 -0
  225. package/src/legacy/tool-ui/src/Suggestions.css +53 -0
  226. package/src/legacy/tool-ui/src/Suggestions.ts +209 -0
  227. package/src/legacy/tool-ui/src/TabBar.css +174 -0
  228. package/src/legacy/tool-ui/src/TabContainer.css +40 -0
  229. package/src/legacy/tool-ui/src/Table.css +107 -0
  230. package/src/legacy/tool-ui/src/TableSizerPopup.css +42 -0
  231. package/src/legacy/tool-ui/src/Taxonomy.css +60 -0
  232. package/src/legacy/tool-ui/src/TextInput.css +40 -0
  233. package/src/legacy/tool-ui/src/Theme.css +64 -0
  234. package/src/legacy/tool-ui/src/ThemeBundleEditor.css +93 -0
  235. package/src/legacy/tool-ui/src/TimedContent.css +74 -0
  236. package/src/legacy/tool-ui/src/Toggleable/README.md +90 -0
  237. package/src/legacy/tool-ui/src/Toggleable/index.ts +230 -0
  238. package/src/legacy/tool-ui/src/Translation.css +115 -0
  239. package/src/legacy/tool-ui/src/Translation.ts +20 -0
  240. package/src/legacy/tool-ui/src/TreeList.css +45 -0
  241. package/src/legacy/tool-ui/src/Types.ts +44 -0
  242. package/src/legacy/tool-ui/src/Utilities.css +7 -0
  243. package/src/legacy/tool-ui/src/ViewMirror.css +7 -0
  244. package/src/legacy/tool-ui/src/ViewPreview.css +59 -0
  245. package/src/legacy/tool-ui/src/ViewWatchers.css +69 -0
  246. package/src/legacy/tool-ui/src/Viewers.css +21 -0
  247. package/src/legacy/tool-ui/src/Week.css +23 -0
  248. package/src/legacy/tool-ui/src/Widget.css +622 -0
  249. package/src/legacy/tool-ui/src/WorkStreams.css +97 -0
  250. package/src/legacy/tool-ui/src/Workflow.css +100 -0
  251. package/src/legacy/tool-ui/src/Workstreams.ts +52 -0
  252. package/src/legacy/tool-ui/src/WrappingMixin.ts +77 -0
  253. package/src/legacy/tool-ui/src/additional-tailwind-classes.txt +205 -0
  254. package/src/legacy/tool-ui/src/bsp-tracking.d.ts +27 -0
  255. package/src/legacy/tool-ui/src/dialog/README.md +83 -0
  256. package/src/legacy/tool-ui/src/dialog/index.ts +465 -0
  257. package/src/legacy/tool-ui/src/dom/README.md +63 -0
  258. package/src/legacy/tool-ui/src/dom/Tether.ts +135 -0
  259. package/src/legacy/tool-ui/src/dom/TetherLayout.ts +149 -0
  260. package/src/legacy/tool-ui/src/dom/aria.ts +123 -0
  261. package/src/legacy/tool-ui/src/dom/closest.ts +5 -0
  262. package/src/legacy/tool-ui/src/dom/create.ts +46 -0
  263. package/src/legacy/tool-ui/src/dom/find.ts +5 -0
  264. package/src/legacy/tool-ui/src/dom/findAll.ts +5 -0
  265. package/src/legacy/tool-ui/src/dom/focusable.ts +29 -0
  266. package/src/legacy/tool-ui/src/dom/ifClick.ts +18 -0
  267. package/src/legacy/tool-ui/src/dom/ifMatches.ts +17 -0
  268. package/src/legacy/tool-ui/src/dom/ifUnmodified.ts +16 -0
  269. package/src/legacy/tool-ui/src/dom/insertBefore.ts +4 -0
  270. package/src/legacy/tool-ui/src/dom/insertFirst.ts +4 -0
  271. package/src/legacy/tool-ui/src/dom/insertLast.ts +4 -0
  272. package/src/legacy/tool-ui/src/dom/keyboard.ts +176 -0
  273. package/src/legacy/tool-ui/src/dom/onFind.ts +277 -0
  274. package/src/legacy/tool-ui/src/dom/onFindOnce.ts +31 -0
  275. package/src/legacy/tool-ui/src/dom/onRTEReady.ts +105 -0
  276. package/src/legacy/tool-ui/src/dom/onRemove.ts +27 -0
  277. package/src/legacy/tool-ui/src/dom/onVisible.ts +29 -0
  278. package/src/legacy/tool-ui/src/dom/popupMenu.d.ts +6 -0
  279. package/src/legacy/tool-ui/src/dom/popupMenu.js +282 -0
  280. package/src/legacy/tool-ui/src/dom/previousUntil.ts +22 -0
  281. package/src/legacy/tool-ui/src/dropdown/README.md +9 -0
  282. package/src/legacy/tool-ui/src/dropdown/index.ts +105 -0
  283. package/src/legacy/tool-ui/src/form/CodeInput/CodeMirror.less +168 -0
  284. package/src/legacy/tool-ui/src/form/CodeInput/CodeMirror.ts +15 -0
  285. package/src/legacy/tool-ui/src/form/CodeInput/index.ts +86 -0
  286. package/src/legacy/tool-ui/src/form/FormFilter/README.md +31 -0
  287. package/src/legacy/tool-ui/src/form/FormFilter/index.ts +340 -0
  288. package/src/legacy/tool-ui/src/form/Input/index.less +43 -0
  289. package/src/legacy/tool-ui/src/form/Input/index.ts +92 -0
  290. package/src/legacy/tool-ui/src/form/SearchInput/README.md +23 -0
  291. package/src/legacy/tool-ui/src/form/SearchInput/index.ts +89 -0
  292. package/src/legacy/tool-ui/src/form/TextAreaInput/index.less +11 -0
  293. package/src/legacy/tool-ui/src/form/TextAreaInput/index.ts +36 -0
  294. package/src/legacy/tool-ui/src/graphql/GraphQL.ts +49 -0
  295. package/src/legacy/tool-ui/src/graphql/GraphQLPreview.ts +23 -0
  296. package/src/legacy/tool-ui/src/main/resources/settings.properties +1 -0
  297. package/src/legacy/tool-ui/src/main/webapp/WEB-INF/web.xml +81 -0
  298. package/src/legacy/tool-ui/src/main/webapp/dist/011a678e3efe41981754.png +1 -0
  299. package/src/legacy/tool-ui/src/main/webapp/dist/1173.080a90c5923854fc48e6.js +2 -0
  300. package/src/legacy/tool-ui/src/main/webapp/dist/1173.080a90c5923854fc48e6.js.LICENSE.txt +10 -0
  301. package/src/legacy/tool-ui/src/main/webapp/dist/194137260531ee29a5f2.svg +1 -0
  302. package/src/legacy/tool-ui/src/main/webapp/dist/1946.156c6821383df2638492.js +1 -0
  303. package/src/legacy/tool-ui/src/main/webapp/dist/1950.3594aaa4f20df28f39d9.js +1 -0
  304. package/src/legacy/tool-ui/src/main/webapp/dist/1e8408af1a34bdf61457.png +1 -0
  305. package/src/legacy/tool-ui/src/main/webapp/dist/2111.3956b5196a514b2c0131.js +1 -0
  306. package/src/legacy/tool-ui/src/main/webapp/dist/2111.a937b0cafa8cf7c039d2.css +1 -0
  307. package/src/legacy/tool-ui/src/main/webapp/dist/2129.6b044e5564dd3dbb2f94.js +1 -0
  308. package/src/legacy/tool-ui/src/main/webapp/dist/2314.420883b6638f35f40e70.js +1 -0
  309. package/src/legacy/tool-ui/src/main/webapp/dist/2456.5bcfb782c2ec27de32ed.js +1 -0
  310. package/src/legacy/tool-ui/src/main/webapp/dist/2537.e8f1359bedd328bf57f4.js +1 -0
  311. package/src/legacy/tool-ui/src/main/webapp/dist/2565.4ca31a6a46de85cd3b31.js +1 -0
  312. package/src/legacy/tool-ui/src/main/webapp/dist/270.3011484ff80f3093083a.js +1 -0
  313. package/src/legacy/tool-ui/src/main/webapp/dist/2825.c1342ac2662d11fd4125.js +1 -0
  314. package/src/legacy/tool-ui/src/main/webapp/dist/2947.f96d21c44c05980974ef.js +1 -0
  315. package/src/legacy/tool-ui/src/main/webapp/dist/3532.c358dfbb2cde0f802c7f.js +1 -0
  316. package/src/legacy/tool-ui/src/main/webapp/dist/3543.2d704cf9e170322468e7.js +2 -0
  317. package/src/legacy/tool-ui/src/main/webapp/dist/3543.2d704cf9e170322468e7.js.LICENSE.txt +1 -0
  318. package/src/legacy/tool-ui/src/main/webapp/dist/3611.61837ffa933f74502094.js +1 -0
  319. package/src/legacy/tool-ui/src/main/webapp/dist/3790.74b7037d430ed0a47d0c.js +1 -0
  320. package/src/legacy/tool-ui/src/main/webapp/dist/3995.afbec58662cafb46ec2c.js +1 -0
  321. package/src/legacy/tool-ui/src/main/webapp/dist/4017.c3ed1ca3be18b5c080c8.js +1 -0
  322. package/src/legacy/tool-ui/src/main/webapp/dist/4093.152620c022c3013502b7.js +1 -0
  323. package/src/legacy/tool-ui/src/main/webapp/dist/4114.57fe159e416e716f8cbc.js +1 -0
  324. package/src/legacy/tool-ui/src/main/webapp/dist/4168.a224af7c5c5f6f2ddd7b.js +1 -0
  325. package/src/legacy/tool-ui/src/main/webapp/dist/4374.37147747a254da8f5f8a.js +1 -0
  326. package/src/legacy/tool-ui/src/main/webapp/dist/4450.16dd5684292fd0a7ea7f.js +1 -0
  327. package/src/legacy/tool-ui/src/main/webapp/dist/4478.93f64e6a6ccb35a6c6d4.js +1 -0
  328. package/src/legacy/tool-ui/src/main/webapp/dist/44b38a404dec4643c46b.png +1 -0
  329. package/src/legacy/tool-ui/src/main/webapp/dist/4582.243dbaa3d8a8648f6f40.js +1 -0
  330. package/src/legacy/tool-ui/src/main/webapp/dist/4709.4f6b707e225e481a928e.js +1 -0
  331. package/src/legacy/tool-ui/src/main/webapp/dist/4790.10d75f7c7f8e54ce83a1.js +1 -0
  332. package/src/legacy/tool-ui/src/main/webapp/dist/4795.034ebc93a67b7a3d6536.js +1 -0
  333. package/src/legacy/tool-ui/src/main/webapp/dist/4850.6b944738520f69c98070.js +1 -0
  334. package/src/legacy/tool-ui/src/main/webapp/dist/4a4ee777ddc0d4cedee4.png +1 -0
  335. package/src/legacy/tool-ui/src/main/webapp/dist/5001.a61ae5608398d5d98ab1.js +1 -0
  336. package/src/legacy/tool-ui/src/main/webapp/dist/5030.1e8b82e1444067d492b1.js +1 -0
  337. package/src/legacy/tool-ui/src/main/webapp/dist/5055.620ccb3717b4a6427f09.js +1 -0
  338. package/src/legacy/tool-ui/src/main/webapp/dist/5098.33613009827cfc80aafb.js +1 -0
  339. package/src/legacy/tool-ui/src/main/webapp/dist/5385.6656501b67424994820b.js +1 -0
  340. package/src/legacy/tool-ui/src/main/webapp/dist/5598.d84773ca53126661bdca.js +2 -0
  341. package/src/legacy/tool-ui/src/main/webapp/dist/5598.d84773ca53126661bdca.js.LICENSE.txt +11 -0
  342. package/src/legacy/tool-ui/src/main/webapp/dist/5617.c81ecb679371ca302f1f.js +1 -0
  343. package/src/legacy/tool-ui/src/main/webapp/dist/5718.449113ae2463a3bb8a83.js +2 -0
  344. package/src/legacy/tool-ui/src/main/webapp/dist/5718.449113ae2463a3bb8a83.js.LICENSE.txt +8 -0
  345. package/src/legacy/tool-ui/src/main/webapp/dist/6047.291dd2d4b3f79be2c64d.js +1 -0
  346. package/src/legacy/tool-ui/src/main/webapp/dist/6086.7ca02b827506f29db590.js +1 -0
  347. package/src/legacy/tool-ui/src/main/webapp/dist/6216.cf8adc1990ee1111f065.js +1 -0
  348. package/src/legacy/tool-ui/src/main/webapp/dist/6497.b7d8dcbf0e7c8d8d538d.js +1 -0
  349. package/src/legacy/tool-ui/src/main/webapp/dist/6565.0e5abc3bd344c53ae154.js +1 -0
  350. package/src/legacy/tool-ui/src/main/webapp/dist/7033.4cd6efbe12e7aaa35745.js +1 -0
  351. package/src/legacy/tool-ui/src/main/webapp/dist/7202.1e5b8f21215ea6eae20a.js +1 -0
  352. package/src/legacy/tool-ui/src/main/webapp/dist/7361.793163ca71dfac69d9eb.js +1 -0
  353. package/src/legacy/tool-ui/src/main/webapp/dist/75.e45c9aec6e7409bfe21d.js +1 -0
  354. package/src/legacy/tool-ui/src/main/webapp/dist/7524.2990be869cf0a2988d17.js +1 -0
  355. package/src/legacy/tool-ui/src/main/webapp/dist/7554.bb243c1fb06a125f6353.js +1 -0
  356. package/src/legacy/tool-ui/src/main/webapp/dist/7718.a937b0cafa8cf7c039d2.css +1 -0
  357. package/src/legacy/tool-ui/src/main/webapp/dist/7718.f5996ddd99f2353c7785.js +1 -0
  358. package/src/legacy/tool-ui/src/main/webapp/dist/7741.0b2789c4e783af835763.js +1 -0
  359. package/src/legacy/tool-ui/src/main/webapp/dist/7769.d47f40cc83035fc2392a.js +1 -0
  360. package/src/legacy/tool-ui/src/main/webapp/dist/7863.2a1d1fd229778a47e10b.js +1 -0
  361. package/src/legacy/tool-ui/src/main/webapp/dist/7923.8a92f55de8387f7a8a35.js +1 -0
  362. package/src/legacy/tool-ui/src/main/webapp/dist/8684.7171c731d38a9873d6df.js +1 -0
  363. package/src/legacy/tool-ui/src/main/webapp/dist/8752.3d02a0f42ec39786fdf0.js +1 -0
  364. package/src/legacy/tool-ui/src/main/webapp/dist/8897.bfeed19f2a4acbb6d67c.js +1 -0
  365. package/src/legacy/tool-ui/src/main/webapp/dist/8934.e90ceca8169fc25e4e1b.js +1 -0
  366. package/src/legacy/tool-ui/src/main/webapp/dist/9277.88b2d89b3ba1c24e7f93.js +2 -0
  367. package/src/legacy/tool-ui/src/main/webapp/dist/9277.88b2d89b3ba1c24e7f93.js.LICENSE.txt +9 -0
  368. package/src/legacy/tool-ui/src/main/webapp/dist/9360.bb0352313d610cae11de.js +2 -0
  369. package/src/legacy/tool-ui/src/main/webapp/dist/9360.bb0352313d610cae11de.js.LICENSE.txt +33 -0
  370. package/src/legacy/tool-ui/src/main/webapp/dist/9561.64eab18c8c1bbc4ad8ec.js +1 -0
  371. package/src/legacy/tool-ui/src/main/webapp/dist/9576.174d6a99544d17e7416d.js +1 -0
  372. package/src/legacy/tool-ui/src/main/webapp/dist/983.eedba1cd484aa5bee0c4.js +1 -0
  373. package/src/legacy/tool-ui/src/main/webapp/dist/Appetizeio.185641211f7c0e42a455.js +1 -0
  374. package/src/legacy/tool-ui/src/main/webapp/dist/CISpectrum.74db7dc80b3a6797a167.js +1 -0
  375. package/src/legacy/tool-ui/src/main/webapp/dist/Chart.223ea4ee9e3e32b67a26.js +1 -0
  376. package/src/legacy/tool-ui/src/main/webapp/dist/ChartCompat.4dd096dd030942227ec6.js +1 -0
  377. package/src/legacy/tool-ui/src/main/webapp/dist/CodeMirror.5ddffe054374f883d6f8.js +1 -0
  378. package/src/legacy/tool-ui/src/main/webapp/dist/ImageEditor.14e3b3035666436f53a5.js +1 -0
  379. package/src/legacy/tool-ui/src/main/webapp/dist/LocationMap.72a510c0f5ff236f596e.js +1 -0
  380. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.7561297911cca56da5dd.js +500 -0
  381. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.7561297911cca56da5dd.js.LICENSE.txt +8 -0
  382. package/src/legacy/tool-ui/src/main/webapp/dist/RegionMap.63f3b2303ab369a05073.js +1 -0
  383. package/src/legacy/tool-ui/src/main/webapp/dist/TimedContent.4bb4dc83ffbe4019dd7b.js +1 -0
  384. package/src/legacy/tool-ui/src/main/webapp/dist/VideoEditor.11c89dda5cf125738a33.js +2 -0
  385. package/src/legacy/tool-ui/src/main/webapp/dist/VideoEditor.11c89dda5cf125738a33.js.LICENSE.txt +23 -0
  386. package/src/legacy/tool-ui/src/main/webapp/dist/c6e9c007f41bd4d26c20.png +1 -0
  387. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.map +1 -0
  388. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.js +2 -0
  389. package/src/legacy/tool-ui/src/main/webapp/dist/iframeResizer.contentWindow.min.js.LICENSE.txt +7 -0
  390. package/src/legacy/tool-ui/src/main/webapp/dist/lucide.woff2 +0 -0
  391. package/src/legacy/tool-ui/src/main/webapp/dist/preview.d46d98e5ca9dba0a0f5a.js +1 -0
  392. package/src/legacy/tool-ui/src/main/webapp/dist/v4.63bc3566a89786faeb89.js +92 -0
  393. package/src/legacy/tool-ui/src/main/webapp/dist/v4.63bc3566a89786faeb89.js.LICENSE.txt +71 -0
  394. package/src/legacy/tool-ui/src/main/webapp/dist/v4.a6f53058dbb04a69aa5c.css +3 -0
  395. package/src/legacy/tool-ui/src/main/webapp/dist/v5.5e3fdf0f0b20b4e3c170.css +5 -0
  396. package/src/legacy/tool-ui/src/main/webapp/dist/v5.702238fcabd666eba152.js +92 -0
  397. package/src/legacy/tool-ui/src/main/webapp/dist/v5.702238fcabd666eba152.js.LICENSE.txt +78 -0
  398. package/src/legacy/tool-ui/src/main/webapp/script/bsp-uploader.js +170 -0
  399. package/src/legacy/tool-ui/src/main/webapp/script/bsp-utils.js +393 -0
  400. package/src/legacy/tool-ui/src/main/webapp/script/content/layout-element.js +141 -0
  401. package/src/legacy/tool-ui/src/main/webapp/script/input/query.js +78 -0
  402. package/src/legacy/tool-ui/src/main/webapp/script/input/workflow.js +718 -0
  403. package/src/legacy/tool-ui/src/main/webapp/script/jquery.extra.js +633 -0
  404. package/src/legacy/tool-ui/src/main/webapp/script/v3/Dropbox.js +18 -0
  405. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdate.js +406 -0
  406. package/src/legacy/tool-ui/src/main/webapp/script/v3/EditFieldUpdateCache.js +1 -0
  407. package/src/legacy/tool-ui/src/main/webapp/script/v3/Notification.js +151 -0
  408. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/edit.js +194 -0
  409. package/src/legacy/tool-ui/src/main/webapp/script/v3/content/state.js +785 -0
  410. package/src/legacy/tool-ui/src/main/webapp/script/v3/csrf.js +35 -0
  411. package/src/legacy/tool-ui/src/main/webapp/script/v3/dashboard.js +65 -0
  412. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/dataTransfer.js +129 -0
  413. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/file.js +433 -0
  414. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/object.js +743 -0
  415. package/src/legacy/tool-ui/src/main/webapp/script/v3/input/read-only.js +17 -0
  416. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.frame.js +478 -0
  417. package/src/legacy/tool-ui/src/main/webapp/script/v3/jquery.repeatable.js +2406 -0
  418. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.d.ts +2 -0
  419. package/src/legacy/tool-ui/src/main/webapp/script/v3/plugin/popup.js +446 -0
  420. package/src/legacy/tool-ui/src/main/webapp/script/v3/search-filters.js +62 -0
  421. package/src/legacy/tool-ui/src/main/webapp/script/v3/search.js +53 -0
  422. package/src/legacy/tool-ui/src/main/webapp/script/v3.js +1049 -0
  423. package/src/legacy/tool-ui/src/main/webapp/style/v3/ExternalPreviewFrame.less +6 -0
  424. package/src/legacy/tool-ui/src/main/webapp/style/v3/WidgetSearchAdvancedQuery.less +24 -0
  425. package/src/legacy/tool-ui/src/main/webapp/style/v3/element.less +11 -0
  426. package/src/legacy/tool-ui/src/main/webapp/style/v3/icon/ajax-loader.gif +0 -0
  427. package/src/legacy/tool-ui/src/main/webapp/style/v3/index.less +98 -0
  428. package/src/legacy/tool-ui/src/main/webapp/style/v3/repeatable.less +89 -0
  429. package/src/legacy/tool-ui/src/main/webapp/style/v3/variables.less +53 -0
  430. package/src/legacy/tool-ui/src/main/webapp/v4/ActionBar.less +44 -0
  431. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.js +16 -0
  432. package/src/legacy/tool-ui/src/main/webapp/v4/Admin.less +253 -0
  433. package/src/legacy/tool-ui/src/main/webapp/v4/AdobeStock.less +20 -0
  434. package/src/legacy/tool-ui/src/main/webapp/v4/Apis.less +43 -0
  435. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.js +84 -0
  436. package/src/legacy/tool-ui/src/main/webapp/v4/AutoExpand.less +36 -0
  437. package/src/legacy/tool-ui/src/main/webapp/v4/AutoSubmit.js +68 -0
  438. package/src/legacy/tool-ui/src/main/webapp/v4/Avatar.less +30 -0
  439. package/src/legacy/tool-ui/src/main/webapp/v4/BackgroundTasks.less +52 -0
  440. package/src/legacy/tool-ui/src/main/webapp/v4/Badge.less +10 -0
  441. package/src/legacy/tool-ui/src/main/webapp/v4/Board.less +311 -0
  442. package/src/legacy/tool-ui/src/main/webapp/v4/Bridge.js +536 -0
  443. package/src/legacy/tool-ui/src/main/webapp/v4/BulletedList.less +17 -0
  444. package/src/legacy/tool-ui/src/main/webapp/v4/Button.less +105 -0
  445. package/src/legacy/tool-ui/src/main/webapp/v4/CIGCluster.less +55 -0
  446. package/src/legacy/tool-ui/src/main/webapp/v4/Card.less +53 -0
  447. package/src/legacy/tool-ui/src/main/webapp/v4/Checkbox.less +99 -0
  448. package/src/legacy/tool-ui/src/main/webapp/v4/CheckboxInput.js +22 -0
  449. package/src/legacy/tool-ui/src/main/webapp/v4/Collections.less +49 -0
  450. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInput.js +5 -0
  451. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.js +107 -0
  452. package/src/legacy/tool-ui/src/main/webapp/v4/ColorInputSpectrum.less +319 -0
  453. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.js +1491 -0
  454. package/src/legacy/tool-ui/src/main/webapp/v4/ComboInput.less +403 -0
  455. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.js +29 -0
  456. package/src/legacy/tool-ui/src/main/webapp/v4/CommunityWidget.less +73 -0
  457. package/src/legacy/tool-ui/src/main/webapp/v4/Compat.less +7 -0
  458. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.js +2427 -0
  459. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEdit.less +1512 -0
  460. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEditDrawer.less +329 -0
  461. package/src/legacy/tool-ui/src/main/webapp/v4/ContentEditSites.less +5 -0
  462. package/src/legacy/tool-ui/src/main/webapp/v4/ContentForm.less +174 -0
  463. package/src/legacy/tool-ui/src/main/webapp/v4/ContentInputGroup.less +669 -0
  464. package/src/legacy/tool-ui/src/main/webapp/v4/ContentLock.js +470 -0
  465. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.js +32 -0
  466. package/src/legacy/tool-ui/src/main/webapp/v4/ContentReporting.less +39 -0
  467. package/src/legacy/tool-ui/src/main/webapp/v4/ContentSelector.less +268 -0
  468. package/src/legacy/tool-ui/src/main/webapp/v4/ContentSummary.less +238 -0
  469. package/src/legacy/tool-ui/src/main/webapp/v4/ContentTools.less +73 -0
  470. package/src/legacy/tool-ui/src/main/webapp/v4/ContentType.less +24 -0
  471. package/src/legacy/tool-ui/src/main/webapp/v4/CopyToClipboard.less +20 -0
  472. package/src/legacy/tool-ui/src/main/webapp/v4/DashboardRow.less +40 -0
  473. package/src/legacy/tool-ui/src/main/webapp/v4/DashboardWidget.less +193 -0
  474. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.js +31 -0
  475. package/src/legacy/tool-ui/src/main/webapp/v4/DataTable.less +52 -0
  476. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.js +485 -0
  477. package/src/legacy/tool-ui/src/main/webapp/v4/DateStringField.less +148 -0
  478. package/src/legacy/tool-ui/src/main/webapp/v4/DateTimeInput.less +58 -0
  479. package/src/legacy/tool-ui/src/main/webapp/v4/Diff.less +322 -0
  480. package/src/legacy/tool-ui/src/main/webapp/v4/Downloads.css +11 -0
  481. package/src/legacy/tool-ui/src/main/webapp/v4/Draggable.less +42 -0
  482. package/src/legacy/tool-ui/src/main/webapp/v4/Dropdown.less +76 -0
  483. package/src/legacy/tool-ui/src/main/webapp/v4/EmbeddedInputGroup.less +141 -0
  484. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.js +264 -0
  485. package/src/legacy/tool-ui/src/main/webapp/v4/Entry.less +157 -0
  486. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemAuth.js +16 -0
  487. package/src/legacy/tool-ui/src/main/webapp/v4/ExternalItemImport.less +3 -0
  488. package/src/legacy/tool-ui/src/main/webapp/v4/FileInput.less +194 -0
  489. package/src/legacy/tool-ui/src/main/webapp/v4/Form.js +31 -0
  490. package/src/legacy/tool-ui/src/main/webapp/v4/FormFilter.less +189 -0
  491. package/src/legacy/tool-ui/src/main/webapp/v4/Frame.less +26 -0
  492. package/src/legacy/tool-ui/src/main/webapp/v4/GraphQLApis.less +4 -0
  493. package/src/legacy/tool-ui/src/main/webapp/v4/Grid.less +48 -0
  494. package/src/legacy/tool-ui/src/main/webapp/v4/Guide.less +209 -0
  495. package/src/legacy/tool-ui/src/main/webapp/v4/GuideField.less +108 -0
  496. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.js +100 -0
  497. package/src/legacy/tool-ui/src/main/webapp/v4/Hierarchy.less +89 -0
  498. package/src/legacy/tool-ui/src/main/webapp/v4/Highlight.less +5 -0
  499. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.less +53 -0
  500. package/src/legacy/tool-ui/src/main/webapp/v4/Icon.ts +49 -0
  501. package/src/legacy/tool-ui/src/main/webapp/v4/IconButton.less +111 -0
  502. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.js +2403 -0
  503. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditor.less +922 -0
  504. package/src/legacy/tool-ui/src/main/webapp/v4/ImageEditorBundle.js +5 -0
  505. package/src/legacy/tool-ui/src/main/webapp/v4/Input.less +15 -0
  506. package/src/legacy/tool-ui/src/main/webapp/v4/InputRow.less +35 -0
  507. package/src/legacy/tool-ui/src/main/webapp/v4/Label.less +12 -0
  508. package/src/legacy/tool-ui/src/main/webapp/v4/LabeledCheckbox.less +35 -0
  509. package/src/legacy/tool-ui/src/main/webapp/v4/Link.less +93 -0
  510. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.js +40 -0
  511. package/src/legacy/tool-ui/src/main/webapp/v4/LinkCarousel.less +143 -0
  512. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.js +14 -0
  513. package/src/legacy/tool-ui/src/main/webapp/v4/LinkList.less +150 -0
  514. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.js +123 -0
  515. package/src/legacy/tool-ui/src/main/webapp/v4/LinkTable.less +112 -0
  516. package/src/legacy/tool-ui/src/main/webapp/v4/Location.js +19 -0
  517. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.js +148 -0
  518. package/src/legacy/tool-ui/src/main/webapp/v4/LocationMap.less +62 -0
  519. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.js +24 -0
  520. package/src/legacy/tool-ui/src/main/webapp/v4/LookingGlass.less +30 -0
  521. package/src/legacy/tool-ui/src/main/webapp/v4/Message.js +14 -0
  522. package/src/legacy/tool-ui/src/main/webapp/v4/Message.less +189 -0
  523. package/src/legacy/tool-ui/src/main/webapp/v4/Month.less +102 -0
  524. package/src/legacy/tool-ui/src/main/webapp/v4/Notification.less +278 -0
  525. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.js +32 -0
  526. package/src/legacy/tool-ui/src/main/webapp/v4/NumberBar.less +21 -0
  527. package/src/legacy/tool-ui/src/main/webapp/v4/NumberedList.less +17 -0
  528. package/src/legacy/tool-ui/src/main/webapp/v4/Page.js +890 -0
  529. package/src/legacy/tool-ui/src/main/webapp/v4/Page.less +922 -0
  530. package/src/legacy/tool-ui/src/main/webapp/v4/PaginatedResult.less +89 -0
  531. package/src/legacy/tool-ui/src/main/webapp/v4/Pagination.less +80 -0
  532. package/src/legacy/tool-ui/src/main/webapp/v4/Popup.less +415 -0
  533. package/src/legacy/tool-ui/src/main/webapp/v4/PrePublish.less +5 -0
  534. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.js +758 -0
  535. package/src/legacy/tool-ui/src/main/webapp/v4/Preview.less +495 -0
  536. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewEditor.js +86 -0
  537. package/src/legacy/tool-ui/src/main/webapp/v4/PreviewOverlay.js +1005 -0
  538. package/src/legacy/tool-ui/src/main/webapp/v4/ProfileDropdown.less +66 -0
  539. package/src/legacy/tool-ui/src/main/webapp/v4/PubSub.js +47 -0
  540. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.js +211 -0
  541. package/src/legacy/tool-ui/src/main/webapp/v4/QueryField.less +147 -0
  542. package/src/legacy/tool-ui/src/main/webapp/v4/RadialProgressBar.less +20 -0
  543. package/src/legacy/tool-ui/src/main/webapp/v4/RegionMap.js +215 -0
  544. package/src/legacy/tool-ui/src/main/webapp/v4/Repeatable.less +102 -0
  545. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.js +160 -0
  546. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentInputGroup.less +731 -0
  547. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableContentSelector.less +296 -0
  548. package/src/legacy/tool-ui/src/main/webapp/v4/RepeatableTextInput.less +156 -0
  549. package/src/legacy/tool-ui/src/main/webapp/v4/Reset.less +373 -0
  550. package/src/legacy/tool-ui/src/main/webapp/v4/Revision.less +50 -0
  551. package/src/legacy/tool-ui/src/main/webapp/v4/RichText.less +32 -0
  552. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.js +154 -0
  553. package/src/legacy/tool-ui/src/main/webapp/v4/RichTextEditor.less +197 -0
  554. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.js +281 -0
  555. package/src/legacy/tool-ui/src/main/webapp/v4/SearchFields.less +403 -0
  556. package/src/legacy/tool-ui/src/main/webapp/v4/SearchInput.less +65 -0
  557. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.js +255 -0
  558. package/src/legacy/tool-ui/src/main/webapp/v4/SearchResult.less +479 -0
  559. package/src/legacy/tool-ui/src/main/webapp/v4/SearchWidget.less +697 -0
  560. package/src/legacy/tool-ui/src/main/webapp/v4/SearchWidgetAdvanced.less +115 -0
  561. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.js +56 -0
  562. package/src/legacy/tool-ui/src/main/webapp/v4/SharePreview.less +95 -0
  563. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.js +874 -0
  564. package/src/legacy/tool-ui/src/main/webapp/v4/Sortable.less +242 -0
  565. package/src/legacy/tool-ui/src/main/webapp/v4/StandardForm.less +12 -0
  566. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.js +100 -0
  567. package/src/legacy/tool-ui/src/main/webapp/v4/StyleEmbeddedContent.less +131 -0
  568. package/src/legacy/tool-ui/src/main/webapp/v4/StyleguidePresets.js +357 -0
  569. package/src/legacy/tool-ui/src/main/webapp/v4/Suggestions.less +121 -0
  570. package/src/legacy/tool-ui/src/main/webapp/v4/TabBar.less +258 -0
  571. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.js +360 -0
  572. package/src/legacy/tool-ui/src/main/webapp/v4/TabContainer.less +26 -0
  573. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.js +27 -0
  574. package/src/legacy/tool-ui/src/main/webapp/v4/Taxonomy.less +84 -0
  575. package/src/legacy/tool-ui/src/main/webapp/v4/Text.less +41 -0
  576. package/src/legacy/tool-ui/src/main/webapp/v4/TextInput.less +32 -0
  577. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.js +224 -0
  578. package/src/legacy/tool-ui/src/main/webapp/v4/ThemeBundleEditor.less +106 -0
  579. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.js +147 -0
  580. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContent.less +202 -0
  581. package/src/legacy/tool-ui/src/main/webapp/v4/TimedContentBundle.js +8 -0
  582. package/src/legacy/tool-ui/src/main/webapp/v4/TreeList.less +93 -0
  583. package/src/legacy/tool-ui/src/main/webapp/v4/Utils.css +14 -0
  584. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.js +2417 -0
  585. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditor.less +737 -0
  586. package/src/legacy/tool-ui/src/main/webapp/v4/VideoEditorBundle.js +8 -0
  587. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.js +52 -0
  588. package/src/legacy/tool-ui/src/main/webapp/v4/ViewMirror.less +42 -0
  589. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.d.ts +13 -0
  590. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.js +177 -0
  591. package/src/legacy/tool-ui/src/main/webapp/v4/ViewPreview.less +147 -0
  592. package/src/legacy/tool-ui/src/main/webapp/v4/Viewers.less +70 -0
  593. package/src/legacy/tool-ui/src/main/webapp/v4/Week.less +32 -0
  594. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.js +90 -0
  595. package/src/legacy/tool-ui/src/main/webapp/v4/Widget.less +224 -0
  596. package/src/legacy/tool-ui/src/main/webapp/v4/Workflow.less +153 -0
  597. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/fileMock.js +1 -0
  598. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/styleMock.js +1 -0
  599. package/src/legacy/tool-ui/src/main/webapp/v4/__mocks__/textArea.mock.js +20 -0
  600. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/globals.js +770 -0
  601. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/ProseMirror.test.js +16 -0
  602. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/index.html +54 -0
  603. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/CommentManager.test.js +29 -0
  604. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/comment_manager/index.html +35 -0
  605. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/CustomKeyboard.js +42 -0
  606. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/custom_keyboard/index.html +37 -0
  607. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/EnhancementManager.test.js +288 -0
  608. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/block.html +38 -0
  609. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/inline.html +38 -0
  610. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/enhancement_manager/no-popups.html +38 -0
  611. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/ListManager.js +257 -0
  612. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/list_manager/index.html +38 -0
  613. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/hierarchal.html +33 -0
  614. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/index.html +33 -0
  615. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/menubar.test.js +195 -0
  616. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/small.html +34 -0
  617. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/menubar/tags.html +34 -0
  618. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/PlaceholderManager.test.js +134 -0
  619. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-editable-placeholder.html +32 -0
  620. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/has-text.html +34 -0
  621. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/placeholder_manager/index.html +31 -0
  622. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/TableManager.test.js +63 -0
  623. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/table_manager/existing.html +48 -0
  624. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/TrackManager.test.js +291 -0
  625. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/existing.html +39 -0
  626. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/integration/rte/plugins/track_manager/insert.html +37 -0
  627. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/Sortable.test.js +105 -0
  628. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/ProseMirror.test.js +41 -0
  629. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/codemirror-shim.test.js +72 -0
  630. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/collab_manager/CollabManager.test.js +46 -0
  631. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/enhancement_manager/EnhancementManager.test.js +84 -0
  632. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/list_manager/ListManager.test.js +54 -0
  633. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/menubar/menubar.test.js +183 -0
  634. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/plugins/spellcheck/SpellCheck.test.js +45 -0
  635. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/BSSerializer.test.js +346 -0
  636. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/settings/menuItemsBuilder.test.js +226 -0
  637. package/src/legacy/tool-ui/src/main/webapp/v4/__tests__/unit/rte/utilities.test.js +118 -0
  638. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/Appetizeio.js +5 -0
  639. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.js +113 -0
  640. package/src/legacy/tool-ui/src/main/webapp/v4/appetizeio/AppetizeioEmbedded.less +77 -0
  641. package/src/legacy/tool-ui/src/main/webapp/v4/bsp-rings-bg.svg +9 -0
  642. package/src/legacy/tool-ui/src/main/webapp/v4/compat/Fetch.js +16 -0
  643. package/src/legacy/tool-ui/src/main/webapp/v4/compat/jquery.js +32 -0
  644. package/src/legacy/tool-ui/src/main/webapp/v4/compat/requirejs.js +13 -0
  645. package/src/legacy/tool-ui/src/main/webapp/v4/dom/Tether.js +1 -0
  646. package/src/legacy/tool-ui/src/main/webapp/v4/dom/TetherLayout.js +1 -0
  647. package/src/legacy/tool-ui/src/main/webapp/v4/dom/closest.js +1 -0
  648. package/src/legacy/tool-ui/src/main/webapp/v4/dom/create.js +1 -0
  649. package/src/legacy/tool-ui/src/main/webapp/v4/dom/find.js +1 -0
  650. package/src/legacy/tool-ui/src/main/webapp/v4/dom/findAll.js +1 -0
  651. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifClick.js +1 -0
  652. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifMatches.js +1 -0
  653. package/src/legacy/tool-ui/src/main/webapp/v4/dom/ifUnmodified.js +1 -0
  654. package/src/legacy/tool-ui/src/main/webapp/v4/dom/index.js +5 -0
  655. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertBefore.js +1 -0
  656. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertFirst.js +1 -0
  657. package/src/legacy/tool-ui/src/main/webapp/v4/dom/insertLast.js +1 -0
  658. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFind.js +1 -0
  659. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onFindOnce.js +1 -0
  660. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRTEReady.js +1 -0
  661. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onRemove.js +1 -0
  662. package/src/legacy/tool-ui/src/main/webapp/v4/dom/onVisible.js +1 -0
  663. package/src/legacy/tool-ui/src/main/webapp/v4/dom/previousUntil.js +1 -0
  664. package/src/legacy/tool-ui/src/main/webapp/v4/dom/resolveIconCompat.js +40 -0
  665. package/src/legacy/tool-ui/src/main/webapp/v4/graphql/GraphQL.less +171 -0
  666. package/src/legacy/tool-ui/src/main/webapp/v4/mail-publishing/MailPublishing.less +38 -0
  667. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/Socket.js +1 -0
  668. package/src/legacy/tool-ui/src/main/webapp/v4/rtc/index.js +1 -0
  669. package/src/legacy/tool-ui/src/main/webapp/v4/rte/Mention.less +35 -0
  670. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.js +909 -0
  671. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirror.less +759 -0
  672. package/src/legacy/tool-ui/src/main/webapp/v4/rte/ProseMirrorContainer.less +29 -0
  673. package/src/legacy/tool-ui/src/main/webapp/v4/rte/README.md +68 -0
  674. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.d.ts +8 -0
  675. package/src/legacy/tool-ui/src/main/webapp/v4/rte/codemirror-shim.js +274 -0
  676. package/src/legacy/tool-ui/src/main/webapp/v4/rte/collab-workflow.jpeg +0 -0
  677. package/src/legacy/tool-ui/src/main/webapp/v4/rte/interchangeable.ts +250 -0
  678. package/src/legacy/tool-ui/src/main/webapp/v4/rte/mention.js +90 -0
  679. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/PluginProvider.js +124 -0
  680. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/README.md +46 -0
  681. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/AIInlineManager.ts +124 -0
  682. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInline.less +244 -0
  683. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_inline_manager/views/AIInlineView.ts +1019 -0
  684. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/ai_manager/AiManager.ts +199 -0
  685. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/CollabManager.js +339 -0
  686. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.js +96 -0
  687. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/AvatarView.less +11 -0
  688. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/collab_manager/views/CollabEditing.less +18 -0
  689. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/comment_manager/CommentManager.js +348 -0
  690. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.js +110 -0
  691. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/CustomKeyboard.less +21 -0
  692. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/custom_keyboard/README.md +29 -0
  693. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/EnhancementManager.js +428 -0
  694. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/README.md +63 -0
  695. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/commands.js +690 -0
  696. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/constants.js +12 -0
  697. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/enhancement-creation.jpeg +0 -0
  698. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/index.js +15 -0
  699. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/rte-flow.jpeg +0 -0
  700. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ActionButtonView.js +86 -0
  701. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/BlockSubmenuView.js +60 -0
  702. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/Enhancement.less +67 -0
  703. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/EnhancementView.js +208 -0
  704. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.js +102 -0
  705. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/PreviewView.less +45 -0
  706. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/ProsemirrorEnhancementMenu.less +113 -0
  707. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/enhancement_manager/views/SubmenuView.js +365 -0
  708. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/FindReplaceManager.js +239 -0
  709. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/FindView.js +604 -0
  710. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/find_replace_manager/views/ProseMirrorFindReplace.less +174 -0
  711. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/FullscreenManager.js +57 -0
  712. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/README.md +26 -0
  713. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/commands.js +16 -0
  714. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/index.js +4 -0
  715. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.js +474 -0
  716. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/fullscreen_manager/views/FullscreenView.less +383 -0
  717. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/htmlEditorManager.js +66 -0
  718. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/html_editor_manager/views/HtmlEditorView.js +97 -0
  719. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.js +342 -0
  720. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/ListManager.less +42 -0
  721. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/README.md +50 -0
  722. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/commands.js +207 -0
  723. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/constants.js +26 -0
  724. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/list_manager/index.js +4 -0
  725. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/Menubar.js +485 -0
  726. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/README.md +40 -0
  727. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.js +842 -0
  728. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/menubar/views/MenuView.less +821 -0
  729. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/PasteManager.js +368 -0
  730. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/paste_manager/views/PastePopup.less +5 -0
  731. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/placeholder_manager/PlaceHolderManager.js +128 -0
  732. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/README.md +13 -0
  733. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/raw_text_manager/RawTextManager.js +96 -0
  734. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/index.js +3 -0
  735. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-plugin.js +280 -0
  736. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck-service.js +94 -0
  737. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/spellcheck/spellcheck.less +73 -0
  738. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/TableManager.js +57 -0
  739. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/commands.js +97 -0
  740. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/ProseMirror-table.less +137 -0
  741. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerPopup.less +19 -0
  742. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableSizerView.js +88 -0
  743. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/table_manager/views/TableView.js +613 -0
  744. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/README.md +13 -0
  745. package/src/legacy/tool-ui/src/main/webapp/v4/rte/plugins/track_manager/TrackManager.js +905 -0
  746. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/BSSerializer.js +819 -0
  747. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/README.md +80 -0
  748. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/commands.js +98 -0
  749. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.d.ts +84 -0
  750. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/constants.js +87 -0
  751. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/index.js +13 -0
  752. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/keymapBuilder.js +223 -0
  753. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/menuItemsBuilder.js +559 -0
  754. package/src/legacy/tool-ui/src/main/webapp/v4/rte/settings/schemaBuilder.js +1281 -0
  755. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.d.ts +4 -0
  756. package/src/legacy/tool-ui/src/main/webapp/v4/rte/utilities.js +359 -0
  757. package/src/legacy/tool-ui/src/main/webapp/v4/theme/ColorRotator.js +1 -0
  758. package/src/legacy/tool-ui/src/main/webapp/v4/theme/Theme.less +224 -0
  759. package/src/legacy/tool-ui/src/main/webapp/v4/translation/Translation.less +114 -0
  760. package/src/legacy/tool-ui/src/main/webapp/v4/util/debounce.js +1 -0
  761. package/src/legacy/tool-ui/src/main/webapp/v4/util/getComponentKey.js +1 -0
  762. package/src/legacy/tool-ui/src/main/webapp/v4/util/noise.js +1 -0
  763. package/src/legacy/tool-ui/src/main/webapp/v4/util/repaint.js +1 -0
  764. package/src/legacy/tool-ui/src/main/webapp/v4/util/storage.js +1 -0
  765. package/src/legacy/tool-ui/src/main/webapp/v4/util/throttle.js +1 -0
  766. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AnalyticsWidget.less +18 -0
  767. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.js +33 -0
  768. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentContent.less +19 -0
  769. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.js +217 -0
  770. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskDashboard.less +410 -0
  771. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentDeskRelatedWidget.less +3 -0
  772. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssignmentFilters.less +23 -0
  773. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.js +7 -0
  774. package/src/legacy/tool-ui/src/main/webapp/v4/widget/AssociatedContentWidget.less +92 -0
  775. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.js +19 -0
  776. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkUpload.less +65 -0
  777. package/src/legacy/tool-ui/src/main/webapp/v4/widget/BulkWorkflow.less +103 -0
  778. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.js +7 -0
  779. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Calendar.less +109 -0
  780. package/src/legacy/tool-ui/src/main/webapp/v4/widget/CalendarAccessOverview.less +26 -0
  781. package/src/legacy/tool-ui/src/main/webapp/v4/widget/CalendarEventSummary.less +15 -0
  782. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.js +13 -0
  783. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ClosableWindow.less +3 -0
  784. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ContentColors.less +17 -0
  785. package/src/legacy/tool-ui/src/main/webapp/v4/widget/ContentTemplatesWidget.less +123 -0
  786. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Conversation.less +537 -0
  787. package/src/legacy/tool-ui/src/main/webapp/v4/widget/CopySiteWidget.less +13 -0
  788. package/src/legacy/tool-ui/src/main/webapp/v4/widget/FormSubmission.less +3 -0
  789. package/src/legacy/tool-ui/src/main/webapp/v4/widget/LiveBlog.less +158 -0
  790. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.js +25 -0
  791. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchAssignments.less +16 -0
  792. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.js +33 -0
  793. package/src/legacy/tool-ui/src/main/webapp/v4/widget/PitchContent.less +10 -0
  794. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Revisions.js +61 -0
  795. package/src/legacy/tool-ui/src/main/webapp/v4/widget/Revisions.less +280 -0
  796. package/src/legacy/tool-ui/src/main/webapp/v4/widget/SavedSearch.less +13 -0
  797. package/src/legacy/tool-ui/src/main/webapp/v4/widget/SemRushDashboardWidget.less +6 -0
  798. package/src/legacy/tool-ui/src/main/webapp/v4/widget/SlackAuthentication.less +13 -0
  799. package/src/legacy/tool-ui/src/main/webapp/v4/widget/WorkStreams.less +39 -0
  800. package/src/legacy/tool-ui/src/platform.ts +25 -0
  801. package/src/legacy/tool-ui/src/rtc/Socket.ts +205 -0
  802. package/src/legacy/tool-ui/src/rtc/index.ts +276 -0
  803. package/src/legacy/tool-ui/src/table/README.md +3 -0
  804. package/src/legacy/tool-ui/src/table/index.ts +107 -0
  805. package/src/legacy/tool-ui/src/theme/ColorRotator.ts +32 -0
  806. package/src/legacy/tool-ui/src/theme/Theme.ts +516 -0
  807. package/src/legacy/tool-ui/src/theme/index.ts +7 -0
  808. package/src/legacy/tool-ui/src/util/README.md +42 -0
  809. package/src/legacy/tool-ui/src/util/debounce.ts +22 -0
  810. package/src/legacy/tool-ui/src/util/getComponentKey.ts +25 -0
  811. package/src/legacy/tool-ui/src/util/noise.ts +51 -0
  812. package/src/legacy/tool-ui/src/util/repaint.ts +17 -0
  813. package/src/legacy/tool-ui/src/util/storage.ts +21 -0
  814. package/src/legacy/tool-ui/src/util/string.ts +15 -0
  815. package/src/legacy/tool-ui/src/util/svg.ts +46 -0
  816. package/src/legacy/tool-ui/src/util/throttle.ts +37 -0
  817. package/src/legacy/tool-ui/src/util/transition.ts +5 -0
  818. package/src/legacy/tool-ui/src/v5.css +149 -0
  819. package/src/legacy/tool-ui/src/v5.ts +2059 -0
  820. package/src/legacy/tool-ui/src/widget/README.md +27 -0
  821. package/src/legacy/tool-ui/src/widget/index.ts +160 -0
  822. package/dist/storybook/assets/if-defined-CgfCxQoV.js +0 -1
@@ -0,0 +1,1019 @@
1
+ import { getPluginState } from '../../../utilities'
2
+ import { html, render, TemplateResult } from 'lit-html'
3
+ import { DOMParser as ProseDOMParser, Schema } from 'prosemirror-model'
4
+ import { EditorView } from 'prosemirror-view'
5
+ import { getLegacyHTMLTextForProsemirror } from '../../../codemirror-shim'
6
+ import create from '../../../../../../../dom/create'
7
+ import moment from 'moment'
8
+ import Cookies from 'js-cookie'
9
+ import DOMPurify from 'dompurify'
10
+
11
+ if (!window.BRIGHTSPOT?.ui.cms.enableV5UI) {
12
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
13
+ // @ts-ignore
14
+ await import('./AIInline.less')
15
+ }
16
+
17
+ const BASE_CLASS = 'ProseMirrorAIInline-container'
18
+ const PROMPT_PLACEHOLDER = window.RTE_PROMPT_PLACEHOLDER
19
+ const PROMPT_PREFIX = window.RTE_PROMPT_PREFIX
20
+ const PROMPT_RETRY = window.RTE_PROMPT_RETRY
21
+ const WORKING_ON_IT_TEXT = window.RTE_WORKING_ON_IT
22
+ const ACCEPT_BUTTON_TEXT = window.RTE_ACCEPT
23
+ const DISCARD_BUTTON_TEXT = window.RTE_DISCARD
24
+ const TRY_AGAIN_BUTTON_TEXT = window.RTE_TRY_AGAIN
25
+ const COLLAPSED_CLASS = 'collapsed'
26
+ const CHAT_PAGE_RESPONSES_PATH = (
27
+ window.BRIGHTSPOT?.web?.pagePaths as Record<string, string>
28
+ )?.['com.psddev.ai.chat.ChatPageResponses']
29
+ const PROMPT_SUGGESTIONS_PATH = (
30
+ window.BRIGHTSPOT?.web?.pagePaths as Record<string, string>
31
+ )?.['com.psddev.ai.chat.PromptPage']
32
+
33
+ interface CompliantTagNameMap extends Map<string, string> {
34
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
+ [key: string]: any
36
+ }
37
+
38
+ /**
39
+ * AI Inline widget for the ProseMirror RTE editor.
40
+ * Provides AI-powered text suggestions and editing functionality.
41
+ */
42
+ class AIInlineView {
43
+ private focused = false
44
+ private isLoading = false
45
+ private retry = false
46
+ private suggestionsFetched = false
47
+ private readonly editorView: EditorView
48
+ private readonly myKey: string
49
+ private readonly userLabel: string
50
+ private readonly userId: string
51
+ private readonly compliantTagNameMap: CompliantTagNameMap
52
+ private readonly dom: HTMLDivElement
53
+ private readonly field: string
54
+ private readonly textArea: HTMLTextAreaElement | null
55
+ private readonly loadingOverlay: HTMLDivElement
56
+ private readonly loadingPromptEle: HTMLDivElement | null
57
+ private readonly objectId?: string
58
+ private readonly typeId?: string
59
+ private readonly contentState?: string
60
+ private inputEle?: HTMLInputElement
61
+ private submitButtonEle?: HTMLButtonElement
62
+ private acceptRejectContainerEle?: HTMLDivElement
63
+ private suggestionsContainer: HTMLElement | null = null
64
+ private sendTrackingEvent?: (interaction: string) => void
65
+ private chatId?: string
66
+ private responseId?: string
67
+ private lastPrompt?: string
68
+ private lastSelectedContent?: string
69
+ private lastSelectionFrom?: number
70
+ private lastSelectionTo?: number
71
+
72
+ constructor(
73
+ editorView: EditorView,
74
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
+ myKey: any,
76
+ userLabel: string,
77
+ userId: string,
78
+ compliantTagNameMap: CompliantTagNameMap,
79
+ ) {
80
+ this.editorView = editorView
81
+ this.myKey = myKey
82
+ this.userLabel = userLabel
83
+ this.userId = userId
84
+ this.compliantTagNameMap = compliantTagNameMap
85
+
86
+ const editorDom = this.editorView.dom
87
+ const contentForm =
88
+ editorDom.parentElement?.closest<HTMLElement>('.ContentEdit')
89
+ const cig = editorDom.closest<HTMLElement>('.CIG')
90
+ const cigRowParent = editorDom.closest<HTMLElement>('.CIG-row')
91
+
92
+ this.objectId = cig?.dataset?.objectId
93
+ this.typeId = contentForm?.dataset?.typeId
94
+ this.field = cigRowParent?.dataset?.field || ''
95
+ this.contentState = contentForm?.querySelector<HTMLInputElement>(
96
+ `input[name="${contentForm?.dataset?.contentId}/oldValues"]`,
97
+ )?.value
98
+ this.textArea = cigRowParent?.querySelector('textarea') || null
99
+
100
+ this.dom = create('div', {
101
+ class: `${BASE_CLASS} ${COLLAPSED_CLASS}`,
102
+ })
103
+
104
+ render(this.template(), this.dom)
105
+
106
+ this.inputEle =
107
+ this.dom.querySelector<HTMLInputElement>(
108
+ `input.${BASE_CLASS}-inputContainer-input`,
109
+ ) ?? undefined
110
+
111
+ // Create loading overlay as a sibling element (not inside the container)
112
+ this.loadingOverlay = create(
113
+ 'div',
114
+ { class: 'ProseMirrorAIInline-loadingOverlay' },
115
+ [
116
+ create('div', { class: 'ProseMirrorAIInline-loadingOverlay-prompt' }),
117
+ create('div', { class: 'ProseMirrorAIInline-loadingOverlay-spinner' }, [
118
+ create('div', {
119
+ class: 'ProseMirrorAIInline-loadingOverlay-spinner-icon',
120
+ }),
121
+ create(
122
+ 'div',
123
+ { class: 'ProseMirrorAIInline-loadingOverlay-spinner-text' },
124
+ WORKING_ON_IT_TEXT,
125
+ ),
126
+ ]),
127
+ ],
128
+ )
129
+
130
+ this.loadingPromptEle = this.loadingOverlay.querySelector<HTMLDivElement>(
131
+ '.ProseMirrorAIInline-loadingOverlay-prompt',
132
+ )
133
+
134
+ this.submitButtonEle =
135
+ this.dom.querySelector<HTMLButtonElement>(
136
+ `button.${BASE_CLASS}-inputContainer-submitButton`,
137
+ ) ?? undefined
138
+
139
+ // Create the accept/reject container imperatively (not in lit-html template)
140
+ // so it persists across re-renders when attached to the toolbar button
141
+ this.acceptRejectContainerEle = this.createAcceptRejectContainer()
142
+
143
+ this.inputEle?.addEventListener('focus', (evt: Event) => {
144
+ evt.preventDefault()
145
+ })
146
+
147
+ // We want to keep the top of the AI Inline Editing widget
148
+ // anchored to the bottom of the toolbar, but the toolbar
149
+ // contracts and expands when our editorView contracts and
150
+ // expands (e.g. user toggles preview pane), so this will
151
+ // ensure the top of the widget remains anchored by letting us
152
+ // know when the editorView has implicitly resized itself.
153
+ const ro = new ResizeObserver(() => {
154
+ this.render()
155
+ })
156
+
157
+ ro.observe(this.editorView.dom)
158
+
159
+ this.render()
160
+ this.initTracking()
161
+ }
162
+
163
+ /**
164
+ * Our AI Inline widget markup.
165
+ */
166
+ private template = (): TemplateResult => html`
167
+ <div class="${BASE_CLASS}-inputContainer">
168
+ <input
169
+ class="${BASE_CLASS}-inputContainer-input"
170
+ type="text"
171
+ data-hide-word-count="true"
172
+ placeholder="${PROMPT_PLACEHOLDER}"
173
+ @keydown=${(e: KeyboardEvent) => {
174
+ if (e.key === 'Enter') {
175
+ e.preventDefault()
176
+ this.sendTrackingEvent?.('submit inline prompt')
177
+ this.submitSuggestion(
178
+ this.editorView,
179
+ this.editorView.state.schema,
180
+ this.inputEle?.value,
181
+ )
182
+ }
183
+ }}
184
+ />
185
+ <button
186
+ type="button"
187
+ class="${BASE_CLASS}-inputContainer-submitButton"
188
+ aria-label=${window.BRIGHTSPOT?.ai?.submitSuggestion}
189
+ title=${window.BRIGHTSPOT?.ai?.submitSuggestion}
190
+ @click=${() => {
191
+ if (this.isLoading) {
192
+ this.cancelSuggestion()
193
+ } else {
194
+ this.sendTrackingEvent?.('submit inline prompt')
195
+ this.submitSuggestion(
196
+ this.editorView,
197
+ this.editorView.state.schema,
198
+ this.inputEle?.value,
199
+ )
200
+ }
201
+ }}
202
+ ></button>
203
+ </div>
204
+ `
205
+
206
+ /**
207
+ * Creates the accept/reject container element imperatively.
208
+ * This is done outside of lit-html so it persists across re-renders.
209
+ */
210
+ private createAcceptRejectContainer(): HTMLDivElement {
211
+ const acceptButton = create('button', {}, [
212
+ create('span', { class: `${BASE_CLASS}-actions-accept-icon` }),
213
+ ACCEPT_BUTTON_TEXT,
214
+ ])
215
+ acceptButton.addEventListener('click', this.handleAccept)
216
+
217
+ const discardButton = create('button', {}, [
218
+ create('span', { class: `${BASE_CLASS}-actions-rejectAll-icon` }),
219
+ DISCARD_BUTTON_TEXT,
220
+ ])
221
+ discardButton.addEventListener('click', this.handleDiscard)
222
+
223
+ const tryAgainButton = create('button', {}, [
224
+ create('span', { class: `${BASE_CLASS}-actions-tryAgain-icon` }),
225
+ TRY_AGAIN_BUTTON_TEXT,
226
+ ])
227
+ tryAgainButton.addEventListener('click', this.handleTryAgain)
228
+
229
+ const container = create(
230
+ 'div',
231
+ {
232
+ class: `${BASE_CLASS}-acceptRejectContainer`,
233
+ hidden: '',
234
+ },
235
+ [
236
+ create('ul', { class: `${BASE_CLASS}-actions`, role: 'menu' }, [
237
+ create(
238
+ 'li',
239
+ {
240
+ class: `${BASE_CLASS}-actions-accept ProseMirrorToolbar-action`,
241
+ role: 'menuitem',
242
+ },
243
+ [acceptButton],
244
+ ),
245
+ create(
246
+ 'li',
247
+ {
248
+ class: `${BASE_CLASS}-actions-rejectAll ProseMirrorToolbar-action`,
249
+ role: 'menuitem',
250
+ },
251
+ [discardButton],
252
+ ),
253
+ create(
254
+ 'li',
255
+ {
256
+ class: `${BASE_CLASS}-actions-tryAgain ProseMirrorToolbar-action`,
257
+ role: 'menuitem',
258
+ },
259
+ [tryAgainButton],
260
+ ),
261
+ ]),
262
+ ],
263
+ )
264
+
265
+ // Stop click events from propagating to the toolbar button (which would toggle AI inline off)
266
+ container.addEventListener('click', (evt: Event) => {
267
+ evt.stopPropagation()
268
+ })
269
+
270
+ return container
271
+ }
272
+
273
+ /**
274
+ * Hides the accept/reject container and resets the input field.
275
+ */
276
+ private hideAcceptRejectContainer(): void {
277
+ if (this.inputEle) {
278
+ this.inputEle.value = ''
279
+ this.inputEle.placeholder = PROMPT_PLACEHOLDER
280
+ }
281
+
282
+ if (this.acceptRejectContainerEle) {
283
+ this.acceptRejectContainerEle.setAttribute('hidden', '')
284
+ }
285
+ this.dom.classList.remove('has-suggestions')
286
+ }
287
+
288
+ /**
289
+ * Shows the accept/reject container, recreating and reattaching if needed.
290
+ */
291
+ private showAcceptRejectContainer(): void {
292
+ // Recreate the container if it was removed from the DOM (e.g., toolbar re-render)
293
+ if (!this.acceptRejectContainerEle?.isConnected) {
294
+ this.acceptRejectContainerEle = this.createAcceptRejectContainer()
295
+ }
296
+
297
+ // Attach to AI inline toolbar button if not already attached
298
+ if (
299
+ !this.acceptRejectContainerEle.parentElement?.matches(
300
+ "[data-rte-style='rte2-toolbar-ai-inline']",
301
+ )
302
+ ) {
303
+ const aiInlineButton = this.editorView.dom
304
+ .closest('.ProseMirrorContainer')
305
+ ?.querySelector("[data-rte-style='rte2-toolbar-ai-inline']")
306
+ aiInlineButton?.appendChild(this.acceptRejectContainerEle)
307
+ }
308
+
309
+ this.attachAcceptRejectTracking(this.acceptRejectContainerEle)
310
+ this.acceptRejectContainerEle.removeAttribute('hidden')
311
+ this.dom.classList.add('has-suggestions')
312
+ }
313
+
314
+ /**
315
+ * Accepts the suggested text by removing deleted content and keeping inserted content.
316
+ */
317
+ private handleAccept = (evt: Event): void => {
318
+ evt.preventDefault()
319
+
320
+ const { state, dispatch } = this.editorView
321
+ const { tr, schema } = state
322
+
323
+ // Find and delete content marked for deletion
324
+ let startPosDel: number | null = null
325
+ let endPosDel: number | null = null
326
+ tr.doc.descendants((node, pos) => {
327
+ node.marks.forEach((mark) => {
328
+ if (mark.type === schema.marks.aiInlineDel) {
329
+ if (startPosDel === null) {
330
+ startPosDel = pos > 0 ? pos - 1 : pos
331
+ }
332
+ endPosDel = pos + node.nodeSize
333
+ }
334
+ })
335
+ })
336
+
337
+ if (startPosDel !== null && endPosDel !== null) {
338
+ tr.delete(startPosDel, endPosDel)
339
+ }
340
+
341
+ // Remove insertion marks from the kept text
342
+ tr.doc.descendants((node, pos) => {
343
+ node.marks.forEach((mark) => {
344
+ if (mark.type === schema.marks.aiInlineIns) {
345
+ tr.removeMark(pos, pos + node.nodeSize, schema.marks.aiInlineIns)
346
+ }
347
+ })
348
+ })
349
+
350
+ this.hideAcceptRejectContainer()
351
+ dispatch(tr)
352
+ }
353
+
354
+ /**
355
+ * Rejects the suggested text by removing inserted content and keeping original content.
356
+ */
357
+ private handleDiscard = (evt: Event): void => {
358
+ evt.preventDefault()
359
+
360
+ const { state, dispatch } = this.editorView
361
+ const { tr, schema } = state
362
+
363
+ // Find and delete inserted content
364
+ let startPosIns: number | null = null
365
+ let endPosIns: number | null = null
366
+ tr.doc.descendants((node, pos) => {
367
+ node.marks.forEach((mark) => {
368
+ if (mark.type === schema.marks.aiInlineIns) {
369
+ if (startPosIns === null) {
370
+ startPosIns = pos > 0 ? pos - 1 : pos
371
+ }
372
+ endPosIns = pos + node.nodeSize
373
+ if (endPosIns < tr.doc.content.size) {
374
+ endPosIns += 1
375
+ }
376
+ }
377
+ })
378
+ })
379
+
380
+ if (startPosIns !== null && endPosIns !== null) {
381
+ tr.delete(startPosIns, endPosIns)
382
+ }
383
+
384
+ // Remove deletion marks from the kept text
385
+ tr.doc.descendants((node, pos) => {
386
+ node.marks.forEach((mark) => {
387
+ if (mark.type === schema.marks.aiInlineDel) {
388
+ tr.removeMark(pos, pos + node.nodeSize, schema.marks.aiInlineDel)
389
+ }
390
+ })
391
+ })
392
+
393
+ this.hideAcceptRejectContainer()
394
+ dispatch(tr)
395
+ }
396
+
397
+ /**
398
+ * Discards current suggestion and retries with the last prompt.
399
+ */
400
+ private handleTryAgain = (evt: Event): void => {
401
+ evt.preventDefault()
402
+
403
+ const { state, dispatch } = this.editorView
404
+ const { tr, schema } = state
405
+
406
+ // Find and delete inserted content
407
+ let startPosIns: number | null = null
408
+ let endPosIns: number | null = null
409
+ tr.doc.descendants((node, pos) => {
410
+ node.marks.forEach((mark) => {
411
+ if (mark.type === schema.marks.aiInlineIns) {
412
+ if (startPosIns === null) {
413
+ startPosIns = pos > 0 ? pos - 1 : pos
414
+ }
415
+ endPosIns = pos + node.nodeSize
416
+ if (endPosIns < tr.doc.content.size) {
417
+ endPosIns += 1
418
+ }
419
+ }
420
+ })
421
+ })
422
+
423
+ if (startPosIns !== null && endPosIns !== null) {
424
+ tr.delete(startPosIns, endPosIns)
425
+ }
426
+
427
+ // Remove deletion marks but keep the text
428
+ tr.doc.descendants((node, pos) => {
429
+ node.marks.forEach((mark) => {
430
+ if (mark.type === schema.marks.aiInlineDel) {
431
+ tr.removeMark(pos, pos + node.nodeSize, schema.marks.aiInlineDel)
432
+ }
433
+ })
434
+ })
435
+
436
+ // Hide the accept/reject container (but don't reset input)
437
+ if (this.acceptRejectContainerEle) {
438
+ this.acceptRejectContainerEle.setAttribute('hidden', '')
439
+ }
440
+ this.dom.classList.remove('has-suggestions')
441
+
442
+ this.retry = true
443
+ dispatch(tr)
444
+
445
+ // Re-run the last prompt
446
+ if (this.lastPrompt) {
447
+ this.submitSuggestion(
448
+ this.editorView,
449
+ this.editorView.state.schema,
450
+ this.lastPrompt,
451
+ )
452
+ }
453
+ }
454
+
455
+ /**
456
+ * Fetches and displays prompt suggestions automatically
457
+ */
458
+ private fetchPromptSuggestions = (): void => {
459
+ const query = new URLSearchParams({
460
+ id: this.objectId || '',
461
+ typeId: this.typeId || '',
462
+ field: this.field,
463
+ })
464
+
465
+ const url = PROMPT_SUGGESTIONS_PATH + '?' + query
466
+ fetch(url, {
467
+ method: 'GET',
468
+ })
469
+ .then((response) => {
470
+ if (!response.ok) {
471
+ throw new Error('Network response was not ok: ' + response.statusText)
472
+ }
473
+ return response.text()
474
+ })
475
+ .then((suggestionsHTML) => {
476
+ const suggestionsDom = new DOMParser().parseFromString(
477
+ suggestionsHTML,
478
+ 'text/html',
479
+ )
480
+
481
+ // Get the suggestions container from the parsed HTML
482
+ this.suggestionsContainer = suggestionsDom.querySelector(
483
+ '.ProseMirrorAIInline-container-suggestions-dropdown',
484
+ )
485
+ if (!this.suggestionsContainer) {
486
+ console.error('Suggestions container not found in response')
487
+ return
488
+ }
489
+
490
+ // Append the suggestions container to the AI Inline container (this.dom)
491
+ this.dom.appendChild(this.suggestionsContainer)
492
+ // Make suggestions always visible
493
+ this.suggestionsContainer.removeAttribute('hidden')
494
+
495
+ const suggestionsList = this.suggestionsContainer.querySelector(
496
+ '.ProseMirrorAIInline-container-suggestions-list',
497
+ )
498
+
499
+ if (suggestionsList) {
500
+ // Add click handlers to each suggestion button
501
+ suggestionsList
502
+ .querySelectorAll<HTMLButtonElement>(
503
+ '.ProseMirrorAIInline-container-suggestions-list-item:not(.is-empty) button[data-prompt]',
504
+ )
505
+ .forEach((button) => {
506
+ button.addEventListener('click', () => {
507
+ this.sendTrackingEvent?.('click inline prompt suggestion')
508
+ this.submitSuggestion(
509
+ this.editorView,
510
+ this.editorView.state.schema,
511
+ button.dataset.prompt,
512
+ )
513
+ })
514
+ })
515
+ }
516
+ })
517
+ .catch((error) => {
518
+ console.error('Fetch error: ', error)
519
+ })
520
+ }
521
+
522
+ /**
523
+ * Handles the suggestion button click event.
524
+ */
525
+ private async submitSuggestion(
526
+ view: EditorView,
527
+ schema: Schema,
528
+ prompt?: string,
529
+ ): Promise<void> {
530
+ if (!prompt) return
531
+
532
+ // Store the prompt for "Try Again" functionality
533
+ this.lastPrompt = prompt
534
+
535
+ this.isLoading = true
536
+ this.dom.classList.add('is-loading')
537
+
538
+ // Insert loading overlay after the container if not already in DOM
539
+ if (this.loadingOverlay && !this.loadingOverlay.parentElement) {
540
+ this.dom.insertAdjacentElement('afterend', this.loadingOverlay)
541
+ }
542
+
543
+ this.loadingOverlay?.classList.add('is-loading')
544
+ if (this.loadingPromptEle) {
545
+ this.loadingPromptEle.textContent = prompt
546
+ }
547
+
548
+ // Capture retry state at the start (before it gets reset)
549
+ const isRetry = this.retry
550
+
551
+ // Store selection positions on first submission, reuse on retry
552
+ let from: number
553
+ let to: number
554
+ let selectedContent: string
555
+
556
+ if (
557
+ isRetry &&
558
+ this.lastSelectedContent !== undefined &&
559
+ this.lastSelectionFrom !== undefined &&
560
+ this.lastSelectionTo !== undefined
561
+ ) {
562
+ // Reuse stored values on retry
563
+ selectedContent = this.lastSelectedContent
564
+ from = this.lastSelectionFrom
565
+ to = this.lastSelectionTo
566
+ } else {
567
+ // Store values on first submission
568
+ const state = view.state
569
+ const selection = state.selection
570
+ from = selection.from
571
+ to = selection.to
572
+ const slice = state.doc.slice(from, to)
573
+ selectedContent = slice.content.textBetween(0, slice.content.size)
574
+
575
+ this.lastSelectedContent = selectedContent
576
+ this.lastSelectionFrom = from
577
+ this.lastSelectionTo = to
578
+ }
579
+
580
+ // Build full prompt once
581
+ let fullPrompt = PROMPT_PREFIX + prompt + ' | ' + selectedContent
582
+
583
+ // Add retry prefix if applicable
584
+ if (this.retry) {
585
+ fullPrompt = PROMPT_RETRY + fullPrompt
586
+ this.retry = false
587
+ }
588
+
589
+ const query = new URLSearchParams({
590
+ id: this.objectId || '',
591
+ typeId: this.typeId || '',
592
+ field: this.field,
593
+ state: this.contentState || '',
594
+ prompt: fullPrompt,
595
+ })
596
+
597
+ this.disableInput(true)
598
+
599
+ // Update UI to show loading state
600
+ const inputElement = this.inputEle
601
+ const originalPlaceholder = inputElement?.placeholder || ''
602
+ const originalValue = inputElement?.value || ''
603
+
604
+ if (inputElement) {
605
+ inputElement.value = ''
606
+ inputElement.placeholder = WORKING_ON_IT_TEXT
607
+ }
608
+ this.submitButtonEle?.classList.add('is-loading')
609
+
610
+ const tempDiv = create('div')
611
+
612
+ try {
613
+ // Make a single request and wait for complete response (no polling needed)
614
+ const response = await fetch(CHAT_PAGE_RESPONSES_PATH, {
615
+ method: 'POST',
616
+ credentials: 'include',
617
+ body: query,
618
+ headers: {
619
+ 'Brightspot-CSRF': Cookies.get('bsp.csrf') || '',
620
+ },
621
+ })
622
+
623
+ const text = await response.text()
624
+
625
+ const rteTagNames = new Set(
626
+ ((window.RICH_TEXT_ELEMENTS as Array<{ tag: string }>) || []).map((e) =>
627
+ e.tag.toLowerCase(),
628
+ ),
629
+ )
630
+
631
+ tempDiv.innerHTML = DOMPurify.sanitize(text, {
632
+ CUSTOM_ELEMENT_HANDLING: {
633
+ tagNameCheck: (tagName: string) =>
634
+ rteTagNames.has(tagName.toLowerCase()), // Allow all registered RichTextElement custom elements
635
+ attributeNameCheck: () => true, // Allow all attributes on custom elements (class, id, label, data-*, etc.)
636
+ allowCustomizedBuiltInElements: true,
637
+ },
638
+ ADD_ATTR: ['link-data', 'data-cms-id', 'data-cms-href'], // Allow Brightspot-specific attributes on standard elements
639
+ })
640
+ } catch (error) {
641
+ console.error('Error fetching AI suggestion:', error)
642
+ this.disableInput(false)
643
+ this.isLoading = false
644
+ return
645
+ } finally {
646
+ // Always restore UI state
647
+ this.submitButtonEle?.classList.remove('is-loading')
648
+ this.dom.classList.remove('is-loading')
649
+ this.loadingOverlay?.classList.remove('is-loading')
650
+ if (inputElement) {
651
+ inputElement.value = originalValue
652
+ inputElement.placeholder = originalPlaceholder
653
+ }
654
+ }
655
+
656
+ // Set the chatId once
657
+ if (!this.chatId) {
658
+ this.chatId =
659
+ tempDiv.querySelector<HTMLElement>('.chatData')?.dataset.chatId
660
+ }
661
+
662
+ // If loading is false, the suggestion was cancelled
663
+ if (!this.isLoading) {
664
+ this.disableInput(false)
665
+ return
666
+ }
667
+
668
+ const responses = tempDiv.querySelectorAll('.AIChat-responseText')
669
+
670
+ if (responses.length > 0) {
671
+ // Get the most recent response
672
+ const recentResponse = responses[responses.length - 1]
673
+ const response = recentResponse?.innerHTML || ''
674
+ this.responseId =
675
+ recentResponse?.closest<HTMLElement>(
676
+ '.AIChat-response',
677
+ )?.dataset.responseId
678
+
679
+ const domFragment = create('div')
680
+ domFragment.innerHTML = getLegacyHTMLTextForProsemirror(
681
+ response,
682
+ view.state.schema,
683
+ this.compliantTagNameMap,
684
+ true,
685
+ )
686
+
687
+ const parsedSlice = ProseDOMParser.fromSchema(schema).parseSlice(
688
+ domFragment,
689
+ {
690
+ preserveWhitespace: 'full',
691
+ },
692
+ )
693
+
694
+ // Create transaction from current state (important for retry after document changes)
695
+ const tr = view.state.tr
696
+ const docSize = view.state.doc.content.size
697
+
698
+ // Clamp positions to valid document range (important for retry after document changes)
699
+ const clampedFrom = Math.min(from, docSize)
700
+ const clampedTo = Math.min(to, docSize)
701
+
702
+ try {
703
+ // Add aiInlineDel mark to the to be replaced text
704
+ tr.addMark(clampedFrom, clampedTo, schema.marks.aiInlineDel.create())
705
+
706
+ // Insert the response after the current selection
707
+ tr.replace(clampedTo, clampedTo, parsedSlice)
708
+
709
+ // Add aiInlineIns mark to the suggested text
710
+ const insertEnd = tr.mapping.map(clampedTo)
711
+ tr.addMark(clampedTo, insertEnd, schema.marks.aiInlineIns.create())
712
+
713
+ this.trackAiUsage(this.textArea, this.chatId, this.responseId)
714
+
715
+ this.disableInput(false)
716
+ this.isLoading = false
717
+
718
+ view.dispatch(tr)
719
+
720
+ // Add AI highlighting in a separate transaction by finding nodes with aiInlineIns
721
+ const time = moment().format('MM/D/YYYY h:mm:ss A')
722
+ const aiMark = schema.marks.ai.create({
723
+ 'data-user-label': this.userLabel,
724
+ 'data-time': time,
725
+ 'data-user-id': this.userId,
726
+ 'data-response-id': this.responseId,
727
+ 'data-chat-id': this.chatId,
728
+ title: `${this.userLabel}: ${time}`,
729
+ })
730
+
731
+ // Document state after all changes have been made
732
+ const tr2 = view.state.tr
733
+ view.state.doc.descendants((node, pos) => {
734
+ if (node.marks.some((m) => m.type === schema.marks.aiInlineIns)) {
735
+ tr2.addMark(pos, pos + node.nodeSize, aiMark)
736
+ }
737
+ })
738
+
739
+ if (tr2.steps.length > 0) {
740
+ view.dispatch(tr2)
741
+ }
742
+
743
+ this.showAcceptRejectContainer()
744
+ } catch (err) {
745
+ console.error('Error creating/dispatching transaction:', err)
746
+ this.disableInput(false)
747
+ this.isLoading = false
748
+ }
749
+ } else {
750
+ // No responses received, re-enable inputs
751
+ this.disableInput(false)
752
+ this.isLoading = false
753
+ }
754
+ }
755
+
756
+ // Disable input and buttons while suggestion is active
757
+ private cancelSuggestion = async (): Promise<void> => {
758
+ this.isLoading = false
759
+
760
+ const query = new URLSearchParams({
761
+ id: this.objectId || '',
762
+ typeId: this.typeId || '',
763
+ field: this.field,
764
+ state: this.contentState || '',
765
+ action: 'cancel',
766
+ })
767
+
768
+ await fetch(CHAT_PAGE_RESPONSES_PATH, {
769
+ method: 'POST',
770
+ credentials: 'include',
771
+ body: query,
772
+ headers: {
773
+ 'Brightspot-CSRF': Cookies.get('bsp.csrf') || '',
774
+ },
775
+ })
776
+
777
+ this.dom.classList.remove('is-loading')
778
+ if (this.loadingOverlay) {
779
+ this.loadingOverlay.classList.remove('is-loading')
780
+ }
781
+ if (this.submitButtonEle) {
782
+ this.submitButtonEle.classList.remove('is-loading')
783
+ }
784
+ if (this.inputEle) {
785
+ this.inputEle.placeholder = PROMPT_PLACEHOLDER
786
+ }
787
+
788
+ this.disableInput(false)
789
+ }
790
+
791
+ // Log the fact that AI Chat was activated on a particular field.
792
+ private trackAiUsage = (
793
+ textarea: HTMLTextAreaElement | null,
794
+ chatId: string | undefined,
795
+ responseId: string | undefined,
796
+ ): void => {
797
+ if (textarea && chatId && responseId) {
798
+ // Find the main object's ID
799
+ const contentEditForm = document.querySelector<HTMLFormElement>(
800
+ 'form.ContentEdit[data-content-id]',
801
+ )
802
+
803
+ if (!contentEditForm) return
804
+
805
+ let objectId: string
806
+ if (contentEditForm.classList.contains('is-draft')) {
807
+ objectId = contentEditForm.dataset.revisionId || ''
808
+ } else {
809
+ objectId = contentEditForm.dataset.contentId || ''
810
+ }
811
+
812
+ // Find the field's full internal name path
813
+ let fieldName = ''
814
+ let parents = this.getParents(textarea, '.inputContainer')
815
+ parents = parents.reverse()
816
+ for (const parent of parents) {
817
+ if (parent instanceof HTMLElement) {
818
+ fieldName = fieldName.concat(parent.dataset.name + '*')
819
+ }
820
+ }
821
+
822
+ if (objectId && fieldName) {
823
+ // Add hidden input to page that BE can interpret
824
+ const hiddenInput = create('input', {
825
+ type: 'hidden',
826
+ name: objectId + '/aiGeneratedField|' + fieldName,
827
+ value: chatId,
828
+ })
829
+
830
+ const prePublish = contentEditForm.querySelector<HTMLElement>(
831
+ 'div.PrePublish[data-prepublish]',
832
+ )
833
+ if (prePublish) {
834
+ prePublish
835
+ .querySelector<HTMLFormElement>('form.PrePublishForm')
836
+ ?.prepend(hiddenInput)
837
+ } else {
838
+ contentEditForm.prepend(hiddenInput)
839
+ }
840
+
841
+ // Notify BE to mark this response as being used
842
+ const baseUrl = (
843
+ window.BRIGHTSPOT?.web?.pagePaths as Record<string, string>
844
+ )['com.psddev.ai.cms.tracking.FlagUsedResponsePage']
845
+ const params = new URLSearchParams({
846
+ chatId: chatId,
847
+ responseId: responseId,
848
+ })
849
+ const url = `${baseUrl}?${params}`
850
+
851
+ fetch(url, {
852
+ method: 'get',
853
+ })
854
+ .then((response) => {
855
+ if (!response.ok) {
856
+ throw new Error(
857
+ 'Network response was not ok: ' + response.statusText,
858
+ )
859
+ }
860
+ return response.text()
861
+ })
862
+ .catch((error) => {
863
+ console.error('Fetch error: ', error)
864
+ })
865
+ }
866
+ }
867
+ }
868
+
869
+ private disableInput = (disable: boolean): void => {
870
+ if (this.inputEle) {
871
+ this.inputEle.disabled = disable
872
+ }
873
+
874
+ // Disable/enable suggestion buttons
875
+ if (this.suggestionsContainer) {
876
+ const suggestionButtons =
877
+ this.suggestionsContainer.querySelectorAll<HTMLButtonElement>(
878
+ '.ProseMirrorAIInline-container-suggestions-list-item:not(.is-empty) button[data-prompt]',
879
+ )
880
+ suggestionButtons.forEach((button) => {
881
+ button.disabled = disable
882
+ if (disable) {
883
+ button.classList.add('is-disabled')
884
+ } else {
885
+ button.classList.remove('is-disabled')
886
+ }
887
+ })
888
+ }
889
+ }
890
+
891
+ private getParents = (elem: Element, selector: string): Element[] => {
892
+ // Set up a parent array
893
+ const parents: Element[] = []
894
+
895
+ // Push each parent element to the array
896
+ for (
897
+ ;
898
+ elem && elem !== document.documentElement;
899
+ elem = <Element>elem.parentNode
900
+ ) {
901
+ if (selector) {
902
+ if (elem.matches(selector)) {
903
+ parents.push(elem)
904
+ }
905
+ continue
906
+ }
907
+ parents.push(elem)
908
+ }
909
+
910
+ // Return our parent array
911
+ return parents
912
+ }
913
+
914
+ /**
915
+ * Renders the AI Inline by displaying it if our plugin state
916
+ * has an active state. Also anchors the top of the widget to the bottom
917
+ * of the toolbar, whose height expands and contracts with the UI.
918
+ */
919
+ private render(): void {
920
+ const pluginState = getPluginState(this.editorView, this.myKey)
921
+ const aiInlineEnabled = pluginState
922
+ ?.get('activeStates')
923
+ ?.get('toggleAIInline')
924
+
925
+ // Check if there are nodes with meta aiInlineDel or aiInlineIns in the doc
926
+ let aiInlineNodeFound = false
927
+ const { doc } = this.editorView.state
928
+ doc.descendants((node) => {
929
+ if (
930
+ node?.type?.name &&
931
+ (node.marks || []).some(
932
+ (mark) =>
933
+ mark.attrs &&
934
+ (mark.attrs.aiInlineDel ||
935
+ mark.attrs.aiInlineIns ||
936
+ mark.type?.name === 'aiInlineDel' ||
937
+ mark.type?.name === 'aiInlineIns'),
938
+ )
939
+ ) {
940
+ aiInlineNodeFound = true
941
+ return false
942
+ }
943
+ return true
944
+ })
945
+
946
+ if (aiInlineEnabled) {
947
+ this.dom.classList.remove(COLLAPSED_CLASS)
948
+ if (!this.focused) {
949
+ this.inputEle?.focus()
950
+ this.focused = true
951
+ }
952
+
953
+ // Load suggestions on first open
954
+ if (!this.suggestionsFetched) {
955
+ this.suggestionsFetched = true
956
+ this.fetchPromptSuggestions()
957
+ }
958
+
959
+ if (aiInlineNodeFound) {
960
+ this.showAcceptRejectContainer()
961
+ }
962
+ } else {
963
+ this.dom.classList.add(COLLAPSED_CLASS)
964
+ this.focused = false
965
+ }
966
+ }
967
+
968
+ update(): void {
969
+ this.render()
970
+ }
971
+
972
+ // Tracking: The standard trackingManager.track() pattern relies on onFind to
973
+ // discover elements, but ProseMirror containers are excluded from onFind's observation
974
+ // scope. Instead, we call trackingManager.sendData() directly with manual click listeners.
975
+ private async initTracking(): Promise<void> {
976
+ const analytics = await import(
977
+ /* webpackIgnore: true */ 'bsp-tracking'
978
+ ).catch(() => null)
979
+ if (!analytics) return
980
+
981
+ const { trackingManager } = analytics
982
+ this.sendTrackingEvent = (interaction: string) => {
983
+ trackingManager?.sendData('click', {
984
+ feature: 'ai_create',
985
+ interaction: interaction,
986
+ })
987
+ }
988
+
989
+ this.editorView.dom
990
+ .closest('.ProseMirrorContainer')
991
+ ?.querySelector('a.rte2-toolbar-ai-inline')
992
+ ?.addEventListener('click', () =>
993
+ this.sendTrackingEvent?.('click AI inline (rte toolbar)'),
994
+ )
995
+
996
+ // Attach to existing accept/reject container (if already created)
997
+ this.attachAcceptRejectTracking(this.acceptRejectContainerEle)
998
+ }
999
+
1000
+ private attachAcceptRejectTracking(container?: HTMLElement): void {
1001
+ if (!container || !this.sendTrackingEvent) return
1002
+ if (container.dataset.trackingAttached) return
1003
+ container.dataset.trackingAttached = 'true'
1004
+
1005
+ container
1006
+ .querySelector(`.${BASE_CLASS}-actions-accept button`)
1007
+ ?.addEventListener('click', () =>
1008
+ this.sendTrackingEvent?.('accept inline response'),
1009
+ )
1010
+
1011
+ container
1012
+ .querySelector(`.${BASE_CLASS}-actions-rejectAll button`)
1013
+ ?.addEventListener('click', () =>
1014
+ this.sendTrackingEvent?.('reject inline response'),
1015
+ )
1016
+ }
1017
+ }
1018
+
1019
+ export { AIInlineView }