@alegendstale/holly-components 1.4.0 → 2.0.2

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.
Files changed (147) hide show
  1. package/README.md +9 -5
  2. package/dist/components/absolute-container/absolute-container.d.ts +17 -3
  3. package/dist/components/absolute-container/absolute-container.d.ts.map +1 -1
  4. package/dist/components/absolute-container/absolute-container.js +22 -25
  5. package/dist/components/absolute-container/absolute-container.stories.d.ts +3 -1
  6. package/dist/components/absolute-container/absolute-container.stories.d.ts.map +1 -1
  7. package/dist/components/absolute-container/absolute-container.stories.js +35 -7
  8. package/dist/components/absolute-container/absolute-container.styles.d.ts +3 -0
  9. package/dist/components/absolute-container/absolute-container.styles.d.ts.map +1 -0
  10. package/dist/components/absolute-container/absolute-container.styles.js +18 -0
  11. package/dist/components/bottom-sheet/bottom-sheet.d.ts +25 -0
  12. package/dist/components/bottom-sheet/bottom-sheet.d.ts.map +1 -1
  13. package/dist/components/bottom-sheet/bottom-sheet.js +29 -127
  14. package/dist/components/bottom-sheet/bottom-sheet.stories.d.ts +5 -2
  15. package/dist/components/bottom-sheet/bottom-sheet.stories.d.ts.map +1 -1
  16. package/dist/components/bottom-sheet/bottom-sheet.stories.js +31 -7
  17. package/dist/components/bottom-sheet/bottom-sheet.styles.d.ts +3 -0
  18. package/dist/components/bottom-sheet/bottom-sheet.styles.d.ts.map +1 -0
  19. package/dist/components/bottom-sheet/bottom-sheet.styles.js +115 -0
  20. package/dist/components/canvas/canvas-base.d.ts +8 -1
  21. package/dist/components/canvas/canvas-base.d.ts.map +1 -1
  22. package/dist/components/canvas/canvas-base.js +14 -11
  23. package/dist/components/canvas/canvas-base.stories.d.ts +7 -0
  24. package/dist/components/canvas/canvas-base.stories.d.ts.map +1 -0
  25. package/dist/components/canvas/canvas-base.stories.js +24 -0
  26. package/dist/components/canvas/canvas-gradient.d.ts +10 -3
  27. package/dist/components/canvas/canvas-gradient.d.ts.map +1 -1
  28. package/dist/components/canvas/canvas-gradient.js +13 -9
  29. package/dist/components/canvas/canvas-gradient.stories.d.ts +14 -0
  30. package/dist/components/canvas/canvas-gradient.stories.d.ts.map +1 -0
  31. package/dist/components/canvas/canvas-gradient.stories.js +46 -0
  32. package/dist/components/canvas/canvas-image.d.ts +25 -16
  33. package/dist/components/canvas/canvas-image.d.ts.map +1 -1
  34. package/dist/components/canvas/canvas-image.js +84 -72
  35. package/dist/components/canvas/canvas-image.stories.d.ts +13 -0
  36. package/dist/components/canvas/canvas-image.stories.d.ts.map +1 -0
  37. package/dist/components/canvas/canvas-image.stories.js +49 -0
  38. package/dist/components/canvas/canvas-image.styles.d.ts +3 -0
  39. package/dist/components/canvas/canvas-image.styles.d.ts.map +1 -0
  40. package/dist/components/canvas/canvas-image.styles.js +21 -0
  41. package/dist/components/carousel-scroller/carousel-scroller.d.ts +23 -6
  42. package/dist/components/carousel-scroller/carousel-scroller.d.ts.map +1 -1
  43. package/dist/components/carousel-scroller/carousel-scroller.js +32 -80
  44. package/dist/components/carousel-scroller/carousel-scroller.stories.d.ts +4 -2
  45. package/dist/components/carousel-scroller/carousel-scroller.stories.d.ts.map +1 -1
  46. package/dist/components/carousel-scroller/carousel-scroller.stories.js +22 -6
  47. package/dist/components/carousel-scroller/carousel-scroller.styles.d.ts +3 -0
  48. package/dist/components/carousel-scroller/carousel-scroller.styles.d.ts.map +1 -0
  49. package/dist/components/carousel-scroller/carousel-scroller.styles.js +66 -0
  50. package/dist/components/color-palette/color-palette-utils.d.ts.map +1 -1
  51. package/dist/components/color-palette/color-palette.d.ts +53 -16
  52. package/dist/components/color-palette/color-palette.d.ts.map +1 -1
  53. package/dist/components/color-palette/color-palette.js +72 -126
  54. package/dist/components/color-palette/color-palette.styles.d.ts +3 -0
  55. package/dist/components/color-palette/color-palette.styles.d.ts.map +1 -0
  56. package/dist/components/color-palette/color-palette.styles.js +90 -0
  57. package/dist/components/color-palette/component/color-palette-component.d.ts +16 -2
  58. package/dist/components/color-palette/component/color-palette-component.d.ts.map +1 -1
  59. package/dist/components/color-palette/component/color-palette-component.js +18 -19
  60. package/dist/components/color-palette/component/color-palette-component.stories.d.ts +4 -2
  61. package/dist/components/color-palette/component/color-palette-component.stories.d.ts.map +1 -1
  62. package/dist/components/color-palette/component/color-palette-component.stories.js +34 -36
  63. package/dist/components/color-palette/component/color-palette-component.styles.d.ts +3 -0
  64. package/dist/components/color-palette/component/color-palette-component.styles.d.ts.map +1 -0
  65. package/dist/components/color-palette/component/color-palette-component.styles.js +10 -0
  66. package/dist/components/color-palette/editor/color-palette-editor.d.ts +28 -14
  67. package/dist/components/color-palette/editor/color-palette-editor.d.ts.map +1 -1
  68. package/dist/components/color-palette/editor/color-palette-editor.js +30 -216
  69. package/dist/components/color-palette/editor/color-palette-editor.stories.d.ts +9 -2
  70. package/dist/components/color-palette/editor/color-palette-editor.stories.d.ts.map +1 -1
  71. package/dist/components/color-palette/editor/color-palette-editor.stories.js +32 -4
  72. package/dist/components/color-palette/editor/color-palette-editor.styles.d.ts +3 -0
  73. package/dist/components/color-palette/editor/color-palette-editor.styles.d.ts.map +1 -0
  74. package/dist/components/color-palette/editor/color-palette-editor.styles.js +147 -0
  75. package/dist/components/color-palette/editor/settings-item.d.ts +20 -0
  76. package/dist/components/color-palette/editor/settings-item.d.ts.map +1 -0
  77. package/dist/components/color-palette/editor/settings-item.js +43 -0
  78. package/dist/components/color-palette/editor/settings-item.styles.d.ts +3 -0
  79. package/dist/components/color-palette/editor/settings-item.styles.d.ts.map +1 -0
  80. package/dist/components/color-palette/editor/settings-item.styles.js +34 -0
  81. package/dist/components/color-palette/item/color-palette-item-edit.d.ts +9 -2
  82. package/dist/components/color-palette/item/color-palette-item-edit.d.ts.map +1 -1
  83. package/dist/components/color-palette/item/color-palette-item-edit.js +12 -57
  84. package/dist/components/color-palette/item/color-palette-item-edit.styles.d.ts +3 -0
  85. package/dist/components/color-palette/item/color-palette-item-edit.styles.d.ts.map +1 -0
  86. package/dist/components/color-palette/item/color-palette-item-edit.styles.js +51 -0
  87. package/dist/components/color-palette/item/color-palette-item.d.ts +21 -2
  88. package/dist/components/color-palette/item/color-palette-item.d.ts.map +1 -1
  89. package/dist/components/color-palette/item/color-palette-item.js +23 -89
  90. package/dist/components/color-palette/item/color-palette-item.styles.d.ts +3 -0
  91. package/dist/components/color-palette/item/color-palette-item.styles.d.ts.map +1 -0
  92. package/dist/components/color-palette/item/color-palette-item.styles.js +83 -0
  93. package/dist/components/color-palette/menu/color-palette-menu.d.ts +15 -3
  94. package/dist/components/color-palette/menu/color-palette-menu.d.ts.map +1 -1
  95. package/dist/components/color-palette/menu/color-palette-menu.js +15 -54
  96. package/dist/components/color-palette/menu/color-palette-menu.styles.d.ts +3 -0
  97. package/dist/components/color-palette/menu/color-palette-menu.styles.d.ts.map +1 -0
  98. package/dist/components/color-palette/menu/color-palette-menu.styles.js +49 -0
  99. package/dist/components/color-palette/menu/color-palette-reorder.d.ts +8 -1
  100. package/dist/components/color-palette/menu/color-palette-reorder.d.ts.map +1 -1
  101. package/dist/components/color-palette/menu/color-palette-reorder.js +11 -36
  102. package/dist/components/color-palette/menu/color-palette-reorder.styles.d.ts +3 -0
  103. package/dist/components/color-palette/menu/color-palette-reorder.styles.d.ts.map +1 -0
  104. package/dist/components/color-palette/menu/color-palette-reorder.styles.js +31 -0
  105. package/dist/components/color-palette/storybook/color-palette-invalid.stories.d.ts +26 -8
  106. package/dist/components/color-palette/storybook/color-palette-invalid.stories.d.ts.map +1 -1
  107. package/dist/components/color-palette/storybook/color-palette-invalid.stories.js +10 -39
  108. package/dist/components/color-palette/storybook/color-palette-valid.stories.d.ts +26 -8
  109. package/dist/components/color-palette/storybook/color-palette-valid.stories.d.ts.map +1 -1
  110. package/dist/components/color-palette/storybook/color-palette-valid.stories.js +30 -58
  111. package/dist/components/color-palette/storybook/color-palette.stories.d.ts +18 -4
  112. package/dist/components/color-palette/storybook/color-palette.stories.d.ts.map +1 -1
  113. package/dist/components/color-palette/storybook/color-palette.stories.js +65 -14
  114. package/dist/components/draw-svg/draw-svg.d.ts +11 -0
  115. package/dist/components/draw-svg/draw-svg.d.ts.map +1 -1
  116. package/dist/components/draw-svg/draw-svg.js +15 -45
  117. package/dist/components/draw-svg/draw-svg.stories.d.ts +2 -14
  118. package/dist/components/draw-svg/draw-svg.stories.d.ts.map +1 -1
  119. package/dist/components/draw-svg/draw-svg.stories.js +21 -97
  120. package/dist/components/draw-svg/draw-svg.styles.d.ts +3 -0
  121. package/dist/components/draw-svg/draw-svg.styles.d.ts.map +1 -0
  122. package/dist/components/draw-svg/draw-svg.styles.js +39 -0
  123. package/dist/components/responsive-svg/responsive-svg.d.ts +35 -15
  124. package/dist/components/responsive-svg/responsive-svg.d.ts.map +1 -1
  125. package/dist/components/responsive-svg/responsive-svg.js +59 -97
  126. package/dist/components/responsive-svg/responsive-svg.stories.d.ts +5 -4
  127. package/dist/components/responsive-svg/responsive-svg.stories.d.ts.map +1 -1
  128. package/dist/components/responsive-svg/responsive-svg.stories.js +93 -109
  129. package/dist/components/responsive-svg/responsive-svg.styles.d.ts +3 -0
  130. package/dist/components/responsive-svg/responsive-svg.styles.d.ts.map +1 -0
  131. package/dist/components/responsive-svg/responsive-svg.styles.js +46 -0
  132. package/dist/components/tool-tip/tool-tip.d.ts +24 -9
  133. package/dist/components/tool-tip/tool-tip.d.ts.map +1 -1
  134. package/dist/components/tool-tip/tool-tip.js +49 -90
  135. package/dist/components/tool-tip/tool-tip.stories.d.ts +4 -1
  136. package/dist/components/tool-tip/tool-tip.stories.d.ts.map +1 -1
  137. package/dist/components/tool-tip/tool-tip.stories.js +35 -5
  138. package/dist/components/tool-tip/tool-tip.styles.d.ts +3 -0
  139. package/dist/components/tool-tip/tool-tip.styles.d.ts.map +1 -0
  140. package/dist/components/tool-tip/tool-tip.styles.js +58 -0
  141. package/package.json +23 -19
  142. package/dist/components/bottom-sheet/bottom-sheet.test.d.ts +0 -2
  143. package/dist/components/bottom-sheet/bottom-sheet.test.d.ts.map +0 -1
  144. package/dist/components/bottom-sheet/bottom-sheet.test.js +0 -15
  145. package/dist/components/tool-tip/Tooltip2.d.ts +0 -17
  146. package/dist/components/tool-tip/Tooltip2.d.ts.map +0 -1
  147. package/dist/components/tool-tip/Tooltip2.js +0 -104
