@nvidia-elements/core 2.20.2 → 2.20.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/accordion/accordion2.js +4 -4
- package/dist/alert/alert-group2.js +1 -1
- package/dist/alert/alert2.js +1 -1
- package/dist/avatar/avatar-group2.js +1 -1
- package/dist/avatar/avatar2.js +1 -1
- package/dist/badge/badge2.js +1 -1
- package/dist/breadcrumb/breadcrumb2.js +1 -1
- package/dist/bundles/index.js +7 -7
- package/dist/button/button2.js +1 -1
- package/dist/button-group/button-group2.js +1 -1
- package/dist/card/card2.js +4 -4
- package/dist/chat-message/chat-message2.js +1 -1
- package/dist/checkbox/checkbox-group2.js +1 -1
- package/dist/checkbox/checkbox2.js +1 -1
- package/dist/color/color2.js +1 -1
- package/dist/combobox/combobox2.js +1 -1
- package/dist/copy-button/copy-button2.js +1 -1
- package/dist/date/date2.js +1 -1
- package/dist/datetime/datetime2.js +1 -1
- package/dist/dialog/dialog-footer2.js +1 -1
- package/dist/dialog/dialog-header2.js +1 -1
- package/dist/dialog/dialog2.js +1 -1
- package/dist/divider/divider2.js +1 -1
- package/dist/dot/dot2.js +1 -1
- package/dist/drag-handle/drag-handle2.js +1 -1
- package/dist/drawer/drawer-content2.js +1 -1
- package/dist/drawer/drawer-footer2.js +1 -1
- package/dist/drawer/drawer-header2.js +1 -1
- package/dist/drawer/drawer2.js +1 -1
- package/dist/dropdown/dropdown-footer2.js +1 -1
- package/dist/dropdown/dropdown-header2.js +1 -1
- package/dist/dropdown/dropdown2.js +1 -1
- package/dist/dropdown-group/dropdown-group.js +1 -1
- package/dist/dropzone/dropzone2.js +1 -1
- package/dist/file/file2.js +1 -1
- package/dist/format-bytes/format-bytes2.js +1 -1
- package/dist/format-datetime/format-datetime2.js +1 -1
- package/dist/format-number/format-number2.js +1 -1
- package/dist/format-relative-time/format-relative-time2.js +1 -1
- package/dist/format-truncate/format-truncate2.js +1 -1
- package/dist/forms/control/control2.js +1 -1
- package/dist/forms/control-group/control-group2.js +1 -1
- package/dist/forms/control-message/control-message2.js +1 -1
- package/dist/gauge/gauge2.js +1 -1
- package/dist/grid/cell/cell2.js +1 -1
- package/dist/grid/column/column2.js +1 -1
- package/dist/grid/footer/footer2.js +1 -1
- package/dist/grid/grid2.js +1 -1
- package/dist/grid/header/header2.js +1 -1
- package/dist/grid/placeholder/placeholder2.js +1 -1
- package/dist/grid/row/row2.js +1 -1
- package/dist/icon/icon2.js +2 -2
- package/dist/icon-button/icon-button2.js +1 -1
- package/dist/iframe/iframe2.js +1 -1
- package/dist/index.js +1 -1
- package/dist/input/input-group2.js +1 -1
- package/dist/input/input2.js +1 -1
- package/dist/internal/controllers/keynav-list.controller.js +1 -1
- package/dist/internal/controllers/keynav-list.controller.js.map +1 -1
- package/dist/joystick/joystick2.js +1 -1
- package/dist/logo/logo2.js +1 -1
- package/dist/menu/menu-group2.js +1 -1
- package/dist/menu/menu-item2.js +1 -1
- package/dist/menu/menu2.js +17 -12
- package/dist/menu/menu2.js.map +1 -1
- package/dist/month/month2.js +1 -1
- package/dist/notification/notification-group2.js +1 -1
- package/dist/notification/notification2.js +1 -1
- package/dist/page/page-panel/page-panel-content2.js +1 -1
- package/dist/page/page-panel/page-panel-footer2.js +1 -1
- package/dist/page/page-panel/page-panel-header2.js +1 -1
- package/dist/page/page-panel/page-panel2.js +1 -1
- package/dist/page/page2.js +1 -1
- package/dist/page-header/page-header2.js +1 -1
- package/dist/page-loader/page-loader2.js +1 -1
- package/dist/pagination/pagination2.js +1 -1
- package/dist/panel/panel2.js +4 -4
- package/dist/password/password2.js +1 -1
- package/dist/preferences-input/preferences-input2.js +1 -1
- package/dist/progress-bar/progress-bar2.js +1 -1
- package/dist/progress-dot/progress-dot2.js +1 -1
- package/dist/progress-ring/progress-ring2.js +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip2.js +1 -1
- package/dist/pulse/pulse2.js +1 -1
- package/dist/radio/radio-group2.js +1 -1
- package/dist/radio/radio2.js +1 -1
- package/dist/range/range2.js +1 -1
- package/dist/resize-handle/resize-handle2.js +1 -1
- package/dist/search/search2.js +1 -1
- package/dist/select/select2.js +1 -1
- package/dist/skeleton/skeleton2.js +1 -1
- package/dist/sort-button/sort-button2.js +1 -1
- package/dist/sparkline/sparkline2.js +1 -1
- package/dist/star-rating/star-rating2.js +1 -1
- package/dist/steps/steps2.js +2 -2
- package/dist/switch/switch-group2.js +1 -1
- package/dist/switch/switch2.js +1 -1
- package/dist/tabs/tabs-group2.js +1 -1
- package/dist/tabs/tabs-item-group2.js +1 -1
- package/dist/tabs/tabs2.js +2 -2
- package/dist/tag/tag2.js +1 -1
- package/dist/textarea/textarea2.js +1 -1
- package/dist/time/time2.js +1 -1
- package/dist/toast/toast2.js +1 -1
- package/dist/toggletip/toggletip-footer2.js +1 -1
- package/dist/toggletip/toggletip-header2.js +1 -1
- package/dist/toggletip/toggletip2.js +1 -1
- package/dist/toolbar/toolbar2.js +1 -1
- package/dist/tooltip/tooltip2.js +1 -1
- package/dist/tree/tree-node2.js +1 -1
- package/dist/tree/tree2.js +1 -1
- package/dist/week/week2.js +1 -1
- package/package.json +1 -1
package/dist/button/button2.js
CHANGED
package/dist/card/card2.js
CHANGED
|
@@ -16,7 +16,7 @@ var d = class extends c {
|
|
|
16
16
|
static {
|
|
17
17
|
this.metadata = {
|
|
18
18
|
tag: "nve-card",
|
|
19
|
-
version: "2.20.
|
|
19
|
+
version: "2.20.3"
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
render() {
|
|
@@ -37,7 +37,7 @@ var f = class extends c {
|
|
|
37
37
|
static {
|
|
38
38
|
this.metadata = {
|
|
39
39
|
tag: "nve-card-header",
|
|
40
|
-
version: "2.20.
|
|
40
|
+
version: "2.20.3",
|
|
41
41
|
parents: ["nve-card"]
|
|
42
42
|
};
|
|
43
43
|
}
|
|
@@ -53,7 +53,7 @@ var p = class extends c {
|
|
|
53
53
|
static {
|
|
54
54
|
this.metadata = {
|
|
55
55
|
tag: "nve-card-content",
|
|
56
|
-
version: "2.20.
|
|
56
|
+
version: "2.20.3",
|
|
57
57
|
parents: ["nve-card"]
|
|
58
58
|
};
|
|
59
59
|
}
|
|
@@ -70,7 +70,7 @@ var p = class extends c {
|
|
|
70
70
|
static {
|
|
71
71
|
this.metadata = {
|
|
72
72
|
tag: "nve-card-footer",
|
|
73
|
-
version: "2.20.
|
|
73
|
+
version: "2.20.3",
|
|
74
74
|
parents: ["nve-card"]
|
|
75
75
|
};
|
|
76
76
|
}
|
package/dist/color/color2.js
CHANGED
package/dist/date/date2.js
CHANGED
package/dist/dialog/dialog2.js
CHANGED
package/dist/divider/divider2.js
CHANGED
package/dist/dot/dot2.js
CHANGED
package/dist/drawer/drawer2.js
CHANGED
package/dist/file/file2.js
CHANGED
package/dist/gauge/gauge2.js
CHANGED
package/dist/grid/cell/cell2.js
CHANGED
package/dist/grid/grid2.js
CHANGED
package/dist/grid/row/row2.js
CHANGED
package/dist/icon/icon2.js
CHANGED
|
@@ -16,7 +16,7 @@ var f = class n extends o {
|
|
|
16
16
|
static {
|
|
17
17
|
this.metadata = {
|
|
18
18
|
tag: "nve-icon",
|
|
19
|
-
version: "2.20.
|
|
19
|
+
version: "2.20.3"
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
static {
|
|
@@ -103,7 +103,7 @@ a([l({
|
|
|
103
103
|
})], f.prototype, "name", void 0), a([d()], f.prototype, "svg", void 0);
|
|
104
104
|
function p(e) {
|
|
105
105
|
if (typeof globalThis.customElements?.get == "function") {
|
|
106
|
-
let t = n(e.metadata.version), i = n("2.20.
|
|
106
|
+
let t = n(e.metadata.version), i = n("2.20.3");
|
|
107
107
|
t.minor <= i.minor && t.major <= i.major && (e._icons = {
|
|
108
108
|
...e._icons,
|
|
109
109
|
...r
|
package/dist/iframe/iframe2.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import { getThemeTokens as e } from "./internal/utils/dom.js";
|
|
|
2
2
|
import { statusIcons as t } from "./internal/types/index.js";
|
|
3
3
|
import { internal_exports as n } from "./internal/index.js";
|
|
4
4
|
// src/index.ts
|
|
5
|
-
var r = "2.20.
|
|
5
|
+
var r = "2.20.3", i = "@nvidia-elements", a = n.I18nService;
|
|
6
6
|
export { a as I18nService, i as SCOPE, r as VERSION, e as getThemeTokens, t as statusIcons };
|
|
7
7
|
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/dist/input/input2.js
CHANGED
|
@@ -31,7 +31,7 @@ var s = class {
|
|
|
31
31
|
refreshItems(e) {
|
|
32
32
|
let { manageFocus: t, manageTabindex: n, items: r, initialItem: i } = this.#e;
|
|
33
33
|
if (!t || !n || this.#t) return;
|
|
34
|
-
let a = r.find((t) => e.includes(t) && t.tabIndex === 0) ?? (i && r.includes(i) ? i : r[0]);
|
|
34
|
+
let a = r.find((e) => e.matches(":focus-within")) ?? r.find((t) => e.includes(t) && t.tabIndex === 0) ?? (i && r.includes(i) ? i : r[0]);
|
|
35
35
|
Array.from(this.host.keynavListConfig.items).forEach((e) => {
|
|
36
36
|
e.tabIndex = e === a ? 0 : -1;
|
|
37
37
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keynav-list.controller.js","names":["keyNavigationList","target","KeyNavigationListController","instance","#config","i","host","#keynavDisabled","#initializeTabIndex","#onPointerUp","#onKeyDown","manageFocus","manageTabindex","activeItem","items","previousItems","item","initialItem","initializeKeyListItems","setActiveKeyListItem","#getPointerActiveItem","#setActiveItem","validKeyNavigationCode","#getKeyboardActiveItem","getNextKeyListItem","next","previous","path","itemIndex","descendant","isFocusable","focusElement","e","detail","#clickItem","#focusItem","resolveArrowDirection","config","start","dir","KeynavCode","end","layout","code","resolveSpecialKey","navigateWithLoop","options","current","step","limit","loop","itemCount"],"sources":["../../../src/internal/controllers/keynav-list.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { focusElement, initializeKeyListItems, isFocusable, setActiveKeyListItem } from '../utils/focus.js';\nimport { KeynavCode, validKeyNavigationCode } from '../utils/dom.js';\n\nexport interface KeynavListConfig {\n items: NodeListOf<HTMLElement> | HTMLElement[];\n initialItem?: HTMLElement;\n layout?: 'both' | 'horizontal' | 'vertical';\n manageFocus?: boolean;\n manageTabindex?: boolean;\n loop?: boolean;\n dir?: string | null;\n}\n\nexport interface KeynavListElement {\n keynavListConfig: KeynavListConfig;\n}\n\n/** https://webaim.org/techniques/keyboard/ */\nexport function keyNavigationList<T extends ReactiveElement & KeynavListElement>(): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!((instance: T) => new KeyNavigationListController(instance));\n}\n\nexport class KeyNavigationListController<T extends ReactiveElement & KeynavListElement> implements ReactiveController {\n get #config(): KeynavListConfig & { items: HTMLElement[] } {\n return {\n layout: 'horizontal',\n manageFocus: true,\n manageTabindex: true,\n loop: false,\n dir: this.host.getAttribute('rtl'),\n ...this.host.keynavListConfig,\n items: Array.from(this.host.keynavListConfig.items).filter(\n (i: HTMLElement & { disabled?: boolean }) => !i.disabled\n )\n };\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n /** @private attr nve-keynav-disabled is an internal API for advanced use cases only */\n get #keynavDisabled() {\n return this.host.hasAttribute('nve-keynav-disabled');\n }\n\n async hostConnected() {\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n this.#initializeTabIndex();\n this.host.addEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('keydown', this.#onKeyDown);\n }\n\n hostDisconnected() {\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.removeEventListener('keydown', this.#onKeyDown);\n }\n\n /** Updates the focus order after configured items change without moving focus. */\n refreshItems(previousItems: readonly HTMLElement[]) {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (!manageFocus || !manageTabindex || this.#keynavDisabled) return;\n\n const activeItem =\n items.find(item => previousItems.includes(item) && item.tabIndex === 0) ??\n (initialItem && items.includes(initialItem) ? initialItem : items[0]);\n Array.from(this.host.keynavListConfig.items).forEach(item => {\n item.tabIndex = item === activeItem ? 0 : -1;\n });\n }\n\n #initializeTabIndex() {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (manageFocus && manageTabindex && !this.#keynavDisabled) {\n initializeKeyListItems(items);\n if (initialItem && items.includes(initialItem)) {\n setActiveKeyListItem(items, initialItem);\n }\n }\n }\n\n #clickItem(e: PointerEvent) {\n const item = this.#getPointerActiveItem(e, this.#config.items);\n if (item) {\n this.#setActiveItem(e, item);\n }\n }\n\n #focusItem(e: KeyboardEvent) {\n if (validKeyNavigationCode(e) && !this.#keynavDisabled) {\n const { loop, layout, dir, items } = this.#config;\n const activeItem = this.#getKeyboardActiveItem(e, items);\n if (activeItem) {\n const { next, previous } = getNextKeyListItem(activeItem, Array.from(items), {\n loop,\n layout,\n dir,\n code: e.code\n });\n\n if (next !== previous) {\n this.#setActiveItem(e, items[next]!, items[previous]);\n }\n }\n }\n }\n\n #getKeyboardActiveItem(e: KeyboardEvent, items: HTMLElement[]) {\n const target = e.composedPath()[0];\n return target instanceof HTMLElement && items.includes(target) ? target : null;\n }\n\n #getPointerActiveItem(e: PointerEvent, items: HTMLElement[]) {\n const path = e.composedPath();\n const itemIndex = path.findIndex(item => item instanceof HTMLElement && items.includes(item));\n const item = path[itemIndex];\n\n if (!(item instanceof HTMLElement)) return null;\n\n const hasFocusableDescendant = path\n .slice(0, itemIndex)\n .some(descendant => descendant instanceof Element && isFocusable(descendant));\n return hasFocusableDescendant ? null : item;\n }\n\n #setActiveItem(e: KeyboardEvent | PointerEvent, activeItem: HTMLElement, previousItem?: HTMLElement) {\n const { manageFocus, manageTabindex, items } = this.#config;\n if (manageFocus) {\n if (manageTabindex) {\n setActiveKeyListItem(items, activeItem);\n }\n\n focusElement(activeItem);\n e.preventDefault();\n }\n\n const detail = {\n activeItem,\n previousItem,\n code: e instanceof KeyboardEvent ? e.code : null,\n metaKey: e.ctrlKey || e.metaKey,\n items\n };\n activeItem.dispatchEvent(new CustomEvent('nve-key-change', { bubbles: true, composed: true, detail }));\n }\n\n #onPointerUp = (e: PointerEvent) => this.#clickItem(e);\n\n #onKeyDown = (e: KeyboardEvent) => this.#focusItem(e);\n}\n\ninterface KeyListConfig {\n code: KeynavCode;\n loop?: boolean;\n layout?: 'horizontal' | 'vertical' | 'both';\n dir: string | null | undefined;\n}\n\nfunction resolveArrowDirection(config: KeyListConfig): 'backward' | 'forward' | null {\n const { code, layout, dir } = config;\n const start = dir === 'rtl' ? KeynavCode.ArrowRight : KeynavCode.ArrowLeft;\n const end = dir === 'rtl' ? KeynavCode.ArrowLeft : KeynavCode.ArrowRight;\n\n if (layout !== 'horizontal') {\n if (code === KeynavCode.ArrowUp) return 'backward';\n if (code === KeynavCode.ArrowDown) return 'forward';\n }\n\n if (layout !== 'vertical') {\n if (code === start) return 'backward';\n if (code === end) return 'forward';\n }\n\n return null;\n}\n\nfunction resolveSpecialKey(code: KeynavCode): 'home' | 'end' | 'pageup' | 'pagedown' | null {\n if (code === KeynavCode.End) return 'end';\n if (code === KeynavCode.Home) return 'home';\n if (code === KeynavCode.PageUp) return 'pageup';\n if (code === KeynavCode.PageDown) return 'pagedown';\n return null;\n}\n\nfunction navigateWithLoop(current: number, step: number, options: { limit: number; loop: boolean | undefined }) {\n const { limit, loop } = options;\n const next = current + step;\n if (next >= 0 && next <= limit) return next;\n return loop ? (step < 0 ? limit : 0) : current;\n}\n\nexport function getNextKeyListItem(item: HTMLElement, items: HTMLElement[], config: KeyListConfig) {\n let next = items.indexOf(item);\n const previous = next;\n const itemCount = items.length - 1;\n const direction = resolveArrowDirection(config);\n\n switch (direction ?? resolveSpecialKey(config.code)) {\n case 'backward':\n next = navigateWithLoop(next, -1, { limit: itemCount, loop: config.loop });\n break;\n case 'forward':\n next = navigateWithLoop(next, 1, { limit: itemCount, loop: config.loop });\n break;\n case 'end':\n next = itemCount;\n break;\n case 'home':\n next = 0;\n break;\n case 'pageup':\n next = Math.max(0, next - 4);\n break;\n case 'pagedown':\n next = Math.min(itemCount, next + 4);\n break;\n case null:\n break;\n }\n\n return { next, previous };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"keynav-list.controller.js","names":["keyNavigationList","target","KeyNavigationListController","instance","#config","i","host","#keynavDisabled","#initializeTabIndex","#onPointerUp","#onKeyDown","manageFocus","manageTabindex","activeItem","items","item","previousItems","initialItem","initializeKeyListItems","setActiveKeyListItem","#getPointerActiveItem","#setActiveItem","validKeyNavigationCode","#getKeyboardActiveItem","getNextKeyListItem","next","previous","path","itemIndex","descendant","isFocusable","focusElement","e","detail","#clickItem","#focusItem","resolveArrowDirection","config","start","dir","KeynavCode","end","layout","code","resolveSpecialKey","navigateWithLoop","options","current","step","limit","loop","itemCount"],"sources":["../../../src/internal/controllers/keynav-list.controller.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ReactiveController, ReactiveElement } from 'lit';\nimport type { LegacyDecoratorTarget } from '../types/index.js';\nimport { focusElement, initializeKeyListItems, isFocusable, setActiveKeyListItem } from '../utils/focus.js';\nimport { KeynavCode, validKeyNavigationCode } from '../utils/dom.js';\n\nexport interface KeynavListConfig {\n items: NodeListOf<HTMLElement> | HTMLElement[];\n initialItem?: HTMLElement;\n layout?: 'both' | 'horizontal' | 'vertical';\n manageFocus?: boolean;\n manageTabindex?: boolean;\n loop?: boolean;\n dir?: string | null;\n}\n\nexport interface KeynavListElement {\n keynavListConfig: KeynavListConfig;\n}\n\n/** https://webaim.org/techniques/keyboard/ */\nexport function keyNavigationList<T extends ReactiveElement & KeynavListElement>(): ClassDecorator {\n return (target: LegacyDecoratorTarget) =>\n target.addInitializer!((instance: T) => new KeyNavigationListController(instance));\n}\n\nexport class KeyNavigationListController<T extends ReactiveElement & KeynavListElement> implements ReactiveController {\n get #config(): KeynavListConfig & { items: HTMLElement[] } {\n return {\n layout: 'horizontal',\n manageFocus: true,\n manageTabindex: true,\n loop: false,\n dir: this.host.getAttribute('rtl'),\n ...this.host.keynavListConfig,\n items: Array.from(this.host.keynavListConfig.items).filter(\n (i: HTMLElement & { disabled?: boolean }) => !i.disabled\n )\n };\n }\n\n constructor(private host: T) {\n this.host.addController(this);\n }\n\n /** @private attr nve-keynav-disabled is an internal API for advanced use cases only */\n get #keynavDisabled() {\n return this.host.hasAttribute('nve-keynav-disabled');\n }\n\n async hostConnected() {\n await this.host.updateComplete;\n if (!this.host.isConnected) return;\n this.#initializeTabIndex();\n this.host.addEventListener('pointerup', this.#onPointerUp);\n this.host.addEventListener('keydown', this.#onKeyDown);\n }\n\n hostDisconnected() {\n this.host.removeEventListener('pointerup', this.#onPointerUp);\n this.host.removeEventListener('keydown', this.#onKeyDown);\n }\n\n /** Updates the focus order after configured items change without moving focus. */\n refreshItems(previousItems: readonly HTMLElement[]) {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (!manageFocus || !manageTabindex || this.#keynavDisabled) return;\n\n const activeItem =\n items.find(item => item.matches(':focus-within')) ??\n items.find(item => previousItems.includes(item) && item.tabIndex === 0) ??\n (initialItem && items.includes(initialItem) ? initialItem : items[0]);\n Array.from(this.host.keynavListConfig.items).forEach(item => {\n item.tabIndex = item === activeItem ? 0 : -1;\n });\n }\n\n #initializeTabIndex() {\n const { manageFocus, manageTabindex, items, initialItem } = this.#config;\n if (manageFocus && manageTabindex && !this.#keynavDisabled) {\n initializeKeyListItems(items);\n if (initialItem && items.includes(initialItem)) {\n setActiveKeyListItem(items, initialItem);\n }\n }\n }\n\n #clickItem(e: PointerEvent) {\n const item = this.#getPointerActiveItem(e, this.#config.items);\n if (item) {\n this.#setActiveItem(e, item);\n }\n }\n\n #focusItem(e: KeyboardEvent) {\n if (validKeyNavigationCode(e) && !this.#keynavDisabled) {\n const { loop, layout, dir, items } = this.#config;\n const activeItem = this.#getKeyboardActiveItem(e, items);\n if (activeItem) {\n const { next, previous } = getNextKeyListItem(activeItem, Array.from(items), {\n loop,\n layout,\n dir,\n code: e.code\n });\n\n if (next !== previous) {\n this.#setActiveItem(e, items[next]!, items[previous]);\n }\n }\n }\n }\n\n #getKeyboardActiveItem(e: KeyboardEvent, items: HTMLElement[]) {\n const target = e.composedPath()[0];\n return target instanceof HTMLElement && items.includes(target) ? target : null;\n }\n\n #getPointerActiveItem(e: PointerEvent, items: HTMLElement[]) {\n const path = e.composedPath();\n const itemIndex = path.findIndex(item => item instanceof HTMLElement && items.includes(item));\n const item = path[itemIndex];\n\n if (!(item instanceof HTMLElement)) return null;\n\n const hasFocusableDescendant = path\n .slice(0, itemIndex)\n .some(descendant => descendant instanceof Element && isFocusable(descendant));\n return hasFocusableDescendant ? null : item;\n }\n\n #setActiveItem(e: KeyboardEvent | PointerEvent, activeItem: HTMLElement, previousItem?: HTMLElement) {\n const { manageFocus, manageTabindex, items } = this.#config;\n if (manageFocus) {\n if (manageTabindex) {\n setActiveKeyListItem(items, activeItem);\n }\n\n focusElement(activeItem);\n e.preventDefault();\n }\n\n const detail = {\n activeItem,\n previousItem,\n code: e instanceof KeyboardEvent ? e.code : null,\n metaKey: e.ctrlKey || e.metaKey,\n items\n };\n activeItem.dispatchEvent(new CustomEvent('nve-key-change', { bubbles: true, composed: true, detail }));\n }\n\n #onPointerUp = (e: PointerEvent) => this.#clickItem(e);\n\n #onKeyDown = (e: KeyboardEvent) => this.#focusItem(e);\n}\n\ninterface KeyListConfig {\n code: KeynavCode;\n loop?: boolean;\n layout?: 'horizontal' | 'vertical' | 'both';\n dir: string | null | undefined;\n}\n\nfunction resolveArrowDirection(config: KeyListConfig): 'backward' | 'forward' | null {\n const { code, layout, dir } = config;\n const start = dir === 'rtl' ? KeynavCode.ArrowRight : KeynavCode.ArrowLeft;\n const end = dir === 'rtl' ? KeynavCode.ArrowLeft : KeynavCode.ArrowRight;\n\n if (layout !== 'horizontal') {\n if (code === KeynavCode.ArrowUp) return 'backward';\n if (code === KeynavCode.ArrowDown) return 'forward';\n }\n\n if (layout !== 'vertical') {\n if (code === start) return 'backward';\n if (code === end) return 'forward';\n }\n\n return null;\n}\n\nfunction resolveSpecialKey(code: KeynavCode): 'home' | 'end' | 'pageup' | 'pagedown' | null {\n if (code === KeynavCode.End) return 'end';\n if (code === KeynavCode.Home) return 'home';\n if (code === KeynavCode.PageUp) return 'pageup';\n if (code === KeynavCode.PageDown) return 'pagedown';\n return null;\n}\n\nfunction navigateWithLoop(current: number, step: number, options: { limit: number; loop: boolean | undefined }) {\n const { limit, loop } = options;\n const next = current + step;\n if (next >= 0 && next <= limit) return next;\n return loop ? (step < 0 ? limit : 0) : current;\n}\n\nexport function getNextKeyListItem(item: HTMLElement, items: HTMLElement[], config: KeyListConfig) {\n let next = items.indexOf(item);\n const previous = next;\n const itemCount = items.length - 1;\n const direction = resolveArrowDirection(config);\n\n switch (direction ?? resolveSpecialKey(config.code)) {\n case 'backward':\n next = navigateWithLoop(next, -1, { limit: itemCount, loop: config.loop });\n break;\n case 'forward':\n next = navigateWithLoop(next, 1, { limit: itemCount, loop: config.loop });\n break;\n case 'end':\n next = itemCount;\n break;\n case 'home':\n next = 0;\n break;\n case 'pageup':\n next = Math.max(0, next - 4);\n break;\n case 'pagedown':\n next = Math.min(itemCount, next + 4);\n break;\n case null:\n break;\n }\n\n return { next, previous };\n}\n"],"mappings":"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"}
|
package/dist/logo/logo2.js
CHANGED