@brightspot/ui 6.0.4-pr.228.1 → 6.0.4

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 (136) hide show
  1. package/dist/custom-elements.json +237 -237
  2. package/dist/storybook/assets/{ActionBar.stories-B3W9l3sW.js → ActionBar.stories-BSwwf2PX.js} +1 -1
  3. package/dist/storybook/assets/{ActionItem.stories-Bgq9Si14.js → ActionItem.stories-SCIA5Rt0.js} +1 -1
  4. package/dist/storybook/assets/{AiSparkle.stories-BvZZGCv0.js → AiSparkle.stories-ByeiNU3G.js} +1 -1
  5. package/dist/storybook/assets/{Avatar.stories-DKefO8vf.js → Avatar.stories-1EUJytBr.js} +1 -1
  6. package/dist/storybook/assets/{AvatarGroup.stories-DLU0xm5i.js → AvatarGroup.stories-Bstlt4go.js} +1 -1
  7. package/dist/storybook/assets/{Badge.stories-DYf4buS2.js → Badge.stories-X7m0Vl2G.js} +1 -1
  8. package/dist/storybook/assets/{Banner.stories-kvxGWQ8i.js → Banner.stories-ljxjOtEc.js} +1 -1
  9. package/dist/storybook/assets/{Button-QbHhnaex.js → Button-Dbpmp5Ih.js} +1 -1
  10. package/dist/storybook/assets/{Button.stories-Cbc2kacG.js → Button.stories-C5qS3rIw.js} +1 -1
  11. package/dist/storybook/assets/{ButtonGroup.stories-BlMr_i2l.js → ButtonGroup.stories-Bl1Ko9jX.js} +1 -1
  12. package/dist/storybook/assets/{Card.stories-CXgpz0_-.js → Card.stories-CfFIzXg5.js} +1 -1
  13. package/dist/storybook/assets/{Celebrate.stories-DGuheVhJ.js → Celebrate.stories-TSJrIQR8.js} +1 -1
  14. package/dist/storybook/assets/{Checkbox.stories-D5gjg3gd.js → Checkbox.stories-DUpT9Iwh.js} +1 -1
  15. package/dist/storybook/assets/{CircularProgress.stories-BtEajA8s.js → CircularProgress.stories-usNosiIU.js} +1 -1
  16. package/dist/storybook/assets/{ClipboardMixin.stories-CVWhGXfx.js → ClipboardMixin.stories-0jnZ0Drs.js} +1 -1
  17. package/dist/storybook/assets/{Color-6BZIO3FS-Cy2iWC0B.js → Color-6BZIO3FS-C6ecAOER.js} +1 -1
  18. package/dist/storybook/assets/{Colors.stories-lMKhdwtD.js → Colors.stories-DcbIlkPs.js} +1 -1
  19. package/dist/storybook/assets/{CombinedEffects.stories-GYFjehaD.js → CombinedEffects.stories-CU-hwRPT.js} +1 -1
  20. package/dist/storybook/assets/{ComponentStatesMixin-Cxyscq1q.js → ComponentStatesMixin-Dcz-J-hg.js} +1 -1
  21. package/dist/storybook/assets/{ComponentStatesMixin.stories-Czvdt00v.js → ComponentStatesMixin.stories-orhdmIUX.js} +1 -1
  22. package/dist/storybook/assets/{CopyToClipboard.stories-EYf9o4P1.js → CopyToClipboard.stories-D1R2yCQL.js} +1 -1
  23. package/dist/storybook/assets/{Debounce.stories-B4zKKGEF.js → Debounce.stories-6z8aEn7O.js} +1 -1
  24. package/dist/storybook/assets/{DocsRenderer-LL677BLK-BTEtWPBs.js → DocsRenderer-LL677BLK-B-fTNYB5.js} +3 -3
  25. package/dist/storybook/assets/{Dropdown.stories-WQFH9gjF.js → Dropdown.stories-CeVpVPrP.js} +1 -1
  26. package/dist/storybook/assets/{EmptyState.stories-CtZTgOyf.js → EmptyState.stories-DdCyApUP.js} +1 -1
  27. package/dist/storybook/assets/{EscaAvatar.stories-PJbKYuIx.js → EscaAvatar.stories-DNK85ssI.js} +1 -1
  28. package/dist/storybook/assets/{Events.stories-CED0yKoW.js → Events.stories-B1qeq2wy.js} +1 -1
  29. package/dist/storybook/assets/{Heading.stories-Yo84UBrv.js → Heading.stories-DRu5hUyJ.js} +1 -1
  30. package/dist/storybook/assets/{HueRipple.stories-DQaK4bfx.js → HueRipple.stories-D3zqVZWM.js} +1 -1
  31. package/dist/storybook/assets/{Icon.stories-BLBUeiJt.js → Icon.stories-CKG5fIIH.js} +1 -1
  32. package/dist/storybook/assets/{IconButton.stories-DE-AWDCu.js → IconButton.stories-B3RZKBqV.js} +1 -1
  33. package/dist/storybook/assets/{LinearProgress.stories-BMOO9ziw.js → LinearProgress.stories-BPvFKGi0.js} +1 -1
  34. package/dist/storybook/assets/{Message.stories-CQ4FeNtL.js → Message.stories-Dq3YDccT.js} +1 -1
  35. package/dist/storybook/assets/{OnFindMixin.stories-BgF86VyY.js → OnFindMixin.stories-qKTooUKN.js} +1 -1
  36. package/dist/storybook/assets/{Pagination.stories-BQz3D7WR.js → Pagination.stories-BaFWcckS.js} +1 -1
  37. package/dist/storybook/assets/{Popover.stories-BySl8X_V.js → Popover.stories-DlHlfWrk.js} +1 -1
  38. package/dist/storybook/assets/{ReadyMixin-ZKicHfUd.js → ReadyMixin-BQ-q8NO4.js} +1 -1
  39. package/dist/storybook/assets/{RovingTabindexMixin.stories-DSHo6CDn.js → RovingTabindexMixin.stories-CQkteE6h.js} +1 -1
  40. package/dist/storybook/assets/{Rtc.stories-k6JRiPH-.js → Rtc.stories-BWBDrPM8.js} +1 -1
  41. package/dist/storybook/assets/{ScrollShadow.stories-DC0FuAGC.js → ScrollShadow.stories-BtM7Q6Ys.js} +1 -1
  42. package/dist/storybook/assets/{Switch.stories-wOpKQIoZ.js → Switch.stories-Ys6MzOf7.js} +1 -1
  43. package/dist/storybook/assets/{Tab.stories-48kIvcjq.js → Tab.stories-CNIDOscR.js} +1 -1
  44. package/dist/storybook/assets/{Tabs.stories-BOy2M1hf.js → Tabs.stories-oAxuRqKE.js} +1 -1
  45. package/dist/storybook/assets/{Throttle.stories-nWsWmaUP.js → Throttle.stories-D2nPrZEL.js} +1 -1
  46. package/dist/storybook/assets/{Tooltip.stories-lw4S0OCL.js → Tooltip.stories-DJhjWYNV.js} +1 -1
  47. package/dist/storybook/assets/{Upload.stories-CT96w70S.js → Upload.stories-DBveASQF.js} +1 -1
  48. package/dist/storybook/assets/{UploadItem.stories-DAQ0uKRd.js → UploadItem.stories-Co5bGJs6.js} +1 -1
  49. package/dist/storybook/assets/{Welcome.stories-D_tWLJfQ.js → Welcome.stories-Cls_kv8A.js} +1 -1
  50. package/dist/storybook/assets/{Widget.stories-Vklgd-HE.js → Widget.stories-CXpqw5z8.js} +1 -1
  51. package/dist/storybook/assets/{WithTooltip-65CFNBJE-CkTzfxlJ.js → WithTooltip-65CFNBJE-Ik6o5Ygb.js} +1 -1
  52. package/dist/storybook/assets/{blocks-Dcu5vb5v.js → blocks-DjXAnVrm.js} +5 -5
  53. package/dist/storybook/assets/{formatter-EIJCOSYU-Dv3UXZl_.js → formatter-EIJCOSYU-CQXaWVan.js} +1 -1
  54. package/dist/storybook/assets/if-defined-BVO6TNCy.js +1 -0
  55. package/dist/storybook/assets/{iframe-DUPD-I_r.js → iframe-D43T7JCn.js} +4 -4
  56. package/dist/storybook/assets/{index-DonibaDQ.js → index-DIk8fbbl.js} +1 -1
  57. package/dist/storybook/assets/onFind-CamigPPi.js +1 -0
  58. package/dist/storybook/assets/{onFind.stories-CUNfMRDo.js → onFind.stories-DgxMtTTG.js} +20 -20
  59. package/dist/storybook/assets/{onRemove.stories-SA3czp21.js → onRemove.stories-DltMfNLX.js} +1 -1
  60. package/dist/storybook/assets/{onVisible.stories-BaKmrATX.js → onVisible.stories-x3VhGAuF.js} +1 -1
  61. package/dist/storybook/assets/{style-map-DcmF1KuF.js → style-map-C5J-rKx9.js} +1 -1
  62. package/dist/storybook/assets/{syntaxhighlighter-ED5Y7EFY-CgbdQuEL.js → syntaxhighlighter-ED5Y7EFY-CphVNry2.js} +1 -1
  63. package/dist/storybook/iframe.html +1 -1
  64. package/dist/storybook/project.json +1 -1
  65. package/dist/util/onFind.d.ts.map +1 -1
  66. package/dist/util/onFind.js +66 -137
  67. package/dist/util/onFind.js.map +1 -1
  68. package/package.json +1 -1
  69. package/src/legacy/tool-ui/src/dom/onFind.ts +270 -29
  70. package/src/legacy/tool-ui/src/main/webapp/dist/{2111.efb40a1ab7d6b02913dd.js → 2111.3956b5196a514b2c0131.js} +1 -1
  71. package/src/legacy/tool-ui/src/main/webapp/dist/{2456.2c20c3564647ca071b26.js → 2456.5bcfb782c2ec27de32ed.js} +1 -1
  72. package/src/legacy/tool-ui/src/main/webapp/dist/{2537.a4d0a358f9c1a60ebc68.js → 2537.e8f1359bedd328bf57f4.js} +1 -1
  73. package/src/legacy/tool-ui/src/main/webapp/dist/{270.8fb1c93bc009582a32cd.js → 270.3011484ff80f3093083a.js} +1 -1
  74. package/src/legacy/tool-ui/src/main/webapp/dist/{2825.9c2b897f2a3799dcbd19.js → 2825.c1342ac2662d11fd4125.js} +1 -1
  75. package/src/legacy/tool-ui/src/main/webapp/dist/{2947.52cb126b0e2ab4415189.js → 2947.f96d21c44c05980974ef.js} +1 -1
  76. package/src/legacy/tool-ui/src/main/webapp/dist/{3532.ed7716198932139a4fb1.js → 3532.c358dfbb2cde0f802c7f.js} +1 -1
  77. package/src/legacy/tool-ui/src/main/webapp/dist/{3543.c62d88fc2904cccc7e64.js → 3543.2d704cf9e170322468e7.js} +2 -2
  78. package/src/legacy/tool-ui/src/main/webapp/dist/{3611.5466757310c53bea4b6e.js → 3611.61837ffa933f74502094.js} +1 -1
  79. package/src/legacy/tool-ui/src/main/webapp/dist/4114.57fe159e416e716f8cbc.js +1 -0
  80. package/src/legacy/tool-ui/src/main/webapp/dist/{4374.a2ea1952e2daf222dc20.js → 4374.37147747a254da8f5f8a.js} +1 -1
  81. package/src/legacy/tool-ui/src/main/webapp/dist/{4450.9eaca48c71e3dfb64a45.js → 4450.16dd5684292fd0a7ea7f.js} +1 -1
  82. package/src/legacy/tool-ui/src/main/webapp/dist/{4478.3c6e9704ad67996b53a8.js → 4478.93f64e6a6ccb35a6c6d4.js} +1 -1
  83. package/src/legacy/tool-ui/src/main/webapp/dist/4582.243dbaa3d8a8648f6f40.js +1 -0
  84. package/src/legacy/tool-ui/src/main/webapp/dist/{4790.ff3be0fd92b8d7422ae0.js → 4790.10d75f7c7f8e54ce83a1.js} +1 -1
  85. package/src/legacy/tool-ui/src/main/webapp/dist/4795.034ebc93a67b7a3d6536.js +1 -0
  86. package/src/legacy/tool-ui/src/main/webapp/dist/{5098.36bb17ff636e87930c6c.js → 5098.33613009827cfc80aafb.js} +1 -1
  87. package/src/legacy/tool-ui/src/main/webapp/dist/{5385.a7d0efb64a5e06173012.js → 5385.6656501b67424994820b.js} +1 -1
  88. package/src/legacy/tool-ui/src/main/webapp/dist/{5598.2f1f3ddbbaefdc2fce5a.js → 5598.d84773ca53126661bdca.js} +2 -2
  89. package/src/legacy/tool-ui/src/main/webapp/dist/{5617.96a2611314c9148efa9c.js → 5617.c81ecb679371ca302f1f.js} +1 -1
  90. package/src/legacy/tool-ui/src/main/webapp/dist/{7175.43f44b9e832f6734d8ea.js → 5718.449113ae2463a3bb8a83.js} +2 -2
  91. package/src/legacy/tool-ui/src/main/webapp/dist/{1478.b8f12bb302ba4337da4c.js → 6086.7ca02b827506f29db590.js} +1 -1
  92. package/src/legacy/tool-ui/src/main/webapp/dist/{6216.3ad86a4e1c11cd87b2cc.js → 6216.2d532054fcb8e634f96b.js} +1 -1
  93. package/src/legacy/tool-ui/src/main/webapp/dist/{6497.17547f58bb12eb6df22d.js → 6497.b7d8dcbf0e7c8d8d538d.js} +1 -1
  94. package/src/legacy/tool-ui/src/main/webapp/dist/{6565.9abec7b54647bee08edc.js → 6565.0e5abc3bd344c53ae154.js} +1 -1
  95. package/src/legacy/tool-ui/src/main/webapp/dist/{1536.9b3398bf3ebc2f20f009.js → 7033.4cd6efbe12e7aaa35745.js} +1 -1
  96. package/src/legacy/tool-ui/src/main/webapp/dist/{7202.237027436f4c50941edf.js → 7202.1e5b8f21215ea6eae20a.js} +1 -1
  97. package/src/legacy/tool-ui/src/main/webapp/dist/{6664.ec6ef73e3bb33125bd4c.js → 7361.793163ca71dfac69d9eb.js} +1 -1
  98. package/src/legacy/tool-ui/src/main/webapp/dist/{7524.ae0837d4dafc92523de7.js → 7524.2990be869cf0a2988d17.js} +1 -1
  99. package/src/legacy/tool-ui/src/main/webapp/dist/{7741.84e705c31c3ebc66db92.js → 7741.0b2789c4e783af835763.js} +1 -1
  100. package/src/legacy/tool-ui/src/main/webapp/dist/{7863.043ee730e243753af268.js → 7863.2a1d1fd229778a47e10b.js} +1 -1
  101. package/src/legacy/tool-ui/src/main/webapp/dist/{8752.3e4315bdb4ad40297406.js → 8752.3d02a0f42ec39786fdf0.js} +1 -1
  102. package/src/legacy/tool-ui/src/main/webapp/dist/{8897.b12d749c9564eaa0c945.js → 8897.bfeed19f2a4acbb6d67c.js} +1 -1
  103. package/src/legacy/tool-ui/src/main/webapp/dist/{8934.9f3371f510334b7bae6d.js → 8934.e90ceca8169fc25e4e1b.js} +1 -1
  104. package/src/legacy/tool-ui/src/main/webapp/dist/{9277.385ca94e4e3722d25e81.js → 9277.88b2d89b3ba1c24e7f93.js} +2 -2
  105. package/src/legacy/tool-ui/src/main/webapp/dist/{9360.269cf0d9b358dcf52f55.js → 9360.bb0352313d610cae11de.js} +2 -2
  106. package/src/legacy/tool-ui/src/main/webapp/dist/{9576.18cf577b8886dd85372e.js → 9576.174d6a99544d17e7416d.js} +1 -1
  107. package/src/legacy/tool-ui/src/main/webapp/dist/Appetizeio.185641211f7c0e42a455.js +1 -0
  108. package/src/legacy/tool-ui/src/main/webapp/dist/CISpectrum.74db7dc80b3a6797a167.js +1 -0
  109. package/src/legacy/tool-ui/src/main/webapp/dist/{CodeMirror.2fda1e731cfcb7bec629.js → CodeMirror.5ddffe054374f883d6f8.js} +1 -1
  110. package/src/legacy/tool-ui/src/main/webapp/dist/{ImageEditor.a6da6e88cc958354ec68.js → ImageEditor.14e3b3035666436f53a5.js} +1 -1
  111. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.24cbb57c0030725925a0.js +500 -0
  112. package/src/legacy/tool-ui/src/main/webapp/dist/TimedContent.4bb4dc83ffbe4019dd7b.js +1 -0
  113. package/src/legacy/tool-ui/src/main/webapp/dist/{VideoEditor.c183998c7b2b0dae98f6.js → VideoEditor.11c89dda5cf125738a33.js} +2 -2
  114. package/src/legacy/tool-ui/src/main/webapp/dist/{v4.18729ea4f861ad351303.js → v4.e496a62fb1d4be0544d4.js} +9 -9
  115. package/src/legacy/tool-ui/src/main/webapp/dist/{v5.beb4fdae5f572ba09fa3.js → v5.1711204aaf6c5fa01b1b.js} +8 -8
  116. package/dist/storybook/assets/if-defined-Ct57L3GT.js +0 -1
  117. package/dist/storybook/assets/onFind-BCF79WfX.js +0 -1
  118. package/src/legacy/tool-ui/src/main/webapp/dist/3409.8e764d5fa8e2c2cf4d00.js +0 -1
  119. package/src/legacy/tool-ui/src/main/webapp/dist/4795.d4ba3cc84dbf7e58fecb.js +0 -1
  120. package/src/legacy/tool-ui/src/main/webapp/dist/5306.b41630da0d1df3453bc0.js +0 -1
  121. package/src/legacy/tool-ui/src/main/webapp/dist/6996.f0fbe667259b36548b69.js +0 -1
  122. package/src/legacy/tool-ui/src/main/webapp/dist/8430.0e134152362fff9ad9d0.js +0 -1
  123. package/src/legacy/tool-ui/src/main/webapp/dist/Appetizeio.47287ce7992dc52bcb47.js +0 -1
  124. package/src/legacy/tool-ui/src/main/webapp/dist/CISpectrum.45b362ff7dbae9d80cd9.js +0 -1
  125. package/src/legacy/tool-ui/src/main/webapp/dist/RTEProseMirror.5a8f4754ee77adc85db2.js +0 -500
  126. package/src/legacy/tool-ui/src/main/webapp/dist/TimedContent.2d0ed03e8d1c994ecfb2.js +0 -1
  127. package/src/legacy/tool-ui/src/main/webapp/v4/bsp-rings-bg.svg +0 -9
  128. /package/src/legacy/tool-ui/src/main/webapp/dist/{3543.c62d88fc2904cccc7e64.js.LICENSE.txt → 3543.2d704cf9e170322468e7.js.LICENSE.txt} +0 -0
  129. /package/src/legacy/tool-ui/src/main/webapp/dist/{5598.2f1f3ddbbaefdc2fce5a.js.LICENSE.txt → 5598.d84773ca53126661bdca.js.LICENSE.txt} +0 -0
  130. /package/src/legacy/tool-ui/src/main/webapp/dist/{7175.43f44b9e832f6734d8ea.js.LICENSE.txt → 5718.449113ae2463a3bb8a83.js.LICENSE.txt} +0 -0
  131. /package/src/legacy/tool-ui/src/main/webapp/dist/{9277.385ca94e4e3722d25e81.js.LICENSE.txt → 9277.88b2d89b3ba1c24e7f93.js.LICENSE.txt} +0 -0
  132. /package/src/legacy/tool-ui/src/main/webapp/dist/{9360.269cf0d9b358dcf52f55.js.LICENSE.txt → 9360.bb0352313d610cae11de.js.LICENSE.txt} +0 -0
  133. /package/src/legacy/tool-ui/src/main/webapp/dist/{RTEProseMirror.5a8f4754ee77adc85db2.js.LICENSE.txt → RTEProseMirror.24cbb57c0030725925a0.js.LICENSE.txt} +0 -0
  134. /package/src/legacy/tool-ui/src/main/webapp/dist/{VideoEditor.c183998c7b2b0dae98f6.js.LICENSE.txt → VideoEditor.11c89dda5cf125738a33.js.LICENSE.txt} +0 -0
  135. /package/src/legacy/tool-ui/src/main/webapp/dist/{v4.18729ea4f861ad351303.js.LICENSE.txt → v4.e496a62fb1d4be0544d4.js.LICENSE.txt} +0 -0
  136. /package/src/legacy/tool-ui/src/main/webapp/dist/{v5.beb4fdae5f572ba09fa3.js.LICENSE.txt → v5.1711204aaf6c5fa01b1b.js.LICENSE.txt} +0 -0
