@alegendstale/holly-components 2.0.6 → 2.0.7

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.
@@ -2,6 +2,37 @@
2
2
  "schemaVersion": "1.0.0",
3
3
  "readme": "",
4
4
  "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "src/index.ts",
8
+ "declarations": [],
9
+ "exports": []
10
+ },
11
+ {
12
+ "kind": "javascript-module",
13
+ "path": "dist/decorators/condCustomElement.js",
14
+ "declarations": [
15
+ {
16
+ "kind": "function",
17
+ "name": "o",
18
+ "parameters": [
19
+ {
20
+ "name": "t"
21
+ }
22
+ ]
23
+ }
24
+ ],
25
+ "exports": [
26
+ {
27
+ "kind": "js",
28
+ "name": "condCustomElement",
29
+ "declaration": {
30
+ "name": "o",
31
+ "module": "dist/decorators/condCustomElement.js"
32
+ }
33
+ }
34
+ ]
35
+ },
5
36
  {
6
37
  "kind": "javascript-module",
7
38
  "path": "dist/utils/basicUtils.js",
@@ -565,31 +596,6 @@
565
596
  }
566
597
  ]
567
598
  },
568
- {
569
- "kind": "javascript-module",
570
- "path": "dist/decorators/condCustomElement.js",
571
- "declarations": [
572
- {
573
- "kind": "function",
574
- "name": "o",
575
- "parameters": [
576
- {
577
- "name": "t"
578
- }
579
- ]
580
- }
581
- ],
582
- "exports": [
583
- {
584
- "kind": "js",
585
- "name": "condCustomElement",
586
- "declaration": {
587
- "name": "o",
588
- "module": "dist/decorators/condCustomElement.js"
589
- }
590
- }
591
- ]
592
- },
593
599
  {
594
600
  "kind": "javascript-module",
595
601
  "path": "src/decorators/condCustomElement.ts",
@@ -1575,48 +1581,6 @@
1575
1581
  }
1576
1582
  ]
1577
1583
  },
1578
- {
1579
- "kind": "javascript-module",
1580
- "path": "dist/components/draw-svg/draw-svg.js",
1581
- "declarations": [
1582
- {
1583
- "kind": "variable",
1584
- "name": "i",
1585
- "default": "class extends l { constructor() { super(...arguments), this.isIntersecting = !1, this.intersectionObserver = new IntersectionObserver(([s]) => { this.isIntersecting = s.isIntersecting, this.emitter.emit(\"intersection\", s.isIntersecting); }), this.emitter = new m(); } svgClasses() { return super.svgClasses(), { animation: this.isIntersecting }; } connectedCallback() { super.connectedCallback(), this.intersectionObserver.observe(this); } disconnectedCallback() { super.disconnectedCallback(), this.intersectionObserver.disconnect(); } }"
1586
- }
1587
- ],
1588
- "exports": [
1589
- {
1590
- "kind": "js",
1591
- "name": "DrawSvg",
1592
- "declaration": {
1593
- "name": "i",
1594
- "module": "dist/components/draw-svg/draw-svg.js"
1595
- }
1596
- }
1597
- ]
1598
- },
1599
- {
1600
- "kind": "javascript-module",
1601
- "path": "dist/components/draw-svg/draw-svg.styles.js",
1602
- "declarations": [
1603
- {
1604
- "kind": "variable",
1605
- "name": "e",
1606
- "default": "t` :host { stroke: white; fill: white; } /* Override responsive-svg path fill */ :host(:not([svgColors])) path { fill: transparent; } path { stroke-width: 2; stroke-dasharray: 1000; stroke-dashoffset: 1000; } .animation { path { animation: textAnimation 2s ease-in-out 1 forwards; will-change: fill, stroke-width, stroke-dashoffset; } } @keyframes textAnimation { 0% { stroke-dashoffset: 1000; } 60% { fill: transparent; } 100% { fill: inherit; stroke-dashoffset: 0; stroke-width: 1; } } `"
1607
- }
1608
- ],
1609
- "exports": [
1610
- {
1611
- "kind": "js",
1612
- "name": "default",
1613
- "declaration": {
1614
- "name": "e",
1615
- "module": "dist/components/draw-svg/draw-svg.styles.js"
1616
- }
1617
- }
1618
- ]
1619
- },
1620
1584
  {
1621
1585
  "kind": "javascript-module",
1622
1586
  "path": "dist/components/color-palette/color-palette-utils.js",
@@ -1915,6 +1879,48 @@
1915
1879
  }
1916
1880
  ]
1917
1881
  },
1882
+ {
1883
+ "kind": "javascript-module",
1884
+ "path": "dist/components/draw-svg/draw-svg.js",
1885
+ "declarations": [
1886
+ {
1887
+ "kind": "variable",
1888
+ "name": "i",
1889
+ "default": "class extends l { constructor() { super(...arguments), this.isIntersecting = !1, this.intersectionObserver = new IntersectionObserver(([s]) => { this.isIntersecting = s.isIntersecting, this.emitter.emit(\"intersection\", s.isIntersecting); }), this.emitter = new m(); } svgClasses() { return super.svgClasses(), { animation: this.isIntersecting }; } connectedCallback() { super.connectedCallback(), this.intersectionObserver.observe(this); } disconnectedCallback() { super.disconnectedCallback(), this.intersectionObserver.disconnect(); } }"
1890
+ }
1891
+ ],
1892
+ "exports": [
1893
+ {
1894
+ "kind": "js",
1895
+ "name": "DrawSvg",
1896
+ "declaration": {
1897
+ "name": "i",
1898
+ "module": "dist/components/draw-svg/draw-svg.js"
1899
+ }
1900
+ }
1901
+ ]
1902
+ },
1903
+ {
1904
+ "kind": "javascript-module",
1905
+ "path": "dist/components/draw-svg/draw-svg.styles.js",
1906
+ "declarations": [
1907
+ {
1908
+ "kind": "variable",
1909
+ "name": "e",
1910
+ "default": "t` :host { stroke: white; fill: white; } /* Override responsive-svg path fill */ :host(:not([svgColors])) path { fill: transparent; } path { stroke-width: 2; stroke-dasharray: 1000; stroke-dashoffset: 1000; } .animation { path { animation: textAnimation 2s ease-in-out 1 forwards; will-change: fill, stroke-width, stroke-dashoffset; } } @keyframes textAnimation { 0% { stroke-dashoffset: 1000; } 60% { fill: transparent; } 100% { fill: inherit; stroke-dashoffset: 0; stroke-width: 1; } } `"
1911
+ }
1912
+ ],
1913
+ "exports": [
1914
+ {
1915
+ "kind": "js",
1916
+ "name": "default",
1917
+ "declaration": {
1918
+ "name": "e",
1919
+ "module": "dist/components/draw-svg/draw-svg.styles.js"
1920
+ }
1921
+ }
1922
+ ]
1923
+ },
1918
1924
  {
1919
1925
  "kind": "javascript-module",
1920
1926
  "path": "dist/components/tool-tip/tool-tip.js",
@@ -1975,289 +1981,145 @@
1975
1981
  },
1976
1982
  {
1977
1983
  "kind": "javascript-module",
1978
- "path": "src/components/absolute-container/absolute-container.styles.ts",
1984
+ "path": "src/components/bottom-sheet/bottom-sheet.styles.ts",
1979
1985
  "declarations": [],
1980
1986
  "exports": [
1981
1987
  {
1982
1988
  "kind": "js",
1983
1989
  "name": "default",
1984
1990
  "declaration": {
1985
- "module": "src/components/absolute-container/absolute-container.styles.ts"
1991
+ "module": "src/components/bottom-sheet/bottom-sheet.styles.ts"
1986
1992
  }
1987
1993
  }
1988
1994
  ]
1989
1995
  },
