@3cr/viewer-browser 0.0.61 → 0.0.86

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 (59) hide show
  1. package/components.d.ts +0 -1
  2. package/coverage/3cr-viewer-browser/index.html +5 -5
  3. package/coverage/3cr-viewer-browser/index.ts.html +14 -26
  4. package/coverage/3cr-viewer-browser/src/App.vue.html +51 -48
  5. package/coverage/3cr-viewer-browser/src/components/WebGL3DR.vue.html +1 -1
  6. package/coverage/3cr-viewer-browser/src/components/icons/index.html +1 -1
  7. package/coverage/3cr-viewer-browser/src/components/icons/liver.vue.html +1 -1
  8. package/coverage/3cr-viewer-browser/src/components/index.html +1 -1
  9. package/coverage/3cr-viewer-browser/src/components/loading/LoadingSpinner.vue.html +82 -16
  10. package/coverage/3cr-viewer-browser/src/components/loading/index.html +5 -5
  11. package/coverage/3cr-viewer-browser/src/components/modal/MftpWebGL3DRModal.vue.html +238 -1123
  12. package/coverage/3cr-viewer-browser/src/components/modal/index.html +19 -19
  13. package/coverage/3cr-viewer-browser/src/components/selectors/ValueSelector.vue.html +47 -20
  14. package/coverage/3cr-viewer-browser/src/components/selectors/index.html +7 -7
  15. package/coverage/3cr-viewer-browser/src/components/sliders/DoubleSliderSelector.vue.html +62 -20
  16. package/coverage/3cr-viewer-browser/src/components/sliders/VerticalSliderSelector.vue.html +16 -7
  17. package/coverage/3cr-viewer-browser/src/components/sliders/index.html +10 -10
  18. package/coverage/3cr-viewer-browser/src/dataLayer/iconData.ts.html +118 -0
  19. package/coverage/3cr-viewer-browser/src/dataLayer/index.html +146 -0
  20. package/coverage/3cr-viewer-browser/src/dataLayer/payloadHandler.ts.html +352 -0
  21. package/coverage/3cr-viewer-browser/src/dataLayer/scanState.ts.html +628 -0
  22. package/coverage/3cr-viewer-browser/src/helpers/index.html +1 -1
  23. package/coverage/3cr-viewer-browser/src/helpers/layoutOverlayStyle.ts.html +1 -1
  24. package/coverage/3cr-viewer-browser/src/helpers/modelHelper.ts.html +105 -105
  25. package/coverage/3cr-viewer-browser/src/helpers/utils.ts.html +3 -3
  26. package/coverage/3cr-viewer-browser/src/index.html +5 -5
  27. package/coverage/3cr-viewer-browser/src/main.ts.html +1 -1
  28. package/coverage/3cr-viewer-browser/src/models/LoadViewerOptions.ts.html +166 -0
  29. package/coverage/3cr-viewer-browser/src/models/index.html +116 -0
  30. package/coverage/3cr-viewer-browser/src/notifications/index.html +116 -0
  31. package/coverage/3cr-viewer-browser/src/notifications/notification.ts.html +229 -0
  32. package/coverage/3cr-viewer-browser/src/plugins/index.html +5 -5
  33. package/coverage/3cr-viewer-browser/src/plugins/index.ts.html +14 -8
  34. package/coverage/3cr-viewer-browser/src/plugins/vuetify.ts.html +1 -1
  35. package/coverage/index.html +78 -33
  36. package/dist/Viewer3CR.js +12 -12
  37. package/dist/Viewer3CR.mjs +10004 -9916
  38. package/dist/Viewer3CR.umd.js +12 -12
  39. package/index.ts +7 -42
  40. package/package.json +2 -1
  41. package/src/App.vue +6 -2
  42. package/src/components/modal/MftpWebGL3DRModal.vue +137 -452
  43. package/src/components/modal/__tests__/mftp-webgl-3dr-modal.spec.ts +114 -83
  44. package/src/components/selectors/ValueSelector.vue +4 -0
  45. package/src/components/selectors/__tests__/value-selector.spec.ts +18 -0
  46. package/src/components/sliders/DoubleSliderSelector.vue +10 -4
  47. package/src/components/sliders/__tests__/double-slider-selector.spec.ts +32 -0
  48. package/src/dataLayer/__tests__/payload-handler.spec.ts +98 -0
  49. package/src/dataLayer/iconData.ts +11 -0
  50. package/src/dataLayer/payloadHandler.ts +89 -0
  51. package/src/dataLayer/scanState.ts +181 -0
  52. package/src/demo/DemoPatientModal.vue +59 -0
  53. package/src/demo/options.ts +93 -0
  54. package/src/models/Callbacks.ts +2 -0
  55. package/src/models/LoadViewerOptions.ts +27 -0
  56. package/src/models/LoadViewerPayload.ts +8 -0
  57. package/src/notifications/notification.ts +48 -0
  58. package/vitest.config.mts +1 -0
  59. /package/src/{components/modal → demo}/DemoModal.vue +0 -0
