@shibui-ui/ui 1.24.1 → 1.25.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/dist/components/atoms/index.d.ts +45 -16
- package/dist/components/atoms/index.d.ts.map +1 -1
- package/dist/components/molecules/index.d.ts +20 -1
- package/dist/components/molecules/index.d.ts.map +1 -1
- package/dist/components/organisms/index.d.ts +17 -1
- package/dist/components/organisms/index.d.ts.map +1 -1
- package/dist/index.d.ts +3 -82
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +79 -80
- package/dist/index.js.map +1 -1
- package/dist/index10.js +82 -18
- package/dist/index10.js.map +1 -1
- package/dist/index11.js +84 -69
- package/dist/index11.js.map +1 -1
- package/dist/index12.js +40 -26
- package/dist/index12.js.map +1 -1
- package/dist/index13.js +16 -39
- package/dist/index13.js.map +1 -1
- package/dist/index14.js +29 -44
- package/dist/index14.js.map +1 -1
- package/dist/index15.js +16 -117
- package/dist/index15.js.map +1 -1
- package/dist/index16.js +48 -40
- package/dist/index16.js.map +1 -1
- package/dist/index17.js +41 -25
- package/dist/index17.js.map +1 -1
- package/dist/index18.js +76 -49
- package/dist/index18.js.map +1 -1
- package/dist/index19.js +19 -39
- package/dist/index19.js.map +1 -1
- package/dist/index194.js +94 -24
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +2 -2
- package/dist/index197.js +2 -24
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +74 -2
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +64 -35
- package/dist/index199.js.map +1 -1
- package/dist/index20.js +21 -41
- package/dist/index20.js.map +1 -1
- package/dist/index200.js +2 -2
- package/dist/index201.js +54 -13
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +2 -2
- package/dist/index203.js +2 -2
- package/dist/index204.js +143 -157
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +43 -24
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +51 -2
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +2 -11
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +33 -2
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +2 -91
- package/dist/index209.js.map +1 -1
- package/dist/index21.js +90 -26
- package/dist/index21.js.map +1 -1
- package/dist/index210.js +6 -2
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +2 -41
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +260 -2
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +16 -5
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +2 -2
- package/dist/index215.js +2 -35
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +59 -42
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +32 -2
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +2 -85
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +2 -2
- package/dist/index22.js +41 -48
- package/dist/index22.js.map +1 -1
- package/dist/index220.js +73 -65
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +81 -2
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +2 -10
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +133 -2
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +2 -26
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +2 -2
- package/dist/index226.js +66 -12
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +97 -2
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +2 -2
- package/dist/index229.js +62 -24
- package/dist/index229.js.map +1 -1
- package/dist/index23.js +50 -94
- package/dist/index23.js.map +1 -1
- package/dist/index230.js +2 -2
- package/dist/index231.js +2 -2
- package/dist/index232.js +12 -2
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +5 -16
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +2 -2
- package/dist/index235.js +11 -9
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +2 -2
- package/dist/index237.js +76 -34
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +2 -2
- package/dist/index239.js +2 -27
- package/dist/index239.js.map +1 -1
- package/dist/index24.js +37 -34
- package/dist/index24.js.map +1 -1
- package/dist/index240.js +39 -2
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +2 -34
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +235 -12
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +82 -2
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +2 -9
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +94 -2
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +2 -5
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +268 -2
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +2 -36
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +21 -2
- package/dist/index249.js.map +1 -1
- package/dist/index25.js +51 -32
- package/dist/index25.js.map +1 -1
- package/dist/index250.js +2 -31
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +9 -2
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +2 -19
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +15 -2
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +2 -2
- package/dist/index255.js +135 -69
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +2 -11
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +5 -2
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +2 -78
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +9 -2
- package/dist/index259.js.map +1 -1
- package/dist/index26.js +31 -236
- package/dist/index26.js.map +1 -1
- package/dist/index260.js +2 -32
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +2 -2
- package/dist/index262.js +92 -9
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +59 -2
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +2 -16
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +41 -2
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +2 -16
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +34 -9
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +8 -54
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +2 -2
- package/dist/index27.js +27 -58
- package/dist/index27.js.map +1 -1
- package/dist/index270.js +42 -7
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +2 -2
- package/dist/index272.js +2 -34
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +16 -2
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +9 -2
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +6 -13
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +2 -2
- package/dist/index277.js +8 -15
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +2 -2
- package/dist/index279.js +55 -2
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +247 -24
- package/dist/index28.js.map +1 -1
- package/dist/index280.js +2 -42
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +2 -100
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +20 -2
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +2 -97
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +33 -2
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +6 -27
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +2 -2
- package/dist/index287.js +9 -44
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +2 -2
- package/dist/index289.js +2 -33
- package/dist/index289.js.map +1 -1
- package/dist/index29.js +249 -39
- package/dist/index29.js.map +1 -1
- package/dist/index290.js +36 -2
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +2 -57
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +24 -2
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +2 -2
- package/dist/index294.js +26 -247
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +2 -2
- package/dist/index296.js +2 -72
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +42 -2
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +7 -56
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +2 -133
- package/dist/index299.js.map +1 -1
- package/dist/index30.js +32 -19
- package/dist/index30.js.map +1 -1
- package/dist/index300.js +30 -2
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +2 -12
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +34 -2
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +2 -162
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +26 -42
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +2 -81
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +10 -2
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +2 -71
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +2 -2
- package/dist/index309.js +19 -2
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +96 -11
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +2 -81
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +2 -2
- package/dist/index312.js +42 -2
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +2 -74
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +25 -67
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +2 -2
- package/dist/index316.js +9 -17
- package/dist/index316.js.map +1 -1
- package/dist/index317.js +2 -2
- package/dist/index318.js +84 -32
- package/dist/index318.js.map +1 -1
- package/dist/index319.js +2 -2
- package/dist/index32.js +40 -48
- package/dist/index32.js.map +1 -1
- package/dist/index320.js +68 -77
- package/dist/index320.js.map +1 -1
- package/dist/index321.js +2 -2
- package/dist/index322.js +12 -148
- package/dist/index322.js.map +1 -1
- package/dist/index323.js +1 -1
- package/dist/index324.js +28 -6
- package/dist/index324.js.map +1 -1
- package/dist/index325.js +2 -2
- package/dist/index326.js +78 -87
- package/dist/index326.js.map +1 -1
- package/dist/index327.js +2 -2
- package/dist/index328.js +78 -2
- package/dist/index328.js.map +1 -1
- package/dist/index329.js +2 -237
- package/dist/index329.js.map +1 -1
- package/dist/index33.js +20 -56
- package/dist/index33.js.map +1 -1
- package/dist/index330.js +11 -6
- package/dist/index330.js.map +1 -1
- package/dist/index331.js +2 -2
- package/dist/index332.js +18 -59
- package/dist/index332.js.map +1 -1
- package/dist/index333.js +2 -2
- package/dist/index334.js +12 -5
- package/dist/index334.js.map +1 -1
- package/dist/index335.js +2 -2
- package/dist/index336.js +2 -15
- package/dist/index336.js.map +1 -1
- package/dist/index337.js +88 -2
- package/dist/index337.js.map +1 -1
- package/dist/index338.js +24 -2
- package/dist/index338.js.map +1 -1
- package/dist/index339.js +2 -92
- package/dist/index339.js.map +1 -1
- package/dist/index34.js +59 -35
- package/dist/index34.js.map +1 -1
- package/dist/index340.js +42 -14
- package/dist/index340.js.map +1 -1
- package/dist/index341.js +2 -2
- package/dist/index342.js +22 -80
- package/dist/index342.js.map +1 -1
- package/dist/index343.js +2 -2
- package/dist/index344.js +2 -18
- package/dist/index344.js.map +1 -1
- package/dist/index345.js +16 -2
- package/dist/index345.js.map +1 -1
- package/dist/index346.js +2 -268
- package/dist/index346.js.map +1 -1
- package/dist/index347.js +176 -2
- package/dist/index347.js.map +1 -1
- package/dist/index348.js +2 -2
- package/dist/index349.js +35 -39
- package/dist/index349.js.map +1 -1
- package/dist/index35.js +101 -28
- package/dist/index35.js.map +1 -1
- package/dist/index350.js +3 -3
- package/dist/index350.js.map +1 -1
- package/dist/index351.js +2 -2
- package/dist/index352.js +19 -26
- package/dist/index352.js.map +1 -1
- package/dist/index357.js +26 -19
- package/dist/index357.js.map +1 -1
- package/dist/index36.js +115 -33
- package/dist/index36.js.map +1 -1
- package/dist/index37.js +41 -115
- package/dist/index37.js.map +1 -1
- package/dist/index38.js +34 -246
- package/dist/index38.js.map +1 -1
- package/dist/index39.js +30 -137
- package/dist/index39.js.map +1 -1
- package/dist/index4.js +26 -84
- package/dist/index4.js.map +1 -1
- package/dist/index40.js +26 -400
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +28 -77
- package/dist/index41.js.map +1 -1
- package/dist/index42.js +23 -26
- package/dist/index42.js.map +1 -1
- package/dist/index43.js +36 -33
- package/dist/index43.js.map +1 -1
- package/dist/index44.js +62 -16
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +138 -21
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +129 -22
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +41 -19
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +11 -82
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +56 -279
- package/dist/index49.js.map +1 -1
- package/dist/index5.js +21 -34
- package/dist/index5.js.map +1 -1
- package/dist/index50.js +280 -33
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +74 -94
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +66 -41
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +333 -62
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +96 -256
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +38 -130
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +251 -50
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +144 -115
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +93 -183
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +33 -339
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +2 -2
- package/dist/index60.js +102 -66
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +73 -179
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +117 -97
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +113 -263
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +258 -251
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +177 -79
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +261 -140
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +183 -100
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +28 -89
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +20 -161
- package/dist/index69.js.map +1 -1
- package/dist/index7.js +394 -32
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +190 -53
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +204 -112
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +2 -2
- package/dist/index73.js +89 -28
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +126 -63
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +122 -111
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +67 -64
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +112 -88
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +87 -16
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +151 -79
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +25 -127
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +104 -186
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +59 -20
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +17 -129
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +88 -217
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +64 -112
- package/dist/index84.js.map +1 -1
- package/dist/index9.js +30 -45
- package/dist/index9.js.map +1 -1
- package/dist/src/components/atoms/index.d.ts +45 -16
- package/dist/src/components/atoms/index.d.ts.map +1 -1
- package/dist/src/components/molecules/index.d.ts +20 -1
- package/dist/src/components/molecules/index.d.ts.map +1 -1
- package/dist/src/components/organisms/index.d.ts +17 -1
- package/dist/src/components/organisms/index.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -82
- package/dist/src/index.d.ts.map +1 -1
- package/dist/tokens.css +353 -7
- package/dist/vite.config.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index71.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { unsafeCSS, css, LitElement } from "lit";
|
|
1
|
+
import { unsafeCSS, css, LitElement, html } from "lit";
|
|
2
2
|
import { property, customElement } from "lit/decorators.js";
|
|
3
|
-
import
|
|
4
|
-
import drawerCss from "./index327.js";
|
|
3
|
+
import cursorCss from "./index239.js";
|
|
5
4
|
import sharedTokens from "./index196.js";
|
|
5
|
+
import { CURSOR_MODES } from "./index240.js";
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
8
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
@@ -13,143 +13,235 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
13
13
|
if (kind && result) __defProp(target, key, result);
|
|
14
14
|
return result;
|
|
15
15
|
};
|
|
16
|
-
let
|
|
16
|
+
let LibCursorFollower = class extends LitElement {
|
|
17
17
|
constructor() {
|
|
18
|
-
var _a;
|
|
19
18
|
super(...arguments);
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (
|
|
33
|
-
e.
|
|
34
|
-
|
|
35
|
-
return;
|
|
19
|
+
this.mode = "ink";
|
|
20
|
+
this.lerp = 0;
|
|
21
|
+
this.trail = false;
|
|
22
|
+
this._mouse = { x: -200, y: -200 };
|
|
23
|
+
this._lerped = { x: -200, y: -200 };
|
|
24
|
+
this._curstate = "hidden";
|
|
25
|
+
this._lastTrail = { x: 0, y: 0, t: 0 };
|
|
26
|
+
this._rafId = 0;
|
|
27
|
+
this._onMove = (e) => {
|
|
28
|
+
this._mouse.x = e.clientX;
|
|
29
|
+
this._mouse.y = e.clientY;
|
|
30
|
+
const dot = this._dot;
|
|
31
|
+
if (dot) {
|
|
32
|
+
dot.style.left = `${e.clientX}px`;
|
|
33
|
+
dot.style.top = `${e.clientY}px`;
|
|
36
34
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
35
|
+
const label = this._label;
|
|
36
|
+
if (label == null ? void 0 : label.classList.contains("is-visible")) {
|
|
37
|
+
label.style.left = `${e.clientX}px`;
|
|
38
|
+
label.style.top = `${e.clientY}px`;
|
|
39
|
+
}
|
|
40
|
+
if (this.trail) this._maybeSpawnTrail(e.clientX, e.clientY);
|
|
41
|
+
if (this._curstate === "hidden") this._setState("default");
|
|
42
|
+
};
|
|
43
|
+
this._onLeave = () => {
|
|
44
|
+
this._setState("hidden");
|
|
45
|
+
};
|
|
46
|
+
this._onEnter = () => {
|
|
47
|
+
this._setState("default");
|
|
48
|
+
};
|
|
49
|
+
this._onDown = () => {
|
|
50
|
+
this._setState("press");
|
|
51
|
+
};
|
|
52
|
+
this._onUp = () => {
|
|
53
|
+
const el = document.elementFromPoint(this._mouse.x, this._mouse.y);
|
|
54
|
+
this._setState(this._detectState(el));
|
|
55
|
+
};
|
|
56
|
+
this._onOver = (e) => {
|
|
57
|
+
if (this._curstate === "press") return;
|
|
58
|
+
const el = e.target;
|
|
59
|
+
const state = this._detectState(el);
|
|
60
|
+
this._setState(state);
|
|
61
|
+
const isDark = !!(el == null ? void 0 : el.closest('[data-cursor-zone="dark"]'));
|
|
62
|
+
this.toggleAttribute("dark-zone", isDark);
|
|
63
|
+
const labelAnchor = el == null ? void 0 : el.closest("[data-cursor-label]");
|
|
64
|
+
const label = this._label;
|
|
65
|
+
if (label) {
|
|
66
|
+
if (labelAnchor == null ? void 0 : labelAnchor.dataset["cursorLabel"]) {
|
|
67
|
+
label.textContent = labelAnchor.dataset["cursorLabel"];
|
|
68
|
+
label.classList.add("is-visible");
|
|
69
|
+
label.style.left = `${this._mouse.x}px`;
|
|
70
|
+
label.style.top = `${this._mouse.y}px`;
|
|
48
71
|
} else {
|
|
49
|
-
|
|
50
|
-
e.preventDefault();
|
|
51
|
-
first == null ? void 0 : first.focus();
|
|
52
|
-
}
|
|
72
|
+
label.classList.remove("is-visible");
|
|
53
73
|
}
|
|
54
74
|
}
|
|
55
75
|
};
|
|
76
|
+
this._loop = () => {
|
|
77
|
+
const factor = this.lerp > 0 ? this.lerp : CURSOR_MODES[this.mode].lerpFactor;
|
|
78
|
+
this._lerped.x += (this._mouse.x - this._lerped.x) * factor;
|
|
79
|
+
this._lerped.y += (this._mouse.y - this._lerped.y) * factor;
|
|
80
|
+
const ring = this._ring;
|
|
81
|
+
if (ring) {
|
|
82
|
+
ring.style.left = `${this._lerped.x}px`;
|
|
83
|
+
ring.style.top = `${this._lerped.y}px`;
|
|
84
|
+
}
|
|
85
|
+
this._rafId = requestAnimationFrame(this._loop);
|
|
86
|
+
};
|
|
56
87
|
}
|
|
57
|
-
/*
|
|
58
|
-
|
|
59
|
-
|
|
88
|
+
/* ── Refs a los elementos del shadow ── */
|
|
89
|
+
get _dot() {
|
|
90
|
+
return this.shadowRoot.querySelector(".cur-dot");
|
|
91
|
+
}
|
|
92
|
+
get _ring() {
|
|
93
|
+
return this.shadowRoot.querySelector(".cur-ring");
|
|
94
|
+
}
|
|
95
|
+
get _label() {
|
|
96
|
+
return this.shadowRoot.querySelector(".cur-label");
|
|
97
|
+
}
|
|
98
|
+
/* ── Lifecycle ── */
|
|
60
99
|
connectedCallback() {
|
|
61
100
|
super.connectedCallback();
|
|
62
|
-
|
|
101
|
+
document.documentElement.style.cursor = "none";
|
|
102
|
+
window.addEventListener("mousemove", this._onMove, { passive: true });
|
|
103
|
+
window.addEventListener("mouseleave", this._onLeave, { passive: true });
|
|
104
|
+
window.addEventListener("mouseenter", this._onEnter, { passive: true });
|
|
105
|
+
window.addEventListener("mousedown", this._onDown, { passive: true });
|
|
106
|
+
window.addEventListener("mouseup", this._onUp, { passive: true });
|
|
107
|
+
window.addEventListener("mouseover", this._onOver, { passive: true });
|
|
108
|
+
this._rafId = requestAnimationFrame(this._loop);
|
|
63
109
|
}
|
|
64
110
|
disconnectedCallback() {
|
|
65
111
|
super.disconnectedCallback();
|
|
66
|
-
|
|
67
|
-
|
|
112
|
+
document.documentElement.style.cursor = "";
|
|
113
|
+
window.removeEventListener("mousemove", this._onMove);
|
|
114
|
+
window.removeEventListener("mouseleave", this._onLeave);
|
|
115
|
+
window.removeEventListener("mouseenter", this._onEnter);
|
|
116
|
+
window.removeEventListener("mousedown", this._onDown);
|
|
117
|
+
window.removeEventListener("mouseup", this._onUp);
|
|
118
|
+
window.removeEventListener("mouseover", this._onOver);
|
|
119
|
+
cancelAnimationFrame(this._rafId);
|
|
68
120
|
}
|
|
121
|
+
/** Aplica el modo visual al dot y ring */
|
|
69
122
|
updated(changed) {
|
|
70
|
-
if (
|
|
71
|
-
|
|
72
|
-
document.body.style.overflow = "hidden";
|
|
73
|
-
requestAnimationFrame(() => {
|
|
74
|
-
var _a;
|
|
75
|
-
const panel = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector(".dr");
|
|
76
|
-
panel == null ? void 0 : panel.focus();
|
|
77
|
-
});
|
|
78
|
-
} else {
|
|
79
|
-
document.body.style.overflow = "";
|
|
80
|
-
}
|
|
81
|
-
if (!this.drawerLabel) {
|
|
82
|
-
this.drawerLabel = this.label || "Panel";
|
|
123
|
+
if (changed.has("mode")) {
|
|
124
|
+
this._applyMode();
|
|
83
125
|
}
|
|
84
126
|
}
|
|
85
|
-
/*
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
_close() {
|
|
90
|
-
if (!this.open) return;
|
|
91
|
-
this.open = false;
|
|
92
|
-
this.dispatchEvent(new CustomEvent("ui-lib-drawer-close", {
|
|
93
|
-
bubbles: true,
|
|
94
|
-
composed: true
|
|
95
|
-
}));
|
|
127
|
+
/* ── API pública ── */
|
|
128
|
+
/** Cambia el modo en tiempo de ejecución */
|
|
129
|
+
setMode(mode) {
|
|
130
|
+
this.mode = mode;
|
|
96
131
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
var _a;
|
|
102
|
-
const selector = [
|
|
103
|
-
"a[href]",
|
|
104
|
-
"button:not([disabled])",
|
|
105
|
-
"input:not([disabled])",
|
|
106
|
-
"select:not([disabled])",
|
|
107
|
-
"textarea:not([disabled])",
|
|
108
|
-
'[tabindex]:not([tabindex="-1"])'
|
|
109
|
-
].join(",");
|
|
110
|
-
return Array.from(
|
|
111
|
-
((_a = this.shadowRoot) == null ? void 0 : _a.querySelectorAll(selector)) ?? []
|
|
112
|
-
);
|
|
132
|
+
/** Activa o desactiva el trail de tinta */
|
|
133
|
+
toggleTrail() {
|
|
134
|
+
this.trail = !this.trail;
|
|
135
|
+
this._lastTrail = { x: this._mouse.x, y: this._mouse.y, t: performance.now() };
|
|
113
136
|
}
|
|
114
|
-
/*
|
|
115
|
-
Render
|
|
116
|
-
════════════════════════════════════════ */
|
|
137
|
+
/* ── Render ── */
|
|
117
138
|
render() {
|
|
118
|
-
return
|
|
139
|
+
return html`
|
|
140
|
+
<div class="cur-dot" part="dot"></div>
|
|
141
|
+
<div class="cur-ring" part="ring"></div>
|
|
142
|
+
<div class="cur-label" part="label"></div>
|
|
143
|
+
`;
|
|
144
|
+
}
|
|
145
|
+
/* ── Helpers ── */
|
|
146
|
+
_detectState(el) {
|
|
147
|
+
if (!el) return "default";
|
|
148
|
+
const textZone = el.closest('[data-cursor-zone="text"]');
|
|
149
|
+
if (textZone && el.matches("p, h1, h2, h3, h4, h5, h6, em, strong, span:not(.cursor-zone-label)")) {
|
|
150
|
+
return "text";
|
|
151
|
+
}
|
|
152
|
+
if (el.matches('a, button, input, select, textarea, [role="button"], [data-interactive], .interactive')) {
|
|
153
|
+
return "hover";
|
|
154
|
+
}
|
|
155
|
+
if (el.closest('a, button, [role="button"]')) {
|
|
156
|
+
return "hover";
|
|
157
|
+
}
|
|
158
|
+
return "default";
|
|
159
|
+
}
|
|
160
|
+
_setState(state) {
|
|
161
|
+
if (this._curstate === state) return;
|
|
162
|
+
this._curstate = state;
|
|
163
|
+
this.setAttribute("curstate", state);
|
|
164
|
+
}
|
|
165
|
+
/** Aplica los estilos base del modo al dot y ring */
|
|
166
|
+
_applyMode() {
|
|
167
|
+
const m = CURSOR_MODES[this.mode];
|
|
168
|
+
if (!m) return;
|
|
169
|
+
const dot = this._dot;
|
|
170
|
+
const ring = this._ring;
|
|
171
|
+
if (!dot || !ring) return;
|
|
172
|
+
dot.style.background = m.dotBg;
|
|
173
|
+
dot.style.width = m.dotSize;
|
|
174
|
+
dot.style.height = m.dotSize;
|
|
175
|
+
ring.style.border = m.ringBorder;
|
|
176
|
+
ring.style.background = m.ringBg;
|
|
177
|
+
ring.style.width = m.ringSize;
|
|
178
|
+
ring.style.height = m.ringSize;
|
|
179
|
+
ring.style.mixBlendMode = m.ringMix;
|
|
180
|
+
}
|
|
181
|
+
/** Genera partículas de tinta proporcionales a la velocidad */
|
|
182
|
+
_maybeSpawnTrail(x, y) {
|
|
183
|
+
const now = performance.now();
|
|
184
|
+
const dx = x - this._lastTrail.x;
|
|
185
|
+
const dy = y - this._lastTrail.y;
|
|
186
|
+
const dist = Math.sqrt(dx * dx + dy * dy);
|
|
187
|
+
const dt = Math.max(1, now - this._lastTrail.t);
|
|
188
|
+
const speed = dist / dt;
|
|
189
|
+
if (dist > 4) {
|
|
190
|
+
this._spawnTrailParticle(x, y, speed);
|
|
191
|
+
this._lastTrail = { x, y, t: now };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
_spawnTrailParticle(x, y, speed) {
|
|
195
|
+
const size = Math.max(2, Math.min(8, speed * 1.5));
|
|
196
|
+
const isLight = this.mode === "ghost";
|
|
197
|
+
const color = isLight ? "rgba(250,247,244,0.4)" : "var(--color-kaki-500)";
|
|
198
|
+
const el = document.createElement("div");
|
|
199
|
+
el.style.cssText = `
|
|
200
|
+
position: fixed;
|
|
201
|
+
border-radius: 50%;
|
|
202
|
+
pointer-events: none;
|
|
203
|
+
z-index: 9997;
|
|
204
|
+
left: ${x}px;
|
|
205
|
+
top: ${y}px;
|
|
206
|
+
width: ${size}px;
|
|
207
|
+
height: ${size}px;
|
|
208
|
+
background: ${color};
|
|
209
|
+
transform: translate(-50%, -50%) scale(1);
|
|
210
|
+
opacity: 0.4;
|
|
211
|
+
animation: lib-ink-fade ${600 + speed * 50}ms cubic-bezier(0.2, 0, 0.8, 1) forwards;
|
|
212
|
+
`;
|
|
213
|
+
document.body.appendChild(el);
|
|
214
|
+
setTimeout(() => el.remove(), 900);
|
|
119
215
|
}
|
|
120
216
|
};
|
|
121
|
-
|
|
217
|
+
LibCursorFollower.styles = [
|
|
122
218
|
css`${unsafeCSS(sharedTokens)}`,
|
|
123
|
-
css`${unsafeCSS(
|
|
219
|
+
css`${unsafeCSS(cursorCss)}`
|
|
124
220
|
];
|
|
125
|
-
__decorateClass([
|
|
126
|
-
property({ type: Boolean, reflect: true })
|
|
127
|
-
], LibDrawer.prototype, "open", 2);
|
|
128
221
|
__decorateClass([
|
|
129
222
|
property({ type: String, reflect: true })
|
|
130
|
-
],
|
|
223
|
+
], LibCursorFollower.prototype, "mode", 2);
|
|
131
224
|
__decorateClass([
|
|
132
|
-
property({ type:
|
|
133
|
-
],
|
|
134
|
-
__decorateClass([
|
|
135
|
-
property({ type: String, reflect: true })
|
|
136
|
-
], LibDrawer.prototype, "variant", 2);
|
|
137
|
-
__decorateClass([
|
|
138
|
-
property({ type: String })
|
|
139
|
-
], LibDrawer.prototype, "label", 2);
|
|
225
|
+
property({ type: Number })
|
|
226
|
+
], LibCursorFollower.prototype, "lerp", 2);
|
|
140
227
|
__decorateClass([
|
|
141
|
-
property({ type:
|
|
142
|
-
],
|
|
143
|
-
__decorateClass([
|
|
144
|
-
|
|
145
|
-
],
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
228
|
+
property({ type: Boolean })
|
|
229
|
+
], LibCursorFollower.prototype, "trail", 2);
|
|
230
|
+
LibCursorFollower = __decorateClass([
|
|
231
|
+
customElement("lib-cursor-follower")
|
|
232
|
+
], LibCursorFollower);
|
|
233
|
+
if (!document.head.querySelector("#lib-cursor-keyframes")) {
|
|
234
|
+
const s = document.createElement("style");
|
|
235
|
+
s.id = "lib-cursor-keyframes";
|
|
236
|
+
s.textContent = `
|
|
237
|
+
@keyframes lib-ink-fade {
|
|
238
|
+
0% { opacity: 0.4; transform: translate(-50%,-50%) scale(1); }
|
|
239
|
+
100% { opacity: 0; transform: translate(-50%,-50%) scale(0.2); }
|
|
240
|
+
}
|
|
241
|
+
`;
|
|
242
|
+
document.head.appendChild(s);
|
|
243
|
+
}
|
|
152
244
|
export {
|
|
153
|
-
|
|
245
|
+
LibCursorFollower
|
|
154
246
|
};
|
|
155
247
|
//# sourceMappingURL=index71.js.map
|
package/dist/index71.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index71.js","sources":["../src/components/organisms/drawer/lib-drawer.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { drawerTemplate } from './lib-drawer.html';\nimport drawerCss from './lib-drawer.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { DrawerPlacement, DrawerSize, DrawerVariant } from './lib-drawer.types';\n\n/**\n * lib-drawer — Shibui UI · SG-59\n *\n * @prop open — Abre / cierra el drawer\n * @prop placement — 'right'(default) | 'left' | 'top' | 'bottom'\n * @prop size — 'sm' | 'md'(default) | 'lg' | 'xl' | 'full'\n * @prop variant — 'default' | 'dark' | 'kintsugi' | 'kintsugi-dark' | 'glitch' | 'glitch-dark'\n * @prop label — Texto del título (también rellenable via slot[name=\"title\"])\n * @prop eyebrow — Texto del eyebrow (también via slot[name=\"eyebrow\"])\n * @prop subtitle — Texto del subtítulo (también via slot[name=\"subtitle\"])\n * @prop drawer-label — Aria-label del dialog (default = label)\n *\n * @slot — Contenido del body\n * @slot title — Reemplaza el título\n * @slot eyebrow — Reemplaza el eyebrow\n * @slot subtitle — Reemplaza el subtítulo\n * @slot footer — Botones de pie (oculto si vacío)\n *\n * @fires ui-lib-drawer-close — Cuando el drawer se cierra (backdrop, Escape, botón X)\n */\n@customElement('lib-drawer')\nexport class LibDrawer extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(drawerCss)}`,\n ];\n\n /* ── Identificador único para aria ── */\n readonly _uid: string = (globalThis.crypto?.getRandomValues(new Uint32Array(1))[0] ?? Math.random())\n .toString(36)\n .slice(0, 5);\n\n @property({ type: Boolean, reflect: true })\n open = false;\n\n @property({ type: String, reflect: true })\n placement: DrawerPlacement = 'right';\n\n @property({ type: String, reflect: true })\n size: DrawerSize = 'md';\n\n @property({ type: String, reflect: true })\n variant: DrawerVariant = 'default';\n\n @property({ type: String })\n label = '';\n\n @property({ type: String })\n eyebrow = '';\n\n @property({ type: String })\n subtitle = '';\n\n @property({ type: String, attribute: 'drawer-label' })\n drawerLabel = '';\n\n /* ════════════════════════════════════════\n Ciclo de vida\n ════════════════════════════════════════ */\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('keydown', this._onKeyDown);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this._onKeyDown);\n // Restaurar scroll por si se destruye mientras está abierto\n document.body.style.overflow = '';\n }\n\n override updated(changed: Map<PropertyKey, unknown>): void {\n if (!changed.has('open')) return;\n\n if (this.open) {\n document.body.style.overflow = 'hidden';\n // Dar foco al panel para que los eventos de teclado funcionen\n requestAnimationFrame(() => {\n const panel = this.shadowRoot?.querySelector<HTMLElement>('.dr');\n panel?.focus();\n });\n } else {\n document.body.style.overflow = '';\n }\n\n // Sync aria-label si no se pasó drawer-label explícito\n if (!this.drawerLabel) {\n this.drawerLabel = this.label || 'Panel';\n }\n }\n\n /* ════════════════════════════════════════\n API pública\n ════════════════════════════════════════ */\n\n /** Cierra el drawer y emite el evento */\n _close(): void {\n if (!this.open) return;\n this.open = false;\n this.dispatchEvent(new CustomEvent('ui-lib-drawer-close', {\n bubbles: true,\n composed: true,\n }));\n }\n\n /* ════════════════════════════════════════\n Focus trap\n ════════════════════════════════════════ */\n\n private _getFocusable(): HTMLElement[] {\n const selector = [\n 'a[href]', 'button:not([disabled])', 'input:not([disabled])',\n 'select:not([disabled])', 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(',');\n\n return Array.from(\n this.shadowRoot?.querySelectorAll<HTMLElement>(selector) ?? []\n );\n }\n\n private _onKeyDown = (e: KeyboardEvent): void => {\n if (!this.open) return;\n\n if (e.key === 'Escape') {\n e.preventDefault();\n this._close();\n return;\n }\n\n if (e.key === 'Tab') {\n const focusable = this._getFocusable();\n if (!focusable.length) return;\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = this.shadowRoot?.activeElement as HTMLElement;\n\n if (e.shiftKey) {\n if (active === first) { e.preventDefault(); last?.focus(); }\n } else {\n if (active === last) { e.preventDefault(); first?.focus(); }\n }\n }\n };\n\n /* ════════════════════════════════════════\n Render\n ════════════════════════════════════════ */\n protected override render(): TemplateResult {\n return drawerTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-drawer': LibDrawer;\n }\n}"],"names":["_a"],"mappings":";;;;;;;;;;;;;;;AA4BO,IAAM,YAAN,cAAwB,WAAW;AAAA,EAAnC,cAAA;;AAAA,UAAA,GAAA,SAAA;AAOL,SAAS,UAAgB,gBAAW,WAAX,mBAAmB,gBAAgB,IAAI,YAAY,CAAC,GAAG,OAAM,KAAK,UAC1F,SAAS,EAAE,EACX,MAAM,GAAG,CAAC;AAGX,SAAA,OAAO;AAGP,SAAA,YAA6B;AAG7B,SAAA,OAAmB;AAGnB,SAAA,UAAyB;AAGzB,SAAA,QAAQ;AAGR,SAAA,UAAU;AAGV,SAAA,WAAW;AAGX,SAAA,cAAc;AAoEd,SAAQ,aAAa,CAAC,MAA2B;;AAC/C,UAAI,CAAC,KAAK,KAAM;AAEhB,UAAI,EAAE,QAAQ,UAAU;AACtB,UAAE,eAAA;AACF,aAAK,OAAA;AACL;AAAA,MACF;AAEA,UAAI,EAAE,QAAQ,OAAO;AACnB,cAAM,YAAY,KAAK,cAAA;AACvB,YAAI,CAAC,UAAU,OAAQ;AAEvB,cAAM,QAAQ,UAAU,CAAC;AACzB,cAAM,OAAQ,UAAU,UAAU,SAAS,CAAC;AAC5C,cAAM,UAASA,MAAA,KAAK,eAAL,gBAAAA,IAAiB;AAEhC,YAAI,EAAE,UAAU;AACd,cAAI,WAAW,OAAO;AAAE,cAAE,eAAA;AAAkB,yCAAM;AAAA,UAAS;AAAA,QAC7D,OAAO;AACL,cAAI,WAAW,MAAO;AAAE,cAAE,eAAA;AAAkB,2CAAO;AAAA,UAAS;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EArFS,oBAA0B;AACjC,UAAM,kBAAA;AACN,SAAK,iBAAiB,WAAW,KAAK,UAAU;AAAA,EAClD;AAAA,EAES,uBAA6B;AACpC,UAAM,qBAAA;AACN,SAAK,oBAAoB,WAAW,KAAK,UAAU;AAEnD,aAAS,KAAK,MAAM,WAAW;AAAA,EACjC;AAAA,EAES,QAAQ,SAA0C;AACzD,QAAI,CAAC,QAAQ,IAAI,MAAM,EAAG;AAE1B,QAAI,KAAK,MAAM;AACb,eAAS,KAAK,MAAM,WAAW;AAE/B,4BAAsB,MAAM;;AAC1B,cAAM,SAAQ,UAAK,eAAL,mBAAiB,cAA2B;AAC1D,uCAAO;AAAA,MACT,CAAC;AAAA,IACH,OAAO;AACL,eAAS,KAAK,MAAM,WAAW;AAAA,IACjC;AAGA,QAAI,CAAC,KAAK,aAAa;AACrB,WAAK,cAAc,KAAK,SAAS;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAe;AACb,QAAI,CAAC,KAAK,KAAM;AAChB,SAAK,OAAO;AACZ,SAAK,cAAc,IAAI,YAAY,uBAAuB;AAAA,MACxD,SAAS;AAAA,MACT,UAAU;AAAA,IAAA,CACX,CAAC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAMQ,gBAA+B;;AACrC,UAAM,WAAW;AAAA,MACf;AAAA,MAAW;AAAA,MAA0B;AAAA,MACrC;AAAA,MAA0B;AAAA,MAC1B;AAAA,IAAA,EACA,KAAK,GAAG;AAEV,WAAO,MAAM;AAAA,QACX,UAAK,eAAL,mBAAiB,iBAA8B,cAAa,CAAA;AAAA,IAAC;AAAA,EAEjE;AAAA;AAAA;AAAA;AAAA,EA8BmB,SAAyB;AAC1C,WAAO,eAAe,IAAI;AAAA,EAC5B;AACF;AApIa,UACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,SAAS,CAAC;AAC5B;AAQA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAX/B,UAYX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAd9B,UAeX,WAAA,aAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAjB9B,UAkBX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GApB9B,UAqBX,WAAA,WAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAvBf,UAwBX,WAAA,SAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA1Bf,UA2BX,WAAA,WAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA7Bf,UA8BX,WAAA,YAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,gBAAgB;AAAA,GAhC1C,UAiCX,WAAA,eAAA,CAAA;AAjCW,YAAN,gBAAA;AAAA,EADN,cAAc,YAAY;AAAA,GACd,SAAA;"}
|
|
1
|
+
{"version":3,"file":"index71.js","sources":["../src/components/organisms/cursor-follower/lib-cursor-follower.component.ts"],"sourcesContent":["import { LitElement, html, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport cursorCss from './lib-cursor-follower.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport { CURSOR_MODES } from './lib-cursor-follower.types';\nimport type { CursorMode, CursorState } from './lib-cursor-follower.types';\n\n/**\n * @element lib-cursor-follower\n *\n * Cursor personalizado con tres capas: dot exacto, ring con lerp e inercia,\n * y label contextual. Detecta automáticamente el tipo de elemento bajo el cursor.\n *\n * Coloca el componente una sola vez al inicio del <body>. Se encarga de ocultar\n * el cursor nativo del documento.\n *\n * @prop {CursorMode} mode — ink · minimal · kaki · ghost (default: 'ink')\n * @prop {number} lerp — Factor de interpolación del ring 0–1 (override del modo)\n * @prop {boolean} trail — Activa la cola de tinta al mover rápido\n *\n * @method setMode(mode) — Cambia el modo en tiempo de ejecución\n * @method toggleTrail() — Activa/desactiva el trail\n *\n * @csspart dot — El punto exacto\n * @csspart ring — El anillo con lag\n * @csspart label — La etiqueta contextual\n */\n@customElement('lib-cursor-follower')\nexport class LibCursorFollower extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(cursorCss)}`,\n ];\n\n /* ── Props ── */\n\n @property({ type: String, reflect: true })\n mode: CursorMode = 'ink';\n\n @property({ type: Number })\n lerp = 0; // 0 = usar el del modo\n\n @property({ type: Boolean })\n trail = false;\n\n /* ── Estado interno del cursor (no reactivo — actualizado en rAF) ── */\n\n /** Posición exacta del ratón */\n private _mouse = { x: -200, y: -200 };\n /** Posición interpolada del ring */\n private _lerped = { x: -200, y: -200 };\n\n /** Estado contextual actual */\n private _curstate: CursorState = 'hidden';\n\n /** Anclajes para el trail */\n private _lastTrail = { x: 0, y: 0, t: 0 };\n private _rafId = 0;\n\n /* ── Refs a los elementos del shadow ── */\n\n private get _dot(): HTMLElement { return this.shadowRoot!.querySelector('.cur-dot') as HTMLElement; }\n private get _ring(): HTMLElement { return this.shadowRoot!.querySelector('.cur-ring') as HTMLElement; }\n private get _label(): HTMLElement { return this.shadowRoot!.querySelector('.cur-label') as HTMLElement; }\n\n /* ── Lifecycle ── */\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Ocultar cursor nativo\n document.documentElement.style.cursor = 'none';\n\n window.addEventListener('mousemove', this._onMove, { passive: true });\n window.addEventListener('mouseleave', this._onLeave, { passive: true });\n window.addEventListener('mouseenter', this._onEnter, { passive: true });\n window.addEventListener('mousedown', this._onDown, { passive: true });\n window.addEventListener('mouseup', this._onUp, { passive: true });\n window.addEventListener('mouseover', this._onOver, { passive: true });\n\n this._rafId = requestAnimationFrame(this._loop);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.documentElement.style.cursor = '';\n\n window.removeEventListener('mousemove', this._onMove);\n window.removeEventListener('mouseleave', this._onLeave);\n window.removeEventListener('mouseenter', this._onEnter);\n window.removeEventListener('mousedown', this._onDown);\n window.removeEventListener('mouseup', this._onUp);\n window.removeEventListener('mouseover', this._onOver);\n\n cancelAnimationFrame(this._rafId);\n }\n\n /** Aplica el modo visual al dot y ring */\n override updated(changed: Map<string, unknown>): void {\n if (changed.has('mode')) {\n this._applyMode();\n }\n }\n\n /* ── API pública ── */\n\n /** Cambia el modo en tiempo de ejecución */\n public setMode(mode: CursorMode): void {\n this.mode = mode;\n }\n\n /** Activa o desactiva el trail de tinta */\n public toggleTrail(): void {\n this.trail = !this.trail;\n this._lastTrail = { x: this._mouse.x, y: this._mouse.y, t: performance.now() };\n }\n\n /* ── Render ── */\n\n protected override render(): TemplateResult {\n return html`\n <div class=\"cur-dot\" part=\"dot\"></div>\n <div class=\"cur-ring\" part=\"ring\"></div>\n <div class=\"cur-label\" part=\"label\"></div>\n `;\n }\n\n /* ── Event handlers ── */\n\n private _onMove = (e: MouseEvent): void => {\n this._mouse.x = e.clientX;\n this._mouse.y = e.clientY;\n\n // Dot sigue instantáneamente\n const dot = this._dot;\n if (dot) {\n dot.style.left = `${e.clientX}px`;\n dot.style.top = `${e.clientY}px`;\n }\n\n // Label sigue al dot\n const label = this._label;\n if (label?.classList.contains('is-visible')) {\n label.style.left = `${e.clientX}px`;\n label.style.top = `${e.clientY}px`;\n }\n\n // Trail\n if (this.trail) this._maybeSpawnTrail(e.clientX, e.clientY);\n\n // Si estaba oculto, restaurar\n if (this._curstate === 'hidden') this._setState('default');\n };\n\n private _onLeave = (): void => { this._setState('hidden'); };\n private _onEnter = (): void => { this._setState('default'); };\n private _onDown = (): void => { this._setState('press'); };\n private _onUp = (): void => {\n // Volver al estado previo al press\n const el = document.elementFromPoint(this._mouse.x, this._mouse.y);\n this._setState(this._detectState(el));\n };\n\n private _onOver = (e: MouseEvent): void => {\n if (this._curstate === 'press') return; // no interrumpir press\n\n const el = e.target as Element | null;\n const state = this._detectState(el);\n this._setState(state);\n\n // Zona oscura — el ring adapta el color\n const isDark = !!el?.closest('[data-cursor-zone=\"dark\"]');\n this.toggleAttribute('dark-zone', isDark);\n\n // Label contextual\n const labelAnchor = el?.closest('[data-cursor-label]') as HTMLElement | null;\n const label = this._label;\n if (label) {\n if (labelAnchor?.dataset['cursorLabel']) {\n label.textContent = labelAnchor.dataset['cursorLabel'];\n label.classList.add('is-visible');\n label.style.left = `${this._mouse.x}px`;\n label.style.top = `${this._mouse.y}px`;\n } else {\n label.classList.remove('is-visible');\n }\n }\n };\n\n /* ── Loop de animación del ring ── */\n\n private _loop = (): void => {\n const factor = this.lerp > 0\n ? this.lerp\n : CURSOR_MODES[this.mode].lerpFactor;\n\n this._lerped.x += (this._mouse.x - this._lerped.x) * factor;\n this._lerped.y += (this._mouse.y - this._lerped.y) * factor;\n\n const ring = this._ring;\n if (ring) {\n ring.style.left = `${this._lerped.x}px`;\n ring.style.top = `${this._lerped.y}px`;\n }\n\n this._rafId = requestAnimationFrame(this._loop);\n };\n\n /* ── Helpers ── */\n\n private _detectState(el: Element | null): CursorState {\n if (!el) return 'default';\n\n // Texto editable / seleccionable\n const textZone = el.closest('[data-cursor-zone=\"text\"]');\n if (textZone && el.matches('p, h1, h2, h3, h4, h5, h6, em, strong, span:not(.cursor-zone-label)')) {\n return 'text';\n }\n\n // Elemento interactivo\n if (el.matches('a, button, input, select, textarea, [role=\"button\"], [data-interactive], .interactive')) {\n return 'hover';\n }\n if (el.closest('a, button, [role=\"button\"]')) {\n return 'hover';\n }\n\n return 'default';\n }\n\n private _setState(state: CursorState): void {\n if (this._curstate === state) return;\n this._curstate = state;\n this.setAttribute('curstate', state);\n }\n\n /** Aplica los estilos base del modo al dot y ring */\n private _applyMode(): void {\n const m = CURSOR_MODES[this.mode];\n if (!m) return;\n\n const dot = this._dot;\n const ring = this._ring;\n if (!dot || !ring) return;\n\n dot.style.background = m.dotBg;\n dot.style.width = m.dotSize;\n dot.style.height = m.dotSize;\n\n ring.style.border = m.ringBorder;\n ring.style.background = m.ringBg;\n ring.style.width = m.ringSize;\n ring.style.height = m.ringSize;\n ring.style.mixBlendMode = m.ringMix;\n }\n\n /** Genera partículas de tinta proporcionales a la velocidad */\n private _maybeSpawnTrail(x: number, y: number): void {\n const now = performance.now();\n const dx = x - this._lastTrail.x;\n const dy = y - this._lastTrail.y;\n const dist = Math.sqrt(dx * dx + dy * dy);\n const dt = Math.max(1, now - this._lastTrail.t);\n const speed = dist / dt;\n\n if (dist > 4) {\n this._spawnTrailParticle(x, y, speed);\n this._lastTrail = { x, y, t: now };\n }\n }\n\n private _spawnTrailParticle(x: number, y: number, speed: number): void {\n const size = Math.max(2, Math.min(8, speed * 1.5));\n const isLight = this.mode === 'ghost';\n const color = isLight\n ? 'rgba(250,247,244,0.4)'\n : 'var(--color-kaki-500)';\n\n const el = document.createElement('div');\n el.style.cssText = `\n position: fixed;\n border-radius: 50%;\n pointer-events: none;\n z-index: 9997;\n left: ${x}px;\n top: ${y}px;\n width: ${size}px;\n height: ${size}px;\n background: ${color};\n transform: translate(-50%, -50%) scale(1);\n opacity: 0.4;\n animation: lib-ink-fade ${600 + speed * 50}ms cubic-bezier(0.2, 0, 0.8, 1) forwards;\n `;\n document.body.appendChild(el);\n setTimeout(() => el.remove(), 900);\n }\n}\n\n/* Keyframe global para las partículas de trail */\nif (!document.head.querySelector('#lib-cursor-keyframes')) {\n const s = document.createElement('style');\n s.id = 'lib-cursor-keyframes';\n s.textContent = `\n @keyframes lib-ink-fade {\n 0% { opacity: 0.4; transform: translate(-50%,-50%) scale(1); }\n 100% { opacity: 0; transform: translate(-50%,-50%) scale(0.2); }\n }\n `;\n document.head.appendChild(s);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-cursor-follower': LibCursorFollower;\n }\n}"],"names":[],"mappings":"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"}
|
package/dist/index72.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { unsafeCSS, css, LitElement } from "lit";
|
|
2
2
|
import { property, state, customElement } from "lit/decorators.js";
|
|
3
|
-
import tableCss from "./
|
|
3
|
+
import tableCss from "./index241.js";
|
|
4
4
|
import sharedTokens from "./index196.js";
|
|
5
|
-
import { dataTableTemplate } from "./
|
|
5
|
+
import { dataTableTemplate } from "./index242.js";
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
8
|
var __decorateClass = (decorators, target, key, kind) => {
|
package/dist/index73.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { unsafeCSS, css, LitElement } from "lit";
|
|
2
|
-
import { property, customElement } from "lit/decorators.js";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
2
|
+
import { property, query, customElement } from "lit/decorators.js";
|
|
3
|
+
import { dialogTemplate } from "./index243.js";
|
|
4
|
+
import dialogCss from "./index244.js";
|
|
5
5
|
import sharedTokens from "./index196.js";
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -13,45 +13,106 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
13
13
|
if (kind && result) __defProp(target, key, result);
|
|
14
14
|
return result;
|
|
15
15
|
};
|
|
16
|
-
let
|
|
16
|
+
let LibDialog = class extends LitElement {
|
|
17
17
|
constructor() {
|
|
18
18
|
super(...arguments);
|
|
19
|
+
this.eyebrow = "";
|
|
20
|
+
this.dlgTitle = "";
|
|
19
21
|
this.variant = "default";
|
|
20
|
-
this.
|
|
22
|
+
this.size = "md";
|
|
23
|
+
this.layout = "dialog";
|
|
24
|
+
this.open = false;
|
|
25
|
+
this.footerMeta = "";
|
|
21
26
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
27
|
+
/* ── Lifecycle ── */
|
|
28
|
+
/**
|
|
29
|
+
* Cuando `open` cambia: abrir con showModal + reflow + .is-open
|
|
30
|
+
* o cerrar con animación de salida + transitionend.
|
|
31
|
+
*/
|
|
32
|
+
updated(changed) {
|
|
33
|
+
if (!changed.has("open")) return;
|
|
34
|
+
if (this.open) {
|
|
35
|
+
this._dlg.showModal();
|
|
36
|
+
this._dlg.getBoundingClientRect();
|
|
37
|
+
this._dlg.classList.add("is-open");
|
|
38
|
+
} else {
|
|
39
|
+
this._animateClose();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/* ── API pública ── */
|
|
43
|
+
/** Abre el dialog */
|
|
44
|
+
show() {
|
|
45
|
+
this.open = true;
|
|
46
|
+
}
|
|
47
|
+
/** Cierra el dialog con animación */
|
|
48
|
+
close() {
|
|
49
|
+
this.open = false;
|
|
34
50
|
}
|
|
51
|
+
/* ── Render ── */
|
|
35
52
|
render() {
|
|
36
|
-
return
|
|
37
|
-
|
|
53
|
+
return dialogTemplate({
|
|
54
|
+
eyebrow: this.eyebrow,
|
|
55
|
+
dlgTitle: this.dlgTitle,
|
|
56
|
+
variant: this.variant,
|
|
57
|
+
size: this.size,
|
|
58
|
+
layout: this.layout,
|
|
59
|
+
footerMeta: this.footerMeta,
|
|
60
|
+
open: this.open,
|
|
61
|
+
onClose: () => {
|
|
62
|
+
this.close();
|
|
63
|
+
}
|
|
38
64
|
});
|
|
39
65
|
}
|
|
66
|
+
/* ── Private ── */
|
|
67
|
+
_animateClose() {
|
|
68
|
+
var _a;
|
|
69
|
+
if (!((_a = this._dlg) == null ? void 0 : _a.open)) return;
|
|
70
|
+
this._dlg.classList.add("is-closing");
|
|
71
|
+
this._dlg.classList.remove("is-open");
|
|
72
|
+
this._dlg.addEventListener("transitionend", () => {
|
|
73
|
+
this._dlg.close();
|
|
74
|
+
this._dlg.classList.remove("is-closing");
|
|
75
|
+
this.dispatchEvent(
|
|
76
|
+
new CustomEvent("ui-lib-dialog-close", {
|
|
77
|
+
bubbles: true,
|
|
78
|
+
composed: true
|
|
79
|
+
})
|
|
80
|
+
);
|
|
81
|
+
}, { once: true });
|
|
82
|
+
}
|
|
40
83
|
};
|
|
41
|
-
|
|
84
|
+
LibDialog.styles = [
|
|
42
85
|
css`${unsafeCSS(sharedTokens)}`,
|
|
43
|
-
css`${unsafeCSS(
|
|
86
|
+
css`${unsafeCSS(dialogCss)}`
|
|
44
87
|
];
|
|
88
|
+
__decorateClass([
|
|
89
|
+
property({ type: String })
|
|
90
|
+
], LibDialog.prototype, "eyebrow", 2);
|
|
91
|
+
__decorateClass([
|
|
92
|
+
property({ type: String, attribute: "dlg-title" })
|
|
93
|
+
], LibDialog.prototype, "dlgTitle", 2);
|
|
94
|
+
__decorateClass([
|
|
95
|
+
property({ type: String, reflect: true })
|
|
96
|
+
], LibDialog.prototype, "variant", 2);
|
|
45
97
|
__decorateClass([
|
|
46
98
|
property({ type: String, reflect: true })
|
|
47
|
-
],
|
|
99
|
+
], LibDialog.prototype, "size", 2);
|
|
100
|
+
__decorateClass([
|
|
101
|
+
property({ type: String, reflect: true })
|
|
102
|
+
], LibDialog.prototype, "layout", 2);
|
|
103
|
+
__decorateClass([
|
|
104
|
+
property({ type: Boolean, reflect: true })
|
|
105
|
+
], LibDialog.prototype, "open", 2);
|
|
106
|
+
__decorateClass([
|
|
107
|
+
property({ type: String, attribute: "footer-meta" })
|
|
108
|
+
], LibDialog.prototype, "footerMeta", 2);
|
|
48
109
|
__decorateClass([
|
|
49
|
-
|
|
50
|
-
],
|
|
51
|
-
|
|
52
|
-
customElement("lib-
|
|
53
|
-
],
|
|
110
|
+
query("dialog")
|
|
111
|
+
], LibDialog.prototype, "_dlg", 2);
|
|
112
|
+
LibDialog = __decorateClass([
|
|
113
|
+
customElement("lib-dialog")
|
|
114
|
+
], LibDialog);
|
|
54
115
|
export {
|
|
55
|
-
|
|
116
|
+
LibDialog
|
|
56
117
|
};
|
|
57
118
|
//# sourceMappingURL=index73.js.map
|
package/dist/index73.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index73.js","sources":["../src/components/organisms/
|
|
1
|
+
{"version":3,"file":"index73.js","sources":["../src/components/organisms/dialog/lib-dialog.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult, PropertyValues } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { dialogTemplate } from './lib-dialog.html';\nimport dialogCss from './lib-dialog.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { DialogVariant, DialogSize, DialogLayout } from './lib-dialog.types';\n\n/**\n * @element lib-dialog\n *\n * Ventana de diálogo sobre `<dialog>` nativo con animación de entrada/salida.\n *\n * @prop {string} eyebrow — Texto pequeño encima del título\n * @prop {string} dlg-title — Título principal del header\n * @prop {DialogVariant} variant — default · danger · warning · dark\n * @prop {DialogSize} size — sm · md · lg · xl · full (default: md)\n * @prop {DialogLayout} layout — dialog · drawer-right · drawer-bottom · alert (default: dialog)\n * @prop {boolean} open — Estado controlado del panel\n * @prop {string} footer-meta — Texto auxiliar izquierdo en el footer\n *\n * @slot — Cuerpo del dialog (dlg-body)\n * @slot header — Override completo del título (dentro de dlg-header-text)\n * @slot footer — Botones del footer (a la derecha del footer-meta)\n *\n * @fires ui-lib-dialog-close — Emitido tras la animación de cierre (bubbles, composed)\n *\n * @method show() — Abre el dialog con animación de entrada\n * @method close() — Cierra el dialog con animación de salida\n */\n@customElement('lib-dialog')\nexport class LibDialog extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(dialogCss)}`,\n ];\n\n /* ── Props ── */\n\n @property({ type: String })\n eyebrow = '';\n\n /**\n * `title` está reservado en HTMLElement — usamos `dlgTitle` + attribute `dlg-title`.\n */\n @property({ type: String, attribute: 'dlg-title' })\n dlgTitle = '';\n\n @property({ type: String, reflect: true })\n variant: DialogVariant = 'default';\n\n @property({ type: String, reflect: true })\n size: DialogSize = 'md';\n\n @property({ type: String, reflect: true })\n layout: DialogLayout = 'dialog';\n\n @property({ type: Boolean, reflect: true })\n open = false;\n\n @property({ type: String, attribute: 'footer-meta' })\n footerMeta = '';\n\n /* ── Refs ── */\n\n @query('dialog') declare private _dlg: HTMLDialogElement;\n\n /* ── Lifecycle ── */\n\n /**\n * Cuando `open` cambia: abrir con showModal + reflow + .is-open\n * o cerrar con animación de salida + transitionend.\n */\n protected override updated(changed: PropertyValues<this>): void {\n if (!changed.has('open')) return;\n\n if (this.open) {\n this._dlg.showModal();\n this._dlg.getBoundingClientRect(); // force reflow antes de la transición\n this._dlg.classList.add('is-open');\n } else {\n this._animateClose();\n }\n }\n\n /* ── API pública ── */\n\n /** Abre el dialog */\n public show(): void {\n this.open = true;\n }\n\n /** Cierra el dialog con animación */\n public close(): void {\n this.open = false;\n }\n\n /* ── Render ── */\n\n protected override render(): TemplateResult {\n return dialogTemplate({\n eyebrow: this.eyebrow,\n dlgTitle: this.dlgTitle,\n variant: this.variant,\n size: this.size,\n layout: this.layout,\n footerMeta: this.footerMeta,\n open: this.open,\n onClose: (): void => { this.close(); },\n });\n }\n\n /* ── Private ── */\n\n private _animateClose(): void {\n if (!this._dlg?.open) return;\n\n this._dlg.classList.add('is-closing');\n this._dlg.classList.remove('is-open');\n\n this._dlg.addEventListener('transitionend', () => {\n this._dlg.close();\n this._dlg.classList.remove('is-closing');\n\n this.dispatchEvent(\n new CustomEvent('ui-lib-dialog-close', {\n bubbles: true,\n composed: true,\n })\n );\n }, { once: true });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-dialog': LibDialog;\n }\n}"],"names":[],"mappings":";;;;;;;;;;;;;;;AA8BO,IAAM,YAAN,cAAwB,WAAW;AAAA,EAAnC,cAAA;AAAA,UAAA,GAAA,SAAA;AASL,SAAA,UAAU;AAMV,SAAA,WAAW;AAGX,SAAA,UAAyB;AAGzB,SAAA,OAAmB;AAGnB,SAAA,SAAuB;AAGvB,SAAA,OAAO;AAGP,SAAA,aAAa;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYM,QAAQ,SAAqC;AAC9D,QAAI,CAAC,QAAQ,IAAI,MAAM,EAAG;AAE1B,QAAI,KAAK,MAAM;AACb,WAAK,KAAK,UAAA;AACV,WAAK,KAAK,sBAAA;AACV,WAAK,KAAK,UAAU,IAAI,SAAS;AAAA,IACnC,OAAO;AACL,WAAK,cAAA;AAAA,IACP;AAAA,EACF;AAAA;AAAA;AAAA,EAKO,OAAa;AAClB,SAAK,OAAO;AAAA,EACd;AAAA;AAAA,EAGO,QAAc;AACnB,SAAK,OAAO;AAAA,EACd;AAAA;AAAA,EAImB,SAAyB;AAC1C,WAAO,eAAe;AAAA,MACpB,SAAY,KAAK;AAAA,MACjB,UAAY,KAAK;AAAA,MACjB,SAAY,KAAK;AAAA,MACjB,MAAY,KAAK;AAAA,MACjB,QAAY,KAAK;AAAA,MACjB,YAAY,KAAK;AAAA,MACjB,MAAY,KAAK;AAAA,MACjB,SAAY,MAAY;AAAE,aAAK,MAAA;AAAA,MAAS;AAAA,IAAA,CACzC;AAAA,EACH;AAAA;AAAA,EAIQ,gBAAsB;;AAC5B,QAAI,GAAC,UAAK,SAAL,mBAAW,MAAM;AAEtB,SAAK,KAAK,UAAU,IAAI,YAAY;AACpC,SAAK,KAAK,UAAU,OAAO,SAAS;AAEpC,SAAK,KAAK,iBAAiB,iBAAiB,MAAM;AAChD,WAAK,KAAK,MAAA;AACV,WAAK,KAAK,UAAU,OAAO,YAAY;AAEvC,WAAK;AAAA,QACH,IAAI,YAAY,uBAAuB;AAAA,UACrC,SAAS;AAAA,UACT,UAAU;AAAA,QAAA,CACX;AAAA,MAAA;AAAA,IAEL,GAAG,EAAE,MAAM,MAAM;AAAA,EACnB;AACF;AArGa,UACK,SAAS;AAAA,EACvB,MAAM,UAAU,YAAY,CAAC;AAAA,EAC7B,MAAM,UAAU,SAAS,CAAC;AAC5B;AAKA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GARf,UASX,WAAA,WAAA,CAAA;AAMA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,aAAa;AAAA,GAdvC,UAeX,WAAA,YAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAjB9B,UAkBX,WAAA,WAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GApB9B,UAqBX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,SAAS,MAAM;AAAA,GAvB9B,UAwBX,WAAA,UAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GA1B/B,UA2BX,WAAA,QAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,eAAe;AAAA,GA7BzC,UA8BX,WAAA,cAAA,CAAA;AAIiC,gBAAA;AAAA,EAAhC,MAAM,QAAQ;AAAA,GAlCJ,UAkCsB,WAAA,QAAA,CAAA;AAlCtB,YAAN,gBAAA;AAAA,EADN,cAAc,YAAY;AAAA,GACd,SAAA;"}
|