@rubin-epo/epo-widget-lib 0.2.1 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +21 -15
- package/dist/CameraFilter.cjs +1 -0
- package/dist/CameraFilter.d.ts +3 -0
- package/dist/CameraFilter.js +99 -0
- package/dist/ColorTool.cjs +1 -0
- package/dist/ColorTool.d.ts +3 -0
- package/dist/ColorTool.js +116 -0
- package/dist/FilterTool.cjs +1 -0
- package/dist/FilterTool.d.ts +3 -0
- package/dist/FilterTool.js +253 -0
- package/dist/SourceSelector.cjs +1 -0
- package/dist/SourceSelector.d.ts +3 -0
- package/dist/SourceSelector.js +97 -0
- package/dist/atomic/Blinker/Blinker.cjs +1 -0
- package/dist/atomic/Blinker/Blinker.d.ts +2 -2
- package/dist/atomic/Blinker/Blinker.js +68 -0
- package/dist/atomic/Blinker/Controls/Controls.cjs +1 -0
- package/dist/atomic/Blinker/Controls/Controls.js +58 -0
- package/dist/atomic/Blinker/Controls/styles.cjs +13 -0
- package/dist/atomic/Blinker/Controls/styles.d.ts +2 -1
- package/dist/atomic/Blinker/Controls/styles.js +17 -0
- package/dist/atomic/Blinker/Image/Image.cjs +1 -0
- package/dist/atomic/Blinker/Image/Image.d.ts +2 -2
- package/dist/atomic/Blinker/Image/Image.js +23 -0
- package/dist/atomic/Blinker/Image/styles.cjs +22 -0
- package/dist/atomic/Blinker/Image/styles.d.ts +4 -3
- package/dist/atomic/Blinker/Image/styles.js +26 -0
- package/dist/atomic/Blinker/Images/Images.cjs +1 -0
- package/dist/atomic/Blinker/Images/Images.js +37 -0
- package/dist/atomic/Blinker/Images/styles.cjs +15 -0
- package/dist/atomic/Blinker/Images/styles.d.ts +5 -4
- package/dist/atomic/Blinker/Images/styles.js +20 -0
- package/dist/atomic/Blinker/_mocks/index.d.ts +2 -0
- package/dist/atomic/Blinker/styles.cjs +26 -0
- package/dist/atomic/Blinker/styles.d.ts +7 -9
- package/dist/atomic/Blinker/styles.js +34 -0
- package/dist/atomic/ElapsedTime/ElapsedTime.cjs +1 -0
- package/dist/atomic/ElapsedTime/ElapsedTime.js +34 -0
- package/dist/atomic/ElapsedTime/styles.cjs +40 -0
- package/dist/atomic/ElapsedTime/styles.d.ts +7 -6
- package/dist/atomic/ElapsedTime/styles.js +49 -0
- package/dist/atomic/PlaybackControl/PlaybackControl.cjs +1 -0
- package/dist/atomic/PlaybackControl/PlaybackControl.d.ts +1 -1
- package/dist/atomic/PlaybackControl/PlaybackControl.js +17 -0
- package/dist/atomic/PlaybackControl/styles.cjs +39 -0
- package/dist/atomic/PlaybackControl/styles.d.ts +3 -2
- package/dist/atomic/PlaybackControl/styles.js +44 -0
- package/dist/hooks/useInterval.cjs +1 -0
- package/dist/hooks/useInterval.js +18 -0
- package/dist/lib/utils.cjs +1 -0
- package/dist/lib/utils.js +18 -0
- package/dist/lib/utils.test.d.ts +1 -0
- package/dist/localeStrings/en/epo-widget-lib.json +77 -0
- package/dist/localeStrings/es/epo-widget-lib.json +33 -0
- package/dist/styles/svg.cjs +8 -0
- package/dist/styles/svg.d.ts +2 -1
- package/dist/styles/svg.js +12 -0
- package/dist/widgets/CameraFilter/CondensedFilterRanges/CondensedFilterRanges.cjs +1 -0
- package/dist/widgets/CameraFilter/CondensedFilterRanges/CondensedFilterRanges.js +61 -0
- package/dist/widgets/CameraFilter/SpectrumDisplay/ColorLabels/ColorLabels.cjs +1 -0
- package/dist/widgets/CameraFilter/SpectrumDisplay/ColorLabels/ColorLabels.js +95 -0
- package/dist/widgets/CameraFilter/SpectrumDisplay/SpectrumDisplay.cjs +1 -0
- package/dist/widgets/CameraFilter/SpectrumDisplay/SpectrumDisplay.js +98 -0
- package/dist/widgets/CameraFilter/SpectrumDisplay/SpectrumLabels/SpectrumLabels.cjs +1 -0
- package/dist/widgets/CameraFilter/SpectrumDisplay/SpectrumLabels/SpectrumLabels.js +58 -0
- package/dist/widgets/CameraFilter/data.cjs +1 -0
- package/dist/widgets/CameraFilter/data.js +85 -0
- package/dist/widgets/CameraFilter/styles.cjs +64 -0
- package/dist/widgets/CameraFilter/styles.d.ts +19 -18
- package/dist/widgets/CameraFilter/styles.js +82 -0
- package/dist/widgets/ColorTool/ColorTool.d.ts +1 -2
- package/dist/widgets/ColorTool/FilterControls/FilterControls.cjs +1 -0
- package/dist/widgets/ColorTool/FilterControls/FilterControls.d.ts +1 -1
- package/dist/widgets/ColorTool/FilterControls/FilterControls.js +63 -0
- package/dist/widgets/ColorTool/FilterImage/FilterImage.cjs +1 -0
- package/dist/widgets/ColorTool/FilterImage/FilterImage.js +41 -0
- package/dist/widgets/ColorTool/ImageComposite/ImageComposite.cjs +1 -0
- package/dist/widgets/ColorTool/ImageComposite/ImageComposite.js +33 -0
- package/dist/widgets/ColorTool/styles.cjs +129 -0
- package/dist/widgets/ColorTool/styles.d.ts +21 -21
- package/dist/widgets/ColorTool/styles.js +149 -0
- package/dist/widgets/ColorTool/utilities.cjs +1 -0
- package/dist/widgets/ColorTool/utilities.js +38 -0
- package/dist/widgets/FilterTool/FilterTool.d.ts +3 -1
- package/dist/widgets/FilterTool/styles.cjs +36 -0
- package/dist/widgets/FilterTool/styles.d.ts +10 -15
- package/dist/widgets/FilterTool/styles.js +49 -0
- package/dist/widgets/SourceSelector/Message/Message.cjs +1 -0
- package/dist/widgets/SourceSelector/Message/Message.js +21 -0
- package/dist/widgets/SourceSelector/Message/styles.cjs +23 -0
- package/dist/widgets/SourceSelector/Message/styles.d.ts +5 -0
- package/dist/widgets/SourceSelector/Message/styles.js +28 -0
- package/dist/widgets/SourceSelector/Point/Point.cjs +1 -0
- package/dist/widgets/SourceSelector/Point/Point.js +45 -0
- package/dist/widgets/SourceSelector/Point/styles.cjs +11 -0
- package/dist/widgets/SourceSelector/Point/styles.d.ts +4 -3
- package/dist/widgets/SourceSelector/Point/styles.js +15 -0
- package/dist/widgets/SourceSelector/Points/Points.cjs +1 -0
- package/dist/widgets/SourceSelector/Points/Points.js +35 -0
- package/dist/widgets/SourceSelector/SourceSelector.d.ts +2 -2
- package/dist/widgets/SourceSelector/mocks/index.d.ts +7 -0
- package/dist/widgets/SourceSelector/styles.cjs +20 -0
- package/dist/widgets/SourceSelector/styles.d.ts +9 -7
- package/dist/widgets/SourceSelector/styles.js +30 -0
- package/dist/widgets/SourceSelector/utilities.cjs +1 -0
- package/dist/widgets/SourceSelector/utilities.js +7 -0
- package/dist/widgets/SourceSelector/utilities.test.d.ts +1 -0
- package/package.json +12 -11
- package/dist/assets/locales/index.d.ts +0 -115
- package/dist/epo-widget-lib.es.js +0 -3427
- package/dist/epo-widget-lib.umd.js +0 -459
- package/dist/index.d.ts +0 -6
- package/dist/types/astro.d.ts +0 -35
- package/dist/vite-env.d.ts +0 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { jsxs as C, jsx as t, Fragment as _ } from "react/jsx-runtime";
|
|
2
|
+
import { useState as r, useEffect as D } from "react";
|
|
3
|
+
import { useTranslation as F } from "react-i18next";
|
|
4
|
+
import G from "@rubin-epo/epo-react-lib/IconComposer";
|
|
5
|
+
import { SourceSelectorContainer as N, BackgroundBlinker as P, ElapsedDisplay as R, SVG as T } from "./widgets/SourceSelector/styles.js";
|
|
6
|
+
import { getLinearScale as M } from "./widgets/SourceSelector/utilities.js";
|
|
7
|
+
import Y from "./widgets/SourceSelector/Message/Message.js";
|
|
8
|
+
import q from "./widgets/SourceSelector/Points/Points.js";
|
|
9
|
+
const z = ({
|
|
10
|
+
width: a = 600,
|
|
11
|
+
height: c = 600,
|
|
12
|
+
selectedSource: b = [],
|
|
13
|
+
sources: u,
|
|
14
|
+
alerts: n,
|
|
15
|
+
images: x,
|
|
16
|
+
selectionCallback: m,
|
|
17
|
+
blinkConfig: y,
|
|
18
|
+
color: A,
|
|
19
|
+
isDisplayOnly: d = !1
|
|
20
|
+
}) => {
|
|
21
|
+
const [l, B] = r(b), [V, v] = r(!1), [E, g] = r(), [I, f] = r(!1), [S, L] = r(null), { t: p } = F(), h = "sourceSelectorWidget";
|
|
22
|
+
D(() => {
|
|
23
|
+
m && m(l);
|
|
24
|
+
}, [l]);
|
|
25
|
+
const k = (o, i, e) => o.filter((s) => s.id === i && s.type === e), $ = (o) => {
|
|
26
|
+
if (V && !d) {
|
|
27
|
+
const { target: i } = o, { id: e, type: s } = i.dataset;
|
|
28
|
+
if (e && s) {
|
|
29
|
+
if (!(k(l, e, s).length > 0)) {
|
|
30
|
+
const j = k(u, e, s);
|
|
31
|
+
B((W) => W.concat(j)), g(
|
|
32
|
+
/* @__PURE__ */ C(_, { children: [
|
|
33
|
+
/* @__PURE__ */ t(G, { icon: "checkmark" }),
|
|
34
|
+
p("source_selector.messages.success")
|
|
35
|
+
] })
|
|
36
|
+
), f(!0);
|
|
37
|
+
}
|
|
38
|
+
} else
|
|
39
|
+
g(p("source_selector.messages.failure")), f(!0);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return /* @__PURE__ */ C(N, { width: a, height: c, children: [
|
|
43
|
+
!d && /* @__PURE__ */ t(
|
|
44
|
+
Y,
|
|
45
|
+
{
|
|
46
|
+
onMessageChangeCallback: () => {
|
|
47
|
+
f(!1);
|
|
48
|
+
},
|
|
49
|
+
isVisible: I,
|
|
50
|
+
forIds: [h],
|
|
51
|
+
children: E
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
/* @__PURE__ */ t(
|
|
55
|
+
P,
|
|
56
|
+
{
|
|
57
|
+
images: x,
|
|
58
|
+
blinkCallback: (o) => {
|
|
59
|
+
if (n && n.length > 1) {
|
|
60
|
+
const e = n[o].date - n[0].date;
|
|
61
|
+
L({
|
|
62
|
+
day: Math.round(e),
|
|
63
|
+
hour: Math.round(24 / e % 24) || 0
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
loadedCallback: () => v(!0),
|
|
68
|
+
...y
|
|
69
|
+
}
|
|
70
|
+
),
|
|
71
|
+
S && /* @__PURE__ */ t(R, { ...S }),
|
|
72
|
+
/* @__PURE__ */ t(
|
|
73
|
+
T,
|
|
74
|
+
{
|
|
75
|
+
preserveAspectRatio: "xMidYMid meet",
|
|
76
|
+
viewBox: `0 0 ${a} ${c}`,
|
|
77
|
+
onClick: $,
|
|
78
|
+
id: h,
|
|
79
|
+
$isDisplayOnly: d,
|
|
80
|
+
children: /* @__PURE__ */ t(
|
|
81
|
+
q,
|
|
82
|
+
{
|
|
83
|
+
xScale: M([0, a], [0, a]),
|
|
84
|
+
yScale: M([0, c], [c, 0]),
|
|
85
|
+
color: A,
|
|
86
|
+
sources: u,
|
|
87
|
+
selectedSource: l
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
] });
|
|
93
|
+
};
|
|
94
|
+
z.displayName = "Widgets.SourceSelector";
|
|
95
|
+
export {
|
|
96
|
+
z as default
|
|
97
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("react/jsx-runtime"),n=require("react"),R=require("@rubin-epo/epo-react-lib/styles"),$=require("../../hooks/useInterval.cjs"),b=require("use-resize-observer"),u=require("./styles.cjs"),m=require("../../lib/utils.cjs"),P=e=>e&&e.__esModule?e:{default:e},z=P(b),v=({images:e=[],activeIndex:h=0,autoplay:p=!0,loop:_=!0,interval:g=200,blinkCallback:c,loadedCallback:d,className:q})=>{const{ref:y,width:S=1}=z.default(),[a,f]=n.useState(p),[s,x]=n.useState(h),[r,j]=n.useState(!1),{BREAK_MOBILE:C}=R.tokens,o=e.length>1,B=S<parseInt(C);n.useEffect(()=>{c&&c(s)},[s]),n.useEffect(()=>{r&&d&&d()},[r]);const I=(t=0)=>{const O=e.length-1;return m.getClampedArrayIndex(s+t,O)},k=()=>{if(o){const t=I(1);_===!1&&t===e.length-1&&l(),x(t)}},l=()=>{f(!1)},A=()=>{f(t=>!t)},E=()=>{l(),k()},M=()=>{l(),x(I(-1))};return $.default(k,o&&r&&a?g:null),i.jsxs(u.BlinkerContainer,{className:q,ref:y,children:[i.jsx(u.BlinkerImages,{loadedCallback:()=>j(!0),images:e,activeIndex:s,$isCondensed:B}),o&&i.jsx(u.BlinkerControls,{isDisabled:!r,playing:a,handleStartStop:A,handleNext:E,handlePrevious:M,$isCondensed:B})]})};v.displayName="Atomic.Blinker";const D=v;exports.default=D;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FunctionComponent } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { ImageShape } from "@rubin-epo/epo-react-lib";
|
|
3
3
|
export interface BlinkerProps {
|
|
4
|
-
images:
|
|
4
|
+
images: ImageShape[];
|
|
5
5
|
activeIndex?: number;
|
|
6
6
|
autoplay?: boolean;
|
|
7
7
|
loop?: boolean;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsxs as O, jsx as x } from "react/jsx-runtime";
|
|
2
|
+
import { useState as i, useEffect as B } from "react";
|
|
3
|
+
import { tokens as P } from "@rubin-epo/epo-react-lib/styles";
|
|
4
|
+
import R from "../../hooks/useInterval.js";
|
|
5
|
+
import w from "use-resize-observer";
|
|
6
|
+
import { BlinkerContainer as z, BlinkerImages as D, BlinkerControls as K } from "./styles.js";
|
|
7
|
+
import { getClampedArrayIndex as M } from "../../lib/utils.js";
|
|
8
|
+
const I = ({
|
|
9
|
+
images: t = [],
|
|
10
|
+
activeIndex: k = 0,
|
|
11
|
+
autoplay: h = !0,
|
|
12
|
+
loop: v = !0,
|
|
13
|
+
interval: g = 200,
|
|
14
|
+
blinkCallback: l,
|
|
15
|
+
loadedCallback: d,
|
|
16
|
+
className: C
|
|
17
|
+
}) => {
|
|
18
|
+
const { ref: y, width: A = 1 } = w(), [c, a] = i(h), [n, f] = i(k), [s, E] = i(!1), { BREAK_MOBILE: S } = P, o = t.length > 1, m = A < parseInt(S);
|
|
19
|
+
B(() => {
|
|
20
|
+
l && l(n);
|
|
21
|
+
}, [n]), B(() => {
|
|
22
|
+
s && d && d();
|
|
23
|
+
}, [s]);
|
|
24
|
+
const p = (e = 0) => {
|
|
25
|
+
const N = t.length - 1;
|
|
26
|
+
return M(n + e, N);
|
|
27
|
+
}, u = () => {
|
|
28
|
+
if (o) {
|
|
29
|
+
const e = p(1);
|
|
30
|
+
v === !1 && e === t.length - 1 && r(), f(e);
|
|
31
|
+
}
|
|
32
|
+
}, r = () => {
|
|
33
|
+
a(!1);
|
|
34
|
+
}, $ = () => {
|
|
35
|
+
a((e) => !e);
|
|
36
|
+
}, j = () => {
|
|
37
|
+
r(), u();
|
|
38
|
+
}, L = () => {
|
|
39
|
+
r(), f(p(-1));
|
|
40
|
+
};
|
|
41
|
+
return R(u, o && s && c ? g : null), /* @__PURE__ */ O(z, { className: C, ref: y, children: [
|
|
42
|
+
/* @__PURE__ */ x(
|
|
43
|
+
D,
|
|
44
|
+
{
|
|
45
|
+
loadedCallback: () => E(!0),
|
|
46
|
+
images: t,
|
|
47
|
+
activeIndex: n,
|
|
48
|
+
$isCondensed: m
|
|
49
|
+
}
|
|
50
|
+
),
|
|
51
|
+
o && /* @__PURE__ */ x(
|
|
52
|
+
K,
|
|
53
|
+
{
|
|
54
|
+
isDisabled: !s,
|
|
55
|
+
playing: c,
|
|
56
|
+
handleStartStop: $,
|
|
57
|
+
handleNext: j,
|
|
58
|
+
handlePrevious: L,
|
|
59
|
+
$isCondensed: m
|
|
60
|
+
}
|
|
61
|
+
)
|
|
62
|
+
] });
|
|
63
|
+
};
|
|
64
|
+
I.displayName = "Atomic.Blinker";
|
|
65
|
+
const Q = I;
|
|
66
|
+
export {
|
|
67
|
+
Q as default
|
|
68
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),c=require("react-i18next"),l=require("../../PlaybackControl/PlaybackControl.cjs"),u=require("./styles.cjs"),o=({playing:a,handleStartStop:n,handleNext:s,handlePrevious:i,className:d,isDisabled:r})=>{const{t:e}=c.useTranslation();return t.jsxs(u.ControlsContainer,{"data-testid":"blinker-controls",className:d,children:[t.jsx(l.default,{"data-testid":"blinker-backward",icon:"Backward",label:e("blinker.controls.backward"),handleClick:i,disabled:r}),t.jsx(l.default,{"data-testid":"blinker-start-stop",icon:a?"Pause":"Play",label:e(a?"blinker.controls.pause":"blinker.controls.play"),handleClick:n,disabled:r}),t.jsx(l.default,{"data-testid":"blinker-forward",icon:"Forward",label:e("blinker.controls.forward"),handleClick:s,disabled:r})]})};o.displayName="Atomic.Blinker.Controls";const b=o;exports.default=b;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { jsxs as c, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useTranslation as k } from "react-i18next";
|
|
3
|
+
import l from "../../PlaybackControl/PlaybackControl.js";
|
|
4
|
+
import { ControlsContainer as b } from "./styles.js";
|
|
5
|
+
const n = ({
|
|
6
|
+
playing: a,
|
|
7
|
+
handleStartStop: e,
|
|
8
|
+
handleNext: i,
|
|
9
|
+
handlePrevious: s,
|
|
10
|
+
className: d,
|
|
11
|
+
isDisabled: o
|
|
12
|
+
}) => {
|
|
13
|
+
const { t: r } = k();
|
|
14
|
+
return /* @__PURE__ */ c(
|
|
15
|
+
b,
|
|
16
|
+
{
|
|
17
|
+
"data-testid": "blinker-controls",
|
|
18
|
+
className: d,
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ t(
|
|
21
|
+
l,
|
|
22
|
+
{
|
|
23
|
+
"data-testid": "blinker-backward",
|
|
24
|
+
icon: "Backward",
|
|
25
|
+
label: r("blinker.controls.backward"),
|
|
26
|
+
handleClick: s,
|
|
27
|
+
disabled: o
|
|
28
|
+
}
|
|
29
|
+
),
|
|
30
|
+
/* @__PURE__ */ t(
|
|
31
|
+
l,
|
|
32
|
+
{
|
|
33
|
+
"data-testid": "blinker-start-stop",
|
|
34
|
+
icon: a ? "Pause" : "Play",
|
|
35
|
+
label: r(a ? "blinker.controls.pause" : "blinker.controls.play"),
|
|
36
|
+
handleClick: e,
|
|
37
|
+
disabled: o
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
/* @__PURE__ */ t(
|
|
41
|
+
l,
|
|
42
|
+
{
|
|
43
|
+
"data-testid": "blinker-forward",
|
|
44
|
+
icon: "Forward",
|
|
45
|
+
label: r("blinker.controls.forward"),
|
|
46
|
+
handleClick: i,
|
|
47
|
+
disabled: o
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
n.displayName = "Atomic.Blinker.Controls";
|
|
55
|
+
const w = n;
|
|
56
|
+
export {
|
|
57
|
+
w as default
|
|
58
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("styled-components"),n=t=>t&&t.__esModule?t:{default:t},r=n(e),i=r.default.div`
|
|
2
|
+
display: grid;
|
|
3
|
+
grid-template-columns: repeat(3, 1fr);
|
|
4
|
+
grid-template-rows: 1fr;
|
|
5
|
+
gap: 0.5em;
|
|
6
|
+
color: var(--white, #fff);
|
|
7
|
+
align-items: center;
|
|
8
|
+
justify-items: center;
|
|
9
|
+
width: fit-content;
|
|
10
|
+
font-size: 0.75em;
|
|
11
|
+
text-align: center;
|
|
12
|
+
z-index: 1;
|
|
13
|
+
`;exports.ControlsContainer=i;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const ControlsContainer: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import t from "styled-components";
|
|
2
|
+
const i = t.div`
|
|
3
|
+
display: grid;
|
|
4
|
+
grid-template-columns: repeat(3, 1fr);
|
|
5
|
+
grid-template-rows: 1fr;
|
|
6
|
+
gap: 0.5em;
|
|
7
|
+
color: var(--white, #fff);
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-items: center;
|
|
10
|
+
width: fit-content;
|
|
11
|
+
font-size: 0.75em;
|
|
12
|
+
text-align: center;
|
|
13
|
+
z-index: 1;
|
|
14
|
+
`;
|
|
15
|
+
export {
|
|
16
|
+
i as ControlsContainer
|
|
17
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("react/jsx-runtime"),n=require("./styles.cjs"),e=({image:t,active:r,loadCallback:l})=>{const{url:s,altText:a}=t;return i.jsx(n.BlinkerImage,{alt:a,src:s,onLoad:l,$active:r})};e.displayName="Atomic.Blinker.Image";const o=e;exports.default=o;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ImageShape } from "@rubin-epo/epo-react-lib";
|
|
2
2
|
import { FunctionComponent } from "react";
|
|
3
3
|
interface ImageProps {
|
|
4
|
-
image:
|
|
4
|
+
image: ImageShape;
|
|
5
5
|
active: boolean;
|
|
6
6
|
loadCallback: () => void;
|
|
7
7
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { BlinkerImage as l } from "./styles.js";
|
|
3
|
+
const e = ({
|
|
4
|
+
image: a,
|
|
5
|
+
active: r,
|
|
6
|
+
loadCallback: t
|
|
7
|
+
}) => {
|
|
8
|
+
const { url: m, altText: o } = a;
|
|
9
|
+
return /* @__PURE__ */ i(
|
|
10
|
+
l,
|
|
11
|
+
{
|
|
12
|
+
alt: o,
|
|
13
|
+
src: m,
|
|
14
|
+
onLoad: t,
|
|
15
|
+
$active: r
|
|
16
|
+
}
|
|
17
|
+
);
|
|
18
|
+
};
|
|
19
|
+
e.displayName = "Atomic.Blinker.Image";
|
|
20
|
+
const c = e;
|
|
21
|
+
export {
|
|
22
|
+
c as default
|
|
23
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("styled-components"),s=e=>e&&e.__esModule?e:{default:e},i=s(t),n=i.default.img`
|
|
2
|
+
position: absolute;
|
|
3
|
+
top: 0;
|
|
4
|
+
right: 0;
|
|
5
|
+
bottom: 0;
|
|
6
|
+
left: 0;
|
|
7
|
+
width: 100%;
|
|
8
|
+
height: 100%;
|
|
9
|
+
user-select: none;
|
|
10
|
+
-webkit-user-drag: none;
|
|
11
|
+
-khtml-user-drag: none;
|
|
12
|
+
-moz-user-drag: none;
|
|
13
|
+
-o-user-drag: none;
|
|
14
|
+
-ms-user-drag: none;
|
|
15
|
+
user-drag: none;
|
|
16
|
+
|
|
17
|
+
${({$active:e})=>e?t.css`
|
|
18
|
+
visibility: visible;
|
|
19
|
+
`:t.css`
|
|
20
|
+
visibility: hidden;
|
|
21
|
+
`}
|
|
22
|
+
`;exports.BlinkerImage=n;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const BlinkerImage: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, {
|
|
3
|
+
$active: boolean;
|
|
4
|
+
}>>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import o, { css as e } from "styled-components";
|
|
2
|
+
const r = o.img`
|
|
3
|
+
position: absolute;
|
|
4
|
+
top: 0;
|
|
5
|
+
right: 0;
|
|
6
|
+
bottom: 0;
|
|
7
|
+
left: 0;
|
|
8
|
+
width: 100%;
|
|
9
|
+
height: 100%;
|
|
10
|
+
user-select: none;
|
|
11
|
+
-webkit-user-drag: none;
|
|
12
|
+
-khtml-user-drag: none;
|
|
13
|
+
-moz-user-drag: none;
|
|
14
|
+
-o-user-drag: none;
|
|
15
|
+
-ms-user-drag: none;
|
|
16
|
+
user-drag: none;
|
|
17
|
+
|
|
18
|
+
${({ $active: i }) => i ? e`
|
|
19
|
+
visibility: visible;
|
|
20
|
+
` : e`
|
|
21
|
+
visibility: hidden;
|
|
22
|
+
`}
|
|
23
|
+
`;
|
|
24
|
+
export {
|
|
25
|
+
r as BlinkerImage
|
|
26
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),i=require("react"),j=require("@rubin-epo/epo-react-lib/CircularLoader"),o=require("./styles.cjs"),I=require("../Image/Image.cjs"),q=e=>e&&e.__esModule?e:{default:e},x=q(j),u=({images:e=[],activeIndex:c,className:l,loadedCallback:n})=>{const[r,d]=i.useState(0),[t,g]=i.useState(!0),f=()=>{d(s=>s+1)};return i.useEffect(()=>{g(r!==e.length),t||n&&n()},[r,t]),a.jsxs(o.BlinkContainer,{"data-testid":"blinker-images",className:l,children:[!r&&a.jsx(x.default,{isVisible:t}),a.jsx(o.LoadingContainer,{$isLoading:t,children:e.map((s,m)=>{const{url:L}=s,_=c===m;return a.jsx(I.default,{image:s,active:_,loadCallback:f},L)})})]})};u.displayName="Atomic.Blinker.Images";const b=u;exports.default=b;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsxs as u, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { useState as a, useEffect as L } from "react";
|
|
3
|
+
import I from "@rubin-epo/epo-react-lib/CircularLoader";
|
|
4
|
+
import { BlinkContainer as k, LoadingContainer as h } from "./styles.js";
|
|
5
|
+
import x from "../Image/Image.js";
|
|
6
|
+
const n = ({
|
|
7
|
+
images: r = [],
|
|
8
|
+
activeIndex: m,
|
|
9
|
+
className: c,
|
|
10
|
+
loadedCallback: s
|
|
11
|
+
}) => {
|
|
12
|
+
const [i, d] = a(0), [e, l] = a(!0), g = () => {
|
|
13
|
+
d((t) => t + 1);
|
|
14
|
+
};
|
|
15
|
+
return L(() => {
|
|
16
|
+
l(i !== r.length), e || s && s();
|
|
17
|
+
}, [i, e]), /* @__PURE__ */ u(k, { "data-testid": "blinker-images", className: c, children: [
|
|
18
|
+
!i && /* @__PURE__ */ o(I, { isVisible: e }),
|
|
19
|
+
/* @__PURE__ */ o(h, { $isLoading: e, children: r.map((t, f) => {
|
|
20
|
+
const { url: p } = t;
|
|
21
|
+
return /* @__PURE__ */ o(
|
|
22
|
+
x,
|
|
23
|
+
{
|
|
24
|
+
image: t,
|
|
25
|
+
active: m === f,
|
|
26
|
+
loadCallback: g
|
|
27
|
+
},
|
|
28
|
+
p
|
|
29
|
+
);
|
|
30
|
+
}) })
|
|
31
|
+
] });
|
|
32
|
+
};
|
|
33
|
+
n.displayName = "Atomic.Blinker.Images";
|
|
34
|
+
const y = n;
|
|
35
|
+
export {
|
|
36
|
+
y as default
|
|
37
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("styled-components"),i=t=>t&&t.__esModule?t:{default:t},n=i(e),o=n.default.div`
|
|
2
|
+
background-color: var(--neutral95, #1f2121);
|
|
3
|
+
display: flex;
|
|
4
|
+
justify-content: center;
|
|
5
|
+
align-items: center;
|
|
6
|
+
position: relative;
|
|
7
|
+
`,a=n.default.div`
|
|
8
|
+
transition: opacity ease var(--DURATION_SLOW, 0.4s);
|
|
9
|
+
|
|
10
|
+
${({$isLoading:t})=>t?e.css`
|
|
11
|
+
opacity: 0;
|
|
12
|
+
`:e.css`
|
|
13
|
+
opacity: 1;
|
|
14
|
+
`}
|
|
15
|
+
`;exports.BlinkContainer=o;exports.LoadingContainer=a;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const BlinkContainer: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
3
|
+
export declare const LoadingContainer: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
|
|
4
|
+
$isLoading: boolean;
|
|
5
|
+
}>>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import i, { css as t } from "styled-components";
|
|
2
|
+
const e = i.div`
|
|
3
|
+
background-color: var(--neutral95, #1f2121);
|
|
4
|
+
display: flex;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
align-items: center;
|
|
7
|
+
position: relative;
|
|
8
|
+
`, a = i.div`
|
|
9
|
+
transition: opacity ease var(--DURATION_SLOW, 0.4s);
|
|
10
|
+
|
|
11
|
+
${({ $isLoading: n }) => n ? t`
|
|
12
|
+
opacity: 0;
|
|
13
|
+
` : t`
|
|
14
|
+
opacity: 1;
|
|
15
|
+
`}
|
|
16
|
+
`;
|
|
17
|
+
export {
|
|
18
|
+
e as BlinkContainer,
|
|
19
|
+
a as LoadingContainer
|
|
20
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("styled-components"),s=require("./Controls/Controls.cjs"),i=require("./Images/Images.cjs"),o=t=>t&&t.__esModule?t:{default:t},r=o(e),n=r.default.div`
|
|
2
|
+
display: grid;
|
|
3
|
+
grid-template-columns: 1fr;
|
|
4
|
+
grid-template-rows: 1fr min-content;
|
|
5
|
+
justify-items: center;
|
|
6
|
+
position: relative;
|
|
7
|
+
height: 100%;
|
|
8
|
+
`,l=r.default(s.default)`
|
|
9
|
+
grid-row: 2;
|
|
10
|
+
|
|
11
|
+
${({$isCondensed:t})=>t?e.css`
|
|
12
|
+
margin-block-start: var(--PADDING_SMALL, 20px);
|
|
13
|
+
`:e.css`
|
|
14
|
+
margin-block-end: var(--PADDING_SMALL, 20px);
|
|
15
|
+
`}
|
|
16
|
+
`,a=r.default(i.default)`
|
|
17
|
+
aspect-ratio: 1;
|
|
18
|
+
width: 100%;
|
|
19
|
+
|
|
20
|
+
${({$isCondensed:t})=>t?e.css`
|
|
21
|
+
grid-row: 1;
|
|
22
|
+
`:e.css`
|
|
23
|
+
position: absolute;
|
|
24
|
+
grid-row: span 2;
|
|
25
|
+
`};
|
|
26
|
+
`;exports.BlinkerContainer=n;exports.BlinkerControls=l;exports.BlinkerImages=a;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
export declare const BlinkerContainer: import("styled-components").
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
isCondensed: boolean;
|
|
10
|
-
}, never>;
|
|
2
|
+
export declare const BlinkerContainer: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
3
|
+
export declare const BlinkerControls: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("./Controls/Controls").ControlsProps, {
|
|
4
|
+
$isCondensed: boolean;
|
|
5
|
+
}>>;
|
|
6
|
+
export declare const BlinkerImages: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("./Images/Images").ImagesProps, {
|
|
7
|
+
$isCondensed: boolean;
|
|
8
|
+
}>>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import o, { css as r } from "styled-components";
|
|
2
|
+
import i from "./Controls/Controls.js";
|
|
3
|
+
import e from "./Images/Images.js";
|
|
4
|
+
const m = o.div`
|
|
5
|
+
display: grid;
|
|
6
|
+
grid-template-columns: 1fr;
|
|
7
|
+
grid-template-rows: 1fr min-content;
|
|
8
|
+
justify-items: center;
|
|
9
|
+
position: relative;
|
|
10
|
+
height: 100%;
|
|
11
|
+
`, l = o(i)`
|
|
12
|
+
grid-row: 2;
|
|
13
|
+
|
|
14
|
+
${({ $isCondensed: t }) => t ? r`
|
|
15
|
+
margin-block-start: var(--PADDING_SMALL, 20px);
|
|
16
|
+
` : r`
|
|
17
|
+
margin-block-end: var(--PADDING_SMALL, 20px);
|
|
18
|
+
`}
|
|
19
|
+
`, p = o(e)`
|
|
20
|
+
aspect-ratio: 1;
|
|
21
|
+
width: 100%;
|
|
22
|
+
|
|
23
|
+
${({ $isCondensed: t }) => t ? r`
|
|
24
|
+
grid-row: 1;
|
|
25
|
+
` : r`
|
|
26
|
+
position: absolute;
|
|
27
|
+
grid-row: span 2;
|
|
28
|
+
`};
|
|
29
|
+
`;
|
|
30
|
+
export {
|
|
31
|
+
m as BlinkerContainer,
|
|
32
|
+
l as BlinkerControls,
|
|
33
|
+
p as BlinkerImages
|
|
34
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),d=require("react-i18next"),s=require("./styles.cjs"),c=({year:o,day:m,hour:p,minute:u,second:T,className:j})=>{const a={year:o,day:m,hour:p,minute:u,second:T},n=Object.keys(a).filter(e=>a[e]!==void 0).map(e=>({interval:e,time:a[e]})),x=n.reduce((e,i)=>{const{interval:r,time:l=0}=i;return`${e}${l}${r.charAt(0).toUpperCase()}`},"PT");return t.jsxs(s.ElapsedTimeContainer,{className:j,children:[t.jsx(s.Header,{id:"elapsedTimeHeader",children:t.jsx(d.Trans,{children:"elapsed_time.title"})}),t.jsx(s.Time,{dateTime:x,"aria-labelledby":"elapsedTimeHeader",children:n.map(e=>{const{interval:i,time:r=0}=e,l=`elapsed_time.step.${i}`;return t.jsxs(s.Interval,{children:[t.jsx(s.Number,{children:r}),t.jsx(s.Step,{children:t.jsx(d.Trans,{i18nKey:l,count:r})})]},i)})})]})};c.displayName="Atomic.ElapsedTime";const h=c;exports.default=h;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsxs as n, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { Trans as d } from "react-i18next";
|
|
3
|
+
import { ElapsedTimeContainer as b, Header as f, Time as y, Interval as $, Number as E, Step as j } from "./styles.js";
|
|
4
|
+
const m = ({
|
|
5
|
+
year: p,
|
|
6
|
+
day: c,
|
|
7
|
+
hour: o,
|
|
8
|
+
minute: T,
|
|
9
|
+
second: h,
|
|
10
|
+
className: u
|
|
11
|
+
}) => {
|
|
12
|
+
const a = { year: p, day: c, hour: o, minute: T, second: h }, s = Object.keys(a).filter((e) => a[e] !== void 0).map((e) => ({
|
|
13
|
+
interval: e,
|
|
14
|
+
time: a[e]
|
|
15
|
+
})), v = s.reduce((e, i) => {
|
|
16
|
+
const { interval: r, time: l = 0 } = i;
|
|
17
|
+
return `${e}${l}${r.charAt(0).toUpperCase()}`;
|
|
18
|
+
}, "PT");
|
|
19
|
+
return /* @__PURE__ */ n(b, { className: u, children: [
|
|
20
|
+
/* @__PURE__ */ t(f, { id: "elapsedTimeHeader", children: /* @__PURE__ */ t(d, { children: "elapsed_time.title" }) }),
|
|
21
|
+
/* @__PURE__ */ t(y, { dateTime: v, "aria-labelledby": "elapsedTimeHeader", children: s.map((e) => {
|
|
22
|
+
const { interval: i, time: r = 0 } = e, l = `elapsed_time.step.${i}`;
|
|
23
|
+
return /* @__PURE__ */ n($, { children: [
|
|
24
|
+
/* @__PURE__ */ t(E, { children: r }),
|
|
25
|
+
/* @__PURE__ */ t(j, { children: /* @__PURE__ */ t(d, { i18nKey: l, count: r }) })
|
|
26
|
+
] }, i);
|
|
27
|
+
}) })
|
|
28
|
+
] });
|
|
29
|
+
};
|
|
30
|
+
m.displayName = "Atomic.ElapsedTime";
|
|
31
|
+
const C = m;
|
|
32
|
+
export {
|
|
33
|
+
C as default
|
|
34
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("styled-components"),i=t=>t&&t.__esModule?t:{default:t},e=i(r),a=e.default.div`
|
|
2
|
+
background-color: var(--neutral20, #dce0e3);
|
|
3
|
+
border-radius: 5px;
|
|
4
|
+
color: var(--neutral95, "#1F2121");
|
|
5
|
+
display: grid;
|
|
6
|
+
grid-template-areas: "header" "time";
|
|
7
|
+
font-size: 0.75em;
|
|
8
|
+
font-weight: var(--FONT_WEIGHT_NORMAL, 400);
|
|
9
|
+
min-width: 70px;
|
|
10
|
+
max-width: fit-content;
|
|
11
|
+
`,n=e.default.h2`
|
|
12
|
+
border-bottom: 1px solid var(--neutral95, "#1F2121");
|
|
13
|
+
font-weight: inherit;
|
|
14
|
+
font-size: 1em;
|
|
15
|
+
line-height: 1;
|
|
16
|
+
grid-area: header;
|
|
17
|
+
text-align: center;
|
|
18
|
+
margin: 0;
|
|
19
|
+
padding: 0.5em 0.75em;
|
|
20
|
+
`,d=e.default.time`
|
|
21
|
+
grid-area: time;
|
|
22
|
+
display: grid;
|
|
23
|
+
grid-auto-flow: column;
|
|
24
|
+
grid-template-rows: 1fr;
|
|
25
|
+
grid-auto-columns: 1fr;
|
|
26
|
+
`,o=e.default.div`
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
align-items: center;
|
|
30
|
+
padding: 0.25em 0.5em;
|
|
31
|
+
line-height: 1.6;
|
|
32
|
+
|
|
33
|
+
&:not(:first-of-type) {
|
|
34
|
+
border-left: 1px solid var(--neutral95, "#1F2121");
|
|
35
|
+
}
|
|
36
|
+
`,l=e.default.span`
|
|
37
|
+
font-size: 1.167em;
|
|
38
|
+
`,s=e.default.span`
|
|
39
|
+
font-size: 0.6em;
|
|
40
|
+
`;exports.ElapsedTimeContainer=a;exports.Header=n;exports.Interval=o;exports.Number=l;exports.Step=s;exports.Time=d;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const ElapsedTimeContainer: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
3
|
+
export declare const Header: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, never>>;
|
|
4
|
+
export declare const Time: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").TimeHTMLAttributes<HTMLTimeElement>, HTMLTimeElement>, never>>;
|
|
5
|
+
export declare const Interval: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
6
|
+
export declare const Number: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>>;
|
|
7
|
+
export declare const Step: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>>;
|