1990
1996
  {
1991
1997
  "kind": "javascript-module",
1992
- "path": "src/components/absolute-container/absolute-container.ts",
1998
+ "path": "src/components/bottom-sheet/bottom-sheet.ts",
1993
1999
  "declarations": [
1994
2000
  {
1995
2001
  "kind": "class",
1996
- "description": "A container component which can serve as a modal or popup wrapper.",
1997
- "name": "AbsoluteContainer",
2002
+ "description": "A container component primarily for mobile devices which slides up and down from the bottom of the screen.",
2003
+ "name": "BottomSheet",
2004
+ "cssProperties": [
2005
+ {
2006
+ "type": {
2007
+ "text": "<length> (dvh)"
2008
+ },
2009
+ "description": "The height of the sheet.",
2010
+ "name": "--height"
2011
+ }
2012
+ ],
1998
2013
  "members": [
1999
2014
  {
2000
2015
  "kind": "field",
2001
2016
  "name": "open",
2002
- "description": "Whether the container is open (visible) or not.",
2003
2017
  "type": {
2004
2018
  "text": "boolean"
2005
2019
  },
2020
+ "privacy": "public",
2006
2021
  "default": "false",
2022
+ "description": "Whether the sheet is open or closed.",
2007
2023
  "attribute": "open",
2008
2024
  "reflects": true
2009
2025
  },
2010
2026
  {
2011
2027
  "kind": "field",
2012
- "name": "emitter",
2028
+ "name": "nonmodal",
2013
2029
  "type": {
2014
- "text": "EventEmitter<EventMap>"
2030
+ "text": "boolean"
2015
2031
  },
2016
2032
  "privacy": "public",
2017
- "default": "new EventEmitter<EventMap>()",
2018
- "description": "Public way to subscribe to events."
2033
+ "default": "false",
2034
+ "description": "Whether the sheet is nonmodal.",
2035
+ "attribute": "nonmodal",
2036
+ "reflects": true
2019
2037
  },
2020
2038
  {
2021
2039
  "kind": "field",
2022
- "name": "disableContextEvent",
2040
+ "name": "dragging",
2023
2041
  "type": {
2024
2042
  "text": "boolean"
2025
2043
  },
2026
2044
  "privacy": "public",
2027
2045
  "default": "false",
2028
- "description": "Disables the ContextEvent (right click, or long touch)\r\nUseful for context menus",
2029
- "attribute": "disableContextEvent",
2046
+ "description": "Whether the sheet can be dragged.",
2047
+ "attribute": "dragging",
2030
2048
  "reflects": true
2031
2049
  },
2032
2050
  {
2033
- "kind": "method",
2034
- "name": "toggle",
2051
+ "kind": "field",
2052
+ "name": "scrolling",
2053
+ "type": {
2054
+ "text": "boolean"
2055
+ },
2035
2056
  "privacy": "public",
2036
- "description": "Toggle whether container is open."
2057
+ "default": "false",
2058
+ "description": "Whether the sheet can be scrolled.",
2059
+ "attribute": "scrolling",
2060
+ "reflects": true
2037
2061
  },
2038
2062
  {
2039
- "kind": "method",
2040
- "name": "setOpen",
2063
+ "kind": "field",
2064
+ "name": "snapPoints",
2065
+ "type": {
2066
+ "text": "number[]"
2067
+ },
2041
2068
  "privacy": "public",
2042
- "parameters": [
2043
- {
2044
- "name": "val",
2045
- "type": {
2046
- "text": "boolean"
2047
- }
2048
- }
2049
- ],
2050
- "description": "Set whether the container is open."
2069
+ "default": "[]",
2070
+ "description": "An array of percentages that the sheet will stop at or be drawn to after being released.",
2071
+ "attribute": "snapPoints"
2051
2072
  },
2052
2073
  {
2053
- "kind": "method",
2054
- "name": "setPosition",
2074
+ "kind": "field",
2075
+ "name": "defaultSnap",
2076
+ "type": {
2077
+ "text": "number"
2078
+ },
2079
+ "privacy": "public",
2080
+ "default": "NaN",
2081
+ "description": "The default percentage that the sheet will open to.",
2082
+ "attribute": "defaultSnap"
2083
+ },
2084
+ {
2085
+ "kind": "field",
2086
+ "name": "height",
2087
+ "description": "Sets the height of the sheet.\r\nInfinity can be used to fit content automatically.",
2088
+ "type": {
2089
+ "text": "number"
2090
+ },
2091
+ "default": "fit-content",
2092
+ "attribute": "height",
2093
+ "reflects": true
2094
+ },
2095
+ {
2096
+ "kind": "field",
2097
+ "name": "emitter",
2098
+ "type": {
2099
+ "text": "EventEmitter<EventMap>"
2100
+ },
2055
2101
  "privacy": "public",
2102
+ "default": "new EventEmitter<EventMap>()",
2103
+ "description": "Public way to subscribe to events."
2104
+ },
2105
+ {
2106
+ "kind": "method",
2107
+ "name": "closestSnapPointIndex",
2108
+ "privacy": "private",
2109
+ "return": {
2110
+ "type": {
2111
+ "text": "number"
2112
+ }
2113
+ },
2056
2114
  "parameters": [
2057
2115
  {
2058
- "name": "left",
2116
+ "name": "snapPoints",
2059
2117
  "type": {
2060
- "text": "number"
2118
+ "text": "number[]"
2061
2119
  }
2062
2120
  },
2063
2121
  {
2064
- "name": "top",
2065
- "type": {
2066
- "text": "number"
2067
- }
2068
- }
2069
- ],
2070
- "description": "Set the x and y position of the container."
2071
- }
2072
- ],
2073
- "attributes": [
2074
- {
2075
- "name": "open",
2076
- "description": "Whether the container is open (visible) or not.",
2077
- "type": {
2078
- "text": "boolean"
2079
- },
2080
- "default": "false",
2081
- "fieldName": "open"
2082
- },
2083
- {
2084
- "name": "disableContextEvent",
2085
- "type": {
2086
- "text": "boolean"
2087
- },
2088
- "default": "false",
2089
- "description": "Disables the ContextEvent (right click, or long touch)\r\nUseful for context menus",
2090
- "fieldName": "disableContextEvent"
2091
- }
2092
- ],
2093
- "superclass": {
2094
- "name": "LitElement",
2095
- "package": "lit"
2096
- },
2097
- "tagName": "absolute-container",
2098
- "customElement": true
2099
- }
2100
- ],
2101
- "exports": [
2102
- {
2103
- "kind": "js",
2104
- "name": "AbsoluteContainer",
2105
- "declaration": {
2106
- "name": "AbsoluteContainer",
2107
- "module": "src/components/absolute-container/absolute-container.ts"
2108
- }
2109
- },
2110
- {
2111
- "kind": "custom-element-definition",
2112
- "name": "absolute-container",
2113
- "declaration": {
2114
- "name": "AbsoluteContainer",
2115
- "module": "src/components/absolute-container/absolute-container.ts"
2116
- }
2117
- }
2118
- ]
2119
- },
2120
- {
2121
- "kind": "javascript-module",
2122
- "path": "src/components/bottom-sheet/bottom-sheet.styles.ts",
2123
- "declarations": [],
2124
- "exports": [
2125
- {
2126
- "kind": "js",
2127
- "name": "default",
2128
- "declaration": {
2129
- "module": "src/components/bottom-sheet/bottom-sheet.styles.ts"
2130
- }
2131
- }
2132
- ]
2133
- },
2134
- {
2135
- "kind": "javascript-module",
2136
- "path": "src/components/bottom-sheet/bottom-sheet.ts",
2137
- "declarations": [
2138
- {
2139
- "kind": "class",
2140
- "description": "A container component primarily for mobile devices which slides up and down from the bottom of the screen.",
2141
- "name": "BottomSheet",
2142
- "cssProperties": [
2143
- {
2144
- "type": {
2145
- "text": "<length> (dvh)"
2146
- },
2147
- "description": "The height of the sheet.",
2148
- "name": "--height"
2149
- }
2150
- ],
2151
- "members": [
2152
- {
2153
- "kind": "field",
2154
- "name": "open",
2155
- "type": {
2156
- "text": "boolean"
2157
- },
2158
- "privacy": "public",
2159
- "default": "false",
2160
- "description": "Whether the sheet is open or closed.",
2161
- "attribute": "open",
2162
- "reflects": true
2163
- },
2164
- {
2165
- "kind": "field",
2166
- "name": "nonmodal",
2167
- "type": {
2168
- "text": "boolean"
2169
- },
2170
- "privacy": "public",
2171
- "default": "false",
2172
- "description": "Whether the sheet is nonmodal.",
2173
- "attribute": "nonmodal",
2174
- "reflects": true
2175
- },
2176
- {
2177
- "kind": "field",
2178
- "name": "dragging",
2179
- "type": {
2180
- "text": "boolean"
2181
- },
2182
- "privacy": "public",
2183
- "default": "false",
2184
- "description": "Whether the sheet can be dragged.",
2185
- "attribute": "dragging",
2186
- "reflects": true
2187
- },
2188
- {
2189
- "kind": "field",
2190
- "name": "scrolling",
2191
- "type": {
2192
- "text": "boolean"
2193
- },
2194
- "privacy": "public",
2195
- "default": "false",
2196
- "description": "Whether the sheet can be scrolled.",
2197
- "attribute": "scrolling",
2198
- "reflects": true
2199
- },
2200
- {
2201
- "kind": "field",
2202
- "name": "snapPoints",
2203
- "type": {
2204
- "text": "number[]"
2205
- },
2206
- "privacy": "public",
2207
- "default": "[]",
2208
- "description": "An array of percentages that the sheet will stop at or be drawn to after being released.",
2209
- "attribute": "snapPoints"
2210
- },
2211
- {
2212
- "kind": "field",
2213
- "name": "defaultSnap",
2214
- "type": {
2215
- "text": "number"
2216
- },
2217
- "privacy": "public",
2218
- "default": "NaN",
2219
- "description": "The default percentage that the sheet will open to.",
2220
- "attribute": "defaultSnap"
2221
- },
2222
- {
2223
- "kind": "field",
2224
- "name": "height",
2225
- "description": "Sets the height of the sheet.\r\nInfinity can be used to fit content automatically.",
2226
- "type": {
2227
- "text": "number"
2228
- },
2229
- "default": "fit-content",
2230
- "attribute": "height",
2231
- "reflects": true
2232
- },
2233
- {
2234
- "kind": "field",
2235
- "name": "emitter",
2236
- "type": {
2237
- "text": "EventEmitter<EventMap>"
2238
- },
2239
- "privacy": "public",
2240
- "default": "new EventEmitter<EventMap>()",
2241
- "description": "Public way to subscribe to events."
2242
- },
2243
- {
2244
- "kind": "method",
2245
- "name": "closestSnapPointIndex",
2246
- "privacy": "private",
2247
- "return": {
2248
- "type": {
2249
- "text": "number"
2250
- }
2251
- },
2252
- "parameters": [
2253
- {
2254
- "name": "snapPoints",
2255
- "type": {
2256
- "text": "number[]"
2257
- }
2258
- },
2259
- {
2260
- "name": "target",
2122
+ "name": "target",
2261
2123
  "type": {
2262
2124
  "text": "number"
2263
2125
  }
@@ -2512,38 +2374,301 @@
2512
2374
  "fieldName": "defaultSnap"
2513
2375
  },
2514
2376
  {
2515
- "name": "height",
2516
- "description": "Sets the height of the sheet.\r\nInfinity can be used to fit content automatically.",
2517
- "type": {
2518
- "text": "number"
2519
- },
2520
- "default": "fit-content",
2521
- "fieldName": "height"
2377
+ "name": "height",
2378
+ "description": "Sets the height of the sheet.\r\nInfinity can be used to fit content automatically.",
2379
+ "type": {
2380
+ "text": "number"
2381
+ },
2382
+ "default": "fit-content",
2383
+ "fieldName": "height"
2384
+ }
2385
+ ],
2386
+ "superclass": {
2387
+ "name": "LitElement",
2388
+ "package": "lit"
2389
+ },
2390
+ "tagName": "bottom-sheet",
2391
+ "customElement": true
2392
+ }
2393
+ ],
2394
+ "exports": [
2395
+ {
2396
+ "kind": "js",
2397
+ "name": "BottomSheet",
2398
+ "declaration": {
2399
+ "name": "BottomSheet",
2400
+ "module": "src/components/bottom-sheet/bottom-sheet.ts"
2401
+ }
2402
+ },
2403
+ {
2404
+ "kind": "custom-element-definition",
2405
+ "name": "bottom-sheet",
2406
+ "declaration": {
2407
+ "name": "BottomSheet",
2408
+ "module": "src/components/bottom-sheet/bottom-sheet.ts"
2409
+ }
2410
+ }
2411
+ ]
2412
+ },
2413
+ {
2414
+ "kind": "javascript-module",
2415
+ "path": "src/components/absolute-container/absolute-container.styles.ts",
2416
+ "declarations": [],
2417
+ "exports": [
2418
+ {
2419
+ "kind": "js",
2420
+ "name": "default",
2421
+ "declaration": {
2422
+ "module": "src/components/absolute-container/absolute-container.styles.ts"
2423
+ }
2424
+ }
2425
+ ]
2426
+ },
2427
+ {
2428
+ "kind": "javascript-module",
2429
+ "path": "src/components/absolute-container/absolute-container.ts",
2430
+ "declarations": [
2431
+ {
2432
+ "kind": "class",
2433
+ "description": "A container component which can serve as a modal or popup wrapper.",
2434
+ "name": "AbsoluteContainer",
2435
+ "members": [
2436
+ {
2437
+ "kind": "field",
2438
+ "name": "open",
2439
+ "description": "Whether the container is open (visible) or not.",
2440
+ "type": {
2441
+ "text": "boolean"
2442
+ },
2443
+ "default": "false",
2444
+ "attribute": "open",
2445
+ "reflects": true
2446
+ },
2447
+ {
2448
+ "kind": "field",
2449
+ "name": "emitter",
2450
+ "type": {
2451
+ "text": "EventEmitter<EventMap>"
2452
+ },
2453
+ "privacy": "public",
2454
+ "default": "new EventEmitter<EventMap>()",
2455
+ "description": "Public way to subscribe to events."
2456
+ },
2457
+ {
2458
+ "kind": "field",
2459
+ "name": "disableContextEvent",
2460
+ "type": {
2461
+ "text": "boolean"
2462
+ },
2463
+ "privacy": "public",
2464
+ "default": "false",
2465
+ "description": "Disables the ContextEvent (right click, or long touch)\r\nUseful for context menus",
2466
+ "attribute": "disableContextEvent",
2467
+ "reflects": true
2468
+ },
2469
+ {
2470
+ "kind": "method",
2471
+ "name": "toggle",
2472
+ "privacy": "public",
2473
+ "description": "Toggle whether container is open."
2474
+ },
2475
+ {
2476
+ "kind": "method",
2477
+ "name": "setOpen",
2478
+ "privacy": "public",
2479
+ "parameters": [
2480
+ {
2481
+ "name": "val",
2482
+ "type": {
2483
+ "text": "boolean"
2484
+ }
2485
+ }
2486
+ ],
2487
+ "description": "Set whether the container is open."
2488
+ },
2489
+ {
2490
+ "kind": "method",
2491
+ "name": "setPosition",
2492
+ "privacy": "public",
2493
+ "parameters": [
2494
+ {
2495
+ "name": "left",
2496
+ "type": {
2497
+ "text": "number"
2498
+ }
2499
+ },
2500
+ {
2501
+ "name": "top",
2502
+ "type": {
2503
+ "text": "number"
2504
+ }
2505
+ }
2506
+ ],
2507
+ "description": "Set the x and y position of the container."
2508
+ }
2509
+ ],
2510
+ "attributes": [
2511
+ {
2512
+ "name": "open",
2513
+ "description": "Whether the container is open (visible) or not.",
2514
+ "type": {
2515
+ "text": "boolean"
2516
+ },
2517
+ "default": "false",
2518
+ "fieldName": "open"
2519
+ },
2520
+ {
2521
+ "name": "disableContextEvent",
2522
+ "type": {
2523
+ "text": "boolean"
2524
+ },
2525
+ "default": "false",
2526
+ "description": "Disables the ContextEvent (right click, or long touch)\r\nUseful for context menus",
2527
+ "fieldName": "disableContextEvent"
2528
+ }
2529
+ ],
2530
+ "superclass": {
2531
+ "name": "LitElement",
2532
+ "package": "lit"
2533
+ },
2534
+ "tagName": "absolute-container",
2535
+ "customElement": true
2536
+ }
2537
+ ],
2538
+ "exports": [
2539
+ {
2540
+ "kind": "js",
2541
+ "name": "AbsoluteContainer",
2542
+ "declaration": {
2543
+ "name": "AbsoluteContainer",
2544
+ "module": "src/components/absolute-container/absolute-container.ts"
2545
+ }
2546
+ },
2547
+ {
2548
+ "kind": "custom-element-definition",
2549
+ "name": "absolute-container",
2550
+ "declaration": {
2551
+ "name": "AbsoluteContainer",
2552
+ "module": "src/components/absolute-container/absolute-container.ts"
2553
+ }
2554
+ }
2555
+ ]
2556
+ },
2557
+ {
2558
+ "kind": "javascript-module",
2559
+ "path": "src/components/carousel-scroller/carousel-scroller.styles.ts",
2560
+ "declarations": [],
2561
+ "exports": [
2562
+ {
2563
+ "kind": "js",
2564
+ "name": "default",
2565
+ "declaration": {
2566
+ "module": "src/components/carousel-scroller/carousel-scroller.styles.ts"
2567
+ }
2568
+ }
2569
+ ]
2570
+ },
2571
+ {
2572
+ "kind": "javascript-module",
2573
+ "path": "src/components/carousel-scroller/carousel-scroller.ts",
2574
+ "declarations": [
2575
+ {
2576
+ "kind": "class",
2577
+ "description": "A carousel which can have any number of slides, and rotates circularly.",
2578
+ "name": "CarouselScroller",
2579
+ "cssProperties": [
2580
+ {
2581
+ "type": {
2582
+ "text": "<length>"
2583
+ },
2584
+ "description": "The size of the scroller padding.",
2585
+ "name": "--padding"
2586
+ },
2587
+ {
2588
+ "type": {
2589
+ "text": "<length>"
2590
+ },
2591
+ "description": "The size of the scroller margin.",
2592
+ "name": "--margin"
2593
+ }
2594
+ ],
2595
+ "members": [
2596
+ {
2597
+ "kind": "field",
2598
+ "name": "slotEl",
2599
+ "type": {
2600
+ "text": "HTMLSlotElement"
2601
+ },
2602
+ "privacy": "protected",
2603
+ "description": "The items that will be used as slides."
2604
+ },
2605
+ {
2606
+ "kind": "field",
2607
+ "name": "slotChildren",
2608
+ "type": {
2609
+ "text": "HTMLElement[]"
2610
+ },
2611
+ "privacy": "protected",
2612
+ "default": "[]",
2613
+ "description": "The slides being used."
2614
+ },
2615
+ {
2616
+ "kind": "field",
2617
+ "name": "emitter",
2618
+ "type": {
2619
+ "text": "EventEmitter<EventMap>"
2620
+ },
2621
+ "privacy": "public",
2622
+ "default": "new EventEmitter<EventMap>()",
2623
+ "description": "Public way to subscribe to events."
2624
+ },
2625
+ {
2626
+ "kind": "method",
2627
+ "name": "getCurrentSlide",
2628
+ "privacy": "public",
2629
+ "description": "Gets the current slide.",
2630
+ "return": {
2631
+ "type": {
2632
+ "text": ""
2633
+ }
2634
+ }
2635
+ },
2636
+ {
2637
+ "kind": "method",
2638
+ "name": "scrollToPrevSlide",
2639
+ "privacy": "public",
2640
+ "description": "Scrolls to the slide before the current slide."
2641
+ },
2642
+ {
2643
+ "kind": "method",
2644
+ "name": "scrollToNextSlide",
2645
+ "privacy": "public",
2646
+ "description": "Scrolls to the slide after the current slide."
2522
2647
  }
2523
2648
  ],
2524
2649
  "superclass": {
2525
2650
  "name": "LitElement",
2526
2651
  "package": "lit"
2527
2652
  },
2528
- "tagName": "bottom-sheet",
2653
+ "tagName": "carousel-scroller",
2529
2654
  "customElement": true
2530
2655
  }
2531
2656
  ],
2532
2657
  "exports": [
2533
2658
  {
2534
2659
  "kind": "js",
2535
- "name": "BottomSheet",
2660
+ "name": "CarouselScroller",
2536
2661
  "declaration": {
2537
- "name": "BottomSheet",
2538
- "module": "src/components/bottom-sheet/bottom-sheet.ts"
2662
+ "name": "CarouselScroller",
2663
+ "module": "src/components/carousel-scroller/carousel-scroller.ts"
2539
2664
  }
2540
2665
  },
2541
2666
  {
2542
2667
  "kind": "custom-element-definition",
2543
- "name": "bottom-sheet",
2668
+ "name": "carousel-scroller",
2544
2669
  "declaration": {
2545
- "name": "BottomSheet",
2546
- "module": "src/components/bottom-sheet/bottom-sheet.ts"
2670
+ "name": "CarouselScroller",
2671
+ "module": "src/components/carousel-scroller/carousel-scroller.ts"
2547
2672
  }
2548
2673
  }
2549
2674
  ]
@@ -3150,125 +3275,6 @@
3150
3275
  }
3151
3276
  ]
3152
3277
  },
