@3cr/viewer-browser 0.0.44 → 0.0.47

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@3cr/viewer-browser",
3
- "version": "0.0.44",
3
+ "version": "0.0.47",
4
4
  "main": "./dist/Viewer3CR.umd.js",
5
5
  "module": "dist/Viewer3CR.umd.js",
6
6
  "homepage": "https://docs.3cr.singular.health",
package/src/App.vue CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <script setup lang="ts">
8
8
 
9
- import MftpWebGL3DRModal from "@/components/MftpWebGL3DRModal.vue";
9
+ import MftpWebGL3DRModal from "@/components/modal/MftpWebGL3DRModal.vue";
10
10
  import {ref, unref} from "vue";
11
11
  import {LoadViewerPayload} from "../index";
12
12
 
@@ -157,7 +157,7 @@
157
157
  <div class="d-flex align-center pb-1" :class="drawerCollapsed ? 'py-2' : 'pa-2'" @click="snap">
158
158
  <img
159
159
  v-if="!drawerCollapsed"
160
- src="@/assets/images/dark/3dicom-logo.svg"
160
+ src="../../assets/images/dark/3dicom-logo.svg"
161
161
  height="48"
162
162
  alt="logo"
163
163
  class="ma-auto"
@@ -165,7 +165,7 @@
165
165
  />
166
166
  <img
167
167
  v-if="drawerCollapsed"
168
- src="@/assets/images/dark/3DICOM.png"
168
+ src="../../assets/images/dark/3DICOM.png"
169
169
  height="64"
170
170
  alt="logo"
171
171
  class="ma-auto"
@@ -296,7 +296,7 @@
296
296
  </v-card-actions>
297
297
  <v-card-actions class="py-3">
298
298
  <v-select
299
- :value="currentColourPreset"
299
+ :model-value="currentColourPreset"
300
300
  label="Colour Preset"
301
301
  variant="outlined"
302
302
  density="compact"
@@ -510,12 +510,12 @@
510
510
  </template>
511
511
  <script setup lang="ts" >
512
512
 
513
- import ExpansionHeaderMiniMenu from '@/components/ExpansionHeaderMiniMenu.vue';
514
- import LoadingSpinner from '@/components/LoadingSpinner.vue';
513
+ import ExpansionHeaderMiniMenu from '@/components/expansion-panels/ExpansionHeaderMiniMenu.vue';
514
+ import LoadingSpinner from '@/components/loading/LoadingSpinner.vue';
515
515
  import WebGL3DR from '@/components/WebGL3DR.vue';
516
- import DoubleSliderSelector from '@/components/DoubleSliderSelector.vue';
517
- import SliderSelector from '@/components/SliderSelector.vue';
518
- import VerticalSliderSelector from '@/components/VerticalSliderSelector.vue';
516
+ import DoubleSliderSelector from '@/components/sliders/DoubleSliderSelector.vue';
517
+ import SliderSelector from '@/components/sliders/SliderSelector.vue';
518
+ import VerticalSliderSelector from '@/components/sliders/VerticalSliderSelector.vue';
519
519
 
520
520
  import { generateDivStyleForLayout } from '@/helpers/layoutOverlayStyle';
