@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.
Files changed (114) hide show
  1. package/README.MD +21 -15
  2. package/dist/CameraFilter.cjs +1 -0
  3. package/dist/CameraFilter.d.ts +3 -0
  4. package/dist/CameraFilter.js +99 -0
  5. package/dist/ColorTool.cjs +1 -0
  6. package/dist/ColorTool.d.ts +3 -0
  7. package/dist/ColorTool.js +116 -0
  8. package/dist/FilterTool.cjs +1 -0
  9. package/dist/FilterTool.d.ts +3 -0
  10. package/dist/FilterTool.js +253 -0
  11. package/dist/SourceSelector.cjs +1 -0
  12. package/dist/SourceSelector.d.ts +3 -0
  13. package/dist/SourceSelector.js +97 -0
  14. package/dist/atomic/Blinker/Blinker.cjs +1 -0
  15. package/dist/atomic/Blinker/Blinker.d.ts +2 -2
  16. package/dist/atomic/Blinker/Blinker.js +68 -0
  17. package/dist/atomic/Blinker/Controls/Controls.cjs +1 -0
  18. package/dist/atomic/Blinker/Controls/Controls.js +58 -0
  19. package/dist/atomic/Blinker/Controls/styles.cjs +13 -0
  20. package/dist/atomic/Blinker/Controls/styles.d.ts +2 -1
  21. package/dist/atomic/Blinker/Controls/styles.js +17 -0
  22. package/dist/atomic/Blinker/Image/Image.cjs +1 -0
  23. package/dist/atomic/Blinker/Image/Image.d.ts +2 -2
  24. package/dist/atomic/Blinker/Image/Image.js +23 -0
  25. package/dist/atomic/Blinker/Image/styles.cjs +22 -0
  26. package/dist/atomic/Blinker/Image/styles.d.ts +4 -3
  27. package/dist/atomic/Blinker/Image/styles.js +26 -0
  28. package/dist/atomic/Blinker/Images/Images.cjs +1 -0
  29. package/dist/atomic/Blinker/Images/Images.js +37 -0
  30. package/dist/atomic/Blinker/Images/styles.cjs +15 -0
  31. package/dist/atomic/Blinker/Images/styles.d.ts +5 -4
  32. package/dist/atomic/Blinker/Images/styles.js +20 -0
  33. package/dist/atomic/Blinker/_mocks/index.d.ts +2 -0
  34. package/dist/atomic/Blinker/styles.cjs +26 -0
  35. package/dist/atomic/Blinker/styles.d.ts +7 -9
  36. package/dist/atomic/Blinker/styles.js +34 -0
  37. package/dist/atomic/ElapsedTime/ElapsedTime.cjs +1 -0
  38. package/dist/atomic/ElapsedTime/ElapsedTime.js +34 -0
  39. package/dist/atomic/ElapsedTime/styles.cjs +40 -0
  40. package/dist/atomic/ElapsedTime/styles.d.ts +7 -6
  41. package/dist/atomic/ElapsedTime/styles.js +49 -0
  42. package/dist/atomic/PlaybackControl/PlaybackControl.cjs +1 -0
  43. package/dist/atomic/PlaybackControl/PlaybackControl.d.ts +1 -1
  44. package/dist/atomic/PlaybackControl/PlaybackControl.js +17 -0
  45. package/dist/atomic/PlaybackControl/styles.cjs +39 -0
  46. package/dist/atomic/PlaybackControl/styles.d.ts +3 -2
  47. package/dist/atomic/PlaybackControl/styles.js +44 -0
  48. package/dist/hooks/useInterval.cjs +1 -0
  49. package/dist/hooks/useInterval.js +18 -0
  50. package/dist/lib/utils.cjs +1 -0
  51. package/dist/lib/utils.js +18 -0
  52. package/dist/lib/utils.test.d.ts +1 -0
  53. package/dist/localeStrings/en/epo-widget-lib.json +77 -0
  54. package/dist/localeStrings/es/epo-widget-lib.json +33 -0
  55. package/dist/styles/svg.cjs +8 -0
  56. package/dist/styles/svg.d.ts +2 -1
  57. package/dist/styles/svg.js +12 -0
  58. package/dist/widgets/CameraFilter/CondensedFilterRanges/CondensedFilterRanges.cjs +1 -0
  59. package/dist/widgets/CameraFilter/CondensedFilterRanges/CondensedFilterRanges.js +61 -0
  60. package/dist/widgets/CameraFilter/SpectrumDisplay/ColorLabels/ColorLabels.cjs +1 -0
  61. package/dist/widgets/CameraFilter/SpectrumDisplay/ColorLabels/ColorLabels.js +95 -0
  62. package/dist/widgets/CameraFilter/SpectrumDisplay/SpectrumDisplay.cjs +1 -0
  63. package/dist/widgets/CameraFilter/SpectrumDisplay/SpectrumDisplay.js +98 -0
  64. package/dist/widgets/CameraFilter/SpectrumDisplay/SpectrumLabels/SpectrumLabels.cjs +1 -0
  65. package/dist/widgets/CameraFilter/SpectrumDisplay/SpectrumLabels/SpectrumLabels.js +58 -0
  66. package/dist/widgets/CameraFilter/data.cjs +1 -0
  67. package/dist/widgets/CameraFilter/data.js +85 -0
  68. package/dist/widgets/CameraFilter/styles.cjs +64 -0
  69. package/dist/widgets/CameraFilter/styles.d.ts +19 -18
  70. package/dist/widgets/CameraFilter/styles.js +82 -0
  71. package/dist/widgets/ColorTool/ColorTool.d.ts +1 -2
  72. package/dist/widgets/ColorTool/FilterControls/FilterControls.cjs +1 -0
  73. package/dist/widgets/ColorTool/FilterControls/FilterControls.d.ts +1 -1
  74. package/dist/widgets/ColorTool/FilterControls/FilterControls.js +63 -0
  75. package/dist/widgets/ColorTool/FilterImage/FilterImage.cjs +1 -0
  76. package/dist/widgets/ColorTool/FilterImage/FilterImage.js +41 -0
  77. package/dist/widgets/ColorTool/ImageComposite/ImageComposite.cjs +1 -0
  78. package/dist/widgets/ColorTool/ImageComposite/ImageComposite.js +33 -0
  79. package/dist/widgets/ColorTool/styles.cjs +129 -0
  80. package/dist/widgets/ColorTool/styles.d.ts +21 -21
  81. package/dist/widgets/ColorTool/styles.js +149 -0
  82. package/dist/widgets/ColorTool/utilities.cjs +1 -0
  83. package/dist/widgets/ColorTool/utilities.js +38 -0
  84. package/dist/widgets/FilterTool/FilterTool.d.ts +3 -1
  85. package/dist/widgets/FilterTool/styles.cjs +36 -0
  86. package/dist/widgets/FilterTool/styles.d.ts +10 -15
  87. package/dist/widgets/FilterTool/styles.js +49 -0
  88. package/dist/widgets/SourceSelector/Message/Message.cjs +1 -0
  89. package/dist/widgets/SourceSelector/Message/Message.js +21 -0
  90. package/dist/widgets/SourceSelector/Message/styles.cjs +23 -0
  91. package/dist/widgets/SourceSelector/Message/styles.d.ts +5 -0
  92. package/dist/widgets/SourceSelector/Message/styles.js +28 -0
  93. package/dist/widgets/SourceSelector/Point/Point.cjs +1 -0
  94. package/dist/widgets/SourceSelector/Point/Point.js +45 -0
  95. package/dist/widgets/SourceSelector/Point/styles.cjs +11 -0
  96. package/dist/widgets/SourceSelector/Point/styles.d.ts +4 -3
  97. package/dist/widgets/SourceSelector/Point/styles.js +15 -0
  98. package/dist/widgets/SourceSelector/Points/Points.cjs +1 -0
  99. package/dist/widgets/SourceSelector/Points/Points.js +35 -0
  100. package/dist/widgets/SourceSelector/SourceSelector.d.ts +2 -2
  101. package/dist/widgets/SourceSelector/mocks/index.d.ts +7 -0
  102. package/dist/widgets/SourceSelector/styles.cjs +20 -0
  103. package/dist/widgets/SourceSelector/styles.d.ts +9 -7
  104. package/dist/widgets/SourceSelector/styles.js +30 -0
  105. package/dist/widgets/SourceSelector/utilities.cjs +1 -0
  106. package/dist/widgets/SourceSelector/utilities.js +7 -0
  107. package/dist/widgets/SourceSelector/utilities.test.d.ts +1 -0
  108. package/package.json +12 -11
  109. package/dist/assets/locales/index.d.ts +0 -115
  110. package/dist/epo-widget-lib.es.js +0 -3427
  111. package/dist/epo-widget-lib.umd.js +0 -459
  112. package/dist/index.d.ts +0 -6
  113. package/dist/types/astro.d.ts +0 -35
  114. 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 { Image } from "@rubin-epo/epo-react-lib/dist/types/image";
