@rubin-epo/epo-widget-lib 0.2.0 → 0.4.0

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 -3
  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 +10 -10
  109. package/dist/assets/locales/index.d.ts +0 -115
  110. package/dist/epo-widget-lib.es.js +0 -3434
  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,58 @@
1
+ import { jsx as l, jsxs as h } from "react/jsx-runtime";
2
+ import { useTranslation as x } from "react-i18next";
3
+ import { SpectrumLabel as S } from "../../styles.js";
4
+ import { intersection as _ } from "../../../../lib/utils.js";
5
+ import j from "../ColorLabels/ColorLabels.js";
6
+ const n = ({
7
+ spectrums: c,
8
+ activeBand: e,
9
+ min: p,
10
+ max: d,
11
+ activeMin: s = 0,
12
+ activeMax: i = 0,
13
+ isCondensed: f
14
+ }) => {
15
+ const { t: a } = x(), u = a("camera_filter.labels.captured_range", {
16
+ context: e ? "" : "no_filter",
17
+ filter: e
18
+ });
19
+ return /* @__PURE__ */ l(
20
+ "g",
21
+ {
22
+ role: "list",
23
+ "aria-label": u,
24
+ "aria-live": "polite",
25
+ "data-testid": "spectrum-labels",
26
+ children: c.map(({ name: r, upper: b, lower: L, colors: o }) => {
27
+ const m = b || d, t = L || p, g = e && _([t, m], [s, i]) === null;
28
+ return /* @__PURE__ */ h("g", { role: "listitem", "aria-hidden": g, children: [
29
+ /* @__PURE__ */ l(
30
+ S,
31
+ {
32
+ x: (m - t) / 2 + t,
33
+ y: "25%",
34
+ dominantBaseline: "middle",
35
+ textAnchor: "middle",
36
+ children: a(`camera_filter.labels.${r}`)
37
+ },
38
+ r
39
+ ),
40
+ o && /* @__PURE__ */ l(
41
+ j,
42
+ {
43
+ colors: o,
44
+ isBandSelected: !!e,
45
+ activeRange: [s, i],
46
+ isCondensed: f
47
+ }
48
+ )
49
+ ] }, r);
50
+ })
51
+ }
52
+ );
53
+ };
54
+ n.displayName = "Widgets.CameraFilter.SpectrumLabels";
55
+ const F = n;
56
+ export {
57
+ F as default
58
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=[{band:"u",range:[338,395]},{range:[396,404]},{band:"g",range:[405,552]},{band:"r",range:[553,690]},{band:"i",range:[690,817]},{band:"z",range:[818,920]},{band:"y",range:[920,1010]}],r=[{offset:0,stopColor:"#e0e0e0"},{offset:.262,stopColor:"#dedde0"},{offset:.41,stopColor:"#dbd5e1"},{offset:.53,stopColor:"#d4c7e3"},{offset:.635,stopColor:"#cbb3e6"},{offset:.73,stopColor:"#bf9aeb"},{offset:.818,stopColor:"#b17af0"},{offset:.9,stopColor:"#a055f5"},{offset:.976,stopColor:"#8c2afc"},{offset:1,stopColor:"#861cff"}],l=[{offset:0,stopColor:"#861cff"},{offset:.253,stopColor:"blue"},{offset:.266,stopColor:"#001ee0"},{offset:.302,stopColor:"#006d91"},{offset:.334,stopColor:"#00ab53"},{offset:.361,stopColor:"#00d826"},{offset:.382,stopColor:"#00f40a"},{offset:.394,stopColor:"lime"},{offset:.409,stopColor:"#05fe00"},{offset:.427,stopColor:"#14fc01"},{offset:.447,stopColor:"#2df803"},{offset:.468,stopColor:"#50f406"},{offset:.49,stopColor:"#7cee0a"},{offset:.513,stopColor:"#b3e70e"},{offset:.536,stopColor:"#f2de14"},{offset:.54,stopColor:"#ffdd15"},{offset:.559,stopColor:"#fccb17"},{offset:.598,stopColor:"#f49f1e"},{offset:.615,stopColor:"#f18922"},{offset:.634,stopColor:"#f08220"},{offset:.66,stopColor:"#f0711c"},{offset:.69,stopColor:"#ef5415"},{offset:.723,stopColor:"#ed2d0b"},{offset:.755,stopColor:"#ec0000"}],n=[{offset:0,stopColor:"#ec0000"},{offset:.387,stopColor:"#ea0e0e"},{offset:.526,stopColor:"#e53737"},{offset:.625,stopColor:"#e15d5d"},{offset:.705,stopColor:"#dd7d7d"},{offset:.774,stopColor:"#da9898"},{offset:.835,stopColor:"#d8aeae"},{offset:.89,stopColor:"#d6bfbf"},{offset:.941,stopColor:"#d4cbcb"},{offset:.986,stopColor:"#d4d2d2"},{offset:1,stopColor:"#d4d4d4"}],t=[{name:"violet",color:"#861CFF",range:[380,450]},{name:"blue",color:"#0000FF",range:[450,495]},{name:"green",color:"#00FF00",range:[495,570]},{name:"yellow",color:"#FFDD15",range:[570,590]},{name:"orange",color:"#F18922",range:[590,620]},{name:"red",color:"#EC0000",range:[620,750]}],a=[{name:"ultraviolet",upper:400,stops:r},{name:"visible",upper:750,lower:400,stops:l,colors:t},{name:"infrared",lower:750,stops:n}],e=255,f=322,o=1084,p={condensed:{min:f,max:o,range:o-f},default:{min:e,max:o,range:o-e}};exports.colors=t;exports.filters=s;exports.rangeConfig=p;exports.spectrums=a;
@@ -0,0 +1,85 @@
1
+ const n = [
2
+ { band: "u", range: [338, 395] },
3
+ { range: [396, 404] },
4
+ { band: "g", range: [405, 552] },
5
+ { band: "r", range: [553, 690] },
6
+ { band: "i", range: [690, 817] },
7
+ { band: "z", range: [818, 920] },
8
+ { band: "y", range: [920, 1010] }
9
+ ], s = [
10
+ { offset: 0, stopColor: "#e0e0e0" },
11
+ { offset: 0.262, stopColor: "#dedde0" },
12
+ { offset: 0.41, stopColor: "#dbd5e1" },
13
+ { offset: 0.53, stopColor: "#d4c7e3" },
14
+ { offset: 0.635, stopColor: "#cbb3e6" },
15
+ { offset: 0.73, stopColor: "#bf9aeb" },
16
+ { offset: 0.818, stopColor: "#b17af0" },
17
+ { offset: 0.9, stopColor: "#a055f5" },
18
+ { offset: 0.976, stopColor: "#8c2afc" },
19
+ { offset: 1, stopColor: "#861cff" }
20
+ ], t = [
21
+ { offset: 0, stopColor: "#861cff" },
22
+ { offset: 0.253, stopColor: "blue" },
23
+ { offset: 0.266, stopColor: "#001ee0" },
24
+ { offset: 0.302, stopColor: "#006d91" },
25
+ { offset: 0.334, stopColor: "#00ab53" },
26
+ { offset: 0.361, stopColor: "#00d826" },
27
+ { offset: 0.382, stopColor: "#00f40a" },
28
+ { offset: 0.394, stopColor: "lime" },
29
+ { offset: 0.409, stopColor: "#05fe00" },
30
+ { offset: 0.427, stopColor: "#14fc01" },
31
+ { offset: 0.447, stopColor: "#2df803" },
32
+ { offset: 0.468, stopColor: "#50f406" },
33
+ { offset: 0.49, stopColor: "#7cee0a" },
34
+ { offset: 0.513, stopColor: "#b3e70e" },
35
+ { offset: 0.536, stopColor: "#f2de14" },
36
+ { offset: 0.54, stopColor: "#ffdd15" },
37
+ { offset: 0.559, stopColor: "#fccb17" },
38
+ { offset: 0.598, stopColor: "#f49f1e" },
39
+ { offset: 0.615, stopColor: "#f18922" },
40
+ { offset: 0.634, stopColor: "#f08220" },
41
+ { offset: 0.66, stopColor: "#f0711c" },
42
+ { offset: 0.69, stopColor: "#ef5415" },
43
+ { offset: 0.723, stopColor: "#ed2d0b" },
44
+ { offset: 0.755, stopColor: "#ec0000" }
45
+ ], r = [
46
+ { offset: 0, stopColor: "#ec0000" },
47
+ { offset: 0.387, stopColor: "#ea0e0e" },
48
+ { offset: 0.526, stopColor: "#e53737" },
49
+ { offset: 0.625, stopColor: "#e15d5d" },
50
+ { offset: 0.705, stopColor: "#dd7d7d" },
51
+ { offset: 0.774, stopColor: "#da9898" },
52
+ { offset: 0.835, stopColor: "#d8aeae" },
53
+ { offset: 0.89, stopColor: "#d6bfbf" },
54
+ { offset: 0.941, stopColor: "#d4cbcb" },
55
+ { offset: 0.986, stopColor: "#d4d2d2" },
56
+ { offset: 1, stopColor: "#d4d4d4" }
57
+ ], l = [
58
+ { name: "violet", color: "#861CFF", range: [380, 450] },
59
+ { name: "blue", color: "#0000FF", range: [450, 495] },
60
+ { name: "green", color: "#00FF00", range: [495, 570] },
61
+ { name: "yellow", color: "#FFDD15", range: [570, 590] },
62
+ { name: "orange", color: "#F18922", range: [590, 620] },
63
+ { name: "red", color: "#EC0000", range: [620, 750] }
64
+ ], p = [
65
+ { name: "ultraviolet", upper: 400, stops: s },
66
+ { name: "visible", upper: 750, lower: 400, stops: t, colors: l },
67
+ { name: "infrared", lower: 750, stops: r }
68
+ ], e = 255, f = 322, o = 1084, a = {
69
+ condensed: {
70
+ min: f,
71
+ max: o,
72
+ range: o - f
73
+ },
74
+ default: {
75
+ min: e,
76
+ max: o,
77
+ range: o - e
78
+ }
79
+ };
80
+ export {
81
+ l as colors,
82
+ n as filters,
83
+ a as rangeConfig,
84
+ p as spectrums
85
+ };
@@ -0,0 +1,64 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("styled-components"),o=t=>t&&t.__esModule?t:{default:t},e=o(l),a=e.default.div`
2
+ display: grid;
3
+ grid-template-columns: 1fr;
4
+ grid-auto-rows: min-content;
5
+ text-align: center;
6
+ position: relative;
7
+ `,i=e.default.table`
8
+ border-collapse: collapse;
9
+ text-align: center;
10
+ ${({range:t,offset:n})=>l.css`
11
+ margin-left: ${n.toFixed(2)}%;
12
+ width: ${t.toFixed(2)}%;
13
+ `}
14
+ `,s=e.default.tbody`
15
+ display: table-header-group;
16
+ `,r=e.default.thead`
17
+ display: table-row-group;
18
+ `,d=e.default.td`
19
+ line-height: 1.2;
20
+ font-size: 80%;
21
+ `,c=e.default.span`
22
+ font-size: 80%;
23
+ `,f=e.default.th`
24
+ font-size: 120%;
25
+ font-weight: var(--FONT_WEIGHT_NORMAL, 400);
26
+
27
+ ${({band:t,$isCondensed:n})=>l.css`
28
+ border: ${t?"solid #b2b2b2":"none"};
29
+ border-width: ${n?"1px":"3px"};
30
+ `};
31
+ `,u=e.default.div`
32
+ min-width: 20ch;
33
+ width: 50%;
34
+ max-width: 30ch;
35
+ margin-block-start: 1em;
36
+ justify-self: center;
37
+ text-align: left;
38
+ `,g=e.default.label`
39
+ font-size: 0.75em;
40
+ `,p=e.default.text`
41
+ font-size: 0.75em;
42
+ `,m=e.default.tspan`
43
+ font-size: 0.75em;
44
+ `,b=e.default.tspan`
45
+ font-size: 0.5em;
46
+ `,h=e.default.tspan`
47
+ font-size: 0.4em;
48
+ `,y=e.default.ul`
49
+ display: flex;
50
+ justify-content: space-between;
51
+ line-height: 1.2;
52
+ font-size: 80%;
53
+ margin: 0;
54
+ padding: 0;
55
+ list-style-type: none;
56
+ `,F=e.default.li`
57
+ list-style-type: none;
58
+ margin: 0;
59
+ padding: 0;
60
+
61
+ &:before {
62
+ content: "\200B";
63
+ }
64
+ `;exports.ColorName=m;exports.ColorSpectrum=b;exports.ColorSpectrumUnit=h;exports.CondensedRange=F;exports.CondensedRangeRow=y;exports.FilterContainer=a;exports.FilterName=f;exports.FilterNames=r;exports.FilterRange=d;exports.FilterRanges=s;exports.FilterTable=i;exports.SelectContainer=u;exports.SelectLabel=g;exports.SpectrumLabel=p;exports.Wavelength=c;
@@ -1,22 +1,23 @@
1
+ /// <reference types="react" />
1
2
  import { Band } from '../../types/astro';
2
- export declare const FilterContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
3
- export declare const FilterTable: import("styled-components").StyledComponent<"table", any, {
3
+ export declare const FilterContainer: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
4
+ export declare const FilterTable: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").TableHTMLAttributes<HTMLTableElement>, HTMLTableElement>, {
4
5
  range: number;
5
6
  offset: number;
6
- }, never>;
7
- export declare const FilterRanges: import("styled-components").StyledComponent<"tbody", any, {}, never>;
8
- export declare const FilterNames: import("styled-components").StyledComponent<"thead", any, {}, never>;
9
- export declare const FilterRange: import("styled-components").StyledComponent<"td", any, {}, never>;
10
- export declare const Wavelength: import("styled-components").StyledComponent<"span", any, {}, never>;
11
- export declare const FilterName: import("styled-components").StyledComponent<"th", any, {
7
+ }>>;
8
+ export declare const FilterRanges: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement>, never>>;
9
+ export declare const FilterNames: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLTableSectionElement>, HTMLTableSectionElement>, never>>;
10
+ export declare const FilterRange: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement>, never>>;
11
+ export declare const Wavelength: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>>;
12
+ export declare const FilterName: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").ThHTMLAttributes<HTMLTableHeaderCellElement>, HTMLTableHeaderCellElement>, {
12
13
  band?: Band | undefined;
13
- isCondensed: boolean;
14
- }, never>;
15
- export declare const SelectContainer: import("styled-components").StyledComponent<"div", any, {}, never>;
16
- export declare const SelectLabel: import("styled-components").StyledComponent<"label", any, {}, never>;
17
- export declare const SpectrumLabel: import("styled-components").StyledComponent<"text", any, {}, never>;
18
- export declare const ColorName: import("styled-components").StyledComponent<"tspan", any, {}, never>;
19
- export declare const ColorSpectrum: import("styled-components").StyledComponent<"tspan", any, {}, never>;
20
- export declare const ColorSpectrumUnit: import("styled-components").StyledComponent<"tspan", any, {}, never>;
21
- export declare const CondensedRangeRow: import("styled-components").StyledComponent<"ul", any, {}, never>;
22
- export declare const CondensedRange: import("styled-components").StyledComponent<"li", any, {}, never>;
14
+ $isCondensed: boolean;
15
+ }>>;
16
+ export declare const SelectContainer: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
17
+ export declare const SelectLabel: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, never>>;
18
+ export declare const SpectrumLabel: import("styled-components").IStyledComponent<"web", Omit<import("react").SVGTextElementAttributes<SVGTextElement>, never>>;
19
+ export declare const ColorName: import("styled-components").IStyledComponent<"web", Omit<import("react").SVGProps<SVGTSpanElement>, never>>;
20
+ export declare const ColorSpectrum: import("styled-components").IStyledComponent<"web", Omit<import("react").SVGProps<SVGTSpanElement>, never>>;
21
+ export declare const ColorSpectrumUnit: import("styled-components").IStyledComponent<"web", Omit<import("react").SVGProps<SVGTSpanElement>, never>>;
22
+ export declare const CondensedRangeRow: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>>;
23
+ export declare const CondensedRange: import("styled-components").IStyledComponent<"web", Omit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, never>>;
@@ -0,0 +1,82 @@
1
+ import e, { css as o } from "styled-components";
2
+ const s = e.div`
3
+ display: grid;
4
+ grid-template-columns: 1fr;
5
+ grid-auto-rows: min-content;
6
+ text-align: center;
7
+ position: relative;
8
+ `, l = e.table`
9
+ border-collapse: collapse;
10
+ text-align: center;
11
+ ${({ range: t, offset: n }) => o`
12
+ margin-left: ${n.toFixed(2)}%;
13
+ width: ${t.toFixed(2)}%;
14
+ `}
15
+ `, a = e.tbody`
16
+ display: table-header-group;
17
+ `, r = e.thead`
18
+ display: table-row-group;
19
+ `, c = e.td`
20
+ line-height: 1.2;
21
+ font-size: 80%;
22
+ `, d = e.span`
23
+ font-size: 80%;
24
+ `, p = e.th`
25
+ font-size: 120%;
26
+ font-weight: var(--FONT_WEIGHT_NORMAL, 400);
27
+
28
+ ${({ band: t, $isCondensed: n }) => o`
29
+ border: ${t ? "solid #b2b2b2" : "none"};
30
+ border-width: ${n ? "1px" : "3px"};
31
+ `};
32
+ `, m = e.div`
33
+ min-width: 20ch;
34
+ width: 50%;
35
+ max-width: 30ch;
36
+ margin-block-start: 1em;
37
+ justify-self: center;
38
+ text-align: left;
39
+ `, g = e.label`
40
+ font-size: 0.75em;
41
+ `, f = e.text`
42
+ font-size: 0.75em;
43
+ `, b = e.tspan`
44
+ font-size: 0.75em;
45
+ `, h = e.tspan`
46
+ font-size: 0.5em;
47
+ `, y = e.tspan`
48
+ font-size: 0.4em;
49
+ `, x = e.ul`
50
+ display: flex;
51
+ justify-content: space-between;
52
+ line-height: 1.2;
53
+ font-size: 80%;
54
+ margin: 0;
55
+ padding: 0;
56
+ list-style-type: none;
57
+ `, u = e.li`
58
+ list-style-type: none;
59
+ margin: 0;
60
+ padding: 0;
61
+
62
+ &:before {
63
+ content: "\200B";
64
+ }
65
+ `;
66
+ export {
67
+ b as ColorName,
68
+ h as ColorSpectrum,
69
+ y as ColorSpectrumUnit,
70
+ u as CondensedRange,
71
+ x as CondensedRangeRow,
72
+ s as FilterContainer,
73
+ p as FilterName,
74
+ r as FilterNames,
75
+ c as FilterRange,
76
+ a as FilterRanges,
77
+ l as FilterTable,
78
+ m as SelectContainer,
79
+ g as SelectLabel,
80
+ f as SpectrumLabel,
81
+ d as Wavelength
82
+ };
@@ -1,6 +1,5 @@
1
1
  import { FunctionComponent } from "react";