3153
- {
3154
- "kind": "javascript-module",
3155
- "path": "src/components/carousel-scroller/carousel-scroller.styles.ts",
3156
- "declarations": [],
3157
- "exports": [
3158
- {
3159
- "kind": "js",
3160
- "name": "default",
3161
- "declaration": {
3162
- "module": "src/components/carousel-scroller/carousel-scroller.styles.ts"
3163
- }
3164
- }
3165
- ]
3166
- },
3167
- {
3168
- "kind": "javascript-module",
3169
- "path": "src/components/carousel-scroller/carousel-scroller.ts",
3170
- "declarations": [
3171
- {
3172
- "kind": "class",
3173
- "description": "A carousel which can have any number of slides, and rotates circularly.",
3174
- "name": "CarouselScroller",
3175
- "cssProperties": [
3176
- {
3177
- "type": {
3178
- "text": "<length>"
3179
- },
3180
- "description": "The size of the scroller padding.",
3181
- "name": "--padding"
3182
- },
3183
- {
3184
- "type": {
3185
- "text": "<length>"
3186
- },
3187
- "description": "The size of the scroller margin.",
3188
- "name": "--margin"
3189
- }
3190
- ],
3191
- "members": [
3192
- {
3193
- "kind": "field",
3194
- "name": "slotEl",
3195
- "type": {
3196
- "text": "HTMLSlotElement"
3197
- },
3198
- "privacy": "protected",
3199
- "description": "The items that will be used as slides."
3200
- },
3201
- {
3202
- "kind": "field",
3203
- "name": "slotChildren",
3204
- "type": {
3205
- "text": "HTMLElement[]"
3206
- },
3207
- "privacy": "protected",
3208
- "default": "[]",
3209
- "description": "The slides being used."
3210
- },
3211
- {
3212
- "kind": "field",
3213
- "name": "emitter",
3214
- "type": {
3215
- "text": "EventEmitter<EventMap>"
3216
- },
3217
- "privacy": "public",
3218
- "default": "new EventEmitter<EventMap>()",
3219
- "description": "Public way to subscribe to events."
3220
- },
3221
- {
3222
- "kind": "method",
3223
- "name": "getCurrentSlide",
3224
- "privacy": "public",
3225
- "description": "Gets the current slide.",
3226
- "return": {
3227
- "type": {
3228
- "text": ""
3229
- }
3230
- }
3231
- },
3232
- {
3233
- "kind": "method",
3234
- "name": "scrollToPrevSlide",
3235
- "privacy": "public",
3236
- "description": "Scrolls to the slide before the current slide."
3237
- },
3238
- {
3239
- "kind": "method",
3240
- "name": "scrollToNextSlide",
3241
- "privacy": "public",
3242
- "description": "Scrolls to the slide after the current slide."
3243
- }
3244
- ],
3245
- "superclass": {
3246
- "name": "LitElement",
3247
- "package": "lit"
3248
- },
3249
- "tagName": "carousel-scroller",
3250
- "customElement": true
3251
- }
3252
- ],
3253
- "exports": [
3254
- {
3255
- "kind": "js",
3256
- "name": "CarouselScroller",
3257
- "declaration": {
3258
- "name": "CarouselScroller",
3259
- "module": "src/components/carousel-scroller/carousel-scroller.ts"
3260
- }
3261
- },
3262
- {
3263
- "kind": "custom-element-definition",
3264
- "name": "carousel-scroller",
3265
- "declaration": {
3266
- "name": "CarouselScroller",
3267
- "module": "src/components/carousel-scroller/carousel-scroller.ts"
3268
- }
3269
- }
3270
- ]
3271
- },
3272
3278
  {
3273
3279
  "kind": "javascript-module",
3274
3280
  "path": "src/components/color-palette/color-palette-utils.ts",
@@ -4725,33 +4731,45 @@
4725
4731
  },
