@primer/behaviors 0.0.0-20240412132604 → 0.0.0-20240814142107

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.
@@ -1,6 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAnchoredPosition = void 0;
1
+ 'use strict';
2
+
4
3
  const alternateOrders = {
5
4
  'outside-top': ['outside-bottom', 'outside-right', 'outside-left', 'outside-bottom'],
6
5
  'outside-bottom': ['outside-top', 'outside-right', 'outside-left', 'outside-bottom'],
@@ -24,7 +23,6 @@ function getAnchoredPosition(floatingElement, anchorElement, settings = {}) {
24
23
  };
25
24
  return pureCalculateAnchoredPosition(clippingRect, relativeRect, floatingElement.getBoundingClientRect(), anchorElement instanceof Element ? anchorElement.getBoundingClientRect() : anchorElement, getDefaultSettings(settings));
26
25
  }
27
- exports.getAnchoredPosition = getAnchoredPosition;
28
26
  function getPositionedParent(element) {
29
27
  if (isOnTopLayer(element))
30
28
  return document.body;
@@ -254,3 +252,5 @@ function shouldRecalculateAlignment(align, currentPos, containerDimensions, elem
254
252
  currentPos.left < containerDimensions.left);
255
253
  }
256
254
  }
255
+
256
+ exports.getAnchoredPosition = getAnchoredPosition;
@@ -1,6 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.positionedOffset = exports.overflowOffset = exports.overflowParent = exports.offset = void 0;
1
+ 'use strict';
2
+
4
3
  function offset(element) {
5
4
  const rect = element.getBoundingClientRect();
6
5
  return {
@@ -8,7 +7,6 @@ function offset(element) {
8
7
  left: rect.left + window.pageXOffset,
9
8
  };
10
9
  }
11
- exports.offset = offset;
12
10
  function overflowParent(targetElement) {
13
11
  let element = targetElement;
14
12
  const document = element.ownerDocument;
@@ -40,7 +38,6 @@ function overflowParent(targetElement) {
40
38
  }
41
39
  return element instanceof Document ? null : element;
42
40
  }
43
- exports.overflowParent = overflowParent;
44
41
  function overflowOffset(element, targetContainer) {
45
42
  let container = targetContainer;
46
43
  const document = element.ownerDocument;
@@ -76,7 +73,6 @@ function overflowOffset(element, targetContainer) {
76
73
  const right = width - (left + element.offsetWidth);
77
74
  return { top, left, bottom, right, height, width };
78
75
  }
79
- exports.overflowOffset = overflowOffset;
80
76
  function positionedOffset(targetElement, container) {
81
77
  let element = targetElement;
82
78
  const document = element.ownerDocument;
@@ -126,10 +122,14 @@ function positionedOffset(targetElement, container) {
126
122
  const right = scrollWidth - (left + width);
127
123
  return { top, left, bottom, right, _container: measuredContainer };
128
124
  }
129
- exports.positionedOffset = positionedOffset;
130
125
  function getDocumentHeight(documentBody, documentElement) {
131
126
  return Math.max(documentBody.scrollHeight, documentElement.scrollHeight, documentBody.offsetHeight, documentElement.offsetHeight, documentElement.clientHeight);
132
127
  }
133
128
  function getDocumentWidth(documentBody, documentElement) {
134
129
  return Math.max(documentBody.scrollWidth, documentElement.scrollWidth, documentBody.offsetWidth, documentElement.offsetWidth, documentElement.clientWidth);
135
130
  }
131
+
132
+ exports.offset = offset;
133
+ exports.overflowOffset = overflowOffset;
134
+ exports.overflowParent = overflowParent;
135
+ exports.positionedOffset = positionedOffset;
@@ -1,9 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.focusTrap = void 0;
4
- const iterate_focusable_elements_js_1 = require("./utils/iterate-focusable-elements.js");
5
- const event_listener_signal_js_1 = require("./polyfills/event-listener-signal.js");
6
- (0, event_listener_signal_js_1.polyfill)();
1
+ 'use strict';
2
+
3
+ var iterateFocusableElements = require('./utils/iterate-focusable-elements.js');
4
+ var eventListenerSignal = require('./polyfills/event-listener-signal.js');
5
+
6
+ eventListenerSignal.polyfill();
7
7
  const suspendedTrapStack = [];
8
8
  let activeTrap = undefined;
9
9
  function tryReactivate() {
@@ -19,6 +19,23 @@ function followSignal(signal) {
19
19
  });
20
20
  return controller;
21
21
  }
22
+ function observeFocusTrap(container, sentinels) {
23
+ const observer = new MutationObserver(mutations => {
24
+ for (const mutation of mutations) {
25
+ if (mutation.type === 'childList' && mutation.addedNodes.length) {
26
+ const firstChild = container.firstElementChild;
27
+ const lastChild = container.lastElementChild;
28
+ const [sentinelStart, sentinelEnd] = sentinels;
29
+ if (!(firstChild === null || firstChild === void 0 ? void 0 : firstChild.classList.contains('sentinel')))
30
+ container.insertAdjacentElement('afterbegin', sentinelStart);
31
+ if (!(lastChild === null || lastChild === void 0 ? void 0 : lastChild.classList.contains('sentinel')))
32
+ container.insertAdjacentElement('beforeend', sentinelEnd);
33
+ }
34
+ }
35
+ });
36
+ observer.observe(container, { childList: true });
37
+ return observer;
38
+ }
22
39
  function focusTrap(container, initialFocus, abortSignal) {
23
40
  const controller = new AbortController();
24
41
  const signal = abortSignal !== null && abortSignal !== void 0 ? abortSignal : controller.signal;
@@ -28,7 +45,7 @@ function focusTrap(container, initialFocus, abortSignal) {
28
45
  sentinelStart.setAttribute('tabindex', '0');
29
46
  sentinelStart.setAttribute('aria-hidden', 'true');
30
47
  sentinelStart.onfocus = () => {
31
- const lastFocusableChild = (0, iterate_focusable_elements_js_1.getFocusableChild)(container, true);
48
+ const lastFocusableChild = iterateFocusableElements.getFocusableChild(container, true);
32
49
  lastFocusableChild === null || lastFocusableChild === void 0 ? void 0 : lastFocusableChild.focus();
33
50
  };
34
51
  const sentinelEnd = document.createElement('span');
@@ -36,11 +53,12 @@ function focusTrap(container, initialFocus, abortSignal) {
36
53
  sentinelEnd.setAttribute('tabindex', '0');
37
54
  sentinelEnd.setAttribute('aria-hidden', 'true');
38
55
  sentinelEnd.onfocus = () => {
39
- const firstFocusableChild = (0, iterate_focusable_elements_js_1.getFocusableChild)(container);
56
+ const firstFocusableChild = iterateFocusableElements.getFocusableChild(container);
40
57
  firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();
41
58
  };
42
59
  container.prepend(sentinelStart);
43
60
  container.append(sentinelEnd);
61
+ const observer = observeFocusTrap(container, [sentinelStart, sentinelEnd]);
44
62
  let lastFocusedChild = undefined;
45
63
  function ensureTrapZoneHasFocus(focusedElement) {
46
64
  if (focusedElement instanceof HTMLElement && document.contains(container)) {
@@ -49,7 +67,7 @@ function focusTrap(container, initialFocus, abortSignal) {
49
67
  return;
50
68
  }
51
69
  else {
52
- if (lastFocusedChild && (0, iterate_focusable_elements_js_1.isTabbable)(lastFocusedChild) && container.contains(lastFocusedChild)) {
70
+ if (lastFocusedChild && iterateFocusableElements.isTabbable(lastFocusedChild) && container.contains(lastFocusedChild)) {
53
71
  lastFocusedChild.focus();
54
72
  return;
55
73
  }
@@ -58,7 +76,7 @@ function focusTrap(container, initialFocus, abortSignal) {
58
76
  return;
59
77
  }
60
78
  else {
61
- const firstFocusableChild = (0, iterate_focusable_elements_js_1.getFocusableChild)(container);
79
+ const firstFocusableChild = iterateFocusableElements.getFocusableChild(container);
62
80
  firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();
63
81
  return;
64
82
  }
@@ -84,6 +102,7 @@ function focusTrap(container, initialFocus, abortSignal) {
84
102
  if (suspendedTrapIndex >= 0) {
85
103
  suspendedTrapStack.splice(suspendedTrapIndex, 1);
86
104
  }
105
+ observer.disconnect();
87
106
  tryReactivate();
88
107
  });
89
108
  document.addEventListener('focus', event => {
@@ -104,4 +123,5 @@ function focusTrap(container, initialFocus, abortSignal) {
104
123
  return controller;
105
124
  }
106
125
  }
126
+
107
127
  exports.focusTrap = focusTrap;
@@ -1,12 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.focusZone = exports.hasActiveDescendantAttribute = exports.activeDescendantActivatedIndirectly = exports.activeDescendantActivatedDirectly = exports.isActiveDescendantAttribute = exports.FocusKeys = void 0;
4
- const event_listener_signal_js_1 = require("./polyfills/event-listener-signal.js");
5
- const user_agent_js_1 = require("./utils/user-agent.js");
6
- const iterate_focusable_elements_js_1 = require("./utils/iterate-focusable-elements.js");
7
- const unique_id_js_1 = require("./utils/unique-id.js");
8
- (0, event_listener_signal_js_1.polyfill)();
9
- var FocusKeys;
1
+ 'use strict';
2
+
3
+ var eventListenerSignal = require('./polyfills/event-listener-signal.js');
4
+ var userAgent = require('./utils/user-agent.js');
5
+ var iterateFocusableElements = require('./utils/iterate-focusable-elements.js');
6
+ var uniqueId = require('./utils/unique-id.js');
7
+
8
+ eventListenerSignal.polyfill();
9
+ exports.FocusKeys = void 0;
10
10
  (function (FocusKeys) {
11
11
  FocusKeys[FocusKeys["ArrowHorizontal"] = 1] = "ArrowHorizontal";
12
12
  FocusKeys[FocusKeys["ArrowVertical"] = 2] = "ArrowVertical";
@@ -22,26 +22,26 @@ var FocusKeys;
22
22
  FocusKeys[FocusKeys["HJKL"] = 12] = "HJKL";
23
23
  FocusKeys[FocusKeys["WASD"] = 96] = "WASD";
24
24
  FocusKeys[FocusKeys["All"] = 511] = "All";
25
- })(FocusKeys || (exports.FocusKeys = FocusKeys = {}));
25
+ })(exports.FocusKeys || (exports.FocusKeys = {}));
26
26
  const KEY_TO_BIT = {
27
- ArrowLeft: FocusKeys.ArrowHorizontal,
28
- ArrowDown: FocusKeys.ArrowVertical,
29
- ArrowUp: FocusKeys.ArrowVertical,
30
- ArrowRight: FocusKeys.ArrowHorizontal,
31
- h: FocusKeys.HL,
32
- j: FocusKeys.JK,
33
- k: FocusKeys.JK,
34
- l: FocusKeys.HL,
35
- a: FocusKeys.AD,
36
- s: FocusKeys.WS,
37
- w: FocusKeys.WS,
38
- d: FocusKeys.AD,
39
- Tab: FocusKeys.Tab,
40
- Home: FocusKeys.HomeAndEnd,
41
- End: FocusKeys.HomeAndEnd,
42
- PageUp: FocusKeys.PageUpDown,
43
- PageDown: FocusKeys.PageUpDown,
44
- Backspace: FocusKeys.Backspace,
27
+ ArrowLeft: exports.FocusKeys.ArrowHorizontal,
28
+ ArrowDown: exports.FocusKeys.ArrowVertical,
29
+ ArrowUp: exports.FocusKeys.ArrowVertical,
30
+ ArrowRight: exports.FocusKeys.ArrowHorizontal,
31
+ h: exports.FocusKeys.HL,
32
+ j: exports.FocusKeys.JK,
33
+ k: exports.FocusKeys.JK,
34
+ l: exports.FocusKeys.HL,
35
+ a: exports.FocusKeys.AD,
36
+ s: exports.FocusKeys.WS,
37
+ w: exports.FocusKeys.WS,
38
+ d: exports.FocusKeys.AD,
39
+ Tab: exports.FocusKeys.Tab,
40
+ Home: exports.FocusKeys.HomeAndEnd,
41
+ End: exports.FocusKeys.HomeAndEnd,
42
+ PageUp: exports.FocusKeys.PageUpDown,
43
+ PageDown: exports.FocusKeys.PageUpDown,
44
+ Backspace: exports.FocusKeys.Backspace,
45
45
  };
46
46
  const KEY_TO_DIRECTION = {
47
47
  ArrowLeft: 'previous',
@@ -68,7 +68,7 @@ function getDirection(keyboardEvent) {
68
68
  if (keyboardEvent.key === 'Tab' && keyboardEvent.shiftKey) {
69
69
  return 'previous';
70
70
  }
71
- const isMac = (0, user_agent_js_1.isMacOS)();
71
+ const isMac = userAgent.isMacOS();
72
72
  if ((isMac && keyboardEvent.metaKey) || (!isMac && keyboardEvent.ctrlKey)) {
73
73
  if (keyboardEvent.key === 'ArrowLeft' || keyboardEvent.key === 'ArrowUp') {
74
74
  return 'start';
@@ -91,10 +91,10 @@ function shouldIgnoreFocusHandling(keyboardEvent, activeElement) {
91
91
  if (keyLength === 1) {
92
92
  return true;
93
93
  }
94
- if (key === 'ArrowDown' && (0, user_agent_js_1.isMacOS)() && !keyboardEvent.metaKey) {
94
+ if (key === 'ArrowDown' && userAgent.isMacOS() && !keyboardEvent.metaKey) {
95
95
  return true;
96
96
  }
97
- if (key === 'ArrowDown' && !(0, user_agent_js_1.isMacOS)() && keyboardEvent.altKey) {
97
+ if (key === 'ArrowDown' && !userAgent.isMacOS() && keyboardEvent.altKey) {
98
98
  return true;
99
99
  }
100
100
  }
@@ -122,15 +122,15 @@ function shouldIgnoreFocusHandling(keyboardEvent, activeElement) {
122
122
  }
123
123
  return false;
124
124
  }
125
- exports.isActiveDescendantAttribute = 'data-is-active-descendant';
126
- exports.activeDescendantActivatedDirectly = 'activated-directly';
127
- exports.activeDescendantActivatedIndirectly = 'activated-indirectly';
128
- exports.hasActiveDescendantAttribute = 'data-has-active-descendant';
125
+ const isActiveDescendantAttribute = 'data-is-active-descendant';
126
+ const activeDescendantActivatedDirectly = 'activated-directly';
127
+ const activeDescendantActivatedIndirectly = 'activated-indirectly';
128
+ const hasActiveDescendantAttribute = 'data-has-active-descendant';
129
129
  function focusZone(container, settings) {
130
130
  var _a, _b, _c, _d, _e;
131
131
  const focusableElements = [];
132
132
  const savedTabIndex = new WeakMap();
133
- const bindKeys = (_a = settings === null || settings === void 0 ? void 0 : settings.bindKeys) !== null && _a !== void 0 ? _a : ((settings === null || settings === void 0 ? void 0 : settings.getNextFocusable) ? FocusKeys.ArrowAll : FocusKeys.ArrowVertical) | FocusKeys.HomeAndEnd;
133
+ const bindKeys = (_a = settings === null || settings === void 0 ? void 0 : settings.bindKeys) !== null && _a !== void 0 ? _a : ((settings === null || settings === void 0 ? void 0 : settings.getNextFocusable) ? exports.FocusKeys.ArrowAll : exports.FocusKeys.ArrowVertical) | exports.FocusKeys.HomeAndEnd;
134
134
  const focusOutBehavior = (_b = settings === null || settings === void 0 ? void 0 : settings.focusOutBehavior) !== null && _b !== void 0 ? _b : 'stop';
135
135
  const focusInStrategy = (_c = settings === null || settings === void 0 ? void 0 : settings.focusInStrategy) !== null && _c !== void 0 ? _c : 'previous';
136
136
  const activeDescendantControl = settings === null || settings === void 0 ? void 0 : settings.activeDescendantControl;
@@ -162,18 +162,18 @@ function focusZone(container, settings) {
162
162
  }
163
163
  function setActiveDescendant(from, to, directlyActivated = false) {
164
164
  if (!to.id) {
165
- to.setAttribute('id', (0, unique_id_js_1.uniqueId)());
165
+ to.setAttribute('id', uniqueId.uniqueId());
166
166
  }
167
167
  if (from && from !== to) {
168
- from.removeAttribute(exports.isActiveDescendantAttribute);
168
+ from.removeAttribute(isActiveDescendantAttribute);
169
169
  }
170
170
  if (!activeDescendantControl ||
171
171
  (!directlyActivated && activeDescendantControl.getAttribute('aria-activedescendant') === to.id)) {
172
172
  return;
173
173
  }
174
174
  activeDescendantControl.setAttribute('aria-activedescendant', to.id);
175
- container.setAttribute(exports.hasActiveDescendantAttribute, to.id);
176
- to.setAttribute(exports.isActiveDescendantAttribute, directlyActivated ? exports.activeDescendantActivatedDirectly : exports.activeDescendantActivatedIndirectly);
175
+ container.setAttribute(hasActiveDescendantAttribute, to.id);
176
+ to.setAttribute(isActiveDescendantAttribute, directlyActivated ? activeDescendantActivatedDirectly : activeDescendantActivatedIndirectly);
177
177
  activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(to, from, directlyActivated);
178
178
  }
179
179
  function clearActiveDescendant(previouslyActiveElement = currentFocusedElement) {
@@ -181,8 +181,8 @@ function focusZone(container, settings) {
181
181
  currentFocusedElement = undefined;
182
182
  }
183
183
  activeDescendantControl === null || activeDescendantControl === void 0 ? void 0 : activeDescendantControl.removeAttribute('aria-activedescendant');
184
- container.removeAttribute(exports.hasActiveDescendantAttribute);
185
- previouslyActiveElement === null || previouslyActiveElement === void 0 ? void 0 : previouslyActiveElement.removeAttribute(exports.isActiveDescendantAttribute);
184
+ container.removeAttribute(hasActiveDescendantAttribute);
185
+ previouslyActiveElement === null || previouslyActiveElement === void 0 ? void 0 : previouslyActiveElement.removeAttribute(isActiveDescendantAttribute);
186
186
  activeDescendantCallback === null || activeDescendantCallback === void 0 ? void 0 : activeDescendantCallback(undefined, previouslyActiveElement, false);
187
187
  }
188
188
  function beginFocusManagement(...elements) {
@@ -249,21 +249,31 @@ function focusZone(container, settings) {
249
249
  strict: settings === null || settings === void 0 ? void 0 : settings.strict,
250
250
  onlyTabbable: settings === null || settings === void 0 ? void 0 : settings.onlyTabbable,
251
251
  };
252
- beginFocusManagement(...(0, iterate_focusable_elements_js_1.iterateFocusableElements)(container, iterateFocusableElementsOptions));
252
+ beginFocusManagement(...iterateFocusableElements.iterateFocusableElements(container, iterateFocusableElementsOptions));
253
253
  const initialElement = typeof focusInStrategy === 'function' ? focusInStrategy(document.body) : getFirstFocusableElement();
254
254
  updateFocusedElement(initialElement);
255
255
  const observer = new MutationObserver(mutations => {
256
256
  for (const mutation of mutations) {
257
257
  for (const removedNode of mutation.removedNodes) {
258
258
  if (removedNode instanceof HTMLElement) {
259
- endFocusManagement(...(0, iterate_focusable_elements_js_1.iterateFocusableElements)(removedNode, iterateFocusableElementsOptions));
259
+ endFocusManagement(...iterateFocusableElements.iterateFocusableElements(removedNode));
260
+ }
261
+ }
262
+ if (mutation.type === 'attributes' && mutation.oldValue === null) {
263
+ if (mutation.target instanceof HTMLElement) {
264
+ endFocusManagement(mutation.target);
260
265
  }
261
266
  }
262
267
  }
263
268
  for (const mutation of mutations) {
264
269
  for (const addedNode of mutation.addedNodes) {
265
270
  if (addedNode instanceof HTMLElement) {
266
- beginFocusManagement(...(0, iterate_focusable_elements_js_1.iterateFocusableElements)(addedNode, iterateFocusableElementsOptions));
271
+ beginFocusManagement(...iterateFocusableElements.iterateFocusableElements(addedNode, iterateFocusableElementsOptions));
272
+ }
273
+ }
274
+ if (mutation.type === 'attributes' && mutation.oldValue !== null) {
275
+ if (mutation.target instanceof HTMLElement) {
276
+ beginFocusManagement(mutation.target);
267
277
  }
268
278
  }
269
279
  }
@@ -271,6 +281,8 @@ function focusZone(container, settings) {
271
281
  observer.observe(container, {
272
282
  subtree: true,
273
283
  childList: true,
284
+ attributeFilter: ['hidden', 'disabled'],
285
+ attributeOldValue: true,
274
286
  });
275
287
  const controller = new AbortController();
276
288
  const signal = (_e = settings === null || settings === void 0 ? void 0 : settings.abortSignal) !== null && _e !== void 0 ? _e : controller.signal;
@@ -437,4 +449,9 @@ function focusZone(container, settings) {
437
449
  }, { signal });
438
450
  return controller;
439
451
  }
452
+
453
+ exports.activeDescendantActivatedDirectly = activeDescendantActivatedDirectly;
454
+ exports.activeDescendantActivatedIndirectly = activeDescendantActivatedIndirectly;
440
455
  exports.focusZone = focusZone;
456
+ exports.hasActiveDescendantAttribute = hasActiveDescendantAttribute;
457
+ exports.isActiveDescendantAttribute = isActiveDescendantAttribute;
package/dist/cjs/index.js CHANGED
@@ -1,21 +1,26 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./anchored-position.js"), exports);
18
- __exportStar(require("./focus-trap.js"), exports);
19
- __exportStar(require("./focus-zone.js"), exports);
20
- __exportStar(require("./scroll-into-view.js"), exports);
21
- __exportStar(require("./dimensions.js"), exports);
1
+ 'use strict';
2
+
3
+ var anchoredPosition = require('./anchored-position.js');
4
+ var focusTrap = require('./focus-trap.js');
5
+ var focusZone = require('./focus-zone.js');
6
+ var scrollIntoView = require('./scroll-into-view.js');
7
+ var dimensions = require('./dimensions.js');
8
+
9
+
10
+
11
+ exports.getAnchoredPosition = anchoredPosition.getAnchoredPosition;
12
+ exports.focusTrap = focusTrap.focusTrap;
13
+ Object.defineProperty(exports, "FocusKeys", {
14
+ enumerable: true,
15
+ get: function () { return focusZone.FocusKeys; }
16
+ });
17
+ exports.activeDescendantActivatedDirectly = focusZone.activeDescendantActivatedDirectly;
18
+ exports.activeDescendantActivatedIndirectly = focusZone.activeDescendantActivatedIndirectly;
19
+ exports.focusZone = focusZone.focusZone;
20
+ exports.hasActiveDescendantAttribute = focusZone.hasActiveDescendantAttribute;
21
+ exports.isActiveDescendantAttribute = focusZone.isActiveDescendantAttribute;
22
+ exports.scrollIntoView = scrollIntoView.scrollIntoView;
23
+ exports.offset = dimensions.offset;
24
+ exports.overflowOffset = dimensions.overflowOffset;
25
+ exports.overflowParent = dimensions.overflowParent;
26
+ exports.positionedOffset = dimensions.positionedOffset;
@@ -1,6 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.polyfill = void 0;
1
+ 'use strict';
2
+
4
3
  let signalSupported = false;
5
4
  function noop() { }
6
5
  try {
@@ -41,4 +40,5 @@ function polyfill() {
41
40
  signalSupported = true;
42
41
  }
43
42
  }
43
+
44
44
  exports.polyfill = polyfill;
@@ -1,6 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.scrollIntoView = void 0;
1
+ 'use strict';
2
+
4
3
  function scrollIntoView(child, viewingArea, { direction = 'vertical', startMargin = 0, endMargin = 0, behavior = 'smooth' } = {}) {
5
4
  const startSide = direction === 'vertical' ? 'top' : 'left';
6
5
  const endSide = direction === 'vertical' ? 'bottom' : 'right';
@@ -18,4 +17,5 @@ function scrollIntoView(child, viewingArea, { direction = 'vertical', startMargi
18
17
  viewingArea.scrollTo({ behavior, [startSide]: scrollHeightToChildBottom + endMargin });
19
18
  }
20
19
  }
20
+
21
21
  exports.scrollIntoView = scrollIntoView;
@@ -1,19 +1,14 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./iterate-focusable-elements.js"), exports);
18
- __exportStar(require("./unique-id.js"), exports);
19
- __exportStar(require("./user-agent.js"), exports);
1
+ 'use strict';
2
+
3
+ var iterateFocusableElements = require('./iterate-focusable-elements.js');
4
+ var uniqueId = require('./unique-id.js');
5
+ var userAgent = require('./user-agent.js');
6
+
7
+
8
+
9
+ exports.getFocusableChild = iterateFocusableElements.getFocusableChild;
10
+ exports.isFocusable = iterateFocusableElements.isFocusable;
11
+ exports.isTabbable = iterateFocusableElements.isTabbable;
12
+ exports.iterateFocusableElements = iterateFocusableElements.iterateFocusableElements;
13
+ exports.uniqueId = uniqueId.uniqueId;
14
+ exports.isMacOS = userAgent.isMacOS;
@@ -1,6 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isTabbable = exports.isFocusable = exports.getFocusableChild = exports.iterateFocusableElements = void 0;
1
+ 'use strict';
2
+
4
3
  function* iterateFocusableElements(container, options = {}) {
5
4
  var _a, _b;
6
5
  const strict = (_a = options.strict) !== null && _a !== void 0 ? _a : false;
@@ -31,11 +30,9 @@ function* iterateFocusableElements(container, options = {}) {
31
30
  }
32
31
  return undefined;
33
32
  }
34
- exports.iterateFocusableElements = iterateFocusableElements;
35
33
  function getFocusableChild(container, lastChild = false) {
36
34
  return iterateFocusableElements(container, { reverse: lastChild, strict: true, onlyTabbable: true }).next().value;
37
35
  }
38
- exports.getFocusableChild = getFocusableChild;
39
36
  function isFocusable(elem, strict = false) {
40
37
  const disabledAttrInert = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'OPTGROUP', 'OPTION', 'FIELDSET'].includes(elem.tagName) &&
41
38
  elem.disabled;
@@ -66,8 +63,11 @@ function isFocusable(elem, strict = false) {
66
63
  }
67
64
  return elem.tabIndex !== -1;
68
65
  }
69
- exports.isFocusable = isFocusable;
70
66
  function isTabbable(elem, strict = false) {
71
67
  return isFocusable(elem, strict) && elem.getAttribute('tabindex') !== '-1';
72
68
  }
69
+
70
+ exports.getFocusableChild = getFocusableChild;
71
+ exports.isFocusable = isFocusable;
73
72
  exports.isTabbable = isTabbable;
73
+ exports.iterateFocusableElements = iterateFocusableElements;
@@ -1,8 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.uniqueId = void 0;
1
+ 'use strict';
2
+
4
3
  let idSeed = 10000;
5
4
  function uniqueId() {
6
5
  return `__primer_id_${idSeed++}`;
7
6
  }
7
+
8
8
  exports.uniqueId = uniqueId;
@@ -1,6 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMacOS = void 0;
1
+ 'use strict';
2
+
4
3
  let isMac = undefined;
5
4
  function isMacOS() {
6
5
  if (isMac === undefined) {
@@ -8,4 +7,5 @@ function isMacOS() {
8
7
  }
9
8
  return isMac;
10
9
  }
10
+
11
11
  exports.isMacOS = isMacOS;
@@ -9,7 +9,7 @@ const alternateAlignments = {
9
9
  end: ['start', 'center'],
10
10
  center: ['end', 'start'],
11
11
  };
12
- export function getAnchoredPosition(floatingElement, anchorElement, settings = {}) {
12
+ function getAnchoredPosition(floatingElement, anchorElement, settings = {}) {
13
13
  const parentElement = getPositionedParent(floatingElement);
14
14
  const clippingRect = getClippingRect(parentElement);
15
15
  const parentElementStyle = getComputedStyle(parentElement);
@@ -250,3 +250,5 @@ function shouldRecalculateAlignment(align, currentPos, containerDimensions, elem
250
250
  currentPos.left < containerDimensions.left);
251
251
  }
252
252
  }
253
+
254
+ export { getAnchoredPosition };
@@ -1,11 +1,11 @@
1
- export function offset(element) {
1
+ function offset(element) {
2
2
  const rect = element.getBoundingClientRect();
3
3
  return {
4
4
  top: rect.top + window.pageYOffset,
5
5
  left: rect.left + window.pageXOffset,
6
6
  };
7
7
  }
8
- export function overflowParent(targetElement) {
8
+ function overflowParent(targetElement) {
9
9
  let element = targetElement;
10
10
  const document = element.ownerDocument;
11
11
  if (!document) {
@@ -36,7 +36,7 @@ export function overflowParent(targetElement) {
36
36
  }
37
37
  return element instanceof Document ? null : element;
38
38
  }
39
- export function overflowOffset(element, targetContainer) {
39
+ function overflowOffset(element, targetContainer) {
40
40
  let container = targetContainer;
41
41
  const document = element.ownerDocument;
42
42
  if (!document) {
@@ -71,7 +71,7 @@ export function overflowOffset(element, targetContainer) {
71
71
  const right = width - (left + element.offsetWidth);
72
72
  return { top, left, bottom, right, height, width };
73
73
  }
74
- export function positionedOffset(targetElement, container) {
74
+ function positionedOffset(targetElement, container) {
75
75
  let element = targetElement;
76
76
  const document = element.ownerDocument;
77
77
  if (!document) {
@@ -126,3 +126,5 @@ function getDocumentHeight(documentBody, documentElement) {
126
126
  function getDocumentWidth(documentBody, documentElement) {
127
127
  return Math.max(documentBody.scrollWidth, documentElement.scrollWidth, documentBody.offsetWidth, documentElement.offsetWidth, documentElement.clientWidth);
128
128
  }
129
+
130
+ export { offset, overflowOffset, overflowParent, positionedOffset };
@@ -1,6 +1,7 @@
1
- import { getFocusableChild, isTabbable } from './utils/iterate-focusable-elements.js';
2
- import { polyfill as eventListenerSignalPolyfill } from './polyfills/event-listener-signal.js';
3
- eventListenerSignalPolyfill();
1
+ import { getFocusableChild, isTabbable } from './utils/iterate-focusable-elements.mjs';
2
+ import { polyfill } from './polyfills/event-listener-signal.mjs';
3
+
4
+ polyfill();
4
5
  const suspendedTrapStack = [];
5
6
  let activeTrap = undefined;
6
7
  function tryReactivate() {
@@ -16,7 +17,24 @@ function followSignal(signal) {
16
17
  });
17
18
  return controller;
18
19
  }
19
- export function focusTrap(container, initialFocus, abortSignal) {
20
+ function observeFocusTrap(container, sentinels) {
21
+ const observer = new MutationObserver(mutations => {
22
+ for (const mutation of mutations) {
23
+ if (mutation.type === 'childList' && mutation.addedNodes.length) {
24
+ const firstChild = container.firstElementChild;
25
+ const lastChild = container.lastElementChild;
26
+ const [sentinelStart, sentinelEnd] = sentinels;
27
+ if (!(firstChild === null || firstChild === void 0 ? void 0 : firstChild.classList.contains('sentinel')))
28
+ container.insertAdjacentElement('afterbegin', sentinelStart);
29
+ if (!(lastChild === null || lastChild === void 0 ? void 0 : lastChild.classList.contains('sentinel')))
30
+ container.insertAdjacentElement('beforeend', sentinelEnd);
31
+ }
32
+ }
33
+ });
34
+ observer.observe(container, { childList: true });
35
+ return observer;
36
+ }
37
+ function focusTrap(container, initialFocus, abortSignal) {
20
38
  const controller = new AbortController();
21
39
  const signal = abortSignal !== null && abortSignal !== void 0 ? abortSignal : controller.signal;
22
40
  container.setAttribute('data-focus-trap', 'active');
@@ -38,6 +56,7 @@ export function focusTrap(container, initialFocus, abortSignal) {
38
56
  };
39
57
  container.prepend(sentinelStart);
40
58
  container.append(sentinelEnd);
59
+ const observer = observeFocusTrap(container, [sentinelStart, sentinelEnd]);
41
60
  let lastFocusedChild = undefined;
42
61
  function ensureTrapZoneHasFocus(focusedElement) {
43
62
  if (focusedElement instanceof HTMLElement && document.contains(container)) {
@@ -81,6 +100,7 @@ export function focusTrap(container, initialFocus, abortSignal) {
81
100
  if (suspendedTrapIndex >= 0) {
82
101
  suspendedTrapStack.splice(suspendedTrapIndex, 1);
83
102
  }
103
+ observer.disconnect();
84
104
  tryReactivate();
85
105
  });
86
106
  document.addEventListener('focus', event => {
@@ -101,3 +121,5 @@ export function focusTrap(container, initialFocus, abortSignal) {
101
121
  return controller;
102
122
  }
103
123
  }
124
+
125
+ export { focusTrap };
@@ -1,9 +1,10 @@
1
- import { polyfill as eventListenerSignalPolyfill } from './polyfills/event-listener-signal.js';
2
- import { isMacOS } from './utils/user-agent.js';
3
- import { iterateFocusableElements } from './utils/iterate-focusable-elements.js';
4
- import { uniqueId } from './utils/unique-id.js';
5
- eventListenerSignalPolyfill();
6
- export var FocusKeys;
1
+ import { polyfill } from './polyfills/event-listener-signal.mjs';
2
+ import { isMacOS } from './utils/user-agent.mjs';
3
+ import { iterateFocusableElements } from './utils/iterate-focusable-elements.mjs';
4
+ import { uniqueId } from './utils/unique-id.mjs';
5
+
6
+ polyfill();
7
+ var FocusKeys;
7
8
  (function (FocusKeys) {
8
9
  FocusKeys[FocusKeys["ArrowHorizontal"] = 1] = "ArrowHorizontal";
9
10
  FocusKeys[FocusKeys["ArrowVertical"] = 2] = "ArrowVertical";
@@ -119,11 +120,11 @@ function shouldIgnoreFocusHandling(keyboardEvent, activeElement) {
119
120
  }
120
121
  return false;
121
122
  }
122
- export const isActiveDescendantAttribute = 'data-is-active-descendant';
123
- export const activeDescendantActivatedDirectly = 'activated-directly';
124
- export const activeDescendantActivatedIndirectly = 'activated-indirectly';
125
- export const hasActiveDescendantAttribute = 'data-has-active-descendant';
126
- export function focusZone(container, settings) {
123
+ const isActiveDescendantAttribute = 'data-is-active-descendant';
124
+ const activeDescendantActivatedDirectly = 'activated-directly';
125
+ const activeDescendantActivatedIndirectly = 'activated-indirectly';
126
+ const hasActiveDescendantAttribute = 'data-has-active-descendant';
127
+ function focusZone(container, settings) {
127
128
  var _a, _b, _c, _d, _e;
128
129
  const focusableElements = [];
129
130
  const savedTabIndex = new WeakMap();
@@ -253,7 +254,12 @@ export function focusZone(container, settings) {
253
254
  for (const mutation of mutations) {
254
255
  for (const removedNode of mutation.removedNodes) {
255
256
  if (removedNode instanceof HTMLElement) {
256
- endFocusManagement(...iterateFocusableElements(removedNode, iterateFocusableElementsOptions));
257
+ endFocusManagement(...iterateFocusableElements(removedNode));
258
+ }
259
+ }
260
+ if (mutation.type === 'attributes' && mutation.oldValue === null) {
261
+ if (mutation.target instanceof HTMLElement) {
262
+ endFocusManagement(mutation.target);
257
263
  }
258
264
  }
259
265
  }
@@ -263,11 +269,18 @@ export function focusZone(container, settings) {
263
269
  beginFocusManagement(...iterateFocusableElements(addedNode, iterateFocusableElementsOptions));
264
270
  }
265
271
  }
272
+ if (mutation.type === 'attributes' && mutation.oldValue !== null) {
273
+ if (mutation.target instanceof HTMLElement) {
274
+ beginFocusManagement(mutation.target);
275
+ }
276
+ }
266
277
  }
267
278
  });
268
279
  observer.observe(container, {
269
280
  subtree: true,
270
281
  childList: true,
282
+ attributeFilter: ['hidden', 'disabled'],
283
+ attributeOldValue: true,
271
284
  });
272
285
  const controller = new AbortController();
273
286
  const signal = (_e = settings === null || settings === void 0 ? void 0 : settings.abortSignal) !== null && _e !== void 0 ? _e : controller.signal;
@@ -434,3 +447,5 @@ export function focusZone(container, settings) {
434
447
  }, { signal });
435
448
  return controller;
436
449
  }
450
+
451
+ export { FocusKeys, activeDescendantActivatedDirectly, activeDescendantActivatedIndirectly, focusZone, hasActiveDescendantAttribute, isActiveDescendantAttribute };
@@ -0,0 +1,5 @@
1
+ export { getAnchoredPosition } from './anchored-position.mjs';
2
+ export { focusTrap } from './focus-trap.mjs';
3
+ export { FocusKeys, activeDescendantActivatedDirectly, activeDescendantActivatedIndirectly, focusZone, hasActiveDescendantAttribute, isActiveDescendantAttribute } from './focus-zone.mjs';
4
+ export { scrollIntoView } from './scroll-into-view.mjs';
5
+ export { offset, overflowOffset, overflowParent, positionedOffset } from './dimensions.mjs';
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -32,9 +32,11 @@ function monkeyPatch() {
32
32
  return originalAddEventListener.call(this, name, originalCallback, optionsOrCapture);
33
33
  };
34
34
  }
35
- export function polyfill() {
35
+ function polyfill() {
36
36
  if (!featureSupported()) {
37
37
  monkeyPatch();
38
38
  signalSupported = true;
39
39
  }
40
40
  }
41
+
42
+ export { polyfill };
@@ -1,4 +1,4 @@
1
- export function scrollIntoView(child, viewingArea, { direction = 'vertical', startMargin = 0, endMargin = 0, behavior = 'smooth' } = {}) {
1
+ function scrollIntoView(child, viewingArea, { direction = 'vertical', startMargin = 0, endMargin = 0, behavior = 'smooth' } = {}) {
2
2
  const startSide = direction === 'vertical' ? 'top' : 'left';
3
3
  const endSide = direction === 'vertical' ? 'bottom' : 'right';
4
4
  const scrollSide = direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
@@ -15,3 +15,5 @@ export function scrollIntoView(child, viewingArea, { direction = 'vertical', sta
15
15
  viewingArea.scrollTo({ behavior, [startSide]: scrollHeightToChildBottom + endMargin });
16
16
  }
17
17
  }
18
+
19
+ export { scrollIntoView };
@@ -0,0 +1,3 @@
1
+ export { getFocusableChild, isFocusable, isTabbable, iterateFocusableElements } from './iterate-focusable-elements.mjs';
2
+ export { uniqueId } from './unique-id.mjs';
3
+ export { isMacOS } from './user-agent.mjs';
@@ -1,4 +1,4 @@
1
- export function* iterateFocusableElements(container, options = {}) {
1
+ function* iterateFocusableElements(container, options = {}) {
2
2
  var _a, _b;
3
3
  const strict = (_a = options.strict) !== null && _a !== void 0 ? _a : false;
4
4
  const acceptFn = ((_b = options.onlyTabbable) !== null && _b !== void 0 ? _b : false) ? isTabbable : isFocusable;
@@ -28,10 +28,10 @@ export function* iterateFocusableElements(container, options = {}) {
28
28
  }
29
29
  return undefined;
30
30
  }
31
- export function getFocusableChild(container, lastChild = false) {
31
+ function getFocusableChild(container, lastChild = false) {
32
32
  return iterateFocusableElements(container, { reverse: lastChild, strict: true, onlyTabbable: true }).next().value;
33
33
  }
34
- export function isFocusable(elem, strict = false) {
34
+ function isFocusable(elem, strict = false) {
35
35
  const disabledAttrInert = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA', 'OPTGROUP', 'OPTION', 'FIELDSET'].includes(elem.tagName) &&
36
36
  elem.disabled;
37
37
  const hiddenInert = elem.hidden;
@@ -61,6 +61,8 @@ export function isFocusable(elem, strict = false) {
61
61
  }
62
62
  return elem.tabIndex !== -1;
63
63
  }
64
- export function isTabbable(elem, strict = false) {
64
+ function isTabbable(elem, strict = false) {
65
65
  return isFocusable(elem, strict) && elem.getAttribute('tabindex') !== '-1';
66
66
  }
67
+
68
+ export { getFocusableChild, isFocusable, isTabbable, iterateFocusableElements };
@@ -1,4 +1,6 @@
1
1
  let idSeed = 10000;
2
- export function uniqueId() {
2
+ function uniqueId() {
3
3
  return `__primer_id_${idSeed++}`;
4
4
  }
5
+
6
+ export { uniqueId };
@@ -1,7 +1,9 @@
1
1
  let isMac = undefined;
2
- export function isMacOS() {
2
+ function isMacOS() {
3
3
  if (isMac === undefined) {
4
4
  isMac = /^mac/i.test(window.navigator.platform);
5
5
  }
6
6
  return isMac;
7
7
  }
8
+
9
+ export { isMacOS };
package/package.json CHANGED
@@ -1,21 +1,26 @@
1
1
  {
2
2
  "name": "@primer/behaviors",
3
- "version": "0.0.0-20240412132604",
3
+ "version": "0.0.0-20240814142107",
4
4
  "description": "Shared behaviors for JavaScript components",
5
+ "type": "commonjs",
5
6
  "main": "dist/cjs/index.js",
6
- "module": "dist/esm/index.js",
7
+ "module": "dist/esm/index.mjs",
7
8
  "exports": {
8
9
  ".": {
9
- "module": "./dist/esm/index.js",
10
- "import": "./dist/esm/index.js",
11
- "require": "./dist/cjs/index.js",
12
- "types": "./dist/esm/index.d.ts"
10
+ "types": {
11
+ "import": "./dist/esm/index.d.ts",
12
+ "require": "./dist/cjs/index.d.ts"
13
+ },
14
+ "import": "./dist/esm/index.mjs",
15
+ "require": "./dist/cjs/index.js"
13
16
  },
14
17
  "./utils": {
15
- "module": "./dist/esm/utils/index.js",
16
- "import": "./dist/esm/utils/index.js",
17
- "require": "./dist/cjs/utils/index.js",
18
- "types": "./dist/esm/utils/index.d.ts"
18
+ "types": {
19
+ "import": "./dist/esm/utils/index.d.ts",
20
+ "require": "./dist/cjs/utils/index.d.ts"
21
+ },
22
+ "import": "./dist/esm/utils/index.mjs",
23
+ "require": "./dist/cjs/utils/index.js"
19
24
  }
20
25
  },
21
26
  "types": "dist/esm/index.d.ts",
@@ -24,16 +29,14 @@
24
29
  "utils"
25
30
  ],
26
31
  "sideEffects": [
27
- "dist/esm/focus-zone.js",
28
- "dist/esm/focus-trap.js",
32
+ "dist/esm/focus-zone.mjs",
33
+ "dist/esm/focus-trap.mjs",
29
34
  "dist/cjs/focus-zone.js",
30
35
  "dist/cjs/focus-trap.js"
31
36
  ],
32
37
  "scripts": {
33
- "clean": "rm -rf dist",
34
- "build": "npm run build:esm && npm run build:cjs",
35
- "build:esm": "tsc",
36
- "build:cjs": "tsc --module commonjs --outDir dist/cjs",
38
+ "clean": "rimraf dist",
39
+ "build": "rollup -c",
37
40
  "lint": "eslint src/",
38
41
  "test": "jest",
39
42
  "test:watch": "jest --watch",
@@ -62,30 +65,35 @@
62
65
  "size-limit": [
63
66
  {
64
67
  "limit": "10kb",
65
- "path": "dist/esm/index.js"
68
+ "path": "dist/esm/index.mjs"
66
69
  }
67
70
  ],
68
71
  "devDependencies": {
72
+ "@arethetypeswrong/cli": "^0.15.3",
69
73
  "@changesets/changelog-github": "^0.5.0",
70
74
  "@changesets/cli": "^2.18.1",
71
75
  "@github/prettier-config": "^0.0.6",
72
- "@size-limit/preset-small-lib": "^8.2.4",
73
- "@testing-library/react": "^14.0.0",
76
+ "@rollup/plugin-typescript": "^11.1.6",
77
+ "@rollup/wasm-node": "^4.19.1",
78
+ "@size-limit/preset-small-lib": "^11.1.4",
79
+ "@testing-library/react": "^16.0.0",
74
80
  "@testing-library/user-event": "^14.5.1",
75
81
  "@types/jest": "^29.5.11",
76
- "@types/node": "^20.10.5",
82
+ "@types/node": "^22.0.0",
77
83
  "@types/react": "^18.2.23",
78
- "esbuild": "^0.20.0",
84
+ "esbuild": "^0.23.0",
79
85
  "esbuild-jest": "^0.5.0",
80
86
  "eslint": "^8.50.0",
81
- "eslint-plugin-github": "^4.10.0",
87
+ "eslint-plugin-github": "^5.0.0",
82
88
  "eslint-plugin-prettier": "^5.0.0",
83
89
  "jest": "^29.7.0",
84
90
  "jest-environment-jsdom": "^29.7.0",
85
91
  "prettier": "^3.0.3",
86
92
  "react": "^18.2.0",
87
93
  "react-dom": "^18.2.0",
88
- "size-limit": "^8.2.4",
94
+ "rimraf": "^6.0.1",
95
+ "rollup": "^4.18.0",
96
+ "size-limit": "^11.1.4",
89
97
  "typescript": "^5.2.2"
90
98
  }
91
99
  }
package/dist/esm/index.js DELETED
@@ -1,5 +0,0 @@
1
- export * from './anchored-position.js';
2
- export * from './focus-trap.js';
3
- export * from './focus-zone.js';
4
- export * from './scroll-into-view.js';
5
- export * from './dimensions.js';
@@ -1,3 +0,0 @@
1
- export * from './iterate-focusable-elements.js';
2
- export * from './unique-id.js';
3
- export * from './user-agent.js';