@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/index76.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 { horizontalScrollTemplate } from "./index249.js";
|
|
4
|
+
import sectionCss from "./index250.js";
|
|
5
5
|
import sharedTokens from "./index196.js";
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -13,100 +13,103 @@ 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 LibHorizontalScrollSection = class extends LitElement {
|
|
17
17
|
constructor() {
|
|
18
18
|
super(...arguments);
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.color = "default";
|
|
19
|
+
this.scrollDuration = 3;
|
|
20
|
+
this.paddingInline = 10;
|
|
21
|
+
this.showProgress = true;
|
|
23
22
|
this._ticking = false;
|
|
24
|
-
this.
|
|
25
|
-
this._onMotionChange = (e) => {
|
|
26
|
-
this._reducedMotion = e.matches;
|
|
27
|
-
if (this._reducedMotion) this._resetLayers();
|
|
28
|
-
};
|
|
23
|
+
this._ro = null;
|
|
29
24
|
this._onScroll = () => {
|
|
30
25
|
if (this._ticking) return;
|
|
31
26
|
this._ticking = true;
|
|
32
27
|
requestAnimationFrame(() => {
|
|
33
|
-
this.
|
|
28
|
+
this._calculate();
|
|
34
29
|
this._ticking = false;
|
|
35
30
|
});
|
|
36
31
|
};
|
|
37
32
|
}
|
|
38
|
-
/*
|
|
39
|
-
Ciclo de vida
|
|
40
|
-
════════════════════════════════════════ */
|
|
33
|
+
/* ── Lifecycle ── */
|
|
41
34
|
connectedCallback() {
|
|
42
35
|
super.connectedCallback();
|
|
43
|
-
this._motionQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
44
|
-
this._reducedMotion = this._motionQuery.matches;
|
|
45
|
-
this._motionQuery.addEventListener("change", this._onMotionChange);
|
|
46
36
|
window.addEventListener("scroll", this._onScroll, { passive: true });
|
|
47
37
|
}
|
|
48
38
|
disconnectedCallback() {
|
|
49
39
|
var _a;
|
|
50
40
|
super.disconnectedCallback();
|
|
51
41
|
window.removeEventListener("scroll", this._onScroll);
|
|
52
|
-
(_a = this.
|
|
42
|
+
(_a = this._ro) == null ? void 0 : _a.disconnect();
|
|
53
43
|
}
|
|
54
|
-
/**
|
|
55
|
-
* firstUpdated: primer render completado → shadow DOM listo.
|
|
56
|
-
* connectedCallback se dispara ANTES de que Lit renderice,
|
|
57
|
-
* por lo que querySelectorAll('.pts-layer') devuelve vacío ahí.
|
|
58
|
-
*/
|
|
59
44
|
firstUpdated() {
|
|
60
|
-
this.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const layers = (_a = this.shadowRoot) == null ? void 0 : _a.querySelectorAll(".pts-layer");
|
|
69
|
-
if (!(layers == null ? void 0 : layers.length)) return;
|
|
70
|
-
const rect = this.getBoundingClientRect();
|
|
71
|
-
const centerEl = rect.top + rect.height / 2;
|
|
72
|
-
const centerVp = window.innerHeight / 2;
|
|
73
|
-
const offset = centerVp - centerEl;
|
|
74
|
-
layers.forEach((layer, i) => {
|
|
75
|
-
const direction = i % 2 === 0 ? 1 : -1;
|
|
76
|
-
const factor = (i + 1) * this.speed;
|
|
77
|
-
layer.style.transform = `translateX(${offset * factor * direction}px)`;
|
|
45
|
+
this._ro = new ResizeObserver(() => {
|
|
46
|
+
if (!this._ticking) {
|
|
47
|
+
requestAnimationFrame(() => {
|
|
48
|
+
this._calculate();
|
|
49
|
+
this._ticking = false;
|
|
50
|
+
});
|
|
51
|
+
this._ticking = true;
|
|
52
|
+
}
|
|
78
53
|
});
|
|
54
|
+
this._ro.observe(this);
|
|
79
55
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
56
|
+
/* ── Props → CSS custom properties ── */
|
|
57
|
+
updated() {
|
|
58
|
+
this.style.setProperty("--_scroll-height", `${this.scrollDuration * 100}vh`);
|
|
59
|
+
this.style.setProperty("--_padding-inline", String(this.paddingInline));
|
|
60
|
+
}
|
|
61
|
+
/* ── Cálculo core ── */
|
|
62
|
+
_calculate() {
|
|
63
|
+
if (!this._content || !this._progressFill || !this._counter) return;
|
|
64
|
+
const rect = this.getBoundingClientRect();
|
|
65
|
+
const scrollable = rect.height - window.innerHeight;
|
|
66
|
+
if (rect.top > 0 || rect.bottom < window.innerHeight) return;
|
|
67
|
+
const scrolled = -rect.top;
|
|
68
|
+
const progress = Math.min(Math.max(scrolled / scrollable, 0), 1);
|
|
69
|
+
const paddingRight = window.innerWidth * (this.paddingInline / 100);
|
|
70
|
+
const maxMove = this._content.scrollWidth - window.innerWidth + paddingRight;
|
|
71
|
+
this._content.style.transform = `translateX(-${progress * maxMove}px)`;
|
|
72
|
+
this._progressFill.style.width = `${progress * 100}%`;
|
|
73
|
+
this._counter.textContent = `${Math.round(progress * 100)}%`;
|
|
74
|
+
this.dispatchEvent(new CustomEvent(
|
|
75
|
+
"ui-lib-scroll-progress",
|
|
76
|
+
{
|
|
77
|
+
detail: { progress, percent: Math.round(progress * 100) },
|
|
78
|
+
bubbles: true,
|
|
79
|
+
composed: true
|
|
80
|
+
}
|
|
81
|
+
));
|
|
85
82
|
}
|
|
86
83
|
render() {
|
|
87
|
-
return
|
|
84
|
+
return horizontalScrollTemplate(this);
|
|
88
85
|
}
|
|
89
86
|
};
|
|
90
|
-
|
|
87
|
+
LibHorizontalScrollSection.styles = [
|
|
91
88
|
css`${unsafeCSS(sharedTokens)}`,
|
|
92
|
-
css`${unsafeCSS(
|
|
89
|
+
css`${unsafeCSS(sectionCss)}`
|
|
93
90
|
];
|
|
94
91
|
__decorateClass([
|
|
95
|
-
property({ type:
|
|
96
|
-
],
|
|
92
|
+
property({ type: Number, attribute: "scroll-duration" })
|
|
93
|
+
], LibHorizontalScrollSection.prototype, "scrollDuration", 2);
|
|
94
|
+
__decorateClass([
|
|
95
|
+
property({ type: Number, attribute: "padding-inline" })
|
|
96
|
+
], LibHorizontalScrollSection.prototype, "paddingInline", 2);
|
|
97
|
+
__decorateClass([
|
|
98
|
+
property({ type: Boolean, attribute: "show-progress" })
|
|
99
|
+
], LibHorizontalScrollSection.prototype, "showProgress", 2);
|
|
97
100
|
__decorateClass([
|
|
98
|
-
|
|
99
|
-
],
|
|
101
|
+
query(".horizontal-content")
|
|
102
|
+
], LibHorizontalScrollSection.prototype, "_content", 2);
|
|
100
103
|
__decorateClass([
|
|
101
|
-
|
|
102
|
-
],
|
|
104
|
+
query(".progress-fill")
|
|
105
|
+
], LibHorizontalScrollSection.prototype, "_progressFill", 2);
|
|
103
106
|
__decorateClass([
|
|
104
|
-
|
|
105
|
-
],
|
|
106
|
-
|
|
107
|
-
customElement("lib-
|
|
108
|
-
],
|
|
107
|
+
query(".counter")
|
|
108
|
+
], LibHorizontalScrollSection.prototype, "_counter", 2);
|
|
109
|
+
LibHorizontalScrollSection = __decorateClass([
|
|
110
|
+
customElement("lib-horizontal-scroll-section")
|
|
111
|
+
], LibHorizontalScrollSection);
|
|
109
112
|
export {
|
|
110
|
-
|
|
113
|
+
LibHorizontalScrollSection
|
|
111
114
|
};
|
|
112
115
|
//# sourceMappingURL=index76.js.map
|
package/dist/index76.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index76.js","sources":["../src/components/organisms/
|
|
1
|
+
{"version":3,"file":"index76.js","sources":["../src/components/organisms/horizontal-scroll-section/lib-horizontal-scroll-section.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { horizontalScrollTemplate } from './lib-horizontal-scroll-section.html';\nimport sectionCss from './lib-horizontal-scroll-section.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { HorizontalScrollProgressEvent } from './lib-horizontal-scroll-section.types';\n\n/**\n * lib-horizontal-scroll-section\n *\n * Convierte scroll vertical en desplazamiento horizontal sticky.\n * El bloque ocupa `scrollDuration` vh de altura — esa \"duración\"\n * determina cuánto debe bajar el usuario para ver todo el contenido.\n *\n * @prop scroll-duration — Multiplicador de vh (default 3 → 300vh)\n * @prop padding-inline — Padding lateral en vw (default 10 → 10vw)\n * @prop show-progress — Muestra barra de progreso y contador (default true)\n *\n * @fires ui-lib-scroll-progress — { detail: HorizontalScrollProgressEvent }\n *\n * @slot — Items del carrusel horizontal (flex-shrink: 0 automático)\n *\n * @cssvar --_scroll-height — Sobreescribe la altura total del bloque\n * @cssvar --_gap — Gap entre items (default: calc(--lib-space-xl * 2))\n * @cssvar --_padding-inline — Padding lateral en vw (sincronizado con el prop)\n */\n@customElement('lib-horizontal-scroll-section')\nexport class LibHorizontalScrollSection extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(sectionCss)}`,\n ];\n\n /** Cuántas veces la altura del viewport dura el efecto (default: 3 → 300vh) */\n @property({ type: Number, attribute: 'scroll-duration' })\n scrollDuration = 3;\n\n /** Padding lateral en vw aplicado a ambos lados del track (default: 10) */\n @property({ type: Number, attribute: 'padding-inline' })\n paddingInline = 10;\n\n /** Muestra la barra de progreso y el contador de porcentaje */\n @property({ type: Boolean, attribute: 'show-progress' })\n showProgress = true;\n\n @query('.horizontal-content') declare private _content: HTMLElement;\n @query('.progress-fill') declare private _progressFill: HTMLElement;\n @query('.counter') declare private _counter: HTMLElement;\n\n private _ticking = false;\n private _ro: ResizeObserver | null = null;\n\n /* ── Lifecycle ── */\n override connectedCallback(): void {\n super.connectedCallback();\n window.addEventListener('scroll', this._onScroll, { passive: true });\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('scroll', this._onScroll);\n this._ro?.disconnect();\n }\n\n override firstUpdated(): void {\n // ResizeObserver: recalcula si cambia el viewport o el contenido\n this._ro = new ResizeObserver((): void => {\n // Forzar recálculo en el siguiente frame\n if (!this._ticking) {\n requestAnimationFrame((): void => {\n this._calculate();\n this._ticking = false;\n });\n this._ticking = true;\n }\n });\n this._ro.observe(this);\n }\n\n /* ── Props → CSS custom properties ── */\n override updated(): void {\n this.style.setProperty('--_scroll-height', `${this.scrollDuration * 100}vh`);\n this.style.setProperty('--_padding-inline', String(this.paddingInline));\n }\n\n /* ── Scroll handler — con rAF throttle ── */\n private _onScroll = (): void => {\n if (this._ticking) return;\n this._ticking = true;\n requestAnimationFrame((): void => {\n this._calculate();\n this._ticking = false;\n });\n };\n\n /* ── Cálculo core ── */\n private _calculate(): void {\n if (!this._content || !this._progressFill || !this._counter) return;\n\n const rect = this.getBoundingClientRect();\n const scrollable = rect.height - window.innerHeight;\n\n // Solo actualiza mientras el bloque está sticky en pantalla\n if (rect.top > 0 || rect.bottom < window.innerHeight) return;\n\n const scrolled = -rect.top;\n const progress = Math.min(Math.max(scrolled / scrollable, 0), 1);\n\n // maxMove: cuántos px debe desplazarse el track.\n // scrollWidth incluye el padding-left; el padding-right se añade manualmente\n // porque CSS no lo suma al scrollWidth del flex container.\n const paddingRight = window.innerWidth * (this.paddingInline / 100);\n const maxMove = this._content.scrollWidth - window.innerWidth + paddingRight;\n\n // Mutar el DOM directamente — sin Lit reactivity para mantener 60fps\n this._content.style.transform = `translateX(-${progress * maxMove}px)`;\n this._progressFill.style.width = `${progress * 100}%`;\n this._counter.textContent = `${Math.round(progress * 100)}%`;\n\n // Emitir evento solo cuando hay cambio real (evita flooding)\n this.dispatchEvent(new CustomEvent<HorizontalScrollProgressEvent>(\n 'ui-lib-scroll-progress',\n {\n detail: { progress, percent: Math.round(progress * 100) },\n bubbles: true,\n composed: true,\n },\n ));\n }\n\n protected override render(): TemplateResult {\n return horizontalScrollTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-horizontal-scroll-section': LibHorizontalScrollSection;\n }\n}"],"names":[],"mappings":"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"}
|
package/dist/index77.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { unsafeCSS, css, LitElement } from "lit";
|
|
2
|
-
import { property,
|
|
3
|
-
import
|
|
2
|
+
import { property, customElement } from "lit/decorators.js";
|
|
3
|
+
import { parallaxTemplate } from "./index251.js";
|
|
4
|
+
import parallaxCss from "./index252.js";
|
|
4
5
|
import sharedTokens from "./index196.js";
|
|
5
|
-
import { timelineItemTemplate } from "./index339.js";
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
7
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
8
8
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
@@ -13,106 +13,130 @@ 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 LibParallaxContainer = class extends LitElement {
|
|
17
17
|
constructor() {
|
|
18
18
|
super(...arguments);
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
19
|
+
this.speed = 0.2;
|
|
20
|
+
this.axis = "y";
|
|
21
|
+
this.clamp = 0;
|
|
22
|
+
this._observer = null;
|
|
23
|
+
this._isVisible = false;
|
|
24
|
+
this._ticking = false;
|
|
25
|
+
this._reducedMotion = false;
|
|
26
|
+
this._onScroll = () => {
|
|
27
|
+
if (!this._isVisible || this._reducedMotion) return;
|
|
28
|
+
if (this._ticking) return;
|
|
29
|
+
this._ticking = true;
|
|
30
|
+
requestAnimationFrame(() => {
|
|
31
|
+
this._applyParallax();
|
|
32
|
+
this._ticking = false;
|
|
33
|
+
});
|
|
34
|
+
};
|
|
33
35
|
}
|
|
34
|
-
/* ──
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
/* ── Lifecycle ── */
|
|
37
|
+
connectedCallback() {
|
|
38
|
+
super.connectedCallback();
|
|
39
|
+
const mq = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
40
|
+
this._reducedMotion = mq.matches;
|
|
41
|
+
mq.addEventListener("change", (e) => {
|
|
42
|
+
this._reducedMotion = e.matches;
|
|
43
|
+
if (this._reducedMotion) this._resetTransforms();
|
|
44
|
+
});
|
|
45
|
+
window.addEventListener("scroll", this._onScroll, { passive: true });
|
|
46
|
+
this._setupObserver();
|
|
38
47
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
48
|
+
disconnectedCallback() {
|
|
49
|
+
var _a;
|
|
50
|
+
super.disconnectedCallback();
|
|
51
|
+
window.removeEventListener("scroll", this._onScroll);
|
|
52
|
+
(_a = this._observer) == null ? void 0 : _a.disconnect();
|
|
53
|
+
this._observer = null;
|
|
42
54
|
}
|
|
43
|
-
/* ──
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
/* ── IntersectionObserver — activa/desactiva will-change ── */
|
|
56
|
+
_setupObserver() {
|
|
57
|
+
this._observer = new IntersectionObserver(
|
|
58
|
+
(entries) => {
|
|
59
|
+
const entry = entries[0];
|
|
60
|
+
if (!entry) return;
|
|
61
|
+
this._isVisible = entry.isIntersecting;
|
|
62
|
+
if (this._isVisible) {
|
|
63
|
+
this.setAttribute("visible", "");
|
|
64
|
+
requestAnimationFrame(() => this._applyParallax());
|
|
65
|
+
} else {
|
|
66
|
+
this.removeAttribute("visible");
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
{ threshold: 0.01 }
|
|
70
|
+
);
|
|
71
|
+
this._observer.observe(this);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Cálculo del desplazamiento parallax.
|
|
75
|
+
*
|
|
76
|
+
* Fórmula: centerOffset = distancia entre el centro del elemento
|
|
77
|
+
* y el centro del viewport. Cuando el elemento está centrado en
|
|
78
|
+
* pantalla → offset = 0, sin desplazamiento.
|
|
79
|
+
* Cuando el elemento sube por encima → offset negativo → el elemento
|
|
80
|
+
* se desplaza hacia arriba (más rápido o más lento que el scroll).
|
|
81
|
+
*
|
|
82
|
+
* Esto es más correcto que `(scrollY - offsetTop) * speed` porque:
|
|
83
|
+
* 1. No depende del offsetParent (fiable en Shadow DOM)
|
|
84
|
+
* 2. El punto neutro es el centro visual, no el top de la página
|
|
85
|
+
*/
|
|
86
|
+
_applyParallax() {
|
|
87
|
+
var _a;
|
|
88
|
+
const slot = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("slot");
|
|
89
|
+
if (!slot) return;
|
|
90
|
+
const rect = this.getBoundingClientRect();
|
|
91
|
+
const centerOffset = rect.top + rect.height / 2 - window.innerHeight / 2;
|
|
92
|
+
const elements = slot.assignedElements();
|
|
93
|
+
elements.forEach((el) => {
|
|
94
|
+
const factor = parseFloat(el.dataset["parallaxFactor"] ?? "1");
|
|
95
|
+
const move = centerOffset * this.speed * factor;
|
|
96
|
+
const clamped = this.clamp > 0 ? Math.min(Math.max(move, -this.clamp), this.clamp) : move;
|
|
97
|
+
switch (this.axis) {
|
|
98
|
+
case "x":
|
|
99
|
+
el.style.transform = `translate3d(${clamped}px, 0, 0)`;
|
|
100
|
+
break;
|
|
101
|
+
case "xy":
|
|
102
|
+
el.style.transform = `translate3d(${clamped}px, ${clamped}px, 0)`;
|
|
103
|
+
break;
|
|
104
|
+
case "y":
|
|
105
|
+
default:
|
|
106
|
+
el.style.transform = `translate3d(0, ${clamped}px, 0)`;
|
|
62
107
|
}
|
|
63
108
|
});
|
|
64
109
|
}
|
|
110
|
+
/** Limpia los transforms (p.ej. al activar prefers-reduced-motion en runtime) */
|
|
111
|
+
_resetTransforms() {
|
|
112
|
+
var _a;
|
|
113
|
+
const slot = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector("slot");
|
|
114
|
+
const elements = slot == null ? void 0 : slot.assignedElements();
|
|
115
|
+
elements == null ? void 0 : elements.forEach((el) => {
|
|
116
|
+
el.style.transform = "";
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
render() {
|
|
120
|
+
return parallaxTemplate();
|
|
121
|
+
}
|
|
65
122
|
};
|
|
66
|
-
|
|
123
|
+
LibParallaxContainer.styles = [
|
|
67
124
|
css`${unsafeCSS(sharedTokens)}`,
|
|
68
|
-
css`${unsafeCSS(
|
|
125
|
+
css`${unsafeCSS(parallaxCss)}`
|
|
69
126
|
];
|
|
70
127
|
__decorateClass([
|
|
71
|
-
property({ type:
|
|
72
|
-
],
|
|
73
|
-
__decorateClass([
|
|
74
|
-
property({ type: String, reflect: true, attribute: "node-color" })
|
|
75
|
-
], LibTimelineItem.prototype, "nodeColor", 2);
|
|
76
|
-
__decorateClass([
|
|
77
|
-
property({ type: String })
|
|
78
|
-
], LibTimelineItem.prototype, "icon", 2);
|
|
79
|
-
__decorateClass([
|
|
80
|
-
property({ type: String })
|
|
81
|
-
], LibTimelineItem.prototype, "avatar", 2);
|
|
128
|
+
property({ type: Number })
|
|
129
|
+
], LibParallaxContainer.prototype, "speed", 2);
|
|
82
130
|
__decorateClass([
|
|
83
131
|
property({ type: String, reflect: true })
|
|
84
|
-
],
|
|
85
|
-
__decorateClass([
|
|
86
|
-
property({ type: String, reflect: true, attribute: "line-variant" })
|
|
87
|
-
], LibTimelineItem.prototype, "lineVariant", 2);
|
|
88
|
-
__decorateClass([
|
|
89
|
-
property({ type: Number, attribute: "line-progress" })
|
|
90
|
-
], LibTimelineItem.prototype, "lineProgress", 2);
|
|
91
|
-
__decorateClass([
|
|
92
|
-
property({ type: Boolean, reflect: true, attribute: "hide-line" })
|
|
93
|
-
], LibTimelineItem.prototype, "hideLine", 2);
|
|
94
|
-
__decorateClass([
|
|
95
|
-
property({ type: String })
|
|
96
|
-
], LibTimelineItem.prototype, "timestamp", 2);
|
|
97
|
-
__decorateClass([
|
|
98
|
-
property({ type: String })
|
|
99
|
-
], LibTimelineItem.prototype, "title", 2);
|
|
100
|
-
__decorateClass([
|
|
101
|
-
property({ type: String })
|
|
102
|
-
], LibTimelineItem.prototype, "body", 2);
|
|
103
|
-
__decorateClass([
|
|
104
|
-
property({ type: Boolean, reflect: true })
|
|
105
|
-
], LibTimelineItem.prototype, "card", 2);
|
|
106
|
-
__decorateClass([
|
|
107
|
-
property({ type: Boolean, reflect: true })
|
|
108
|
-
], LibTimelineItem.prototype, "collapsible", 2);
|
|
132
|
+
], LibParallaxContainer.prototype, "axis", 2);
|
|
109
133
|
__decorateClass([
|
|
110
|
-
|
|
111
|
-
],
|
|
112
|
-
|
|
113
|
-
customElement("lib-
|
|
114
|
-
],
|
|
134
|
+
property({ type: Number })
|
|
135
|
+
], LibParallaxContainer.prototype, "clamp", 2);
|
|
136
|
+
LibParallaxContainer = __decorateClass([
|
|
137
|
+
customElement("lib-parallax-container")
|
|
138
|
+
], LibParallaxContainer);
|
|
115
139
|
export {
|
|
116
|
-
|
|
140
|
+
LibParallaxContainer
|
|
117
141
|
};
|
|
118
142
|
//# sourceMappingURL=index77.js.map
|
package/dist/index77.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index77.js","sources":["../src/components/organisms/
|
|
1
|
+
{"version":3,"file":"index77.js","sources":["../src/components/organisms/parallax-container/lib-parallax.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { parallaxTemplate } from './lib-parallax.html';\nimport parallaxCss from './lib-parallax.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type { ParallaxAxis } from './lib-parallax.types';\n\n/**\n * lib-parallax-container\n *\n * Aplica desplazamiento parallax a los hijos directos del slot\n * al hacer scroll. El efecto es 0 cuando el elemento está centrado\n * en el viewport, y se desplaza proporcionalmente al alejarse del centro.\n *\n * Cada hijo puede sobrescribir el multiplicador con `data-parallax-factor`.\n * Ejemplo: `<div data-parallax-factor=\"0.3\">fondo lento</div>`\n * `<div data-parallax-factor=\"2\">elemento rápido</div>`\n *\n * @prop speed — Multiplicador de desplazamiento base (default 0.2)\n * @prop axis — Eje del efecto: 'y' | 'x' | 'xy' (default 'y')\n * @prop clamp — Máximo desplazamiento en px (0 = sin límite, default 0)\n *\n * @cssvar --parallax-speed — Alternativa CSS al prop speed (no reactivo)\n *\n * @slot — Elementos a desplazar. Cada hijo acepta data-parallax-factor.\n */\n@customElement('lib-parallax-container')\nexport class LibParallaxContainer extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(parallaxCss)}`,\n ];\n\n /** Multiplicador de desplazamiento base */\n @property({ type: Number })\n speed = 0.2;\n\n /** Eje sobre el que opera el efecto */\n @property({ type: String, reflect: true })\n axis: ParallaxAxis = 'y';\n\n /** Máximo desplazamiento absoluto en px (0 = sin límite) */\n @property({ type: Number })\n clamp = 0;\n\n private _observer: IntersectionObserver | null = null;\n private _isVisible = false;\n private _ticking = false;\n private _reducedMotion = false;\n\n /* ── Lifecycle ── */\n override connectedCallback(): void {\n super.connectedCallback();\n // matchMedia para prefers-reduced-motion\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n this._reducedMotion = mq.matches;\n mq.addEventListener('change', (e: MediaQueryListEvent): void => {\n this._reducedMotion = e.matches;\n if (this._reducedMotion) this._resetTransforms();\n });\n\n window.addEventListener('scroll', this._onScroll, { passive: true });\n this._setupObserver();\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('scroll', this._onScroll);\n this._observer?.disconnect();\n this._observer = null;\n }\n\n /* ── IntersectionObserver — activa/desactiva will-change ── */\n private _setupObserver(): void {\n this._observer = new IntersectionObserver(\n (entries: IntersectionObserverEntry[]): void => {\n const entry = entries[0];\n if (!entry) return;\n this._isVisible = entry.isIntersecting;\n // Sincroniza el atributo [visible] → activa/desactiva will-change via CSS\n if (this._isVisible) {\n this.setAttribute('visible', '');\n // Calcular posición inicial al entrar en viewport\n requestAnimationFrame((): void => this._applyParallax());\n } else {\n this.removeAttribute('visible');\n }\n },\n { threshold: 0.01 },\n );\n this._observer.observe(this);\n }\n\n /* ── Scroll handler con rAF throttle ── */\n private _onScroll = (): void => {\n if (!this._isVisible || this._reducedMotion) return;\n if (this._ticking) return;\n this._ticking = true;\n requestAnimationFrame((): void => {\n this._applyParallax();\n this._ticking = false;\n });\n };\n\n /**\n * Cálculo del desplazamiento parallax.\n *\n * Fórmula: centerOffset = distancia entre el centro del elemento\n * y el centro del viewport. Cuando el elemento está centrado en\n * pantalla → offset = 0, sin desplazamiento.\n * Cuando el elemento sube por encima → offset negativo → el elemento\n * se desplaza hacia arriba (más rápido o más lento que el scroll).\n *\n * Esto es más correcto que `(scrollY - offsetTop) * speed` porque:\n * 1. No depende del offsetParent (fiable en Shadow DOM)\n * 2. El punto neutro es el centro visual, no el top de la página\n */\n private _applyParallax(): void {\n const slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement | null;\n if (!slot) return;\n\n const rect = this.getBoundingClientRect();\n const centerOffset = (rect.top + rect.height / 2) - (window.innerHeight / 2);\n\n const elements = slot.assignedElements() as HTMLElement[];\n\n elements.forEach((el): void => {\n const factor = parseFloat(el.dataset['parallaxFactor'] ?? '1');\n const move = centerOffset * this.speed * factor;\n const clamped = this.clamp > 0\n ? Math.min(Math.max(move, -this.clamp), this.clamp)\n : move;\n\n switch (this.axis) {\n case 'x':\n el.style.transform = `translate3d(${clamped}px, 0, 0)`;\n break;\n case 'xy':\n el.style.transform = `translate3d(${clamped}px, ${clamped}px, 0)`;\n break;\n case 'y':\n default:\n el.style.transform = `translate3d(0, ${clamped}px, 0)`;\n }\n });\n }\n\n /** Limpia los transforms (p.ej. al activar prefers-reduced-motion en runtime) */\n private _resetTransforms(): void {\n const slot = this.shadowRoot?.querySelector('slot') as HTMLSlotElement | null;\n const elements = slot?.assignedElements() as HTMLElement[] | undefined;\n elements?.forEach((el): void => { el.style.transform = ''; });\n }\n\n protected override render(): TemplateResult {\n return parallaxTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-parallax-container': LibParallaxContainer;\n }\n}"],"names":[],"mappings":"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"}
|