4726
4732
  {
4727
4733
  "kind": "javascript-module",
4728
- "path": "dist/components/color-palette/menu/color-palette-menu.js",
4734
+ "path": "dist/components/color-palette/editor/color-palette-editor.js",
4729
4735
  "declarations": [
4730
4736
  {
4731
4737
  "kind": "variable",
4732
- "name": "s",
4733
- "default": "class extends y { constructor() { super(...arguments), this.colors = [], this.editMode = !1, this.copyFormat = v.copyFormat, this.reorder = !1, this.emitter = new C(); } disconnectedCallback() { super.disconnectedCallback(), this.emitter.clear(); } render() { return c` ${this.reorder ? this.reorderItems() : this.menuItems()} `; } /** Renders the menu items. */ menuItems() { const i = { colors: this.colors, settings: this.settings }; return c` <menu> <li> <button @click=${(t) => { t.stopPropagation(), this.reorder = !this.reorder; }} > ${r(E)} <span>Reorder</span> </button> </li> <li> <button @click=${() => { this.emitter.emit(\"openEditor\"); }} > ${r(P)} <span>Edit Mode</span> </button> </li> ${// Only show toggle edit mode option when palette is not a gradient this.settings?.gradient ? d : c` <li> <button @click=${() => { this.emitter.emit(\"editMode\", !this.editMode); }} > ${r(k)} <span>Quick Edit</span> ${this.editMode ? r(M) : d} </button> </li> `} <hr> <li> <button @click=${() => { const t = this.colors.map((o) => { const e = u(o).rgb(); return `rgb(${e[0]}, ${e[1]}, ${e[2]})`; }); this.emitter.emit(\"change\", t); }} > ${r(h)} <span>Convert to RGB</span> </button> </li> <li> <button @click=${() => { const t = this.colors.map((o) => { const e = u(o).hsl(); return `hsl(${e[0]} ${e[1]}% ${e[2]}%)`; }); this.emitter.emit(\"change\", t); }} > ${r(h)} <span>Convert to HSL</span> </button> </li> <li> <button @click=${() => { const t = this.colors.map((o) => u(o).hex(2)); this.emitter.emit(\"change\", t); }} > ${r(h)} <span>Convert to HEX</span> </button> </li> <hr> <li> <button @click=${async () => { await b(JSON.stringify(i), this.copyFormat), this.emitter.emit(\"change\", []); }} > ${r(O)} <span>Cut</span> </button> </li> <li> <button @click=${async () => { await b(JSON.stringify(i), this.copyFormat); }} > ${r(w)} <span>Copy</span> </button> </li> </menu> `; } /** Renders the reorder items. */ reorderItems() { const i = (t) => { t instanceof _ && (t.emitter.clear(), t.emitter.on(\"submit\", (o) => { this.emitter.emit(\"change\", o), this.reorder = !1; })); }; return c` <color-palette-reorder .colors=${this.colors} ${S(i)} > </color-palette-reorder> `; } }"
4738
+ "name": "X"
4739
+ },
4740
+ {
4741
+ "kind": "variable",
4742
+ "name": "a",
4743
+ "default": "class extends x { constructor() { super(...arguments), this.colors = [], this.settings = { height: u.height, width: u.width, direction: u.direction, gradient: u.gradient, preventHover: u.preventHover, hideText: u.hideText, override: u.override, aliases: [] }, this.selectedInput = \"Color Picker\", this.combination = f.Random, this.colorPickerDisabled = !1, this.emitter = new A(); } disconnectedCallback() { this.emitter.clear(); } render() { const t = () => { switch (this.selectedInput) { case \"Color Picker\": return this.pickerOption(); case \"Generate\": return this.generateOption(); case \"Image\": return this.imageOption(); case \"URL\": return this.urlOption(); } }, n = (s) => { s instanceof B && s.emitter.on(\"changed\", (o, r) => { this.colors = o, this.settings = r; }); }; return l` <div id=\"color-palette-editor\"> <h1>Editor</h1> <section id='colors'> <h3>Colors</h3> <div id=\"control-container\"> <button title=\"Color Picker\" @click=${() => this.selectedInput = \"Color Picker\"} > ${p(U)} </button> <button title=\"Generate\" @click=${() => this.selectedInput = \"Generate\"} > ${p(C)} </button> <button title=\"Image\" @click=${() => this.selectedInput = \"Image\"} > ${p(O)} </button> <button title=\"URL\" @click=${() => this.selectedInput = \"URL\"} > ${p(R)} </button> </div> <div id='colors-container'> ${t()} </div> </section> <section id='preview'> <color-palette .colors=${this.colors} height=${this.settings.height} width=${this.settings.width} direction=${this.settings.direction} ?gradient=${this.settings.gradient} ?preventHover=${this.settings.preventHover} ?hideText=${this.settings.hideText} ?override=${this.settings.override} .aliases=${this.settings.aliases} ?editMode=${!0} maxWidth=${560} ${m(n)} > </color-palette> </section> <section id='settings'> <h3>Settings</h3> ${this.renderSettings()} <button id='create-btn' @click=${() => { try { this.colors.length === 0 && (this.colors = L(f.Random).colors), this.emitter.emit(\"submit\", this.colors, this.settings); } catch { } }} > Create </button> </section> </div> `; } /** Renders the settings fields. */ renderSettings() { return l` <setting-item name='Height' > <input type='number' value=${this.settings.height} step=${5} @input=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, height: +t.target.value }); }} > </setting-item> <setting-item name='Width' description='Caution - Might cause palette to display incorrectly.' > <input type='number' value=${this.settings.width} step=${10} @input=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, width: +t.target.value }); }} > </setting-item> <setting-item name='Direction' > <select @change=${(t) => { t.target instanceof HTMLSelectElement && (this.settings = { ...this.settings, direction: t.target.value }); }} > ${Object.values(M).map((t) => l`<option ?selected=${this.settings.direction === t}>${t}</option>`)} </select> </setting-item> <setting-item name='Gradient' > <input type='checkbox' ?checked=${this.settings.gradient} @change=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, gradient: t.target.checked }); }} > </setting-item> <setting-item name='Prevent Hover' description='Toggles whether palettes can be hovered' > <input type='checkbox' ?checked=${this.settings.preventHover} @change=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, preventHover: t.target.checked }); }} > </setting-item> <setting-item name='Hide Text' description='Disables color and alias visibility' > <input type='checkbox' ?checked=${this.settings.hideText} @change=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, hideText: t.target.checked }); }} > </setting-item> <setting-item name='Override' description='Disables color validation for full control (advanced)' > <input type='checkbox' ?checked=${this.settings.override} @change=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, override: t.target.checked }); }} > </setting-item> `; } /** Renders the picker option. */ pickerOption() { return l` <setting-item name='Color Picker' description='Use handpicked colors' > <input type='color' @change=${(t) => { t.target instanceof HTMLInputElement && (this.colors = [...this.colors, t.target.value], this.settings.aliases.push(\"\")); }} > </setting-item> `; } /** Renders the generate option. */ generateOption() { return this.colorPickerDisabled = this.combination === f.Random, l` <setting-item name='Generate' description='Generate colors based on color theory' > <select @change=${(t) => { t.target instanceof HTMLSelectElement && (this.combination = t.target.value, this.colorPickerDisabled = this.combination === f.Random); }} > ${Object.values(f).map((t) => l`<option ?selected=${this.combination === t}>${t}</option>`)} </select> <input type='color' ?disabled=${this.colorPickerDisabled} @change=${(t) => { t.target instanceof HTMLInputElement && (this.baseColor = b(t.target.value)); }} @contextmenu=${(t) => { t.preventDefault(), t.target instanceof HTMLInputElement && (t.target.value = b(\"#000\").hex(), this.baseColor = void 0); }} > <button title='Loads the generated colors' @click=${(t) => { const n = L(this.combination, { baseColor: this.baseColor, settings: this.settings }); this.colors = n.colors, n.settings && (this.settings = n.settings); }} > ${p(C)} </button> </setting-item> `; } /** Renders the image option. */ imageOption() { let t = \"\", n = $(), s = $(), o = $(), r = n.value?.value || \"\", c, h = $(), I = (e) => { e instanceof w && (c = e, e.emitter.clear(), e.emitter.on(\"click\", async (i) => await j(i.toUpperCase(), S.Raw)), e.emitter.on(\"move\", (i) => { if (!h.value) return; let d = h.value; d.text = e.getCanvasHex(i.x, i.y).toUpperCase(), d.setClampedPosition(i, e.getBoundingClientRect()); })); }; const E = async () => { if (!s.value || !c) return; const e = s.value; return await c.getPalette(+e.value); }, y = async () => { const e = await E(); e && (this.colors = e.map((i) => b(i).hex(0)), this.settings.aliases = []); }, k = async (e) => { if (!URL.canParse(e) || !c) return; const i = c; i.imageURL = e, await y(); }; return l` <setting-item name='Image' description='Convert image into palette' > <input type='url' placeholder='Enter URL or select file' ${m(n)} > <button title='Right click to clear URL' @click=${async (e) => { try { if (!o.value) return; let i = o.value; if (r !== \"\") if (URL.canParse(r)) await k(r); else throw new Error(\"URL provided is not valid.\"); else i.click(); } catch { } }} @contextmenu=${(e) => { if (e.preventDefault(), !n.value) return; const i = n.value; i.value = \"\"; }} > ${p(D)} </button> <input type ='file' accept = 'image/*' @change=${(e) => { try { const i = new FileReader(), d = e.target.files?.[0]; d && i.readAsDataURL(d), i.addEventListener(\"load\", async () => { typeof i.result == \"string\" && (r = i.result, await k(r)); }), i.addEventListener(\"error\", () => { throw new Error(\"Error processing image\"); }); } catch { } }} ${m(o)} > </setting-item> <setting-item name='Count' description='Set the number of colors to generate from the image' > <input id='range-slider' type='range' min='4' max='12' value='8' @change=${async () => { await y(); }} ${m(s)} > </setting-item> <tool-tip trigger='hover' ${m(h)} > <canvas-image width=${this.palette.getBoundingClientRect().width} height=${this.palette.getBoundingClientRect().height} @mousemove=${(e) => { e.target instanceof w && (t = e.target.getCanvasHex(e.clientX, e.clientY)); }} @click=${(e) => { t && (this.colors = [...this.colors, t], this.settings.aliases = [...this.settings.aliases, \"\"]); }} ${m(I)} > </canvas-image> </tool-tip> `; } /** Renders the URL option. */ urlOption() { let t; return l` <setting-item name='URL' description='Only coolors.co & colorhunt.co are currently supported' > <input type='url' placeholder='Enter URL' @change=${(n) => { n.target instanceof HTMLInputElement && (t = n.target); }} > <button title='Right click to clear URL' @click=${(n) => { try { if (!t.value.match(G)) throw new Error(\"URL provided is not valid.\"); this.colors = _(t.value), this.settings.aliases = []; } catch { } }} @contextmenu=${(n) => { n.preventDefault(), t && (t.value = \"\"); }} > ${p(R)} </button> </setting-item> `; } }"
4734
4744
  }
4735
4745
  ],
4736
4746
  "exports": [
4737
4747
  {
4738
4748
  "kind": "js",
4739
- "name": "ColorPaletteMenu",
4749
+ "name": "ColorPaletteEditor",
4740
4750
  "declaration": {
4741
- "name": "s",
4742
- "module": "dist/components/color-palette/menu/color-palette-menu.js"
4751
+ "name": "a",
4752
+ "module": "dist/components/color-palette/editor/color-palette-editor.js"
4753
+ }
4754
+ },
4755
+ {
4756
+ "kind": "js",
4757
+ "name": "SelectedInput",
4758
+ "declaration": {
4759
+ "name": "X",
4760
+ "module": "dist/components/color-palette/editor/color-palette-editor.js"
4743
4761
  }
4744
4762
  }
4745
4763
  ]
4746
4764
  },
