@aics/vole-app 3.4.4 → 3.6.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.
- package/es/aics-image-viewer/components/App/index.js +15 -5
- package/es/aics-image-viewer/components/ChannelsWidget.js +3 -1
- package/es/aics-image-viewer/components/ChannelsWidgetRow.js +29 -16
- package/es/aics-image-viewer/components/ColorPicker/index.js +9 -1
- package/es/aics-image-viewer/components/ControlPanel/CopySettingsButton.js +445 -0
- package/es/aics-image-viewer/components/ControlPanel/index.js +16 -5
- package/es/aics-image-viewer/components/ControlPanel/styles.css +29 -2
- package/es/aics-image-viewer/components/StyleProvider/index.js +17 -2
- package/es/aics-image-viewer/components/Toolbar/ViewModeRadioButtons.js +1 -1
- package/es/aics-image-viewer/components/Toolbar/index.js +1 -1
- package/es/aics-image-viewer/components/Toolbar/styles.css +0 -10
- package/es/aics-image-viewer/components/{CellViewerCanvasWrapper → ViewerCanvasWrapper}/index.js +3 -2
- package/es/aics-image-viewer/components/dimension_sliders/AxisClipSliders.js +21 -8
- package/es/aics-image-viewer/components/dimension_sliders/RotationSliders.js +6 -8
- package/es/aics-image-viewer/components/dimension_sliders/SliderRows.js +8 -6
- package/es/aics-image-viewer/components/shared/ContextualAlert.js +101 -0
- package/es/aics-image-viewer/components/shared/ControlPanelRow/index.js +4 -2
- package/es/aics-image-viewer/components/shared/ControlPanelRow/styles.css +4 -3
- package/es/aics-image-viewer/components/useVolume.js +59 -25
- package/es/aics-image-viewer/shared/constants.js +25 -1
- package/es/aics-image-viewer/shared/types.js +1 -1
- package/es/aics-image-viewer/shared/utils/controlPointsToLut.js +4 -0
- package/es/aics-image-viewer/shared/utils/parseSnapshot.js +205 -0
- package/es/aics-image-viewer/shared/utils/{urlParsing.js → parseUrl.js} +55 -191
- package/es/aics-image-viewer/shared/utils/permissions.js +46 -0
- package/es/aics-image-viewer/shared/utils/test/camera.test.js +1 -2
- package/es/aics-image-viewer/shared/utils/test/{urlParsing.test.js → parseUrl.test.js} +28 -25
- package/es/aics-image-viewer/shared/utils/test/storage.test.js +2 -2
- package/es/aics-image-viewer/shared/utils/test/viewerChannelSettings.test.js +1 -1
- package/es/aics-image-viewer/state/deserialize.js +443 -331
- package/es/aics-image-viewer/state/reset.js +1 -1
- package/es/aics-image-viewer/state/serialize.js +168 -78
- package/es/aics-image-viewer/state/subscribers.js +1 -1
- package/es/aics-image-viewer/state/test/deserialize.test.js +63 -77
- package/es/aics-image-viewer/state/test/reset.test.js +2 -2
- package/es/aics-image-viewer/state/test/serialize.test.js +42 -43
- package/es/aics-image-viewer/state/test/test_data.js +119 -1
- package/es/aics-image-viewer/state/types.js +157 -245
- package/es/aics-image-viewer/state/util.js +39 -1
- package/es/index.js +4 -2
- package/package.json +26 -44
- package/type-declarations/aics-image-viewer/components/App/types.d.ts +3 -3
- package/type-declarations/aics-image-viewer/components/ChannelsWidget.d.ts +3 -0
- package/type-declarations/aics-image-viewer/components/ChannelsWidgetRow.d.ts +3 -0
- package/type-declarations/aics-image-viewer/components/ControlPanel/CopySettingsButton.d.ts +11 -0
- package/type-declarations/aics-image-viewer/components/Toolbar/ViewModeRadioButtons.d.ts +1 -1
- package/type-declarations/aics-image-viewer/components/{CellViewerCanvasWrapper → ViewerCanvasWrapper}/index.d.ts +4 -3
- package/type-declarations/aics-image-viewer/components/dimension_sliders/AxisClipSliders.d.ts +7 -6
- package/type-declarations/aics-image-viewer/components/dimension_sliders/SliderRows.d.ts +1 -2
- package/type-declarations/aics-image-viewer/components/shared/ContextualAlert.d.ts +29 -0
- package/type-declarations/aics-image-viewer/components/shared/ControlPanelRow/index.d.ts +1 -0
- package/type-declarations/aics-image-viewer/components/useVolume.d.ts +3 -0
- package/type-declarations/aics-image-viewer/shared/constants.d.ts +2 -2
- package/type-declarations/aics-image-viewer/shared/types.d.ts +2 -2
- package/type-declarations/aics-image-viewer/shared/utils/controlPointsToLut.d.ts +1 -1
- package/type-declarations/aics-image-viewer/shared/utils/parseSnapshot.d.ts +49 -0
- package/type-declarations/aics-image-viewer/shared/utils/{urlParsing.d.ts → parseUrl.d.ts} +3 -24
- package/type-declarations/aics-image-viewer/shared/utils/permissions.d.ts +7 -0
- package/type-declarations/aics-image-viewer/shared/utils/viewerChannelSettings.d.ts +1 -1
- package/type-declarations/aics-image-viewer/state/deserialize.d.ts +70 -35
- package/type-declarations/aics-image-viewer/state/reset.d.ts +1 -1
- package/type-declarations/aics-image-viewer/state/serialize.d.ts +44 -10
- package/type-declarations/aics-image-viewer/state/types.d.ts +265 -159
- package/type-declarations/aics-image-viewer/state/util.d.ts +3 -1
- package/type-declarations/index.d.ts +5 -3
- package/es/Globals.d.js +0 -0
- package/es/aics-image-viewer/shared/enums.js +0 -18
- package/es/aics-image-viewer/shared/utils/firebase/index.js +0 -109
- package/type-declarations/aics-image-viewer/shared/enums.d.ts +0 -15
- package/type-declarations/aics-image-viewer/shared/utils/firebase/index.d.ts +0 -69
- package/type-declarations/aics-image-viewer/shared/utils/math.d.ts +0 -1
- /package/es/aics-image-viewer/components/{CellViewerCanvasWrapper → ViewerCanvasWrapper}/styles.css +0 -0
|
@@ -7,10 +7,10 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
7
7
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
8
8
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
9
9
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
10
|
-
import { describe, expect, it } from "
|
|
10
|
+
import { describe, expect, it } from "vitest";
|
|
11
11
|
import { getDefaultCameraState, getDefaultChannelState, getDefaultViewerState } from "../../shared/constants";
|
|
12
|
-
import { ImageType, RenderMode, ViewMode } from "../../shared/enums";
|
|
13
12
|
import { useViewerState } from "../store";
|
|
13
|
+
import { ImageType, RenderMode, ViewMode } from "../types";
|
|
14
14
|
var arbitraryViewerState = function arbitraryViewerState() {
|
|
15
15
|
return {
|
|
16
16
|
viewMode: ViewMode.xy,
|
|
@@ -4,54 +4,48 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
4
4
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
5
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
6
6
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
import { describe, expect, it } from "vitest";
|
|
7
8
|
import { getDefaultCameraState } from "../../shared/constants";
|
|
8
|
-
import {
|
|
9
|
-
import { CUSTOM_TEST_VIEWER_STATE, DEFAULT_TEST_CHANNEL_STATE, DEFAULT_TEST_VIEWER_STATE, SERIALIZED_CUSTOM_TEST_VIEWER_STATE, SERIALIZED_DEFAULT_TEST_CHANNEL_STATE, SERIALIZED_DEFAULT_TEST_VIEWER_STATE } from "./test_data";
|
|
10
|
-
describe("
|
|
9
|
+
import { cameraStateToSnapshot, channelStateToSnapshot, channelStateToStringSnapshot, objectToKeyValueList, stringifyCameraStateSnapshot, viewerStateToSnapshot, viewerStateToStringSnapshot } from "../serialize";
|
|
10
|
+
import { CUSTOM_TEST_CHANNEL_STATE, CUSTOM_TEST_VIEWER_STATE, DEFAULT_TEST_CHANNEL_STATE, DEFAULT_TEST_VIEWER_STATE, SERIALIZED_CUSTOM_TEST_CHANNEL_STATE, SERIALIZED_CUSTOM_TEST_VIEWER_STATE, SERIALIZED_DEFAULT_TEST_CHANNEL_STATE, SERIALIZED_DEFAULT_TEST_VIEWER_STATE, STRINGIFIED_CUSTOM_TEST_CHANNEL_STATE, STRINGIFIED_CUSTOM_TEST_VIEWER_STATE, STRINGIFIED_DEFAULT_TEST_CHANNEL_STATE, STRINGIFIED_DEFAULT_TEST_VIEWER_STATE } from "./test_data";
|
|
11
|
+
describe("channelStateToSnapshot", function () {
|
|
11
12
|
it("serializes channel settings", function () {
|
|
12
|
-
|
|
13
|
+
var serialized = channelStateToSnapshot(DEFAULT_TEST_CHANNEL_STATE, false);
|
|
14
|
+
expect(serialized).toEqual(SERIALIZED_DEFAULT_TEST_CHANNEL_STATE);
|
|
13
15
|
});
|
|
14
16
|
it("serializes custom channel settings", function () {
|
|
15
|
-
var
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
ramp: [0, 255],
|
|
28
|
-
// TODO: the settings below are not serialized. should they be? (see #384)
|
|
29
|
-
plotMin: 0,
|
|
30
|
-
plotMax: 255,
|
|
31
|
-
keepIntensityRange: false
|
|
32
|
-
};
|
|
33
|
-
var serializedCustomChannelState = {
|
|
34
|
-
col: "03ff9d",
|
|
35
|
-
ven: "0",
|
|
36
|
-
sen: "0",
|
|
37
|
-
isv: "0",
|
|
38
|
-
isa: "0.54",
|
|
39
|
-
clz: "0",
|
|
40
|
-
cza: "1",
|
|
41
|
-
cpe: "0",
|
|
42
|
-
cpt: "",
|
|
43
|
-
ram: "0:255",
|
|
44
|
-
pin: "0"
|
|
45
|
-
};
|
|
46
|
-
expect(serializeViewerChannelSetting(customChannelState, false)).toEqual(serializedCustomChannelState);
|
|
17
|
+
var serialized = channelStateToSnapshot(CUSTOM_TEST_CHANNEL_STATE, false);
|
|
18
|
+
expect(serialized).toEqual(SERIALIZED_CUSTOM_TEST_CHANNEL_STATE);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe("channelStateToStringSnapshot", function () {
|
|
22
|
+
it("serializes channel settings", function () {
|
|
23
|
+
var serialized = channelStateToStringSnapshot(DEFAULT_TEST_CHANNEL_STATE, false);
|
|
24
|
+
expect(serialized).toEqual(STRINGIFIED_DEFAULT_TEST_CHANNEL_STATE);
|
|
25
|
+
});
|
|
26
|
+
it("serializes custom channel settings", function () {
|
|
27
|
+
var serialized = channelStateToStringSnapshot(CUSTOM_TEST_CHANNEL_STATE, false);
|
|
28
|
+
expect(serialized).toEqual(STRINGIFIED_CUSTOM_TEST_CHANNEL_STATE);
|
|
47
29
|
});
|
|
48
30
|
});
|
|
49
|
-
describe("
|
|
31
|
+
describe("viewerStateToSnapshot", function () {
|
|
50
32
|
it("serializes the default viewer settings", function () {
|
|
51
|
-
|
|
33
|
+
var serialized = viewerStateToSnapshot(DEFAULT_TEST_VIEWER_STATE, false);
|
|
34
|
+
expect(serialized).toEqual(SERIALIZED_DEFAULT_TEST_VIEWER_STATE);
|
|
52
35
|
});
|
|
53
36
|
it("serializes custom viewer settings", function () {
|
|
54
|
-
|
|
37
|
+
var serialized = viewerStateToSnapshot(CUSTOM_TEST_VIEWER_STATE, false);
|
|
38
|
+
expect(serialized).toEqual(SERIALIZED_CUSTOM_TEST_VIEWER_STATE);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe("viewerStateToStringSnapshot", function () {
|
|
42
|
+
it("serializes the default viewer settings", function () {
|
|
43
|
+
var serialized = viewerStateToStringSnapshot(DEFAULT_TEST_VIEWER_STATE, false);
|
|
44
|
+
expect(serialized).toEqual(STRINGIFIED_DEFAULT_TEST_VIEWER_STATE);
|
|
45
|
+
});
|
|
46
|
+
it("serializes custom viewer settings", function () {
|
|
47
|
+
var serialized = viewerStateToStringSnapshot(CUSTOM_TEST_VIEWER_STATE, false);
|
|
48
|
+
expect(serialized).toEqual(STRINGIFIED_CUSTOM_TEST_VIEWER_STATE);
|
|
55
49
|
});
|
|
56
50
|
it("shortens long numbers in the slice and region parameters", function () {
|
|
57
51
|
// Floats should be rounded to 7 significant digits or less
|
|
@@ -67,20 +61,25 @@ describe("serializeViewerState", function () {
|
|
|
67
61
|
z: 0.677402
|
|
68
62
|
}
|
|
69
63
|
};
|
|
70
|
-
var serializedState =
|
|
64
|
+
var serializedState = viewerStateToStringSnapshot(state, true);
|
|
71
65
|
expect(serializedState.reg).toEqual("0.4566667:0.8667332,0.5:0.8999999,0.3:0.1646788");
|
|
72
66
|
expect(serializedState.slice).toEqual("0.4111119,0.5,0.677402");
|
|
73
67
|
});
|
|
74
68
|
});
|
|
75
69
|
describe("Camera state", function () {
|
|
76
70
|
it("uses default camera state when choosing elements to exclude/ignore", function () {
|
|
77
|
-
var cameraState =
|
|
71
|
+
var cameraState = getDefaultCameraState();
|
|
78
72
|
// No changes from default
|
|
79
|
-
expect(
|
|
73
|
+
expect(cameraStateToSnapshot(cameraState, true)).toEqual(undefined);
|
|
80
74
|
cameraState = _objectSpread(_objectSpread({}, cameraState), {}, {
|
|
81
75
|
position: [1, 2, 3]
|
|
82
76
|
});
|
|
83
|
-
|
|
77
|
+
var snapshot = cameraStateToSnapshot(cameraState, true);
|
|
78
|
+
expect(snapshot).toEqual({
|
|
79
|
+
pos: [1, 2, 3]
|
|
80
|
+
});
|
|
81
|
+
var stringified = stringifyCameraStateSnapshot(snapshot);
|
|
82
|
+
expect(objectToKeyValueList(stringified)).toEqual("pos:1:2:3");
|
|
84
83
|
});
|
|
85
84
|
it("default camera state has not been changed", function () {
|
|
86
85
|
// The default camera state should NOT change unless backwards compatibility
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ImageType, RenderMode, ViewMode } from "
|
|
1
|
+
import { ImageType, ImageTypeSnapshot, RenderMode, RenderModeSnapshot, ViewMode, ViewModeSnapshot } from "../types";
|
|
2
2
|
export var DEFAULT_TEST_VIEWER_STATE = {
|
|
3
3
|
viewMode: ViewMode.threeD,
|
|
4
4
|
// "XY", "XZ", "YZ"
|
|
@@ -34,6 +34,29 @@ export var DEFAULT_TEST_VIEWER_STATE = {
|
|
|
34
34
|
scaleLevelIndex: 0
|
|
35
35
|
};
|
|
36
36
|
export var SERIALIZED_DEFAULT_TEST_VIEWER_STATE = {
|
|
37
|
+
mode: RenderModeSnapshot.volumetric,
|
|
38
|
+
view: ViewModeSnapshot.threeD,
|
|
39
|
+
image: ImageTypeSnapshot.segmentedCell,
|
|
40
|
+
axes: false,
|
|
41
|
+
bb: false,
|
|
42
|
+
bgcol: "000000",
|
|
43
|
+
bbcol: "ffffff",
|
|
44
|
+
rot: false,
|
|
45
|
+
mask: 0,
|
|
46
|
+
bright: 70,
|
|
47
|
+
dens: 50,
|
|
48
|
+
lvl: [35, 140, 255],
|
|
49
|
+
interp: true,
|
|
50
|
+
reg: [[0, 1], [0, 1], [0, 1]],
|
|
51
|
+
slice: [0.5, 0.5, 0.5],
|
|
52
|
+
t: 0,
|
|
53
|
+
scene: 0,
|
|
54
|
+
scm: false,
|
|
55
|
+
sci: 0,
|
|
56
|
+
esl: false,
|
|
57
|
+
scl: 0
|
|
58
|
+
};
|
|
59
|
+
export var STRINGIFIED_DEFAULT_TEST_VIEWER_STATE = {
|
|
37
60
|
mode: "volumetric",
|
|
38
61
|
view: "3D",
|
|
39
62
|
image: "cell",
|
|
@@ -95,6 +118,36 @@ export var CUSTOM_TEST_VIEWER_STATE = {
|
|
|
95
118
|
}
|
|
96
119
|
};
|
|
97
120
|
export var SERIALIZED_CUSTOM_TEST_VIEWER_STATE = {
|
|
121
|
+
mode: RenderModeSnapshot.pathTrace,
|
|
122
|
+
view: ViewModeSnapshot.xy,
|
|
123
|
+
image: ImageTypeSnapshot.fullField,
|
|
124
|
+
axes: true,
|
|
125
|
+
bb: true,
|
|
126
|
+
bgcol: "ff0000",
|
|
127
|
+
bbcol: "00ff00",
|
|
128
|
+
rot: true,
|
|
129
|
+
mask: 55,
|
|
130
|
+
bright: 100,
|
|
131
|
+
dens: 75,
|
|
132
|
+
lvl: [0, 250, 251],
|
|
133
|
+
interp: false,
|
|
134
|
+
reg: [[0, 0.5], [0, 1], [0, 1]],
|
|
135
|
+
slice: [0.25, 0.75, 0.5],
|
|
136
|
+
t: 100,
|
|
137
|
+
scene: 3,
|
|
138
|
+
scm: true,
|
|
139
|
+
sci: 3,
|
|
140
|
+
esl: true,
|
|
141
|
+
scl: 3,
|
|
142
|
+
cam: {
|
|
143
|
+
pos: [-1.05, -4, 45],
|
|
144
|
+
tar: [0, 0, 0],
|
|
145
|
+
up: [0, 1, 0],
|
|
146
|
+
ort: 3.534,
|
|
147
|
+
fov: 43.5
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
export var STRINGIFIED_CUSTOM_TEST_VIEWER_STATE = {
|
|
98
151
|
mode: "pathtrace",
|
|
99
152
|
view: "Z",
|
|
100
153
|
image: "fov",
|
|
@@ -144,6 +197,27 @@ export var DEFAULT_TEST_CHANNEL_STATE = {
|
|
|
144
197
|
keepIntensityRange: false
|
|
145
198
|
};
|
|
146
199
|
export var SERIALIZED_DEFAULT_TEST_CHANNEL_STATE = {
|
|
200
|
+
col: "ff0000",
|
|
201
|
+
ven: true,
|
|
202
|
+
sen: true,
|
|
203
|
+
isv: 128,
|
|
204
|
+
isa: 0.75,
|
|
205
|
+
clz: true,
|
|
206
|
+
cza: 0.5,
|
|
207
|
+
cpe: false,
|
|
208
|
+
cpt: [{
|
|
209
|
+
x: 0,
|
|
210
|
+
opacity: 0.5,
|
|
211
|
+
color: "1"
|
|
212
|
+
}, {
|
|
213
|
+
x: 255,
|
|
214
|
+
opacity: 1,
|
|
215
|
+
color: "326496"
|
|
216
|
+
}],
|
|
217
|
+
ram: [0, 255],
|
|
218
|
+
pin: false
|
|
219
|
+
};
|
|
220
|
+
export var STRINGIFIED_DEFAULT_TEST_CHANNEL_STATE = {
|
|
147
221
|
col: "ff0000",
|
|
148
222
|
ven: "1",
|
|
149
223
|
sen: "1",
|
|
@@ -156,6 +230,50 @@ export var SERIALIZED_DEFAULT_TEST_CHANNEL_STATE = {
|
|
|
156
230
|
ram: "0:255",
|
|
157
231
|
pin: "0"
|
|
158
232
|
};
|
|
233
|
+
export var CUSTOM_TEST_CHANNEL_STATE = {
|
|
234
|
+
name: "a",
|
|
235
|
+
displayName: "a",
|
|
236
|
+
color: [3, 255, 157],
|
|
237
|
+
volumeEnabled: false,
|
|
238
|
+
isosurfaceEnabled: false,
|
|
239
|
+
isovalue: 0,
|
|
240
|
+
opacity: 0.54,
|
|
241
|
+
colorizeEnabled: false,
|
|
242
|
+
colorizeAlpha: 1.0,
|
|
243
|
+
useControlPoints: false,
|
|
244
|
+
controlPoints: [],
|
|
245
|
+
ramp: [0, 255],
|
|
246
|
+
// TODO: the settings below are not serialized. should they be? (see #384)
|
|
247
|
+
plotMin: 0,
|
|
248
|
+
plotMax: 255,
|
|
249
|
+
keepIntensityRange: false
|
|
250
|
+
};
|
|
251
|
+
export var SERIALIZED_CUSTOM_TEST_CHANNEL_STATE = {
|
|
252
|
+
col: "03ff9d",
|
|
253
|
+
ven: false,
|
|
254
|
+
sen: false,
|
|
255
|
+
isv: 0,
|
|
256
|
+
isa: 0.54,
|
|
257
|
+
clz: false,
|
|
258
|
+
cza: 1,
|
|
259
|
+
cpe: false,
|
|
260
|
+
cpt: [],
|
|
261
|
+
ram: [0, 255],
|
|
262
|
+
pin: false
|
|
263
|
+
};
|
|
264
|
+
export var STRINGIFIED_CUSTOM_TEST_CHANNEL_STATE = {
|
|
265
|
+
col: "03ff9d",
|
|
266
|
+
ven: "0",
|
|
267
|
+
sen: "0",
|
|
268
|
+
isv: "0",
|
|
269
|
+
isa: "0.54",
|
|
270
|
+
clz: "0",
|
|
271
|
+
cza: "1",
|
|
272
|
+
cpe: "0",
|
|
273
|
+
cpt: "",
|
|
274
|
+
ram: "0:255",
|
|
275
|
+
pin: "0"
|
|
276
|
+
};
|
|
159
277
|
export var DEFAULT_TEST_VIEWER_CHANNEL_SETTING = {
|
|
160
278
|
match: 0,
|
|
161
279
|
color: undefined,
|