@@ -1,25 +1,5 @@
1
1
  import log from 'loglevel';
2
- // Versioned so that a page mixing this version with an older bundled copy
3
- // degrades to two independent engines instead of an older engine reading
4
- // state fields it doesn't understand. On such mixed pages, elements already
5
- // processed by the older copy aren't marked for this one, so callbacks can
6
- // re-fire for them and must stay idempotent during the rollout window.
7
- const KEY = Symbol.for('brightspot.onFind.v2');
8
- // The marker attribute prefix contains a dash so names can never collide
9
- // with the `data-ofc<n>` names generated by older copies sharing the page.
10
- const CALLED_ATTR_PREFIX = 'data-ofc2-';
11
- // Above this many recorded elements in one batch, a single full scan is
12
- // cheaper than matching each element's subtree separately.
13
- const MAX_PENDING_ELEMENTS = 500;
14
- // When this many recorded elements share a parent (e.g. a burst of sibling
15
- // inserts into one list), one scan of the parent is cheaper than scanning
16
- // each sibling separately, and its cost is amortized by the group size.
17
- const SIBLING_COALESCE_THRESHOLD = 50;
18
- // Selectors that can't be evaluated against just the mutated subtrees:
19
- // sibling combinators and positional or relational pseudo-classes can change
20
- // which elements outside those subtrees match. Callbacks with these
21
- // selectors do a full scan on every trigger instead.
22
- const NON_SCOPABLE_SELECTOR_RE = /[+~]|:(first|last|only|nth|has)/;
2
+ const KEY = Symbol.for('brightspot.onFind');
23
3
  let _state;