521
521
  import {
@@ -529,7 +529,7 @@ import {
529
529
  import {
530
530
  inflateInitialScanState,
531
531
  inflateScanState,
532
- } from '../helpers/modelHelper';
532
+ } from '../../helpers/modelHelper';
533
533
  import {
534
534
  AnchorPoint,
535
535
  ColourPresetData,
@@ -541,7 +541,7 @@ import {
541
541
 
542
542
  import { toNumber } from '@/helpers/utils';
543
543
  import {computed, ref, unref, watch, defineEmits, nextTick} from "vue";
544
- import {LoadViewerPayload} from "../../index";
544
+ import {LoadViewerPayload} from "../../../index";
545
545
 
546
546
  const emit = defineEmits<{
547
547
  instanceLoaded: [void];
@@ -576,12 +576,7 @@ const scanLoading = ref<boolean>(true);
576
576
  const instanceLoaded = ref<boolean>(true);
577
577
  const scanState = ref<CurrentScanState>(inflateScanState());
578
578
  const initialScanState = ref<InitialScanState>(inflateInitialScanState());
579
- const currentColourPreset = ref<ColourPresetData | undefined>({
580
- Name: 'None',
581
- ColourGradient: [],
582
- Version: '1.0.0',
583
- AlphaGradient: []
584
- });
579
+ const currentColourPreset = ref<ColourPresetData | undefined>(undefined);
585
580
  const openPanels = ref<number>(0);
586
581
  const previousLayout = ref<string>('lo_02');
587
582
  const footerItems = ref([
@@ -650,6 +645,7 @@ const transactionStarted = ref<boolean>(false)
650
645
  const stateOverlay = ref<boolean>(false)
651
646
  const m_closeDialog = ref<boolean>(false)
652
647
 
648
+ watch(currentColourPreset, (val) => {console.log(val)})
653
649
  const windowSlider = computed({
654
650
  get() {
655
651
  return [unref(scanState).Display.WindowLower, unref(scanState).Display.WindowUpper];
@@ -943,7 +939,6 @@ function getCurrentGreyscalePreset() {
943
939
  }
944
940
  function setScanState(message: string) {
945
941
  scanState.value = JSON.parse(message) as CurrentScanState;
946
- console.log(scanState.value);
947
942
  }
948
943
 
949
944
  function handleOnPayload(interfaceSet: string | FrontEndInterfaces, actionSet: string, message: string) {
@@ -80,6 +80,7 @@ watch(sliderValue, async (currentValue: Array<number>) => {
80
80
  v-model="sliderValue"
81
81
  :loading="loading"
82
82
  :thumb-label="showThumb"
83
+ thumb-color="blue"
83
84
  :min="min"
84
85
  hide-details
85
86
  :max="max"
@@ -83,6 +83,5 @@ export function generateDivStyleForLayout(layout: PositionData) {
83
83
  }
84
84
  }
85
85
 
86
- console.log(props)
87
86
  return props;
88
87
  }
package/src/main.ts CHANGED
@@ -10,7 +10,7 @@ import 'material-design-icons-iconfont/dist/material-design-icons.css' // Ensure
10
10
 
11
11
  // Components
12
12
  import App from './App.vue'
13
- import './types/window.shim';
13
+ // import './types/window.shim';
14
14
 
15
15
  // Composables
16
16
  // import { createApp } from 'vue'
@@ -1,2 +0,0 @@
1
- declare module 'randomstring';
2
- declare module 'mime-types';
@@ -1,93 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- // import { CloudFront, S3 } from 'aws-sdk';
7
- const randomstring_1 = require("randomstring");
8
- const path_1 = require("path");
9
- const mime_types_1 = require("mime-types");
10
- const fs_1 = require("fs");
11
- const aws_sdk_1 = __importDefault(require("aws-sdk"));
12
- const package_json_1 = require("../package.json");
13
- const { CloudFront, S3 } = aws_sdk_1.default;
14
- //Note: Config is injected in CI now. (leaving this for in case we need to do a local)
15
- // import dotenv from 'dotenv';
16
- // dotenv.config();
17
- const { DIST_NAME, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, BUCKET_NAME } = process.env;
18
- if (!AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY)
19
- throw Error('Please define environment variables for AWS');
20
- if (!DIST_NAME)
21
- throw Error('Please define environment variables for DIST_NAME');
22
- const DistributionName = DIST_NAME;
23
- const BucketName = BUCKET_NAME;
24
- const s3 = new S3({
25
- region: 'ap-southeast-2',
26
- });
27
- const cloudfront = new CloudFront();
28
- async function uploadDir(s3Path) {
29
- for (const name of (0, fs_1.readdirSync)(s3Path)) {
30
- const filePath = (0, path_1.join)(s3Path, name);
31
- const stat = (0, fs_1.statSync)(filePath);
32
- if (stat.isFile()) {
33
- if (!filePath.endsWith('.map'))
34
- await executeUpload(s3Path, filePath);
35
- }
36
- else if (stat.isDirectory()) {
37
- await uploadDir(filePath);
38
- }
39
- }
40
- }
41
- async function executeUpload(s3Path, filePath) {
42
- const parentDir = s3Path.includes('/')
43
- ? s3Path.substring(0, s3Path.indexOf('/'))
44
- : s3Path;
45
- const bucketPath = filePath.substring(parentDir.length + 1);
46
- const options = {
47
- Bucket: BucketName,
48
- Key: `${bucketPath}`,
49
- Body: (0, fs_1.readFileSync)(filePath).toString().replace("{{version}}", package_json_1.version),
50
- };
51
- if (typeof (0, mime_types_1.lookup)(bucketPath) === 'string') {
52
- options.ContentType = (0, mime_types_1.lookup)(bucketPath);
53
- }
54
- await s3.putObject(options).promise();
55
- }
56
- async function deployToAws() {
57
- const listObjectsParams = {
58
- Bucket: BucketName,
59
- Prefix: ``
60
- };
61
- const listObjectsResponse = await s3
62
- .listObjectsV2(listObjectsParams)
63
- .promise();
64
- if (listObjectsResponse.Contents && listObjectsResponse.Contents.length > 0) {
65
- const deleteParams = {
66
- Bucket: BucketName,
67
- Delete: {
68
- Objects: listObjectsResponse.Contents?.map((x) => ({
69
- Key: x.Key || '',
70
- })).filter((x) => x.Key !== '') || [],
71
- },
72
- };
73
- await s3.deleteObjects(deleteParams).promise();
74
- }
75
- await uploadDir('playground');
76
- const reference = (0, randomstring_1.generate)(16);
77
- const params = {
78
- DistributionId: DistributionName,
79
- InvalidationBatch: {
80
- CallerReference: reference,
81
- Paths: {
82
- Quantity: 1,
83
- Items: ['/*'],
84
- },
85
- },
86
- };
87
- console.log(`Creating Invalidation for (${DistributionName}): ${reference}`);
88
- const invalidation = await cloudfront.createInvalidation(params).promise();
89
- console.log(invalidation);
90
- }
91
- deployToAws()
92
- .then((data) => console.log(data))
93
- .catch((err) => console.error(err));
@@ -1,106 +0,0 @@
1
- // import { CloudFront, S3 } from 'aws-sdk';
2
- import { generate } from 'randomstring';
3
- import { join } from 'path';
4
- import { lookup } from 'mime-types';
5
- import { readdirSync, statSync, readFileSync } from 'fs';
6
- import pkg from 'aws-sdk';
7
- import {version} from '../package.json';
8
- const { CloudFront, S3 } = pkg;
9
-
10
-
11
- import { CreateInvalidationRequest } from 'aws-sdk/clients/cloudfront';
12
- import {DeleteObjectsRequest, ListObjectsV2Request, PutObjectRequest } from 'aws-sdk/clients/s3';
13
-
14
- //Note: Config is injected in CI now. (leaving this for in case we need to do a local)
15
- // import dotenv from 'dotenv';
16
- // dotenv.config();
17
-
18
- const { DIST_NAME, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, BUCKET_NAME } = process.env;
19
-
20
- if (!AWS_ACCESS_KEY_ID || !AWS_SECRET_ACCESS_KEY) throw Error('Please define environment variables for AWS');
21
- if (!DIST_NAME) throw Error('Please define environment variables for DIST_NAME');
22
-
23
-
24
- const DistributionName = DIST_NAME as string;
25
- const BucketName = BUCKET_NAME as string;
26
- const s3 = new S3({
27
- region: 'ap-southeast-2',
28
- });
29
- const cloudfront = new CloudFront();
30
-
31
- async function uploadDir(s3Path: string) {
32
- for (const name of readdirSync(s3Path)) {
33
- const filePath = join(s3Path, name);
34
- const stat = statSync(filePath);
35
-
36
- if (stat.isFile()) {
37
- if (!filePath.endsWith('.map')) await executeUpload(s3Path, filePath);
38
- } else if (stat.isDirectory()) {
39
- await uploadDir(filePath);
40
- }
41
- }
42
- }
43
- async function executeUpload(s3Path: string, filePath: string) {
44
- const parentDir = s3Path.includes('/')
45
- ? s3Path.substring(0, s3Path.indexOf('/'))
46
- : s3Path;
47
- const bucketPath = filePath.substring(parentDir.length + 1);
48
- const options: PutObjectRequest = {
49
- Bucket: BucketName,
50
- Key: `${bucketPath}`,
51
- Body: readFileSync(filePath).toString().replace("{{version}}", version),
52
- };
53
- if (typeof lookup(bucketPath) === 'string') {
54
- options.ContentType = lookup(bucketPath) as string;
55
- }
56
-
57
- await s3.putObject(options).promise();
58
- }
59
-
60
- async function deployToAws() {
61
- const listObjectsParams: ListObjectsV2Request = {
62
- Bucket: BucketName,
63
- Prefix: ``
64
- };
65
-
66
- const listObjectsResponse = await s3
67
- .listObjectsV2(listObjectsParams)
68
- .promise();
69
-
70
- if (listObjectsResponse.Contents && listObjectsResponse.Contents.length > 0) {
71
- const deleteParams: DeleteObjectsRequest = {
72
- Bucket: BucketName,
73
- Delete: {
74
- Objects:
75
- listObjectsResponse.Contents?.map((x) => ({
76
- Key: x.Key || '',
77
- })).filter((x) => x.Key !== '') || [],
78
- },
79
- };
80
- await s3.deleteObjects(deleteParams).promise();
81
- }
82
-
83
- await uploadDir('playground');
84
-
85
- const reference = generate(16);
86
- const params: CreateInvalidationRequest = {
87
- DistributionId: DistributionName,
88
- InvalidationBatch: {
89
- CallerReference: reference,
90
- Paths: {
91
- Quantity: 1,
92
- Items: ['/*'],
93
- },
94
- },
95
- };
96
- console.log(`Creating Invalidation for (${DistributionName}): ${reference}`);
97
-
98
- const invalidation = await cloudfront.createInvalidation(params).promise();
99
- console.log(invalidation);
100
- }
101
-
102
- deployToAws()
103
- .then((data) => console.log(data))
104
- .catch((err) => console.error(err));
105
-
106
-
@@ -1,157 +0,0 @@
1
- <template>
2
- <v-container class="fill-height">
3
- <v-responsive
4
- class="align-centerfill-height mx-auto"
5
- max-width="900"
6
- >
7
- <v-img
8
- class="mb-4"
9
- height="150"
10
- src="@/assets/logo.png"
11
- />
12
-
13
- <div class="text-center">
14
- <div class="text-body-2 font-weight-light mb-n1">Welcome to</div>
15
-
16
- <h1 class="text-h2 font-weight-bold">Vuetify</h1>
17
- </div>
18
-
19
- <div class="py-4" />
20
-
21
- <v-row>
22
- <v-col cols="12">
23
- <v-card
24
- class="py-4"
25
- color="surface-variant"
26
- image="https://cdn.vuetifyjs.com/docs/images/one/create/feature.png"
27
- prepend-icon="mdi-rocket-launch-outline"
28
- rounded="lg"
29
- variant="outlined"
30
- >
31
- <template #image>
32
- <v-img position="top right" />
33
- </template>
34
-
35
- <template #title>
36
- <h2 class="text-h5 font-weight-bold">Get started</h2>
37
- </template>
38
-
39
- <template #subtitle>
40
- <div class="text-subtitle-1">
41
- Replace this page by removing <v-kbd>{{ `<HelloWorld />` }}</v-kbd> in <v-kbd>pages/index.vue</v-kbd>.
42
- </div>
43
- </template>
44
-
45
- <v-overlay
46
- opacity=".12"
47
- scrim="primary"
48
- contained
49
- model-value
50
- persistent
51
- />
52
- </v-card>
53
- </v-col>
54
-
55
- <v-col cols="6">
56
- <v-card
57
- append-icon="mdi-open-in-new"
58
- class="py-4"
59
- color="surface-variant"
60
- href="https://vuetifyjs.com/"
61
- prepend-icon="mdi-text-box-outline"
62
- rel="noopener noreferrer"
63
- rounded="lg"
64
- subtitle="Learn about all things Vuetify in our documentation."
65
- target="_blank"
66
- title="Documentation"
67
- variant="text"
68
- >
69
- <v-overlay
70
- opacity=".06"
71
- scrim="primary"
72
- contained
73
- model-value
74
- persistent
75
- />
76
- </v-card>
77
- </v-col>
78
-
79
- <v-col cols="6">
80
- <v-card
81
- append-icon="mdi-open-in-new"
82
- class="py-4"
83
- color="surface-variant"
84
- href="https://vuetifyjs.com/introduction/why-vuetify/#feature-guides"
85
- prepend-icon="mdi-star-circle-outline"
86
- rel="noopener noreferrer"
87
- rounded="lg"
88
- subtitle="Explore available framework Features."
89
- target="_blank"
90
- title="Features"
91
- variant="text"
92
- >
93
- <v-overlay
94
- opacity=".06"
95
- scrim="primary"
96
- contained
97
- model-value
98
- persistent
99
- />
100
- </v-card>
101
- </v-col>
102
-
103
- <v-col cols="6">
104
- <v-card
105
- append-icon="mdi-open-in-new"
106
- class="py-4"
107
- color="surface-variant"
108
- href="https://vuetifyjs.com/components/all"
109
- prepend-icon="mdi-widgets-outline"
110
- rel="noopener noreferrer"
111
- rounded="lg"
112
- subtitle="Discover components in the API Explorer."
113
- target="_blank"
114
- title="Components"
115
- variant="text"
116
- >
117
- <v-overlay
118
- opacity=".06"
119
- scrim="primary"
120
- contained
121
- model-value
122
- persistent
123
- />
124
- </v-card>
125
- </v-col>
126
-
127
- <v-col cols="6">
128
- <v-card
129
- append-icon="mdi-open-in-new"
130
- class="py-4"
131
- color="surface-variant"
132
- href="https://discord.vuetifyjs.com"
133
- prepend-icon="mdi-account-group-outline"
134
- rel="noopener noreferrer"
135
- rounded="lg"
136
- subtitle="Connect with Vuetify developers."
137
- target="_blank"
138
- title="Community"
139
- variant="text"
140
- >
141
- <v-overlay
142
- opacity=".06"
143
- scrim="primary"
144
- contained
145
- model-value
146
- persistent
147
- />
148
- </v-card>
149
- </v-col>
150
- </v-row>
151
- </v-responsive>
152
- </v-container>
153
- </template>
154
-
155
- <script setup lang="ts">
156
- //
157
- </script>
@@ -1,35 +0,0 @@
1
- # Components
2
-
3
- Vue template files in this folder are automatically imported.
4
-
5
- ## 🚀 Usage
6
-
7
- Importing is handled by [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components). This plugin automatically imports `.vue` files created in the `src/components` directory, and registers them as global components. This means that you can use any component in your application without having to manually import it.
8
-
9
- The following example assumes a component located at `src/components/MyComponent.vue`:
10
-
11
- ```vue
12
- <template>
13
- <div>
14
- <MyComponent />
15
- </div>
16
- </template>
17
-
18
- <script lang="ts" setup>
19
- //
20
- </script>
21
- ```
22
-
23
- When your template is rendered, the component's import will automatically be inlined, which renders to this:
24
-
25
- ```vue
26
- <template>
27
- <div>
28
- <MyComponent />
29
- </div>
30
- </template>
31
-
32
- <script lang="ts" setup>
33
- import MyComponent from '@/components/MyComponent.vue'
34
- </script>
35
- ```
@@ -1,3 +0,0 @@
1
- # Plugins
2
-
3
- Plugins are a way to extend the functionality of your Vue application. Use this folder for registering plugins that you want to use globally.
@@ -1,24 +0,0 @@
1
- export {};
2
-
3
- declare global {
4
- interface Window {
5
- createUnityInstance(element: HTMLElement, config: UnityConfig): Promise<UnityInstance>;
6
- receiveMessageFromUnity(payload: string): void;
7
- }
8
- }
9
- export interface UnityInstance {
10
- SendMessage: (payload: string) => void;
11
- }
12
- export interface UnityConfig {
13
- dataUrl: string;
14
- frameworkUrl: string;
15
- codeUrl: string;
16
- streamingAssetsUrl: string;
17
- companyName: string;
18
- productName: string;
19
- productVersion: string;
20
- webglContextAttributes: WebglConfig;
21
- }
22
- export interface WebglConfig {
23
- preserveDrawingBuffer: boolean;
24
- }