@@ -1,19 +1,7 @@
1
- import type { Meta, StoryObj } from '@storybook/web-components';
2
- import { TemplateResult } from 'lit';
3
- import { PreserveAspectRatio } from '../responsive-svg/responsive-svg.js';
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
+ import { Props } from '../responsive-svg/responsive-svg.stories.js';
4
3
  declare const meta: Meta;
5
4
  export default meta;
6
- type Props = {
7
- fontSize: number;
8
- stroke: string;
9
- fill: string;
10
- autofit: boolean;
11
- svgColors: boolean;
12
- height: number;
13
- width: number;
14
- svg: SVGElement | TemplateResult<2> | string;
15
- preserveAspectRatio: PreserveAspectRatio;
16
- };
17
5
  type Story = StoryObj<Props>;
18
6
  export declare const DrawSVG: Story;
19
7
  //# sourceMappingURL=draw-svg.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"draw-svg.stories.d.ts","sourceRoot":"","sources":["../../../src/components/draw-svg/draw-svg.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAQ,cAAc,EAAE,MAAM,KAAK,CAAC;AAG3C,OAAO,EAAE,mBAAmB,EAA8B,MAAM,qCAAqC,CAAC;AAEtG,QAAA,MAAM,IAAI,EAAE,IA0FX,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAAC,mBAAmB,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE7N,KAAK,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AA+B7B,eAAO,MAAM,OAAO,EAAE,KAarB,CAAC"}
