@3cr/viewer-browser 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.browserslistrc +4 -0
- package/.editorconfig +5 -0
- package/.idea/git_toolbox_prj.xml +15 -0
- package/.idea/vcs.xml +6 -0
- package/.idea/workspace.xml +183 -0
- package/.vite/deps/_metadata.json +8 -0
- package/.vite/deps/package.json +3 -0
- package/README.md +81 -0
- package/components.d.ts +19 -0
- package/dist/3cr-viewer-browser.mjs +18644 -0
- package/dist/3cr-viewer-browser.umd.js +18 -0
- package/dist/style.css +5 -0
- package/index.html +24 -0
- package/index.ts +37 -0
- package/package.json +41 -0
- package/src/App.vue +40 -0
- package/src/assets/images/MainBackdrop.svg +48 -0
- package/src/assets/images/dark/3DICOM.png +0 -0
- package/src/assets/images/dark/3dicom-logo.svg +1 -0
- package/src/assets/images/dark/Singular-Health-Disc-Mono.svg +9 -0
- package/src/assets/images/dark/Singular-Health-Trademark-mono.svg +23 -0
- package/src/assets/images/light/3DICOM.png +0 -0
- package/src/assets/images/light/3dicom-logo.svg +1 -0
- package/src/assets/images/light/Singular-Health-Disc-Mono.svg +9 -0
- package/src/assets/images/light/Singular-Health-Trademark-mono.svg +23 -0
- package/src/assets/logo.png +0 -0
- package/src/assets/logo.svg +6 -0
- package/src/components/DoubleSliderSelector.vue +112 -0
- package/src/components/ExpansionHeaderMiniMenu.vue +19 -0
- package/src/components/HelloWorld.vue +157 -0
- package/src/components/LoadingSpinner.vue +157 -0
- package/src/components/MftpWebGL3DRModal.vue +995 -0
- package/src/components/README.md +35 -0
- package/src/components/SliderSelector.vue +101 -0
- package/src/components/VerticalSliderSelector.vue +83 -0
- package/src/components/WebGL3DR.vue +107 -0
- package/src/helpers/layoutOverlayStyle.ts +86 -0
- package/src/helpers/modelHelper.ts +109 -0
- package/src/helpers/models.ts +69 -0
- package/src/helpers/utils.ts +16 -0
- package/src/main.ts +23 -0
- package/src/plugins/README.md +3 -0
- package/src/plugins/index.ts +15 -0
- package/src/plugins/vuetify.ts +27 -0
- package/src/types/window.shim.ts +24 -0
- package/src/vite-env.d.ts +7 -0
- package/tsconfig.json +34 -0
- package/tsconfig.node.json +9 -0
- package/vite.config.mts +74 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import {ref} from "vue";
|
|
3
|
+
|
|
4
|
+
const text = ref<string>('Loading Online Viewer')
|
|
5
|
+
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<div style="height: 80vh">
|
|
10
|
+
<div id="spinner">
|
|
11
|
+
<div class="content">
|
|
12
|
+
<div class="circle"></div>
|
|
13
|
+
<div class="circle"></div>
|
|
14
|
+
<div class="circle"></div>
|
|
15
|
+
<div class="circle"></div>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="mx-auto text-center white--text text-h3" v-html="text"></div>
|
|
19
|
+
</div>
|
|
20
|
+
</template>
|
|
21
|
+
|
|
22
|
+
<style>
|
|
23
|
+
:root {
|
|
24
|
+
--sp: 2.5s; /* change speed */
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
#spinner {
|
|
28
|
+
margin: 0;
|
|
29
|
+
padding: 0;
|
|
30
|
+
width: 100%;
|
|
31
|
+
height: 100%;
|
|
32
|
+
overflow: hidden;
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
justify-content: center;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.content {
|
|
39
|
+
width: 50vmin;
|
|
40
|
+
height: 50vmin;
|
|
41
|
+
position: relative;
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
justify-content: center;
|
|
45
|
+
transform: scale(0.65);
|
|
46
|
+
animation: spin-all calc(var(--sp) * 2) linear 1s infinite;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.circle {
|
|
50
|
+
--in: 80%;
|
|
51
|
+
--ar: #8799a4;
|
|
52
|
+
--dt: #ffffff;
|
|
53
|
+
--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));
|
|
54
|
+
--cross: linear-gradient(0deg, #fff0 calc(50% - 2px), #000 calc(50% - 1px) calc(50% + 1px), #fff0 calc(50% + 2px)),
|
|
55
|
+
linear-gradient(90deg, #fff0 calc(50% - 2px), #000 calc(50% - 1px) calc(50% + 1px), #fff0 calc(50% + 2px));
|
|
56
|
+
border: 6vmin solid var(--ar);
|
|
57
|
+
width: var(--in);
|
|
58
|
+
height: var(--in);
|
|
59
|
+
border-radius: 100%;
|
|
60
|
+
position: absolute;
|
|
61
|
+
box-sizing: border-box;
|
|
62
|
+
border-top-color: #fff0;
|
|
63
|
+
border-left-color: #fff0;
|
|
64
|
+
top: 15vmin;
|
|
65
|
+
right: -10vmin;
|
|
66
|
+
animation: spin-bot var(--sp) ease 0s infinite;
|
|
67
|
+
background-image: var(--cross), radial-gradient(var(--dt) 5.5vmin, #fff0 calc(5.5vmin + 1px));
|
|
68
|
+
background-repeat: no-repeat;
|
|
69
|
+
background-size: 3vmin 1vmin, 1vmin 3vmin, 100% 100%;
|
|
70
|
+
background-position: center center;
|
|
71
|
+
filter: var(--shadow);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.circle:nth-child(2) {
|
|
75
|
+
--in: 60%;
|
|
76
|
+
top: -2vmin;
|
|
77
|
+
animation: spin-top var(--sp) ease 0s infinite;
|
|
78
|
+
transform: rotate(-45deg);
|
|
79
|
+
background-image: var(--cross), radial-gradient(var(--dt) 1.25vmin, #fff0 calc(1.25vmin + 1px));
|
|
80
|
+
right: -4vmin;
|
|
81
|
+
filter: hue-rotate(10deg) var(--shadow);
|
|
82
|
+
background-size: 1.4vmin 1vmin, 1vmin 1.4vmin, 100% 100%;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.circle:nth-child(3) {
|
|
86
|
+
--in: 100%;
|
|
87
|
+
top: -5vmin;
|
|
88
|
+
left: -13vmin;
|
|
89
|
+
transform: rotate(175deg);
|
|
90
|
+
animation: spin-left var(--sp) ease calc(var(--sp) / 4) infinite;
|
|
91
|
+
background-image: var(--cross), radial-gradient(var(--dt) 9vmin, #fff0 calc(9vmin + 1px));
|
|
92
|
+
filter: hue-rotate(20deg) var(--shadow);
|
|
93
|
+
background-size: 5vmin 1vmin, 1vmin 5vmin, 100% 100%;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.circle:nth-child(4) {
|
|
97
|
+
--in: 60%;
|
|
98
|
+
top: 35vmin;
|
|
99
|
+
left: -6vmin;
|
|
100
|
+
transform: rotate(-280deg);
|
|
101
|
+
animation: spin-last var(--sp) ease calc(calc(calc(var(--sp) / 4) + var(--sp)) * -1) infinite;
|
|
102
|
+
background-image: var(--cross), radial-gradient(var(--dt) 2.5vmin, #fff0 calc(2.5vmin + 1px));
|
|
103
|
+
filter: hue-rotate(30deg) var(--shadow);
|
|
104
|
+
background-size: 2vmin 1vmin, 1vmin 2vmin, 100% 100%;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@keyframes spin-all {
|
|
108
|
+
0% {
|
|
109
|
+
transform: rotate(0deg) scale(0.65);
|
|
110
|
+
}
|
|
111
|
+
100% {
|
|
112
|
+
transform: rotate(360deg) scale(0.65);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@keyframes spin-top {
|
|
117
|
+
0% {
|
|
118
|
+
transform: rotate(-45deg);
|
|
119
|
+
}
|
|
120
|
+
100% {
|
|
121
|
+
transform: rotate(315deg);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
@keyframes spin-bot {
|
|
126
|
+
0%,
|
|
127
|
+
35% {
|
|
128
|
+
transform: rotate(0deg);
|
|
129
|
+
}
|
|
130
|
+
80%,
|
|
131
|
+
100% {
|
|
132
|
+
transform: rotate(-360deg);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
@keyframes spin-left {
|
|
137
|
+
0%,
|
|
138
|
+
35% {
|
|
139
|
+
transform: rotate(175deg);
|
|
140
|
+
}
|
|
141
|
+
80%,
|
|
142
|
+
100% {
|
|
143
|
+
transform: rotate(535deg);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@keyframes spin-last {
|
|
148
|
+
0%,
|
|
149
|
+
10% {
|
|
150
|
+
transform: rotate(-280deg);
|
|
151
|
+
}
|
|
152
|
+
90%,
|
|
153
|
+
100% {
|
|
154
|
+
transform: rotate(-640deg);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
</style>
|