@preference-sl/pref-viewer 2.11.0-beta.11 → 2.11.0-beta.12

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/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "@preference-sl/pref-viewer",
3
- "version": "2.11.0-beta.11",
3
+ "version": "2.11.0-beta.12",
4
4
  "description": "Web Component to preview GLTF models with Babylon.js",
5
5
  "author": "Alex Moreno Palacio <amoreno@preference.es>",
6
6
  "scripts": {
7
- "copy-css": "cpx \"src/css/**/*\" dist/css/",
8
7
  "release": "standard-version --releaseCommitMessageFormat \"chore(release): {{currentTag}} [skip ci]\"",
9
8
  "release:beta": "standard-version --prerelease beta --releaseCommitMessageFormat \"chore(release): {{currentTag}} [skip ci]\"",
10
- "build": "npm run copy-css && esbuild src/index.js --bundle --platform=node --format=esm --outfile=dist/bundle.js --sourcemap",
9
+ "build": "esbuild src/index.js --bundle --platform=node --format=esm --outfile=dist/bundle.js --sourcemap",
11
10
  "start": "npm run build && http-server -c-1 . -p 8080",
12
11
  "test": "vitest"
13
12
  },
@@ -31,7 +30,6 @@
31
30
  "sideEffects": false,
32
31
  "files": [
33
32
  "src",
34
- "src/css",
35
33
  "index.d.ts"
36
34
  ],
37
35
  "dependencies": {
@@ -46,7 +44,6 @@
46
44
  "jszip": "^3.10.1"
47
45
  },