4747
4765
  {
4748
4766
  "kind": "javascript-module",
4749
- "path": "dist/components/color-palette/menu/color-palette-menu.styles.js",
4767
+ "path": "dist/components/color-palette/editor/color-palette-editor.styles.js",
4750
4768
  "declarations": [
4751
4769
  {
4752
4770
  "kind": "variable",
4753
- "name": "t",
4754
- "default": "r` :host { display: block; } menu { display: grid; grid-template-columns: 1fr; padding: 0.5rem; margin: 0; border-radius: 5px; color: rgb(245, 245, 245); background-color: #222222; } li { display: grid; grid-template-columns: subgrid; list-style: none; } button { display: grid; grid-template-columns: auto 1fr auto; align-items: center; justify-items: flex-start; column-gap: 0.5rem; background-color: inherit; color: inherit; border: none; cursor: pointer; padding: 4px 8px; text-wrap: nowrap; &:hover { background-color: #323232; } span { font-size: 14px; } } hr { width: 95%; border-color: rgb(45, 45, 45); } `"
4771
+ "name": "r",
4772
+ "default": "o` :host { display: block; contain: content; width: 560px; padding: 16px; background-color: rgb(27, 27, 27); color: rgba(245, 245, 245, 0.9); border-radius: 5px; --cta-background: hsl(262, 83%, 69%); } input[type='file'] { display: none; } :host([selectedInput='Color Picker']) { #color-palette-editor #colors { div:nth-of-type(1) { button[title='Color Picker'] { background-color: var(--cta-background); } } div:nth-of-type(2) { canvas { max-width: 100%; max-height: fit-content; object-fit: cover; } } } } :host([selectedInput='Generate']) { #color-palette-editor #colors div { button[title='Generate'] { background-color: var(--cta-background); } } } :host([selectedInput='Image']) { #color-palette-editor #colors div { button[title='Image'] { background-color: var(--cta-background); } } } :host([selectedInput='URL']) { #color-palette-editor #colors div { button[title='URL'] { background-color: var(--cta-background); } } } #color-palette-editor { display: flex; flex-direction: column; gap: 0.5rem; h1 { font-size: 2.25rem; } button { cursor: pointer; } #colors { div { input:not([type='color']) { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 0.5rem; } select { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 0.5rem; } button { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 4px 12px; } } } #settings { display: flex; flex-direction: column; input { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 0.5rem; } select { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 0.5rem; } #create-btn { background-color: var(--cta-background); color: white; border-radius: 5px; padding: 4px 12px; user-select: none; border: none; width: fit-content; align-self: flex-end; &:hover { background-color: hsl(calc(262 - 3), calc(83% * 1.02), calc(69% * 1.15)); } } } } `"
4755
4773
  }
4756
4774
  ],
4757
4775
  "exports": [
@@ -4759,41 +4777,41 @@
4759
4777
  "kind": "js",
4760
4778
  "name": "default",
4761
4779
  "declaration": {
4762
- "name": "t",
4763
- "module": "dist/components/color-palette/menu/color-palette-menu.styles.js"
4780
+ "name": "r",
4781
+ "module": "dist/components/color-palette/editor/color-palette-editor.styles.js"
4764
4782
  }
4765
4783
  }
4766
4784
  ]
