@nvidia-elements/core 2.23.5 → 2.24.0
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 +19 -0
- 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-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/bundle.d.ts +2 -0
- package/dist/bundles/index.d.ts +323 -56
- package/dist/bundles/index.js +9 -9
- 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/custom-elements-jsx.d.ts +167 -1
- package/dist/custom-elements-vue.d.ts +161 -1
- package/dist/custom-elements.json +5017 -268
- package/dist/dashboard/controllers/arrangement.controller.d.ts +30 -0
- package/dist/dashboard/controllers/arrangement.controller.js +68 -0
- package/dist/dashboard/controllers/arrangement.controller.js.map +1 -0
- package/dist/dashboard/controllers/command.controller.d.ts +28 -0
- package/dist/dashboard/controllers/command.controller.js +69 -0
- package/dist/dashboard/controllers/command.controller.js.map +1 -0
- package/dist/dashboard/controllers/composition.controller.d.ts +61 -0
- package/dist/dashboard/controllers/composition.controller.js +285 -0
- package/dist/dashboard/controllers/composition.controller.js.map +1 -0
- package/dist/dashboard/controllers/fullscreen.controller.d.ts +23 -0
- package/dist/dashboard/controllers/fullscreen.controller.js +46 -0
- package/dist/dashboard/controllers/fullscreen.controller.js.map +1 -0
- package/dist/dashboard/controllers/interaction.controller.d.ts +53 -0
- package/dist/dashboard/controllers/interaction.controller.js +407 -0
- package/dist/dashboard/controllers/interaction.controller.js.map +1 -0
- package/dist/dashboard/controllers/measurement.controller.d.ts +28 -0
- package/dist/dashboard/controllers/measurement.controller.js +77 -0
- package/dist/dashboard/controllers/measurement.controller.js.map +1 -0
- package/dist/dashboard/dashboard.d.ts +83 -0
- package/dist/dashboard/dashboard.examples.js +5 -0
- package/dist/dashboard/dashboard.examples.js.map +1 -0
- package/dist/dashboard/dashboard.examples.json +138 -0
- package/dist/dashboard/dashboard.js +5 -0
- package/dist/dashboard/dashboard.js.map +1 -0
- package/dist/dashboard/dashboard.types.d.ts +33 -0
- package/dist/dashboard/dashboard2.js +352 -0
- package/dist/dashboard/dashboard2.js.map +1 -0
- package/dist/dashboard/define.d.ts +10 -0
- package/dist/dashboard/define.js +9 -0
- package/dist/dashboard/define.js.map +1 -0
- package/dist/dashboard/index.d.ts +8 -0
- package/dist/dashboard/index.js +6 -0
- package/dist/dashboard/panel/panel.d.ts +88 -0
- package/dist/dashboard/panel/panel.js +5 -0
- package/dist/dashboard/panel/panel.js.map +1 -0
- package/dist/dashboard/panel/panel2.js +110 -0
- package/dist/dashboard/panel/panel2.js.map +1 -0
- package/dist/dashboard/panel-content/panel-content.d.ts +20 -0
- package/dist/dashboard/panel-content/panel-content.js +5 -0
- package/dist/dashboard/panel-content/panel-content.js.map +1 -0
- package/dist/dashboard/panel-content/panel-content2.js +22 -0
- package/dist/dashboard/panel-content/panel-content2.js.map +1 -0
- package/dist/dashboard/panel-footer/panel-footer.d.ts +25 -0
- package/dist/dashboard/panel-footer/panel-footer.js +5 -0
- package/dist/dashboard/panel-footer/panel-footer.js.map +1 -0
- package/dist/dashboard/panel-footer/panel-footer2.js +28 -0
- package/dist/dashboard/panel-footer/panel-footer2.js.map +1 -0
- package/dist/dashboard/panel-header/panel-header.d.ts +27 -0
- package/dist/dashboard/panel-header/panel-header.js +5 -0
- package/dist/dashboard/panel-header/panel-header.js.map +1 -0
- package/dist/dashboard/panel-header/panel-header2.js +28 -0
- package/dist/dashboard/panel-header/panel-header2.js.map +1 -0
- package/dist/dashboard/utils/action.utils.d.ts +17 -0
- package/dist/dashboard/utils/action.utils.js +144 -0
- package/dist/dashboard/utils/action.utils.js.map +1 -0
- package/dist/dashboard/utils/geometry.utils.d.ts +110 -0
- package/dist/dashboard/utils/geometry.utils.js +208 -0
- package/dist/dashboard/utils/geometry.utils.js.map +1 -0
- package/dist/dashboard/utils/intent.types.d.ts +67 -0
- package/dist/dashboard/utils/layout.utils.d.ts +20 -0
- package/dist/dashboard/utils/layout.utils.js +224 -0
- package/dist/dashboard/utils/layout.utils.js.map +1 -0
- package/dist/dashboard/utils/movement.utils.d.ts +7 -0
- package/dist/dashboard/utils/movement.utils.js +15 -0
- package/dist/dashboard/utils/movement.utils.js.map +1 -0
- package/dist/dashboard/utils/mutation.utils.d.ts +2 -0
- package/dist/dashboard/utils/mutation.utils.js +19 -0
- package/dist/dashboard/utils/mutation.utils.js.map +1 -0
- package/dist/dashboard/utils/packing.utils.d.ts +13 -0
- package/dist/dashboard/utils/packing.utils.js +421 -0
- package/dist/dashboard/utils/packing.utils.js.map +1 -0
- package/dist/data.html.json +141 -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/dropdown.examples.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/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/ghost/ghost2.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/grid.js.map +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 +1 -1
- 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/native-fullscreen.controller.d.ts +13 -0
- package/dist/internal/controllers/native-fullscreen.controller.js +73 -0
- package/dist/internal/controllers/native-fullscreen.controller.js.map +1 -0
- package/dist/internal/index.d.ts +1 -0
- package/dist/internal/index.js +59 -57
- package/dist/internal/index.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 +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/dist/workspace/controllers/workspace-composition.controller.d.ts +4 -1
- package/dist/workspace/controllers/workspace-composition.controller.js +69 -39
- package/dist/workspace/controllers/workspace-composition.controller.js.map +1 -1
- package/dist/workspace/controllers/workspace-fullscreen.controller.d.ts +2 -4
- package/dist/workspace/controllers/workspace-fullscreen.controller.js +17 -47
- package/dist/workspace/controllers/workspace-fullscreen.controller.js.map +1 -1
- package/dist/workspace/controllers/workspace-rearrange.controller.js +27 -27
- package/dist/workspace/controllers/workspace-rearrange.controller.js.map +1 -1
- package/dist/workspace/controllers/workspace-restoration.controller.js +2 -2
- package/dist/workspace/controllers/workspace-restoration.controller.js.map +1 -1
- package/dist/workspace/panel/panel2.js +2 -2
- package/dist/workspace/panel/panel2.js.map +1 -1
- package/dist/workspace/panel-content/panel-content2.js +1 -1
- package/dist/workspace/panel-footer/panel-footer2.js +1 -1
- package/dist/workspace/panel-header/panel-header2.js +1 -1
- package/dist/workspace/utils/comparison.utils.d.ts +3 -0
- package/dist/workspace/utils/comparison.utils.js +13 -0
- package/dist/workspace/utils/comparison.utils.js.map +1 -0
- package/dist/workspace/utils/evaluation.utils.d.ts +65 -6
- package/dist/workspace/utils/evaluation.utils.js +334 -99
- package/dist/workspace/utils/evaluation.utils.js.map +1 -1
- package/dist/workspace/utils/geometry/allocation.utils.js +15 -13
- package/dist/workspace/utils/geometry/allocation.utils.js.map +1 -1
- package/dist/workspace/utils/geometry/sizing.utils.d.ts +2 -0
- package/dist/workspace/utils/geometry/sizing.utils.js +37 -17
- package/dist/workspace/utils/geometry/sizing.utils.js.map +1 -1
- package/dist/workspace/utils/interaction/boundary.utils.d.ts +2 -2
- package/dist/workspace/utils/interaction/boundary.utils.js +2 -2
- package/dist/workspace/utils/interaction/boundary.utils.js.map +1 -1
- package/dist/workspace/utils/interaction/drag-preview.utils.d.ts +3 -3
- package/dist/workspace/utils/interaction/drag-preview.utils.js.map +1 -1
- package/dist/workspace/utils/interaction/insertion-offers.utils.d.ts +11 -9
- package/dist/workspace/utils/interaction/insertion-offers.utils.js +37 -43
- package/dist/workspace/utils/interaction/insertion-offers.utils.js.map +1 -1
- package/dist/workspace/utils/interaction/placement-decision.utils.d.ts +6 -1
- package/dist/workspace/utils/interaction/placement-decision.utils.js +94 -87
- package/dist/workspace/utils/interaction/placement-decision.utils.js.map +1 -1
- package/dist/workspace/utils/model/layout.utils.d.ts +2 -1
- package/dist/workspace/utils/model/layout.utils.js +12 -10
- package/dist/workspace/utils/model/layout.utils.js.map +1 -1
- package/dist/workspace/utils/model/membership.utils.d.ts +4 -0
- package/dist/workspace/utils/model/membership.utils.js +13 -4
- package/dist/workspace/utils/model/membership.utils.js.map +1 -1
- package/dist/workspace/utils/model/operations.utils.d.ts +1 -0
- package/dist/workspace/utils/model/operations.utils.js +51 -46
- package/dist/workspace/utils/model/operations.utils.js.map +1 -1
- package/dist/workspace/utils/model/projection.utils.d.ts +4 -2
- package/dist/workspace/utils/model/projection.utils.js +49 -40
- package/dist/workspace/utils/model/projection.utils.js.map +1 -1
- package/dist/workspace/utils/model/value.utils.d.ts +4 -3
- package/dist/workspace/utils/model/value.utils.js +15 -50
- package/dist/workspace/utils/model/value.utils.js.map +1 -1
- package/dist/workspace/utils/placement/acquisition-sizing.utils.d.ts +2 -0
- package/dist/workspace/utils/placement/acquisition-sizing.utils.js +30 -22
- package/dist/workspace/utils/placement/acquisition-sizing.utils.js.map +1 -1
- package/dist/workspace/utils/placement/group-insertion.utils.d.ts +19 -13
- package/dist/workspace/utils/placement/group-insertion.utils.js +50 -47
- package/dist/workspace/utils/placement/group-insertion.utils.js.map +1 -1
- package/dist/workspace/utils/placement/planner.utils.d.ts +13 -2
- package/dist/workspace/utils/placement/planner.utils.js +79 -73
- package/dist/workspace/utils/placement/planner.utils.js.map +1 -1
- package/dist/workspace/utils/placement/preparation.utils.d.ts +5 -2
- package/dist/workspace/utils/placement/preparation.utils.js +45 -41
- package/dist/workspace/utils/placement/preparation.utils.js.map +1 -1
- package/dist/workspace/utils/placement/region.utils.js +32 -32
- package/dist/workspace/utils/placement/region.utils.js.map +1 -1
- package/dist/workspace/utils/placement/scope.utils.d.ts +34 -0
- package/dist/workspace/utils/placement/scope.utils.js +155 -0
- package/dist/workspace/utils/placement/scope.utils.js.map +1 -0
- package/dist/workspace/utils/placement/session.utils.d.ts +11 -0
- package/dist/workspace/utils/placement/session.utils.js +78 -0
- package/dist/workspace/utils/placement/session.utils.js.map +1 -0
- package/dist/workspace/utils/placement/split-sizing.utils.d.ts +2 -2
- package/dist/workspace/utils/placement/split-sizing.utils.js +19 -19
- package/dist/workspace/utils/placement/split-sizing.utils.js.map +1 -1
- package/dist/workspace/utils/presentation/composition.utils.d.ts +1 -1
- package/dist/workspace/utils/presentation/composition.utils.js +4 -2
- package/dist/workspace/utils/presentation/composition.utils.js.map +1 -1
- package/dist/workspace/utils/presentation/groups.utils.d.ts +3 -3
- package/dist/workspace/utils/presentation/groups.utils.js +40 -30
- package/dist/workspace/utils/presentation/groups.utils.js.map +1 -1
- package/dist/workspace/utils/presentation/measurements.utils.d.ts +1 -0
- package/dist/workspace/utils/presentation/measurements.utils.js +6 -14
- package/dist/workspace/utils/presentation/measurements.utils.js.map +1 -1
- package/dist/workspace/utils/presentation/offers.utils.d.ts +1 -1
- package/dist/workspace/utils/presentation/offers.utils.js +3 -3
- package/dist/workspace/utils/presentation/offers.utils.js.map +1 -1
- package/dist/workspace/utils/presentation/preview.utils.d.ts +6 -0
- package/dist/workspace/utils/presentation/preview.utils.js +14 -3
- package/dist/workspace/utils/presentation/preview.utils.js.map +1 -1
- package/dist/workspace/workspace.examples.js.map +1 -1
- package/dist/workspace/workspace.examples.json +4 -4
- package/dist/workspace/workspace.js +1 -1
- package/dist/workspace/workspace.js.map +1 -1
- package/dist/workspace/workspace2.js +206 -212
- package/dist/workspace/workspace2.js.map +1 -1
- package/package.json +16 -4
- package/dist/workspace/utils/placement/context.utils.d.ts +0 -36
- package/dist/workspace/utils/placement/context.utils.js +0 -135
- package/dist/workspace/utils/placement/context.utils.js.map +0 -1
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import e from "../_virtual/_@oxc-project_runtime@0.155.0/helpers/esm/decorate.js";
|
|
2
|
+
import { Ghost as t } from "../ghost/ghost2.js";
|
|
3
|
+
import { getDashboardCanvasSize as n, getDashboardPixelPlacement as r } from "./utils/geometry.utils.js";
|
|
4
|
+
import { createDefaultDashboardLayout as i, parseDashboardValue as a, reconcileDashboard as o, serializeDashboardValue as s } from "./utils/layout.utils.js";
|
|
5
|
+
import { DashboardArrangementController as c } from "./controllers/arrangement.controller.js";
|
|
6
|
+
import { DashboardCommandController as l } from "./controllers/command.controller.js";
|
|
7
|
+
import { DashboardCompositionController as u } from "./controllers/composition.controller.js";
|
|
8
|
+
import { DashboardFullscreenController as d } from "./controllers/fullscreen.controller.js";
|
|
9
|
+
import { DashboardInteractionController as f } from "./controllers/interaction.controller.js";
|
|
10
|
+
import { DashboardMeasurementController as p } from "./controllers/measurement.controller.js";
|
|
11
|
+
import { resolveDashboardTarget as m } from "./utils/movement.utils.js";
|
|
12
|
+
import h from "./dashboard.js";
|
|
13
|
+
import { LitElement as g, html as _, isServer as v } from "lit";
|
|
14
|
+
import { property as y } from "lit/decorators/property.js";
|
|
15
|
+
import { I18nController as b } from "@nvidia-elements/foundations/internal/i18n";
|
|
16
|
+
import { styleMap as x } from "lit/directives/style-map.js";
|
|
17
|
+
import { scopedRegistry as S } from "@nvidia-elements/foundations/internal/decorators";
|
|
18
|
+
import { useStyles as C } from "@nvidia-elements/foundations/internal/styles";
|
|
19
|
+
import { state as w } from "lit/decorators/state.js";
|
|
20
|
+
// src/dashboard/dashboard.ts
|
|
21
|
+
var T = {
|
|
22
|
+
move: "move",
|
|
23
|
+
resize: "resize",
|
|
24
|
+
enterFullscreen: "enter full screen",
|
|
25
|
+
exitFullscreen: "exit full screen",
|
|
26
|
+
placementUnavailable: "placement unavailable",
|
|
27
|
+
gridPlacement: "column {column}, row {row}, column span {columnSpan}, row span {rowSpan}"
|
|
28
|
+
}, E = class extends g {
|
|
29
|
+
constructor(...e) {
|
|
30
|
+
super(...e), this.#e = new b(this, T), this.i18n = this.#e.i18n, this.rearrangeable = !1, this.fullscreenable = !1, this.sizing = "fit", this.guides = "auto", this.#t = {}, this.#i = "", this.#a = !1, this.#o = "pending", this.#s = !0, this.#c = /* @__PURE__ */ new Set(), this.announcement = "", this.#d = new d(this, {
|
|
31
|
+
hasPanel: (e) => this.#f.hasPresentablePanel(e),
|
|
32
|
+
cancelInteractions: () => this.#g.cancel(),
|
|
33
|
+
invalidateCommandAvailability: () => {
|
|
34
|
+
this.#g.cancel(), this.#h.invalidate(), this.requestUpdate();
|
|
35
|
+
}
|
|
36
|
+
}), this.#f = new u(this, {
|
|
37
|
+
getLayout: () => this.#o === "pending" ? void 0 : this.#r,
|
|
38
|
+
getCanonicalLayout: () => this.#v,
|
|
39
|
+
getPreview: () => this.#l,
|
|
40
|
+
getPointerPresentation: () => this.#u,
|
|
41
|
+
getMetrics: () => this.#p.metrics,
|
|
42
|
+
getLabels: () => this.#t,
|
|
43
|
+
isActionAllowed: (e, t) => this.#m.isActionAllowed(e, t),
|
|
44
|
+
fullscreen: this.#d,
|
|
45
|
+
measure: () => this.#p.measure(),
|
|
46
|
+
changed: (e) => {
|
|
47
|
+
e && this.#g.cancel(), this.#h.invalidate(), this.requestUpdate();
|
|
48
|
+
}
|
|
49
|
+
}), this.#p = new p(this, {
|
|
50
|
+
getPanels: () => this.#f.panels,
|
|
51
|
+
getViewport: () => this.#f.viewport,
|
|
52
|
+
getGrid: () => this.#f.pendingPresentation?.layout?.grid ?? this.#y.grid,
|
|
53
|
+
getSizing: () => this.#f.pendingPresentation?.sizing ?? this.sizing,
|
|
54
|
+
pitchChanged: () => this.#g.cancel()
|
|
55
|
+
}), this.#m = new c(this, {
|
|
56
|
+
getPanels: () => this.#f.panels,
|
|
57
|
+
getOwnedPanels: () => this.#f.ownedPanels,
|
|
58
|
+
isReady: () => this.#f.catalogueReady,
|
|
59
|
+
getKnown: () => this.#c,
|
|
60
|
+
getLayout: () => this.#v,
|
|
61
|
+
isFullscreenActive: () => this.#d.active,
|
|
62
|
+
cancel: () => this.#g.cancel(),
|
|
63
|
+
commit: (e) => this.#S(e)
|
|
64
|
+
}), this.#h = new l(this, {
|
|
65
|
+
getPanels: () => this.#f.panels,
|
|
66
|
+
getLayout: () => this.#v,
|
|
67
|
+
findLayoutProposal: (e, t, n) => this.#m.findLayoutProposal(e, t, n),
|
|
68
|
+
canCommit: (e) => this.#m.canCommit(e),
|
|
69
|
+
cancel: () => this.#g.cancel(),
|
|
70
|
+
commit: (e) => this.#S(e),
|
|
71
|
+
fullscreen: this.#d
|
|
72
|
+
}), this.#g = new f(this, {
|
|
73
|
+
getLayout: () => this.#v,
|
|
74
|
+
getArrangementStateKey: () => this.#m.getArrangementStateKey(),
|
|
75
|
+
getMetrics: () => (this.#p.measure(), this.#p.metrics),
|
|
76
|
+
getViewport: () => this.#f.viewport,
|
|
77
|
+
isActionAllowed: (e, t) => this.#m.isActionAllowed(e, t),
|
|
78
|
+
findPointerProposal: (e, t) => this.#m.findLayoutProposal(e, t.id, t.intent),
|
|
79
|
+
getMovementTarget: m,
|
|
80
|
+
findCommandProposal: (e, t, n) => this.#m.findLayoutProposal(e, t, {
|
|
81
|
+
kind: "command",
|
|
82
|
+
...n
|
|
83
|
+
}),
|
|
84
|
+
present: (e, t) => {
|
|
85
|
+
this.#l = e, this.#f.captureCorners(t?.panel), this.#u = t, this.requestUpdate();
|
|
86
|
+
},
|
|
87
|
+
commit: (e) => this.#S(e),
|
|
88
|
+
reveal: (e, t) => {
|
|
89
|
+
this.#f.revealKeyboardControl(e, t);
|
|
90
|
+
},
|
|
91
|
+
announce: (e, t, n) => {
|
|
92
|
+
this.announcement = `${this.#f.getPanelLabel(e)}: ${n ? (this.i18n.gridPlacement ?? T.gridPlacement).replace("{column}", `${t.column + 1}`).replace("{row}", `${t.row + 1}`).replace("{columnSpan}", `${t.columnSpan}`).replace("{rowSpan}", `${t.rowSpan}`) : this.i18n.placementUnavailable ?? T.placementUnavailable}`;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
static {
|
|
97
|
+
this.styles = C([h]);
|
|
98
|
+
}
|
|
99
|
+
static {
|
|
100
|
+
this.metadata = {
|
|
101
|
+
tag: "nve-dashboard",
|
|
102
|
+
version: "2.24.0",
|
|
103
|
+
children: ["nve-dashboard-panel"]
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
static {
|
|
107
|
+
this.elementDefinitions = { [t.metadata.tag]: t };
|
|
108
|
+
}
|
|
109
|
+
#e;
|
|
110
|
+
get autoSettle() {
|
|
111
|
+
return this.#a;
|
|
112
|
+
}
|
|
113
|
+
set autoSettle(e) {
|
|
114
|
+
let t = this.#a;
|
|
115
|
+
if (t !== e) {
|
|
116
|
+
if (!v && this.isConnected && this.#f.catalogueReady && this.#r && !o(this.#r, this.#f.ownedPanels.map((e) => e._getSpanConstraints()), {
|
|
117
|
+
autoSettle: e,
|
|
118
|
+
hidden: this.#f.hiddenPanelIds
|
|
119
|
+
})) throw RangeError("Dashboard arrangement conflicts with panel constraints");
|
|
120
|
+
this.#g.cancel(), this.#a = e, this.value = this.#i, this.#h.invalidate(), this.requestUpdate("autoSettle", t);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
get value() {
|
|
124
|
+
return this.#i;
|
|
125
|
+
}
|
|
126
|
+
set value(e) {
|
|
127
|
+
let t = a(e), n = t && !v && this.isConnected && this.#f.catalogueReady ? o(t, this.#f.ownedPanels.map((e) => e._getSpanConstraints()), {
|
|
128
|
+
autoSettle: this.autoSettle,
|
|
129
|
+
hidden: this.#f.hiddenPanelIds
|
|
130
|
+
}) : t;
|
|
131
|
+
if (t && !n) throw RangeError("Dashboard arrangement conflicts with panel constraints");
|
|
132
|
+
this.#g.cancel();
|
|
133
|
+
let r = this.#i;
|
|
134
|
+
this.#x(n), this.#o = "pending", this.#s = !0, this.requestUpdate("value", r);
|
|
135
|
+
}
|
|
136
|
+
get flow() {
|
|
137
|
+
return this.#r?.grid.flow ?? "vertical";
|
|
138
|
+
}
|
|
139
|
+
set flow(e) {
|
|
140
|
+
if (e !== "vertical" && e !== "horizontal") throw TypeError("Invalid dashboard flow");
|
|
141
|
+
this.flow !== e && this.#b({
|
|
142
|
+
...this.#y.grid,
|
|
143
|
+
flow: e
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
get tracks() {
|
|
147
|
+
return this.#r?.grid.tracks ?? 12;
|
|
148
|
+
}
|
|
149
|
+
set tracks(e) {
|
|
150
|
+
if (!Number.isSafeInteger(e) || e < 1 || e > 1e6) throw TypeError("Invalid dashboard tracks");
|
|
151
|
+
this.tracks !== e && this.#b({
|
|
152
|
+
...this.#y.grid,
|
|
153
|
+
tracks: e
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
#t;
|
|
157
|
+
#n;
|
|
158
|
+
#r;
|
|
159
|
+
#i;
|
|
160
|
+
#a;
|
|
161
|
+
#o;
|
|
162
|
+
#s;
|
|
163
|
+
#c;
|
|
164
|
+
#l;
|
|
165
|
+
#u;
|
|
166
|
+
#d;
|
|
167
|
+
#f;
|
|
168
|
+
#p;
|
|
169
|
+
#m;
|
|
170
|
+
#h;
|
|
171
|
+
#g;
|
|
172
|
+
firstUpdated() {
|
|
173
|
+
v || (this.#p.observe(), this.#p.measure());
|
|
174
|
+
}
|
|
175
|
+
willUpdate(e) {
|
|
176
|
+
(e.has("sizing") || e.has("rearrangeable")) && this.#g.cancel(), (e.has("rearrangeable") || e.has("fullscreenable")) && this.#h.invalidate(), !v && this.#_();
|
|
177
|
+
}
|
|
178
|
+
#_() {
|
|
179
|
+
if (this.#o = "pending", !this.isConnected || !this.#f.catalogueReady) return;
|
|
180
|
+
let e = this.#f.panels, t = this.#f.ownedPanels.map((e) => e._getSpanConstraints()), n = o(this.#y, t, {
|
|
181
|
+
priority: this.#s ? void 0 : this.#c,
|
|
182
|
+
autoSettle: this.autoSettle,
|
|
183
|
+
hidden: this.#f.hiddenPanelIds
|
|
184
|
+
});
|
|
185
|
+
if (!n) return;
|
|
186
|
+
let r = this.#i;
|
|
187
|
+
this.#x(n), this.#o = !this.#s && r !== this.#i ? "changed" : "unchanged", this.#c = new Set(e.map((e) => e.id)), this.#s = !1;
|
|
188
|
+
}
|
|
189
|
+
updated() {
|
|
190
|
+
v || (this.#p.observePanels(), this.#p.measure(), this.#o !== "pending" && this.#w(), this.#f.present(), this.#o === "changed" && (this.#o = "unchanged", this.#C()), this.#h.flush());
|
|
191
|
+
}
|
|
192
|
+
place(e, t) {
|
|
193
|
+
return this.#m.place(e, t);
|
|
194
|
+
}
|
|
195
|
+
isCommandAvailable(e, t = {}) {
|
|
196
|
+
return this.#h.isCommandAvailable(e, t);
|
|
197
|
+
}
|
|
198
|
+
get #v() {
|
|
199
|
+
if (this.#f.catalogueReady) return o(this.#y, this.#f.ownedPanels.map((e) => e._getSpanConstraints()), {
|
|
200
|
+
priority: this.#c,
|
|
201
|
+
autoSettle: this.autoSettle,
|
|
202
|
+
hidden: this.#f.hiddenPanelIds
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
get #y() {
|
|
206
|
+
return this.#r ?? i();
|
|
207
|
+
}
|
|
208
|
+
#b(e) {
|
|
209
|
+
let t = this.#i, n = {
|
|
210
|
+
version: 1,
|
|
211
|
+
grid: e,
|
|
212
|
+
items: this.#y.items.map((t) => ({
|
|
213
|
+
...t,
|
|
214
|
+
column: e.flow === "vertical" ? Math.min(t.column, Math.max(0, e.tracks - t.columnSpan)) : t.column,
|
|
215
|
+
row: e.flow === "horizontal" ? Math.min(t.row, Math.max(0, e.tracks - t.rowSpan)) : t.row,
|
|
216
|
+
columnSpan: e.flow === "vertical" ? Math.min(t.columnSpan, e.tracks) : t.columnSpan,
|
|
217
|
+
rowSpan: e.flow === "horizontal" ? Math.min(t.rowSpan, e.tracks) : t.rowSpan
|
|
218
|
+
}))
|
|
219
|
+
}, r = this.isConnected && this.#f.catalogueReady ? o(n, this.#f.ownedPanels.map((e) => e._getSpanConstraints()), {
|
|
220
|
+
autoSettle: this.autoSettle,
|
|
221
|
+
hidden: this.#f.hiddenPanelIds
|
|
222
|
+
}) : n;
|
|
223
|
+
if (!r) throw RangeError("Dashboard grid conflicts with panel constraints");
|
|
224
|
+
this.#g.cancel(), this.#x(r), this.#o = "pending", this.#s = !0, this.requestUpdate("value", t);
|
|
225
|
+
}
|
|
226
|
+
#x(e) {
|
|
227
|
+
let t = s(e);
|
|
228
|
+
t !== this.#i && this.#h.invalidate(), this.#r = e, this.#i = t;
|
|
229
|
+
}
|
|
230
|
+
#S(e) {
|
|
231
|
+
return this.#m.canCommit(e) ? (this.#x(e), this.#c = new Set(this.#f.panels.map((e) => e.id)), this.#s = !1, this.#o = "unchanged", this.#C(), this.requestUpdate(), !0) : !1;
|
|
232
|
+
}
|
|
233
|
+
#C() {
|
|
234
|
+
this.#h.invalidate(), this.dispatchEvent(new Event("change", {
|
|
235
|
+
bubbles: !0,
|
|
236
|
+
composed: !0
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
239
|
+
#w() {
|
|
240
|
+
this.#n !== this.i18n && (this.#n = this.i18n, this.#t = {
|
|
241
|
+
move: this.i18n.move ?? T.move,
|
|
242
|
+
resize: this.i18n.resize ?? T.resize,
|
|
243
|
+
enterFullscreen: this.i18n.enterFullscreen ?? T.enterFullscreen,
|
|
244
|
+
exitFullscreen: this.i18n.exitFullscreen ?? T.exitFullscreen
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
#T(e) {
|
|
248
|
+
if (this.#d.active) return {
|
|
249
|
+
width: "100%",
|
|
250
|
+
height: "100%"
|
|
251
|
+
};
|
|
252
|
+
let { width: t, height: n, grid: r, sizing: i } = e;
|
|
253
|
+
if (r.flow === "vertical") return {
|
|
254
|
+
width: i === "fit" ? "100%" : "calc(var(--_tracks) * (var(--column-size) + var(--_geometry-spacing)) - var(--_geometry-spacing))",
|
|
255
|
+
height: `${n}px`,
|
|
256
|
+
"--_tracks": `${r.tracks}`
|
|
257
|
+
};
|
|
258
|
+
let a = i === "fit" ? "100%" : "calc(var(--_tracks) * (var(--row-size) + var(--_geometry-spacing)) - var(--_geometry-spacing))";
|
|
259
|
+
return {
|
|
260
|
+
width: `${t}px`,
|
|
261
|
+
height: a,
|
|
262
|
+
"--_tracks": `${r.tracks}`
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
#E(e) {
|
|
266
|
+
let t = this.#u?.preview && (this.#u.rejected ? this.#u.initialPlacement : e.find((e) => e.id === this.#u?.panel.id));
|
|
267
|
+
return t && this.#p.metrics ? r(t, this.#p.metrics) : void 0;
|
|
268
|
+
}
|
|
269
|
+
get #D() {
|
|
270
|
+
let e = this.#f.viewport;
|
|
271
|
+
if (this.#u?.canvasPlacement && e) return {
|
|
272
|
+
width: Math.abs(e.scrollLeft) + e.clientWidth,
|
|
273
|
+
height: e.scrollTop + e.clientHeight
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
#O() {
|
|
277
|
+
let e = this.#f.pendingPresentation, t = v ? [] : this.#f.panels;
|
|
278
|
+
if (e) return {
|
|
279
|
+
layout: e.layout ?? this.#y,
|
|
280
|
+
metrics: this.#p.metrics ?? e.metrics,
|
|
281
|
+
items: t.flatMap((t) => {
|
|
282
|
+
let n = e.panels.get(t);
|
|
283
|
+
return n ? [n] : [];
|
|
284
|
+
}),
|
|
285
|
+
sizing: e.sizing,
|
|
286
|
+
presented: !0
|
|
287
|
+
};
|
|
288
|
+
let n = this.#l ?? this.#r ?? this.#y, r = new Set(t.map((e) => e.id));
|
|
289
|
+
return {
|
|
290
|
+
layout: n,
|
|
291
|
+
metrics: this.#p.metrics,
|
|
292
|
+
items: n.items.filter((e) => r.has(e.id)),
|
|
293
|
+
sizing: this.sizing,
|
|
294
|
+
presented: !1
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
#k() {
|
|
298
|
+
let { layout: e, metrics: t, items: r, sizing: i, presented: a } = this.#O();
|
|
299
|
+
return {
|
|
300
|
+
...t ? n({
|
|
301
|
+
layout: e,
|
|
302
|
+
metrics: t,
|
|
303
|
+
sizing: i,
|
|
304
|
+
items: r,
|
|
305
|
+
floor: this.#D
|
|
306
|
+
}) : {
|
|
307
|
+
width: 0,
|
|
308
|
+
height: 0
|
|
309
|
+
},
|
|
310
|
+
grid: e.grid,
|
|
311
|
+
sizing: i,
|
|
312
|
+
presented: a,
|
|
313
|
+
preview: this.#E(r)
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
#A() {
|
|
317
|
+
return this.#u?.preview && this.#u.start && !this.#u.rejected ? _`<div class="start-cue" aria-hidden="true" inert></div>` : null;
|
|
318
|
+
}
|
|
319
|
+
#j(e) {
|
|
320
|
+
return e ? _`<nve-ghost part="ghost" style="${x({
|
|
321
|
+
"--_dashboard-inline-start": `${e.inlineStart}px`,
|
|
322
|
+
top: `${e.top}px`,
|
|
323
|
+
width: `${e.width}px`,
|
|
324
|
+
height: `${e.height}px`,
|
|
325
|
+
...this.#f.ghostCorners
|
|
326
|
+
})}"></nve-ghost>` : null;
|
|
327
|
+
}
|
|
328
|
+
render() {
|
|
329
|
+
let e = this.#k(), { preview: t, grid: n, sizing: r } = e;
|
|
330
|
+
return _`<div internal-host><div class="viewport" data-flow="${n.flow}" data-sizing="${r}" ?data-fullscreen="${this.#d.active}"><div class="canvas" ?hidden="${!v && this.#s && !e.presented}" ?data-arranging="${!!this.#u?.preview}" style="${x(this.#T(e))}"><slot @slotchange="${() => this.requestUpdate()}"></slot>${this.#A()} ${this.#j(t)}</div></div><div class="metric" aria-hidden="true"></div><div class="gap-metric" aria-hidden="true"></div><div class="announcement" role="status" aria-live="polite" aria-atomic="true">${this.announcement}</div></div>`;
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
e([y({
|
|
334
|
+
type: Object,
|
|
335
|
+
attribute: !1
|
|
336
|
+
})], E.prototype, "i18n", void 0), e([y({
|
|
337
|
+
type: Boolean,
|
|
338
|
+
reflect: !0
|
|
339
|
+
})], E.prototype, "rearrangeable", void 0), e([y({
|
|
340
|
+
type: Boolean,
|
|
341
|
+
reflect: !0
|
|
342
|
+
})], E.prototype, "fullscreenable", void 0), e([y({ reflect: !0 })], E.prototype, "container", void 0), e([y({ reflect: !0 })], E.prototype, "sizing", void 0), e([y({
|
|
343
|
+
type: String,
|
|
344
|
+
reflect: !0
|
|
345
|
+
})], E.prototype, "guides", void 0), e([y({
|
|
346
|
+
type: Boolean,
|
|
347
|
+
reflect: !0,
|
|
348
|
+
attribute: "autosettle"
|
|
349
|
+
})], E.prototype, "autoSettle", null), e([y({ type: String })], E.prototype, "value", null), e([y({ type: String })], E.prototype, "flow", null), e([y({ type: Number })], E.prototype, "tracks", null), e([w()], E.prototype, "announcement", void 0), E = e([S()], E);
|
|
350
|
+
export { E as Dashboard };
|
|
351
|
+
|
|
352
|
+
//# sourceMappingURL=dashboard2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard2.js","names":["styles","_decorate","__decorate","dashboard_default","i18nDefaults","Dashboard","LitElement","_args","#i18nController","I18nController","#labels","#value","#autoSettle","#reconciliation","#restoring","#known","#fullscreen","DashboardFullscreenController","#composition","id","#interaction","#commands","DashboardCompositionController","#layout","#canonicalLayout","#preview","#pointerPresentation","#measurement","#arrangement","panel","action","catalogue","DashboardMeasurementController","#current","DashboardArrangementController","#commit","layout","DashboardCommandController","request","DashboardInteractionController","resolveDashboardTarget","presentation","control","valid","placement","useStyles","Ghost","previous","value","isServer","reconcileDashboard","parsed","parseDashboardValue","old","#setLayout","#configureGrid","changed","#reconcilePanels","panels","constraints","next","#updateLabels","#emitChange","command","context","createDefaultDashboardLayout","proposed","item","grid","serializeDashboardValue","#labelsSource","geometry","sizing","height","boundedHeight","width","source","items","getDashboardPixelPlacement","#canvasFloor","viewport","available","#getPresentationModel","metrics","getDashboardCanvasSize","#getGhostPixelPlacement","preview","styleMap","#getRenderGeometry","#getCanvasStyle","#renderStartCue","#renderGhost","property","state","scopedRegistry"],"sources":["../../src/dashboard/dashboard.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { html, isServer, LitElement, type PropertyValues } from 'lit';\nimport { property } from 'lit/decorators/property.js';\nimport { state } from 'lit/decorators/state.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { scopedRegistry } from '@nvidia-elements/foundations/internal/decorators';\nimport { I18nController, type I18nDefaults } from '@nvidia-elements/foundations/internal/i18n';\nimport { useStyles } from '@nvidia-elements/foundations/internal/styles';\n\nimport { Ghost } from '@nvidia-elements/core/ghost';\n\nimport { DashboardArrangementController } from './controllers/arrangement.controller.js';\nimport { DashboardCommandController } from './controllers/command.controller.js';\nimport { DashboardCompositionController } from './controllers/composition.controller.js';\nimport { DashboardFullscreenController } from './controllers/fullscreen.controller.js';\nimport { DashboardInteractionController } from './controllers/interaction.controller.js';\nimport { DashboardMeasurementController } from './controllers/measurement.controller.js';\nimport { getDashboardCanvasSize, getDashboardPixelPlacement } from './utils/geometry.utils.js';\nimport {\n createDefaultDashboardLayout,\n parseDashboardValue,\n reconcileDashboard,\n serializeDashboardValue\n} from './utils/layout.utils.js';\nimport { resolveDashboardTarget } from './utils/movement.utils.js';\n\nimport type { DashboardPointerPresentation } from './controllers/interaction.controller.js';\nimport type { DashboardPixelPlacement } from './utils/geometry.utils.js';\n\nimport type { DashboardCommandContext, DashboardGridPlacement, DashboardLayout } from './dashboard.types.js';\n\nimport styles from './dashboard.css?inline';\n\nconst i18nDefaults = {\n move: 'move',\n resize: 'resize',\n enterFullscreen: 'enter full screen',\n exitFullscreen: 'exit full screen',\n placementUnavailable: 'placement unavailable',\n gridPlacement: 'column {column}, row {row}, column span {columnSpan}, row span {rowSpan}'\n} satisfies I18nDefaults;\n\n/**\n * @element nve-dashboard\n * @description A dashboard arranges application panels on a resizable grid with a restorable layout.\n * @documentation https://nvidia.github.io/elements/docs/elements/dashboard/\n * @since 0.0.0\n * @stable false\n * @entrypoint \\@nvidia-elements/core/dashboard\n * @command --enter-fullscreen - Present the invoking panel in native fullscreen.\n * @command --exit-fullscreen - Exit native fullscreen.\n * @command --toggle-fullscreen - Toggle native fullscreen for the invoking panel.\n * @command --place - Apply the invoking control's integer grid placement without pointer target snapping. Target a panel directly or identify it with value when targeting the dashboard. Anchored span changes require resizing; other position changes require movement.\n * @command --move-left - Move left through the same contact-aware movement step as a movement-handle arrow key. Target a panel directly or identify it with value on an invoker targeting the dashboard.\n * @command --move-right - Move right through the same contact-aware movement step as a movement-handle arrow key. Target a panel directly or identify it with value on an invoker targeting the dashboard.\n * @command --move-up - Move up through the same contact-aware movement step as a movement-handle arrow key. Target a panel directly or identify it with value on an invoker targeting the dashboard.\n * @command --move-down - Move down through the same contact-aware movement step as a movement-handle arrow key. Target a panel directly or identify it with value on an invoker targeting the dashboard.\n * @command --move-to-start - Place at the growth-axis start, using available space before making room. Keep the bounded-axis coordinate unless placement supplies another. Uses the same operation as Home on the movement grip.\n * @command --increase-width - Increase width by one cell, subject to panel constraints. Target a panel directly or identify it with value on an invoker targeting the dashboard.\n * @command --decrease-width - Decrease width by one cell, subject to panel constraints. Target a panel directly or identify it with value on an invoker targeting the dashboard.\n * @command --increase-height - Increase height by one cell, subject to panel constraints. Target a panel directly or identify it with value on an invoker targeting the dashboard.\n * @command --decrease-height - Decrease height by one cell, subject to panel constraints. Target a panel directly or identify it with value on an invoker targeting the dashboard.\n * @slot - Direct dashboard panels with unique durable IDs, required headers, and application dropdown groups. DOM order remains application authored. Native reading order follows committed placement where supported; previews preserve that order.\n * @event change - Announces one committed arrangement after interaction, commands, or panel membership and span-constraint reconciliation. Read value on the dashboard; authored content events still bubble normally.\n * @event {Event} commandavailabilitychange - Arrangement or fullscreen command availability may have changed.\n * @cssprop --column-size - Single-cell outer column length in fixed sizing or horizontal flow. Defaults to 160px.\n * @cssprop --row-size - Single-cell outer row length in fixed sizing or vertical flow. Defaults to 120px.\n * @cssprop --gap - Nonnegative CSS length between cells. Include units, including 0px for no gap. At zero, uniform used border widths overlap; unequal widths keep independent geometry. Shared seams assume square panels with solid opaque borders.\n * @cssprop --guide-color - Color of the circular cell-center guides. Defaults to the muted border color.\n * @cssprop --guide-size - Nonnegative CSS length for the guide circle diameter. Defaults to 8px. Include units, including 0px to hide the circles.\n * @cssprop --height - Default viewport height. Defaults to 400px; horizontal fit needs a definite height.\n * @cssprop --animation-duration - Duration of panel geometry, destination ghost geometry, and arrangement control transitions. Defaults to 150ms; reduced motion uses 0ms. Panel geometry follows external container resizing immediately; explicit arrangement and sizing changes use transitions. Animation never delays logical placement commits.\n * @cssprop --animation-easing - Easing of panel and destination ghost geometry transitions.\n * @csspart ghost - Inert placement preview shown during pointer arrangement.\n */\n@scopedRegistry()\nexport class Dashboard extends LitElement {\n static styles = useStyles([styles]);\n static readonly metadata = {\n tag: 'nve-dashboard',\n version: '0.0.0',\n children: ['nve-dashboard-panel']\n };\n static elementDefinitions = { [Ghost.metadata.tag]: Ghost };\n readonly #i18nController: I18nController<this> = new I18nController<this>(this, i18nDefaults);\n\n /** Localized labels and placement announcements. Grid placement placeholders are column, row, columnSpan, and rowSpan. */\n @property({ type: Object, attribute: false }) i18n = this.#i18nController.i18n;\n\n /** Enables moving and resizing panels through controls and placement commands. */\n @property({ type: Boolean, reflect: true }) rearrangeable = false;\n\n /** Enables native fullscreen commands and a header control for each panel. Turning this off preserves an accepted session and its exit control. Fullscreen does not change the saved arrangement. */\n @property({ type: Boolean, reflect: true }) fullscreenable = false;\n\n /** Selects panel content framing. */\n @property({ reflect: true }) container?: 'inset' | 'flat' | 'full';\n\n /** Cell sizing, defaulting to fit. Fit sizing fits bounded tracks to the viewport and scrolls along the growth axis. Fixed sizing uses the configured --column-size and --row-size dimensions and may scroll on both axes. Does not change value. */\n @property({ reflect: true }) sizing: 'fit' | 'fixed' = 'fit';\n\n /** Guide visibility: auto shows circular cell-center guides during pointer arrangement, visible always shows them, and hidden hides them while keeping the destination preview. Attribute keywords ignore case; missing, empty, or unrecognized values use auto. Does not change value or interaction permissions. */\n @property({ type: String, reflect: true }) guides: 'auto' | 'visible' | 'hidden' = 'auto';\n\n /** Closes growth-axis gaps toward top in vertical flow or inline start in horizontal flow, preserving bounded-axis positions and spans. Defaults to false. Enabling silently canonicalizes the current arrangement; disabling keeps current coordinates. This policy is independent of value. */\n @property({ type: Boolean, reflect: true, attribute: 'autosettle' })\n get autoSettle(): boolean {\n return this.#autoSettle;\n }\n\n set autoSettle(value: boolean) {\n const previous = this.#autoSettle;\n if (previous === value) return;\n if (\n !isServer &&\n this.isConnected &&\n this.#composition.catalogueReady &&\n this.#layout &&\n !reconcileDashboard(\n this.#layout,\n this.#composition.ownedPanels.map(panel => panel._getSpanConstraints()),\n { autoSettle: value, hidden: this.#composition.hiddenPanelIds }\n )\n ) {\n throw new RangeError('Dashboard arrangement conflicts with panel constraints');\n }\n\n this.#interaction.cancel();\n this.#autoSettle = value;\n this.value = this.#value;\n this.#commands.invalidate();\n this.requestUpdate('autoSettle', previous);\n }\n\n /** Version 1 JSON with grid {flow, tracks} and items {id, column, row, columnSpan, rowSpan}. Positions are zero-based cells from inline start and top; column zero is at the right in RTL. Spans count columns and rows. Defaults to an empty string, which seeds one-cell panels in DOM order. Assignment validates the saved model immediately and normalizes panels once their upgrades and unique nonempty IDs are ready; restoration is silent. Intentional gaps remain when autoSettle is false. After successful reconciliation, only direct default-slot panel children remain in the value, including hidden children. Removed panels lose their placement. Applications own content data, persistence, and any saved placement history. */\n @property({ type: String })\n get value(): string {\n return this.#value;\n }\n\n set value(value: string) {\n const parsed = parseDashboardValue(value);\n const layout =\n parsed && !isServer && this.isConnected && this.#composition.catalogueReady\n ? reconcileDashboard(\n parsed,\n this.#composition.ownedPanels.map(panel => panel._getSpanConstraints()),\n { autoSettle: this.autoSettle, hidden: this.#composition.hiddenPanelIds }\n )\n : parsed;\n if (parsed && !layout) throw new RangeError('Dashboard arrangement conflicts with panel constraints');\n\n this.#interaction.cancel();\n\n const old = this.#value;\n\n this.#setLayout(layout);\n this.#reconciliation = 'pending';\n this.#restoring = true;\n this.requestUpdate('value', old);\n }\n\n /** Growth direction, defaulting to vertical with bounded columns. Horizontal flow bounds rows. Changing flow does not transpose panel coordinates or spans. Assignment updates the arrangement silently; changes that conflict with panel constraints throw before changing the arrangement. */\n @property({ type: String })\n get flow(): 'vertical' | 'horizontal' {\n return this.#layout?.grid.flow ?? 'vertical';\n }\n\n set flow(value: 'vertical' | 'horizontal') {\n if (value !== 'vertical' && value !== 'horizontal') throw new TypeError('Invalid dashboard flow');\n\n if (this.flow !== value) {\n this.#configureGrid({ ...this.#current.grid, flow: value });\n }\n }\n\n /** Bounded-axis track count, defaulting to 12. Valid integers range from 1 through 1000000. Assignment updates the arrangement silently and rejects changes that conflict with panel constraints. */\n @property({ type: Number })\n get tracks(): number {\n return this.#layout?.grid.tracks ?? 12;\n }\n\n set tracks(value: number) {\n if (!Number.isSafeInteger(value) || value < 1 || value > 1_000_000) {\n throw new TypeError('Invalid dashboard tracks');\n }\n\n if (this.tracks !== value) {\n this.#configureGrid({ ...this.#current.grid, tracks: value });\n }\n }\n\n #labels: Readonly<Record<string, string>> = {};\n #labelsSource?: typeof this.i18n;\n #layout?: DashboardLayout;\n #value = '';\n #autoSettle = false;\n #reconciliation: 'pending' | 'unchanged' | 'changed' = 'pending';\n #restoring = true;\n #known = new Set<string>();\n #preview?: DashboardLayout;\n #pointerPresentation?: DashboardPointerPresentation;\n @state() private announcement = '';\n\n readonly #fullscreen: DashboardFullscreenController = new DashboardFullscreenController(this, {\n hasPanel: id => this.#composition.hasPresentablePanel(id),\n cancelInteractions: () => this.#interaction.cancel(),\n invalidateCommandAvailability: () => {\n this.#interaction.cancel();\n this.#commands.invalidate();\n this.requestUpdate();\n }\n });\n\n readonly #composition: DashboardCompositionController = new DashboardCompositionController(this, {\n getLayout: () => (this.#reconciliation === 'pending' ? undefined : this.#layout),\n getCanonicalLayout: () => this.#canonicalLayout,\n getPreview: () => this.#preview,\n getPointerPresentation: () => this.#pointerPresentation,\n getMetrics: () => this.#measurement.metrics,\n getLabels: () => this.#labels,\n isActionAllowed: (panel, action) => this.#arrangement.isActionAllowed(panel, action),\n fullscreen: this.#fullscreen,\n measure: () => this.#measurement.measure(),\n changed: catalogue => {\n if (catalogue) {\n this.#interaction.cancel();\n }\n\n this.#commands.invalidate();\n this.requestUpdate();\n }\n });\n readonly #measurement: DashboardMeasurementController = new DashboardMeasurementController(this, {\n getPanels: () => this.#composition.panels,\n getViewport: () => this.#composition.viewport,\n getGrid: () => this.#composition.pendingPresentation?.layout?.grid ?? this.#current.grid,\n getSizing: () => this.#composition.pendingPresentation?.sizing ?? this.sizing,\n pitchChanged: () => this.#interaction.cancel()\n });\n readonly #arrangement: DashboardArrangementController = new DashboardArrangementController(this, {\n getPanels: () => this.#composition.panels,\n getOwnedPanels: () => this.#composition.ownedPanels,\n isReady: () => this.#composition.catalogueReady,\n getKnown: () => this.#known,\n getLayout: () => this.#canonicalLayout,\n isFullscreenActive: () => this.#fullscreen.active,\n cancel: () => this.#interaction.cancel(),\n commit: layout => this.#commit(layout)\n });\n readonly #commands: DashboardCommandController = new DashboardCommandController(this, {\n getPanels: () => this.#composition.panels,\n getLayout: () => this.#canonicalLayout,\n findLayoutProposal: (layout, id, request) => this.#arrangement.findLayoutProposal(layout, id, request),\n canCommit: layout => this.#arrangement.canCommit(layout),\n cancel: () => this.#interaction.cancel(),\n commit: layout => this.#commit(layout),\n fullscreen: this.#fullscreen\n });\n\n readonly #interaction: DashboardInteractionController = new DashboardInteractionController(this, {\n getLayout: () => this.#canonicalLayout,\n getArrangementStateKey: () => this.#arrangement.getArrangementStateKey(),\n getMetrics: () => {\n this.#measurement.measure();\n return this.#measurement.metrics;\n },\n getViewport: () => this.#composition.viewport,\n isActionAllowed: (panel, action) => this.#arrangement.isActionAllowed(panel, action),\n findPointerProposal: (layout, request) => this.#arrangement.findLayoutProposal(layout, request.id, request.intent),\n getMovementTarget: resolveDashboardTarget,\n findCommandProposal: (layout, id, request) =>\n this.#arrangement.findLayoutProposal(layout, id, { kind: 'command', ...request }),\n present: (layout, presentation) => {\n this.#preview = layout;\n this.#composition.captureCorners(presentation?.panel);\n this.#pointerPresentation = presentation;\n this.requestUpdate();\n },\n commit: layout => this.#commit(layout),\n reveal: (layout, control) => {\n void this.#composition.revealKeyboardControl(layout, control);\n },\n announce: (id, placement, valid) => {\n this.announcement = `${this.#composition.getPanelLabel(id)}: ${\n valid\n ? (this.i18n.gridPlacement ?? i18nDefaults.gridPlacement)\n .replace('{column}', `${placement.column + 1}`)\n .replace('{row}', `${placement.row + 1}`)\n .replace('{columnSpan}', `${placement.columnSpan}`)\n .replace('{rowSpan}', `${placement.rowSpan}`)\n : (this.i18n.placementUnavailable ?? i18nDefaults.placementUnavailable)\n }`;\n }\n });\n\n protected firstUpdated() {\n if (isServer) return;\n\n this.#measurement.observe();\n this.#measurement.measure();\n }\n\n protected willUpdate(changed: PropertyValues<this>) {\n if (changed.has('sizing') || changed.has('rearrangeable')) {\n this.#interaction.cancel();\n }\n\n if (changed.has('rearrangeable') || changed.has('fullscreenable')) {\n this.#commands.invalidate();\n }\n\n if (isServer) return;\n\n this.#reconcilePanels();\n }\n\n #reconcilePanels() {\n this.#reconciliation = 'pending';\n if (!this.isConnected || !this.#composition.catalogueReady) return;\n\n const panels = this.#composition.panels;\n const constraints = this.#composition.ownedPanels.map(panel => panel._getSpanConstraints());\n const next = reconcileDashboard(this.#current, constraints, {\n priority: this.#restoring ? undefined : this.#known,\n autoSettle: this.autoSettle,\n hidden: this.#composition.hiddenPanelIds\n });\n if (!next) return;\n\n const previous = this.#value;\n\n this.#setLayout(next);\n this.#reconciliation = !this.#restoring && previous !== this.#value ? 'changed' : 'unchanged';\n this.#known = new Set(panels.map(panel => panel.id));\n this.#restoring = false;\n }\n\n protected updated() {\n if (isServer) return;\n\n this.#measurement.observePanels();\n this.#measurement.measure();\n\n if (this.#reconciliation !== 'pending') {\n this.#updateLabels();\n }\n\n this.#composition.present();\n\n if (this.#reconciliation === 'changed') {\n this.#reconciliation = 'unchanged';\n this.#emitChange();\n }\n\n this.#commands.flush();\n }\n\n /** Requests an integer placement without gesture target snapping. Anchored span changes use resizing permission, including left and top edges that change the origin; other position changes require movement. Directional collisions and optional growth-axis settling determine the final arrangement. Returns false for unavailable, invalid, or unchanged normalized placement. Successful placement emits one change. */\n place(id: string, placement: DashboardGridPlacement): boolean {\n return this.#arrangement.place(id, placement);\n }\n\n /** Queries arrangement and fullscreen commands using a panel ID. A placement supplies the full grid placement for --place, or the desired bounded-axis coordinate for --move-to-start. Availability compares the complete normalized proposal with the current arrangement. Directional movement derives from grid placement and panel permissions without requiring rendered controls. Native fullscreen admission remains subject to browser permission. */\n isCommandAvailable(command: string, context: DashboardCommandContext = {}): boolean {\n return this.#commands.isCommandAvailable(command, context);\n }\n\n get #canonicalLayout() {\n if (!this.#composition.catalogueReady) return undefined;\n\n return reconcileDashboard(\n this.#current,\n this.#composition.ownedPanels.map(panel => panel._getSpanConstraints()),\n { priority: this.#known, autoSettle: this.autoSettle, hidden: this.#composition.hiddenPanelIds }\n );\n }\n\n get #current() {\n return this.#layout ?? createDefaultDashboardLayout();\n }\n\n #configureGrid(grid: DashboardLayout['grid']) {\n const old = this.#value;\n const items = this.#current.items.map(item => ({\n ...item,\n column:\n grid.flow === 'vertical' ? Math.min(item.column, Math.max(0, grid.tracks - item.columnSpan)) : item.column,\n row: grid.flow === 'horizontal' ? Math.min(item.row, Math.max(0, grid.tracks - item.rowSpan)) : item.row,\n columnSpan: grid.flow === 'vertical' ? Math.min(item.columnSpan, grid.tracks) : item.columnSpan,\n rowSpan: grid.flow === 'horizontal' ? Math.min(item.rowSpan, grid.tracks) : item.rowSpan\n }));\n const proposed: DashboardLayout = { version: 1, grid, items };\n const next =\n this.isConnected && this.#composition.catalogueReady\n ? reconcileDashboard(\n proposed,\n this.#composition.ownedPanels.map(panel => panel._getSpanConstraints()),\n { autoSettle: this.autoSettle, hidden: this.#composition.hiddenPanelIds }\n )\n : proposed;\n if (!next) throw new RangeError('Dashboard grid conflicts with panel constraints');\n\n this.#interaction.cancel();\n this.#setLayout(next);\n this.#reconciliation = 'pending';\n this.#restoring = true;\n this.requestUpdate('value', old);\n }\n\n #setLayout(layout: DashboardLayout | undefined) {\n const value = serializeDashboardValue(layout);\n\n if (value !== this.#value) {\n this.#commands.invalidate();\n }\n\n this.#layout = layout;\n this.#value = value;\n }\n\n #commit(layout: DashboardLayout): boolean {\n if (!this.#arrangement.canCommit(layout)) return false;\n\n this.#setLayout(layout);\n this.#known = new Set(this.#composition.panels.map(panel => panel.id));\n this.#restoring = false;\n this.#reconciliation = 'unchanged';\n this.#emitChange();\n this.requestUpdate();\n\n return true;\n }\n\n #emitChange() {\n this.#commands.invalidate();\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n #updateLabels() {\n if (this.#labelsSource !== this.i18n) {\n this.#labelsSource = this.i18n;\n this.#labels = {\n move: this.i18n.move ?? i18nDefaults.move,\n resize: this.i18n.resize ?? i18nDefaults.resize,\n enterFullscreen: this.i18n.enterFullscreen ?? i18nDefaults.enterFullscreen,\n exitFullscreen: this.i18n.exitFullscreen ?? i18nDefaults.exitFullscreen\n };\n }\n }\n\n #getCanvasStyle(geometry: { width: number; height: number; grid: DashboardLayout['grid']; sizing: 'fit' | 'fixed' }) {\n if (this.#fullscreen.active) return { width: '100%', height: '100%' };\n\n const { width, height, grid, sizing } = geometry;\n\n if (grid.flow === 'vertical') {\n const boundedWidth =\n sizing === 'fit'\n ? '100%'\n : 'calc(var(--_tracks) * (var(--column-size) + var(--_geometry-spacing)) - var(--_geometry-spacing))';\n\n return { width: boundedWidth, height: `${height}px`, '--_tracks': `${grid.tracks}` };\n }\n\n const boundedHeight =\n sizing === 'fit'\n ? '100%'\n : 'calc(var(--_tracks) * (var(--row-size) + var(--_geometry-spacing)) - var(--_geometry-spacing))';\n\n return {\n width: `${width}px`,\n height: boundedHeight,\n '--_tracks': `${grid.tracks}`\n };\n }\n\n #getGhostPixelPlacement(items: DashboardLayout['items']) {\n const source =\n this.#pointerPresentation?.preview &&\n (this.#pointerPresentation.rejected\n ? this.#pointerPresentation.initialPlacement\n : items.find(item => item.id === this.#pointerPresentation?.panel.id));\n return source && this.#measurement.metrics\n ? getDashboardPixelPlacement(source, this.#measurement.metrics)\n : undefined;\n }\n\n get #canvasFloor() {\n const viewport = this.#composition.viewport;\n if (!this.#pointerPresentation?.canvasPlacement || !viewport) return undefined;\n\n return {\n width: Math.abs(viewport.scrollLeft) + viewport.clientWidth,\n height: viewport.scrollTop + viewport.clientHeight\n };\n }\n\n #getPresentationModel() {\n const previous = this.#composition.pendingPresentation;\n const panels = isServer ? [] : this.#composition.panels;\n\n if (previous) {\n return {\n layout: previous.layout ?? this.#current,\n metrics: this.#measurement.metrics ?? previous.metrics,\n items: panels.flatMap(panel => {\n const item = previous.panels.get(panel);\n return item ? [item] : [];\n }),\n sizing: previous.sizing,\n presented: true\n };\n }\n\n const layout = this.#preview ?? this.#layout ?? this.#current;\n const available = new Set(panels.map(panel => panel.id));\n\n return {\n layout,\n metrics: this.#measurement.metrics,\n items: layout.items.filter(item => available.has(item.id)),\n sizing: this.sizing,\n presented: false\n };\n }\n\n #getRenderGeometry() {\n const model = this.#getPresentationModel();\n const { layout, metrics, items, sizing, presented } = model;\n const size = metrics\n ? getDashboardCanvasSize({ layout, metrics, sizing, items, floor: this.#canvasFloor })\n : { width: 0, height: 0 };\n\n return { ...size, grid: layout.grid, sizing, presented, preview: this.#getGhostPixelPlacement(items) };\n }\n\n #renderStartCue() {\n return this.#pointerPresentation?.preview && this.#pointerPresentation.start && !this.#pointerPresentation.rejected\n ? html`<div class=\"start-cue\" aria-hidden=\"true\" inert></div>`\n : null;\n }\n\n #renderGhost(preview: DashboardPixelPlacement | undefined) {\n return preview\n ? html`<nve-ghost part=\"ghost\" style=${styleMap({ '--_dashboard-inline-start': `${preview.inlineStart}px`, top: `${preview.top}px`, width: `${preview.width}px`, height: `${preview.height}px`, ...this.#composition.ghostCorners })}></nve-ghost>`\n : null;\n }\n\n render() {\n const geometry = this.#getRenderGeometry();\n const { preview, grid, sizing } = geometry;\n return html`\n <div internal-host>\n <div class=\"viewport\" data-flow=${grid.flow} data-sizing=${sizing} ?data-fullscreen=${this.#fullscreen.active}>\n <div\n class=\"canvas\"\n ?hidden=${!isServer && this.#restoring && !geometry.presented}\n ?data-arranging=${!!this.#pointerPresentation?.preview}\n style=${styleMap(this.#getCanvasStyle(geometry))}\n >\n <slot @slotchange=${() => this.requestUpdate()}></slot>\n ${this.#renderStartCue()} ${this.#renderGhost(preview)}\n </div>\n </div>\n <div class=\"metric\" aria-hidden=\"true\"></div>\n <div class=\"gap-metric\" aria-hidden=\"true\"></div>\n <div\n class=\"announcement\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n ${this.announcement}\n </div>\n </div>\n `;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Dashboard, DashboardPanel, DashboardPanelContent, DashboardPanelFooter, DashboardPanelHeader } from '@nvidia-elements/core/dashboard';
|
|
2
|
+
declare global {
|
|
3
|
+
interface HTMLElementTagNameMap {
|
|
4
|
+
'nve-dashboard': Dashboard;
|
|
5
|
+
'nve-dashboard-panel': DashboardPanel;
|
|
6
|
+
'nve-dashboard-panel-header': DashboardPanelHeader;
|
|
7
|
+
'nve-dashboard-panel-content': DashboardPanelContent;
|
|
8
|
+
'nve-dashboard-panel-footer': DashboardPanelFooter;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DashboardPanel as e } from "./panel/panel2.js";
|
|
2
|
+
import { Dashboard as t } from "./dashboard2.js";
|
|
3
|
+
import { DashboardPanelHeader as n } from "./panel-header/panel-header2.js";
|
|
4
|
+
import { DashboardPanelContent as r } from "./panel-content/panel-content2.js";
|
|
5
|
+
import { DashboardPanelFooter as i } from "./panel-footer/panel-footer2.js";
|
|
6
|
+
import { define as a } from "@nvidia-elements/foundations/internal/define";
|
|
7
|
+
a(n), a(r), a(i), a(e), a(t);
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","names":["define","DashboardPanelHeader","DashboardPanelContent","DashboardPanelFooter","DashboardPanel","Dashboard"],"sources":["../../src/dashboard/define.ts"],"sourcesContent":["// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { define } from '@nvidia-elements/foundations/internal/define';\n\nimport {\n Dashboard,\n DashboardPanel,\n DashboardPanelContent,\n DashboardPanelFooter,\n DashboardPanelHeader\n} from '@nvidia-elements/core/dashboard';\n\ndefine(DashboardPanelHeader);\ndefine(DashboardPanelContent);\ndefine(DashboardPanelFooter);\ndefine(DashboardPanel);\ndefine(Dashboard);\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nve-dashboard': Dashboard;\n 'nve-dashboard-panel': DashboardPanel;\n 'nve-dashboard-panel-header': DashboardPanelHeader;\n 'nve-dashboard-panel-content': DashboardPanelContent;\n 'nve-dashboard-panel-footer': DashboardPanelFooter;\n }\n}\n"],"mappings":";;;;;;AAaAA,EAAOC,CAAoB,GAC3BD,EAAOE,CAAqB,GAC5BF,EAAOG,CAAoB,GAC3BH,EAAOI,CAAc,GACrBJ,EAAOK,CAAS"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './dashboard.js';
|
|
2
|
+
export * from './panel/panel.js';
|
|
3
|
+
export * from './panel-header/panel-header.js';
|
|
4
|
+
export * from './panel-content/panel-content.js';
|
|
5
|
+
export * from './panel-footer/panel-footer.js';
|
|
6
|
+
/** @public */
|
|
7
|
+
export type { DashboardLayout, DashboardItem, DashboardGridPlacement, DashboardCommandContext } from './dashboard.types.js';
|
|
8
|
+
/** @public */
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DashboardPanel as e } from "./panel/panel2.js";
|
|
2
|
+
import { Dashboard as t } from "./dashboard2.js";
|
|
3
|
+
import { DashboardPanelHeader as n } from "./panel-header/panel-header2.js";
|
|
4
|
+
import { DashboardPanelContent as r } from "./panel-content/panel-content2.js";
|
|
5
|
+
import { DashboardPanelFooter as i } from "./panel-footer/panel-footer2.js";
|
|
6
|
+
export { t as Dashboard, e as DashboardPanel, r as DashboardPanelContent, i as DashboardPanelFooter, n as DashboardPanelHeader };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
import { DragHandle } from '@nvidia-elements/core/drag-handle';
|
|
3
|
+
import { IconButton } from '@nvidia-elements/core/icon-button';
|
|
4
|
+
import type { DashboardSpanConstraints } from '../dashboard.types.js';
|
|
5
|
+
interface DashboardPanelPresentation {
|
|
6
|
+
readonly placed: boolean;
|
|
7
|
+
readonly movable: boolean;
|
|
8
|
+
readonly resizable: boolean;
|
|
9
|
+
readonly mode?: 'move' | 'resize';
|
|
10
|
+
readonly carried?: boolean;
|
|
11
|
+
readonly lifted?: boolean;
|
|
12
|
+
readonly fullscreen?: 'selected' | 'excluded';
|
|
13
|
+
readonly fullscreenControl?: 'enter' | 'exit' | 'unavailable';
|
|
14
|
+
readonly labels: Readonly<Record<string, string>>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @element nve-dashboard-panel
|
|
18
|
+
* @description A stable application surface identified by a durable panel ID.
|
|
19
|
+
* @documentation https://nvidia.github.io/elements/docs/elements/dashboard/
|
|
20
|
+
* @since 0.0.0
|
|
21
|
+
* @stable false
|
|
22
|
+
* @entrypoint \@nvidia-elements/core/dashboard
|
|
23
|
+
* @command --enter-fullscreen - Present this panel in native fullscreen.
|
|
24
|
+
* @command --exit-fullscreen - Exit native fullscreen.
|
|
25
|
+
* @command --toggle-fullscreen - Toggle native fullscreen for this panel.
|
|
26
|
+
* @command --place - Apply the invoking control's integer grid placement without pointer target snapping. Anchored span changes require resizing; other position changes require movement.
|
|
27
|
+
* @command --move-left - Move left through the same contact-aware movement step as a movement-handle arrow key. The containing dashboard applies its capabilities and layout policy.
|
|
28
|
+
* @command --move-right - Move right through the same contact-aware movement step as a movement-handle arrow key. The containing dashboard applies its capabilities and layout policy.
|
|
29
|
+
* @command --move-up - Move up through the same contact-aware movement step as a movement-handle arrow key. The containing dashboard applies its capabilities and layout policy.
|
|
30
|
+
* @command --move-down - Move down through the same contact-aware movement step as a movement-handle arrow key. The containing dashboard applies its capabilities and layout policy.
|
|
31
|
+
* @command --move-to-start - Place at the growth-axis start, using available space before making room. Keep the bounded-axis coordinate unless placement supplies another. Uses the same operation as Home on the movement grip.
|
|
32
|
+
* @command --increase-width - Increase width by one cell, subject to panel constraints and the containing dashboard capabilities.
|
|
33
|
+
* @command --decrease-width - Decrease width by one cell, subject to panel constraints and the containing dashboard capabilities.
|
|
34
|
+
* @command --increase-height - Increase height by one cell, subject to panel constraints and the containing dashboard capabilities.
|
|
35
|
+
* @command --decrease-height - Decrease height by one cell, subject to panel constraints and the containing dashboard capabilities.
|
|
36
|
+
* @slot - Application content in the scrolling body. Content, data, and native hidden state remain application owned.
|
|
37
|
+
* @slot header - Required panel header with a title and optional application controls.
|
|
38
|
+
* @slot footer - Optional status and actions outside the body.
|
|
39
|
+
* @cssprop --background
|
|
40
|
+
* @cssprop --border
|
|
41
|
+
* @cssprop --border-radius
|
|
42
|
+
* @cssprop --control-width - Width shared by the move and resize controls. Defaults to 36px.
|
|
43
|
+
* @cssprop --control-height - Height shared by the move and resize controls. Defaults to 48px.
|
|
44
|
+
* @cssprop --resize-target-size - Extra pointer resize reach on each side of the panel edge. Defaults to 3px; outward reach stops halfway across the cell gap. Configure on the panel. Inward reach covers application content at the edge, including on hybrid touch devices.
|
|
45
|
+
* @cssprop --box-shadow
|
|
46
|
+
* @csspart drag-handle - Movement control.
|
|
47
|
+
* @csspart resize-button - Resize control.
|
|
48
|
+
* @csspart fullscreen-button - Panel fullscreen control.
|
|
49
|
+
*/
|
|
50
|
+
export declare class DashboardPanel extends LitElement {
|
|
51
|
+
#private;
|
|
52
|
+
static styles: import("lit").CSSResult[];
|
|
53
|
+
static readonly metadata: {
|
|
54
|
+
tag: string;
|
|
55
|
+
version: string;
|
|
56
|
+
parents: string[];
|
|
57
|
+
children: string[];
|
|
58
|
+
};
|
|
59
|
+
static elementDefinitions: {
|
|
60
|
+
[DragHandle.metadata.tag]: typeof DragHandle;
|
|
61
|
+
[IconButton.metadata.tag]: typeof IconButton;
|
|
62
|
+
};
|
|
63
|
+
/** Smallest width in columns. */
|
|
64
|
+
minColumnSpan: number;
|
|
65
|
+
/** Smallest height in rows. */
|
|
66
|
+
minRowSpan: number;
|
|
67
|
+
/** Largest width in columns. */
|
|
68
|
+
maxColumnSpan: number;
|
|
69
|
+
/** Largest height in rows. */
|
|
70
|
+
maxRowSpan: number;
|
|
71
|
+
/** Disables direct movement. Collision displacement remains available. */
|
|
72
|
+
moveDisabled: boolean;
|
|
73
|
+
/** Disables direct resizing. */
|
|
74
|
+
resizeDisabled: boolean;
|
|
75
|
+
private presentation?;
|
|
76
|
+
/** @internal */
|
|
77
|
+
_internals: ElementInternals;
|
|
78
|
+
connectedCallback(): void;
|
|
79
|
+
disconnectedCallback(): void;
|
|
80
|
+
/** @internal */
|
|
81
|
+
_getSpanConstraints(): DashboardSpanConstraints;
|
|
82
|
+
/** @internal */
|
|
83
|
+
_configure(presentation: DashboardPanelPresentation): void;
|
|
84
|
+
/** @internal */
|
|
85
|
+
_getLabel(): string;
|
|
86
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
87
|
+
}
|
|
88
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// src/dashboard/panel/panel.css?inline
|
|
2
|
+
var e = ":host{--background: var(--nve-sys-layer-container-background);--border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color);--border-radius: var(--nve-ref-border-radius-lg);--box-shadow: var(--nve-ref-shadow-100);--control-width: calc(var(--nve-ref-size-700) + 2 * var(--nve-ref-size-100));--control-height: calc(var(--nve-ref-size-1000) + var(--nve-ref-size-200));--resize-target-size: var(--nve-ref-border-width-lg);--_geometry-animation-duration: var(--animation-duration);--_control-width: var(--control-width);--_control-height: var(--control-height);--_focus-width: var(--nve-ref-border-width-md);--_focus-color: Highlight;--_separator: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);display:block;position:absolute;min-width:0;min-height:0;box-sizing:border-box;contain:none;z-index:0;border-radius:var(--border-radius);box-shadow:var(--box-shadow);transition:left var(--_geometry-animation-duration) var(--animation-easing),right var(--_geometry-animation-duration) var(--animation-easing),top var(--_geometry-animation-duration) var(--animation-easing),width var(--_geometry-animation-duration) var(--animation-easing),height var(--_geometry-animation-duration) var(--animation-easing)}:host(:state(carried)){transition:none}:host(:focus-within){z-index:1}:host(:state(lifted)){z-index:2;box-shadow:var(--nve-ref-shadow-400);border-radius:var(--border-radius)}:host([hidden]){display:none}[internal-host]{display:flex;flex-direction:column;height:100%;box-sizing:border-box;overflow:hidden;position:relative;border:var(--border);border-radius:var(--border-radius);background:var(--background)}.header{display:flex;align-items:center;flex:0 0 auto;min-width:0;min-height:var(--_control-height);border-bottom:var(--_separator)}slot[name=header]{display:contents}::slotted(nve-dashboard-panel-header){align-self:stretch;flex:1;min-width:0}.body{flex:1;min-height:0;min-width:0;overflow:auto;scrollbar-width:var(--nve-sys-scrollbar-width);scrollbar-color:var(--nve-sys-scrollbar-thumb-color) var(--nve-sys-scrollbar-track-color)}slot[name=footer]{display:contents}.footer{display:flex;justify-content:flex-end;align-items:center;flex:0 0 auto;min-width:0;border-top:var(--_separator);transition:border-top-width var(--animation-duration) var(--animation-easing),opacity var(--animation-duration) var(--animation-easing);&[inert]{border-top-width:0;opacity:0}}::slotted(nve-dashboard-panel-footer){align-self:stretch;flex:1;min-width:0}.grip{display:flex;flex:none;width:var(--_control-width);height:var(--_control-height);overflow:clip;transition:width var(--animation-duration) var(--animation-easing),height var(--animation-duration) var(--animation-easing),opacity var(--animation-duration) var(--animation-easing);&[inert]{width:0;height:0;opacity:0}}.move-grip{align-self:flex-start}.resize-grip{align-self:flex-end}.grip>:focus{--color: var(--nve-sys-interaction-selected-color);--background-image: linear-gradient( color-mix( in oklab, var(--nve-sys-interaction-state-base) 100%, var(--nve-sys-interaction-state-mix) var(--nve-sys-interaction-state-ratio-selected) ) 0 0 )}.grip:has(>:focus-visible:not([data-pointer-focus])){&:before,&:after{content:\"\";position:absolute;box-sizing:border-box;pointer-events:none;z-index:3}&:before{inset:var(--_focus-width);border:var(--_focus-width) solid var(--_focus-color);border-radius:var(--border-radius)}&:after{width:calc(var(--_control-width) - 2 * var(--_focus-width));height:calc(var(--_control-height) - 2 * var(--_focus-width))}}.move-grip:has(>:focus-visible:not([data-pointer-focus])):before{clip-path:inset(0 calc(100% - var(--_control-width) + 2 * var(--_focus-width)) calc(100% - var(--_control-height) + 2 * var(--_focus-width)) 0)}.move-grip:has(>:focus-visible:not([data-pointer-focus])):after{top:var(--_focus-width);inset-inline-start:var(--_focus-width);border-inline-end:var(--_focus-width) solid var(--_focus-color);border-bottom:var(--_focus-width) solid var(--_focus-color)}.resize-grip:has(>:focus-visible:not([data-pointer-focus])):before{clip-path:inset(calc(100% - var(--_control-height) + 2 * var(--_focus-width)) 0 0 calc(100% - var(--_control-width) + 2 * var(--_focus-width)))}.resize-grip:has(>:focus-visible:not([data-pointer-focus])):after{bottom:var(--_focus-width);inset-inline-end:var(--_focus-width);border-inline-start:var(--_focus-width) solid var(--_focus-color);border-top:var(--_focus-width) solid var(--_focus-color)}:host(:dir(rtl)) .move-grip:has(>:focus-visible:not([data-pointer-focus])):before{clip-path:inset(0 0 calc(100% - var(--_control-height) + 2 * var(--_focus-width)) calc(100% - var(--_control-width) + 2 * var(--_focus-width)))}:host(:dir(rtl)) .resize-grip:has(>:focus-visible:not([data-pointer-focus])):before{clip-path:inset(calc(100% - var(--_control-height) + 2 * var(--_focus-width)) calc(100% - var(--_control-width) + 2 * var(--_focus-width)) 0 0)}.resize,nve-drag-handle{--width: var(--_control-width);--height: var(--_control-height);--padding: 0;--border-radius: var(--nve-ref-border-radius-none);flex:0 0 auto;align-self:flex-start;padding:0;margin:0;touch-action:none}.resize{--cursor: nwse-resize}.resize::part(icon){--width: var(--nve-ref-size-400);--height: var(--nve-ref-size-400);transform:rotate(-45deg)}:host(:dir(rtl)) .resize{--cursor: nesw-resize}:host(:dir(rtl)) .resize::part(icon){transform:rotate(45deg)}.control-divider{align-self:stretch;flex:none;width:0;z-index:1;pointer-events:none;transition:opacity var(--animation-duration) var(--animation-easing);&[inert]{opacity:0}}.move-divider{border-inline-start:var(--_separator);margin-inline-start:calc(-1 * var(--nve-ref-border-width-sm))}.resize-divider{border-inline-start:var(--_separator);margin-inline-end:calc(-1 * var(--nve-ref-border-width-sm))}[internal-host]:has(.grip>:focus){border-color:var(--nve-sys-accent-secondary-background)}:host([container=\"flat\"]){--background: transparent}:host([container=\"flat\"]),:host([container=\"full\"]){--border-radius: var(--nve-ref-border-radius-none);--box-shadow: none}.resize-edge{display:none}@media(any-pointer:fine){.resize-edge{--_edge-inset: max(0px, var(--resize-target-size));--_edge-outset: min(var(--_edge-inset), calc(var(--gap) / 2));display:block;position:absolute;z-index:2;touch-action:none}.resize-edge.left,.resize-edge.right{top:var(--nve-ref-size-200);bottom:var(--nve-ref-size-200);width:calc(var(--nve-ref-border-width-sm) + var(--_edge-inset) + var(--_edge-outset));cursor:ew-resize}.resize-edge.left{left:calc(-1 * var(--_edge-outset))}.resize-edge.right{right:calc(-1 * var(--_edge-outset));bottom:var(--_control-height)}:host(:dir(rtl)) .resize-edge.left{bottom:var(--_control-height)}:host(:dir(rtl)) .resize-edge.right{bottom:var(--nve-ref-size-200)}.resize-edge.top,.resize-edge.bottom{left:var(--nve-ref-size-200);right:var(--nve-ref-size-200);height:calc(var(--nve-ref-border-width-sm) + var(--_edge-inset) + var(--_edge-outset));cursor:ns-resize}.resize-edge.top{top:calc(-1 * var(--_edge-outset))}.resize-edge.bottom{bottom:calc(-1 * var(--_edge-outset));inset-inline-end:var(--_control-width)}}:host(:state(fullscreen-excluded)){display:none}:host(:state(fullscreen)){border-radius:var(--nve-ref-border-radius-none);box-shadow:none}:host(:state(fullscreen)) [internal-host]{border-radius:var(--nve-ref-border-radius-none)}.fullscreen-action{display:flex;flex:none;align-self:stretch;align-items:center;padding-inline:var(--nve-ref-size-100);border-inline-start:var(--_separator)}[internal-host][hidden]{display:none}@media(prefers-reduced-motion:reduce){:host,.grip,.control-divider,.footer{transition:none}}@media(forced-colors:active){.grip:has(>:focus){--_focus-color: HighlightText;background-color:Highlight}.grip>:focus{--color: HighlightText}}";
|
|
3
|
+
export { e as default };
|
|
4
|
+
|
|
5
|
+
//# sourceMappingURL=panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panel.js","names":["panel_default"],"sources":["../../../src/dashboard/panel/panel.css?inline"],"sourcesContent":["/* SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. */\n/* SPDX-License-Identifier: Apache-2.0 */\n:host {\n --background: var(--nve-sys-layer-container-background);\n --border: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color);\n --border-radius: var(--nve-ref-border-radius-lg);\n --box-shadow: var(--nve-ref-shadow-100);\n --control-width: calc(var(--nve-ref-size-700) + 2 * var(--nve-ref-size-100));\n --control-height: calc(var(--nve-ref-size-1000) + var(--nve-ref-size-200));\n --resize-target-size: var(--nve-ref-border-width-lg);\n --_geometry-animation-duration: var(--animation-duration);\n --_control-width: var(--control-width);\n --_control-height: var(--control-height);\n --_focus-width: var(--nve-ref-border-width-md);\n --_focus-color: Highlight;\n --_separator: var(--nve-ref-border-width-sm) solid var(--nve-ref-border-color-muted);\n display: block;\n position: absolute;\n min-width: 0;\n min-height: 0;\n box-sizing: border-box;\n contain: none;\n z-index: 0;\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n transition:\n left var(--_geometry-animation-duration) var(--animation-easing),\n right var(--_geometry-animation-duration) var(--animation-easing),\n top var(--_geometry-animation-duration) var(--animation-easing),\n width var(--_geometry-animation-duration) var(--animation-easing),\n height var(--_geometry-animation-duration) var(--animation-easing);\n}\n\n:host(:state(carried)) {\n transition: none;\n}\n\n:host(:focus-within) {\n z-index: 1;\n}\n\n:host(:state(lifted)) {\n z-index: 2;\n box-shadow: var(--nve-ref-shadow-400);\n border-radius: var(--border-radius);\n}\n\n:host([hidden]) {\n display: none;\n}\n\n[internal-host] {\n display: flex;\n flex-direction: column;\n height: 100%;\n box-sizing: border-box;\n overflow: hidden;\n position: relative;\n border: var(--border);\n border-radius: var(--border-radius);\n background: var(--background);\n}\n\n.header {\n display: flex;\n align-items: center;\n flex: 0 0 auto;\n min-width: 0;\n min-height: var(--_control-height);\n border-bottom: var(--_separator);\n}\n\nslot[name='header'] {\n display: contents;\n}\n\n::slotted(nve-dashboard-panel-header) {\n align-self: stretch;\n flex: 1;\n min-width: 0;\n}\n\n.body {\n flex: 1;\n min-height: 0;\n min-width: 0;\n overflow: auto;\n scrollbar-width: var(--nve-sys-scrollbar-width);\n scrollbar-color: var(--nve-sys-scrollbar-thumb-color) var(--nve-sys-scrollbar-track-color);\n}\n\nslot[name='footer'] {\n display: contents;\n}\n\n.footer {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n flex: 0 0 auto;\n min-width: 0;\n border-top: var(--_separator);\n transition:\n border-top-width var(--animation-duration) var(--animation-easing),\n opacity var(--animation-duration) var(--animation-easing);\n\n &[inert] {\n border-top-width: 0;\n opacity: 0;\n }\n}\n\n::slotted(nve-dashboard-panel-footer) {\n align-self: stretch;\n flex: 1;\n min-width: 0;\n}\n\n.grip {\n display: flex;\n flex: none;\n width: var(--_control-width);\n height: var(--_control-height);\n overflow: clip;\n transition:\n width var(--animation-duration) var(--animation-easing),\n height var(--animation-duration) var(--animation-easing),\n opacity var(--animation-duration) var(--animation-easing);\n\n &[inert] {\n width: 0;\n height: 0;\n opacity: 0;\n }\n}\n\n.move-grip {\n align-self: flex-start;\n}\n\n.resize-grip {\n align-self: flex-end;\n}\n\n.grip > :focus {\n --color: var(--nve-sys-interaction-selected-color);\n --background-image: linear-gradient(\n color-mix(\n in oklab,\n var(--nve-sys-interaction-state-base) 100%,\n var(--nve-sys-interaction-state-mix) var(--nve-sys-interaction-state-ratio-selected)\n )\n 0 0\n );\n}\n\n.grip:has(> :focus-visible:not([data-pointer-focus])) {\n &::before,\n &::after {\n content: '';\n position: absolute;\n box-sizing: border-box;\n pointer-events: none;\n z-index: 3;\n }\n\n &::before {\n inset: var(--_focus-width);\n border: var(--_focus-width) solid var(--_focus-color);\n border-radius: var(--border-radius);\n }\n\n &::after {\n width: calc(var(--_control-width) - 2 * var(--_focus-width));\n height: calc(var(--_control-height) - 2 * var(--_focus-width));\n }\n}\n\n.move-grip:has(> :focus-visible:not([data-pointer-focus]))::before {\n clip-path: inset(\n 0 calc(100% - var(--_control-width) + 2 * var(--_focus-width))\n calc(100% - var(--_control-height) + 2 * var(--_focus-width)) 0\n );\n}\n\n.move-grip:has(> :focus-visible:not([data-pointer-focus]))::after {\n top: var(--_focus-width);\n inset-inline-start: var(--_focus-width);\n border-inline-end: var(--_focus-width) solid var(--_focus-color);\n border-bottom: var(--_focus-width) solid var(--_focus-color);\n}\n\n.resize-grip:has(> :focus-visible:not([data-pointer-focus]))::before {\n clip-path: inset(\n calc(100% - var(--_control-height) + 2 * var(--_focus-width)) 0 0\n calc(100% - var(--_control-width) + 2 * var(--_focus-width))\n );\n}\n\n.resize-grip:has(> :focus-visible:not([data-pointer-focus]))::after {\n bottom: var(--_focus-width);\n inset-inline-end: var(--_focus-width);\n border-inline-start: var(--_focus-width) solid var(--_focus-color);\n border-top: var(--_focus-width) solid var(--_focus-color);\n}\n\n:host(:dir(rtl)) .move-grip:has(> :focus-visible:not([data-pointer-focus]))::before {\n clip-path: inset(\n 0 0 calc(100% - var(--_control-height) + 2 * var(--_focus-width))\n calc(100% - var(--_control-width) + 2 * var(--_focus-width))\n );\n}\n\n:host(:dir(rtl)) .resize-grip:has(> :focus-visible:not([data-pointer-focus]))::before {\n clip-path: inset(\n calc(100% - var(--_control-height) + 2 * var(--_focus-width))\n calc(100% - var(--_control-width) + 2 * var(--_focus-width)) 0 0\n );\n}\n\n.resize,\nnve-drag-handle {\n --width: var(--_control-width);\n --height: var(--_control-height);\n --padding: 0;\n --border-radius: var(--nve-ref-border-radius-none);\n flex: 0 0 auto;\n align-self: flex-start;\n padding: 0;\n margin: 0;\n touch-action: none;\n}\n\n.resize {\n --cursor: nwse-resize;\n}\n\n.resize::part(icon) {\n --width: var(--nve-ref-size-400);\n --height: var(--nve-ref-size-400);\n transform: rotate(-45deg);\n}\n\n:host(:dir(rtl)) .resize {\n --cursor: nesw-resize;\n}\n\n:host(:dir(rtl)) .resize::part(icon) {\n transform: rotate(45deg);\n}\n\n.control-divider {\n align-self: stretch;\n flex: none;\n width: 0;\n z-index: 1;\n pointer-events: none;\n transition: opacity var(--animation-duration) var(--animation-easing);\n\n &[inert] {\n opacity: 0;\n }\n}\n\n.move-divider {\n border-inline-start: var(--_separator);\n margin-inline-start: calc(-1 * var(--nve-ref-border-width-sm));\n}\n\n.resize-divider {\n border-inline-start: var(--_separator);\n margin-inline-end: calc(-1 * var(--nve-ref-border-width-sm));\n}\n\n[internal-host]:has(.grip > :focus) {\n border-color: var(--nve-sys-accent-secondary-background);\n}\n\n:host([container='flat']) {\n --background: transparent;\n}\n\n:host([container='flat']),\n:host([container='full']) {\n --border-radius: var(--nve-ref-border-radius-none);\n --box-shadow: none;\n}\n\n.resize-edge {\n display: none;\n}\n\n@media (any-pointer: fine) {\n .resize-edge {\n --_edge-inset: max(0px, var(--resize-target-size));\n --_edge-outset: min(var(--_edge-inset), calc(var(--gap) / 2));\n display: block;\n position: absolute;\n z-index: 2;\n touch-action: none;\n }\n\n .resize-edge.left,\n .resize-edge.right {\n top: var(--nve-ref-size-200);\n bottom: var(--nve-ref-size-200);\n width: calc(var(--nve-ref-border-width-sm) + var(--_edge-inset) + var(--_edge-outset));\n cursor: ew-resize;\n }\n\n .resize-edge.left {\n left: calc(-1 * var(--_edge-outset));\n }\n\n .resize-edge.right {\n right: calc(-1 * var(--_edge-outset));\n bottom: var(--_control-height);\n }\n\n :host(:dir(rtl)) .resize-edge.left {\n bottom: var(--_control-height);\n }\n\n :host(:dir(rtl)) .resize-edge.right {\n bottom: var(--nve-ref-size-200);\n }\n\n .resize-edge.top,\n .resize-edge.bottom {\n left: var(--nve-ref-size-200);\n right: var(--nve-ref-size-200);\n height: calc(var(--nve-ref-border-width-sm) + var(--_edge-inset) + var(--_edge-outset));\n cursor: ns-resize;\n }\n\n .resize-edge.top {\n top: calc(-1 * var(--_edge-outset));\n }\n\n .resize-edge.bottom {\n bottom: calc(-1 * var(--_edge-outset));\n inset-inline-end: var(--_control-width);\n }\n}\n\n:host(:state(fullscreen-excluded)) {\n display: none;\n}\n\n:host(:state(fullscreen)) {\n border-radius: var(--nve-ref-border-radius-none);\n box-shadow: none;\n}\n\n:host(:state(fullscreen)) [internal-host] {\n border-radius: var(--nve-ref-border-radius-none);\n}\n\n.fullscreen-action {\n display: flex;\n flex: none;\n align-self: stretch;\n align-items: center;\n padding-inline: var(--nve-ref-size-100);\n border-inline-start: var(--_separator);\n}\n\n[internal-host][hidden] {\n display: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host,\n .grip,\n .control-divider,\n .footer {\n transition: none;\n }\n}\n\n@media (forced-colors: active) {\n .grip:has(> :focus) {\n --_focus-color: HighlightText;\n background-color: Highlight;\n }\n\n .grip > :focus {\n --color: HighlightText;\n }\n}\n"],"mappings":""}
|