2
+ import { ImageShape } from "@rubin-epo/epo-react-lib";
3
3
  export interface BlinkerProps {
4
- images: Image[];
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
- export declare const ControlsContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
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 { Image } from "@rubin-epo/epo-react-lib/dist/types/image";
1
+ import { ImageShape } from "@rubin-epo/epo-react-lib";
2
2
  import { FunctionComponent } from "react";
3
3
  interface ImageProps {
4
- image: 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
- export declare const BlinkerImage: import("styled-components").StyledComponent<"img", any, {
2
- active: boolean;
3
- }, never>;
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
- export declare const BlinkContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
2
- export declare const LoadingContainer: import("styled-components").StyledComponent<"div", any, {
3
- isLoading: boolean;
4
- }, never>;
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,2 @@
1
+ import { ImageShape } from "@rubin-epo/epo-react-lib";
2
+ export declare const mockImages: ImageShape[];
@@ -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").StyledComponent<"div", any, {
3
- isCondensed: boolean;
4
- }, never>;
5
- export declare const BlinkerControls: import("styled-components").StyledComponent<import("react").FunctionComponent<import("./Controls/Controls").ControlsProps>, any, {
6
- isCondensed: boolean;
7
- }, never>;
8
- export declare const BlinkerImages: import("styled-components").StyledComponent<import("react").FunctionComponent<import("./Images/Images").ImagesProps>, any, {
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
- export declare const ElapsedTimeContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
2
- export declare const Header: import("styled-components").StyledComponent<"h2", any, {}, never>;
3
- export declare const Time: import("styled-components").StyledComponent<"time", any, {}, never>;
4
- export declare const Interval: import("styled-components").StyledComponent<"div", any, {}, never>;
5
- export declare const Number: import("styled-components").StyledComponent<"span", any, {}, never>;
6
- export declare const Step: import("styled-components").StyledComponent<"span", any, {}, never>;
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>>;