4767
4785
  },
4768
4786
  {
4769
4787
  "kind": "javascript-module",
4770
- "path": "dist/components/color-palette/menu/color-palette-reorder.js",
4788
+ "path": "dist/components/color-palette/editor/settings-item.js",
4771
4789
  "declarations": [
4772
4790
  {
4773
4791
  "kind": "variable",
4774
- "name": "o",
4775
- "default": "class extends m { constructor() { super(...arguments), this.colors = [], this.emitter = new y(); } disconnectedCallback() { super.disconnectedCallback(), this.emitter.clear(); } render() { return c` <menu> ${x( Object.keys(i), (r) => c` <button @click=${(s) => { this.selectOption(r); }} > <span>${r}</span> </button> ` )} </menu> `; } /** Reorders the palette colors based on the selected option. */ selectOption(r) { const s = this.colors.map((e) => u(e)); let a = []; switch (r) { case \"Hue\": a = s.sort((e, t) => e.hue() - t.hue()).map((e) => e.hex()); break; case \"Saturation\": a = s.sort((e, t) => e.saturation() - t.saturation()).map((e) => e.hex()); break; case \"Lightness\": a = s.sort((e, t) => e.lightness() - t.lightness()).map((e) => e.hex()); break; case \"Red\": a = s.sort((e, t) => e.red() - t.red()).map((e) => e.hex()); break; case \"Green\": a = s.sort((e, t) => e.green() - t.green()).map((e) => e.hex()); break; case \"Blue\": a = s.sort((e, t) => e.blue() - t.blue()).map((e) => e.hex()); break; case \"Alpha\": a = s.sort((e, t) => e.alpha() - t.alpha()).map((e) => e.hex()); break; } this.emitter.emit(\"submit\", a); } }"
4792
+ "name": "e",
4793
+ "default": "class extends c { constructor() { super(...arguments), this.name = \"\", this.description = \"\"; } render() { return f` <div> <h3>${this.name}</h3> <p>${this.description}</p> </div> <slot></slot> `; } }"
4776
4794
  }
4777
4795
  ],
4778
4796
  "exports": [
4779
4797
  {
4780
4798
  "kind": "js",
4781
- "name": "ColorPaletteReorder",
4799
+ "name": "SettingItem",
4782
4800
  "declaration": {
4783
- "name": "o",
4784
- "module": "dist/components/color-palette/menu/color-palette-reorder.js"
4801
+ "name": "e",
4802
+ "module": "dist/components/color-palette/editor/settings-item.js"
4785
4803
  }
4786
4804
  }
4787
4805
  ]
4788
4806
  },
4789
4807
  {
4790
4808
  "kind": "javascript-module",
4791
- "path": "dist/components/color-palette/menu/color-palette-reorder.styles.js",
4809
+ "path": "dist/components/color-palette/editor/settings-item.styles.js",
4792
4810
  "declarations": [
4793
4811
  {
4794
4812
  "kind": "variable",
4795
- "name": "n",
4796
- "default": "o` :host { display: block; } menu { display: flex; flex-direction: column; gap: 0.5rem; background-color: rgb(27, 27, 27); padding: 0.5rem; border-radius: 5px; button { color: rgb(245, 245, 245); background-color: transparent; border: none; padding: 4px 12px; cursor: pointer; &:hover { background-color: rgb(75, 75, 75); } span { font-size: 14px; } } } `"
4813
+ "name": "o",
4814
+ "default": "t` :host { display: grid; grid-template-columns: 1fr 1fr; padding-block: 2%; } :host(:not([description])) p { display: none; } h3 { margin: 0; font-size: 15px; } p { margin: 0; padding-top: 4px; font-size: 12px; } slot { display: flex; justify-self: flex-end; align-items: center; gap: 5%; } ::slotted(input[type='color']) { border: none; } `"
4797
4815
  }
4798
4816
  ],
4799
4817
  "exports": [
@@ -4801,8 +4819,8 @@
4801
4819
  "kind": "js",
4802
4820
  "name": "default",
4803
4821
  "declaration": {
4804
- "name": "n",
4805
- "module": "dist/components/color-palette/menu/color-palette-reorder.styles.js"
4822
+ "name": "o",
4823
+ "module": "dist/components/color-palette/editor/settings-item.styles.js"
4806
4824
  }
4807
4825
  }
4808
4826
  ]
@@ -4893,45 +4911,33 @@
4893
4911
  },