24
4
  function getState() {
25
5
  if (_state)
@@ -30,12 +10,10 @@ function getState() {
30
10
  calledIndex: 0,
31
11
  callbacks: [],
32
12
  blacklist: [],
33
- blacklistSelector: null,
34
13
  triggerPaused: false,
35
14
  triggerOnResume: false,
36
15
  triggerAll: false,
37
- pendingElements: new Set(),
38
- pendingRemovals: false,
16
+ triggerElements: [],
39
17
  triggerFrame: 0,
40
18
  initialized: false,
41
19
  };
@@ -48,56 +26,46 @@ class Callback {
48
26
  #called;
49
27
  #selectors;
50
28
  #fn;
51
- #scopable;
29
+ #matches;
52
30
  constructor(root, selectors, fn) {
53
31
  this.#root = root;
54
- this.#called = `${CALLED_ATTR_PREFIX}${getState().calledIndex++}`;
32
+ this.#called = `data-ofc${getState().calledIndex++}`;
55
33
  if (!Array.isArray(selectors)) {
56
34
  selectors = [selectors];
57
35
  }
58
- // :is() parses forgivingly, so an invalid selector would otherwise just
59
- // silently never match; fail loudly here instead.
60
- for (const s of selectors) {
61
- try {
62
- document.querySelector(s);
36
+ this.#selectors = selectors
37
+ .map(selectors.some(s => s.indexOf(',') > -1) ? s => s : s => `${s}:not([${this.#called}])`)
38
+ .join(',');
39
+ this.#fn = fn;
40
+ const matches = selectors.map(s => s.trim()).filter(s => s.indexOf(' ') < 0 && s.indexOf(',') < 0);
41
+ if (matches.length === selectors.length) {
42
+ this.#matches = matches;
43
+ }
44
+ }
45
+ addTriggerElements(triggerElements, element) {
46
+ if (this.#root.contains(element)) {
47
+ if (element.matches(this.#selectors)) {
48
+ triggerElements.push(element);
63
49
  }
64
- catch {
65
- log.error('onFind: invalid selector!', s);
50
+ for (const e of element.querySelectorAll(this.#selectors)) {
51
+ triggerElements.push(e);
66
52
  }
67
53
  }
68
- // :is() keeps the :not() filter attached to every comma-separated part.
69
- this.#selectors = selectors.map(s => `:is(${s}):not([${this.#called}])`).join(',');
70
- this.#scopable = !selectors.some(s => NON_SCOPABLE_SELECTOR_RE.test(s));
71
- this.#fn = fn;
72
54
  }
73
- /**
74
- * Runs the callback on new matches. Without `roots`, scans the whole
75
- * registration root; with `roots`, looks only at those elements and their
76
- * subtrees (ancestor combinators still match against the whole document).
77
- */
78
- trigger(roots) {
55
+ trigger(elements) {
79
56
  if (document.readyState === 'loading') {
80
57
  return;
81
58
  }
82
- if (!roots || !this.#scopable) {
83
- for (const element of this.#root.querySelectorAll(this.#selectors)) {
84
- this.#callCallback(element);
85
- }
86
- return;
87
- }
88
- for (const root of roots) {
89
- if (this.#root.contains(root)) {
90
- if (root.matches(this.#selectors)) {
91
- this.#callCallback(root);
92
- }
93
- for (const element of root.querySelectorAll(this.#selectors)) {
59
+ if (this.#matches && Array.isArray(elements)) {
60
+ for (const element of elements) {
61
+ if (this.#matches.some(m => element.matches(m))) {
94
62
  this.#callCallback(element);
95
63
  }
96
64
  }
97
- else if (this.#root instanceof Node && root.contains(this.#root)) {
98
- // The registration root itself is inside a mutated subtree.
99
- this.trigger();
100
- return;
65
+ }
66
+ else {
67
+ for (const element of this.#root.querySelectorAll(this.#selectors)) {
68
+ this.#callCallback(element);
101
69
  }
102
70
  }
103
71
  }
@@ -119,63 +87,20 @@ class Callback {
119
87
  function inBlacklist(node) {
120
88
  if (!(node instanceof Element))
121
89
  return false;
122
- const state = getState();
123
- if (state.blacklist.length === 0)
124
- return false;
125
- if (state.blacklistSelector === null) {
126
- state.blacklistSelector = state.blacklist.join(',');
127
- }
128
- return node.closest(state.blacklistSelector) !== null;
90
+ const { blacklist } = getState();
91
+ return blacklist.length > 0 && blacklist.some(s => node.closest(s) !== null);
129
92
  }
130
93
  const every = Array.prototype.every;
131
94
  const isText = (node) => node.nodeType === Node.TEXT_NODE;
132
- // Replaces large same-parent groups with their parent. Scanning the parent
133
- // can also visit elements that were not recorded, but the marker attribute
134
- // makes that harmless.
135
- function coalesceSiblings(elements) {
136
- if (elements.length <= SIBLING_COALESCE_THRESHOLD)
137
- return elements;
138
- const byParent = new Map();
139
- const roots = [];
140
- for (const element of elements) {
141
- const parent = element.parentElement;
142
- if (parent) {
143
- let group = byParent.get(parent);
144
- if (!group)
145
- byParent.set(parent, (group = []));
146
- group.push(element);
147
- }
148
- else {
149
- roots.push(element);
150
- }
151
- }
152
- for (const [parent, group] of byParent) {
153
- if (group.length > SIBLING_COALESCE_THRESHOLD) {
154
- roots.push(parent);
155
- }
156
- else {
157
- roots.push(...group);
158
- }
159
- }
160
- // A pending element that is also a promoted parent would appear twice.
161
- return [...new Set(roots)];
162
- }
163
- function recordElement(state, element) {
164
- if (state.triggerAll)
165
- return;
166
- state.pendingElements.add(element);
167
- if (state.pendingElements.size > MAX_PENDING_ELEMENTS) {
168
- state.triggerAll = true;
169
- state.pendingElements.clear();
170
- }
171
- }
172
95
  function triggerCallbacks(mutations) {
173
96
  const state = getState();
174
97
  if (state.triggerPaused) {
175
98
  state.triggerOnResume = true;
176
99
  return;
177
100
  }
178
- if (Array.isArray(mutations)) {
101
+ const checkMutations = Array.isArray(mutations);
102
+ const validMutations = [];
103
+ if (checkMutations) {
179
104
  for (const mutation of mutations) {
180
105
  const target = mutation.target;
181
106
  if (inBlacklist(target)) {
@@ -184,45 +109,50 @@ function triggerCallbacks(mutations) {
184
109
  switch (mutation.type) {
185
110
  case 'attributes':
186
111
  if (mutation.oldValue !== target.getAttribute(mutation.attributeName)) {
187
- // An attribute change can affect matching of the element itself
188
- // and, for combinator selectors, of its descendants, so record
189
- // it as a subtree to scan.
190
- recordElement(state, target);
112
+ validMutations.push(mutation);
191
113
  }
192
114
  break;
193
115
  case 'childList':
194
- for (const node of mutation.addedNodes) {
195
- if (node.nodeType === Node.ELEMENT_NODE) {
196
- recordElement(state, node);
197
- }
198
- }
199
- // Removals can only change matching for non-scopable selectors
200
- // (e.g. positional pseudo-classes on the remaining siblings).
201
- if (!every.call(mutation.removedNodes, isText)) {
202
- state.pendingRemovals = true;
116
+ if (!every.call(mutation.addedNodes, isText) || !every.call(mutation.removedNodes, isText)) {
117
+ validMutations.push(mutation);
203
118
  }
204
119
  break;
205
120
  }
206
121
  }
122
+ if (validMutations.length === 0) {
123
+ return;
124
+ }
207
125
  }
208
- else {
126
+ if (validMutations.length > 500) {
209
127
  state.triggerAll = true;
210
128
  }
211
- if ((state.triggerAll || state.pendingElements.size > 0 || state.pendingRemovals) && !state.triggerFrame) {
129
+ if (!state.triggerAll) {
130
+ if (checkMutations) {
131
+ for (const mutation of validMutations) {
132
+ const element = mutation.target;
133
+ switch (mutation.type) {
134
+ case 'attributes':
135
+ state.triggerElements.push(element);
136
+ break;
137
+ case 'childList':
138
+ for (const callback of state.callbacks) {
139
+ callback.addTriggerElements(state.triggerElements, element);
140
+ }
141
+ break;
142
+ }
143
+ }
144
+ }
145
+ else {
146
+ state.triggerAll = true;
147
+ }
148
+ }
149
+ if ((state.triggerAll || state.triggerElements.length > 0) && !state.triggerFrame) {
212
150
  state.triggerFrame = window.requestAnimationFrame(() => {
213
- const all = state.triggerAll;
214
- const removals = state.pendingRemovals;
215
- const roots = all ? undefined : coalesceSiblings(Array.from(state.pendingElements).filter(e => e.isConnected));
151
+ const elements = state.triggerAll ? undefined : state.triggerElements;
216
152
  state.triggerAll = false;
217
- state.pendingElements.clear();
218
- state.pendingRemovals = false;
153
+ state.triggerElements = [];
219
154
  state.triggerFrame = 0;
220
- if (!all && roots && roots.length === 0 && !removals) {
221
- return;
222
- }
223
- // With an empty roots array (removal-only batch), scopable callbacks
224
- // do nothing and non-scopable ones fall back to a full scan.
225
- state.callbacks.forEach(callback => callback.trigger(roots));
155
+ state.callbacks.forEach(callback => callback.trigger(elements));
226
156
  });
227
157
  }
228
158
  }
@@ -300,7 +230,7 @@ onFind.resume = () => {
300
230
  }
301
231
  };
302
232
  onFind.ignore = (...selectors) => {
303
- const state = getState();
233
+ const { blacklist } = getState();
304
234
  for (const s of selectors) {
305
235
  try {
306
236
  document.querySelector(s);
@@ -308,9 +238,8 @@ onFind.ignore = (...selectors) => {
308
238
  catch {
309
239
  continue;
310
240
  }
311
- if (!state.blacklist.includes(s)) {
312
- state.blacklist.push(s);
313
- state.blacklistSelector = null;
241
+ if (!blacklist.includes(s)) {
242
+ blacklist.push(s);
314
243
  }
315
244
  }
316
245
  };
@@ -1 +1 @@
1
- {"version":3,"file":"onFind.js","sourceRoot":"","sources":["../../src/util/onFind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onFind.js","sourceRoot":"","sources":["../../src/util/onFind.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightspot/ui",
3
- "version": "6.0.4-pr.228.1",
3
+ "version": "6.0.4",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "description": "A UI library for building Brightspot CMS components.",
@@ -1,36 +1,277 @@
1
- import onFind from '../../../../util/onFind'
2
-
3
- export type { CallbackFunction, Selectors } from '../../../../util/onFind'
4
-
5
- // CMS zones whose internal DOM churn must never trigger or receive onFind
6
- // callbacks (rich text editors, live displays, and other high-frequency
7
- // mutation sources).
8
- onFind.ignore(
9
- '.CIG-wordCount',
10
- '.ContentEdit-previewDisplay',
11
- '.ContentLabel',
12
- '.PreviewFrame-typeDisplay',
13
- '.ProseMirrorToolbar',
14
- '.ProseMirror',
15
- '.ProseMirrorContainer',
16
- '.ProseMirror-fullscreen-container',
17
- '.ProseMirror-comments',
18
- '.RichTextEditor',
19
- '.WorkInProgressSaveStatus',
20
- '#aria-live-container',
21
- '.widget-urlsAutomatic',
22
- )
23
-
24
- // Hide the document until DOMContentLoaded, when the first full onFind pass
25
- // is scheduled, to prevent a flash of unenhanced UI.
1
+ import log from 'loglevel'
2
+
3
+ export type CallbackFunction<E extends Element> = (element: E) => void
4
+ export type Selectors = string | string[]
5
+
6
+ let calledIndex = 0
7
+
8
+ class Callback<E extends Element> {
9
+ #root
10
+ #called
11
+ #selectors
12
+ #fn
13
+ #matches
14
+
15
+ constructor(root: ParentNode, selectors: Selectors, fn: CallbackFunction<E>) {
16
+ this.#root = root
17
+ this.#called = `data-ofc${calledIndex++}`
18
+
19
+ if (!Array.isArray(selectors)) {
20
+ selectors = [selectors]
21
+ }
22
+
23
+ this.#selectors = selectors
24
+ .map(
25
+ selectors.some((s) => s.indexOf(',') > -1)
26
+ ? (s) => s
27
+ : (s) => `${s}:not([${this.#called}])`,
28
+ )
29
+ .join(',')
30
+
31
+ this.#fn = fn
32
+
33
+ const matches = selectors
34
+ .map((s) => s.trim())
35
+ .filter((s) => s.indexOf(' ') < 0 && s.indexOf(',') < 0)
36
+
37
+ if (matches.length === selectors.length) {
38
+ this.#matches = matches
39
+ }
40
+ }
41
+
42
+ addTriggerElements(triggerElements: Element[], element: Element) {
43
+ if (this.#root.contains(element)) {
44
+ if (element.matches(this.#selectors)) {
45
+ triggerElements.push(element)
46
+ }
47
+
48
+ for (const e of element.querySelectorAll(this.#selectors)) {
49
+ triggerElements.push(e)
50
+ }
51
+ }
52
+ }
53
+
54
+ trigger(elements?: E[]) {
55
+ if (document.readyState === 'loading') {
56
+ return
57
+ }
58
+
59
+ if (this.#matches && Array.isArray(elements)) {
60
+ for (const element of elements) {
61
+ if (this.#matches.some((m) => element.matches(m))) {
62
+ this.#callCallback(element)
63
+ }
64
+ }
65
+ } else {
66
+ for (const element of this.#root.querySelectorAll<E>(this.#selectors)) {
67
+ this.#callCallback(element)
68
+ }
69
+ }
70
+ }
71
+
72
+ #callCallback(element: E) {
73
+ if (inBlacklist(element)) {
74
+ return
75
+ }
76
+
77
+ if (!element.hasAttribute(this.#called)) {
78
+ element.setAttribute(this.#called, '')
79
+
80
+ try {
81
+ this.#fn(element)
82
+ } catch (error) {
83
+ log.error('Failed callback!', element, error)
84
+ }
85
+ }
86
+ }
87
+ }
88
+
89
+ let triggerPaused = false
90
+ let triggerOnResume = false
91
+ let triggerAll = false
92
+ let triggerElements: Element[] = []
93
+ let triggerFrame: number
94
+ const callbacks: Callback<Element>[] = []
95
+
96
+ function inBlacklist(node: Node) {
97
+ if (!(node instanceof Element)) return false
98
+
99
+ return (
100
+ node.closest('.CIG-wordCount') !== null ||
101
+ node.closest('.ContentEdit-previewDisplay') !== null ||
102
+ node.closest('.ContentLabel') !== null ||
103
+ node.closest('.PreviewFrame-typeDisplay') !== null ||
104
+ node.closest('.ProseMirrorToolbar') !== null ||
105
+ node.closest('.ProseMirror') !== null ||
106
+ node.closest('.ProseMirrorContainer') !== null ||
107
+ node.closest('.ProseMirror-fullscreen-container') !== null ||
108
+ node.closest('.ProseMirror-comments') !== null ||
109
+ node.closest('.RichTextEditor') !== null ||
110
+ node.closest('.WorkInProgressSaveStatus') !== null ||
111
+ node.closest('#aria-live-container') !== null ||
112
+ node.closest('.widget-urlsAutomatic') !== null
113
+ )
114
+ }
115
+
116
+ const every = Array.prototype.every
117
+ const isText = (node: Node) => node.nodeType === Node.TEXT_NODE
118
+
119
+ function triggerCallbacks(mutations?: MutationRecord[]) {
120
+ if (triggerPaused) {
121
+ triggerOnResume = true
122
+ return
123
+ }
124
+
125
+ const checkMutations = Array.isArray(mutations)
126
+ const validMutations = []
127
+
128
+ if (checkMutations) {
129
+ for (const mutation of mutations) {
130
+ const target = mutation.target
131
+
132
+ if (inBlacklist(target)) {
133
+ continue
134
+ }
135
+
136
+ switch (mutation.type) {
137
+ case 'attributes':
138
+ if (
139
+ mutation.oldValue !==
140
+ (target as Element).getAttribute(mutation.attributeName as string)
141
+ ) {
142
+ validMutations.push(mutation)
143
+ }
144
+ break
145
+ case 'childList':
146
+ if (
147
+ !every.call(mutation.addedNodes, isText) ||
148
+ !every.call(mutation.removedNodes, isText)
149
+ ) {
150
+ validMutations.push(mutation)
151
+ }
152
+ break
153
+ }
154
+ }
155
+
156
+ if (validMutations.length === 0) {
157
+ return
158
+ }
159
+ }
160
+
161
+ if (validMutations.length > 500) {
162
+ triggerAll = true
163
+ }
164
+
165
+ if (!triggerAll) {
166
+ if (checkMutations) {
167
+ for (const mutation of validMutations) {
168
+ const element = mutation.target as Element
169
+
170
+ switch (mutation.type) {
171
+ case 'attributes':
172
+ triggerElements.push(element)
173
+ break
174
+ case 'childList':
175
+ for (const callback of callbacks) {
176
+ callback.addTriggerElements(triggerElements, element)
177
+ }
178
+ break
179
+ }
180
+ }
181
+ } else {
182
+ triggerAll = true
183
+ }
184
+ }
185
+
186
+ if ((triggerAll || triggerElements.length > 0) && !triggerFrame) {
187
+ triggerFrame = window.requestAnimationFrame(() => {
188
+ const elements = triggerAll ? undefined : triggerElements
189
+ triggerAll = false
190
+ triggerElements = []
191
+ triggerFrame = 0
192
+
193
+ callbacks.forEach((callback) => callback.trigger(elements))
194
+ })
195
+ }
196
+ }
197
+
198
+ function initialize() {
199
+ document.documentElement.hidden = false
200
+ triggerCallbacks()
201
+
202
+ new MutationObserver(triggerCallbacks).observe(document, {
203
+ attributes: true,
204
+ attributeFilter: [
205
+ 'class',
206
+ 'data-bsp-autosubmit',
207
+ 'data-chart-type',
208
+ 'data-code-type',
209
+ 'data-internal-name',
210
+ 'data-tab',
211
+ 'name',
212
+ 'rel',
213
+ 'target',
214
+ ],
215
+ attributeOldValue: true,
216
+ childList: true,
217
+ subtree: true,
218
+ })
219
+ }
220
+
26
221
  document.documentElement.hidden = true
27
222
 
28
223
  if (document.readyState === 'loading') {
29
- document.addEventListener('DOMContentLoaded', () => {
30
- document.documentElement.hidden = false
31
- })
224
+ document.addEventListener('DOMContentLoaded', initialize)
32
225
  } else {
33
- document.documentElement.hidden = false
226
+ initialize()
227
+ }
228
+
229
+ function onFind<E extends Element>(
230
+ root: ParentNode,
231
+ selectors: Selectors,
232
+ fn: CallbackFunction<E>,
233
+ ): void
234
+
235
+ function onFind<E extends Element>(
236
+ selectors: Selectors,
237
+ fn: CallbackFunction<E>,
238
+ ): void
239
+
240
+ function onFind<E extends Element>(
241
+ rootOrSelectors: ParentNode | Selectors,
242
+ selectorsOrFn: Selectors | CallbackFunction<E>,
243
+ fn?: CallbackFunction<E>,
244
+ ): void {
245
+ let root: ParentNode
246
+ let selectors: Selectors
247
+
248
+ if (typeof fn !== 'undefined') {
249
+ root = rootOrSelectors as Element
250
+ selectors = selectorsOrFn as Selectors
251
+ } else {
252
+ root = document
253
+ selectors = rootOrSelectors as Selectors
254
+ fn = selectorsOrFn as CallbackFunction<E>
255
+ }
256
+
257
+ const callback = new Callback(root, selectors, fn)
258
+ callback.trigger()
259
+ callbacks.push(callback as Callback<Element>)
260
+ }
261
+
262
+ onFind.triggerCallbacks = triggerCallbacks
263
+
264
+ onFind.pause = () => {
265
+ triggerPaused = true
266
+ }
267
+
268
+ onFind.resume = () => {
269
+ triggerPaused = false
270
+
271
+ if (triggerOnResume) {
272
+ triggerOnResume = false
273
+ setTimeout(triggerCallbacks, 100)
274
+ }
34
275
  }
35
276
 
36
277
  export default onFind
@@ -1 +1 @@
1
- (self.webpackChunkbrightspot_cms=self.webpackChunkbrightspot_cms||[]).push([[2111],{76990(){},92111(s,t,n){"use strict";n.r(t),n.d(t,{default:()=>v});var e=n(96291),l=n.n(e),r=n(96918),a=n.n(r),o=n(77322),c=n.n(o),i=n(33419),d=n.n(i),u=n(10207),b=n.n(u),f=n(37746),h=n.n(f),m=n(76990),p=n.n(m),k={};for(const s in m)"default"!==s&&(k[s]=()=>m[s]);n.d(t,k);var g={};g.styleTagTransform=h(),g.setAttributes=d(),g.insert=c().bind(null,"head"),g.domAPI=a(),g.insertStyleElement=b(),l()(p(),g);const v=p()&&p().locals?p().locals:void 0}}]);
1
+ (self.webpackChunkbrightspot_cms=self.webpackChunkbrightspot_cms||[]).push([[2111],{76990(){},92111(s,t,n){"use strict";n.r(t),n.d(t,{default:()=>v});var e=n(96291),l=n.n(e),r=n(96918),a=n.n(r),o=n(77322),c=n.n(o),i=n(55800),d=n.n(i),u=n(10207),b=n.n(u),f=n(37746),h=n.n(f),m=n(76990),p=n.n(m),k={};for(const s in m)"default"!==s&&(k[s]=()=>m[s]);n.d(t,k);var g={};g.styleTagTransform=h(),g.setAttributes=d(),g.insert=c().bind(null,"head"),g.domAPI=a(),g.insertStyleElement=b(),l()(p(),g);const v=p()&&p().locals?p().locals:void 0}}]);