package/components.d.ts CHANGED
@@ -7,7 +7,6 @@ export {}
7
7
 
8
8
  declare module 'vue' {
9
9
  export interface GlobalComponents {
10
- DemoModal: typeof import('./src/components/modal/DemoModal.vue')['default']
11
10
  DoubleSliderSelector: typeof import('./src/components/sliders/DoubleSliderSelector.vue')['default']
12
11
  Liver: typeof import('./src/components/icons/liver.vue')['default']
13
12
  LoadingSpinner: typeof import('./src/components/loading/LoadingSpinner.vue')['default']
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>42/42</span>
28
+ <span class='fraction'>38/38</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>42/42</span>
49
+ <span class='fraction'>38/38</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
85
  </td>
86
86
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="42" class="abs high">42/42</td>
87
+ <td data-value="38" class="abs high">38/38</td>
88
88
  <td data-value="100" class="pct high">100%</td>
89
89
  <td data-value="3" class="abs high">3/3</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
91
  <td data-value="2" class="abs high">2/2</td>
92
92
  <td data-value="100" class="pct high">100%</td>
93
- <td data-value="42" class="abs high">42/42</td>
93
+ <td data-value="38" class="abs high">38/38</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-04-09T22:46:57.006Z
104
+ at 2024-04-10T05:32:35.256Z
105
105
  </div>
106
106
  <script src="../prettify.js"></script>
107
107
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>42/42</span>
28
+ <span class='fraction'>38/38</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>42/42</span>
49
+ <span class='fraction'>38/38</span>
50
50
  </div>
51
51
 
52
52
 
@@ -101,15 +101,7 @@
101
101
  <a name='L36'></a><a href='#L36'>36</a>
102
102
  <a name='L37'></a><a href='#L37'>37</a>
103
103
  <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
109
- <span class="cline-any cline-yes">1x</span>
110
- <span class="cline-any cline-yes">1x</span>
111
- <span class="cline-any cline-yes">1x</span>
112
- <span class="cline-any cline-yes">1x</span>
104
+ <a name='L39'></a><a href='#L39'>39</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
113
105
  <span class="cline-any cline-yes">1x</span>
114
106
  <span class="cline-any cline-yes">1x</span>
115
107
  <span class="cline-any cline-yes">1x</span>
@@ -136,7 +128,7 @@
136
128
  <span class="cline-any cline-yes">2x</span>
137
129
  <span class="cline-any cline-yes">2x</span>
138
130
  <span class="cline-any cline-yes">1x</span>
139
- <span class="cline-any cline-yes">1x</span>
131
+ <span class="cline-any cline-yes">2x</span>
140
132
  <span class="cline-any cline-yes">2x</span>
141
133
  <span class="cline-any cline-yes">2x</span>
142
134
  <span class="cline-any cline-yes">2x</span>
@@ -149,17 +141,13 @@
149
141
  <span class="cline-any cline-yes">1x</span>
150
142
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { registerVersion } from "@3cr/sdk-browser";
151
143
  import { ComponentPublicInstance, createApp } from "vue";
152
- import { registerPlugins } from "./src/plugins";
144
+ import { registerPlugins } from "@/plugins";
153
145
  import { App as BrowserViewer } from "./src/main";
154
- &nbsp;
155
- export interface LoadViewerPayload {
156
- Url: string;
157
- DecryptionKey: MftpDecryptionKey;
158
- }
159
- export interface MftpDecryptionKey {
160
- Key: string;
161
- Iv: string;
162
- }
146
+ import {
147
+ defaultLoadViewerOptions,
148
+ LoadViewerOptions,
149
+ } from "@/models/LoadViewerOptions";
150
+ import { LoadViewerPayload } from "@/models/LoadViewerPayload";
163
151
  &nbsp;
164
152
  let mountedApp: ComponentPublicInstance | undefined = undefined;
165
153
  &nbsp;
@@ -178,16 +166,16 @@ export async function registerViewer(version: string) {
178
166
  await registerVersion(version);
179
167
  }
180
168
  &nbsp;
181
- // TODO: accept callbacks for each function we want the parent to handle
182
169
  export async function loadViewer(
183
- payload: LoadViewerPayload | undefined = undefined
170
+ payload: LoadViewerPayload | undefined = undefined,
171
+ options: LoadViewerOptions = defaultLoadViewerOptions
184
172
  ): Promise&lt;void&gt; {
185
173
  if (!mountedApp) {
186
174
  throw new Error(
187
175
  "Please call `registerViewer(version: string, idSelector: string)` first"
188
176
  );
189
177
  }
190
- await (mountedApp as any).loadInstance(payload);
178
+ await (mountedApp as any).loadInstance(payload, options);
191
179
  }
192
180
  &nbsp;</pre></td></tr></table></pre>
193
181
 
@@ -196,7 +184,7 @@ export async function loadViewer(
196
184
  <div class='footer quiet pad2 space-top1 center small'>
197
185
  Code coverage generated by
198
186
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
199
- at 2024-04-09T22:46:57.006Z
187
+ at 2024-04-10T05:32:35.256Z
200
188
  </div>
201
189
  <script src="../prettify.js"></script>
202
190
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>76/76</span>
28
+ <span class='fraction'>77/77</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>76/76</span>
49
+ <span class='fraction'>77/77</span>
50
50
  </div>
51
51
 
52
52
 
@@ -139,7 +139,8 @@
139
139
  <a name='L74'></a><a href='#L74'>74</a>
140
140
  <a name='L75'></a><a href='#L75'>75</a>
141
141
  <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
143
144
  <span class="cline-any cline-yes">1x</span>
144
145
  <span class="cline-any cline-yes">1x</span>
145
146
  <span class="cline-any cline-yes">1x</span>
@@ -164,20 +165,21 @@
164
165
  <span class="cline-any cline-yes">1x</span>
165
166
  <span class="cline-any cline-yes">1x</span>
166
167
  <span class="cline-any cline-yes">1x</span>
167
- <span class="cline-any cline-yes">2x</span>
168
- <span class="cline-any cline-yes">2x</span>
169
- <span class="cline-any cline-yes">2x</span>
170
- <span class="cline-any cline-yes">2x</span>
171
- <span class="cline-any cline-yes">2x</span>
172
- <span class="cline-any cline-yes">1x</span>
173
- <span class="cline-any cline-yes">1x</span>
174
- <span class="cline-any cline-yes">1x</span>
175
168
  <span class="cline-any cline-yes">1x</span>
176
169
  <span class="cline-any cline-yes">1x</span>
177
170
  <span class="cline-any cline-yes">1x</span>
178
171
  <span class="cline-any cline-yes">1x</span>
179
172
  <span class="cline-any cline-yes">1x</span>
180
173
  <span class="cline-any cline-yes">1x</span>
174
+ <span class="cline-any cline-yes">2x</span>
175
+ <span class="cline-any cline-yes">2x</span>
176
+ <span class="cline-any cline-yes">2x</span>
177
+ <span class="cline-any cline-yes">2x</span>
178
+ <span class="cline-any cline-yes">2x</span>
179
+ <span class="cline-any cline-yes">2x</span>
180
+ <span class="cline-any cline-yes">2x</span>
181
+ <span class="cline-any cline-yes">2x</span>
182
+ <span class="cline-any cline-yes">2x</span>
181
183
  <span class="cline-any cline-yes">1x</span>
182
184
  <span class="cline-any cline-yes">1x</span>
183
185
  <span class="cline-any cline-yes">1x</span>
@@ -216,64 +218,65 @@
216
218
  <span class="cline-any cline-yes">1x</span>
217
219
  <span class="cline-any cline-yes">1x</span>
218
220
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&lt;template&gt;
219
- &lt;v-app style="height: 0; width: 0;"&gt;
221
+ &lt;v-app style="height: 0; width: 0"&gt;
220
222
  &lt;MftpWebGL3DRModal ref="mftpWebGL3DRModal" :payload="payload" /&gt;
221
223
  &lt;/v-app&gt;
224
+ &lt;Notifications /&gt;
222
225
  &lt;/template&gt;
223
226
  &nbsp;
224
227
  &lt;script setup lang="ts"&gt;
225
- &nbsp;
226
228
  import MftpWebGL3DRModal from "@/components/modal/MftpWebGL3DRModal.vue";
227
- import {ref, unref} from "vue";
228
- import {LoadViewerPayload} from "../index";
229
+ import { ref, unref } from "vue";
230
+ import { Notifications } from "@kyvg/vue3-notification";
231
+ import { LoadViewerPayload } from "@/models/LoadViewerPayload";
232
+ import {
233
+ defaultLoadViewerOptions,
234
+ LoadViewerOptions,
235
+ } from "@/models/LoadViewerOptions";
229
236
  &nbsp;
230
237
  const payload = ref&lt;LoadViewerPayload&gt;({
231
- Url:"https://webgl-3dr.singular.health/test_scans/01440d4e-8b04-4b90-bb2c-698535ce16d6/CHEST.3vxl",
232
- DecryptionKey:{
233
- Iv:"XEloSh+OcO7TG77au6HjPw==",
234
- Key:"KUc722X1y4w42M+jCf9a3+6EGz66z7UMWK3m2aMqGxM="
235
- }
238
+ Url: "https://webgl-3dr.singular.health/test_scans/01440d4e-8b04-4b90-bb2c-698535ce16d6/CHEST.3vxl",
239
+ DecryptionKey: {
240
+ Iv: "XEloSh+OcO7TG77au6HjPw==",
241
+ Key: "KUc722X1y4w42M+jCf9a3+6EGz66z7UMWK3m2aMqGxM=",
242
+ },
236
243
  });
244
+ const options = ref&lt;LoadViewerOptions&gt;(defaultLoadViewerOptions);
237
245
  &nbsp;
238
- const mftpWebGL3DRModal = ref&lt;typeof MftpWebGL3DRModal | null&gt;(null)
246
+ const mftpWebGL3DRModal = ref&lt;typeof MftpWebGL3DRModal | null&gt;(null);
239
247
  defineExpose({
240
- loadInstance
241
- })
248
+ loadInstance,
249
+ });
242
250
  &nbsp;
243
- async function loadInstance(payloadIncoming: LoadViewerPayload | undefined = undefined) {
251
+ async function loadInstance(
252
+ payloadIncoming: LoadViewerPayload | undefined,
253
+ optionsIncoming: LoadViewerOptions
254
+ ) {
244
255
  payload.value = payloadIncoming || payload.value;
256
+ options.value = optionsIncoming;
245
257
  &nbsp;
246
- unref(mftpWebGL3DRModal)?.alterValue(true)
258
+ unref(mftpWebGL3DRModal)?.alterValue(true);
247
259
  }
248
260
  &lt;/script&gt;
249
261
  &lt;style&gt;
250
- &nbsp;
251
- .material-icons-outlined, .material-symbols-outlined {
252
- font-variation-settings:
253
- 'FILL' 0,
254
- 'wght' 300,
255
- 'GRAD' 0,
256
- 'opsz' 24;
262
+ .material-icons-outlined,
263
+ .material-symbols-outlined {
264
+ font-variation-settings: "FILL" 0, "wght" 300, "GRAD" 0, "opsz" 24;
257
265
  }
258
- .material-icons, .material-symbols {
259
- font-variation-settings:
260
- 'FILL' 0,
261
- 'wght' 300,
262
- 'GRAD' 0,
263
- 'opsz' 24;
266
+ .material-icons,
267
+ .material-symbols {
268
+ font-variation-settings: "FILL" 0, "wght" 300, "GRAD" 0, "opsz" 24;
264
269
  }
265
- .material-icons-filled, .material-symbols-filled {
266
- font-variation-settings:
267
- 'FILL' 1,
268
- 'wght' 300,
269
- 'GRAD' 0,
270
- 'opsz' 24 !important;
270
+ .material-icons-filled,
271
+ .material-symbols-filled {
272
+ font-variation-settings: "FILL" 1, "wght" 300, "GRAD" 0, "opsz" 24 !important;
271
273
  }
272
274
  .overflow-y-scroll {
273
275
  overflow-y: scroll;
274
276
  }
275
- .material-icons-outlined, .material-icons {
276
- font-family: 'Material Symbols Outlined' !important;
277
+ .material-icons-outlined,
278
+ .material-icons {
279
+ font-family: "Material Symbols Outlined" !important;
277
280
  font-weight: normal;
278
281
  font-style: normal;
279
282
  font-size: 24px;
@@ -284,7 +287,7 @@ async function loadInstance(payloadIncoming: LoadViewerPayload | undefined = und
284
287
  white-space: nowrap;
285
288
  word-wrap: normal;
286
289
  direction: ltr;
287
- -webkit-font-feature-settings: 'liga';
290
+ -webkit-font-feature-settings: "liga";
288
291
  -webkit-font-smoothing: antialiased;
289
292
  }
290
293
  .transparent {
@@ -298,7 +301,7 @@ async function loadInstance(payloadIncoming: LoadViewerPayload | undefined = und
298
301
  <div class='footer quiet pad2 space-top1 center small'>
299
302
  Code coverage generated by
300
303
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
301
- at 2024-04-09T22:46:57.006Z
304
+ at 2024-04-10T05:32:35.256Z
302
305
  </div>
303
306
  <script src="../../prettify.js"></script>
304
307
  <script>
@@ -427,7 +427,7 @@ function receiveMessageFromUnity(json: FrontEndPayload) {
427
427
  <div class='footer quiet pad2 space-top1 center small'>
428
428
  Code coverage generated by
429
429
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
430
- at 2024-04-09T22:46:57.006Z
430
+ at 2024-04-10T05:32:35.256Z
431
431
  </div>
432
432
  <script src="../../../prettify.js"></script>
433
433
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-04-09T22:46:57.006Z
104
+ at 2024-04-10T05:32:35.256Z
105
105
  </div>
106
106
  <script src="../../../../prettify.js"></script>
107
107
  <script>
@@ -133,7 +133,7 @@
133
133
  <div class='footer quiet pad2 space-top1 center small'>
134
134
  Code coverage generated by
135
135
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
136
- at 2024-04-09T22:46:57.006Z
136
+ at 2024-04-10T05:32:35.256Z
137
137
  </div>
138
138
  <script src="../../../../prettify.js"></script>
139
139
  <script>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-04-09T22:46:57.006Z
104
+ at 2024-04-10T05:32:35.256Z
105
105
  </div>
106
106
  <script src="../../../prettify.js"></script>
107
107
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>157/157</span>
28
+ <span class='fraction'>179/179</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>157/157</span>
49
+ <span class='fraction'>179/179</span>
50
50
  </div>
51
51
 
52
52
 
@@ -220,7 +220,51 @@
220
220
  <a name='L155'></a><a href='#L155'>155</a>
221
221
  <a name='L156'></a><a href='#L156'>156</a>
222
222
  <a name='L157'></a><a href='#L157'>157</a>
223
- <a name='L158'></a><a href='#L158'>158</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
246
+ <span class="cline-any cline-yes">1x</span>
247
+ <span class="cline-any cline-yes">1x</span>
248
+ <span class="cline-any cline-yes">1x</span>
249
+ <span class="cline-any cline-yes">1x</span>
250
+ <span class="cline-any cline-yes">1x</span>
251
+ <span class="cline-any cline-yes">1x</span>
252
+ <span class="cline-any cline-yes">1x</span>
253
+ <span class="cline-any cline-yes">1x</span>
254
+ <span class="cline-any cline-yes">1x</span>
255
+ <span class="cline-any cline-yes">1x</span>
256
+ <span class="cline-any cline-yes">1x</span>
257
+ <span class="cline-any cline-yes">1x</span>
258
+ <span class="cline-any cline-yes">1x</span>
259
+ <span class="cline-any cline-yes">1x</span>
260
+ <span class="cline-any cline-yes">1x</span>
261
+ <span class="cline-any cline-yes">1x</span>
262
+ <span class="cline-any cline-yes">1x</span>
263
+ <span class="cline-any cline-yes">1x</span>
264
+ <span class="cline-any cline-yes">1x</span>
265
+ <span class="cline-any cline-yes">1x</span>
266
+ <span class="cline-any cline-yes">1x</span>
267
+ <span class="cline-any cline-yes">1x</span>
224
268
  <span class="cline-any cline-yes">1x</span>
225
269
  <span class="cline-any cline-yes">1x</span>
226
270
  <span class="cline-any cline-yes">1x</span>
@@ -378,10 +422,13 @@
378
422
  <span class="cline-any cline-yes">1x</span>
379
423
  <span class="cline-any cline-yes">1x</span>
380
424
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&lt;script setup lang="ts"&gt;
381
- import {ref} from "vue";
382
- &nbsp;
383
- const text = ref&lt;string&gt;('Loading Online Viewer')
425
+ export interface Props {
426
+ text: string;
427
+ }
384
428
  &nbsp;
429
+ const props = withDefaults(defineProps&lt;Props&gt;(), {
430
+ text: "Loading Online Viewer",
431
+ });
385
432
  &lt;/script&gt;
386
433
  &nbsp;
387
434
  &lt;template&gt;
@@ -394,7 +441,10 @@ const text = ref&lt;string&gt;('Loading Online Viewer')
394
441
  &lt;div class="circle"&gt;&lt;/div&gt;
395
442
  &lt;/div&gt;
396
443
  &lt;/div&gt;
397
- &lt;div class="mx-auto text-center white--text text-h3" v-html="text"&gt;&lt;/div&gt;
444
+ &lt;div
445
+ class="mx-auto text-center text-white text-h3"
446
+ v-html="props.text"
447
+ &gt;&lt;/div&gt;
398
448
  &lt;/div&gt;
399
449
  &lt;/template&gt;
400
450
  &nbsp;
@@ -429,9 +479,20 @@ const text = ref&lt;string&gt;('Loading Online Viewer')
429
479
  --in: 80%;
430
480
  --ar: #8799a4;
431
481
  --dt: #ffffff;
432
- --shadow: drop-shadow(0vmin 0vmin 0.5vmin rgba(0, 0, 0, 0.35)) drop-shadow(0vmin 1vmin 0.5vmin rgba(0, 0, 0, 0.09));
433
- --cross: linear-gradient(0deg, #fff0 calc(50% - 2px), #000 calc(50% - 1px) calc(50% + 1px), #fff0 calc(50% + 2px)),
434
- linear-gradient(90deg, #fff0 calc(50% - 2px), #000 calc(50% - 1px) calc(50% + 1px), #fff0 calc(50% + 2px));
482
+ --shadow: drop-shadow(0vmin 0vmin 0.5vmin rgba(0, 0, 0, 0.35))
483
+ drop-shadow(0vmin 1vmin 0.5vmin rgba(0, 0, 0, 0.09));
484
+ --cross: linear-gradient(
485
+ 0deg,
486
+ #fff0 calc(50% - 2px),
487
+ #000 calc(50% - 1px) calc(50% + 1px),
488
+ #fff0 calc(50% + 2px)
489
+ ),
490
+ linear-gradient(
491
+ 90deg,
492
+ #fff0 calc(50% - 2px),
493
+ #000 calc(50% - 1px) calc(50% + 1px),
494
+ #fff0 calc(50% + 2px)
495
+ );
435
496
  border: 6vmin solid var(--ar);
436
497
  width: var(--in);
437
498
  height: var(--in);
@@ -443,7 +504,8 @@ const text = ref&lt;string&gt;('Loading Online Viewer')
443
504
  top: 15vmin;
444
505
  right: -10vmin;
445
506
  animation: spin-bot var(--sp) ease 0s infinite;
446
- background-image: var(--cross), radial-gradient(var(--dt) 5.5vmin, #fff0 calc(5.5vmin + 1px));
507
+ background-image: var(--cross),
508
+ radial-gradient(var(--dt) 5.5vmin, #fff0 calc(5.5vmin + 1px));
447
509
  background-repeat: no-repeat;
448
510
  background-size: 3vmin 1vmin, 1vmin 3vmin, 100% 100%;
449
511
  background-position: center center;
@@ -455,7 +517,8 @@ const text = ref&lt;string&gt;('Loading Online Viewer')
455
517
  top: -2vmin;
456
518
  animation: spin-top var(--sp) ease 0s infinite;
457
519
  transform: rotate(-45deg);
458
- background-image: var(--cross), radial-gradient(var(--dt) 1.25vmin, #fff0 calc(1.25vmin + 1px));
520
+ background-image: var(--cross),
521
+ radial-gradient(var(--dt) 1.25vmin, #fff0 calc(1.25vmin + 1px));
459
522
  right: -4vmin;
460
523
  filter: hue-rotate(10deg) var(--shadow);
461
524
  background-size: 1.4vmin 1vmin, 1vmin 1.4vmin, 100% 100%;
@@ -467,7 +530,8 @@ const text = ref&lt;string&gt;('Loading Online Viewer')
467
530
  left: -13vmin;
468
531
  transform: rotate(175deg);
469
532
  animation: spin-left var(--sp) ease calc(var(--sp) / 4) infinite;
470
- background-image: var(--cross), radial-gradient(var(--dt) 9vmin, #fff0 calc(9vmin + 1px));
533
+ background-image: var(--cross),
534
+ radial-gradient(var(--dt) 9vmin, #fff0 calc(9vmin + 1px));
471
535
  filter: hue-rotate(20deg) var(--shadow);
472
536
  background-size: 5vmin 1vmin, 1vmin 5vmin, 100% 100%;
473
537
  }
@@ -477,8 +541,10 @@ const text = ref&lt;string&gt;('Loading Online Viewer')
477
541
  top: 35vmin;
478
542
  left: -6vmin;
479
543
  transform: rotate(-280deg);
480
- animation: spin-last var(--sp) ease calc(calc(calc(var(--sp) / 4) + var(--sp)) * -1) infinite;
481
- background-image: var(--cross), radial-gradient(var(--dt) 2.5vmin, #fff0 calc(2.5vmin + 1px));
544
+ animation: spin-last var(--sp) ease
545
+ calc(calc(calc(var(--sp) / 4) + var(--sp)) * -1) infinite;
546
+ background-image: var(--cross),
547
+ radial-gradient(var(--dt) 2.5vmin, #fff0 calc(2.5vmin + 1px));
482
548
  filter: hue-rotate(30deg) var(--shadow);
483
549
  background-size: 2vmin 1vmin, 1vmin 2vmin, 100% 100%;
484
550
  }
@@ -541,7 +607,7 @@ const text = ref&lt;string&gt;('Loading Online Viewer')
541
607
  <div class='footer quiet pad2 space-top1 center small'>
542
608
  Code coverage generated by
543
609
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
544
- at 2024-04-09T22:46:57.006Z
610
+ at 2024-04-10T05:32:35.256Z
545
611
  </div>
546
612
  <script src="../../../../prettify.js"></script>
547
613
  <script>
@@ -25,7 +25,7 @@
25
25
  <div class='fl pad1y space-right2'>
26
26
  <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>157/157</span>
28
+ <span class='fraction'>179/179</span>
29
29
  </div>
30
30
 
31
31
 
@@ -46,7 +46,7 @@
46
46
  <div class='fl pad1y space-right2'>
47
47
  <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>157/157</span>
49
+ <span class='fraction'>179/179</span>
50
50
  </div>
51
51
 
52
52
 
@@ -84,13 +84,13 @@
84
84
  <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
85
85
  </td>
86
86
  <td data-value="100" class="pct high">100%</td>
87
- <td data-value="157" class="abs high">157/157</td>
87
+ <td data-value="179" class="abs high">179/179</td>
88
88
  <td data-value="100" class="pct high">100%</td>
89
89
  <td data-value="0" class="abs high">0/0</td>
90
90
  <td data-value="100" class="pct high">100%</td>
91
91
  <td data-value="0" class="abs high">0/0</td>
92
92
  <td data-value="100" class="pct high">100%</td>
93
- <td data-value="157" class="abs high">157/157</td>
93
+ <td data-value="179" class="abs high">179/179</td>
94
94
  </tr>
95
95
 
96
96
  </tbody>
@@ -101,7 +101,7 @@
101
101
  <div class='footer quiet pad2 space-top1 center small'>
102
102
  Code coverage generated by
103
103
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
104
- at 2024-04-09T22:46:57.006Z
104
+ at 2024-04-10T05:32:35.256Z
105
105
  </div>
106
106
  <script src="../../../../prettify.js"></script>
107
107
  <script>