4894
4912
  {
4895
4913
  "kind": "javascript-module",
4896
- "path": "dist/components/color-palette/editor/color-palette-editor.js",
4914
+ "path": "dist/components/color-palette/menu/color-palette-menu.js",
4897
4915
  "declarations": [
4898
4916
  {
4899
4917
  "kind": "variable",
4900
- "name": "X"
4901
- },
4902
- {
4903
- "kind": "variable",
4904
- "name": "a",
4905
- "default": "class extends x { constructor() { super(...arguments), this.colors = [], this.settings = { height: u.height, width: u.width, direction: u.direction, gradient: u.gradient, preventHover: u.preventHover, hideText: u.hideText, override: u.override, aliases: [] }, this.selectedInput = \"Color Picker\", this.combination = f.Random, this.colorPickerDisabled = !1, this.emitter = new A(); } disconnectedCallback() { this.emitter.clear(); } render() { const t = () => { switch (this.selectedInput) { case \"Color Picker\": return this.pickerOption(); case \"Generate\": return this.generateOption(); case \"Image\": return this.imageOption(); case \"URL\": return this.urlOption(); } }, n = (s) => { s instanceof B && s.emitter.on(\"changed\", (o, r) => { this.colors = o, this.settings = r; }); }; return l` <div id=\"color-palette-editor\"> <h1>Editor</h1> <section id='colors'> <h3>Colors</h3> <div id=\"control-container\"> <button title=\"Color Picker\" @click=${() => this.selectedInput = \"Color Picker\"} > ${p(U)} </button> <button title=\"Generate\" @click=${() => this.selectedInput = \"Generate\"} > ${p(C)} </button> <button title=\"Image\" @click=${() => this.selectedInput = \"Image\"} > ${p(O)} </button> <button title=\"URL\" @click=${() => this.selectedInput = \"URL\"} > ${p(R)} </button> </div> <div id='colors-container'> ${t()} </div> </section> <section id='preview'> <color-palette .colors=${this.colors} height=${this.settings.height} width=${this.settings.width} direction=${this.settings.direction} ?gradient=${this.settings.gradient} ?preventHover=${this.settings.preventHover} ?hideText=${this.settings.hideText} ?override=${this.settings.override} .aliases=${this.settings.aliases} ?editMode=${!0} maxWidth=${560} ${m(n)} > </color-palette> </section> <section id='settings'> <h3>Settings</h3> ${this.renderSettings()} <button id='create-btn' @click=${() => { try { this.colors.length === 0 && (this.colors = L(f.Random).colors), this.emitter.emit(\"submit\", this.colors, this.settings); } catch { } }} > Create </button> </section> </div> `; } /** Renders the settings fields. */ renderSettings() { return l` <setting-item name='Height' > <input type='number' value=${this.settings.height} step=${5} @input=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, height: +t.target.value }); }} > </setting-item> <setting-item name='Width' description='Caution - Might cause palette to display incorrectly.' > <input type='number' value=${this.settings.width} step=${10} @input=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, width: +t.target.value }); }} > </setting-item> <setting-item name='Direction' > <select @change=${(t) => { t.target instanceof HTMLSelectElement && (this.settings = { ...this.settings, direction: t.target.value }); }} > ${Object.values(M).map((t) => l`<option ?selected=${this.settings.direction === t}>${t}</option>`)} </select> </setting-item> <setting-item name='Gradient' > <input type='checkbox' ?checked=${this.settings.gradient} @change=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, gradient: t.target.checked }); }} > </setting-item> <setting-item name='Prevent Hover' description='Toggles whether palettes can be hovered' > <input type='checkbox' ?checked=${this.settings.preventHover} @change=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, preventHover: t.target.checked }); }} > </setting-item> <setting-item name='Hide Text' description='Disables color and alias visibility' > <input type='checkbox' ?checked=${this.settings.hideText} @change=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, hideText: t.target.checked }); }} > </setting-item> <setting-item name='Override' description='Disables color validation for full control (advanced)' > <input type='checkbox' ?checked=${this.settings.override} @change=${(t) => { t.target instanceof HTMLInputElement && (this.settings = { ...this.settings, override: t.target.checked }); }} > </setting-item> `; } /** Renders the picker option. */ pickerOption() { return l` <setting-item name='Color Picker' description='Use handpicked colors' > <input type='color' @change=${(t) => { t.target instanceof HTMLInputElement && (this.colors = [...this.colors, t.target.value], this.settings.aliases.push(\"\")); }} > </setting-item> `; } /** Renders the generate option. */ generateOption() { return this.colorPickerDisabled = this.combination === f.Random, l` <setting-item name='Generate' description='Generate colors based on color theory' > <select @change=${(t) => { t.target instanceof HTMLSelectElement && (this.combination = t.target.value, this.colorPickerDisabled = this.combination === f.Random); }} > ${Object.values(f).map((t) => l`<option ?selected=${this.combination === t}>${t}</option>`)} </select> <input type='color' ?disabled=${this.colorPickerDisabled} @change=${(t) => { t.target instanceof HTMLInputElement && (this.baseColor = b(t.target.value)); }} @contextmenu=${(t) => { t.preventDefault(), t.target instanceof HTMLInputElement && (t.target.value = b(\"#000\").hex(), this.baseColor = void 0); }} > <button title='Loads the generated colors' @click=${(t) => { const n = L(this.combination, { baseColor: this.baseColor, settings: this.settings }); this.colors = n.colors, n.settings && (this.settings = n.settings); }} > ${p(C)} </button> </setting-item> `; } /** Renders the image option. */ imageOption() { let t = \"\", n = $(), s = $(), o = $(), r = n.value?.value || \"\", c, h = $(), I = (e) => { e instanceof w && (c = e, e.emitter.clear(), e.emitter.on(\"click\", async (i) => await j(i.toUpperCase(), S.Raw)), e.emitter.on(\"move\", (i) => { if (!h.value) return; let d = h.value; d.text = e.getCanvasHex(i.x, i.y).toUpperCase(), d.setClampedPosition(i, e.getBoundingClientRect()); })); }; const E = async () => { if (!s.value || !c) return; const e = s.value; return await c.getPalette(+e.value); }, y = async () => { const e = await E(); e && (this.colors = e.map((i) => b(i).hex(0)), this.settings.aliases = []); }, k = async (e) => { if (!URL.canParse(e) || !c) return; const i = c; i.imageURL = e, await y(); }; return l` <setting-item name='Image' description='Convert image into palette' > <input type='url' placeholder='Enter URL or select file' ${m(n)} > <button title='Right click to clear URL' @click=${async (e) => { try { if (!o.value) return; let i = o.value; if (r !== \"\") if (URL.canParse(r)) await k(r); else throw new Error(\"URL provided is not valid.\"); else i.click(); } catch { } }} @contextmenu=${(e) => { if (e.preventDefault(), !n.value) return; const i = n.value; i.value = \"\"; }} > ${p(D)} </button> <input type ='file' accept = 'image/*' @change=${(e) => { try { const i = new FileReader(), d = e.target.files?.[0]; d && i.readAsDataURL(d), i.addEventListener(\"load\", async () => { typeof i.result == \"string\" && (r = i.result, await k(r)); }), i.addEventListener(\"error\", () => { throw new Error(\"Error processing image\"); }); } catch { } }} ${m(o)} > </setting-item> <setting-item name='Count' description='Set the number of colors to generate from the image' > <input id='range-slider' type='range' min='4' max='12' value='8' @change=${async () => { await y(); }} ${m(s)} > </setting-item> <tool-tip trigger='hover' ${m(h)} > <canvas-image width=${this.palette.getBoundingClientRect().width} height=${this.palette.getBoundingClientRect().height} @mousemove=${(e) => { e.target instanceof w && (t = e.target.getCanvasHex(e.clientX, e.clientY)); }} @click=${(e) => { t && (this.colors = [...this.colors, t], this.settings.aliases = [...this.settings.aliases, \"\"]); }} ${m(I)} > </canvas-image> </tool-tip> `; } /** Renders the URL option. */ urlOption() { let t; return l` <setting-item name='URL' description='Only coolors.co & colorhunt.co are currently supported' > <input type='url' placeholder='Enter URL' @change=${(n) => { n.target instanceof HTMLInputElement && (t = n.target); }} > <button title='Right click to clear URL' @click=${(n) => { try { if (!t.value.match(G)) throw new Error(\"URL provided is not valid.\"); this.colors = _(t.value), this.settings.aliases = []; } catch { } }} @contextmenu=${(n) => { n.preventDefault(), t && (t.value = \"\"); }} > ${p(R)} </button> </setting-item> `; } }"
4918
+ "name": "s",
4919
+ "default": "class extends y { constructor() { super(...arguments), this.colors = [], this.editMode = !1, this.copyFormat = v.copyFormat, this.reorder = !1, this.emitter = new C(); } disconnectedCallback() { super.disconnectedCallback(), this.emitter.clear(); } render() { return c` ${this.reorder ? this.reorderItems() : this.menuItems()} `; } /** Renders the menu items. */ menuItems() { const i = { colors: this.colors, settings: this.settings }; return c` <menu> <li> <button @click=${(t) => { t.stopPropagation(), this.reorder = !this.reorder; }} > ${r(E)} <span>Reorder</span> </button> </li> <li> <button @click=${() => { this.emitter.emit(\"openEditor\"); }} > ${r(P)} <span>Edit Mode</span> </button> </li> ${// Only show toggle edit mode option when palette is not a gradient this.settings?.gradient ? d : c` <li> <button @click=${() => { this.emitter.emit(\"editMode\", !this.editMode); }} > ${r(k)} <span>Quick Edit</span> ${this.editMode ? r(M) : d} </button> </li> `} <hr> <li> <button @click=${() => { const t = this.colors.map((o) => { const e = u(o).rgb(); return `rgb(${e[0]}, ${e[1]}, ${e[2]})`; }); this.emitter.emit(\"change\", t); }} > ${r(h)} <span>Convert to RGB</span> </button> </li> <li> <button @click=${() => { const t = this.colors.map((o) => { const e = u(o).hsl(); return `hsl(${e[0]} ${e[1]}% ${e[2]}%)`; }); this.emitter.emit(\"change\", t); }} > ${r(h)} <span>Convert to HSL</span> </button> </li> <li> <button @click=${() => { const t = this.colors.map((o) => u(o).hex(2)); this.emitter.emit(\"change\", t); }} > ${r(h)} <span>Convert to HEX</span> </button> </li> <hr> <li> <button @click=${async () => { await b(JSON.stringify(i), this.copyFormat), this.emitter.emit(\"change\", []); }} > ${r(O)} <span>Cut</span> </button> </li> <li> <button @click=${async () => { await b(JSON.stringify(i), this.copyFormat); }} > ${r(w)} <span>Copy</span> </button> </li> </menu> `; } /** Renders the reorder items. */ reorderItems() { const i = (t) => { t instanceof _ && (t.emitter.clear(), t.emitter.on(\"submit\", (o) => { this.emitter.emit(\"change\", o), this.reorder = !1; })); }; return c` <color-palette-reorder .colors=${this.colors} ${S(i)} > </color-palette-reorder> `; } }"
4906
4920
  }
4907
4921
  ],
4908
4922
  "exports": [
4909
4923
  {
4910
4924
  "kind": "js",
4911
- "name": "ColorPaletteEditor",
4912
- "declaration": {
4913
- "name": "a",
4914
- "module": "dist/components/color-palette/editor/color-palette-editor.js"
4915
- }
4916
- },
4917
- {
4918
- "kind": "js",
4919
- "name": "SelectedInput",
4925
+ "name": "ColorPaletteMenu",
4920
4926
  "declaration": {
4921
- "name": "X",
4922
- "module": "dist/components/color-palette/editor/color-palette-editor.js"
4927
+ "name": "s",
4928
+ "module": "dist/components/color-palette/menu/color-palette-menu.js"
4923
4929
  }
4924
4930
  }
4925
4931
  ]
4926
4932
  },
