@nvidia-elements/core 0.0.7 → 0.0.8
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 +18 -16
- package/README.md +1 -1
- package/dist/accordion/accordion-group.js.map +1 -1
- package/dist/accordion/accordion.js.map +1 -1
- package/dist/accordion/accordion2.js +4 -4
- package/dist/alert/alert-group.js.map +1 -1
- package/dist/alert/alert-group2.js +1 -1
- package/dist/alert/alert-group2.js.map +1 -1
- package/dist/alert/alert.global.js.map +1 -1
- package/dist/alert/alert.js.map +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/badge.js.map +1 -1
- package/dist/badge/badge2.js +2 -2
- package/dist/badge/badge2.js.map +1 -1
- package/dist/breadcrumb/breadcrumb.js.map +1 -1
- package/dist/breadcrumb/breadcrumb2.js +2 -2
- package/dist/breadcrumb/breadcrumb2.js.map +1 -1
- package/dist/bundles/index.js +3 -3
- package/dist/button/button.js.map +1 -1
- package/dist/button/button2.js +1 -1
- package/dist/button-group/button-group.global.js.map +1 -1
- package/dist/button-group/button-group.js +1 -1
- package/dist/button-group/button-group.js.map +1 -1
- package/dist/button-group/button-group2.js +3 -3
- package/dist/button-group/button-group2.js.map +1 -1
- package/dist/card/card-header.js.map +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/checkbox.js.map +1 -1
- package/dist/checkbox/checkbox2.js +1 -1
- package/dist/color/color.global.js.map +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/custom-elements.json +1 -23
- package/dist/data.snippets.json +42 -42
- 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/dot.js.map +1 -1
- package/dist/dot/dot2.js +1 -1
- package/dist/drawer/drawer-content.js.map +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/dropdown.js.map +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/dropzone/dropzone2.js.map +1 -1
- package/dist/file/file.global.js.map +1 -1
- package/dist/file/file2.js +1 -1
- package/dist/format-datetime/format-datetime2.js +1 -1
- package/dist/format-relative-time/format-relative-time2.js +1 -1
- package/dist/forms/control/control.js.map +1 -1
- package/dist/forms/control/control2.js +2 -2
- package/dist/forms/control/control2.js.map +1 -1
- package/dist/forms/control-group/control-group.js.map +1 -1
- package/dist/forms/control-group/control-group2.js +23 -24
- package/dist/forms/control-group/control-group2.js.map +1 -1
- package/dist/forms/control-message/control-message2.js +1 -1
- package/dist/forms/utils/states.d.ts +1 -1
- package/dist/forms/utils/states.js +25 -25
- package/dist/forms/utils/states.js.map +1 -1
- package/dist/grid/cell/cell2.js +1 -1
- package/dist/grid/column/column.js.map +1 -1
- package/dist/grid/column/column2.js +23 -23
- package/dist/grid/column/column2.js.map +1 -1
- package/dist/grid/define.js.map +1 -1
- package/dist/grid/footer/footer.js.map +1 -1
- package/dist/grid/footer/footer2.js +1 -1
- package/dist/grid/grid.global.js.map +1 -1
- package/dist/grid/grid.js.map +1 -1
- package/dist/grid/grid2.js +31 -31
- package/dist/grid/grid2.js.map +1 -1
- package/dist/grid/header/header2.js +24 -25
- package/dist/grid/header/header2.js.map +1 -1
- package/dist/grid/placeholder/placeholder2.js +1 -1
- package/dist/grid/row/row.js.map +1 -1
- package/dist/grid/row/row2.js +1 -1
- package/dist/icon/define.js.map +1 -1
- package/dist/icon/icon.js.map +1 -1
- package/dist/icon/icon2.js +2 -2
- package/dist/icon-button/icon-button.js.map +1 -1
- package/dist/icon-button/icon-button2.js +1 -1
- package/dist/index.js +1 -1
- package/dist/input/input-group.global.js.map +1 -1
- package/dist/input/input-group.js.map +1 -1
- package/dist/input/input-group2.js +1 -1
- package/dist/input/input.js.map +1 -1
- package/dist/input/input2.js +1 -1
- package/dist/internal/index.js +40 -40
- package/dist/internal/services/global.service.js +1 -1
- package/dist/internal/utils/dom.d.ts +0 -2
- package/dist/internal/utils/dom.js +12 -15
- package/dist/internal/utils/dom.js.map +1 -1
- package/dist/logo/logo.js.map +1 -1
- package/dist/logo/logo2.js +1 -1
- package/dist/menu/menu-item.js.map +1 -1
- package/dist/menu/menu-item2.js +1 -1
- package/dist/menu/menu.global.js.map +1 -1
- package/dist/menu/menu2.js +1 -1
- 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/notification.js.map +1 -1
- package/dist/notification/notification2.js +1 -1
- package/dist/page/page-panel/page-panel-content.js.map +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/panel-content.js.map +1 -1
- package/dist/panel/panel-footer.js.map +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-ring/progress-ring.js.map +1 -1
- package/dist/progress-ring/progress-ring2.js +1 -1
- package/dist/progress-ring/progress-ring2.js.map +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip.global.js.map +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip.js.map +1 -1
- package/dist/progressive-filter-chip/progressive-filter-chip2.js +2 -2
- package/dist/progressive-filter-chip/progressive-filter-chip2.js.map +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/range.global.js.map +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/steps.js.map +1 -1
- package/dist/steps/steps2.js +4 -4
- package/dist/steps/steps2.js.map +1 -1
- 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.js.map +1 -1
- package/dist/tabs/tabs.global.js.map +1 -1
- package/dist/tabs/tabs.js.map +1 -1
- package/dist/tabs/tabs2.js +3 -3
- package/dist/tabs/tabs2.js.map +1 -1
- package/dist/tag/tag.js.map +1 -1
- package/dist/tag/tag2.js +1 -1
- package/dist/textarea/textarea2.js +1 -1
- package/dist/time/time2.js +1 -1
- package/dist/toast/toast.js +1 -1
- package/dist/toast/toast.js.map +1 -1
- package/dist/toast/toast2.js +1 -1
- package/dist/toggletip/toggletip-footer2.js +1 -1
- package/dist/toggletip/toggletip-header.js.map +1 -1
- package/dist/toggletip/toggletip-header2.js +1 -1
- package/dist/toggletip/toggletip.js.map +1 -1
- package/dist/toggletip/toggletip2.js +1 -1
- package/dist/toolbar/toolbar.js.map +1 -1
- package/dist/toolbar/toolbar2.js +2 -2
- package/dist/toolbar/toolbar2.js.map +1 -1
- package/dist/tooltip/tooltip.js.map +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 +5 -5
package/dist/input/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","names":[],"sources":["../../src/input/input.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: 0 var(--nve-ref-size-200);\n --font-size: var(--nve-ref-font-size-100);\n --height: var(--nve-ref-size-800);\n --background: var(--nve-sys-interaction-field-background);\n --color: var(--nve-sys-interaction-field-color);\n --border-radius: var(--nve-ref-border-radius-sm);\n --border: var(--nve-ref-border-width-md) solid transparent;\n --border-bottom: var(--border);\n --cursor: text;\n --font-weight: normal;\n --_icon-height: var(--height);\n --_font-size: var(--font-size);\n --width: 100%;\n --max-width: 100%;\n --min-width: initial;\n width: var(--width);\n max-width: var(--max-width);\n min-width: var(--min-width);\n}\n\n:host([fit-text]) {\n --max-width: fit-content;\n}\n\n[input] {\n height: var(--height);\n background: var(--background);\n border: var(--border);\n border-bottom: var(--border-bottom);\n border-radius: var(--border-radius);\n color: var(--color);\n cursor: var(--cursor);\n width: var(--control-width);\n display: flex;\n align-content: stretch;\n}\n\n::slotted(input) {\n /* https://web.dev/accent-color/#guaranteeing-contrast */\n accent-color: var(--accent-color) !important;\n cursor: var(--cursor) !important;\n padding: var(--padding) !important;\n font-size: var(--font-size) !important;\n color: var(--color) !important;\n line-height: var(--height) !important;\n border: 0 !important;\n background: none !important;\n display: block !important;\n width: 100% !important;\n font-weight: var(--font-weight) !important;\n}\n\nnve-icon-button,\n::slotted(nve-icon-button)
|
|
1
|
+
{"version":3,"file":"input.js","names":[],"sources":["../../src/input/input.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: 0 var(--nve-ref-size-200);\n --font-size: var(--nve-ref-font-size-100);\n --height: var(--nve-ref-size-800);\n --background: var(--nve-sys-interaction-field-background);\n --color: var(--nve-sys-interaction-field-color);\n --border-radius: var(--nve-ref-border-radius-sm);\n --border: var(--nve-ref-border-width-md) solid transparent;\n --border-bottom: var(--border);\n --cursor: text;\n --font-weight: normal;\n --_icon-height: var(--height);\n --_font-size: var(--font-size);\n --width: 100%;\n --max-width: 100%;\n --min-width: initial;\n width: var(--width);\n max-width: var(--max-width);\n min-width: var(--min-width);\n}\n\n:host([fit-text]) {\n --max-width: fit-content;\n}\n\n[input] {\n height: var(--height);\n background: var(--background);\n border: var(--border);\n border-bottom: var(--border-bottom);\n border-radius: var(--border-radius);\n color: var(--color);\n cursor: var(--cursor);\n width: var(--control-width);\n display: flex;\n align-content: stretch;\n}\n\n::slotted(input) {\n /* https://web.dev/accent-color/#guaranteeing-contrast */\n accent-color: var(--accent-color) !important;\n cursor: var(--cursor) !important;\n padding: var(--padding) !important;\n font-size: var(--font-size) !important;\n color: var(--color) !important;\n line-height: var(--height) !important;\n border: 0 !important;\n background: none !important;\n display: block !important;\n width: 100% !important;\n font-weight: var(--font-weight) !important;\n}\n\nnve-icon-button,\n::slotted(nve-icon-button) {\n --height: var(--_icon-height);\n align-self: center;\n}\n\n::slotted(nve-button:not([slot])) {\n --font-size: var(--_font-size);\n --padding: 0 var(--nve-ref-size-200);\n --color: var(--label-color);\n --height: 100%;\n}\n\n:host([rounded]) {\n --border-radius: var(--nve-ref-border-radius-full);\n}\n\n:host([status='error']),\n:host(:state(invalid)),\n:host(:state(error)) {\n --border: var(--nve-ref-border-width-md) solid var(--nve-sys-support-danger-emphasis-color);\n}\n\n:host([status='success']),\n:host(:state(success)) {\n --border: var(--nve-ref-border-width-md) solid var(--nve-sys-support-success-emphasis-color);\n}\n\n:host(:state(disabled)) {\n --border: var(--nve-ref-border-width-md) solid transparent;\n}\n\n:host([container='flat']) {\n --border-radius: 0;\n --box-shadow: none;\n --border-bottom: var(--nve-ref-border-width-md) solid var(--nve-ref-border-color-muted);\n}\n\n:host([container='flat']) [input] {\n background: inherit;\n}\n\n:host([container='flat']:focus-within) {\n --border-bottom: var(--nve-ref-border-width-md) solid var(--nve-ref-border-color-emphasis);\n}\n\n:host([container='flat']:focus-within) [input] {\n outline: 0 !important;\n}\n"],"mappings":""}
|
package/dist/input/input2.js
CHANGED
package/dist/internal/index.js
CHANGED
|
@@ -2,43 +2,43 @@ import { DOCS_URL as e, formatFileSize as t, shiftLeft as n } from "./utils/stri
|
|
|
2
2
|
import { deepMerge as r, formatStandardNumber as i, getDifference as a, isObject as o, isObjectLiteral as s, parseVersion as c } from "./utils/objects.js";
|
|
3
3
|
import { GlobalState as l, GlobalStateService as u } from "./services/global.service.js";
|
|
4
4
|
import { focusElement as d, focusElementTimeout as f, getActiveElement as p, initializeKeyListItems as m, isFocusable as h, isSimpleFocusable as g, onListboxActivate as _, setActiveKeyListItem as v } from "./utils/focus.js";
|
|
5
|
-
import { KeynavCode as y, appendAnchorName as b, appendRootNodeStyle as x, applySlotContentStates as S, clickOutsideElementBounds as C, createGhostElement as w, define as T, defineElement as E, endOfScrollBox as D, generateId as O, getAnchorNames as k, getAttributeChanges as A, getAttributeListChanges as j, getChildren as M, getDisplayValue as N, getElementUpdate as P, getFlattenedDOMTree as F, getFlattenedFocusableItems as I, getPropertyChanges as L, getThemeTokens as R, hasHorizontalScrollBar as z, hasInvalidDOMGrid as B, hasScrollBar as V, isContextMenuClick as H, matchesElementName as U, openEyeDropper as W, parseTokenNumber as G, removeAnchorName as K, removeEmptySlotWhitespace as q, removeEmptyTextNode as J, sameOrderedStringArray as Y, sameRenderRoot as X, scrollBarWidth as Z, slotContainsOnlyWhitespace as Q, styleSheetToString as $, supportsScopedRegistry as ee,
|
|
6
|
-
import { associateAriaDescribedBy as
|
|
7
|
-
import { StateActiveController as
|
|
8
|
-
import { StateDisabledController as
|
|
9
|
-
import { StateExpandedController as
|
|
10
|
-
import { StatePressedController as
|
|
11
|
-
import { StateSelectedController as
|
|
12
|
-
import { TypeButtonController as
|
|
13
|
-
import { TypeAnchorController as
|
|
14
|
-
import { debounce as
|
|
15
|
-
import { createLightDismiss as
|
|
16
|
-
import { TypeSubmitController as
|
|
17
|
-
import { LogService as
|
|
18
|
-
import { TypeNativePopoverTriggerController as
|
|
19
|
-
import { StateCurrentController as
|
|
20
|
-
import { TypeCommandController as
|
|
21
|
-
import { TypeInterestController as
|
|
22
|
-
import { BaseButton as
|
|
23
|
-
import { auditParentElement as
|
|
24
|
-
import { AuditController as
|
|
25
|
-
import { I18nService as
|
|
26
|
-
import { I18nController as
|
|
27
|
-
import { KeyNavigationGridController as
|
|
28
|
-
import { KeyNavigationListController as
|
|
29
|
-
import { StateHighlightedController as
|
|
30
|
-
import { StateScrollController as
|
|
31
|
-
import { TypeClosableController as
|
|
32
|
-
import { TypeExpandableController as
|
|
33
|
-
import { TypeSelectableController as
|
|
34
|
-
import { TypeNativePopoverController as
|
|
35
|
-
import { TypeSSRController as
|
|
36
|
-
import { NveTouchEvent as
|
|
37
|
-
import { hostAttr as
|
|
38
|
-
import { scopedRegistry as
|
|
39
|
-
import { colorStateStyles as
|
|
40
|
-
import { supportsCSSLegacyInsetArea as
|
|
41
|
-
import { popoverStyles as
|
|
42
|
-
import { TransitionService as
|
|
43
|
-
import { statusIcons as
|
|
44
|
-
export {
|
|
5
|
+
import { KeynavCode as y, appendAnchorName as b, appendRootNodeStyle as x, applySlotContentStates as S, clickOutsideElementBounds as C, createGhostElement as w, define as T, defineElement as E, endOfScrollBox as D, generateId as O, getAnchorNames as k, getAttributeChanges as A, getAttributeListChanges as j, getChildren as M, getDisplayValue as N, getElementUpdate as P, getFlattenedDOMTree as F, getFlattenedFocusableItems as I, getPropertyChanges as L, getThemeTokens as R, hasHorizontalScrollBar as z, hasInvalidDOMGrid as B, hasScrollBar as V, isContextMenuClick as H, matchesElementName as U, openEyeDropper as W, parseTokenNumber as G, removeAnchorName as K, removeEmptySlotWhitespace as q, removeEmptyTextNode as J, sameOrderedStringArray as Y, sameRenderRoot as X, scrollBarWidth as Z, slotContainsOnlyWhitespace as Q, styleSheetToString as $, supportsScopedRegistry as ee, uniqueNonEmptyStrings as te, validKeyNavigationCode as ne } from "./utils/dom.js";
|
|
6
|
+
import { associateAriaDescribedBy as re, associateAriaLabel as ie, associateControlGroup as ae, associateDataList as oe, associateLabel as se, attachInternals as ce } from "./utils/a11y.js";
|
|
7
|
+
import { StateActiveController as le, stateActive as ue } from "./controllers/state-active.controller.js";
|
|
8
|
+
import { StateDisabledController as de, stateDisabled as fe } from "./controllers/state-disabled.controller.js";
|
|
9
|
+
import { StateExpandedController as pe, stateExpanded as me } from "./controllers/state-expanded.controller.js";
|
|
10
|
+
import { StatePressedController as he, statePressed as ge } from "./controllers/state-pressed.controller.js";
|
|
11
|
+
import { StateSelectedController as _e, stateSelected as ve } from "./controllers/state-selected.controller.js";
|
|
12
|
+
import { TypeButtonController as ye, typeButton as be } from "./controllers/type-button.controller.js";
|
|
13
|
+
import { TypeAnchorController as xe, typeAnchor as Se } from "./controllers/type-anchor.controller.js";
|
|
14
|
+
import { debounce as Ce, onChildListMutation as we, stopEvent as Te, throttle as Ee } from "./utils/events.js";
|
|
15
|
+
import { createLightDismiss as De, onKeys as Oe } from "./utils/keynav.js";
|
|
16
|
+
import { TypeSubmitController as ke, typeSubmit as Ae } from "./controllers/type-submit.controller.js";
|
|
17
|
+
import { LogService as je } from "./services/log.service.js";
|
|
18
|
+
import { TypeNativePopoverTriggerController as Me, typeNativePopoverTrigger as Ne } from "./controllers/type-native-popover-trigger.controller.js";
|
|
19
|
+
import { StateCurrentController as Pe, stateCurrent as Fe } from "./controllers/state-current.controller.js";
|
|
20
|
+
import { TypeCommandController as Ie, typeCommand as Le } from "./controllers/type-command.controller.js";
|
|
21
|
+
import { TypeInterestController as Re, typeInterest as ze } from "./controllers/type-interest.controller.js";
|
|
22
|
+
import { BaseButton as Be } from "./base/button.js";
|
|
23
|
+
import { auditParentElement as Ve, auditSlots as He } from "./utils/audit.js";
|
|
24
|
+
import { AuditController as Ue, audit as We, excessiveInstanceLimit as Ge } from "./controllers/audit.controller.js";
|
|
25
|
+
import { I18nService as Ke, I18nService_ as qe } from "./services/i18n.service.js";
|
|
26
|
+
import { I18nController as Je, i18n as Ye } from "./controllers/i18n.controller.js";
|
|
27
|
+
import { KeyNavigationGridController as Xe, getNextKeyGridItem as Ze, keyNavigationGrid as Qe } from "./controllers/keynav-grid.controller.js";
|
|
28
|
+
import { KeyNavigationListController as $e, getNextKeyListItem as et, keyNavigationList as tt } from "./controllers/keynav-list.controller.js";
|
|
29
|
+
import { StateHighlightedController as nt, stateHighlighted as rt } from "./controllers/state-highlighted.controller.js";
|
|
30
|
+
import { StateScrollController as it, stateScroll as at } from "./controllers/state-scroll.controller.js";
|
|
31
|
+
import { TypeClosableController as ot } from "./controllers/type-closable.controller.js";
|
|
32
|
+
import { TypeExpandableController as st } from "./controllers/type-expandable.controller.js";
|
|
33
|
+
import { TypeSelectableController as ct } from "./controllers/type-selectable.controller.js";
|
|
34
|
+
import { TypeNativePopoverController as lt } from "./controllers/type-native-popover.controller.js";
|
|
35
|
+
import { TypeSSRController as ut, typeSSR as dt } from "./controllers/type-ssr.controller.js";
|
|
36
|
+
import { NveTouchEvent as ft, TypeTouchController as pt, typeTouch as mt } from "./controllers/type-touch.controller.js";
|
|
37
|
+
import { hostAttr as ht } from "./decorators/host-attr.js";
|
|
38
|
+
import { scopedRegistry as gt } from "./decorators/scoped-registry.js";
|
|
39
|
+
import { colorStateStyles as _t, statusStateStyles as vt, supportStateStyles as yt, useStyles as bt } from "./styles/index.js";
|
|
40
|
+
import { supportsCSSLegacyInsetArea as xt, supportsCSSPositionArea as St, supportsNativeCSSAnchorPosition as Ct } from "./utils/supports.js";
|
|
41
|
+
import { popoverStyles as wt } from "./styles/popover2.js";
|
|
42
|
+
import { TransitionService as Tt } from "./services/transition.service.js";
|
|
43
|
+
import { statusIcons as Et } from "./types/index.js";
|
|
44
|
+
export { Ue as AuditController, Be as BaseButton, e as DOCS_URL, l as GlobalState, u as GlobalStateService, Je as I18nController, Ke as I18nService, qe as I18nService_, Xe as KeyNavigationGridController, $e as KeyNavigationListController, y as KeynavCode, je as LogService, ft as NveTouchEvent, le as StateActiveController, Pe as StateCurrentController, de as StateDisabledController, pe as StateExpandedController, nt as StateHighlightedController, he as StatePressedController, it as StateScrollController, _e as StateSelectedController, Tt as TransitionService, xe as TypeAnchorController, ye as TypeButtonController, ot as TypeClosableController, Ie as TypeCommandController, st as TypeExpandableController, Re as TypeInterestController, lt as TypeNativePopoverController, Me as TypeNativePopoverTriggerController, ut as TypeSSRController, ct as TypeSelectableController, ke as TypeSubmitController, pt as TypeTouchController, b as appendAnchorName, x as appendRootNodeStyle, S as applySlotContentStates, re as associateAriaDescribedBy, ie as associateAriaLabel, ae as associateControlGroup, oe as associateDataList, se as associateLabel, ce as attachInternals, We as audit, Ve as auditParentElement, He as auditSlots, C as clickOutsideElementBounds, _t as colorStateStyles, w as createGhostElement, De as createLightDismiss, Ce as debounce, r as deepMerge, T as define, E as defineElement, D as endOfScrollBox, Ge as excessiveInstanceLimit, d as focusElement, f as focusElementTimeout, t as formatFileSize, i as formatStandardNumber, O as generateId, p as getActiveElement, k as getAnchorNames, A as getAttributeChanges, j as getAttributeListChanges, M as getChildren, a as getDifference, N as getDisplayValue, P as getElementUpdate, F as getFlattenedDOMTree, I as getFlattenedFocusableItems, Ze as getNextKeyGridItem, et as getNextKeyListItem, L as getPropertyChanges, R as getThemeTokens, z as hasHorizontalScrollBar, B as hasInvalidDOMGrid, V as hasScrollBar, ht as hostAttr, Ye as i18n, m as initializeKeyListItems, H as isContextMenuClick, h as isFocusable, o as isObject, s as isObjectLiteral, g as isSimpleFocusable, Qe as keyNavigationGrid, tt as keyNavigationList, U as matchesElementName, we as onChildListMutation, Oe as onKeys, _ as onListboxActivate, W as openEyeDropper, G as parseTokenNumber, c as parseVersion, wt as popoverStyles, K as removeAnchorName, q as removeEmptySlotWhitespace, J as removeEmptyTextNode, Y as sameOrderedStringArray, X as sameRenderRoot, gt as scopedRegistry, Z as scrollBarWidth, v as setActiveKeyListItem, n as shiftLeft, Q as slotContainsOnlyWhitespace, ue as stateActive, Fe as stateCurrent, fe as stateDisabled, me as stateExpanded, rt as stateHighlighted, ge as statePressed, at as stateScroll, ve as stateSelected, Et as statusIcons, vt as statusStateStyles, Te as stopEvent, $ as styleSheetToString, yt as supportStateStyles, xt as supportsCSSLegacyInsetArea, St as supportsCSSPositionArea, Ct as supportsNativeCSSAnchorPosition, ee as supportsScopedRegistry, Ee as throttle, Se as typeAnchor, be as typeButton, Le as typeCommand, ze as typeInterest, Ne as typeNativePopoverTrigger, dt as typeSSR, Ae as typeSubmit, mt as typeTouch, te as uniqueNonEmptyStrings, bt as useStyles, ne as validKeyNavigationCode };
|
|
@@ -19,7 +19,7 @@ var a = class {
|
|
|
19
19
|
i18nRegistry: {},
|
|
20
20
|
audit: {}
|
|
21
21
|
}
|
|
22
|
-
}, globalThis.NVE_ELEMENTS.state.versions = Array.from(new Set([...globalThis.NVE_ELEMENTS.state.versions, "0.0.
|
|
22
|
+
}, globalThis.NVE_ELEMENTS.state.versions = Array.from(new Set([...globalThis.NVE_ELEMENTS.state.versions, "0.0.8"])), globalThis.NVE_ELEMENTS.state.scopedRegistry ??= {}, globalThis.NVE_ELEMENTS.state.scopedRegistry["0.0.8"] = i(), globalThis.NVE_ELEMENTS.state.versions.length > 1 && globalThis.NVE_ELEMENTS.state.env !== "production" && console.warn(e(), `\n\n${JSON.stringify(globalThis.NVE_ELEMENTS.state.versions, null, 2)}`);
|
|
23
23
|
}
|
|
24
24
|
get state() {
|
|
25
25
|
return globalThis.NVE_ELEMENTS.state;
|
|
@@ -64,8 +64,6 @@ export declare function getDisplayValue(option?: {
|
|
|
64
64
|
label?: string;
|
|
65
65
|
value?: string;
|
|
66
66
|
}): string;
|
|
67
|
-
/** returns a combination of nve and mlv for a prefixed tag selector */
|
|
68
|
-
export declare function tagSelector(selector: string): string;
|
|
69
67
|
/** determines if HTML element matches the given component tag */
|
|
70
68
|
export declare function matchesElementName(element: Partial<HTMLElement>, component: {
|
|
71
69
|
metadata: {
|
|
@@ -148,37 +148,34 @@ function j(e, t) {
|
|
|
148
148
|
function M(e) {
|
|
149
149
|
return e?.label || e?.value || "";
|
|
150
150
|
}
|
|
151
|
-
function N(e) {
|
|
152
|
-
return
|
|
151
|
+
function N(e, t) {
|
|
152
|
+
return e.localName === t.metadata.tag;
|
|
153
153
|
}
|
|
154
|
-
function P(e
|
|
155
|
-
return e.localName === t.metadata.tag.replace("nve-", "nve-") || e.localName === t.metadata.tag.replace("nve-", "nve-");
|
|
156
|
-
}
|
|
157
|
-
function F(e) {
|
|
154
|
+
function P(e) {
|
|
158
155
|
let t = globalThis.document.createElement("div"), { width: n } = e.getBoundingClientRect();
|
|
159
156
|
return t.setAttribute("nve-ghost", ""), t.style.minWidth = `${n}px`, t.style.maxWidth = `${n}px`, t.style.height = "1px", t.slot = e.slot, t;
|
|
160
157
|
}
|
|
161
|
-
function
|
|
158
|
+
function F(e, t) {
|
|
162
159
|
let n = e.getRootNode(), r = t.getRootNode(), i = n instanceof ShadowRoot && r instanceof ShadowRoot && n === r, a = n === globalThis.document && r === globalThis.document;
|
|
163
160
|
return i || a || n === r;
|
|
164
161
|
}
|
|
165
|
-
function
|
|
162
|
+
function I(e) {
|
|
166
163
|
return e.style.anchorName?.split(",")?.map((e) => e.trim())?.filter((e) => e !== "none" && e !== "") ?? [];
|
|
167
164
|
}
|
|
168
|
-
function
|
|
169
|
-
let n =
|
|
165
|
+
function L(e, t) {
|
|
166
|
+
let n = I(e);
|
|
170
167
|
e.style.anchorName = n.filter((e) => e !== t).join(",");
|
|
171
168
|
}
|
|
172
|
-
function
|
|
173
|
-
e.style.anchorName = Array.from(new Set([...
|
|
169
|
+
function R(e, t) {
|
|
170
|
+
e.style.anchorName = Array.from(new Set([...I(e), t])).join(",");
|
|
174
171
|
}
|
|
175
|
-
function
|
|
172
|
+
function z(e, t) {
|
|
176
173
|
return e.length === t.length && e.every((e, n) => e === t[n]);
|
|
177
174
|
}
|
|
178
|
-
function
|
|
175
|
+
function B(e) {
|
|
179
176
|
return Array.from(new Set(Array.from(e).filter((e) => typeof e == "string" && e.length > 0)));
|
|
180
177
|
}
|
|
181
178
|
//#endregion
|
|
182
|
-
export { y as KeynavCode,
|
|
179
|
+
export { y as KeynavCode, R as appendAnchorName, o as appendRootNodeStyle, j as applySlotContentStates, u as clickOutsideElementBounds, P as createGhostElement, m as define, p as defineElement, E as endOfScrollBox, r as generateId, I as getAnchorNames, i as getAttributeChanges, a as getAttributeListChanges, n as getChildren, M as getDisplayValue, l as getElementUpdate, _ as getFlattenedDOMTree, g as getFlattenedFocusableItems, c as getPropertyChanges, O as getThemeTokens, T as hasHorizontalScrollBar, x as hasInvalidDOMGrid, w as hasScrollBar, h as isContextMenuClick, N as matchesElementName, D as openEyeDropper, d as parseTokenNumber, L as removeAnchorName, k as removeEmptySlotWhitespace, S as removeEmptyTextNode, z as sameOrderedStringArray, F as sameRenderRoot, C as scrollBarWidth, A as slotContainsOnlyWhitespace, s as styleSheetToString, f as supportsScopedRegistry, B as uniqueNonEmptyStrings, v as validKeyNavigationCode };
|
|
183
180
|
|
|
184
181
|
//# sourceMappingURL=dom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","names":[],"sources":["../../../src/internal/utils/dom.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GlobalStateService } from '../services/global.service.js';\nimport type { ElementDefinition } from '../types/index.js';\nimport { isFocusable } from './focus.js';\n\nexport function getChildren(node: Document | Node | HTMLElement): Element[] {\n if (node instanceof Document && node.documentElement) {\n return Array.from(node.documentElement.children); // root document children\n } else if (node instanceof HTMLElement && node.shadowRoot) {\n return Array.from(node.shadowRoot.children); // shadow root direct children\n } else if (node instanceof HTMLSlotElement && node.assignedElements) {\n const slotted = node.assignedElements(); // slotted elements\n return slotted.length ? slotted : Array.from(node.children); // slot fallback\n } else {\n return Array.from((node as HTMLElement).children); // light DOM direct children\n }\n}\n\nexport function generateId() {\n const uint32 = self.crypto.getRandomValues(new Uint32Array(1))[0]!;\n return `_${uint32.toString(16)}`;\n}\n\nexport function getAttributeChanges(element: HTMLElement, attr: string, fn: (attrValue: string | null) => void) {\n fn(element.getAttribute(attr));\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.attributeName === attr) {\n fn((mutation.target as HTMLElement).getAttribute(attr));\n }\n });\n });\n observer.observe(element, { attributes: true, subtree: true });\n return observer;\n}\n\nexport function getAttributeListChanges(element: HTMLElement, attrs: string[], fn: (mutation: MutationRecord) => void) {\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.attributeName && attrs.includes(mutation.attributeName)) {\n fn(mutation);\n }\n });\n });\n observer.observe(element, { attributes: true, subtree: true });\n return observer;\n}\n\n/**\n * Appends styles to the render root of a given element. This is useful for\n * styles that apply outside the scope of the element's shadow\n * root such as UA styles --webkit-* that won't work in a ::slotted selector\n */\nexport function appendRootNodeStyle(host: HTMLElement, styles: string) {\n const stylesheet = new CSSStyleSheet();\n stylesheet.replaceSync(styles);\n const root = host.getRootNode() as Document | ShadowRoot;\n if (root.adoptedStyleSheets) {\n const hasStyleSheet = root.adoptedStyleSheets\n .map(s => styleSheetToString(s))\n .find(s => s === styleSheetToString(stylesheet));\n if (!hasStyleSheet) {\n root.adoptedStyleSheets = [...Array.from(root.adoptedStyleSheets), stylesheet];\n }\n }\n return stylesheet;\n}\n\nexport function styleSheetToString(stylesheet: CSSStyleSheet) {\n return stylesheet.cssRules\n ? Array.from(stylesheet.cssRules)\n .map(rule => rule.cssText || '')\n .join('\\n')\n : '';\n}\n\n/** Intercepts a property setter on an element so `callback` fires on every assignment. Does not use a MutationObserver. */\nexport function getPropertyChanges(element: HTMLElement, key: string, callback: (value: unknown) => void) {\n const proto = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n if (!descriptor) return;\n const own = Object.getOwnPropertyDescriptor(element, key);\n if (own && own.configurable === false) return;\n Object.defineProperty(element, key, {\n configurable: true,\n get: descriptor.get,\n set: (val: unknown) => {\n descriptor.set!.call(element, val);\n callback(val);\n }\n });\n}\n\n/* used for cases of needing to know a property update outside of lit, example a native input value prop change */\nexport function getElementUpdate(element: HTMLElement, key: string, callback: (value: unknown) => void) {\n if (element.hasAttribute(key)) {\n callback(element.getAttribute(key));\n } else if ((element as unknown as Record<string, unknown>)[key] !== undefined) {\n callback((element as unknown as Record<string, unknown>)[key]);\n }\n\n getPropertyChanges(element, key, callback);\n return getAttributeChanges(element, key, val => callback(val));\n}\n\nexport function clickOutsideElementBounds(event: PointerEvent | MouseEvent, element: HTMLElement) {\n const { left, right, top, bottom } = element.getBoundingClientRect();\n return event.clientX < left || event.clientX > right || event.clientY < top || event.clientY > bottom;\n}\n\n/** parses number out of basic calc generated by the design tokens */\nexport function parseTokenNumber(value: string) {\n return parseInt(value.includes('calc') ? value.split('*')[1]!.replace('px)', '').trim() : value, 10) || 0;\n}\n\n/** true if the browser supports scoped custom element registries */\nexport const supportsScopedRegistry =\n globalThis.CustomElementRegistry && 'initialize' in CustomElementRegistry.prototype;\n\n/** defines an element with the given custom element registry */\nexport function defineElement(element: ElementDefinition, customElementRegistry: CustomElementRegistry) {\n Object.entries(element.elementDefinitions ?? {})\n .filter(([_tag, e]) => !customElementRegistry.get(e.metadata.tag))\n .forEach(([_tag, e]) => {\n defineElement(e, customElementRegistry);\n });\n\n if (!customElementRegistry.get(element.metadata.tag)) {\n customElementRegistry.define(element.metadata.tag, element);\n\n if (customElementRegistry === customElements) {\n GlobalStateService.dispatch('NVE_ELEMENT_DEFINE', {\n elementRegistry: { [element.metadata.tag]: element.metadata.version }\n });\n }\n }\n}\n\n/** defines an element with the global custom element registry */\nexport function define(element: ElementDefinition) {\n const { version } = element.metadata;\n\n // if scoped registry supported, register only the root element to global registry\n if (supportsScopedRegistry && !customElements.get(element.metadata.tag)) {\n customElements.define(element.metadata.tag, element);\n GlobalStateService.dispatch('NVE_ELEMENT_DEFINE', {\n elementRegistry: { [element.metadata.tag]: element.metadata.version }\n });\n } else {\n // if scoped registry not supported, register the element and all its children to the global registry\n defineElement(element, customElements);\n }\n\n // warn on duplicate version\n if (\n GlobalStateService.state.elementRegistry[element.metadata.tag] !== version &&\n globalThis?.location?.hostname === 'localhost'\n ) {\n void import('./audit-logs.js').then(m =>\n console.warn(m.getDuplicatePackageVersionWarning(element.metadata.tag, version))\n );\n }\n}\n\nexport function isContextMenuClick(event: MouseEvent) {\n return (event.buttons === 2 && !event.ctrlKey) || (event.buttons === 1 && event.ctrlKey);\n}\n\nexport function getFlattenedFocusableItems(element: Node, depth = 10) {\n return getFlattenedDOMTree(element, depth).filter((e: HTMLElement) => isFocusable(e)) as HTMLElement[];\n}\n\n/**\n * Preserves visual DOM ordering when using slots within Shadow DOM\n * See more information/resources on Shadow DOM linear traversal\n * https://nolanlawson.com/2021/02/13/managing-focus-in-the-shadow-dom/\n * https://www.abeautifulsite.net/posts/querying-through-shadow-roots/\n */\nexport function getFlattenedDOMTree(node: Node, depth = 10): HTMLElement[] {\n return (\n Array.from(getChildren(node)).reduce(\n (p: unknown[], n: Node) => [\n ...p,\n [n, [...Array.from(getChildren(n)).map(i => [i, getFlattenedDOMTree(i, depth)])]]\n ],\n []\n ) as unknown as HTMLElement[]\n ).flat(depth);\n}\n\nexport function validKeyNavigationCode(e: KeyboardEvent) {\n return keynavCodes.has(e.code);\n}\n\nexport enum KeynavCode {\n End = 'End',\n Home = 'Home',\n PageUp = 'PageUp',\n PageDown = 'PageDown',\n ArrowUp = 'ArrowUp',\n ArrowDown = 'ArrowDown',\n ArrowLeft = 'ArrowLeft',\n ArrowRight = 'ArrowRight'\n}\n\nconst keynavCodes: Set<string> = new Set(Object.values(KeynavCode));\n\nexport function hasInvalidDOMGrid(rows: HTMLElement[]) {\n return rows.some(row => row.children.length !== rows[0]!.children.length);\n}\n\nexport function removeEmptyTextNode(node: Node) {\n if ((node as Text)?.wholeText?.trim() === '') {\n (node as Text).remove();\n }\n}\n\nexport function scrollBarWidth() {\n const div = globalThis.document.createElement('div');\n div.style.setProperty('width', '100px');\n div.style.setProperty('height', '100px');\n div.style.setProperty('overflow', 'scroll');\n div.style.setProperty('position', 'absolute');\n div.style.setProperty('top', '-9999px');\n globalThis.document.body.appendChild(div);\n const width = div.offsetWidth - div.clientWidth;\n globalThis.document.body.removeChild(div);\n return width;\n}\n\nexport function hasScrollBar(el: HTMLElement) {\n return el.scrollHeight > el.clientHeight;\n}\n\nexport function hasHorizontalScrollBar(el: HTMLElement) {\n return el.scrollWidth > el.clientWidth;\n}\n\nexport function endOfScrollBox(element: HTMLElement, offset = 0) {\n return element.scrollTop + element.offsetHeight + offset >= element.scrollHeight;\n}\n\nexport async function openEyeDropper(): Promise<string> {\n return await new (\n globalThis as unknown as { EyeDropper: new () => { open: () => Promise<{ sRGBHex: string }> } }\n ).EyeDropper()\n .open()\n .then((color: { sRGBHex: string }) => color.sRGBHex);\n}\n\n/**\n * provides a object with key/value of the currently applied design tokens\n */\nexport function getThemeTokens(element = globalThis.document.querySelector(':root')!) {\n // default root or provided element\n const styles = getComputedStyle(element);\n let parent: CSSStyleSheet[] = [];\n\n // check for parent iframe, same domain iframes change how the browser accesses style sheets\n try {\n parent = Array.from(globalThis.parent.document.styleSheets);\n } catch {\n // if not accessible, skip\n }\n\n return [...parent, ...Array.from(globalThis.document.styleSheets)]\n .reduce((finalArr: string[][], sheet) => {\n let rules: CSSRule[] = [];\n try {\n rules = [...sheet.cssRules];\n } catch {\n // if the style sheet is not accessible, skip\n }\n return finalArr.concat(\n rules\n .filter(rule => rule.type === 1)\n .reduce((propValArr: string[][], rule) => {\n const props = [...(rule as CSSStyleRule).style]\n .filter((p: string) => p.trim().includes('--nve'))\n .map((propName: string) => [\n propName.trim(),\n (rule as CSSStyleRule).style.getPropertyValue(propName).trim()\n ]);\n return [...propValArr, ...props];\n }, [])\n );\n }, [])\n .reduce(\n (p: Record<string, string>, token: string[]) => ({ ...p, [token[0]!]: styles.getPropertyValue(token[0]!) }),\n {}\n );\n}\n\nexport function removeEmptySlotWhitespace(slot: HTMLSlotElement) {\n if (slotContainsOnlyWhitespace(slot)) {\n slot.assignedNodes().forEach((node: Node) => node.parentNode?.removeChild(node));\n }\n}\n\nexport function slotContainsOnlyWhitespace(slot: HTMLSlotElement) {\n const hasNoElements = !slot.assignedNodes().find(i => i.nodeType !== Node.TEXT_NODE);\n const hasOnlyEmptyTextNodes = !slot\n .assignedNodes()\n .find(i => i.nodeType === Node.TEXT_NODE && (i.textContent ?? '').trim() !== '');\n return hasNoElements && hasOnlyEmptyTextNodes;\n}\n\nexport function applySlotContentStates(slot: HTMLSlotElement, element: HTMLElement & { _internals: ElementInternals }) {\n const nodes = slot.assignedNodes();\n const name = slot.name ?? 'slot';\n\n if (nodes.length) {\n element._internals.states.add(`has-${name}`);\n } else {\n element._internals.states.delete(`has-${name}`);\n }\n}\n\nexport function getDisplayValue(option?: { label?: string; value?: string }): string {\n return option?.label || option?.value || '';\n}\n\n/** returns a combination of nve and mlv for a prefixed tag selector */\nexport function tagSelector(selector: string) {\n return `${selector.replaceAll('nve-', 'nve-')}, ${selector.replaceAll('nve-', 'nve-')}`;\n}\n\n/** determines if HTML element matches the given component tag */\nexport function matchesElementName(element: Partial<HTMLElement>, component: { metadata: { tag: string } }) {\n return (\n element.localName === component.metadata.tag.replace('nve-', 'nve-') ||\n element.localName === component.metadata.tag.replace('nve-', 'nve-')\n );\n}\n\nexport function createGhostElement(sourceElement: HTMLElement) {\n const ghost = globalThis.document.createElement('div');\n const { width } = sourceElement.getBoundingClientRect();\n ghost.setAttribute('nve-ghost', '');\n ghost.style.minWidth = `${width}px`;\n ghost.style.maxWidth = `${width}px`;\n ghost.style.height = '1px';\n ghost.slot = sourceElement.slot;\n return ghost;\n}\n\nexport function sameRenderRoot(element1: HTMLElement, element2: HTMLElement) {\n const root1 = element1.getRootNode();\n const root2 = element2.getRootNode();\n const sameShadowRoot = root1 instanceof ShadowRoot && root2 instanceof ShadowRoot && root1 === root2;\n const sameDocumentRoot = root1 === globalThis.document && root2 === globalThis.document;\n const sameUnattachedRoot = root1 === root2;\n return sameShadowRoot || sameDocumentRoot || sameUnattachedRoot;\n}\n\nexport function getAnchorNames(element: HTMLElement): string[] {\n return (\n element.style.anchorName\n ?.split(',')\n ?.map(name => name.trim())\n ?.filter(name => name !== 'none' && name !== '') ?? []\n );\n}\n\nexport function removeAnchorName(element: HTMLElement, name: string) {\n const anchorNames = getAnchorNames(element);\n element.style.anchorName = anchorNames.filter(i => i !== name).join(',');\n}\n\nexport function appendAnchorName(element: HTMLElement, name: string) {\n element.style.anchorName = Array.from(new Set([...getAnchorNames(element), name])).join(',');\n}\n\n/**\n * Returns true when both arrays have the same length and each index is strictly equal (`===`).\n */\nexport function sameOrderedStringArray(a: readonly string[], b: readonly string[]): boolean {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n}\n\n/**\n * Returns unique non-empty strings in first-seen order (insertion order of a `Set` over the filtered list).\n */\nexport function uniqueNonEmptyStrings(values: Iterable<string | null | undefined>): string[] {\n return Array.from(\n new Set(Array.from(values).filter((value): value is string => typeof value === 'string' && value.length > 0))\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dom.js","names":[],"sources":["../../../src/internal/utils/dom.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GlobalStateService } from '../services/global.service.js';\nimport type { ElementDefinition } from '../types/index.js';\nimport { isFocusable } from './focus.js';\n\nexport function getChildren(node: Document | Node | HTMLElement): Element[] {\n if (node instanceof Document && node.documentElement) {\n return Array.from(node.documentElement.children); // root document children\n } else if (node instanceof HTMLElement && node.shadowRoot) {\n return Array.from(node.shadowRoot.children); // shadow root direct children\n } else if (node instanceof HTMLSlotElement && node.assignedElements) {\n const slotted = node.assignedElements(); // slotted elements\n return slotted.length ? slotted : Array.from(node.children); // slot fallback\n } else {\n return Array.from((node as HTMLElement).children); // light DOM direct children\n }\n}\n\nexport function generateId() {\n const uint32 = self.crypto.getRandomValues(new Uint32Array(1))[0]!;\n return `_${uint32.toString(16)}`;\n}\n\nexport function getAttributeChanges(element: HTMLElement, attr: string, fn: (attrValue: string | null) => void) {\n fn(element.getAttribute(attr));\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.attributeName === attr) {\n fn((mutation.target as HTMLElement).getAttribute(attr));\n }\n });\n });\n observer.observe(element, { attributes: true, subtree: true });\n return observer;\n}\n\nexport function getAttributeListChanges(element: HTMLElement, attrs: string[], fn: (mutation: MutationRecord) => void) {\n const observer = new MutationObserver(mutations => {\n mutations.forEach(mutation => {\n if (mutation.attributeName && attrs.includes(mutation.attributeName)) {\n fn(mutation);\n }\n });\n });\n observer.observe(element, { attributes: true, subtree: true });\n return observer;\n}\n\n/**\n * Appends styles to the render root of a given element. This is useful for\n * styles that apply outside the scope of the element's shadow\n * root such as UA styles --webkit-* that won't work in a ::slotted selector\n */\nexport function appendRootNodeStyle(host: HTMLElement, styles: string) {\n const stylesheet = new CSSStyleSheet();\n stylesheet.replaceSync(styles);\n const root = host.getRootNode() as Document | ShadowRoot;\n if (root.adoptedStyleSheets) {\n const hasStyleSheet = root.adoptedStyleSheets\n .map(s => styleSheetToString(s))\n .find(s => s === styleSheetToString(stylesheet));\n if (!hasStyleSheet) {\n root.adoptedStyleSheets = [...Array.from(root.adoptedStyleSheets), stylesheet];\n }\n }\n return stylesheet;\n}\n\nexport function styleSheetToString(stylesheet: CSSStyleSheet) {\n return stylesheet.cssRules\n ? Array.from(stylesheet.cssRules)\n .map(rule => rule.cssText || '')\n .join('\\n')\n : '';\n}\n\n/** Intercepts a property setter on an element so `callback` fires on every assignment. Does not use a MutationObserver. */\nexport function getPropertyChanges(element: HTMLElement, key: string, callback: (value: unknown) => void) {\n const proto = Object.getPrototypeOf(element);\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n if (!descriptor) return;\n const own = Object.getOwnPropertyDescriptor(element, key);\n if (own && own.configurable === false) return;\n Object.defineProperty(element, key, {\n configurable: true,\n get: descriptor.get,\n set: (val: unknown) => {\n descriptor.set!.call(element, val);\n callback(val);\n }\n });\n}\n\n/* used for cases of needing to know a property update outside of lit, example a native input value prop change */\nexport function getElementUpdate(element: HTMLElement, key: string, callback: (value: unknown) => void) {\n if (element.hasAttribute(key)) {\n callback(element.getAttribute(key));\n } else if ((element as unknown as Record<string, unknown>)[key] !== undefined) {\n callback((element as unknown as Record<string, unknown>)[key]);\n }\n\n getPropertyChanges(element, key, callback);\n return getAttributeChanges(element, key, val => callback(val));\n}\n\nexport function clickOutsideElementBounds(event: PointerEvent | MouseEvent, element: HTMLElement) {\n const { left, right, top, bottom } = element.getBoundingClientRect();\n return event.clientX < left || event.clientX > right || event.clientY < top || event.clientY > bottom;\n}\n\n/** parses number out of basic calc generated by the design tokens */\nexport function parseTokenNumber(value: string) {\n return parseInt(value.includes('calc') ? value.split('*')[1]!.replace('px)', '').trim() : value, 10) || 0;\n}\n\n/** true if the browser supports scoped custom element registries */\nexport const supportsScopedRegistry =\n globalThis.CustomElementRegistry && 'initialize' in CustomElementRegistry.prototype;\n\n/** defines an element with the given custom element registry */\nexport function defineElement(element: ElementDefinition, customElementRegistry: CustomElementRegistry) {\n Object.entries(element.elementDefinitions ?? {})\n .filter(([_tag, e]) => !customElementRegistry.get(e.metadata.tag))\n .forEach(([_tag, e]) => {\n defineElement(e, customElementRegistry);\n });\n\n if (!customElementRegistry.get(element.metadata.tag)) {\n customElementRegistry.define(element.metadata.tag, element);\n\n if (customElementRegistry === customElements) {\n GlobalStateService.dispatch('NVE_ELEMENT_DEFINE', {\n elementRegistry: { [element.metadata.tag]: element.metadata.version }\n });\n }\n }\n}\n\n/** defines an element with the global custom element registry */\nexport function define(element: ElementDefinition) {\n const { version } = element.metadata;\n\n // if scoped registry supported, register only the root element to global registry\n if (supportsScopedRegistry && !customElements.get(element.metadata.tag)) {\n customElements.define(element.metadata.tag, element);\n GlobalStateService.dispatch('NVE_ELEMENT_DEFINE', {\n elementRegistry: { [element.metadata.tag]: element.metadata.version }\n });\n } else {\n // if scoped registry not supported, register the element and all its children to the global registry\n defineElement(element, customElements);\n }\n\n // warn on duplicate version\n if (\n GlobalStateService.state.elementRegistry[element.metadata.tag] !== version &&\n globalThis?.location?.hostname === 'localhost'\n ) {\n void import('./audit-logs.js').then(m =>\n console.warn(m.getDuplicatePackageVersionWarning(element.metadata.tag, version))\n );\n }\n}\n\nexport function isContextMenuClick(event: MouseEvent) {\n return (event.buttons === 2 && !event.ctrlKey) || (event.buttons === 1 && event.ctrlKey);\n}\n\nexport function getFlattenedFocusableItems(element: Node, depth = 10) {\n return getFlattenedDOMTree(element, depth).filter((e: HTMLElement) => isFocusable(e)) as HTMLElement[];\n}\n\n/**\n * Preserves visual DOM ordering when using slots within Shadow DOM\n * See more information/resources on Shadow DOM linear traversal\n * https://nolanlawson.com/2021/02/13/managing-focus-in-the-shadow-dom/\n * https://www.abeautifulsite.net/posts/querying-through-shadow-roots/\n */\nexport function getFlattenedDOMTree(node: Node, depth = 10): HTMLElement[] {\n return (\n Array.from(getChildren(node)).reduce(\n (p: unknown[], n: Node) => [\n ...p,\n [n, [...Array.from(getChildren(n)).map(i => [i, getFlattenedDOMTree(i, depth)])]]\n ],\n []\n ) as unknown as HTMLElement[]\n ).flat(depth);\n}\n\nexport function validKeyNavigationCode(e: KeyboardEvent) {\n return keynavCodes.has(e.code);\n}\n\nexport enum KeynavCode {\n End = 'End',\n Home = 'Home',\n PageUp = 'PageUp',\n PageDown = 'PageDown',\n ArrowUp = 'ArrowUp',\n ArrowDown = 'ArrowDown',\n ArrowLeft = 'ArrowLeft',\n ArrowRight = 'ArrowRight'\n}\n\nconst keynavCodes: Set<string> = new Set(Object.values(KeynavCode));\n\nexport function hasInvalidDOMGrid(rows: HTMLElement[]) {\n return rows.some(row => row.children.length !== rows[0]!.children.length);\n}\n\nexport function removeEmptyTextNode(node: Node) {\n if ((node as Text)?.wholeText?.trim() === '') {\n (node as Text).remove();\n }\n}\n\nexport function scrollBarWidth() {\n const div = globalThis.document.createElement('div');\n div.style.setProperty('width', '100px');\n div.style.setProperty('height', '100px');\n div.style.setProperty('overflow', 'scroll');\n div.style.setProperty('position', 'absolute');\n div.style.setProperty('top', '-9999px');\n globalThis.document.body.appendChild(div);\n const width = div.offsetWidth - div.clientWidth;\n globalThis.document.body.removeChild(div);\n return width;\n}\n\nexport function hasScrollBar(el: HTMLElement) {\n return el.scrollHeight > el.clientHeight;\n}\n\nexport function hasHorizontalScrollBar(el: HTMLElement) {\n return el.scrollWidth > el.clientWidth;\n}\n\nexport function endOfScrollBox(element: HTMLElement, offset = 0) {\n return element.scrollTop + element.offsetHeight + offset >= element.scrollHeight;\n}\n\nexport async function openEyeDropper(): Promise<string> {\n return await new (\n globalThis as unknown as { EyeDropper: new () => { open: () => Promise<{ sRGBHex: string }> } }\n ).EyeDropper()\n .open()\n .then((color: { sRGBHex: string }) => color.sRGBHex);\n}\n\n/**\n * provides a object with key/value of the currently applied design tokens\n */\nexport function getThemeTokens(element = globalThis.document.querySelector(':root')!) {\n // default root or provided element\n const styles = getComputedStyle(element);\n let parent: CSSStyleSheet[] = [];\n\n // check for parent iframe, same domain iframes change how the browser accesses style sheets\n try {\n parent = Array.from(globalThis.parent.document.styleSheets);\n } catch {\n // if not accessible, skip\n }\n\n return [...parent, ...Array.from(globalThis.document.styleSheets)]\n .reduce((finalArr: string[][], sheet) => {\n let rules: CSSRule[] = [];\n try {\n rules = [...sheet.cssRules];\n } catch {\n // if the style sheet is not accessible, skip\n }\n return finalArr.concat(\n rules\n .filter(rule => rule.type === 1)\n .reduce((propValArr: string[][], rule) => {\n const props = [...(rule as CSSStyleRule).style]\n .filter((p: string) => p.trim().includes('--nve'))\n .map((propName: string) => [\n propName.trim(),\n (rule as CSSStyleRule).style.getPropertyValue(propName).trim()\n ]);\n return [...propValArr, ...props];\n }, [])\n );\n }, [])\n .reduce(\n (p: Record<string, string>, token: string[]) => ({ ...p, [token[0]!]: styles.getPropertyValue(token[0]!) }),\n {}\n );\n}\n\nexport function removeEmptySlotWhitespace(slot: HTMLSlotElement) {\n if (slotContainsOnlyWhitespace(slot)) {\n slot.assignedNodes().forEach((node: Node) => node.parentNode?.removeChild(node));\n }\n}\n\nexport function slotContainsOnlyWhitespace(slot: HTMLSlotElement) {\n const hasNoElements = !slot.assignedNodes().find(i => i.nodeType !== Node.TEXT_NODE);\n const hasOnlyEmptyTextNodes = !slot\n .assignedNodes()\n .find(i => i.nodeType === Node.TEXT_NODE && (i.textContent ?? '').trim() !== '');\n return hasNoElements && hasOnlyEmptyTextNodes;\n}\n\nexport function applySlotContentStates(slot: HTMLSlotElement, element: HTMLElement & { _internals: ElementInternals }) {\n const nodes = slot.assignedNodes();\n const name = slot.name ?? 'slot';\n\n if (nodes.length) {\n element._internals.states.add(`has-${name}`);\n } else {\n element._internals.states.delete(`has-${name}`);\n }\n}\n\nexport function getDisplayValue(option?: { label?: string; value?: string }): string {\n return option?.label || option?.value || '';\n}\n\n/** determines if HTML element matches the given component tag */\nexport function matchesElementName(element: Partial<HTMLElement>, component: { metadata: { tag: string } }) {\n return element.localName === component.metadata.tag;\n}\n\nexport function createGhostElement(sourceElement: HTMLElement) {\n const ghost = globalThis.document.createElement('div');\n const { width } = sourceElement.getBoundingClientRect();\n ghost.setAttribute('nve-ghost', '');\n ghost.style.minWidth = `${width}px`;\n ghost.style.maxWidth = `${width}px`;\n ghost.style.height = '1px';\n ghost.slot = sourceElement.slot;\n return ghost;\n}\n\nexport function sameRenderRoot(element1: HTMLElement, element2: HTMLElement) {\n const root1 = element1.getRootNode();\n const root2 = element2.getRootNode();\n const sameShadowRoot = root1 instanceof ShadowRoot && root2 instanceof ShadowRoot && root1 === root2;\n const sameDocumentRoot = root1 === globalThis.document && root2 === globalThis.document;\n const sameUnattachedRoot = root1 === root2;\n return sameShadowRoot || sameDocumentRoot || sameUnattachedRoot;\n}\n\nexport function getAnchorNames(element: HTMLElement): string[] {\n return (\n element.style.anchorName\n ?.split(',')\n ?.map(name => name.trim())\n ?.filter(name => name !== 'none' && name !== '') ?? []\n );\n}\n\nexport function removeAnchorName(element: HTMLElement, name: string) {\n const anchorNames = getAnchorNames(element);\n element.style.anchorName = anchorNames.filter(i => i !== name).join(',');\n}\n\nexport function appendAnchorName(element: HTMLElement, name: string) {\n element.style.anchorName = Array.from(new Set([...getAnchorNames(element), name])).join(',');\n}\n\n/**\n * Returns true when both arrays have the same length and each index is strictly equal (`===`).\n */\nexport function sameOrderedStringArray(a: readonly string[], b: readonly string[]): boolean {\n return a.length === b.length && a.every((value, index) => value === b[index]);\n}\n\n/**\n * Returns unique non-empty strings in first-seen order (insertion order of a `Set` over the filtered list).\n */\nexport function uniqueNonEmptyStrings(values: Iterable<string | null | undefined>): string[] {\n return Array.from(\n new Set(Array.from(values).filter((value): value is string => typeof value === 'string' && value.length > 0))\n );\n}\n"],"mappings":";;;AAOA,SAAgB,EAAY,GAAgD;AAC1E,KAAI,aAAgB,YAAY,EAAK,gBACnC,QAAO,MAAM,KAAK,EAAK,gBAAgB,SAAS;KACvC,aAAgB,eAAe,EAAK,WAC7C,QAAO,MAAM,KAAK,EAAK,WAAW,SAAS;KAClC,aAAgB,mBAAmB,EAAK,kBAAkB;EACnE,IAAM,IAAU,EAAK,kBAAkB;AACvC,SAAO,EAAQ,SAAS,IAAU,MAAM,KAAK,EAAK,SAAS;OAE3D,QAAO,MAAM,KAAM,EAAqB,SAAS;;AAIrD,SAAgB,IAAa;AAE3B,QAAO,IADQ,KAAK,OAAO,gBAAgB,IAAI,YAAY,EAAE,CAAC,CAAC,GAC7C,SAAS,GAAG;;AAGhC,SAAgB,EAAoB,GAAsB,GAAc,GAAwC;AAC9G,GAAG,EAAQ,aAAa,EAAK,CAAC;CAC9B,IAAM,IAAW,IAAI,kBAAiB,MAAa;AACjD,IAAU,SAAQ,MAAY;AAC5B,GAAI,EAAS,kBAAkB,KAC7B,EAAI,EAAS,OAAuB,aAAa,EAAK,CAAC;IAEzD;GACF;AAEF,QADA,EAAS,QAAQ,GAAS;EAAE,YAAY;EAAM,SAAS;EAAM,CAAC,EACvD;;AAGT,SAAgB,EAAwB,GAAsB,GAAiB,GAAwC;CACrH,IAAM,IAAW,IAAI,kBAAiB,MAAa;AACjD,IAAU,SAAQ,MAAY;AAC5B,GAAI,EAAS,iBAAiB,EAAM,SAAS,EAAS,cAAc,IAClE,EAAG,EAAS;IAEd;GACF;AAEF,QADA,EAAS,QAAQ,GAAS;EAAE,YAAY;EAAM,SAAS;EAAM,CAAC,EACvD;;AAQT,SAAgB,EAAoB,GAAmB,GAAgB;CACrE,IAAM,IAAa,IAAI,eAAe;AACtC,GAAW,YAAY,EAAO;CAC9B,IAAM,IAAO,EAAK,aAAa;AAS/B,QARI,EAAK,uBACe,EAAK,mBACxB,KAAI,MAAK,EAAmB,EAAE,CAAC,CAC/B,MAAK,MAAK,MAAM,EAAmB,EAAW,CAAC,KAEhD,EAAK,qBAAqB,CAAC,GAAG,MAAM,KAAK,EAAK,mBAAmB,EAAE,EAAW,IAG3E;;AAGT,SAAgB,EAAmB,GAA2B;AAC5D,QAAO,EAAW,WACd,MAAM,KAAK,EAAW,SAAS,CAC5B,KAAI,MAAQ,EAAK,WAAW,GAAG,CAC/B,KAAK,KAAK,GACb;;AAIN,SAAgB,EAAmB,GAAsB,GAAa,GAAoC;CAExG,IAAM,IAAa,OAAO,yBADZ,OAAO,eAAe,EAAQ,EACc,EAAI;AAC9D,KAAI,CAAC,EAAY;CACjB,IAAM,IAAM,OAAO,yBAAyB,GAAS,EAAI;AACrD,MAAO,EAAI,iBAAiB,MAChC,OAAO,eAAe,GAAS,GAAK;EAClC,cAAc;EACd,KAAK,EAAW;EAChB,MAAM,MAAiB;AAErB,GADA,EAAW,IAAK,KAAK,GAAS,EAAI,EAClC,EAAS,EAAI;;EAEhB,CAAC;;AAIJ,SAAgB,EAAiB,GAAsB,GAAa,GAAoC;AAQtG,QAPI,EAAQ,aAAa,EAAI,GAC3B,EAAS,EAAQ,aAAa,EAAI,CAAC,GACzB,EAA+C,OAAS,KAAA,KAClE,EAAU,EAA+C,GAAK,EAGhE,EAAmB,GAAS,GAAK,EAAS,EACnC,EAAoB,GAAS,IAAK,MAAO,EAAS,EAAI,CAAC;;AAGhE,SAAgB,EAA0B,GAAkC,GAAsB;CAChG,IAAM,EAAE,SAAM,UAAO,QAAK,cAAW,EAAQ,uBAAuB;AACpE,QAAO,EAAM,UAAU,KAAQ,EAAM,UAAU,KAAS,EAAM,UAAU,KAAO,EAAM,UAAU;;AAIjG,SAAgB,EAAiB,GAAe;AAC9C,QAAO,SAAS,EAAM,SAAS,OAAO,GAAG,EAAM,MAAM,IAAI,CAAC,GAAI,QAAQ,OAAO,GAAG,CAAC,MAAM,GAAG,GAAO,GAAG,IAAI;;AAI1G,IAAa,IACX,WAAW,yBAAyB,gBAAgB,sBAAsB;AAG5E,SAAgB,EAAc,GAA4B,GAA8C;AAOtG,CANA,OAAO,QAAQ,EAAQ,sBAAsB,EAAE,CAAC,CAC7C,QAAQ,CAAC,GAAM,OAAO,CAAC,EAAsB,IAAI,EAAE,SAAS,IAAI,CAAC,CACjE,SAAS,CAAC,GAAM,OAAO;AACtB,IAAc,GAAG,EAAsB;GACvC,EAEC,EAAsB,IAAI,EAAQ,SAAS,IAAI,KAClD,EAAsB,OAAO,EAAQ,SAAS,KAAK,EAAQ,EAEvD,MAA0B,kBAC5B,EAAmB,SAAS,sBAAsB,EAChD,iBAAiB,GAAG,EAAQ,SAAS,MAAM,EAAQ,SAAS,SAAS,EACtE,CAAC;;AAMR,SAAgB,EAAO,GAA4B;CACjD,IAAM,EAAE,eAAY,EAAQ;AAc5B,CAXI,KAA0B,CAAC,eAAe,IAAI,EAAQ,SAAS,IAAI,IACrE,eAAe,OAAO,EAAQ,SAAS,KAAK,EAAQ,EACpD,EAAmB,SAAS,sBAAsB,EAChD,iBAAiB,GAAG,EAAQ,SAAS,MAAM,EAAQ,SAAS,SAAS,EACtE,CAAC,IAGF,EAAc,GAAS,eAAe,EAKtC,EAAmB,MAAM,gBAAgB,EAAQ,SAAS,SAAS,KACnE,YAAY,UAAU,aAAa,eAE9B,OAAO,mBAAmB,MAAK,MAClC,QAAQ,KAAK,EAAE,kCAAkC,EAAQ,SAAS,KAAK,EAAQ,CAAC,CACjF;;AAIL,SAAgB,EAAmB,GAAmB;AACpD,QAAQ,EAAM,YAAY,KAAK,CAAC,EAAM,WAAa,EAAM,YAAY,KAAK,EAAM;;AAGlF,SAAgB,EAA2B,GAAe,IAAQ,IAAI;AACpE,QAAO,EAAoB,GAAS,EAAM,CAAC,QAAQ,MAAmB,EAAY,EAAE,CAAC;;AASvF,SAAgB,EAAoB,GAAY,IAAQ,IAAmB;AACzE,QACE,MAAM,KAAK,EAAY,EAAK,CAAC,CAAC,QAC3B,GAAc,MAAY,CACzB,GAAG,GACH,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,EAAY,EAAE,CAAC,CAAC,KAAI,MAAK,CAAC,GAAG,EAAoB,GAAG,EAAM,CAAC,CAAC,CAAC,CAAC,CAClF,EACD,EAAE,CACH,CACD,KAAK,EAAM;;AAGf,SAAgB,EAAuB,GAAkB;AACvD,QAAO,EAAY,IAAI,EAAE,KAAK;;AAGhC,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,MAAA,OACA,EAAA,OAAA,QACA,EAAA,SAAA,UACA,EAAA,WAAA,YACA,EAAA,UAAA,WACA,EAAA,YAAA,aACA,EAAA,YAAA,aACA,EAAA,aAAA;KACD,EAEK,IAA2B,IAAI,IAAI,OAAO,OAAO,EAAW,CAAC;AAEnE,SAAgB,EAAkB,GAAqB;AACrD,QAAO,EAAK,MAAK,MAAO,EAAI,SAAS,WAAW,EAAK,GAAI,SAAS,OAAO;;AAG3E,SAAgB,EAAoB,GAAY;AAC9C,CAAK,GAAe,WAAW,MAAM,KAAK,MACvC,EAAc,QAAQ;;AAI3B,SAAgB,IAAiB;CAC/B,IAAM,IAAM,WAAW,SAAS,cAAc,MAAM;AAMpD,CALA,EAAI,MAAM,YAAY,SAAS,QAAQ,EACvC,EAAI,MAAM,YAAY,UAAU,QAAQ,EACxC,EAAI,MAAM,YAAY,YAAY,SAAS,EAC3C,EAAI,MAAM,YAAY,YAAY,WAAW,EAC7C,EAAI,MAAM,YAAY,OAAO,UAAU,EACvC,WAAW,SAAS,KAAK,YAAY,EAAI;CACzC,IAAM,IAAQ,EAAI,cAAc,EAAI;AAEpC,QADA,WAAW,SAAS,KAAK,YAAY,EAAI,EAClC;;AAGT,SAAgB,EAAa,GAAiB;AAC5C,QAAO,EAAG,eAAe,EAAG;;AAG9B,SAAgB,EAAuB,GAAiB;AACtD,QAAO,EAAG,cAAc,EAAG;;AAG7B,SAAgB,EAAe,GAAsB,IAAS,GAAG;AAC/D,QAAO,EAAQ,YAAY,EAAQ,eAAe,KAAU,EAAQ;;AAGtE,eAAsB,IAAkC;AACtD,QAAO,MAAM,IACX,WACA,YAAY,CACX,MAAM,CACN,MAAM,MAA+B,EAAM,QAAQ;;AAMxD,SAAgB,EAAe,IAAU,WAAW,SAAS,cAAc,QAAQ,EAAG;CAEpF,IAAM,IAAS,iBAAiB,EAAQ,EACpC,IAA0B,EAAE;AAGhC,KAAI;AACF,MAAS,MAAM,KAAK,WAAW,OAAO,SAAS,YAAY;SACrD;AAIR,QAAO,CAAC,GAAG,GAAQ,GAAG,MAAM,KAAK,WAAW,SAAS,YAAY,CAAC,CAC/D,QAAQ,GAAsB,MAAU;EACvC,IAAI,IAAmB,EAAE;AACzB,MAAI;AACF,OAAQ,CAAC,GAAG,EAAM,SAAS;UACrB;AAGR,SAAO,EAAS,OACd,EACG,QAAO,MAAQ,EAAK,SAAS,EAAE,CAC/B,QAAQ,GAAwB,MAAS;GACxC,IAAM,IAAQ,CAAC,GAAI,EAAsB,MAAM,CAC5C,QAAQ,MAAc,EAAE,MAAM,CAAC,SAAS,QAAQ,CAAC,CACjD,KAAK,MAAqB,CACzB,EAAS,MAAM,EACd,EAAsB,MAAM,iBAAiB,EAAS,CAAC,MAAM,CAC/D,CAAC;AACJ,UAAO,CAAC,GAAG,GAAY,GAAG,EAAM;KAC/B,EAAE,CAAC,CACT;IACA,EAAE,CAAC,CACL,QACE,GAA2B,OAAqB;EAAE,GAAG;GAAI,EAAM,KAAM,EAAO,iBAAiB,EAAM,GAAI;EAAE,GAC1G,EAAE,CACH;;AAGL,SAAgB,EAA0B,GAAuB;AAC/D,CAAI,EAA2B,EAAK,IAClC,EAAK,eAAe,CAAC,SAAS,MAAe,EAAK,YAAY,YAAY,EAAK,CAAC;;AAIpF,SAAgB,EAA2B,GAAuB;CAChE,IAAM,IAAgB,CAAC,EAAK,eAAe,CAAC,MAAK,MAAK,EAAE,aAAa,KAAK,UAAU,EAC9E,IAAwB,CAAC,EAC5B,eAAe,CACf,MAAK,MAAK,EAAE,aAAa,KAAK,cAAc,EAAE,eAAe,IAAI,MAAM,KAAK,GAAG;AAClF,QAAO,KAAiB;;AAG1B,SAAgB,EAAuB,GAAuB,GAAyD;CACrH,IAAM,IAAQ,EAAK,eAAe,EAC5B,IAAO,EAAK,QAAQ;AAE1B,CAAI,EAAM,SACR,EAAQ,WAAW,OAAO,IAAI,OAAO,IAAO,GAE5C,EAAQ,WAAW,OAAO,OAAO,OAAO,IAAO;;AAInD,SAAgB,EAAgB,GAAqD;AACnF,QAAO,GAAQ,SAAS,GAAQ,SAAS;;AAI3C,SAAgB,EAAmB,GAA+B,GAA0C;AAC1G,QAAO,EAAQ,cAAc,EAAU,SAAS;;AAGlD,SAAgB,EAAmB,GAA4B;CAC7D,IAAM,IAAQ,WAAW,SAAS,cAAc,MAAM,EAChD,EAAE,aAAU,EAAc,uBAAuB;AAMvD,QALA,EAAM,aAAa,aAAa,GAAG,EACnC,EAAM,MAAM,WAAW,GAAG,EAAM,KAChC,EAAM,MAAM,WAAW,GAAG,EAAM,KAChC,EAAM,MAAM,SAAS,OACrB,EAAM,OAAO,EAAc,MACpB;;AAGT,SAAgB,EAAe,GAAuB,GAAuB;CAC3E,IAAM,IAAQ,EAAS,aAAa,EAC9B,IAAQ,EAAS,aAAa,EAC9B,IAAiB,aAAiB,cAAc,aAAiB,cAAc,MAAU,GACzF,IAAmB,MAAU,WAAW,YAAY,MAAU,WAAW;AAE/E,QAAO,KAAkB,KADE,MAAU;;AAIvC,SAAgB,EAAe,GAAgC;AAC7D,QACE,EAAQ,MAAM,YACV,MAAM,IAAI,EACV,KAAI,MAAQ,EAAK,MAAM,CAAC,EACxB,QAAO,MAAQ,MAAS,UAAU,MAAS,GAAG,IAAI,EAAE;;AAI5D,SAAgB,EAAiB,GAAsB,GAAc;CACnE,IAAM,IAAc,EAAe,EAAQ;AAC3C,GAAQ,MAAM,aAAa,EAAY,QAAO,MAAK,MAAM,EAAK,CAAC,KAAK,IAAI;;AAG1E,SAAgB,EAAiB,GAAsB,GAAc;AACnE,GAAQ,MAAM,aAAa,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,EAAe,EAAQ,EAAE,EAAK,CAAC,CAAC,CAAC,KAAK,IAAI;;AAM9F,SAAgB,EAAuB,GAAsB,GAA+B;AAC1F,QAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,GAAO,MAAU,MAAU,EAAE,GAAO;;AAM/E,SAAgB,EAAsB,GAAuD;AAC3F,QAAO,MAAM,KACX,IAAI,IAAI,MAAM,KAAK,EAAO,CAAC,QAAQ,MAA2B,OAAO,KAAU,YAAY,EAAM,SAAS,EAAE,CAAC,CAC9G"}
|
package/dist/logo/logo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logo.js","names":[],"sources":["../../src/logo/logo.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --background: var(--state-color-background);\n --color: var(--state-color);\n --gap: var(--nve-ref-space-xs);\n --height: var(--nve-ref-size-800);\n --width: var(--nve-ref-size-800);\n --font-size: calc(var(--width) / 2);\n --border-radius: calc(var(--height) * 0.2);\n --font-weight: var(--nve-ref-font-weight-bold);\n width: var(--width);\n height: var(--height);\n display: inline-block;\n}\n\n@supports not (background: color-mix(in oklab, #000 0%, #fff)) {\n :host([color]) [internal-host] {\n --background: var(--color);\n border: 1px solid transparent;\n background-image: linear-gradient(hsl(0 0% 0% / 0.8) 0 0) !important;\n }\n}\n\n[internal-host] {\n font-weight: var(--font-weight);\n font-size: var(--font-size);\n gap: var(--gap);\n color: var(--color);\n width: var(--width);\n height: var(--height);\n border-radius: var(--border-radius);\n display: inline-flex;\n place-items: center;\n place-content: center;\n line-height: 0;\n}\n\n::slotted([nve-text])
|
|
1
|
+
{"version":3,"file":"logo.js","names":[],"sources":["../../src/logo/logo.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --background: var(--state-color-background);\n --color: var(--state-color);\n --gap: var(--nve-ref-space-xs);\n --height: var(--nve-ref-size-800);\n --width: var(--nve-ref-size-800);\n --font-size: calc(var(--width) / 2);\n --border-radius: calc(var(--height) * 0.2);\n --font-weight: var(--nve-ref-font-weight-bold);\n width: var(--width);\n height: var(--height);\n display: inline-block;\n}\n\n@supports not (background: color-mix(in oklab, #000 0%, #fff)) {\n :host([color]) [internal-host] {\n --background: var(--color);\n border: 1px solid transparent;\n background-image: linear-gradient(hsl(0 0% 0% / 0.8) 0 0) !important;\n }\n}\n\n[internal-host] {\n font-weight: var(--font-weight);\n font-size: var(--font-size);\n gap: var(--gap);\n color: var(--color);\n width: var(--width);\n height: var(--height);\n border-radius: var(--border-radius);\n display: inline-flex;\n place-items: center;\n place-content: center;\n line-height: 0;\n}\n\n::slotted([nve-text]) {\n color: inherit !important;\n}\n\n::slotted(nve-icon) {\n --color: var(--state-color);\n --width: var(--font-size);\n --height: var(--font-size);\n}\n\n:host([size='sm']) {\n --width: var(--nve-ref-size-600);\n --height: var(--nve-ref-size-600);\n}\n\n:host([size='lg']) {\n --width: calc(var(--nve-ref-size-1000) * 1.55);\n --height: calc(var(--nve-ref-size-1000) * 1.55);\n}\n\n:host([color]) [internal-host] {\n background: var(--background);\n}\n"],"mappings":""}
|
package/dist/logo/logo2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.js","names":[],"sources":["../../src/menu/menu-item.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --border-radius: var(--nve-ref-border-radius-xs);\n --border-background: var(--nve-sys-accent-secondary-background);\n --font-size: var(--nve-ref-font-size-100);\n --font-weight: var(--nve-ref-font-weight-medium);\n --color: var(--nve-sys-interaction-color);\n --padding: var(--nve-ref-size-200);\n --gap: var(--nve-ref-space-sm);\n --width: 100%;\n --min-height: var(--nve-ref-size-800);\n --line-height: 0;\n --cursor: pointer;\n --text-transform: capitalize;\n --opacity: 1;\n contain: layout;\n content-visibility: auto;\n contain-intrinsic-size: auto var(--min-height, initial);\n}\n\n[internal-host] {\n --_icon-color: var(--color);\n padding: var(--padding);\n color: var(--color);\n font-size: var(--font-size);\n font-weight: var(--font-weight);\n border-radius: var(--border-radius);\n gap: var(--gap);\n width: var(--width);\n min-width: var(--min-width);\n min-height: var(--min-height);\n cursor: var(--cursor);\n text-transform: var(--text-transform);\n outline-offset: calc(-1 * var(--nve-ref-size-50));\n opacity: var(--opacity);\n position: relative;\n display: flex;\n align-items: center;\n white-space: nowrap;\n border: 0;\n text-align: left;\n}\n\n::slotted(nve-icon)
|
|
1
|
+
{"version":3,"file":"menu-item.js","names":[],"sources":["../../src/menu/menu-item.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --border-radius: var(--nve-ref-border-radius-xs);\n --border-background: var(--nve-sys-accent-secondary-background);\n --font-size: var(--nve-ref-font-size-100);\n --font-weight: var(--nve-ref-font-weight-medium);\n --color: var(--nve-sys-interaction-color);\n --padding: var(--nve-ref-size-200);\n --gap: var(--nve-ref-space-sm);\n --width: 100%;\n --min-height: var(--nve-ref-size-800);\n --line-height: 0;\n --cursor: pointer;\n --text-transform: capitalize;\n --opacity: 1;\n contain: layout;\n content-visibility: auto;\n contain-intrinsic-size: auto var(--min-height, initial);\n}\n\n[internal-host] {\n --_icon-color: var(--color);\n padding: var(--padding);\n color: var(--color);\n font-size: var(--font-size);\n font-weight: var(--font-weight);\n border-radius: var(--border-radius);\n gap: var(--gap);\n width: var(--width);\n min-width: var(--min-width);\n min-height: var(--min-height);\n cursor: var(--cursor);\n text-transform: var(--text-transform);\n outline-offset: calc(-1 * var(--nve-ref-size-50));\n opacity: var(--opacity);\n position: relative;\n display: flex;\n align-items: center;\n white-space: nowrap;\n border: 0;\n text-align: left;\n}\n\n::slotted(nve-icon) {\n --color: var(--_icon-color);\n}\n\n:host(:hover),\n:host(:state(selected)) {\n --color: var(--nve-sys-interaction-selected-color);\n}\n\n:host(:state(disabled)) [interaction-state] {\n --nve-sys-interaction-state-ratio: 0;\n}\n\n:host(:state(disabled)) {\n --opacity: var(--nve-ref-opacity-500);\n --cursor: not-allowed;\n}\n\n:host(:state(current)) {\n contain: none;\n content-visibility: initial;\n --color: var(--nve-sys-interaction-selected-color);\n}\n\n:host(:state(current)) [internal-host] {\n contain: none;\n}\n\n:host([status='danger']) {\n --nve-sys-interaction-state-base: var(--nve-sys-support-danger-muted-color);\n --nve-sys-interaction-selected-color: var(--nve-sys-support-danger-emphasis-color);\n --border-background: var(--nve-sys-support-danger-emphasis-color);\n --color: var(--nve-sys-support-danger-emphasis-color);\n}\n\n:host([status='danger']:hover) ::slotted(nve-icon) {\n --color: var(--nve-sys-support-danger-emphasis-color) !important;\n}\n\n:host(:state(current)) [internal-host]::after {\n width: var(--nve-ref-border-width-xl);\n border-radius: var(--border-radius);\n background: var(--border-background);\n content: '';\n display: block;\n position: absolute;\n top: var(--nve-ref-size-50);\n bottom: var(--nve-ref-size-50);\n left: calc(var(--nve-ref-size-200) * -1);\n}\n\n::slotted(nve-icon) {\n --color: inherit !important;\n}\n\n::slotted(a) {\n text-decoration: var(--text-decoration) !important;\n color: var(--color) !important;\n gap: var(--gap) !important;\n display: flex !important;\n align-items: center !important;\n outline: 0;\n}\n\n::slotted(a)::after {\n display: block;\n content: ' ';\n inset: 0;\n position: absolute;\n}\n\n::slotted(*:not(a, nve-icon)) {\n pointer-events: none;\n}\n\n::slotted(nve-divider) {\n margin: 0 calc(-1 * var(--padding));\n}\n\n::slotted([slot='suffix']) {\n margin-inline-start: auto;\n}\n"],"mappings":""}
|
package/dist/menu/menu-item2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.global.js","names":[],"sources":["../../src/menu/menu.global.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\nnve-menu:has(nve-menu-item:state(current))
|
|
1
|
+
{"version":3,"file":"menu.global.js","names":[],"sources":["../../src/menu/menu.global.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\nnve-menu:has(nve-menu-item:state(current)) {\n --padding: 0 0 0 var(--nve-ref-size-200);\n}\n\nnve-menu:has(nve-tooltip),\nnve-menu:has(nve-tooltip) nve-menu-item {\n content-visibility: initial;\n}\n"],"mappings":""}
|
package/dist/menu/menu2.js
CHANGED
package/dist/menu/menu2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu2.js","names":["#scrollRAF","#handleScroll"],"sources":["../../src/menu/menu.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport type { KeynavListConfig } from '@nvidia-elements/core/internal';\nimport {
|
|
1
|
+
{"version":3,"file":"menu2.js","names":["#scrollRAF","#handleScroll"],"sources":["../../src/menu/menu.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, LitElement } from 'lit';\nimport { queryAssignedElements } from 'lit/decorators/query-assigned-elements.js';\nimport type { KeynavListConfig } from '@nvidia-elements/core/internal';\nimport {\n useStyles,\n attachInternals,\n keyNavigationList,\n appendRootNodeStyle,\n audit\n} from '@nvidia-elements/core/internal';\nimport type { MenuItem } from './menu-item.js';\nimport styles from './menu.css?inline';\nimport globalStyles from './menu.global.css?inline';\n\n/**\n * @element nve-menu\n * @description A menu offers a list of choices to the user, such as a set of actions or functions. Choosing an item in a menu typically opens a sub menu, or invokes a command.\n * @since 0.11.0\n * @entrypoint \\@nvidia-elements/core/menu\n * @slot - default slot for `nve-menu-item`\n * @cssprop --padding\n * @cssprop --gap\n * @cssprop --width\n * @cssprop --max-width\n * @cssprop --min-width\n * @cssprop --max-height\n * @event scroll - Fires when the user scrolls the menu list. Throttled to one dispatch per animation frame. `detail: { scrollTop, scrollHeight, clientHeight }`.\n * @aria https://www.w3.org/WAI/ARIA/apg/patterns/menubar/\n */\n@audit()\n@keyNavigationList<Menu>()\nexport class Menu extends LitElement {\n static styles = useStyles([styles]);\n\n static readonly metadata = {\n tag: 'nve-menu',\n version: '0.0.0',\n children: ['nve-menu-item', 'nve-divider']\n };\n\n static elementDefinitions = {};\n\n /** @private */\n get keynavListConfig(): KeynavListConfig {\n return {\n layout: 'vertical',\n items: this.items\n };\n }\n\n /** @private */\n declare _internals: ElementInternals;\n\n @queryAssignedElements() items!: MenuItem[];\n\n #scrollRAF: number | null = null;\n\n #handleScroll = () => {\n if (this.#scrollRAF !== null) return;\n this.#scrollRAF = requestAnimationFrame(() => {\n this.#scrollRAF = null;\n const container = this.shadowRoot?.querySelector<HTMLElement>('[internal-host]');\n if (!container) return;\n const { scrollTop, scrollHeight, clientHeight } = container;\n this.dispatchEvent(\n new CustomEvent('scroll', {\n bubbles: true,\n composed: true,\n detail: { scrollTop, scrollHeight, clientHeight }\n })\n );\n });\n };\n\n render() {\n return html`\n <div internal-host>\n <slot></slot>\n </div>\n `;\n }\n\n async firstUpdated() {\n await this.updateComplete;\n this.shadowRoot\n ?.querySelector('[internal-host]')\n ?.addEventListener('scroll', this.#handleScroll, { passive: true });\n }\n\n connectedCallback() {\n super.connectedCallback();\n attachInternals(this);\n this._internals.role = 'menu';\n appendRootNodeStyle(this, globalStyles);\n }\n}\n"],"mappings":";;;;;;;;;;;AAkCO,IAAA,IAAA,cAAmB,EAAW;;gBACnB,EAAU,CAAC,EAAO,CAAC;;;kBAER;GACzB,KAAK;GACL,SAAS;GACT,UAAU,CAAC,iBAAiB,cAAA;GAC7B;;;4BAE2B,EAAE;;CAG9B,IAAI,mBAAqC;AACvC,SAAO;GACL,QAAQ;GACR,OAAO,KAAK;GACb;;CAQH,KAA4B;CAE5B,WAAsB;AAChB,QAAA,MAAoB,SACxB,MAAA,IAAkB,4BAA4B;AAC5C,SAAA,IAAkB;GAClB,IAAM,IAAY,KAAK,YAAY,cAA2B,kBAAkB;AAChF,OAAI,CAAC,EAAW;GAChB,IAAM,EAAE,cAAW,iBAAc,oBAAiB;AAClD,QAAK,cACH,IAAI,YAAY,UAAU;IACxB,SAAS;IACT,UAAU;IACV,QAAQ;KAAE;KAAW;KAAc;;IACpC,CAAC,CACH;IACD;;CAGJ,SAAS;AACP,SAAO,CAAI;;CAOb,MAAM,eAAe;AAEnB,EADA,MAAM,KAAK,gBACX,KAAK,YACD,cAAc,kBAAkB,EAChC,iBAAiB,UAAU,MAAA,GAAoB,EAAE,SAAS,IAAM,CAAC;;CAGvE,oBAAoB;AAIlB,EAHA,MAAM,mBAAmB,EACzB,EAAgB,KAAK,EACrB,KAAK,WAAW,OAAO,QACvB,EAAoB,MAAM,EAAa;;;GAxCxC,GAAuB,CAAA,EAAA,EAAA,WAAA,SAAA,KAAA,EAAA,SAxBzB,GAAO,EACP,GAAyB,CAAA,EAAA,EAAA"}
|
package/dist/month/month2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification.js","names":[],"sources":["../../src/notification/notification.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --nve-sys-layer-popover-arrow-padding: 0px;\n --nve-sys-layer-popover-arrow-offset: 0px;\n --nve-sys-layer-popover-offset: var(--nve-ref-space-xl);\n --nve-sys-interaction-color: var(--color);\n --nve-sys-interaction-hover-color: var(--color);\n --border-radius: var(--nve-ref-border-radius-md);\n --status-color: var(--nve-sys-support-color);\n --background: var(--nve-sys-layer-popover-background);\n --color: var(--nve-sys-layer-popover-color);\n --padding: var(--nve-ref-size-500) var(--nve-ref-size-900);\n --box-shadow: var(--nve-ref-shadow-400);\n --gap: var(--nve-ref-space-md);\n --min-width: 320px;\n --width: fit-content;\n --max-width: fit-content;\n --border: 0;\n --status-border: 6px solid var(--status-color);\n width: var(--width);\n}\n\n[internal-host] {\n box-shadow: var(--box-shadow);\n padding: var(--padding);\n border-radius: var(--border-radius);\n background: var(--background);\n color: var(--color);\n gap: var(--gap);\n border: var(--border);\n border-inline-start: var(--status-border);\n min-width: var(--min-width);\n max-width: var(--max-width);\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n[internal-host]:has(nve-icon-button) {\n padding-inline-end: var(--nve-ref-size-1000);\n}\n\nnve-icon-button {\n position: absolute;\n inset-block-start: var(--nve-ref-size-150);\n inset-inline-end: var(--nve-ref-size-150);\n}\n\nnve-icon-button::part(icon) {\n --color: var(--nve-sys-layer-popover-color) !important;\n}\n\n[part='status-icon'],\n::slotted([slot='icon']) {\n position: absolute;\n inset-block-start: var(--nve-ref-size-400);\n inset-inline-start: var(--nve-ref-size-300);\n --color: var(--status-color);\n}\n\n::slotted([nve-text])
|
|
1
|
+
{"version":3,"file":"notification.js","names":[],"sources":["../../src/notification/notification.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --nve-sys-layer-popover-arrow-padding: 0px;\n --nve-sys-layer-popover-arrow-offset: 0px;\n --nve-sys-layer-popover-offset: var(--nve-ref-space-xl);\n --nve-sys-interaction-color: var(--color);\n --nve-sys-interaction-hover-color: var(--color);\n --border-radius: var(--nve-ref-border-radius-md);\n --status-color: var(--nve-sys-support-color);\n --background: var(--nve-sys-layer-popover-background);\n --color: var(--nve-sys-layer-popover-color);\n --padding: var(--nve-ref-size-500) var(--nve-ref-size-900);\n --box-shadow: var(--nve-ref-shadow-400);\n --gap: var(--nve-ref-space-md);\n --min-width: 320px;\n --width: fit-content;\n --max-width: fit-content;\n --border: 0;\n --status-border: 6px solid var(--status-color);\n width: var(--width);\n}\n\n[internal-host] {\n box-shadow: var(--box-shadow);\n padding: var(--padding);\n border-radius: var(--border-radius);\n background: var(--background);\n color: var(--color);\n gap: var(--gap);\n border: var(--border);\n border-inline-start: var(--status-border);\n min-width: var(--min-width);\n max-width: var(--max-width);\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n[internal-host]:has(nve-icon-button) {\n padding-inline-end: var(--nve-ref-size-1000);\n}\n\nnve-icon-button {\n position: absolute;\n inset-block-start: var(--nve-ref-size-150);\n inset-inline-end: var(--nve-ref-size-150);\n}\n\nnve-icon-button::part(icon) {\n --color: var(--nve-sys-layer-popover-color) !important;\n}\n\n[part='status-icon'],\n::slotted([slot='icon']) {\n position: absolute;\n inset-block-start: var(--nve-ref-size-400);\n inset-inline-start: var(--nve-ref-size-300);\n --color: var(--status-color);\n}\n\n::slotted([nve-text]) {\n color: inherit !important;\n}\n\n:host([container='flat']) {\n --max-width: 100%;\n --width: 100%;\n --border-radius: 0;\n --box-shadow: none;\n --border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n --background: var(--nve-sys-layer-overlay-accent-background);\n --color: var(--nve-sys-layer-overlay-color);\n position: relative;\n margin: 0;\n}\n\n:host([container='flat']) nve-icon-button::part(icon) {\n --color: var(--nve-sys-layer-overlay-color) !important;\n}\n\n:host([container='flat']) .popover {\n border-block-end: var(--border);\n}\n\n:host([status='accent']) {\n --status-color: var(--nve-sys-support-accent-color);\n}\n\n:host([status='success']) {\n --status-color: var(--nve-sys-support-success-color);\n}\n\n:host([status='warning']) {\n --status-color: color-mix(in oklab, var(--nve-sys-support-warning-color) 90%, var(--nve-sys-contrast-mute-color));\n}\n\n:host([status='danger']) {\n --status-color: var(--nve-sys-support-danger-color);\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-panel-content.js","names":[],"sources":["../../../src/page/page-panel/page-panel-content.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: var(--nve-ref-size-300) var(--nve-ref-size-400);\n --gap: var(--nve-ref-space-sm);\n width: 100%;\n height: 100%;\n flex: 1;\n justify-content: stretch;\n flex-direction: column;\n display: flex;\n overflow: auto;\n gap: var(--gap);\n contain: none;\n scrollbar-color: var(--nve-sys-scrollbar-thumb-color) var(--nve-sys-scrollbar-track-color);\n scrollbar-width: var(--nve-sys-scrollbar-width);\n}\n\n[internal-host] {\n background: var(--background);\n padding: var(--padding);\n height: 100%;\n width: 100%;\n flex: 1;\n}\n\n::slotted(nve-menu)
|
|
1
|
+
{"version":3,"file":"page-panel-content.js","names":[],"sources":["../../../src/page/page-panel/page-panel-content.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: var(--nve-ref-size-300) var(--nve-ref-size-400);\n --gap: var(--nve-ref-space-sm);\n width: 100%;\n height: 100%;\n flex: 1;\n justify-content: stretch;\n flex-direction: column;\n display: flex;\n overflow: auto;\n gap: var(--gap);\n contain: none;\n scrollbar-color: var(--nve-sys-scrollbar-thumb-color) var(--nve-sys-scrollbar-track-color);\n scrollbar-width: var(--nve-sys-scrollbar-width);\n}\n\n[internal-host] {\n background: var(--background);\n padding: var(--padding);\n height: 100%;\n width: 100%;\n flex: 1;\n}\n\n::slotted(nve-menu) {\n --width: 100%;\n}\n"],"mappings":""}
|
package/dist/page/page2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel-content.js","names":[],"sources":["../../src/panel/panel-content.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: var(--nve-ref-size-300) var(--nve-ref-size-400);\n padding: var(--padding);\n color: var(--color);\n flex-grow: 1;\n width: 100%;\n contain: none;\n}\n\n::slotted(nve-menu)
|
|
1
|
+
{"version":3,"file":"panel-content.js","names":[],"sources":["../../src/panel/panel-content.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: var(--nve-ref-size-300) var(--nve-ref-size-400);\n padding: var(--padding);\n color: var(--color);\n flex-grow: 1;\n width: 100%;\n contain: none;\n}\n\n::slotted(nve-menu) {\n --width: 100%;\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel-footer.js","names":[],"sources":["../../src/panel/panel-footer.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: var(--nve-ref-size-300) var(--nve-ref-size-400);\n --border-top: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n --gap: var(--nve-ref-space-sm);\n}\n\nfooter[internal-host] {\n padding: var(--padding);\n border-top: var(--border-top);\n color: var(--color);\n display: flex;\n place-items: flex-start;\n gap: var(--gap);\n\n ::slotted(nve-button)
|
|
1
|
+
{"version":3,"file":"panel-footer.js","names":[],"sources":["../../src/panel/panel-footer.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n\n:host {\n --padding: var(--nve-ref-size-300) var(--nve-ref-size-400);\n --border-top: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n --gap: var(--nve-ref-space-sm);\n}\n\nfooter[internal-host] {\n padding: var(--padding);\n border-top: var(--border-top);\n color: var(--color);\n display: flex;\n place-items: flex-start;\n gap: var(--gap);\n\n ::slotted(nve-button) {\n flex-grow: 1;\n }\n}\n"],"mappings":""}
|