@alegendstale/holly-components 1.3.1 → 2.0.1
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/README.md +9 -5
- package/dist/components/absolute-container/absolute-container.d.ts +17 -3
- package/dist/components/absolute-container/absolute-container.d.ts.map +1 -1
- package/dist/components/absolute-container/absolute-container.js +21 -24
- package/dist/components/absolute-container/absolute-container.stories.d.ts +3 -1
- package/dist/components/absolute-container/absolute-container.stories.d.ts.map +1 -1
- package/dist/components/absolute-container/absolute-container.stories.js +35 -7
- package/dist/components/absolute-container/absolute-container.styles.d.ts +3 -0
- package/dist/components/absolute-container/absolute-container.styles.d.ts.map +1 -0
- package/dist/components/absolute-container/absolute-container.styles.js +18 -0
- package/dist/components/bottom-sheet/bottom-sheet.d.ts +25 -0
- package/dist/components/bottom-sheet/bottom-sheet.d.ts.map +1 -1
- package/dist/components/bottom-sheet/bottom-sheet.js +27 -125
- package/dist/components/bottom-sheet/bottom-sheet.stories.d.ts +5 -2
- package/dist/components/bottom-sheet/bottom-sheet.stories.d.ts.map +1 -1
- package/dist/components/bottom-sheet/bottom-sheet.stories.js +31 -7
- package/dist/components/bottom-sheet/bottom-sheet.styles.d.ts +3 -0
- package/dist/components/bottom-sheet/bottom-sheet.styles.d.ts.map +1 -0
- package/dist/components/bottom-sheet/bottom-sheet.styles.js +115 -0
- package/dist/components/canvas/canvas-base.d.ts +8 -1
- package/dist/components/canvas/canvas-base.d.ts.map +1 -1
- package/dist/components/canvas/canvas-base.js +14 -11
- package/dist/components/canvas/canvas-base.stories.d.ts +7 -0
- package/dist/components/canvas/canvas-base.stories.d.ts.map +1 -0
- package/dist/components/canvas/canvas-base.stories.js +24 -0
- package/dist/components/canvas/canvas-gradient.d.ts +10 -3
- package/dist/components/canvas/canvas-gradient.d.ts.map +1 -1
- package/dist/components/canvas/canvas-gradient.js +13 -9
- package/dist/components/canvas/canvas-gradient.stories.d.ts +14 -0
- package/dist/components/canvas/canvas-gradient.stories.d.ts.map +1 -0
- package/dist/components/canvas/canvas-gradient.stories.js +46 -0
- package/dist/components/canvas/canvas-image.d.ts +25 -16
- package/dist/components/canvas/canvas-image.d.ts.map +1 -1
- package/dist/components/canvas/canvas-image.js +84 -72
- package/dist/components/canvas/canvas-image.stories.d.ts +13 -0
- package/dist/components/canvas/canvas-image.stories.d.ts.map +1 -0
- package/dist/components/canvas/canvas-image.stories.js +49 -0
- package/dist/components/canvas/canvas-image.styles.d.ts +3 -0
- package/dist/components/canvas/canvas-image.styles.d.ts.map +1 -0
- package/dist/components/canvas/canvas-image.styles.js +21 -0
- package/dist/components/carousel-scroller/carousel-scroller.d.ts +23 -6
- package/dist/components/carousel-scroller/carousel-scroller.d.ts.map +1 -1
- package/dist/components/carousel-scroller/carousel-scroller.js +32 -80
- package/dist/components/carousel-scroller/carousel-scroller.stories.d.ts +4 -2
- package/dist/components/carousel-scroller/carousel-scroller.stories.d.ts.map +1 -1
- package/dist/components/carousel-scroller/carousel-scroller.stories.js +22 -6
- package/dist/components/carousel-scroller/carousel-scroller.styles.d.ts +3 -0
- package/dist/components/carousel-scroller/carousel-scroller.styles.d.ts.map +1 -0
- package/dist/components/carousel-scroller/carousel-scroller.styles.js +66 -0
- package/dist/components/color-palette/color-palette-utils.d.ts.map +1 -1
- package/dist/components/color-palette/color-palette.d.ts +53 -16
- package/dist/components/color-palette/color-palette.d.ts.map +1 -1
- package/dist/components/color-palette/color-palette.js +72 -126
- package/dist/components/color-palette/color-palette.styles.d.ts +3 -0
- package/dist/components/color-palette/color-palette.styles.d.ts.map +1 -0
- package/dist/components/color-palette/color-palette.styles.js +90 -0
- package/dist/components/color-palette/component/color-palette-component.d.ts +16 -2
- package/dist/components/color-palette/component/color-palette-component.d.ts.map +1 -1
- package/dist/components/color-palette/component/color-palette-component.js +18 -19
- package/dist/components/color-palette/component/color-palette-component.stories.d.ts +4 -2
- package/dist/components/color-palette/component/color-palette-component.stories.d.ts.map +1 -1
- package/dist/components/color-palette/component/color-palette-component.stories.js +34 -36
- package/dist/components/color-palette/component/color-palette-component.styles.d.ts +3 -0
- package/dist/components/color-palette/component/color-palette-component.styles.d.ts.map +1 -0
- package/dist/components/color-palette/component/color-palette-component.styles.js +10 -0
- package/dist/components/color-palette/editor/color-palette-editor.d.ts +28 -14
- package/dist/components/color-palette/editor/color-palette-editor.d.ts.map +1 -1
- package/dist/components/color-palette/editor/color-palette-editor.js +30 -216
- package/dist/components/color-palette/editor/color-palette-editor.stories.d.ts +9 -2
- package/dist/components/color-palette/editor/color-palette-editor.stories.d.ts.map +1 -1
- package/dist/components/color-palette/editor/color-palette-editor.stories.js +32 -4
- package/dist/components/color-palette/editor/color-palette-editor.styles.d.ts +3 -0
- package/dist/components/color-palette/editor/color-palette-editor.styles.d.ts.map +1 -0
- package/dist/components/color-palette/editor/color-palette-editor.styles.js +147 -0
- package/dist/components/color-palette/editor/settings-item.d.ts +20 -0
- package/dist/components/color-palette/editor/settings-item.d.ts.map +1 -0
- package/dist/components/color-palette/editor/settings-item.js +43 -0
- package/dist/components/color-palette/editor/settings-item.styles.d.ts +3 -0
- package/dist/components/color-palette/editor/settings-item.styles.d.ts.map +1 -0
- package/dist/components/color-palette/editor/settings-item.styles.js +34 -0
- package/dist/components/color-palette/item/color-palette-item-edit.d.ts +9 -2
- package/dist/components/color-palette/item/color-palette-item-edit.d.ts.map +1 -1
- package/dist/components/color-palette/item/color-palette-item-edit.js +12 -57
- package/dist/components/color-palette/item/color-palette-item-edit.styles.d.ts +3 -0
- package/dist/components/color-palette/item/color-palette-item-edit.styles.d.ts.map +1 -0
- package/dist/components/color-palette/item/color-palette-item-edit.styles.js +51 -0
- package/dist/components/color-palette/item/color-palette-item.d.ts +21 -2
- package/dist/components/color-palette/item/color-palette-item.d.ts.map +1 -1
- package/dist/components/color-palette/item/color-palette-item.js +23 -89
- package/dist/components/color-palette/item/color-palette-item.styles.d.ts +3 -0
- package/dist/components/color-palette/item/color-palette-item.styles.d.ts.map +1 -0
- package/dist/components/color-palette/item/color-palette-item.styles.js +83 -0
- package/dist/components/color-palette/menu/color-palette-menu.d.ts +15 -3
- package/dist/components/color-palette/menu/color-palette-menu.d.ts.map +1 -1
- package/dist/components/color-palette/menu/color-palette-menu.js +15 -54
- package/dist/components/color-palette/menu/color-palette-menu.styles.d.ts +3 -0
- package/dist/components/color-palette/menu/color-palette-menu.styles.d.ts.map +1 -0
- package/dist/components/color-palette/menu/color-palette-menu.styles.js +49 -0
- package/dist/components/color-palette/menu/color-palette-reorder.d.ts +8 -1
- package/dist/components/color-palette/menu/color-palette-reorder.d.ts.map +1 -1
- package/dist/components/color-palette/menu/color-palette-reorder.js +11 -36
- package/dist/components/color-palette/menu/color-palette-reorder.styles.d.ts +3 -0
- package/dist/components/color-palette/menu/color-palette-reorder.styles.d.ts.map +1 -0
- package/dist/components/color-palette/menu/color-palette-reorder.styles.js +31 -0
- package/dist/components/color-palette/storybook/color-palette-invalid.stories.d.ts +26 -8
- package/dist/components/color-palette/storybook/color-palette-invalid.stories.d.ts.map +1 -1
- package/dist/components/color-palette/storybook/color-palette-invalid.stories.js +10 -39
- package/dist/components/color-palette/storybook/color-palette-valid.stories.d.ts +26 -8
- package/dist/components/color-palette/storybook/color-palette-valid.stories.d.ts.map +1 -1
- package/dist/components/color-palette/storybook/color-palette-valid.stories.js +30 -58
- package/dist/components/color-palette/storybook/color-palette.stories.d.ts +18 -4
- package/dist/components/color-palette/storybook/color-palette.stories.d.ts.map +1 -1
- package/dist/components/color-palette/storybook/color-palette.stories.js +65 -14
- package/dist/components/draw-svg/draw-svg.d.ts +11 -0
- package/dist/components/draw-svg/draw-svg.d.ts.map +1 -1
- package/dist/components/draw-svg/draw-svg.js +15 -45
- package/dist/components/draw-svg/draw-svg.stories.d.ts +2 -14
- package/dist/components/draw-svg/draw-svg.stories.d.ts.map +1 -1
- package/dist/components/draw-svg/draw-svg.stories.js +21 -97
- package/dist/components/draw-svg/draw-svg.styles.d.ts +3 -0
- package/dist/components/draw-svg/draw-svg.styles.d.ts.map +1 -0
- package/dist/components/draw-svg/draw-svg.styles.js +39 -0
- package/dist/components/responsive-svg/responsive-svg.d.ts +35 -15
- package/dist/components/responsive-svg/responsive-svg.d.ts.map +1 -1
- package/dist/components/responsive-svg/responsive-svg.js +50 -92
- package/dist/components/responsive-svg/responsive-svg.stories.d.ts +5 -4
- package/dist/components/responsive-svg/responsive-svg.stories.d.ts.map +1 -1
- package/dist/components/responsive-svg/responsive-svg.stories.js +90 -108
- package/dist/components/responsive-svg/responsive-svg.styles.d.ts +3 -0
- package/dist/components/responsive-svg/responsive-svg.styles.d.ts.map +1 -0
- package/dist/components/responsive-svg/responsive-svg.styles.js +46 -0
- package/dist/components/tool-tip/tool-tip.d.ts +24 -9
- package/dist/components/tool-tip/tool-tip.d.ts.map +1 -1
- package/dist/components/tool-tip/tool-tip.js +49 -90
- package/dist/components/tool-tip/tool-tip.stories.d.ts +4 -1
- package/dist/components/tool-tip/tool-tip.stories.d.ts.map +1 -1
- package/dist/components/tool-tip/tool-tip.stories.js +35 -5
- package/dist/components/tool-tip/tool-tip.styles.d.ts +3 -0
- package/dist/components/tool-tip/tool-tip.styles.d.ts.map +1 -0
- package/dist/components/tool-tip/tool-tip.styles.js +58 -0
- package/dist/utils/ResponsiveController.d.ts +11 -0
- package/dist/utils/ResponsiveController.d.ts.map +1 -0
- package/dist/utils/ResponsiveController.js +19 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/package.json +23 -19
- package/dist/components/bottom-sheet/bottom-sheet.test.d.ts +0 -2
- package/dist/components/bottom-sheet/bottom-sheet.test.d.ts.map +0 -1
- package/dist/components/bottom-sheet/bottom-sheet.test.js +0 -15
- package/dist/components/tool-tip/Tooltip2.d.ts +0 -17
- package/dist/components/tool-tip/Tooltip2.d.ts.map +0 -1
- package/dist/components/tool-tip/Tooltip2.js +0 -104
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/web-components';
|
|
2
|
-
import {
|
|
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,
|
|
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 {
|
|
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
|
|
98
|
-
render: ({ fontSize, stroke, fill, autofit, svgColors,
|
|
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
|
-
'
|
|
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(
|
|
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
|
-
...
|
|
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 @@
|
|
|
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
|
|
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-auto-width - Set by the component as a fallback in case --svg-width is not defined.
|
|
21
|
+
* @cssprop {<length> (em)} --svg-auto-height - 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
|
-
/**
|
|
31
|
+
/** Use the colors from the SVG input. */
|
|
19
32
|
svgColors: boolean;
|
|
20
|
-
|
|
21
|
-
width: number;
|
|
33
|
+
/** @internal */
|
|
22
34
|
private _svg?;
|
|
23
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
|
|
31
|
-
|
|
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
|
-
*
|
|
41
|
-
* @
|
|
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):
|
|
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,
|
|
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,EAAE,MAAM,KAAK,CAAC;AAQvD,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;IAYzB,MAAM;IA0CN,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
|
|
8
|
-
import {
|
|
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-auto-width - Set by the component as a fallback in case --svg-width is not defined.
|
|
35
|
+
* @cssprop {<length> (em)} --svg-auto-height - 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
|
-
/**
|
|
46
|
+
/** Use the colors from the SVG input. */
|
|
34
47
|
this.svgColors = false;
|
|
35
|
-
|
|
36
|
-
this.
|
|
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
|
-
|
|
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
|
-
/**
|
|
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,31 +84,26 @@ 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
|
-
|
|
67
|
-
|
|
87
|
+
// For classes inheriting from responsive-svg (e.g. draw-svg)
|
|
88
|
+
svgClasses() {
|
|
89
|
+
return {};
|
|
68
90
|
}
|
|
69
|
-
|
|
91
|
+
connectedCallback() {
|
|
92
|
+
super.connectedCallback();
|
|
70
93
|
if (this.svg instanceof SVGElement) {
|
|
71
94
|
const _viewBox = this.getViewBoxSize(this.svg);
|
|
72
95
|
const _width = Number(this.svg.getAttribute('width'));
|
|
73
96
|
const _height = Number(this.svg.getAttribute('height'));
|
|
74
|
-
|
|
75
|
-
return _viewBox ?? { x: 0, y: 0, width: _width || 0, height: _height || 0 };
|
|
97
|
+
this.viewBox = _viewBox ?? { x: 0, y: 0, width: _width || 0, height: _height || 0 };
|
|
76
98
|
}
|
|
77
|
-
return this._viewBox;
|
|
78
|
-
}
|
|
79
|
-
// For classes inheriting from responsive-svg (e.g. draw-svg)
|
|
80
|
-
svgClasses() {
|
|
81
|
-
return {};
|
|
82
99
|
}
|
|
83
100
|
render() {
|
|
84
|
-
const
|
|
85
|
-
const height = this.height !== 0 ? this.height : this.viewBox.height;
|
|
101
|
+
const viewBox = this.viewBox;
|
|
86
102
|
const preserveAspectRatio = this.preserveAspectRatio;
|
|
87
103
|
const svgClasses = this.svgClasses();
|
|
88
104
|
const styles = {
|
|
89
|
-
'--svg-width': `${width}em`,
|
|
90
|
-
'--svg-height': `${height}em`,
|
|
105
|
+
'--svg-auto-width': `${viewBox.width}em`,
|
|
106
|
+
'--svg-auto-height': `${viewBox.height}em`,
|
|
91
107
|
};
|
|
92
108
|
// Check if svg exists, otherwise early return
|
|
93
109
|
if (typeof this.svg === 'string')
|
|
@@ -96,21 +112,21 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
|
|
|
96
112
|
// SVGElement provided as input
|
|
97
113
|
if (this.svg instanceof SVGElement) {
|
|
98
114
|
const clonedSVG = this.svg.cloneNode(true);
|
|
99
|
-
this.applyPartToPaths(clonedSVG, '
|
|
100
|
-
return buildSVG(Array.from(clonedSVG.children),
|
|
115
|
+
this.applyPartToPaths(clonedSVG, '__path');
|
|
116
|
+
return buildSVG(Array.from(clonedSVG.children), viewBox);
|
|
101
117
|
}
|
|
102
118
|
// TemplateResult<2> provided as input
|
|
103
119
|
else
|
|
104
|
-
return buildSVG(this.svg,
|
|
120
|
+
return buildSVG(this.svg, viewBox);
|
|
105
121
|
}
|
|
106
|
-
function buildSVG(svg,
|
|
122
|
+
function buildSVG(svg, viewBox) {
|
|
107
123
|
if (svg) {
|
|
108
124
|
return html `
|
|
109
125
|
<svg
|
|
110
|
-
part="
|
|
126
|
+
part="__svg"
|
|
111
127
|
class=${classMap(svgClasses)}
|
|
112
128
|
style=${styleMap(styles)}
|
|
113
|
-
viewBox="
|
|
129
|
+
viewBox="${viewBox.x} ${viewBox.y} ${viewBox.width} ${viewBox.height}"
|
|
114
130
|
preserveAspectRatio=${preserveAspectRatio}
|
|
115
131
|
xmlns="http://www.w3.org/2000/svg"
|
|
116
132
|
>
|
|
@@ -120,9 +136,7 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
|
|
|
120
136
|
}
|
|
121
137
|
}
|
|
122
138
|
}
|
|
123
|
-
/**
|
|
124
|
-
* Applies a part name to all paths in the given element
|
|
125
|
-
*/
|
|
139
|
+
/** Applies a part name to all paths in the given element. */
|
|
126
140
|
applyPartToPaths(element, partValue) {
|
|
127
141
|
if (element instanceof Element) {
|
|
128
142
|
if (element.tagName.toLowerCase() === 'path') {
|
|
@@ -135,8 +149,9 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
|
|
|
135
149
|
}
|
|
136
150
|
}
|
|
137
151
|
/**
|
|
138
|
-
*
|
|
139
|
-
* @
|
|
152
|
+
* Gets the viewBox dimensions from an SVG element.
|
|
153
|
+
* @param svg The SVG to get the attribute from.
|
|
154
|
+
* @returns The SVG viewBox x, y, width, and height
|
|
140
155
|
*/
|
|
141
156
|
getViewBoxSize(svg) {
|
|
142
157
|
const viewBox = svg.getAttribute('viewBox')?.split(' ');
|
|
@@ -145,76 +160,19 @@ let ResponsiveSvg = class ResponsiveSvg extends LitElement {
|
|
|
145
160
|
return { x: +viewBox[0], y: +viewBox[1], width: +viewBox[2], height: +viewBox[3] };
|
|
146
161
|
}
|
|
147
162
|
};
|
|
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
163
|
__decorate([
|
|
197
164
|
property({ type: Boolean, reflect: true })
|
|
198
165
|
], ResponsiveSvg.prototype, "autofit", void 0);
|
|
199
166
|
__decorate([
|
|
200
167
|
property({ type: Boolean, reflect: true })
|
|
201
168
|
], 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
169
|
__decorate([
|
|
209
170
|
property({ type: Object })
|
|
210
171
|
], ResponsiveSvg.prototype, "svg", null);
|
|
211
172
|
__decorate([
|
|
212
173
|
property({ type: String, reflect: true })
|
|
213
174
|
], ResponsiveSvg.prototype, "preserveAspectRatio", null);
|
|
214
|
-
__decorate([
|
|
215
|
-
state()
|
|
216
|
-
], ResponsiveSvg.prototype, "viewBox", null);
|
|
217
175
|
ResponsiveSvg = __decorate([
|
|
218
|
-
|
|
176
|
+
customElement('responsive-svg')
|
|
219
177
|
], ResponsiveSvg);
|
|
220
178
|
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,
|
|
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,KAU7B,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"}
|