4927
4933
  {
4928
4934
  "kind": "javascript-module",
4929
- "path": "dist/components/color-palette/editor/color-palette-editor.styles.js",
4935
+ "path": "dist/components/color-palette/menu/color-palette-menu.styles.js",
4930
4936
  "declarations": [
4931
4937
  {
4932
4938
  "kind": "variable",
4933
- "name": "r",
4934
- "default": "o` :host { display: block; contain: content; width: 560px; padding: 16px; background-color: rgb(27, 27, 27); color: rgba(245, 245, 245, 0.9); border-radius: 5px; --cta-background: hsl(262, 83%, 69%); } input[type='file'] { display: none; } :host([selectedInput='Color Picker']) { #color-palette-editor #colors { div:nth-of-type(1) { button[title='Color Picker'] { background-color: var(--cta-background); } } div:nth-of-type(2) { canvas { max-width: 100%; max-height: fit-content; object-fit: cover; } } } } :host([selectedInput='Generate']) { #color-palette-editor #colors div { button[title='Generate'] { background-color: var(--cta-background); } } } :host([selectedInput='Image']) { #color-palette-editor #colors div { button[title='Image'] { background-color: var(--cta-background); } } } :host([selectedInput='URL']) { #color-palette-editor #colors div { button[title='URL'] { background-color: var(--cta-background); } } } #color-palette-editor { display: flex; flex-direction: column; gap: 0.5rem; h1 { font-size: 2.25rem; } button { cursor: pointer; } #colors { div { input:not([type='color']) { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 0.5rem; } select { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 0.5rem; } button { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 4px 12px; } } } #settings { display: flex; flex-direction: column; input { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 0.5rem; } select { color: rgb(245, 245, 245); background-color: rgb(38, 38, 38); border: none; border-radius: 5px; height: fit-content; width: fit-content; padding: 0.5rem; } #create-btn { background-color: var(--cta-background); color: white; border-radius: 5px; padding: 4px 12px; user-select: none; border: none; width: fit-content; align-self: flex-end; &:hover { background-color: hsl(calc(262 - 3), calc(83% * 1.02), calc(69% * 1.15)); } } } } `"
4939
+ "name": "t",
4940
+ "default": "r` :host { display: block; } menu { display: grid; grid-template-columns: 1fr; padding: 0.5rem; margin: 0; border-radius: 5px; color: rgb(245, 245, 245); background-color: #222222; } li { display: grid; grid-template-columns: subgrid; list-style: none; } button { display: grid; grid-template-columns: auto 1fr auto; align-items: center; justify-items: flex-start; column-gap: 0.5rem; background-color: inherit; color: inherit; border: none; cursor: pointer; padding: 4px 8px; text-wrap: nowrap; &:hover { background-color: #323232; } span { font-size: 14px; } } hr { width: 95%; border-color: rgb(45, 45, 45); } `"
4935
4941
  }
4936
4942
  ],
4937
4943
  "exports": [
@@ -4939,41 +4945,41 @@
4939
4945
  "kind": "js",
4940
4946
  "name": "default",
4941
4947
  "declaration": {
4942
- "name": "r",
4943
- "module": "dist/components/color-palette/editor/color-palette-editor.styles.js"
4948
+ "name": "t",
4949
+ "module": "dist/components/color-palette/menu/color-palette-menu.styles.js"
4944
4950
  }
4945
4951
  }
4946
4952
  ]
4947
4953
  },
4948
4954
  {
4949
4955
  "kind": "javascript-module",
4950
- "path": "dist/components/color-palette/editor/settings-item.js",
4956
+ "path": "dist/components/color-palette/menu/color-palette-reorder.js",
4951
4957
  "declarations": [
4952
4958
  {
4953
4959
  "kind": "variable",
4954
- "name": "e",
4955
- "default": "class extends c { constructor() { super(...arguments), this.name = \"\", this.description = \"\"; } render() { return f` <div> <h3>${this.name}</h3> <p>${this.description}</p> </div> <slot></slot> `; } }"
4960
+ "name": "o",
4961
+ "default": "class extends m { constructor() { super(...arguments), this.colors = [], this.emitter = new y(); } disconnectedCallback() { super.disconnectedCallback(), this.emitter.clear(); } render() { return c` <menu> ${x( Object.keys(i), (r) => c` <button @click=${(s) => { this.selectOption(r); }} > <span>${r}</span> </button> ` )} </menu> `; } /** Reorders the palette colors based on the selected option. */ selectOption(r) { const s = this.colors.map((e) => u(e)); let a = []; switch (r) { case \"Hue\": a = s.sort((e, t) => e.hue() - t.hue()).map((e) => e.hex()); break; case \"Saturation\": a = s.sort((e, t) => e.saturation() - t.saturation()).map((e) => e.hex()); break; case \"Lightness\": a = s.sort((e, t) => e.lightness() - t.lightness()).map((e) => e.hex()); break; case \"Red\": a = s.sort((e, t) => e.red() - t.red()).map((e) => e.hex()); break; case \"Green\": a = s.sort((e, t) => e.green() - t.green()).map((e) => e.hex()); break; case \"Blue\": a = s.sort((e, t) => e.blue() - t.blue()).map((e) => e.hex()); break; case \"Alpha\": a = s.sort((e, t) => e.alpha() - t.alpha()).map((e) => e.hex()); break; } this.emitter.emit(\"submit\", a); } }"
4956
4962
  }
4957
4963
  ],
4958
4964
  "exports": [
4959
4965
  {
4960
4966
  "kind": "js",
4961
- "name": "SettingItem",
4967
+ "name": "ColorPaletteReorder",
4962
4968
  "declaration": {
4963
- "name": "e",
4964
- "module": "dist/components/color-palette/editor/settings-item.js"
4969
+ "name": "o",
4970
+ "module": "dist/components/color-palette/menu/color-palette-reorder.js"
4965
4971
  }
4966
4972
  }
4967
4973
  ]
4968
4974
  },
4969
4975
  {
4970
4976
  "kind": "javascript-module",
4971
- "path": "dist/components/color-palette/editor/settings-item.styles.js",
4977
+ "path": "dist/components/color-palette/menu/color-palette-reorder.styles.js",
4972
4978
  "declarations": [
4973
4979
  {
4974
4980
  "kind": "variable",
4975
- "name": "o",
4976
- "default": "t` :host { display: grid; grid-template-columns: 1fr 1fr; padding-block: 2%; } :host(:not([description])) p { display: none; } h3 { margin: 0; font-size: 15px; } p { margin: 0; padding-top: 4px; font-size: 12px; } slot { display: flex; justify-self: flex-end; align-items: center; gap: 5%; } ::slotted(input[type='color']) { border: none; } `"
4981
+ "name": "n",
4982
+ "default": "o` :host { display: block; } menu { display: flex; flex-direction: column; gap: 0.5rem; background-color: rgb(27, 27, 27); padding: 0.5rem; border-radius: 5px; button { color: rgb(245, 245, 245); background-color: transparent; border: none; padding: 4px 12px; cursor: pointer; &:hover { background-color: rgb(75, 75, 75); } span { font-size: 14px; } } } `"
4977
4983
  }
4978
4984
  ],
4979
4985
  "exports": [
@@ -4981,8 +4987,8 @@
4981
4987
  "kind": "js",
4982
4988
  "name": "default",
4983
4989
  "declaration": {
4984
- "name": "o",
4985
- "module": "dist/components/color-palette/editor/settings-item.styles.js"
4990
+ "name": "n",
4991
+ "module": "dist/components/color-palette/menu/color-palette-reorder.styles.js"
4986
4992
  }
4987
4993
  }
4988
4994
  ]
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+
package/package.json CHANGED
@@ -2,12 +2,13 @@
2
2
  "private": false,
3
3
  "name": "@alegendstale/holly-components",
4
4
  "description": "Reusable UI components created using lit",
5
- "version": "2.0.6",
5
+ "version": "2.0.7",
6
6
  "author": "ALegendsTale",
7
7
  "license": "GPL-3.0",
8
8
  "customElements": "custom-elements.json",
9
9
  "type": "module",
10
10
  "exports": {
11
+ ".": "./dist/index.js",
11
12
  "./dist/components": "./dist/components",
12
13
  "./dist/components/*": "./dist/components/*",
13
14
  "./dist/decorators": "./dist/decorators",