1
+ {"version":3,"file":"draw-svg.stories.d.ts","sourceRoot":"","sources":["../../../src/components/draw-svg/draw-svg.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAK/E,OAA2B,EAAE,KAAK,EAAE,MAAM,6CAA6C,CAAC;AAQxF,QAAA,MAAM,IAAI,EAAE,IAKX,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAgC7B,eAAO,MAAM,OAAO,EAAE,KAgBrB,CAAC"}
@@ -1,109 +1,33 @@
1
1
  import { html } from 'lit';
2
2
  import { styleMap } from 'lit/directives/style-map.js';
3
3
  import DrawSVGRaw from '../../assets/DrawSVG.svg?raw';
4
- import { preserveAspectRatioOptions } from '../responsive-svg/responsive-svg.js';
4
+ import { expect } from 'storybook/test';
5
+ import ResponsiveSVGStory from '../responsive-svg/responsive-svg.stories.js';
6
+ const argTypes = {
7
+ ...ResponsiveSVGStory.argTypes,
8
+ isIntersecting: { control: false },
9
+ emitter: { control: false }
10
+ };
5
11
  const meta = {
6
- title: 'Draw SVG',
12
+ title: 'SVG/Draw SVG',
7
13
  tags: ['autodocs'],
8
14
  component: 'draw-svg',
9
- argTypes: {
10
- fontSize: {
11
- control: {
12
- type: 'number',
13
- step: 8
14
- },
15
- description: 'Set the font size in pixels the SVG will scale to (provided autofit is not being used)',
16
- table: {
17
- defaultValue: { summary: '128' }
18
- }
19
- },
20
- stroke: {
21
- control: {
22
- type: 'color',
23
- presetColors: [
24
- 'rebeccapurple', 'black'
25
- ]
26
- },
27
- description: 'Set the Path stroke color',
28
- table: {
29
- defaultValue: { summary: 'rebeccapurple' }
30
- }
31
- },
32
- fill: {
33
- control: {
34
- type: 'color',
35
- presetColors: [
36
- 'rebeccapurple', 'black'
37
- ]
38
- },
39
- description: 'Set the SVG and Path fill color',
40
- table: {
41
- defaultValue: { summary: 'black' }
42
- }
43
- },
44
- autofit: {
45
- control: {
46
- type: 'boolean'
47
- },
48
- description: 'Set whether the SVG will fill the container or available space',
49
- table: {
50
- defaultValue: { summary: 'false' }
51
- },
52
- },
53
- svgColors: {
54
- control: {
55
- type: 'boolean',
56
- },
57
- description: 'Uses the colors from the SVG input',
58
- table: {
59
- defaultValue: { summary: 'false' }
60
- }
61
- },
62
- height: {
63
- control: {
64
- type: 'number',
65
- },
66
- description: 'Set the SVG height',
67
- table: {
68
- defaultValue: { summary: '0' }
69
- }
70
- },
71
- width: {
72
- control: {
73
- type: 'number',
74
- },
75
- description: 'Set the SVG width',
76
- table: {
77
- defaultValue: { summary: '0' }
78
- }
79
- },
80
- svg: {
81
- control: {
82
- type: 'text',
83
- },
84
- description: 'Input a string representing an SVG'
85
- },
86
- preserveAspectRatio: {
87
- control: 'select',
88
- options: preserveAspectRatioOptions,
89
- description: 'Set whether SVG preserves its aspect ratio alignment or spacing',
90
- table: {
91
- defaultValue: { summary: 'xMidYMid meet' }
92
- }
93
- },
94
- }
15
+ argTypes
95
16
  };
96
17
  export default meta;
97
- const Template = {
98
- render: ({ fontSize, stroke, fill, autofit, svgColors, height, width, svg, preserveAspectRatio }) => {
18
+ const template = {
19
+ render: ({ fontSize, stroke, fill, autofit, svgColors, svg, preserveAspectRatio, "--svg-height": height, "--svg-width": width, "--scale": scale }) => {
99
20
  const styles = {
21
+ 'font-size': `${fontSize}px`,
100
22
  stroke,
101
23
  fill,
102
- 'font-size': `${fontSize}px`
24
+ '--svg-height': height !== '0em' ? height : null,
25
+ '--svg-width': width !== '0em' ? width : null,
26
+ '--scale': scale
103
27
  };
104
28
  return html `
105
29
  <style>
106
- draw-svg::part(path) {
30
+ draw-svg::part(__path) {
107
31
  animation-iteration-count: infinite;
108
32
  }
109
33
  </style>
@@ -111,8 +35,6 @@ const Template = {
111
35
  <draw-svg
112
36
  ?autofit=${autofit}
113
37
  ?svgColors=${svgColors}
114
- height=${height}
115
- width=${width}
116
38
  .preserveAspectRatio=${preserveAspectRatio}
117
39
  .svg=${svg}
118
40
  style=${styleMap(styles)}
@@ -122,16 +44,18 @@ const Template = {
122
44
  },
123
45
  };
124
46
  export const DrawSVG = {
125
- ...Template,
47
+ ...template,
126
48
  args: {
127
49
  fontSize: 128,
128
50
  stroke: 'red',
129
51
  fill: 'black',
130
52
  autofit: false,
131
53
  svgColors: false,
132
- height: 0,
133
- width: 0,
134
54
  svg: DrawSVGRaw,
135
55
  preserveAspectRatio: 'xMidYMid meet'
136
56
  },
57
+ play: async ({ canvasElement }) => {
58
+ const component = canvasElement.querySelector('draw-svg');
59
+ expect(component);
60
+ }
137
61
  };
@@ -0,0 +1,3 @@
1
+ declare const _default: import("lit").CSSResult;
2
+ export default _default;
3
+ //# sourceMappingURL=draw-svg.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draw-svg.styles.d.ts","sourceRoot":"","sources":["../../../src/components/draw-svg/draw-svg.styles.ts"],"names":[],"mappings":";AAEA,wBAqCE"}
@@ -0,0 +1,39 @@
1
+ import { css } from 'lit';
2
+ export default css `
3
+ :host {
4
+ stroke: white;
5
+ fill: white;
6
+ }
7
+
8
+ /* Override responsive-svg path fill */
9
+ :host(:not([svgColors])) path {
10
+ fill: transparent;
11
+ }
12
+
13
+ path {
14
+ stroke-width: 2;
15
+ stroke-dasharray: 1000;
16
+ stroke-dashoffset: 1000;
17
+ }
18
+
19
+ .animation {
20
+ path {
21
+ animation: textAnimation 2s ease-in-out 1 forwards;
22
+ will-change: fill, stroke-width, stroke-dashoffset;
23
+ }
24
+ }
25
+
26
+ @keyframes textAnimation {
27
+ 0% {
28
+ stroke-dashoffset: 1000;
29
+ }
30
+ 60% {
31
+ fill: transparent;
32
+ }
33
+ 100% {
34
+ fill: inherit;
35
+ stroke-dashoffset: 0;
36
+ stroke-width: 1;
37
+ }
38
+ }
39
+ `;
@@ -1,5 +1,5 @@
1
1
  import { LitElement, TemplateResult } from 'lit';
2
- type ViewBoxType = {
2
+ type ViewBox = {
3
3
  x: number;
4
4
  y: number;
5
5
  width: number;
@@ -12,35 +12,55 @@ export type PreserveAspectRatioAlign = typeof preserveAspectRatioAlignOptions[nu
12
12
  export type PreserveAspectRatioSpacing = typeof preserveAspectRatioSpacingOptions[number];
13
13
  export type PreserveAspectRatio = typeof preserveAspectRatioOptions[number];
14
14
  export type CombinedAlignSpacing = `${PreserveAspectRatioAlign} ${PreserveAspectRatioSpacing}`;
15
+ /**
16
+ * Responsively sizes SVGs to font-size or automatically fits them to the container.
17
+ *
18
+ * @cssprop {<length> (em)} --svg-width - Controls the width of the SVG. (Expects em value)
19
+ * @cssprop {<length> (em)} --svg-height - Controls the height of the SVG. (Expects em value)
20
+ * @cssprop {<length> (em)} --svg-width-fallback - Set by the component as a fallback in case --svg-width is not defined.
21
+ * @cssprop {<length> (em)} --svg-height-fallback - Set by the component as a fallback in case --svg-height is not defined.
22
+ * @cssprop {number} --scale - Controls the scale of the SVG when sized relative to font-size.
23
+ *
24
+ * @csspart __svg - Styles the SVG element.
25
+ * @csspart __path - Styles all child path elements of the SVG.
26
+ */
15
27
  export declare class ResponsiveSvg extends LitElement {
16
28
  static styles: import("lit").CSSResult[];
29
+ /** The SVG will attempt to fill its container. */
17
30
  autofit: boolean;
18
- /** Uses the colors from the SVG input */
31
+ /** Use the colors from the SVG input. */
19
32
  svgColors: boolean;
20
- height: number;
21
- width: number;
33
+ /** @internal */
22
34
  private _svg?;
23
- /** Must use a property expression (.) to set */
35
+ /**
36
+ * The SVG to responsively size.
37
+ * Must use a property expression (.) to set
38
+ * @type {SVGElement | TemplateResult<2> | string}
39
+ */
24
40
  set svg(val: SVGElement | TemplateResult<2> | string);
25
41
  get svg(): SVGElement | TemplateResult<2> | string;
42
+ /** @internal */
26
43
  private _preserveAspectRatio;
27
- /** Defaults to xMidYMid meet */
44
+ /**
45
+ * Set whether SVG preserves its aspect ratio alignment or spacing.
46
+ * @type {PreserveAspectRatio}
47
+ * @default xMidYMid meet
48
+ */
28
49
  set preserveAspectRatio(val: PreserveAspectRatio | undefined);
29
50
  get preserveAspectRatio(): PreserveAspectRatio | undefined;
30
- private _viewBox;
31
- set viewBox(val: ViewBoxType);
32
- get viewBox(): ViewBoxType;
51
+ /** The viewBox dimensions the SVG will use. */
52
+ protected viewBox: ViewBox;
33
53
  protected svgClasses(): {};
54
+ connectedCallback(): void;
34
55
  render(): TemplateResult<1> | undefined;
35
- /**
36
- * Applies a part name to all paths in the given element
37
- */
56
+ /** Applies a part name to all paths in the given element. */
38
57
  private applyPartToPaths;
39
58
  /**
40
- * @param svg
41
- * @returns The SVG viewbox x, y, width, and height
59
+ * Gets the viewBox dimensions from an SVG element.
60
+ * @param svg The SVG to get the attribute from.
61
+ * @returns The SVG viewBox x, y, width, and height
42
62
  */
43
- getViewBoxSize(svg: SVGElement): ViewBoxType | null;
63
+ getViewBoxSize(svg: SVGElement): ViewBox | null;
44
64
  }
45
65
  declare global {
46
66
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"responsive-svg.d.ts","sourceRoot":"","sources":["../../../src/components/responsive-svg/responsive-svg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA6B,cAAc,EAAE,MAAM,KAAK,CAAC;AAQ5E,KAAK,WAAW,GAAG;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,+BAA+B,+HAKlC,CAAC;AAEX,eAAO,MAAM,iCAAiC,4BAA6B,CAAC;AAE5E,eAAO,MAAM,0BAA0B,+eAG7B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,OAAO,+BAA+B,CAAC,MAAM,CAAC,CAAC;AACtF,MAAM,MAAM,0BAA0B,GAAG,OAAO,iCAAiC,CAAC,MAAM,CAAC,CAAC;AAC1F,MAAM,MAAM,mBAAmB,GAAG,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC5E,MAAM,MAAM,oBAAoB,GAAG,GAAG,wBAAwB,IAAI,0BAA0B,EAAE,CAAC;AAQ/F,qBACa,aAAc,SAAQ,UAAU;IAC5C,MAAM,CAAC,MAAM,4BA+CX;IAGF,OAAO,EAAE,OAAO,CAAS;IAEzB,yCAAyC;IAEzC,SAAS,EAAE,OAAO,CAAS;IAG3B,MAAM,EAAE,MAAM,CAAK;IAGnB,KAAK,EAAE,MAAM,CAAK;IAElB,OAAO,CAAC,IAAI,CAAC,CAAiC;IAC9C,gDAAgD;IAChD,IACI,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,EASnD;IACD,IAAI,GAAG,IAVM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAYnD;IAED,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,gCAAgC;IAChC,IACI,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,SAAS,EAE3D;IACD,IAAI,mBAAmB,IAHM,mBAAmB,GAAG,SAAS,CAW3D;IAED,OAAO,CAAC,QAAQ,CAAoD;IACpE,IACI,OAAO,CAAC,GAAG,EAAE,WAAW,EAE3B;IACD,IAAI,OAAO,IAHM,WAAW,CAc3B;IAGD,SAAS,CAAC,UAAU;IAIpB,MAAM;IA2CN;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;;OAGG;IACI,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI;CAM1D;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,gBAAgB,EAAE,aAAa,CAAC;KAChC;CACD"}
1
+ {"version":3,"file":"responsive-svg.d.ts","sourceRoot":"","sources":["../../../src/components/responsive-svg/responsive-svg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,cAAc,EAAkB,MAAM,KAAK,CAAC;AAQvE,KAAK,OAAO,GAAG;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,+BAA+B,+HAKlC,CAAC;AAEX,eAAO,MAAM,iCAAiC,4BAA6B,CAAC;AAE5E,eAAO,MAAM,0BAA0B,+eAG7B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,OAAO,+BAA+B,CAAC,MAAM,CAAC,CAAC;AACtF,MAAM,MAAM,0BAA0B,GAAG,OAAO,iCAAiC,CAAC,MAAM,CAAC,CAAC;AAC1F,MAAM,MAAM,mBAAmB,GAAG,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAC5E,MAAM,MAAM,oBAAoB,GAAG,GAAG,wBAAwB,IAAI,0BAA0B,EAAE,CAAC;AAQ/F;;;;;;;;;;;GAWG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC5C,MAAM,CAAC,MAAM,4BAAY;IAEzB,kDAAkD;IAElD,OAAO,EAAE,OAAO,CAAS;IAEzB,yCAAyC;IAEzC,SAAS,EAAE,OAAO,CAAS;IAE3B,gBAAgB;IAChB,OAAO,CAAC,IAAI,CAAC,CAAiC;IAC9C;;;;OAIG;IACH,IACI,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,EASnD;IACD,IAAI,GAAG,IAVM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAYnD;IAED,gBAAgB;IAChB,OAAO,CAAC,oBAAoB,CAAkC;IAC9D;;;;OAIG;IACH,IACI,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,SAAS,EAE3D;IACD,IAAI,mBAAmB,IAHM,mBAAmB,GAAG,SAAS,CAW3D;IAED,+CAA+C;IAC/C,SAAS,CAAC,OAAO,EAAE,OAAO,CAAuC;IAGjE,SAAS,CAAC,UAAU;IAIpB,iBAAiB,IAAI,IAAI;IAkBzB,MAAM;IAwCN,6DAA6D;IAC7D,OAAO,CAAC,gBAAgB;IAaxB;;;;OAIG;IACI,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,GAAG,IAAI;CAMtD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,gBAAgB,EAAE,aAAa,CAAC;KAChC;CACD"}
@@ -4,13 +4,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { LitElement, html, css } from 'lit';
8
- import { property, state } from 'lit/decorators.js';
7
+ import { LitElement, html } from 'lit';
8
+ import { customElement, property } from 'lit/decorators.js';
9
9
  import { styleMap } from 'lit/directives/style-map.js';
10
- import { condCustomElement } from '../../decorators/condCustomElement.js';
11
10
  import { parseSVG } from '../../utils/basicUtils.js';
12
11
  import { classMap } from 'lit/directives/class-map.js';
13
12
  import { isTemplateResult } from 'lit/directive-helpers.js';
13
+ import styles from './responsive-svg.styles.js';
14
14
  export const preserveAspectRatioAlignOptions = [
15
15
  "none",
16
16
  "xMinYMin", "xMidYMin", "xMaxYMin",
@@ -26,17 +26,34 @@ const preserveAspectRatioSet = new Set(preserveAspectRatioOptions);
26
26
  function isPreserveAspectRatio(value) {
27
27
  return preserveAspectRatioSet.has(value);
28
28
  }
29
+ /**
30
+ * Responsively sizes SVGs to font-size or automatically fits them to the container.
31
+ *
32
+ * @cssprop {<length> (em)} --svg-width - Controls the width of the SVG. (Expects em value)
33
+ * @cssprop {<length> (em)} --svg-height - Controls the height of the SVG. (Expects em value)
34
+ * @cssprop {<length> (em)} --svg-width-fallback - Set by the component as a fallback in case --svg-width is not defined.
35
+ * @cssprop {<length> (em)} --svg-height-fallback - Set by the component as a fallback in case --svg-height is not defined.
36
+ * @cssprop {number} --scale - Controls the scale of the SVG when sized relative to font-size.
37
+ *
38
+ * @csspart __svg - Styles the SVG element.
39
+ * @csspart __path - Styles all child path elements of the SVG.
40
+ */
29
41
  let ResponsiveSvg = class ResponsiveSvg extends LitElement {
30
42
  constructor() {
31
43
  super(...arguments);
44
+ /** The SVG will attempt to fill its container. */
32
45
  this.autofit = false;
33
- /** Uses the colors from the SVG input */
46
+ /** Use the colors from the SVG input. */
34
47
  this.svgColors = false;
35
- this.height = 0;
36
- this.width = 0;
37
- this._viewBox = { x: 0, y: 0, width: 0, height: 0 };
48
+ /** The viewBox dimensions the SVG will use. */
49
+ this.viewBox = { x: 0, y: 0, width: 0, height: 0 };
38
50
  }
39
- /** Must use a property expression (.) to set */
51
+ static { this.styles = [styles]; }
52
+ /**
53
+ * The SVG to responsively size.
54
+ * Must use a property expression (.) to set
55
+ * @type {SVGElement | TemplateResult<2> | string}
56
+ */
40
57
  set svg(val) {
41
58
  const _svg = val instanceof SVGElement
42
59
  ? val : isTemplateResult(val)
@@ -49,7 +66,11 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
49
66
  get svg() {
50
67
  return this._svg ?? '';
51
68
  }
52
- /** Defaults to xMidYMid meet */
69
+ /**
70
+ * Set whether SVG preserves its aspect ratio alignment or spacing.
71
+ * @type {PreserveAspectRatio}
72
+ * @default xMidYMid meet
73
+ */
53
74
  set preserveAspectRatio(val) {
54
75
  this._preserveAspectRatio = val;
55
76
  }
@@ -63,32 +84,28 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
63
84
  // Otherwise return the preserveAspectRatio the user set OR default value
64
85
  return this._preserveAspectRatio || 'xMidYMid meet';
65
86
  }
66
- set viewBox(val) {
67
- this._viewBox = val;
87
+ // For classes inheriting from responsive-svg (e.g. draw-svg)
88
+ svgClasses() {
89
+ return {};
68
90
  }
69
- get viewBox() {
91
+ connectedCallback() {
92
+ super.connectedCallback();
70
93
  if (this.svg instanceof SVGElement) {
71
94
  const _viewBox = this.getViewBoxSize(this.svg);
72
- const _width = Number(this.svg.getAttribute('width'));
73
- const _height = Number(this.svg.getAttribute('height'));
74
- // Use viewbox values first, otherwise use height and width attributes.
75
- return _viewBox ?? { x: 0, y: 0, width: _width || 0, height: _height || 0 };
95
+ const _width = this.svg.getAttribute('width');
96
+ const _height = this.svg.getAttribute('height');
97
+ this.viewBox = _viewBox ?? { x: 0, y: 0, width: Number(_width) || 0, height: Number(_height) || 0 };
98
+ }
99
+ else {
100
+ const _width = this.style.getPropertyValue('--svg-width');
101
+ const _height = this.style.getPropertyValue('--svg-height');
102
+ this.viewBox = { x: 0, y: 0, width: parseFloat(_width) || 0, height: parseFloat(_height) || 0 };
76
103
  }
77
- return this._viewBox;
78
- }
79
- // For classes inheriting from responsive-svg (e.g. draw-svg)
80
- svgClasses() {
81
- return {};
82
104
  }
83
105
  render() {
84
- const width = this.width !== 0 ? this.width : this.viewBox.width;
85
- const height = this.height !== 0 ? this.height : this.viewBox.height;
106
+ const viewBox = this.viewBox;
86
107
  const preserveAspectRatio = this.preserveAspectRatio;
87
108
  const svgClasses = this.svgClasses();
88
- const styles = {
89
- '--svg-width': `${width}em`,
90
- '--svg-height': `${height}em`,
91
- };
92
109
  // Check if svg exists, otherwise early return
93
110
  if (typeof this.svg === 'string')
94
111
  return html `<p style="font-size: initial;">⚠️ SVG Error</p>`;
@@ -96,21 +113,24 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
96
113
  // SVGElement provided as input
97
114
  if (this.svg instanceof SVGElement) {
98
115
  const clonedSVG = this.svg.cloneNode(true);
99
- this.applyPartToPaths(clonedSVG, 'path');
100
- return buildSVG(Array.from(clonedSVG.children), width, height);
116
+ this.applyPartToPaths(clonedSVG, '__path');
117
+ return buildSVG(Array.from(clonedSVG.children), viewBox);
101
118
  }
102
119
  // TemplateResult<2> provided as input
103
120
  else
104
- return buildSVG(this.svg, width, height);
121
+ return buildSVG(this.svg, viewBox);
105
122
  }
106
- function buildSVG(svg, width, height) {
123
+ function buildSVG(svg, viewBox) {
107
124
  if (svg) {
108
125
  return html `
109
126
  <svg
110
- part="svg"
127
+ part="__svg"
111
128
  class=${classMap(svgClasses)}
112
- style=${styleMap(styles)}
113
- viewBox="0 0 ${width} ${height}"
129
+ style=${styleMap({
130
+ '--svg-width-fallback': `${viewBox.width}em`,
131
+ '--svg-height-fallback': `${viewBox.height}em`,
132
+ })}
133
+ viewBox="${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}"
114
134
  preserveAspectRatio=${preserveAspectRatio}
115
135
  xmlns="http://www.w3.org/2000/svg"
116
136
  >
@@ -120,9 +140,7 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
120
140
  }
121
141
  }
122
142
  }
123
- /**
124
- * Applies a part name to all paths in the given element
125
- */
143
+ /** Applies a part name to all paths in the given element. */
126
144
  applyPartToPaths(element, partValue) {
127
145
  if (element instanceof Element) {
128
146
  if (element.tagName.toLowerCase() === 'path') {
@@ -135,8 +153,9 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
135
153
  }
136
154
  }
137
155
  /**
138
- * @param svg
139
- * @returns The SVG viewbox x, y, width, and height
156
+ * Gets the viewBox dimensions from an SVG element.
157
+ * @param svg The SVG to get the attribute from.
158
+ * @returns The SVG viewBox x, y, width, and height
140
159
  */
141
160
  getViewBoxSize(svg) {
142
161
  const viewBox = svg.getAttribute('viewBox')?.split(' ');
@@ -145,76 +164,19 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
145
164
  return { x: +viewBox[0], y: +viewBox[1], width: +viewBox[2], height: +viewBox[3] };
146
165
  }
147
166
  };
148
- ResponsiveSvg.styles = [
149
- css `
150
- :host {
151
- display: block;
152
- --svg-width: 0;
153
- --svg-height: 0;
154
- --scale: 1;
155
- }
156
-
157
- :host([autofit]), :host([autofit]) svg {
158
- width: 100%;
159
- height: 100%;
160
- }
161
-
162
- /* Size scaling based on font-size */
163
- :host(:not([autofit])) {
164
- /* Removes extra space from under SVG */
165
- display: flex;
166
- }
167
-
168
- :host(:not([autofit])) svg {
169
- /* Allow SVG to be manipulated by font size */
170
- display: inline-block;
171
- /* Change SVG size using font-size */
172
- font-size: inherit;
173
- /* Remove extra vertical space in inline element reserved for character descenders */
174
- vertical-align: top;
175
-
176
- width: calc(var(--svg-width) / 100 * var(--scale));
177
- height: calc(var(--svg-height) / 100 * var(--scale));
178
- }
179
-
180
- :host(:not([svgColors])) svg {
181
- /* Inherit fill to bypass default */
182
- fill: inherit;
183
- }
184
-
185
- :host(:not([svgColors])) path {
186
- fill: inherit;
187
- stroke: inherit;
188
- }
189
-
190
- svg {
191
- max-width: 100%;
192
- max-height: 100%;
193
- }
194
- `,
195
- ];
196
167
  __decorate([
197
168
  property({ type: Boolean, reflect: true })
198
169
  ], ResponsiveSvg.prototype, "autofit", void 0);
199
170
  __decorate([
200
171
  property({ type: Boolean, reflect: true })
201
172
  ], ResponsiveSvg.prototype, "svgColors", void 0);
202
- __decorate([
203
- property({ type: Number, reflect: true })
204
- ], ResponsiveSvg.prototype, "height", void 0);
205
- __decorate([
206
- property({ type: Number, reflect: true })
207
- ], ResponsiveSvg.prototype, "width", void 0);
208
173
  __decorate([
209
174
  property({ type: Object })
210
175
  ], ResponsiveSvg.prototype, "svg", null);
211
176
  __decorate([
212
177
  property({ type: String, reflect: true })
213
178
  ], ResponsiveSvg.prototype, "preserveAspectRatio", null);
214
- __decorate([
215
- state()
216
- ], ResponsiveSvg.prototype, "viewBox", null);
217
179
  ResponsiveSvg = __decorate([
218
- condCustomElement('responsive-svg')
180
+ customElement('responsive-svg')
219
181
  ], ResponsiveSvg);
220
182
  export { ResponsiveSvg };
@@ -1,18 +1,19 @@
1
- import type { Meta, StoryObj } from '@storybook/web-components';
1
+ import type { Meta, StoryObj } from '@storybook/web-components-vite';
2
2
  import { TemplateResult } from 'lit';
3
3
  import { PreserveAspectRatio } from './responsive-svg.js';
4
4
  declare const meta: Meta;
5
5
  export default meta;
6
- type Props = {
6
+ export type Props = {
7
7
  fontSize: number;
8
8
  stroke: string;
9
9
  fill: string;
10
10
  autofit: boolean;
11
11
  svgColors: boolean;
12
- height: number;
13
- width: number;
14
12
  svg: SVGElement | TemplateResult<2> | string;
15
13
  preserveAspectRatio: PreserveAspectRatio;
14
+ '--svg-height': string;
15
+ '--svg-width': string;
16
+ '--scale': number;
16
17
  };
17
18
  type Story = StoryObj<Props>;
18
19
  export declare const SVG: Story;
@@ -1 +1 @@
1
- {"version":3,"file":"responsive-svg.stories.d.ts","sourceRoot":"","sources":["../../../src/components/responsive-svg/responsive-svg.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAMhD,OAAO,EAAE,mBAAmB,EAA8B,MAAM,qBAAqB,CAAC;AAEtF,QAAA,MAAM,IAAI,EAAE,IA0FX,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAAC,mBAAmB,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE7N,KAAK,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAyB7B,eAAO,MAAM,GAAG,EAAE,KAYjB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAY7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAY5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAYzB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAYrB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAY/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KAWnC,CAAC"}
1
+ {"version":3,"file":"responsive-svg.stories.d.ts","sourceRoot":"","sources":["../../../src/components/responsive-svg/responsive-svg.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,IAAI,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAMhD,OAAO,EAAE,mBAAmB,EAA8B,MAAM,qBAAqB,CAAC;AAkEtF,QAAA,MAAM,IAAI,EAAE,IAKX,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,MAAM,MAAM,KAAK,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC7C,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAA;CACjB,CAAC;AAEF,KAAK,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AA0B7B,eAAO,MAAM,GAAG,EAAE,KAWjB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAY7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAU5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAoBzB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAoBrB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAU/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KASnC,CAAC"}