@cntrl-site/components 0.1.5 → 0.1.6-18
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/LICENSE +21 -21
- package/README.md +2 -2
- package/dist/Components/ControlSlider/ControlSlider.d.ts +1 -1
- package/dist/Components/ImageRevealSlider/ControlImageRevealSliderComponent.d.ts +31 -2
- package/dist/Components/ImageRevealSlider/ImageRevealSlider.d.ts +3 -1
- package/dist/Components/Lightbox/Lightbox.d.ts +1 -1
- package/dist/components.css +1 -1
- package/dist/index.js +180 -47
- package/dist/index.mjs +180 -47
- package/dist/types/Component.d.ts +2 -2
- package/package.json +69 -68
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 GX Platform
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 GX Platform
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
# Control Components
|
|
2
|
-
|
|
1
|
+
# Control Components
|
|
2
|
+
|
|
3
3
|
This is custom components for control editor and public websites.
|
|
@@ -4,7 +4,7 @@ interface SliderProps {
|
|
|
4
4
|
styles: SliderStyles;
|
|
5
5
|
isEditor?: boolean;
|
|
6
6
|
}
|
|
7
|
-
export declare function ControlSlider({ settings, content, styles: sliderStyles, isEditor }: SliderProps): JSX.Element;
|
|
7
|
+
export declare function ControlSlider({ settings, content, styles: sliderStyles, isEditor }: SliderProps): import("react/jsx-runtime").JSX.Element;
|
|
8
8
|
type SliderItem = {
|
|
9
9
|
image: {
|
|
10
10
|
url: string;
|
|
@@ -80,6 +80,17 @@ export declare const ControlImageRevealSliderComponent: {
|
|
|
80
80
|
visible: boolean;
|
|
81
81
|
};
|
|
82
82
|
};
|
|
83
|
+
defaultCursorScale: {
|
|
84
|
+
type: string;
|
|
85
|
+
title: string;
|
|
86
|
+
min: number;
|
|
87
|
+
max: number;
|
|
88
|
+
step: number;
|
|
89
|
+
display: {
|
|
90
|
+
type: string;
|
|
91
|
+
visible: boolean;
|
|
92
|
+
};
|
|
93
|
+
};
|
|
83
94
|
hoverCursor: {
|
|
84
95
|
type: string[];
|
|
85
96
|
title: string;
|
|
@@ -88,6 +99,17 @@ export declare const ControlImageRevealSliderComponent: {
|
|
|
88
99
|
visible: boolean;
|
|
89
100
|
};
|
|
90
101
|
};
|
|
102
|
+
hoverCursorScale: {
|
|
103
|
+
type: string;
|
|
104
|
+
title: string;
|
|
105
|
+
min: number;
|
|
106
|
+
max: number;
|
|
107
|
+
step: number;
|
|
108
|
+
display: {
|
|
109
|
+
type: string;
|
|
110
|
+
visible: boolean;
|
|
111
|
+
};
|
|
112
|
+
};
|
|
91
113
|
};
|
|
92
114
|
};
|
|
93
115
|
position: {
|
|
@@ -132,7 +154,9 @@ export declare const ControlImageRevealSliderComponent: {
|
|
|
132
154
|
cursor: {
|
|
133
155
|
cursorType: string;
|
|
134
156
|
defaultCursor: null;
|
|
157
|
+
defaultCursorScale: number;
|
|
135
158
|
hoverCursor: null;
|
|
159
|
+
hoverCursorScale: number;
|
|
136
160
|
};
|
|
137
161
|
position: {
|
|
138
162
|
revealPosition: string;
|
|
@@ -150,10 +174,15 @@ export declare const ControlImageRevealSliderComponent: {
|
|
|
150
174
|
value: boolean;
|
|
151
175
|
};
|
|
152
176
|
} | {
|
|
153
|
-
if: {
|
|
177
|
+
if: ({
|
|
154
178
|
name: string;
|
|
155
179
|
value: string;
|
|
156
|
-
|
|
180
|
+
isNotEqual?: undefined;
|
|
181
|
+
} | {
|
|
182
|
+
name: string;
|
|
183
|
+
value: null;
|
|
184
|
+
isNotEqual: boolean;
|
|
185
|
+
})[];
|
|
157
186
|
then: {
|
|
158
187
|
name: string;
|
|
159
188
|
value: boolean;
|
|
@@ -14,7 +14,9 @@ type ImageRevealSliderImageSize = {
|
|
|
14
14
|
};
|
|
15
15
|
type ImageRevealSliderCursor = {
|
|
16
16
|
cursorType: 'system' | 'custom';
|
|
17
|
+
defaultCursorScale: number;
|
|
17
18
|
defaultCursor: string | null;
|
|
19
|
+
hoverCursorScale: number;
|
|
18
20
|
hoverCursor: string | null;
|
|
19
21
|
};
|
|
20
22
|
type ImageRevealSliderPosition = {
|
|
@@ -34,5 +36,5 @@ type ImageRevealSliderItem = {
|
|
|
34
36
|
};
|
|
35
37
|
link: string;
|
|
36
38
|
};
|
|
37
|
-
export declare function ImageRevealSlider({ settings, content, isEditor }: ImageRevealSliderProps): JSX.Element;
|
|
39
|
+
export declare function ImageRevealSlider({ settings, content, isEditor }: ImageRevealSliderProps): import("react/jsx-runtime").JSX.Element;
|
|
38
40
|
export {};
|
|
@@ -7,7 +7,7 @@ type LightboxGalleryProps = {
|
|
|
7
7
|
activeEvent: 'close' | 'open';
|
|
8
8
|
isEditor?: boolean;
|
|
9
9
|
};
|
|
10
|
-
export declare const LightboxGallery: ({ settings, content, styles, portalId, activeEvent, isEditor }: LightboxGalleryProps) => JSX.Element;
|
|
10
|
+
export declare const LightboxGallery: ({ settings, content, styles, portalId, activeEvent, isEditor }: LightboxGalleryProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
11
|
type LightboxImage = {
|
|
12
12
|
image: {
|
|
13
13
|
url: string;
|
package/dist/components.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.ControlSlider-module__wrapper___sHEkd{position:relative;width:100%;height:100%}.ControlSlider-module__slider___R3i9-{width:100%;height:100%}.ControlSlider-module__sliderItems___1MgPL{display:flex;overflow:hidden;width:100%;height:100%;transition:transform .3s ease-in-out}.ControlSlider-module__sliderItem___QQSkR{width:100%;height:100%;display:flex;position:relative}.ControlSlider-module__sliderImage___9hRl-{width:100%;height:100%;object-fit:cover}.ControlSlider-module__arrow___05ghY{position:absolute;display:flex;align-items:center;justify-content:center;border:none;background-color:transparent;top:50%;left:calc(var(--is-editor, 0) * -1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -1.3888888889vw);z-index:1;transform:translate(-50%,-50%);padding:0;width:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw);height:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw)}.ControlSlider-module__arrow___05ghY.ControlSlider-module__arrowVertical___tBfVN{left:50%;top:calc(var(--is-editor, 0) * -1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -1.3888888889vw);transform:translate(-50%,-50%)}.ControlSlider-module__nextArrow___-30Yc{left:unset;right:calc(var(--is-editor, 0) * -1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -1.3888888889vw);transform:translate(50%,-50%)}.ControlSlider-module__nextArrow___-30Yc.ControlSlider-module__arrowVertical___tBfVN{left:50%;right:unset;top:unset;bottom:calc(var(--is-editor, 0) * -1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -1.3888888889vw);transform:translate(-50%,50%)}.ControlSlider-module__arrowInner___aEra3{all:unset;cursor:pointer;width:100%;height:100%}.ControlSlider-module__arrowInner___aEra3:hover .ControlSlider-module__arrowIcon___S4ztF path{fill:var(--arrow-hover-color)!important}.ControlSlider-module__arrowImg___2dwJW{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ControlSlider-module__arrowIcon___S4ztF{width:100%;height:100%}.ControlSlider-module__arrowIcon___S4ztF path{transition:fill .15s ease-in-out}.ControlSlider-module__mirror___brd6U{transform:translate(-50%,-50%) scaleX(-1)!important}.ControlSlider-module__arrowVertical___tBfVN.ControlSlider-module__mirror___brd6U{transform:translate(-50%,-50%) scaleY(-1)!important}.ControlSlider-module__pagination___bicLF{position:absolute;z-index:1;border-radius:50%}.ControlSlider-module__paginationInner___bT-P-{display:flex;gap:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw);padding-top:calc(var(--is-editor, 0) * .6944444444vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * .6944444444vw);padding-bottom:calc(var(--is-editor, 0) * .6944444444vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * .6944444444vw);padding-left:calc(var(--is-editor, 0) * 1.25vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.25vw);padding-right:calc(var(--is-editor, 0) * 1.25vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.25vw);border-radius:calc(var(--is-editor, 0) * 2.3611111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.3611111111vw)}.ControlSlider-module__paginationVertical___zYqKw{flex-direction:column}.ControlSlider-module__paginationItem___nTRbk{all:unset;flex-shrink:0;position:relative;width:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw);height:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw);cursor:pointer}.ControlSlider-module__paginationItem___nTRbk:hover .ControlSlider-module__dot___p1Qun{background-color:var(--pagination-hover-color)!important}.ControlSlider-module__dot___p1Qun{border-radius:50%;scale:.5;transition:background-color .3s ease-in-out,transform .3s ease-in-out;width:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw);height:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw)}.ControlSlider-module__activeDot___LHFaj{transform:scale(2)}.ControlSlider-module__paginationInsideBottom___R3FWn{bottom:0;left:50%;transform:translate(-50%)}.ControlSlider-module__paginationInsideTop___V-qb-{left:50%;transform:translate(-50%);top:0}.ControlSlider-module__paginationOutsideBottom___14w8D{left:50%;transform:translate(-50%);bottom:calc(var(--is-editor, 0) * -2.4305555556vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -2.4305555556vw)}.ControlSlider-module__paginationOutsideTop___SCLqB{left:50%;transform:translate(-50%);top:calc(var(--is-editor, 0) * -2.4305555556vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -2.4305555556vw)}.ControlSlider-module__paginationInsideLeft___yOBRZ{top:50%;transform:translateY(-50%);left:calc(var(--is-editor, 0) * -2.4305555556vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -2.4305555556vw)}.ControlSlider-module__paginationInsideRight___Rtt3o{top:50%;transform:translateY(-50%);right:calc(var(--is-editor, 0) * -2.4305555556vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -2.4305555556vw)}.ControlSlider-module__paginationOutsideLeft___lahaw{top:50%;transform:translateY(-50%);left:calc(var(--is-editor, 0) * -5.4861111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -5.4861111111vw)}.ControlSlider-module__paginationOutsideRight___EtuQa{top:50%;transform:translateY(-50%);right:calc(var(--is-editor, 0) * -5.4861111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -5.4861111111vw)}.ControlSlider-module__imgWrapper___UjEgB,.ControlSlider-module__wrapperInner___DLAWV{width:100%;height:100%}.ControlSlider-module__captionBlock___dJ6-j{pointer-events:none;position:absolute;top:0;z-index:1;left:0;right:0;bottom:0}.ControlSlider-module__captionTextWrapper___HFlpf{position:relative;width:100%;height:100%}.ControlSlider-module__captionText___uGBVc{pointer-events:none;max-width:100%;transition-property:opacity;transition-timing-function:ease-in-out;position:absolute;display:inline-block;white-space:pre-wrap;overflow-wrap:break-word;opacity:0}.ControlSlider-module__captionText___uGBVc.ControlSlider-module__active___WZK4G{opacity:1}.ControlSlider-module__withPointerEvents___t-18M{pointer-events:auto}.ControlSlider-module__absolute___KxmYB{position:absolute}.ControlSlider-module__topLeftAlignment___zjnGM{top:0;left:0}.ControlSlider-module__topCenterAlignment___gD1xW{top:0;left:50%;transform:translate(-50%)}.ControlSlider-module__topRightAlignment___NMapS{top:0;right:0}.ControlSlider-module__middleLeftAlignment___OnUrY{top:50%;transform:translateY(-50%);left:0}.ControlSlider-module__middleCenterAlignment___Tdkl0{top:50%;transform:translate(-50%,-50%);left:50%}.ControlSlider-module__middleRightAlignment___wEbfX{top:50%;transform:translateY(-50%);right:0}.ControlSlider-module__bottomLeftAlignment___cTP2-{bottom:0;left:0}.ControlSlider-module__bottomCenterAlignment___c54fB{bottom:0;left:50%;transform:translate(-50%)}.ControlSlider-module__bottomRightAlignment___kEwrz{bottom:0;right:0}.ControlSlider-module__clickOverlay___DZA28{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer}.ControlSlider-module__contain___pLyq7{object-fit:contain}.ControlSlider-module__cover___KdDat{object-fit:cover}@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}.RichTextRenderer-module__link___BWeZ2{color:inherit;cursor:pointer;pointer-events:auto;transition:color .2s ease}.RichTextRenderer-module__link___BWeZ2:hover{color:var(--link-hover-color)}.SvgImage-module__svg___q3xE-{width:100%;height:100%;color:transparent;display:inline-block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--fill);transition:background-color .2s;-webkit-mask:var(--svg) no-repeat center/contain;mask:var(--svg) no-repeat center/contain}.SvgImage-module__svg___q3xE-:hover{background-color:var(--hover-fill)}.SvgImage-module__img___VsTm-{width:100%;height:100%;object-fit:contain}.ImageRevealSlider-module__imageRevealSlider___UE5Ob{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.ImageRevealSlider-module__image___Qjt-e{width:100%;height:100%;object-fit:cover;position:relative;-webkit-user-select:none;user-select:none;pointer-events:none}.ImageRevealSlider-module__link___N-iLG{width:100%;height:100%;display:block}.LightBox-module__heroImage___sTxNF{width:100%;height:100%;cursor:pointer;object-fit:cover}.LightBox-module__background___rm9ml{position:fixed;z-index:9997;top:0;left:0;right:0;bottom:0;width:100%;height:100%}.LightBox-module__editor___4ACaY{width:var(--cntrl-article-width)!important;margin-left:auto;margin-right:auto}.LightBox-module__contentStyle___Bgnsq{position:fixed;z-index:9999;top:0;left:0;right:0;bottom:0;overflow:auto;background:transparent;box-sizing:border-box}.LightBox-module__imageStyle___tLIlB{position:relative;display:block;cursor:pointer;background-color:transparent;max-width:100%;max-height:100%;width:auto;height:auto}.LightBox-module__imgWrapper___LuFUp{position:relative;display:flex;width:100%;height:100%;overflow:hidden;box-sizing:border-box}.LightBox-module__contain___8-yaS{object-fit:contain;max-width:100%;max-height:100%}.LightBox-module__cover___hNvOG{width:100%;height:100%;object-fit:cover}.LightBox-module__caption___b6L2I{z-index:9999;position:absolute;display:flex}.LightBox-module__captionTextInner___rCGNH{position:relative}.LightBox-module__lightboxSplide___XFuWC.splide,.LightBox-module__lightboxSplide___XFuWC .splide__track{height:100%}.LightBox-module__arrow___iz38X{position:absolute;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background-color:transparent;top:50%;z-index:1;transform:translate(-50%,-50%);padding:0;left:calc(var(--is-editor, 0) * 1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.3888888889vw);width:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw);height:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw)}.LightBox-module__arrow___iz38X.LightBox-module__arrowVertical___Zfz81{left:50%;top:calc(var(--is-editor, 0) * 1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.3888888889vw);transform:translate(-50%,-50%)}.LightBox-module__nextArrow___zkAQN{left:unset;right:calc(var(--is-editor, 0) * 1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.3888888889vw);transform:translate(50%,-50%)}.LightBox-module__nextArrow___zkAQN.LightBox-module__arrowVertical___Zfz81{left:50%;right:unset;top:unset;bottom:calc(var(--is-editor, 0) * 1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.3888888889vw);transform:translate(-50%,50%)}.LightBox-module__arrowInner___p48sW{all:unset;cursor:pointer;width:100%;height:100%}.LightBox-module__arrowInner___p48sW:hover .LightBox-module__arrowIcon___3VaFf path{fill:var(--arrow-hover-color)!important}.LightBox-module__arrowImg___pNV88{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.LightBox-module__mirror___pjeXc{transform:translate(-50%,-50%) scaleX(-1)!important}.LightBox-module__arrowVertical___Zfz81.LightBox-module__mirror___pjeXc{transform:translate(-50%,-50%) scaleY(-1)!important}.LightBox-module__thumbsContainerVertical___wttk5{flex-direction:column;display:flex}.LightBox-module__thumbsContainer___osSma{display:flex;align-items:center;justify-content:center;pointer-events:auto}.LightBox-module__thumbsAlignStart___MO6tY{align-items:flex-start}.LightBox-module__thumbsAlignCenter___Q4sUx{align-items:center}.LightBox-module__thumbsAlignEnd___p4y9R{align-items:flex-end}.LightBox-module__thumbItem___HvnF3{all:unset;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:transform .1s ease,opacity .1s ease}.LightBox-module__thumbItem___HvnF3:hover{opacity:var(--thumb-hover)!important}.LightBox-module__closeButton___g2khP{all:unset;cursor:pointer;position:absolute;width:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw);height:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw)}@keyframes LightBox-module__lbFadeIn___P8mx0{0%{opacity:0}to{opacity:1}}.LightBox-module__fadeIn___0m5GW{animation-name:LightBox-module__lbFadeIn___P8mx0}@keyframes LightBox-module__lbSlideInLeft___ygsXZ{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes LightBox-module__lbSlideInRight___w2YKV{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes LightBox-module__lbSlideInTop___W7CSQ{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes LightBox-module__lbSlideInBottom___7kiT2{0%{transform:translateY(100%)}to{transform:translateY(0)}}.LightBox-module__slideInLeft___gPYwC{animation-name:LightBox-module__lbSlideInLeft___ygsXZ}.LightBox-module__slideInRight___S-pPp{animation-name:LightBox-module__lbSlideInRight___w2YKV}.LightBox-module__slideInTop___DFdAj{animation-name:LightBox-module__lbSlideInTop___W7CSQ}.LightBox-module__slideInBottom___m27kZ{animation-name:LightBox-module__lbSlideInBottom___7kiT2}@keyframes LightBox-module__lbFadeOut___MhEeN{0%{opacity:1}to{opacity:0}}.LightBox-module__fadeOut___55qBR{animation-name:LightBox-module__lbFadeOut___MhEeN!important}@keyframes LightBox-module__lbSlideOutLeft___xM4sO{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes LightBox-module__lbSlideOutRight___Jppgj{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes LightBox-module__lbSlideOutTop___pvscE{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes LightBox-module__lbSlideOutBottom___oFjPG{0%{transform:translateY(0)}to{transform:translateY(100%)}}.LightBox-module__slideOutLeft___NvU7P{animation-name:LightBox-module__lbSlideOutLeft___xM4sO!important}.LightBox-module__slideOutRight___SK7eC{animation-name:LightBox-module__lbSlideOutRight___Jppgj!important}.LightBox-module__slideOutTop___Vgg0z{animation-name:LightBox-module__lbSlideOutTop___pvscE!important}.LightBox-module__slideOutBottom___nJ0Ef{animation-name:LightBox-module__lbSlideOutBottom___oFjPG!important}.LightBox-module__lightboxSplide___XFuWC.splide--fade .LightBox-module__scaleSlide___vZriG{opacity:0!important;transform:var(--position-transform, none) scale(.9)!important;transition:opacity var(--splide-speed, .5s) ease,transform var(--splide-speed, .5s) ease!important}.LightBox-module__lightboxSplide___XFuWC.splide--fade .splide__slide.is-active .LightBox-module__scaleSlide___vZriG{opacity:1!important;transform:var(--position-transform, none) scale(1)!important}.LightBox-module__lightboxSplide___XFuWC.splide--fade .splide__slide:not(.is-active) .LightBox-module__scaleSlide___vZriG{opacity:0!important;transform:var(--position-transform, none) scale(1.1)!important}
|
|
1
|
+
.ControlSlider-module__wrapper___sHEkd{position:relative;width:100%;height:100%}.ControlSlider-module__slider___R3i9-{width:100%;height:100%}.ControlSlider-module__sliderItems___1MgPL{display:flex;overflow:hidden;width:100%;height:100%;transition:transform .3s ease-in-out}.ControlSlider-module__sliderItem___QQSkR{width:100%;height:100%;display:flex;position:relative}.ControlSlider-module__sliderImage___9hRl-{width:100%;height:100%;object-fit:cover}.ControlSlider-module__arrow___05ghY{position:absolute;display:flex;align-items:center;justify-content:center;border:none;background-color:transparent;top:50%;left:calc(var(--is-editor, 0) * -1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -1.3888888889vw);z-index:1;transform:translate(-50%,-50%);padding:0;width:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw);height:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw)}.ControlSlider-module__arrow___05ghY.ControlSlider-module__arrowVertical___tBfVN{left:50%;top:calc(var(--is-editor, 0) * -1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -1.3888888889vw);transform:translate(-50%,-50%)}.ControlSlider-module__nextArrow___-30Yc{left:unset;right:calc(var(--is-editor, 0) * -1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -1.3888888889vw);transform:translate(50%,-50%)}.ControlSlider-module__nextArrow___-30Yc.ControlSlider-module__arrowVertical___tBfVN{left:50%;right:unset;top:unset;bottom:calc(var(--is-editor, 0) * -1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -1.3888888889vw);transform:translate(-50%,50%)}.ControlSlider-module__arrowInner___aEra3{all:unset;cursor:pointer;width:100%;height:100%}.ControlSlider-module__arrowInner___aEra3:hover .ControlSlider-module__arrowIcon___S4ztF path{fill:var(--arrow-hover-color)!important}.ControlSlider-module__arrowImg___2dwJW{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.ControlSlider-module__arrowIcon___S4ztF{width:100%;height:100%}.ControlSlider-module__arrowIcon___S4ztF path{transition:fill .15s ease-in-out}.ControlSlider-module__mirror___brd6U{transform:translate(-50%,-50%) scaleX(-1)!important}.ControlSlider-module__arrowVertical___tBfVN.ControlSlider-module__mirror___brd6U{transform:translate(-50%,-50%) scaleY(-1)!important}.ControlSlider-module__pagination___bicLF{position:absolute;z-index:1;border-radius:50%}.ControlSlider-module__paginationInner___bT-P-{display:flex;gap:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw);padding-top:calc(var(--is-editor, 0) * .6944444444vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * .6944444444vw);padding-bottom:calc(var(--is-editor, 0) * .6944444444vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * .6944444444vw);padding-left:calc(var(--is-editor, 0) * 1.25vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.25vw);padding-right:calc(var(--is-editor, 0) * 1.25vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.25vw);border-radius:calc(var(--is-editor, 0) * 2.3611111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.3611111111vw)}.ControlSlider-module__paginationVertical___zYqKw{flex-direction:column}.ControlSlider-module__paginationItem___nTRbk{all:unset;flex-shrink:0;position:relative;width:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw);height:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw);cursor:pointer}.ControlSlider-module__paginationItem___nTRbk:hover .ControlSlider-module__dot___p1Qun{background-color:var(--pagination-hover-color)!important}.ControlSlider-module__dot___p1Qun{border-radius:50%;scale:.5;transition:background-color .3s ease-in-out,transform .3s ease-in-out;width:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw);height:calc(var(--is-editor, 0) * 1.1111111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.1111111111vw)}.ControlSlider-module__activeDot___LHFaj{transform:scale(2)}.ControlSlider-module__paginationInsideBottom___R3FWn{bottom:0;left:50%;transform:translate(-50%)}.ControlSlider-module__paginationInsideTop___V-qb-{left:50%;transform:translate(-50%);top:0}.ControlSlider-module__paginationOutsideBottom___14w8D{left:50%;transform:translate(-50%);bottom:calc(var(--is-editor, 0) * -2.4305555556vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -2.4305555556vw)}.ControlSlider-module__paginationOutsideTop___SCLqB{left:50%;transform:translate(-50%);top:calc(var(--is-editor, 0) * -2.4305555556vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -2.4305555556vw)}.ControlSlider-module__paginationInsideLeft___yOBRZ{top:50%;transform:translateY(-50%);left:calc(var(--is-editor, 0) * -2.4305555556vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -2.4305555556vw)}.ControlSlider-module__paginationInsideRight___Rtt3o{top:50%;transform:translateY(-50%);right:calc(var(--is-editor, 0) * -2.4305555556vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -2.4305555556vw)}.ControlSlider-module__paginationOutsideLeft___lahaw{top:50%;transform:translateY(-50%);left:calc(var(--is-editor, 0) * -5.4861111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -5.4861111111vw)}.ControlSlider-module__paginationOutsideRight___EtuQa{top:50%;transform:translateY(-50%);right:calc(var(--is-editor, 0) * -5.4861111111vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * -5.4861111111vw)}.ControlSlider-module__imgWrapper___UjEgB,.ControlSlider-module__wrapperInner___DLAWV{width:100%;height:100%}.ControlSlider-module__captionBlock___dJ6-j{pointer-events:none;position:absolute;top:0;z-index:1;left:0;right:0;bottom:0}.ControlSlider-module__captionTextWrapper___HFlpf{position:relative;width:100%;height:100%}.ControlSlider-module__captionText___uGBVc{pointer-events:none;max-width:100%;transition-property:opacity;transition-timing-function:ease-in-out;position:absolute;display:inline-block;white-space:pre-wrap;overflow-wrap:break-word;opacity:0}.ControlSlider-module__captionText___uGBVc.ControlSlider-module__active___WZK4G{opacity:1}.ControlSlider-module__withPointerEvents___t-18M{pointer-events:auto}.ControlSlider-module__absolute___KxmYB{position:absolute}.ControlSlider-module__topLeftAlignment___zjnGM{top:0;left:0}.ControlSlider-module__topCenterAlignment___gD1xW{top:0;left:50%;transform:translate(-50%)}.ControlSlider-module__topRightAlignment___NMapS{top:0;right:0}.ControlSlider-module__middleLeftAlignment___OnUrY{top:50%;transform:translateY(-50%);left:0}.ControlSlider-module__middleCenterAlignment___Tdkl0{top:50%;transform:translate(-50%,-50%);left:50%}.ControlSlider-module__middleRightAlignment___wEbfX{top:50%;transform:translateY(-50%);right:0}.ControlSlider-module__bottomLeftAlignment___cTP2-{bottom:0;left:0}.ControlSlider-module__bottomCenterAlignment___c54fB{bottom:0;left:50%;transform:translate(-50%)}.ControlSlider-module__bottomRightAlignment___kEwrz{bottom:0;right:0}.ControlSlider-module__clickOverlay___DZA28{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer}.ControlSlider-module__contain___pLyq7{object-fit:contain}.ControlSlider-module__cover___KdDat{object-fit:cover}@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}.RichTextRenderer-module__link___BWeZ2{color:inherit;cursor:pointer;pointer-events:auto;transition:color .2s ease}.RichTextRenderer-module__link___BWeZ2:hover{color:var(--link-hover-color)}.SvgImage-module__svg___q3xE-{width:100%;height:100%;color:transparent;display:inline-block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--fill);transition:background-color .2s;-webkit-mask:var(--svg) no-repeat center/contain;mask:var(--svg) no-repeat center/contain}.SvgImage-module__svg___q3xE-:hover{background-color:var(--hover-fill)}.SvgImage-module__img___VsTm-{width:100%;height:100%;object-fit:contain}.ImageRevealSlider-module__imageRevealSlider___UE5Ob{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden}.ImageRevealSlider-module__image___Qjt-e{width:100%;height:100%;object-fit:cover;position:relative;-webkit-user-select:none;user-select:none;pointer-events:none}.ImageRevealSlider-module__link___N-iLG{width:100%;height:100%;display:block}.ImageRevealSlider-module__cursor___2U03d{position:absolute;top:0;left:0;pointer-events:none}.LightBox-module__heroImage___sTxNF{width:100%;height:100%;cursor:pointer;object-fit:cover}.LightBox-module__background___rm9ml{position:fixed;z-index:9997;top:0;left:0;right:0;bottom:0;width:100%;height:100%}.LightBox-module__editor___4ACaY{width:var(--cntrl-article-width)!important;margin-left:auto;margin-right:auto}.LightBox-module__contentStyle___Bgnsq{position:fixed;z-index:9999;top:0;left:0;right:0;bottom:0;overflow:auto;background:transparent;box-sizing:border-box}.LightBox-module__imageStyle___tLIlB{position:relative;display:block;cursor:pointer;background-color:transparent;max-width:100%;max-height:100%;width:auto;height:auto}.LightBox-module__imgWrapper___LuFUp{position:relative;display:flex;width:100%;height:100%;overflow:hidden;box-sizing:border-box}.LightBox-module__contain___8-yaS{object-fit:contain;max-width:100%;max-height:100%}.LightBox-module__cover___hNvOG{width:100%;height:100%;object-fit:cover}.LightBox-module__caption___b6L2I{z-index:9999;position:absolute;display:flex}.LightBox-module__captionTextInner___rCGNH{position:relative}.LightBox-module__lightboxSplide___XFuWC.splide,.LightBox-module__lightboxSplide___XFuWC .splide__track{height:100%}.LightBox-module__arrow___iz38X{position:absolute;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background-color:transparent;top:50%;z-index:1;transform:translate(-50%,-50%);padding:0;left:calc(var(--is-editor, 0) * 1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.3888888889vw);width:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw);height:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw)}.LightBox-module__arrow___iz38X.LightBox-module__arrowVertical___Zfz81{left:50%;top:calc(var(--is-editor, 0) * 1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.3888888889vw);transform:translate(-50%,-50%)}.LightBox-module__nextArrow___zkAQN{left:unset;right:calc(var(--is-editor, 0) * 1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.3888888889vw);transform:translate(50%,-50%)}.LightBox-module__nextArrow___zkAQN.LightBox-module__arrowVertical___Zfz81{left:50%;right:unset;top:unset;bottom:calc(var(--is-editor, 0) * 1.3888888889vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 1.3888888889vw);transform:translate(-50%,50%)}.LightBox-module__arrowInner___p48sW{all:unset;cursor:pointer;width:100%;height:100%}.LightBox-module__arrowInner___p48sW:hover .LightBox-module__arrowIcon___3VaFf path{fill:var(--arrow-hover-color)!important}.LightBox-module__arrowImg___pNV88{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.LightBox-module__mirror___pjeXc{transform:translate(-50%,-50%) scaleX(-1)!important}.LightBox-module__arrowVertical___Zfz81.LightBox-module__mirror___pjeXc{transform:translate(-50%,-50%) scaleY(-1)!important}.LightBox-module__thumbsContainerVertical___wttk5{flex-direction:column;display:flex}.LightBox-module__thumbsContainer___osSma{display:flex;align-items:center;justify-content:center;pointer-events:auto}.LightBox-module__thumbsAlignStart___MO6tY{align-items:flex-start}.LightBox-module__thumbsAlignCenter___Q4sUx{align-items:center}.LightBox-module__thumbsAlignEnd___p4y9R{align-items:flex-end}.LightBox-module__thumbItem___HvnF3{all:unset;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:transform .1s ease,opacity .1s ease}.LightBox-module__thumbItem___HvnF3:hover{opacity:var(--thumb-hover)!important}.LightBox-module__closeButton___g2khP{all:unset;cursor:pointer;position:absolute;width:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw);height:calc(var(--is-editor, 0) * 2.0833333333vw / var(--cntrl-reverse-layout-deviation, 1) + (1 - var(--is-editor, 0)) * 2.0833333333vw)}@keyframes LightBox-module__lbFadeIn___P8mx0{0%{opacity:0}to{opacity:1}}.LightBox-module__fadeIn___0m5GW{animation-name:LightBox-module__lbFadeIn___P8mx0}@keyframes LightBox-module__lbSlideInLeft___ygsXZ{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes LightBox-module__lbSlideInRight___w2YKV{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes LightBox-module__lbSlideInTop___W7CSQ{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes LightBox-module__lbSlideInBottom___7kiT2{0%{transform:translateY(100%)}to{transform:translateY(0)}}.LightBox-module__slideInLeft___gPYwC{animation-name:LightBox-module__lbSlideInLeft___ygsXZ}.LightBox-module__slideInRight___S-pPp{animation-name:LightBox-module__lbSlideInRight___w2YKV}.LightBox-module__slideInTop___DFdAj{animation-name:LightBox-module__lbSlideInTop___W7CSQ}.LightBox-module__slideInBottom___m27kZ{animation-name:LightBox-module__lbSlideInBottom___7kiT2}@keyframes LightBox-module__lbFadeOut___MhEeN{0%{opacity:1}to{opacity:0}}.LightBox-module__fadeOut___55qBR{animation-name:LightBox-module__lbFadeOut___MhEeN!important}@keyframes LightBox-module__lbSlideOutLeft___xM4sO{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes LightBox-module__lbSlideOutRight___Jppgj{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes LightBox-module__lbSlideOutTop___pvscE{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes LightBox-module__lbSlideOutBottom___oFjPG{0%{transform:translateY(0)}to{transform:translateY(100%)}}.LightBox-module__slideOutLeft___NvU7P{animation-name:LightBox-module__lbSlideOutLeft___xM4sO!important}.LightBox-module__slideOutRight___SK7eC{animation-name:LightBox-module__lbSlideOutRight___Jppgj!important}.LightBox-module__slideOutTop___Vgg0z{animation-name:LightBox-module__lbSlideOutTop___pvscE!important}.LightBox-module__slideOutBottom___nJ0Ef{animation-name:LightBox-module__lbSlideOutBottom___oFjPG!important}.LightBox-module__lightboxSplide___XFuWC.splide--fade .LightBox-module__scaleSlide___vZriG{opacity:0!important;transform:var(--position-transform, none) scale(.9)!important;transition:opacity var(--splide-speed, .5s) ease,transform var(--splide-speed, .5s) ease!important}.LightBox-module__lightboxSplide___XFuWC.splide--fade .splide__slide.is-active .LightBox-module__scaleSlide___vZriG{opacity:1!important;transform:var(--position-transform, none) scale(1)!important}.LightBox-module__lightboxSplide___XFuWC.splide--fade .splide__slide:not(.is-active) .LightBox-module__scaleSlide___vZriG{opacity:0!important;transform:var(--position-transform, none) scale(1.1)!important}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const reactSplide = require("@splidejs/react-splide");
|
|
6
6
|
const cn = require("classnames");
|
|
7
|
+
const framerMotion = require("framer-motion");
|
|
7
8
|
const reactDom = require("react-dom");
|
|
8
9
|
const wrapper = "ControlSlider-module__wrapper___sHEkd";
|
|
9
10
|
const sliderItem = "ControlSlider-module__sliderItem___QQSkR";
|
|
@@ -1040,13 +1041,16 @@ const ControlSliderComponent = {
|
|
|
1040
1041
|
const imageRevealSlider = "ImageRevealSlider-module__imageRevealSlider___UE5Ob";
|
|
1041
1042
|
const image = "ImageRevealSlider-module__image___Qjt-e";
|
|
1042
1043
|
const link = "ImageRevealSlider-module__link___N-iLG";
|
|
1044
|
+
const cursor = "ImageRevealSlider-module__cursor___2U03d";
|
|
1043
1045
|
const styles = {
|
|
1044
1046
|
imageRevealSlider,
|
|
1045
1047
|
image,
|
|
1046
|
-
link
|
|
1048
|
+
link,
|
|
1049
|
+
cursor
|
|
1047
1050
|
};
|
|
1048
1051
|
function isMouseOverImage(mouseX, mouseY, placedImages) {
|
|
1049
|
-
for (
|
|
1052
|
+
for (let i = placedImages.length - 1; i >= 0; i--) {
|
|
1053
|
+
const img2 = placedImages[i];
|
|
1050
1054
|
const imgEl = new Image();
|
|
1051
1055
|
imgEl.src = img2.url;
|
|
1052
1056
|
const imgWidth = img2.width ? Number.parseFloat(img2.width) : imgEl.naturalWidth;
|
|
@@ -1054,10 +1058,10 @@ function isMouseOverImage(mouseX, mouseY, placedImages) {
|
|
|
1054
1058
|
const halfW = imgWidth / 2;
|
|
1055
1059
|
const halfH = imgHeight / 2;
|
|
1056
1060
|
if (mouseX >= img2.x - halfW && mouseX <= img2.x + halfW && mouseY >= img2.y - halfH && mouseY <= img2.y + halfH) {
|
|
1057
|
-
return true;
|
|
1061
|
+
return { isOverImage: true, hasLink: img2.link.length > 0 };
|
|
1058
1062
|
}
|
|
1059
1063
|
}
|
|
1060
|
-
return false;
|
|
1064
|
+
return { isOverImage: false, hasLink: false };
|
|
1061
1065
|
}
|
|
1062
1066
|
function getImageSize(url) {
|
|
1063
1067
|
return new Promise((resolve) => {
|
|
@@ -1087,14 +1091,81 @@ async function calculateImageWidthHeight(imgUrl, sizeType, customWidth, randomRa
|
|
|
1087
1091
|
return { width, height, finalWidth: `${width}px` };
|
|
1088
1092
|
}
|
|
1089
1093
|
function ImageRevealSlider({ settings, content, isEditor }) {
|
|
1090
|
-
const divRef = React.
|
|
1094
|
+
const [divRef, setDivRef] = React.useState(null);
|
|
1091
1095
|
const [placedImages, setPlacedImages] = React.useState([]);
|
|
1092
1096
|
const [counter, setCounter] = React.useState(0);
|
|
1093
1097
|
const imageIdCounter = React.useRef(0);
|
|
1094
1098
|
const defaultImageCount = 1;
|
|
1099
|
+
const cursorX = framerMotion.useMotionValue(0);
|
|
1100
|
+
const cursorY = framerMotion.useMotionValue(0);
|
|
1101
|
+
const defaultScale = 32;
|
|
1102
|
+
const cursorW = framerMotion.useMotionValue(32);
|
|
1103
|
+
const cursorH = framerMotion.useMotionValue(32);
|
|
1104
|
+
const [customCursorImg, setCustomCursorImg] = React.useState("none");
|
|
1105
|
+
React.useEffect(() => {
|
|
1106
|
+
if (!divRef) return;
|
|
1107
|
+
const mouseMove = (e) => {
|
|
1108
|
+
e.stopPropagation();
|
|
1109
|
+
const divRect = divRef.getBoundingClientRect();
|
|
1110
|
+
cursorX.set(e.clientX - cursorW.get() / 2 - divRect.left);
|
|
1111
|
+
cursorY.set(e.clientY - cursorH.get() / 2 - divRect.top);
|
|
1112
|
+
console.log(e);
|
|
1113
|
+
};
|
|
1114
|
+
divRef.addEventListener("mousemove", mouseMove);
|
|
1115
|
+
return () => divRef.removeEventListener("mousemove", mouseMove);
|
|
1116
|
+
}, [cursorX, cursorY, cursorW, cursorH, divRef]);
|
|
1095
1117
|
const { sizeType, imageWidth: customWidth, randomRangeImageWidth: randomRange } = settings.imageSize;
|
|
1096
1118
|
const { revealPosition, visible, target } = settings.position;
|
|
1097
|
-
const { cursorType, defaultCursor, hoverCursor } = settings.cursor;
|
|
1119
|
+
const { cursorType, defaultCursorScale, defaultCursor, hoverCursorScale, hoverCursor } = settings.cursor;
|
|
1120
|
+
React.useEffect(() => {
|
|
1121
|
+
const updateCursor = () => {
|
|
1122
|
+
if (cursorType === "system") {
|
|
1123
|
+
setCustomCursorImg("none");
|
|
1124
|
+
cursorW.set(defaultScale);
|
|
1125
|
+
cursorH.set(defaultScale);
|
|
1126
|
+
return;
|
|
1127
|
+
}
|
|
1128
|
+
const elUnderCursor = document.elementFromPoint(cursorX.get() + cursorW.get() / 2, cursorY.get() + cursorH.get() / 2);
|
|
1129
|
+
if (elUnderCursor && elUnderCursor.closest("a.link")) {
|
|
1130
|
+
setCustomCursorImg("none");
|
|
1131
|
+
cursorW.set(defaultScale);
|
|
1132
|
+
cursorH.set(defaultScale);
|
|
1133
|
+
return;
|
|
1134
|
+
}
|
|
1135
|
+
if (target === "area") {
|
|
1136
|
+
setCustomCursorImg(hoverCursor || "none");
|
|
1137
|
+
cursorW.set(defaultScale * hoverCursorScale || 1);
|
|
1138
|
+
cursorH.set(defaultScale * hoverCursorScale || 1);
|
|
1139
|
+
} else if (isMouseOverImage(cursorX.get() + cursorW.get() / 2, cursorY.get() + cursorH.get() / 2, placedImages)) {
|
|
1140
|
+
setCustomCursorImg(hoverCursor || "none");
|
|
1141
|
+
cursorW.set(defaultScale * hoverCursorScale || 1);
|
|
1142
|
+
cursorH.set(defaultScale * hoverCursorScale || 1);
|
|
1143
|
+
} else {
|
|
1144
|
+
setCustomCursorImg(defaultCursor || "none");
|
|
1145
|
+
cursorW.set(defaultScale * defaultCursorScale || 1);
|
|
1146
|
+
cursorH.set(defaultScale * defaultCursorScale || 1);
|
|
1147
|
+
}
|
|
1148
|
+
};
|
|
1149
|
+
const unsubscribeX = cursorX.onChange(updateCursor);
|
|
1150
|
+
const unsubscribeY = cursorY.onChange(updateCursor);
|
|
1151
|
+
updateCursor();
|
|
1152
|
+
return () => {
|
|
1153
|
+
unsubscribeX();
|
|
1154
|
+
unsubscribeY();
|
|
1155
|
+
};
|
|
1156
|
+
}, [
|
|
1157
|
+
cursorType,
|
|
1158
|
+
target,
|
|
1159
|
+
hoverCursor,
|
|
1160
|
+
defaultCursor,
|
|
1161
|
+
hoverCursorScale,
|
|
1162
|
+
defaultCursorScale,
|
|
1163
|
+
cursorX,
|
|
1164
|
+
cursorY,
|
|
1165
|
+
cursorW,
|
|
1166
|
+
cursorH,
|
|
1167
|
+
placedImages
|
|
1168
|
+
]);
|
|
1098
1169
|
const createNewImage = async (imgData, containerWidth, containerHeight, position = {}) => {
|
|
1099
1170
|
const { width, height, finalWidth } = await calculateImageWidthHeight(
|
|
1100
1171
|
imgData.image.url,
|
|
@@ -1127,8 +1198,8 @@ function ImageRevealSlider({ settings, content, isEditor }) {
|
|
|
1127
1198
|
return content.filter((_, i) => i < defaultContentLength).map((c) => c.image.url).join("-");
|
|
1128
1199
|
}, [content]);
|
|
1129
1200
|
React.useEffect(() => {
|
|
1130
|
-
if (!divRef
|
|
1131
|
-
const rect = divRef.
|
|
1201
|
+
if (!divRef || content.length === 0) return;
|
|
1202
|
+
const rect = divRef.getBoundingClientRect();
|
|
1132
1203
|
const containerWidth = rect.width;
|
|
1133
1204
|
const containerHeight = rect.height;
|
|
1134
1205
|
const defaultPlaced = [];
|
|
@@ -1142,15 +1213,15 @@ function ImageRevealSlider({ settings, content, isEditor }) {
|
|
|
1142
1213
|
setCounter(defaultImageCount % content.length);
|
|
1143
1214
|
};
|
|
1144
1215
|
placeImages();
|
|
1145
|
-
}, [defaultContentUrls, sizeType, customWidth, randomRange, revealPosition]);
|
|
1216
|
+
}, [defaultContentUrls, sizeType, customWidth, randomRange, revealPosition, divRef]);
|
|
1146
1217
|
React.useEffect(() => {
|
|
1147
1218
|
if (visible === "last One") {
|
|
1148
1219
|
setPlacedImages((prev) => prev.length > 0 ? [prev[prev.length - 1]] : []);
|
|
1149
1220
|
}
|
|
1150
1221
|
}, [visible]);
|
|
1151
1222
|
const handleClick = async (e) => {
|
|
1152
|
-
if (!divRef
|
|
1153
|
-
const rect = divRef.
|
|
1223
|
+
if (!divRef) return;
|
|
1224
|
+
const rect = divRef.getBoundingClientRect();
|
|
1154
1225
|
const clickX = e.clientX - rect.left;
|
|
1155
1226
|
const clickY = e.clientY - rect.top;
|
|
1156
1227
|
if (target === "image" && !isMouseOverImage(clickX, clickY, placedImages)) return;
|
|
@@ -1170,46 +1241,63 @@ function ImageRevealSlider({ settings, content, isEditor }) {
|
|
|
1170
1241
|
setPlacedImages((prev) => visible === "all" ? [...prev, newImage] : [newImage]);
|
|
1171
1242
|
setCounter((prev) => prev >= content.length - 1 ? 0 : prev + 1);
|
|
1172
1243
|
};
|
|
1173
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
1244
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1174
1245
|
"div",
|
|
1175
1246
|
{
|
|
1176
|
-
ref:
|
|
1247
|
+
ref: setDivRef,
|
|
1177
1248
|
onClick: handleClick,
|
|
1178
1249
|
className: styles.imageRevealSlider,
|
|
1179
|
-
style: { cursor:
|
|
1180
|
-
children:
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
children: target === "area" && img2.link ? /* @__PURE__ */ jsxRuntime.jsx("a", { href: img2.link, target: "_blank", className: styles.link, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1194
|
-
"img",
|
|
1195
|
-
{
|
|
1196
|
-
src: img2.url,
|
|
1197
|
-
alt: img2.name,
|
|
1198
|
-
className: styles.image
|
|
1199
|
-
},
|
|
1200
|
-
img2.id
|
|
1201
|
-
) }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1202
|
-
"img",
|
|
1203
|
-
{
|
|
1204
|
-
src: img2.url,
|
|
1205
|
-
alt: img2.name,
|
|
1206
|
-
className: styles.image
|
|
1250
|
+
style: { cursor: customCursorImg === "none" ? "default" : "none" },
|
|
1251
|
+
children: [
|
|
1252
|
+
placedImages.map((img2) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1253
|
+
"div",
|
|
1254
|
+
{
|
|
1255
|
+
className: styles.wrapper,
|
|
1256
|
+
style: {
|
|
1257
|
+
top: `${img2.y}px`,
|
|
1258
|
+
left: `${img2.x}px`,
|
|
1259
|
+
position: "absolute",
|
|
1260
|
+
transform: "translate(-50%, -50%)",
|
|
1261
|
+
width: img2.width ?? "auto",
|
|
1262
|
+
height: "auto",
|
|
1263
|
+
cursor: customCursorImg === "none" ? "default" : "none"
|
|
1207
1264
|
},
|
|
1208
|
-
img2.
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1265
|
+
children: target === "area" && img2.link ? /* @__PURE__ */ jsxRuntime.jsx("a", { href: img2.link, target: "_blank", className: styles.link, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1266
|
+
"img",
|
|
1267
|
+
{
|
|
1268
|
+
src: img2.url,
|
|
1269
|
+
alt: img2.name,
|
|
1270
|
+
className: styles.image
|
|
1271
|
+
},
|
|
1272
|
+
img2.id
|
|
1273
|
+
) }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1274
|
+
"img",
|
|
1275
|
+
{
|
|
1276
|
+
src: img2.url,
|
|
1277
|
+
alt: img2.name,
|
|
1278
|
+
className: styles.image
|
|
1279
|
+
},
|
|
1280
|
+
img2.id
|
|
1281
|
+
)
|
|
1282
|
+
},
|
|
1283
|
+
img2.id
|
|
1284
|
+
)),
|
|
1285
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1286
|
+
framerMotion.motion.div,
|
|
1287
|
+
{
|
|
1288
|
+
className: styles.cursor,
|
|
1289
|
+
style: {
|
|
1290
|
+
x: cursorX,
|
|
1291
|
+
y: cursorY,
|
|
1292
|
+
width: cursorW.get(),
|
|
1293
|
+
height: cursorH.get(),
|
|
1294
|
+
backgroundImage: `url('${customCursorImg}')`,
|
|
1295
|
+
backgroundSize: "cover",
|
|
1296
|
+
backgroundPosition: "center"
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
)
|
|
1300
|
+
]
|
|
1213
1301
|
}
|
|
1214
1302
|
);
|
|
1215
1303
|
}
|
|
@@ -1294,6 +1382,17 @@ const ControlImageRevealSliderComponent = {
|
|
|
1294
1382
|
visible: false
|
|
1295
1383
|
}
|
|
1296
1384
|
},
|
|
1385
|
+
defaultCursorScale: {
|
|
1386
|
+
type: "number",
|
|
1387
|
+
title: "Scale",
|
|
1388
|
+
min: 1,
|
|
1389
|
+
max: 5,
|
|
1390
|
+
step: 0.1,
|
|
1391
|
+
display: {
|
|
1392
|
+
type: "range-control",
|
|
1393
|
+
visible: false
|
|
1394
|
+
}
|
|
1395
|
+
},
|
|
1297
1396
|
hoverCursor: {
|
|
1298
1397
|
type: ["string", "null"],
|
|
1299
1398
|
title: "Hover",
|
|
@@ -1301,6 +1400,17 @@ const ControlImageRevealSliderComponent = {
|
|
|
1301
1400
|
type: "settings-image-input",
|
|
1302
1401
|
visible: false
|
|
1303
1402
|
}
|
|
1403
|
+
},
|
|
1404
|
+
hoverCursorScale: {
|
|
1405
|
+
type: "number",
|
|
1406
|
+
title: "Scale",
|
|
1407
|
+
min: 1,
|
|
1408
|
+
max: 5,
|
|
1409
|
+
step: 0.1,
|
|
1410
|
+
display: {
|
|
1411
|
+
type: "range-control",
|
|
1412
|
+
visible: false
|
|
1413
|
+
}
|
|
1304
1414
|
}
|
|
1305
1415
|
}
|
|
1306
1416
|
},
|
|
@@ -1346,7 +1456,9 @@ const ControlImageRevealSliderComponent = {
|
|
|
1346
1456
|
cursor: {
|
|
1347
1457
|
cursorType: "system",
|
|
1348
1458
|
defaultCursor: null,
|
|
1349
|
-
|
|
1459
|
+
defaultCursorScale: 2,
|
|
1460
|
+
hoverCursor: null,
|
|
1461
|
+
hoverCursorScale: 2
|
|
1350
1462
|
},
|
|
1351
1463
|
position: {
|
|
1352
1464
|
revealPosition: "random",
|
|
@@ -1385,6 +1497,17 @@ const ControlImageRevealSliderComponent = {
|
|
|
1385
1497
|
value: true
|
|
1386
1498
|
}
|
|
1387
1499
|
},
|
|
1500
|
+
{
|
|
1501
|
+
if: [
|
|
1502
|
+
{ name: "position.target", value: "image" },
|
|
1503
|
+
{ name: "cursor.cursorType", value: "custom" },
|
|
1504
|
+
{ name: "cursor.defaultCursor", value: null, isNotEqual: true }
|
|
1505
|
+
],
|
|
1506
|
+
then: {
|
|
1507
|
+
name: "properties.cursor.properties.defaultCursorScale.display.visible",
|
|
1508
|
+
value: true
|
|
1509
|
+
}
|
|
1510
|
+
},
|
|
1388
1511
|
{
|
|
1389
1512
|
if: {
|
|
1390
1513
|
name: "cursor.cursorType",
|
|
@@ -1394,6 +1517,16 @@ const ControlImageRevealSliderComponent = {
|
|
|
1394
1517
|
name: "properties.cursor.properties.hoverCursor.display.visible",
|
|
1395
1518
|
value: true
|
|
1396
1519
|
}
|
|
1520
|
+
},
|
|
1521
|
+
{
|
|
1522
|
+
if: [
|
|
1523
|
+
{ name: "cursor.cursorType", value: "custom" },
|
|
1524
|
+
{ name: "cursor.hoverCursor", value: null, isNotEqual: true }
|
|
1525
|
+
],
|
|
1526
|
+
then: {
|
|
1527
|
+
name: "properties.cursor.properties.hoverCursorScale.display.visible",
|
|
1528
|
+
value: true
|
|
1529
|
+
}
|
|
1397
1530
|
}
|
|
1398
1531
|
]
|
|
1399
1532
|
},
|
package/dist/index.mjs
CHANGED
|
@@ -2,6 +2,7 @@ import { jsx, Fragment, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import React, { useState, useEffect, useRef, useMemo, useCallback } from "react";
|
|
3
3
|
import { Splide, SplideSlide } from "@splidejs/react-splide";
|
|
4
4
|
import cn from "classnames";
|
|
5
|
+
import { useMotionValue, motion } from "framer-motion";
|
|
5
6
|
import { createPortal } from "react-dom";
|
|
6
7
|
const wrapper = "ControlSlider-module__wrapper___sHEkd";
|
|
7
8
|
const sliderItem = "ControlSlider-module__sliderItem___QQSkR";
|
|
@@ -1038,13 +1039,16 @@ const ControlSliderComponent = {
|
|
|
1038
1039
|
const imageRevealSlider = "ImageRevealSlider-module__imageRevealSlider___UE5Ob";
|
|
1039
1040
|
const image = "ImageRevealSlider-module__image___Qjt-e";
|
|
1040
1041
|
const link = "ImageRevealSlider-module__link___N-iLG";
|
|
1042
|
+
const cursor = "ImageRevealSlider-module__cursor___2U03d";
|
|
1041
1043
|
const styles = {
|
|
1042
1044
|
imageRevealSlider,
|
|
1043
1045
|
image,
|
|
1044
|
-
link
|
|
1046
|
+
link,
|
|
1047
|
+
cursor
|
|
1045
1048
|
};
|
|
1046
1049
|
function isMouseOverImage(mouseX, mouseY, placedImages) {
|
|
1047
|
-
for (
|
|
1050
|
+
for (let i = placedImages.length - 1; i >= 0; i--) {
|
|
1051
|
+
const img2 = placedImages[i];
|
|
1048
1052
|
const imgEl = new Image();
|
|
1049
1053
|
imgEl.src = img2.url;
|
|
1050
1054
|
const imgWidth = img2.width ? Number.parseFloat(img2.width) : imgEl.naturalWidth;
|
|
@@ -1052,10 +1056,10 @@ function isMouseOverImage(mouseX, mouseY, placedImages) {
|
|
|
1052
1056
|
const halfW = imgWidth / 2;
|
|
1053
1057
|
const halfH = imgHeight / 2;
|
|
1054
1058
|
if (mouseX >= img2.x - halfW && mouseX <= img2.x + halfW && mouseY >= img2.y - halfH && mouseY <= img2.y + halfH) {
|
|
1055
|
-
return true;
|
|
1059
|
+
return { isOverImage: true, hasLink: img2.link.length > 0 };
|
|
1056
1060
|
}
|
|
1057
1061
|
}
|
|
1058
|
-
return false;
|
|
1062
|
+
return { isOverImage: false, hasLink: false };
|
|
1059
1063
|
}
|
|
1060
1064
|
function getImageSize(url) {
|
|
1061
1065
|
return new Promise((resolve) => {
|
|
@@ -1085,14 +1089,81 @@ async function calculateImageWidthHeight(imgUrl, sizeType, customWidth, randomRa
|
|
|
1085
1089
|
return { width, height, finalWidth: `${width}px` };
|
|
1086
1090
|
}
|
|
1087
1091
|
function ImageRevealSlider({ settings, content, isEditor }) {
|
|
1088
|
-
const divRef =
|
|
1092
|
+
const [divRef, setDivRef] = useState(null);
|
|
1089
1093
|
const [placedImages, setPlacedImages] = useState([]);
|
|
1090
1094
|
const [counter, setCounter] = useState(0);
|
|
1091
1095
|
const imageIdCounter = useRef(0);
|
|
1092
1096
|
const defaultImageCount = 1;
|
|
1097
|
+
const cursorX = useMotionValue(0);
|
|
1098
|
+
const cursorY = useMotionValue(0);
|
|
1099
|
+
const defaultScale = 32;
|
|
1100
|
+
const cursorW = useMotionValue(32);
|
|
1101
|
+
const cursorH = useMotionValue(32);
|
|
1102
|
+
const [customCursorImg, setCustomCursorImg] = useState("none");
|
|
1103
|
+
useEffect(() => {
|
|
1104
|
+
if (!divRef) return;
|
|
1105
|
+
const mouseMove = (e) => {
|
|
1106
|
+
e.stopPropagation();
|
|
1107
|
+
const divRect = divRef.getBoundingClientRect();
|
|
1108
|
+
cursorX.set(e.clientX - cursorW.get() / 2 - divRect.left);
|
|
1109
|
+
cursorY.set(e.clientY - cursorH.get() / 2 - divRect.top);
|
|
1110
|
+
console.log(e);
|
|
1111
|
+
};
|
|
1112
|
+
divRef.addEventListener("mousemove", mouseMove);
|
|
1113
|
+
return () => divRef.removeEventListener("mousemove", mouseMove);
|
|
1114
|
+
}, [cursorX, cursorY, cursorW, cursorH, divRef]);
|
|
1093
1115
|
const { sizeType, imageWidth: customWidth, randomRangeImageWidth: randomRange } = settings.imageSize;
|
|
1094
1116
|
const { revealPosition, visible, target } = settings.position;
|
|
1095
|
-
const { cursorType, defaultCursor, hoverCursor } = settings.cursor;
|
|
1117
|
+
const { cursorType, defaultCursorScale, defaultCursor, hoverCursorScale, hoverCursor } = settings.cursor;
|
|
1118
|
+
useEffect(() => {
|
|
1119
|
+
const updateCursor = () => {
|
|
1120
|
+
if (cursorType === "system") {
|
|
1121
|
+
setCustomCursorImg("none");
|
|
1122
|
+
cursorW.set(defaultScale);
|
|
1123
|
+
cursorH.set(defaultScale);
|
|
1124
|
+
return;
|
|
1125
|
+
}
|
|
1126
|
+
const elUnderCursor = document.elementFromPoint(cursorX.get() + cursorW.get() / 2, cursorY.get() + cursorH.get() / 2);
|
|
1127
|
+
if (elUnderCursor && elUnderCursor.closest("a.link")) {
|
|
1128
|
+
setCustomCursorImg("none");
|
|
1129
|
+
cursorW.set(defaultScale);
|
|
1130
|
+
cursorH.set(defaultScale);
|
|
1131
|
+
return;
|
|
1132
|
+
}
|
|
1133
|
+
if (target === "area") {
|
|
1134
|
+
setCustomCursorImg(hoverCursor || "none");
|
|
1135
|
+
cursorW.set(defaultScale * hoverCursorScale || 1);
|
|
1136
|
+
cursorH.set(defaultScale * hoverCursorScale || 1);
|
|
1137
|
+
} else if (isMouseOverImage(cursorX.get() + cursorW.get() / 2, cursorY.get() + cursorH.get() / 2, placedImages)) {
|
|
1138
|
+
setCustomCursorImg(hoverCursor || "none");
|
|
1139
|
+
cursorW.set(defaultScale * hoverCursorScale || 1);
|
|
1140
|
+
cursorH.set(defaultScale * hoverCursorScale || 1);
|
|
1141
|
+
} else {
|
|
1142
|
+
setCustomCursorImg(defaultCursor || "none");
|
|
1143
|
+
cursorW.set(defaultScale * defaultCursorScale || 1);
|
|
1144
|
+
cursorH.set(defaultScale * defaultCursorScale || 1);
|
|
1145
|
+
}
|
|
1146
|
+
};
|
|
1147
|
+
const unsubscribeX = cursorX.onChange(updateCursor);
|
|
1148
|
+
const unsubscribeY = cursorY.onChange(updateCursor);
|
|
1149
|
+
updateCursor();
|
|
1150
|
+
return () => {
|
|
1151
|
+
unsubscribeX();
|
|
1152
|
+
unsubscribeY();
|
|
1153
|
+
};
|
|
1154
|
+
}, [
|
|
1155
|
+
cursorType,
|
|
1156
|
+
target,
|
|
1157
|
+
hoverCursor,
|
|
1158
|
+
defaultCursor,
|
|
1159
|
+
hoverCursorScale,
|
|
1160
|
+
defaultCursorScale,
|
|
1161
|
+
cursorX,
|
|
1162
|
+
cursorY,
|
|
1163
|
+
cursorW,
|
|
1164
|
+
cursorH,
|
|
1165
|
+
placedImages
|
|
1166
|
+
]);
|
|
1096
1167
|
const createNewImage = async (imgData, containerWidth, containerHeight, position = {}) => {
|
|
1097
1168
|
const { width, height, finalWidth } = await calculateImageWidthHeight(
|
|
1098
1169
|
imgData.image.url,
|
|
@@ -1125,8 +1196,8 @@ function ImageRevealSlider({ settings, content, isEditor }) {
|
|
|
1125
1196
|
return content.filter((_, i) => i < defaultContentLength).map((c) => c.image.url).join("-");
|
|
1126
1197
|
}, [content]);
|
|
1127
1198
|
useEffect(() => {
|
|
1128
|
-
if (!divRef
|
|
1129
|
-
const rect = divRef.
|
|
1199
|
+
if (!divRef || content.length === 0) return;
|
|
1200
|
+
const rect = divRef.getBoundingClientRect();
|
|
1130
1201
|
const containerWidth = rect.width;
|
|
1131
1202
|
const containerHeight = rect.height;
|
|
1132
1203
|
const defaultPlaced = [];
|
|
@@ -1140,15 +1211,15 @@ function ImageRevealSlider({ settings, content, isEditor }) {
|
|
|
1140
1211
|
setCounter(defaultImageCount % content.length);
|
|
1141
1212
|
};
|
|
1142
1213
|
placeImages();
|
|
1143
|
-
}, [defaultContentUrls, sizeType, customWidth, randomRange, revealPosition]);
|
|
1214
|
+
}, [defaultContentUrls, sizeType, customWidth, randomRange, revealPosition, divRef]);
|
|
1144
1215
|
useEffect(() => {
|
|
1145
1216
|
if (visible === "last One") {
|
|
1146
1217
|
setPlacedImages((prev) => prev.length > 0 ? [prev[prev.length - 1]] : []);
|
|
1147
1218
|
}
|
|
1148
1219
|
}, [visible]);
|
|
1149
1220
|
const handleClick = async (e) => {
|
|
1150
|
-
if (!divRef
|
|
1151
|
-
const rect = divRef.
|
|
1221
|
+
if (!divRef) return;
|
|
1222
|
+
const rect = divRef.getBoundingClientRect();
|
|
1152
1223
|
const clickX = e.clientX - rect.left;
|
|
1153
1224
|
const clickY = e.clientY - rect.top;
|
|
1154
1225
|
if (target === "image" && !isMouseOverImage(clickX, clickY, placedImages)) return;
|
|
@@ -1168,46 +1239,63 @@ function ImageRevealSlider({ settings, content, isEditor }) {
|
|
|
1168
1239
|
setPlacedImages((prev) => visible === "all" ? [...prev, newImage] : [newImage]);
|
|
1169
1240
|
setCounter((prev) => prev >= content.length - 1 ? 0 : prev + 1);
|
|
1170
1241
|
};
|
|
1171
|
-
return /* @__PURE__ */
|
|
1242
|
+
return /* @__PURE__ */ jsxs(
|
|
1172
1243
|
"div",
|
|
1173
1244
|
{
|
|
1174
|
-
ref:
|
|
1245
|
+
ref: setDivRef,
|
|
1175
1246
|
onClick: handleClick,
|
|
1176
1247
|
className: styles.imageRevealSlider,
|
|
1177
|
-
style: { cursor:
|
|
1178
|
-
children:
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
children: target === "area" && img2.link ? /* @__PURE__ */ jsx("a", { href: img2.link, target: "_blank", className: styles.link, children: /* @__PURE__ */ jsx(
|
|
1192
|
-
"img",
|
|
1193
|
-
{
|
|
1194
|
-
src: img2.url,
|
|
1195
|
-
alt: img2.name,
|
|
1196
|
-
className: styles.image
|
|
1197
|
-
},
|
|
1198
|
-
img2.id
|
|
1199
|
-
) }) : /* @__PURE__ */ jsx(
|
|
1200
|
-
"img",
|
|
1201
|
-
{
|
|
1202
|
-
src: img2.url,
|
|
1203
|
-
alt: img2.name,
|
|
1204
|
-
className: styles.image
|
|
1248
|
+
style: { cursor: customCursorImg === "none" ? "default" : "none" },
|
|
1249
|
+
children: [
|
|
1250
|
+
placedImages.map((img2) => /* @__PURE__ */ jsx(
|
|
1251
|
+
"div",
|
|
1252
|
+
{
|
|
1253
|
+
className: styles.wrapper,
|
|
1254
|
+
style: {
|
|
1255
|
+
top: `${img2.y}px`,
|
|
1256
|
+
left: `${img2.x}px`,
|
|
1257
|
+
position: "absolute",
|
|
1258
|
+
transform: "translate(-50%, -50%)",
|
|
1259
|
+
width: img2.width ?? "auto",
|
|
1260
|
+
height: "auto",
|
|
1261
|
+
cursor: customCursorImg === "none" ? "default" : "none"
|
|
1205
1262
|
},
|
|
1206
|
-
img2.
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1263
|
+
children: target === "area" && img2.link ? /* @__PURE__ */ jsx("a", { href: img2.link, target: "_blank", className: styles.link, children: /* @__PURE__ */ jsx(
|
|
1264
|
+
"img",
|
|
1265
|
+
{
|
|
1266
|
+
src: img2.url,
|
|
1267
|
+
alt: img2.name,
|
|
1268
|
+
className: styles.image
|
|
1269
|
+
},
|
|
1270
|
+
img2.id
|
|
1271
|
+
) }) : /* @__PURE__ */ jsx(
|
|
1272
|
+
"img",
|
|
1273
|
+
{
|
|
1274
|
+
src: img2.url,
|
|
1275
|
+
alt: img2.name,
|
|
1276
|
+
className: styles.image
|
|
1277
|
+
},
|
|
1278
|
+
img2.id
|
|
1279
|
+
)
|
|
1280
|
+
},
|
|
1281
|
+
img2.id
|
|
1282
|
+
)),
|
|
1283
|
+
/* @__PURE__ */ jsx(
|
|
1284
|
+
motion.div,
|
|
1285
|
+
{
|
|
1286
|
+
className: styles.cursor,
|
|
1287
|
+
style: {
|
|
1288
|
+
x: cursorX,
|
|
1289
|
+
y: cursorY,
|
|
1290
|
+
width: cursorW.get(),
|
|
1291
|
+
height: cursorH.get(),
|
|
1292
|
+
backgroundImage: `url('${customCursorImg}')`,
|
|
1293
|
+
backgroundSize: "cover",
|
|
1294
|
+
backgroundPosition: "center"
|
|
1295
|
+
}
|
|
1296
|
+
}
|
|
1297
|
+
)
|
|
1298
|
+
]
|
|
1211
1299
|
}
|
|
1212
1300
|
);
|
|
1213
1301
|
}
|
|
@@ -1292,6 +1380,17 @@ const ControlImageRevealSliderComponent = {
|
|
|
1292
1380
|
visible: false
|
|
1293
1381
|
}
|
|
1294
1382
|
},
|
|
1383
|
+
defaultCursorScale: {
|
|
1384
|
+
type: "number",
|
|
1385
|
+
title: "Scale",
|
|
1386
|
+
min: 1,
|
|
1387
|
+
max: 5,
|
|
1388
|
+
step: 0.1,
|
|
1389
|
+
display: {
|
|
1390
|
+
type: "range-control",
|
|
1391
|
+
visible: false
|
|
1392
|
+
}
|
|
1393
|
+
},
|
|
1295
1394
|
hoverCursor: {
|
|
1296
1395
|
type: ["string", "null"],
|
|
1297
1396
|
title: "Hover",
|
|
@@ -1299,6 +1398,17 @@ const ControlImageRevealSliderComponent = {
|
|
|
1299
1398
|
type: "settings-image-input",
|
|
1300
1399
|
visible: false
|
|
1301
1400
|
}
|
|
1401
|
+
},
|
|
1402
|
+
hoverCursorScale: {
|
|
1403
|
+
type: "number",
|
|
1404
|
+
title: "Scale",
|
|
1405
|
+
min: 1,
|
|
1406
|
+
max: 5,
|
|
1407
|
+
step: 0.1,
|
|
1408
|
+
display: {
|
|
1409
|
+
type: "range-control",
|
|
1410
|
+
visible: false
|
|
1411
|
+
}
|
|
1302
1412
|
}
|
|
1303
1413
|
}
|
|
1304
1414
|
},
|
|
@@ -1344,7 +1454,9 @@ const ControlImageRevealSliderComponent = {
|
|
|
1344
1454
|
cursor: {
|
|
1345
1455
|
cursorType: "system",
|
|
1346
1456
|
defaultCursor: null,
|
|
1347
|
-
|
|
1457
|
+
defaultCursorScale: 2,
|
|
1458
|
+
hoverCursor: null,
|
|
1459
|
+
hoverCursorScale: 2
|
|
1348
1460
|
},
|
|
1349
1461
|
position: {
|
|
1350
1462
|
revealPosition: "random",
|
|
@@ -1383,6 +1495,17 @@ const ControlImageRevealSliderComponent = {
|
|
|
1383
1495
|
value: true
|
|
1384
1496
|
}
|
|
1385
1497
|
},
|
|
1498
|
+
{
|
|
1499
|
+
if: [
|
|
1500
|
+
{ name: "position.target", value: "image" },
|
|
1501
|
+
{ name: "cursor.cursorType", value: "custom" },
|
|
1502
|
+
{ name: "cursor.defaultCursor", value: null, isNotEqual: true }
|
|
1503
|
+
],
|
|
1504
|
+
then: {
|
|
1505
|
+
name: "properties.cursor.properties.defaultCursorScale.display.visible",
|
|
1506
|
+
value: true
|
|
1507
|
+
}
|
|
1508
|
+
},
|
|
1386
1509
|
{
|
|
1387
1510
|
if: {
|
|
1388
1511
|
name: "cursor.cursorType",
|
|
@@ -1392,6 +1515,16 @@ const ControlImageRevealSliderComponent = {
|
|
|
1392
1515
|
name: "properties.cursor.properties.hoverCursor.display.visible",
|
|
1393
1516
|
value: true
|
|
1394
1517
|
}
|
|
1518
|
+
},
|
|
1519
|
+
{
|
|
1520
|
+
if: [
|
|
1521
|
+
{ name: "cursor.cursorType", value: "custom" },
|
|
1522
|
+
{ name: "cursor.hoverCursor", value: null, isNotEqual: true }
|
|
1523
|
+
],
|
|
1524
|
+
then: {
|
|
1525
|
+
name: "properties.cursor.properties.hoverCursorScale.display.visible",
|
|
1526
|
+
value: true
|
|
1527
|
+
}
|
|
1395
1528
|
}
|
|
1396
1529
|
]
|
|
1397
1530
|
},
|
package/package.json
CHANGED
|
@@ -1,68 +1,69 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@cntrl-site/components",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Custom components for control editor and public websites.",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"module": "dist/index.mjs",
|
|
7
|
-
"types": "dist/index.d.ts",
|
|
8
|
-
"style": "dist/components.css",
|
|
9
|
-
"sideEffects": [
|
|
10
|
-
"**/*.css"
|
|
11
|
-
],
|
|
12
|
-
"exports": {
|
|
13
|
-
".": {
|
|
14
|
-
"types": "./dist/index.d.ts",
|
|
15
|
-
"import": "./dist/index.mjs",
|
|
16
|
-
"require": "./dist/index.js"
|
|
17
|
-
},
|
|
18
|
-
"./style/components.css": {
|
|
19
|
-
"default": "./dist/components.css"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"scripts": {
|
|
23
|
-
"test": "jest",
|
|
24
|
-
"dev": "vite development",
|
|
25
|
-
"prebuild": "rimraf ./dist",
|
|
26
|
-
"build": "vite build",
|
|
27
|
-
"prepublishOnly": "cross-env NODE_ENV=production npm run build"
|
|
28
|
-
},
|
|
29
|
-
"files": [
|
|
30
|
-
"dist",
|
|
31
|
-
"resources"
|
|
32
|
-
],
|
|
33
|
-
"repository": {
|
|
34
|
-
"type": "git",
|
|
35
|
-
"url": "git+https://github.com/cntrl-site/components.git"
|
|
36
|
-
},
|
|
37
|
-
"author": "arsen@momdesign.nyc",
|
|
38
|
-
"license": "MIT",
|
|
39
|
-
"bugs": {
|
|
40
|
-
"url": "https://github.com/cntrl-site/components/issues"
|
|
41
|
-
},
|
|
42
|
-
"homepage": "https://github.com/cntrl-site/components#readme",
|
|
43
|
-
"directories": {
|
|
44
|
-
"lib": "dist"
|
|
45
|
-
},
|
|
46
|
-
"dependencies": {
|
|
47
|
-
"@antfu/eslint-config": "^3.16.0",
|
|
48
|
-
"@splidejs/react-splide": "^0.7.12",
|
|
49
|
-
"classnames": "^2.5.1",
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"@tsconfig/
|
|
55
|
-
"@
|
|
56
|
-
"@types/
|
|
57
|
-
"@types/react
|
|
58
|
-
"@
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"react
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"vite
|
|
67
|
-
|
|
68
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@cntrl-site/components",
|
|
3
|
+
"version": "0.1.6-18",
|
|
4
|
+
"description": "Custom components for control editor and public websites.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"style": "dist/components.css",
|
|
9
|
+
"sideEffects": [
|
|
10
|
+
"**/*.css"
|
|
11
|
+
],
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.mjs",
|
|
16
|
+
"require": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./style/components.css": {
|
|
19
|
+
"default": "./dist/components.css"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"test": "jest",
|
|
24
|
+
"dev": "vite development",
|
|
25
|
+
"prebuild": "rimraf ./dist",
|
|
26
|
+
"build": "vite build",
|
|
27
|
+
"prepublishOnly": "cross-env NODE_ENV=production npm run build"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"resources"
|
|
32
|
+
],
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/cntrl-site/components.git"
|
|
36
|
+
},
|
|
37
|
+
"author": "arsen@momdesign.nyc",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/cntrl-site/components/issues"
|
|
41
|
+
},
|
|
42
|
+
"homepage": "https://github.com/cntrl-site/components#readme",
|
|
43
|
+
"directories": {
|
|
44
|
+
"lib": "dist"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@antfu/eslint-config": "^3.16.0",
|
|
48
|
+
"@splidejs/react-splide": "^0.7.12",
|
|
49
|
+
"classnames": "^2.5.1",
|
|
50
|
+
"framer-motion": "^12.23.27",
|
|
51
|
+
"ts-node": "^10.9.1"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@tsconfig/node16": "^1.0.3",
|
|
55
|
+
"@tsconfig/recommended": "^1.0.1",
|
|
56
|
+
"@types/node": "^18.11.7",
|
|
57
|
+
"@types/react": "^18.2.0",
|
|
58
|
+
"@types/react-dom": "^18.2.0",
|
|
59
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
60
|
+
"cross-env": "^10.1.0",
|
|
61
|
+
"react": "^18.2.0",
|
|
62
|
+
"react-dom": "^18.2.0",
|
|
63
|
+
"rimraf": "^6.0.1",
|
|
64
|
+
"sass": "^1.86.3",
|
|
65
|
+
"typescript": "^5.2.2",
|
|
66
|
+
"vite": "^6.2.5",
|
|
67
|
+
"vite-plugin-dts": "^4.5.3"
|
|
68
|
+
}
|
|
69
|
+
}
|