48
46
  "devDependencies": {
49
- "cpx": "^1.5.0",
50
47
  "esbuild": "^0.25.10",
51
48
  "http-server": "^14.1.1",
52
49
  "jsdom": "^26.1.0",
@@ -1,6 +1,7 @@
1
1
  import { Color3, HighlightLayer, Mesh, PickingInfo, PointerEventTypes, Scene } from "@babylonjs/core";
2
2
  import { AdvancedDynamicTexture } from "@babylonjs/gui";
3
- import { OpeningAnimation } from "./babylonjs-animation-opening.js";
3
+ import { PrefViewerColors } from "./styles.js";
4
+ import OpeningAnimation from "./babylonjs-animation-opening.js";
4
5
 
5
6
  /**
6
7
  * BabylonJSAnimationController - Manages animation playback and interactive highlighting for model containers in Babylon.js scenes.
@@ -21,7 +22,7 @@ export default class BabylonJSAnimationController {
21
22
  #scene = null;
22
23
  #animatedNodes = [];
23
24
  #highlightLayer = null;
24
- #highlightColor = new Color3(0, 1, 0); // Color para resaltar los elementos animados (Verde)
25
+ #highlightColor = Color3.FromHexString(PrefViewerColors.primary);
25
26
  #advancedDynamicTexture = null;
26
27
  #openingAnimations = [];
27
28
 
@@ -1,5 +1,6 @@
1
1
  import { AdvancedDynamicTexture, Button, Control, Image, Slider, StackPanel } from "@babylonjs/gui";
2
- import { OpeningAnimation } from "./babylonjs-animation-opening.js";
2
+ import OpeningAnimation from "./babylonjs-animation-opening.js";
3
+ import { PrefViewerColors } from "./styles.js";
3
4
 
4
5
  /**
5
6
  * OpeningAnimationMenu - Manages and renders the animation control menu for opening/closing animations in a Babylon.js scene.
@@ -42,7 +43,7 @@ import { OpeningAnimation } from "./babylonjs-animation-opening.js";
42
43
  * menu.animationProgress = 0.5;
43
44
  * menu.animationLoop = true;
44
45
  */
45
- export class OpeningAnimationMenu {
46
+ export default class OpeningAnimationMenu {
46
47
  #animationState = OpeningAnimation.states.closed;
47
48
  #animationProgress = 0;
48
49
  #animationLoop = false;
@@ -57,7 +58,7 @@ export class OpeningAnimationMenu {
57
58
  // Style properties
58
59
  #buttonSize = 28;
59
60
  #buttonLoopPaddingLeft = 3;
60
- #colorActive = "#6BA53A";
61
+ #colorActive = PrefViewerColors.primary;
61
62
  #colorEnabled = "#333333";
62
63
  #colorDisabled = "#777777";
63
64
  #colorIcon = "#FFFFFF";
@@ -1,5 +1,5 @@
1
1
  import { AdvancedDynamicTexture } from "@babylonjs/gui";
2
- import { OpeningAnimationMenu } from "./babylonjs-animation-opening-menu.js";
2
+ import OpeningAnimationMenu from "./babylonjs-animation-opening-menu.js";
3
3
 
4
4
  /**
5
5
  * OpeningAnimation - Manages open/close animations for a model part (e.g., a door) in a Babylon.js scene.
@@ -48,7 +48,7 @@ import { OpeningAnimationMenu } from "./babylonjs-animation-opening-menu.js";
48
48
  * anim.showControls(adt);
49
49
  * anim.hideControls();
50
50
  */
51
- export class OpeningAnimation {
51
+ export default class OpeningAnimation {
52
52
  static states = {
53
53
  paused: 0,
54
54
  closed: 1,
package/src/index.js CHANGED
@@ -1,7 +1,8 @@
1
- import { PrefViewer2D } from "./pref-viewer-2d.js";
2
- import { PrefViewer3D } from "./pref-viewer-3d.js";
3
- import { PrefViewerDialog } from "./pref-viewer-dialog.js";
4
- import { PrefViewerTask } from "./pref-viewer-task.js";
1
+ import PrefViewer2D from "./pref-viewer-2d.js";
2
+ import PrefViewer3D from "./pref-viewer-3d.js";
3
+ import PrefViewerDialog from "./pref-viewer-dialog.js";
4
+ import PrefViewerTask from "./pref-viewer-task.js";
5
+ import { PrefViewerStyles } from "./styles.js";
5
6
 
6
7
  /**
7
8
  * PrefViewer - Custom Web Component for advanced 2D and 3D product visualization and configuration.
@@ -133,7 +134,7 @@ class PrefViewer extends HTMLElement {
133
134
  if (_old === value || value.toLowerCase() === this.#mode) {
134
135
  return;
135
136
  }
136
- this.setMode(value.toLowerCase());
137
+ this.setMode(value);
137
138
  break;
138
139
  case "model":
139
140
  this.loadModel(value);
@@ -173,8 +174,7 @@ class PrefViewer extends HTMLElement {
173
174
  this.shadowRoot.append(this.#wrapper);
174
175
 
175
176
  const style = document.createElement("style");
176
- const cssUrl = new URL("./css/pref-viewer.css", import.meta.url);
177
- style.textContent = `@import "${cssUrl}";`;
177
+ style.textContent = PrefViewerStyles;
178
178
  this.shadowRoot.append(style);
179
179
 
180
180
  this.#createComponent3D();
@@ -503,6 +503,7 @@ class PrefViewer extends HTMLElement {
503
503
  * @returns {void}
504
504
  */
505
505
  setMode(mode = this.#mode) {
506
+ mode = mode.toLowerCase();
506
507
  if (mode !== "2d" && mode !== "3d") {
507
508
  console.warn(`PrefViewer: invalid mode "${mode}". Allowed modes are "2d" and "3d".`);
508
509
  mode = this.#mode;
@@ -1,5 +1,6 @@
1
1
  import SVGResolver from "./svg-resolver.js";
2
2
  import PanzoomController from "./panzoom-controller.js";
3
+ import { PrefViewer2DStyles } from "./styles.js";
3
4
 
4
5
  /**
5
6
  * PrefViewer2D - Custom element for rendering and interacting with 2D SVG content.
@@ -46,7 +47,7 @@ import PanzoomController from "./panzoom-controller.js";
46
47
  * Notes on extensibility
47
48
  * - Modeled for easy addition of other input sources or interaction modes (e.g., selection callbacks).
48
49
  */
49
- export class PrefViewer2D extends HTMLElement {
50
+ export default class PrefViewer2D extends HTMLElement {
50
51
  // State flags
51
52
  #isInitialized = false;
52
53
  #isLoaded = false;
@@ -143,9 +144,9 @@ export class PrefViewer2D extends HTMLElement {
143
144
  #createDOMElements() {
144
145
  this.#wrapper = document.createElement("div");
145
146
  this.append(this.#wrapper);
147
+
146
148
  const style = document.createElement("style");
147
- const cssUrl = new URL("./css/pref-viewer-2d.css", import.meta.url);
148
- style.textContent = `@import "${cssUrl}";`;
149
+ style.textContent = PrefViewer2DStyles;
149
150
  this.append(style);
150
151
  }
151
152
 
@@ -1,5 +1,6 @@
1
1
  import { CameraData, ContainerData, MaterialData } from "./pref-viewer-3d-data.js";
2
2
  import BabylonJSController from "./babylonjs-controller.js";
3
+ import { PrefViewer3DStyles } from "./styles.js";
3
4
 
4
5
  /**
5
6
  * PrefViewer3D - Custom Web Component for interactive 3D visualization and configuration.
@@ -56,7 +57,7 @@ import BabylonJSController from "./babylonjs-controller.js";
56
57
  * - Designed for extensibility and integration in product configurators and visualization tools.
57
58
  * - All resource management and rendering operations are performed asynchronously for performance.
58
59
  */
59
- export class PrefViewer3D extends HTMLElement {
60
+ export default class PrefViewer3D extends HTMLElement {
60
61
  // State flags
61
62
  #isInitialized = false;
62
63
  #isLoaded = false;
@@ -157,11 +158,12 @@ export class PrefViewer3D extends HTMLElement {
157
158
  #createDOMElements() {
158
159
  this.#wrapper = document.createElement("div");
159
160
  this.append(this.#wrapper);
161
+
160
162
  this.#canvas = document.createElement("canvas");
161
163
  this.#wrapper.appendChild(this.#canvas);
164
+
162
165
  const style = document.createElement("style");
163
- const cssUrl = new URL("./css/pref-viewer-3d.css", import.meta.url);
164
- style.textContent = `@import "${cssUrl}";`;
166
+ style.textContent = PrefViewer3DStyles;
165
167
  this.append(style);
166
168
  }
167
169
 
@@ -461,6 +463,7 @@ export class PrefViewer3D extends HTMLElement {
461
463
  show() {
462
464
  this.#isVisible = true;
463
465
  this.setAttribute("visible", "true");
466
+ this.#canvas.focus();
464
467
  }
465
468
 
466
469
  /**
@@ -1,3 +1,5 @@
1
+ import { PrefViewerDialogStyles } from "./styles.js";
2
+
1
3
  /**
2
4
  * PrefViewerDialog - Custom Web Component for displaying modal dialogs in PrefViewer.
3
5
  *
@@ -20,7 +22,7 @@
20
22
  * - close(): Hides and removes the dialog, refocuses the canvas if available.
21
23
  * - #createDOMElements(): Creates the dialog structure and applies styles.
22
24
  */
23
- export class PrefViewerDialog extends HTMLElement {
25
+ export default class PrefViewerDialog extends HTMLElement {
24
26
  #wrapper = null;
25
27
  #header = null;
26
28
  #content = null;
@@ -68,8 +70,7 @@ export class PrefViewerDialog extends HTMLElement {
68
70
  this.append(this.#wrapper);
69
71
 
70
72
  const style = document.createElement("style");
71
- const cssUrl = new URL("./css/pref-viewer-dialog.css", import.meta.url);
72
- style.textContent = `@import "${cssUrl}";`;
73
+ style.textContent = PrefViewerDialogStyles;
73
74
  this.append(style);
74
75
 
75
76
  this.addEventListener("click", this.#closeOnBackdropClick.bind(this));
@@ -132,7 +133,6 @@ export class PrefViewerDialog extends HTMLElement {
132
133
  component2D.focus();
133
134
  }
134
135
  }
135
-
136
136
  }
137
137
  this.#wrapper = this.#header = this.#content = this.#footer = null;
138
138
  this.remove();
@@ -18,7 +18,7 @@
18
18
  * - Validates the type (case-insensitive) and throws a TypeError if invalid.
19
19
  * - Freezes the instance to prevent further modification.
20
20
  */
21
- export class PrefViewerTask {
21
+ export default class PrefViewerTask {
22
22
  static Types = Object.freeze({
23
23
  Config: "config",
24
24
  Drawing: "drawing",
package/src/styles.js ADDED
@@ -0,0 +1,196 @@
1
+ export const PrefViewerColors = {
2
+ primary: "#ff6700", // Always specify in hexadecimal
3
+ };
4
+
5
+ export const PrefViewerStyles = `
6
+ :host .pref-viewer-wrapper {
7
+ display: grid !important;
8
+ position: relative;
9
+ width: 100%;
10
+ height: 100%;
11
+ grid-template-columns: 1fr;
12
+ grid-template-rows: 1fr;
13
+ grid-gap: 0;
14
+ min-width: 0;
15
+ min-height: 0;
16
+ }
17
+ `;
18
+
19
+ export const PrefViewer2DStyles = `
20
+ pref-viewer-2d {
21
+ --pref-viewer-2d-bg-color: #ffffff;
22
+ --pref-viewer-2d-svg-padding: 10px;
23
+ }
24
+
25
+ pref-viewer-2d[visible="true"] {
26
+ display: block;
27
+ }
28
+
29
+ pref-viewer-2d[visible="false"] {
30
+ display: none;
31
+ }
32
+
33
+ pref-viewer-2d {
34
+ grid-column: 1;
35
+ grid-row: 1;
36
+ overflow: hidden;
37
+ min-width: 0;
38
+ min-height: 0;
39
+ align-self: stretch;
40
+ justify-self: stretch;
41
+ background: var(--pref-viewer-2d-bg-color);
42
+ }
43
+
44
+ pref-viewer-2d,
45
+ pref-viewer-2d>div,
46
+ pref-viewer-2d>div>svg {
47
+ width: 100%;
48
+ height: 100%;
49
+ display: block;
50
+ position: relative;
51
+ outline: none;
52
+ box-sizing: border-box;
53
+ }
54
+
55
+ pref-viewer-2d>div>svg {
56
+ padding: var(--pref-viewer-2d-svg-padding);
57
+ }
58
+ `;
59
+
60
+ export const PrefViewer3DStyles = `
61
+ pref-viewer-3d[visible="true"] {
62
+ display: block;
63
+ }
64
+
65
+ pref-viewer-3d[visible="false"] {
66
+ display: none;
67
+ }
68
+
69
+ pref-viewer-3d {
70
+ grid-column: 1;
71
+ grid-row: 1;
72
+ overflow: hidden;
73
+ min-width: 0;
74
+ min-height: 0;
75
+ align-self: stretch;
76
+ justify-self: stretch;
77
+ }
78
+
79
+ pref-viewer-3d,
80
+ pref-viewer-3d>div,
81
+ pref-viewer-3d>div>canvas {
82
+ width: 100%;
83
+ height: 100%;
84
+ display: block;
85
+ position: relative;
86
+ outline: none;
87
+ box-sizing: border-box;
88
+ }
89
+ `;
90
+
91
+ export const PrefViewerDialogStyles = `
92
+ pref-viewer-dialog {
93
+ --color-primary: ${PrefViewerColors.primary};
94
+ --dialog-general-space: 16px;
95
+ --dialog-bg-color: #ffffff;
96
+ --dialog-backdrop-color: rgba(0, 0, 0, 0.25);
97
+ --dialog-border-color: #e7e7e7;
98
+ --dialog-border-radius: 8px;
99
+ --dialog-box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
100
+ --button-default-bg-color: #bbbbbb;
101
+ --button-default-bg-color-hover: #a1a1a1;
102
+ --button-primary-bg-color: color-mix(in oklab, var(--color-primary), white 25%);
103
+ --button-primary-bg-color-hover: var(--color-primary);
104
+ --button-border-radius: 4px;
105
+ --button-padding-horizontal: 16px;
106
+ --button-padding-vertical: 8px;
107
+ }
108
+
109
+ pref-viewer-dialog:not {
110
+ display: none;
111
+ }
112
+
113
+ pref-viewer-dialog[open] {
114
+ font-family: 'Roboto', ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
115
+ grid-row: 1;
116
+ grid-column: 1;
117
+ overflow: hidden;
118
+ min-width: 0;
119
+ min-height: 0;
120
+ align-self: stretch;
121
+ justify-self: stretch;
122
+ display: flex;
123
+ align-items: center;
124
+ justify-content: center;
125
+ background-color: var(--dialog-backdrop-color);
126
+ position: relative;
127
+ z-index: 1000;
128
+ }
129
+
130
+ pref-viewer-dialog>.dialog-wrapper {
131
+ display: flex;
132
+ flex-direction: column;
133
+ align-items: stretch;
134
+ background: var(--dialog-bg-color);
135
+ border: 1px solid var(--dialog-border-color);
136
+ border-radius: var(--dialog-border-radius);
137
+ box-shadow: var(--dialog-box-shadow);
138
+ padding: 0;
139
+ min-width: 320px;
140
+ max-width: 90%;
141
+ max-height: 90%;
142
+ overflow: auto;
143
+ }
144
+
145
+ pref-viewer-dialog .dialog-header {
146
+ padding: var(--dialog-general-space);
147
+ border-bottom: 1px solid var(--dialog-border-color);
148
+ }
149
+
150
+ pref-viewer-dialog .dialog-header h3 {
151
+ margin: 0;
152
+ font-weight: 500;
153
+ font-size: 1.1em;
154
+ }
155
+
156
+ pref-viewer-dialog .dialog-content {
157
+ padding: var(--dialog-general-space);
158
+ }
159
+
160
+ pref-viewer-dialog .dialog-content h4 {
161
+ margin: 0;
162
+ font-weight: 500;
163
+ font-size: 1.05em;
164
+ }
165
+
166
+ pref-viewer-dialog .dialog-footer {
167
+ border-top: 1px solid var(--dialog-border-color);
168
+ padding: var(--dialog-general-space);
169
+ display: flex;
170
+ gap: var(--dialog-general-space);
171
+ justify-content: stretch;
172
+ }
173
+
174
+ pref-viewer-dialog .dialog-footer button {
175
+ width: 100%;
176
+ font-size: 1em;
177
+ padding: var(--button-padding-vertical) var(--button-padding-horizontal);
178
+ border-radius: var(--button-border-radius);
179
+ border: none;
180
+ background: var(--button-default-bg-color);
181
+ cursor: pointer;
182
+ transition: background 0.2s;
183
+ }
184
+
185
+ pref-viewer-dialog .dialog-footer button.primary {
186
+ background: var(--button-primary-bg-color);
187
+ }
188
+
189
+ pref-viewer-dialog .dialog-footer button:hover {
190
+ background: var(--button-default-bg-color-hover);
191
+ }
192
+
193
+ pref-viewer-dialog .dialog-footer button.primary:hover {
194
+ background: var(--button-primary-bg-color-hover);
195
+ }
196
+ `;
@@ -1,39 +0,0 @@
1
- /* Variables */
2
- pref-viewer-2d {
3
- --pref-viewer-2d-bg-color: #ffffff;
4
- --pref-viewer-2d-svg-padding: 10px;
5
- }
6
-
7
- pref-viewer-2d[visible="true"] {
8
- display: block;
9
- }
10
-
11
- pref-viewer-2d[visible="false"] {
12
- display: none;
13
- }
14
-
15
- pref-viewer-2d {
16
- grid-column: 1;
17
- grid-row: 1;
18
- overflow: hidden;
19
- min-width: 0;
20
- min-height: 0;
21
- align-self: stretch;
22
- justify-self: stretch;
23
- background: var(--pref-viewer-2d-bg-color);
24
- }
25
-
26
- pref-viewer-2d,
27
- pref-viewer-2d>div,
28
- pref-viewer-2d>div>svg {
29
- width: 100%;
30
- height: 100%;
31
- display: block;
32
- position: relative;
33
- outline: none;
34
- box-sizing: border-box;
35
- }
36
-
37
- pref-viewer-2d>div>svg {
38
- padding: var(--pref-viewer-2d-svg-padding);
39
- }
@@ -1,28 +0,0 @@
1
- pref-viewer-3d[visible="true"] {
2
- display: block;
3
- }
4
-
5
- pref-viewer-3d[visible="false"] {
6
- display: none;
7
- }
8
-
9
- pref-viewer-3d {
10
- grid-column: 1;
11
- grid-row: 1;
12
- overflow: hidden;
13
- min-width: 0;
14
- min-height: 0;
15
- align-self: stretch;
16
- justify-self: stretch;
17
- }
18
-
19
- pref-viewer-3d,
20
- pref-viewer-3d>div,
21
- pref-viewer-3d>div>canvas {
22
- width: 100%;
23
- height: 100%;
24
- display: block;
25
- position: relative;
26
- outline: none;
27
- box-sizing: border-box;
28
- }
@@ -1,105 +0,0 @@
1
- /* Variables */
2
- pref-viewer-dialog {
3
- --brand-color: #ff6700;
4
- --dialog-general-space: 16px;
5
- --dialog-bg-color: #ffffff;
6
- --dialog-backdrop-color: rgba(0, 0, 0, 0.25);
7
- --dialog-border-color: #e7e7e7;
8
- --dialog-border-radius: 8px;
9
- --dialog-box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
10
- --button-default-bg-color: #bbbbbb;
11
- --button-default-bg-color-hover: #a1a1a1;
12
- --button-primary-bg-color: color-mix(in oklab, var(--brand-color), white 25%);
13
- --button-primary-bg-color-hover: var(--brand-color);
14
- --button-border-radius: 4px;
15
- --button-padding-horizontal: 16px;
16
- --button-padding-vertical: 8px;
17
- }
18
-
19
- pref-viewer-dialog:not {
20
- display: none;
21
- }
22
-
23
- pref-viewer-dialog[open] {
24
- font-family: 'Roboto', ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
25
- grid-row: 1;
26
- grid-column: 1;
27
- overflow: hidden;
28
- min-width: 0;
29
- min-height: 0;
30
- align-self: stretch;
31
- justify-self: stretch;
32
- display: flex;
33
- align-items: center;
34
- justify-content: center;
35
- background-color: var(--dialog-backdrop-color);
36
- position: relative;
37
- z-index: 1000;
38
- }
39
-
40
- pref-viewer-dialog>.dialog-wrapper {
41
- display: flex;
42
- flex-direction: column;
43
- align-items: stretch;
44
- background: var(--dialog-bg-color);
45
- border: 1px solid var(--dialog-border-color);
46
- border-radius: var(--dialog-border-radius);
47
- box-shadow: var(--dialog-box-shadow);
48
- padding: 0;
49
- min-width: 320px;
50
- max-width: 90%;
51
- max-height: 90%;
52
- overflow: auto;
53
- }
54
-
55
- pref-viewer-dialog .dialog-header {
56
- padding: var(--dialog-general-space);
57
- border-bottom: 1px solid var(--dialog-border-color);
58
- }
59
-
60
- pref-viewer-dialog .dialog-header h3 {
61
- margin: 0;
62
- font-weight: 500;
63
- font-size: 1.1em;
64
- }
65
-
66
- pref-viewer-dialog .dialog-content {
67
- padding: var(--dialog-general-space);
68
- }
69
-
70
- pref-viewer-dialog .dialog-content h4 {
71
- margin: 0;
72
- font-weight: 500;
73
- font-size: 1.05em;
74
- }
75
-
76
- pref-viewer-dialog .dialog-footer {
77
- border-top: 1px solid var(--dialog-border-color);
78
- padding: var(--dialog-general-space);
79
- display: flex;
80
- gap: var(--dialog-general-space);
81
- justify-content: stretch;
82
- }
83
-
84
- pref-viewer-dialog .dialog-footer button {
85
- width: 100%;
86
- font-size: 1em;
87
- padding: var(--button-padding-vertical) var(--button-padding-horizontal);
88
- border-radius: var(--button-border-radius);
89
- border: none;
90
- background: var(--button-default-bg-color);
91
- cursor: pointer;
92
- transition: background 0.2s;
93
- }
94
-
95
- pref-viewer-dialog .dialog-footer button.primary {
96
- background: var(--button-primary-bg-color);
97
- }
98
-
99
- pref-viewer-dialog .dialog-footer button:hover {
100
- background: var(--button-default-bg-color-hover);
101
- }
102
-
103
- pref-viewer-dialog .dialog-footer button.primary:hover {
104
- background: var(--button-primary-bg-color-hover);
105
- }
@@ -1,11 +0,0 @@
1
- :host .pref-viewer-wrapper {
2
- display: grid !important;
3
- position: relative;
4
- width: 100%;
5
- height: 100%;
6
- grid-template-columns: 1fr;
7
- grid-template-rows: 1fr;
8
- grid-gap: 0;
9
- min-width: 0;
10
- min-height: 0;
11
- }