2
- import { Option } from "@rubin-epo/epo-react-lib/dist/types/select";
3
- import { ListboxOption } from "@rubin-epo/epo-react-lib/dist/types/select-listbox";
2
+ import { Option, ListboxOption } from "@rubin-epo/epo-react-lib";
4
3
  export interface ImageFilter {
5
4
  label: string;
6
5
  defaultColor?: string;
@@ -27,7 +26,6 @@ interface ColorToolProps {
27
26
  selectionCallback: (selectedData: AstroObject) => void;
28
27
  data: AstroCategory[];
29
28
  selectedData: AstroObject;
30
- title?: string;
31
29
  objectOptions?: Option[];
32
30
  colorOptions?: ListboxOption[];
33
31
  isDisabled?: boolean;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),q=require("@rubin-epo/epo-react-lib/SelectListbox"),S=require("../utilities.cjs"),T=require("react-i18next"),c=require("../styles.cjs"),f=e=>e&&e.__esModule?e:{default:e},B=f(q),a=({filter:e,colorOptions:d,isDisabled:n,onChangeFilterCallback:t,buttonLabelledById:u,selectLabelledById:x,sliderLabelledById:h})=>{const{t:m}=T.useTranslation(),{label:i,color:r="",value:b,active:l,min:g,max:_}=e,v=()=>t&&t({...e,active:!l}),j=s=>s&&t&&t({...e,color:s}),y=s=>t&&t({...e,brightness:S.getBrightnessValue(g,_,s),value:s}),p=m("colorTool.actions.select_filter");return o.jsxs(o.Fragment,{children:[o.jsx(c.FilterToggleButton,{disabled:n,onClick:v,$active:l,"aria-labelledby":u,children:i}),o.jsx(B.default,{isDisabled:n,placeholder:p,value:r,options:d,onChangeCallback:j,width:"100%",maxWidth:"100%",labelledById:x}),o.jsx(c.Slider,{min:1,max:100,onChangeCallback:y,isDisabled:!l,labelledbyId:h,value:b,label:i,color:r})]})};a.displayName="Widgets.ColorTool.FilterControls";const I=a;exports.default=I;
@@ -1,4 +1,4 @@
1
- import { ListboxOption } from "@rubin-epo/epo-react-lib/dist/types/select-listbox";
1
+ import { ListboxOption } from "@rubin-epo/epo-react-lib";
2
2
  import { FunctionComponent } from "react";
3
3
  import { ImageFilter } from "../ColorTool";
4
4
  interface FilterControlProps {
@@ -0,0 +1,63 @@
1
+ import { jsxs as B, Fragment as T, jsx as s } from "react/jsx-runtime";
2
+ import I from "@rubin-epo/epo-react-lib/SelectListbox";
3
+ import { getBrightnessValue as j } from "../utilities.js";
4
+ import { useTranslation as S } from "react-i18next";
5
+ import { FilterToggleButton as W, Slider as $ } from "../styles.js";
6
+ const a = ({
7
+ filter: t,
8
+ colorOptions: d,
9
+ isDisabled: r,
10
+ onChangeFilterCallback: o,
11
+ buttonLabelledById: c,
12
+ selectLabelledById: m,
13
+ sliderLabelledById: h
14
+ }) => {
15
+ const { t: p } = S(), { label: i, color: n = "", value: g, active: l, min: u, max: x } = t, b = () => o && o({ ...t, active: !l }), v = (e) => e && o && o({ ...t, color: e }), f = (e) => o && o({
16
+ ...t,
17
+ brightness: j(u, x, e),
18
+ value: e
19
+ }), y = p("colorTool.actions.select_filter");
20
+ return /* @__PURE__ */ B(T, { children: [
21
+ /* @__PURE__ */ s(
22
+ W,
23
+ {
24
+ disabled: r,
25
+ onClick: b,
26
+ $active: l,
27
+ "aria-labelledby": c,
28
+ children: i
29
+ }
30
+ ),
31
+ /* @__PURE__ */ s(
32
+ I,
33
+ {
34
+ isDisabled: r,
35
+ placeholder: y,
36
+ value: n,
37
+ options: d,
38
+ onChangeCallback: v,
39
+ width: "100%",
40
+ maxWidth: "100%",
41
+ labelledById: m
42
+ }
43
+ ),
44
+ /* @__PURE__ */ s(
45
+ $,
46
+ {
47
+ min: 1,
48
+ max: 100,
49
+ onChangeCallback: f,
50
+ isDisabled: !l,
51
+ labelledbyId: h,
52
+ value: g,
53
+ label: i,
54
+ color: n
55
+ }
56
+ )
57
+ ] });
58
+ };
59
+ a.displayName = "Widgets.ColorTool.FilterControls";
60
+ const V = a;
61
+ export {
62
+ V as default
63
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const b=require("react/jsx-runtime"),u=require("react"),d=({width:g=600,height:p=600,className:f,image:l,color:c="transparent",brightness:m=1})=>{const i=u.useRef(null),r=new Image,v=(t,s,e,a)=>{t.fillStyle=s,t.fillRect(0,0,e,a)},C=(t,s)=>{var a;const e=(a=i.current)==null?void 0:a.getContext("2d");if(e){const S=CSS.supports&&CSS.supports("background-color",s)?s:"transparent",{width:n,height:o}=e.canvas;e.clearRect(0,0,n,o),e.globalCompositeOperation="multiply",r.onload=()=>{e==null||e.drawImage(r,0,0,n,o),v(e,S,n,o)},r.src=t}};return u.useEffect(()=>{C(l,c)},[c,l]),b.jsx("canvas",{ref:i,style:{filter:`brightness(${m}) contrast(1.3)`},role:"img",className:f,width:g,height:p})};d.displayName="Widgets.ColorTool.FilterImage";const h=d;exports.default=h;
@@ -0,0 +1,41 @@
1
+ import { jsx as v } from "react/jsx-runtime";
2
+ import { useRef as I, useEffect as S } from "react";
3
+ const p = ({
4
+ width: f = 600,
5
+ height: g = 600,
6
+ className: u,
7
+ image: l,
8
+ color: c = "transparent",
9
+ brightness: d = 1
10
+ }) => {
11
+ const i = I(null), o = new Image(), m = (e, a, t, s) => {
12
+ e.fillStyle = a, e.fillRect(0, 0, t, s);
13
+ }, C = (e, a) => {
14
+ var s;
15
+ const t = (s = i.current) == null ? void 0 : s.getContext("2d");
16
+ if (t) {
17
+ const h = CSS.supports && CSS.supports("background-color", a) ? a : "transparent", { width: r, height: n } = t.canvas;
18
+ t.clearRect(0, 0, r, n), t.globalCompositeOperation = "multiply", o.onload = () => {
19
+ t == null || t.drawImage(o, 0, 0, r, n), m(t, h, r, n);
20
+ }, o.src = e;
21
+ }
22
+ };
23
+ return S(() => {
24
+ C(l, c);
25
+ }, [c, l]), /* @__PURE__ */ v(
26
+ "canvas",
27
+ {
28
+ ref: i,
29
+ style: { filter: `brightness(${d}) contrast(1.3)` },
30
+ role: "img",
31
+ className: u,
32
+ width: f,
33
+ height: g
34
+ }
35
+ );
36
+ };
37
+ p.displayName = "Widgets.ColorTool.FilterImage";
38
+ const R = p;
39
+ export {
40
+ R as default
41
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),c=require("../utilities.cjs"),i=require("../styles.cjs"),s=({filters:e})=>t.jsxs(i.ImageContainer,{children:[t.jsx(i.BackgroundImage,{alt:"",src:"data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=",$filtersActive:c.isFilterActive(e)}),e&&e.map(o=>{const{label:A,image:r,color:a,brightness:l,active:n}=o;return t.jsx(i.FilteredImage,{image:r,color:a,brightness:l,active:n},`filter-${A}`)})]});s.displayName="Widgets.ColorTool.ImageComposite";const m=s;exports.default=m;
@@ -0,0 +1,33 @@
1
+ import { jsxs as l, jsx as A } from "react/jsx-runtime";
2
+ import { isFilterActive as g } from "../utilities.js";
3
+ import { ImageContainer as c, BackgroundImage as n, FilteredImage as p } from "../styles.js";
4
+ const o = ({
5
+ filters: e
6
+ }) => /* @__PURE__ */ l(c, { children: [
7
+ /* @__PURE__ */ A(
8
+ n,
9
+ {
10
+ alt: "",
11
+ src: "data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=",
12
+ $filtersActive: g(e)
13
+ }
14
+ ),
15
+ e && e.map((t) => {
16
+ const { label: a, image: i, color: r, brightness: m, active: s } = t;
17
+ return /* @__PURE__ */ A(
18
+ p,
19
+ {
20
+ image: i,
21
+ color: r,
22
+ brightness: m,
23
+ active: s
24
+ },
25
+ `filter-${a}`
26
+ );
27
+ })
28
+ ] });
29
+ o.displayName = "Widgets.ColorTool.ImageComposite";
30
+ const f = o;
31
+ export {
32
+ f as default
33
+ };
@@ -0,0 +1,129 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("styled-components"),r=require("@rubin-epo/epo-react-lib/Button"),l=require("@rubin-epo/epo-react-lib/HorizontalSlider"),d=require("./FilterImage/FilterImage.cjs"),o=e=>e&&e.__esModule?e:{default:e},t=o(i),a=o(r),s=o(l),c=t.default.section`
2
+ display: grid;
3
+ gap: var(--PADDING_SMALL, 20px);
4
+
5
+ ${({$isCondensed:e,$hideControls:n})=>e?i.css`
6
+ grid-template-areas:
7
+ "title"
8
+ "subtitle"
9
+ "image"
10
+ "caption"
11
+ "controls"
12
+ "reset";
13
+ `:i.css`
14
+ grid-template-areas:
15
+ "title title"
16
+ "subtitle subtitle"
17
+ ${n?"'image image'":"'controls image'"}
18
+ "reset reset"
19
+ "caption caption";
20
+ `}
21
+ `;t.default.h2`
22
+ grid-area: title;
23
+ margin: 0;
24
+ `;const u=t.default.dl`
25
+ grid-area: subtitle;
26
+ margin: 0;
27
+ font-size: 18px;
28
+ font-weight: var(--FONT_WEIGHT_NORMAL, 400);
29
+
30
+ > dt,
31
+ dd {
32
+ margin: 0;
33
+ white-space: nowrap;
34
+ }
35
+
36
+ > dt {
37
+ display: inline-block;
38
+ }
39
+
40
+ > dd {
41
+ display: inline;
42
+ margin-left: 1ch;
43
+
44
+ &::after {
45
+ content: "\\A";
46
+ white-space: pre;
47
+ }
48
+ }
49
+ `,g=t.default.div`
50
+ display: grid;
51
+ grid-template-columns: max-content minmax(100px, 1fr) minmax(100px, 2fr);
52
+ grid-auto-rows: max-content;
53
+ grid-area: controls;
54
+ gap: 10px;
55
+ align-items: center;
56
+ `,f=t.default(s.default)`
57
+ padding: 0;
58
+ width: 100%;
59
+ `,p=t.default.div`
60
+ position: relative;
61
+ aspect-ratio: 1 / 1;
62
+ grid-area: image;
63
+ background-color: rgba(0, 0, 0, 0.1);
64
+ `,m=t.default.img`
65
+ position: absolute;
66
+ top: 0;
67
+ right: 0;
68
+ bottom: 0;
69
+ left: 0;
70
+ display: ${({$filtersActive:e})=>e?"block":"none"};
71
+ width: 100%;
72
+ height: 100%;
73
+ `,b=t.default(d.default)`
74
+ user-select: none;
75
+ position: absolute;
76
+ top: 0;
77
+ right: 0;
78
+ bottom: 0;
79
+ left: 0;
80
+ width: 100%;
81
+ height: 100%;
82
+ mix-blend-mode: screen;
83
+
84
+ ${({active:e})=>e?i.css`
85
+ visibility: visible;
86
+ opacity: 1;
87
+ `:i.css`
88
+ visibility: hidden;
89
+ opacity: 0;
90
+ `}
91
+ `,h=t.default.div`
92
+ grid-column: span 3;
93
+ `,x=t.default.div`
94
+ font-weight: var(--FONT_WEIGHT_BOLD, 600);
95
+ `,v=t.default.footer`
96
+ grid-area: caption;
97
+ `,_=t.default(a.default)`
98
+ grid-area: reset;
99
+ text-align: left;
100
+
101
+ span {
102
+ text-align: left;
103
+ }
104
+ `,y=t.default(a.default)`
105
+ border-radius: 50%;
106
+ font-weight: var(--FONT_WEIGHT_MEDIUM, 500);
107
+ font-size: 22px;
108
+ text-transform: lowercase;
109
+ display: flex;
110
+ width: 38px;
111
+ height: 38px;
112
+ padding: 0;
113
+
114
+ ${({$active:e})=>e?i.css`
115
+ background-color: var(--turquoise85, #12726c);
116
+ &:not(:disabled):not([aria-disabled="true"]):hover {
117
+ outline: 1px solid var(--white, #fff);
118
+ outline-offset: -3px;
119
+ }
120
+ `:i.css`
121
+ background-color: #f7f7f7;
122
+ border-color: #6c6e6e;
123
+ color: #6c6e6e !important;
124
+ &:not(:disabled):not([aria-disabled="true"]):hover {
125
+ outline: 2px solid #6c6e6e;
126
+ outline-offset: -2px;
127
+ }
128
+ `}
129
+ `;exports.BackgroundImage=m;exports.Caption=v;exports.ControlsContainer=g;exports.FilterToggleButton=y;exports.FilteredImage=b;exports.ImageContainer=p;exports.ResetButton=_;exports.SelectionContainer=h;exports.Slider=f;exports.Subtitle=u;exports.ToolsHeader=x;exports.WidgetContainer=c;