@realsee/dnalogel 2.1.0-alpha.16 → 2.1.0-alpha.17

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 (202) hide show
  1. package/dist/CSS3DRenderPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  2. package/dist/CameraMovementPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  3. package/dist/CruisePlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  4. package/dist/GuideLinePlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  5. package/dist/ItemLabelPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  6. package/dist/ModelChassisCompassPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  7. package/dist/ModelEntryDoorGuidePlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  8. package/dist/ModelItemLabelPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  9. package/dist/ModelRoomLabelPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  10. package/dist/ModelTVVideoPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  11. package/dist/ModelViewPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  12. package/dist/Object3DHelperPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  13. package/dist/PanoCompassPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  14. package/dist/PanoCursorRaycasterPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  15. package/dist/PanoDoorLabelPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  16. package/dist/PanoMeasurePlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  17. package/dist/PanoRulerPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  18. package/dist/PanoRulerProPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  19. package/dist/PanoSpatialTagPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  20. package/dist/PanoTagPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  21. package/dist/PanoTagPlugin/index.js +89 -84
  22. package/dist/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  23. package/dist/floorplan/MapviewFloorplanPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  24. package/dist/floorplan/ModelFloorplanPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  25. package/dist/floorplan/PanoFloorplanRadarPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  26. package/dist/floorplan/TopviewFloorplanPlugin/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  27. package/dist/index.es.js +89 -84
  28. package/dist/index.js +89 -84
  29. package/dist/index.umd.js +89 -84
  30. package/docs/classes/CruisePluginController.html +14 -14
  31. package/docs/classes/Magnifier.html +4 -4
  32. package/docs/classes/ModelRoomLabelController.html +4 -4
  33. package/docs/classes/Object3DHelperController.html +9 -9
  34. package/docs/classes/PanoTagPluginController.html +23 -23
  35. package/docs/enums/CameraMovementEffect.html +2 -2
  36. package/docs/enums/ContentType.html +7 -7
  37. package/docs/enums/DIRECTION.html +1 -1
  38. package/docs/enums/DISPLAY_STRATEGY_TYPE.html +1 -1
  39. package/docs/enums/DimensionType.html +1 -1
  40. package/docs/enums/FLOOR_PLAN_ATTACHED_TO.html +1 -1
  41. package/docs/enums/ITEM_LABEL_PLUGIN_DISPLAY_STRATEGY_TYPE.html +1 -1
  42. package/docs/enums/LinkType.html +1 -1
  43. package/docs/enums/PointType.html +1 -1
  44. package/docs/enums/Rotation.html +2 -2
  45. package/docs/index.html +1 -1
  46. package/docs/interfaces/CSS3DRenderPluginEventMap.html +2 -2
  47. package/docs/interfaces/CSS3DRenderPluginState.html +2 -2
  48. package/docs/interfaces/CameraMovementPluginExportType.html +2 -2
  49. package/docs/interfaces/FloorplanBounding.html +4 -4
  50. package/docs/interfaces/FloorplanData.html +2 -2
  51. package/docs/interfaces/FloorplanEntrance.html +7 -7
  52. package/docs/interfaces/FloorplanExtraObject.html +3 -3
  53. package/docs/interfaces/FloorplanExtraObject3D.html +2 -2
  54. package/docs/interfaces/FloorplanFloorData.html +2 -2
  55. package/docs/interfaces/FloorplanImagePosition.html +2 -2
  56. package/docs/interfaces/FloorplanObserver.html +2 -2
  57. package/docs/interfaces/FloorplanOutlineItem.html +2 -2
  58. package/docs/interfaces/FloorplanPosition.html +2 -2
  59. package/docs/interfaces/FloorplanRoomItem.html +6 -6
  60. package/docs/interfaces/FloorplanRoomLabelItem.html +3 -3
  61. package/docs/interfaces/FloorplanServerBounding.html +4 -4
  62. package/docs/interfaces/FloorplanServerComputedData.html +1 -1
  63. package/docs/interfaces/FloorplanServerData.html +2 -2
  64. package/docs/interfaces/FloorplanServerDoorItem.html +1 -1
  65. package/docs/interfaces/FloorplanServerDoorPosition.html +1 -1
  66. package/docs/interfaces/FloorplanServerEntrance.html +7 -7
  67. package/docs/interfaces/FloorplanServerFloorData.html +2 -2
  68. package/docs/interfaces/FloorplanServerImagePosition.html +2 -2
  69. package/docs/interfaces/FloorplanServerObserver.html +2 -2
  70. package/docs/interfaces/FloorplanServerOutlineItem.html +2 -2
  71. package/docs/interfaces/FloorplanServerPosition.html +2 -2
  72. package/docs/interfaces/FloorplanServerRoomItem.html +7 -7
  73. package/docs/interfaces/FloorplanServerRoomLabelItem.html +3 -3
  74. package/docs/interfaces/ItemLabelPluginData.html +1 -1
  75. package/docs/interfaces/ItemLabelPluginExportReturnsType.html +1 -1
  76. package/docs/interfaces/ItemLabelPluginParametersType.html +1 -1
  77. package/docs/interfaces/LineJson.html +1 -1
  78. package/docs/interfaces/ModelChassisCompassPluginData.html +1 -1
  79. package/docs/interfaces/ModelChassisCompassPluginExportType.html +1 -1
  80. package/docs/interfaces/ModelChassisCompassPluginParameterType.html +1 -1
  81. package/docs/interfaces/ModelEntryDoorGuidePluginData.html +1 -1
  82. package/docs/interfaces/ModelEntryDoorGuidePluginExportType.html +1 -1
  83. package/docs/interfaces/ModelItemLabelPluginData.html +1 -1
  84. package/docs/interfaces/ModelItemLabelPluginExportReturnsType.html +1 -1
  85. package/docs/interfaces/ModelItemLabelPluginParametersType.html +1 -1
  86. package/docs/interfaces/ModelRoomLabelPluginData.html +1 -1
  87. package/docs/interfaces/ModelTVVideoPluginData.html +1 -1
  88. package/docs/interfaces/ModelTVVideoPluginExportType.html +1 -1
  89. package/docs/interfaces/ModelTVVideoPluginParameterType.html +1 -1
  90. package/docs/interfaces/ModelViewPluginExportType.html +1 -1
  91. package/docs/interfaces/Object3DHelperState.html +1 -1
  92. package/docs/interfaces/OpenParameter.html +2 -2
  93. package/docs/interfaces/PanoCursorRaycasterPluginExportType.html +6 -6
  94. package/docs/interfaces/PanoCursorRaycasterPluginParameterType.html +1 -1
  95. package/docs/interfaces/PanoMeasureParameterType.html +2 -2
  96. package/docs/interfaces/PanoRulerPluginExportType.html +1 -1
  97. package/docs/interfaces/PanoRulerPluginOptions.html +1 -1
  98. package/docs/interfaces/PanoRulerPluginParameterType.html +1 -1
  99. package/docs/interfaces/PanoRulerProPluginExportType.html +1 -1
  100. package/docs/interfaces/PanoRulerProPluginOptions.html +1 -1
  101. package/docs/interfaces/PanoRulerProPluginParameterType.html +1 -1
  102. package/docs/interfaces/PanoRulerProPluginState.html +1 -1
  103. package/docs/interfaces/PanoSpatialTagPluginContentEvent.html +1 -1
  104. package/docs/interfaces/PanoSpatialTagPluginContentReplacement.html +1 -1
  105. package/docs/interfaces/PanoSpatialTagPluginData.html +1 -1
  106. package/docs/interfaces/PanoSpatialTagPluginDataElement.html +1 -1
  107. package/docs/interfaces/PanoSpatialTagPluginExportType.html +1 -1
  108. package/docs/interfaces/PanoSpatialTagPluginOriginElement.html +1 -1
  109. package/docs/interfaces/PanoSpatialTagPluginParameterType.html +1 -1
  110. package/docs/interfaces/PanoSpatialTagPluginPointElement.html +1 -1
  111. package/docs/interfaces/PanoSpatialTagPluginTagElement.html +1 -1
  112. package/docs/interfaces/Point.html +1 -1
  113. package/docs/interfaces/PointJson.html +1 -1
  114. package/docs/interfaces/Room.html +1 -1
  115. package/docs/interfaces/RoomInfo.html +1 -1
  116. package/docs/interfaces/RoomLabel.html +7 -7
  117. package/docs/interfaces/RoomRules.html +1 -1
  118. package/docs/interfaces/Rooms.html +1 -1
  119. package/docs/interfaces/Scissor.html +5 -5
  120. package/docs/interfaces/TagConfig.html +3 -3
  121. package/docs/interfaces/Tags.html +3 -3
  122. package/docs/modules.html +21 -21
  123. package/libs/ItemLabelPlugin/Plugin.js +1 -1
  124. package/libs/ItemLabelPlugin/typings.d.ts +1 -1
  125. package/libs/ModelItemLabelPlugin/ModelItemLabelPlugin.js +1 -1
  126. package/libs/ModelItemLabelPlugin/typings.d.ts +1 -1
  127. package/libs/ModelRoomLabelPlugin/Controller.js +1 -1
  128. package/libs/PanoDoorLabelPlugin/Controller.js +1 -1
  129. package/libs/PanoRulerProPlugin/Controller.js +1 -1
  130. package/libs/PanoSpatialTagPlugin/Plugin.js +2 -2
  131. package/libs/PanoTagPlugin/Components/Common/MediaItem.js +6 -5
  132. package/libs/PanoTagPlugin/Components/Common/Point/PointSwitch.js +15 -13
  133. package/libs/PanoTagPlugin/Components/Tag/AudioTag.js +6 -5
  134. package/libs/PanoTagPlugin/Components/Tag/ImageTextTag.js +17 -15
  135. package/libs/PanoTagPlugin/Components/Tag/LinkTag.js +9 -9
  136. package/libs/PanoTagPlugin/Components/Tag/MarketingTag.js +17 -15
  137. package/libs/PanoTagPlugin/Components/Tag/MediaPlane.js +12 -18
  138. package/libs/PanoTagPlugin/Components/Tag/TextTag.js +4 -3
  139. package/libs/PanoTagPlugin/controller/index.js +6 -6
  140. package/libs/PanoTagPlugin/typings/controller.d.ts +1 -1
  141. package/libs/PanoTagPlugin/utils/nullishCoalescing.d.ts +2 -0
  142. package/libs/PanoTagPlugin/utils/nullishCoalescing.js +9 -0
  143. package/libs/floorplan/MapviewFloorplanPlugin/Controller.js +1 -1
  144. package/libs/floorplan/ModelFloorplanPlugin/Controller.js +1 -1
  145. package/libs/floorplan/PanoFloorplanRadarPlugin/Controller.js +1 -1
  146. package/libs/floorplan/TopviewFloorplanPlugin/Controller.js +1 -1
  147. package/package.json +1 -1
  148. package/libs/ItemLabelPlugin/ItemLabelComponent.svelte +0 -251
  149. package/libs/ItemLabelPlugin/ItemLabelItem.svelte +0 -183
  150. package/libs/ModelItemLabelPlugin/ItemLabelComponent.svelte +0 -155
  151. package/libs/ModelItemLabelPlugin/ItemLabelItem.svelte +0 -100
  152. package/libs/ModelRoomLabelPlugin/RoomLabelItem.svelte +0 -63
  153. package/libs/ModelRoomLabelPlugin/RoomLabelItems.svelte +0 -91
  154. package/libs/PanoDoorLabelPlugin/DoorLabelItem.svelte +0 -200
  155. package/libs/PanoRulerProPlugin/RulerItem.svelte +0 -166
  156. package/libs/PanoRulerProPlugin/RulerItems.svelte +0 -212
  157. package/libs/PanoSpatialTagPlugin/Components/origins.svelte +0 -58
  158. package/libs/PanoSpatialTagPlugin/Components/tag.svelte +0 -292
  159. package/libs/PanoTagPlugin/Components/Common/Arrow.svelte +0 -56
  160. package/libs/PanoTagPlugin/Components/Common/Audio.svelte +0 -82
  161. package/libs/PanoTagPlugin/Components/Common/Line/Polyline.svelte +0 -36
  162. package/libs/PanoTagPlugin/Components/Common/Line/Straight.svelte +0 -36
  163. package/libs/PanoTagPlugin/Components/Common/Media.svelte +0 -96
  164. package/libs/PanoTagPlugin/Components/Common/MediaItem.svelte +0 -49
  165. package/libs/PanoTagPlugin/Components/Common/MultiLineText.svelte +0 -56
  166. package/libs/PanoTagPlugin/Components/Common/Point/CustomPoint.svelte +0 -120
  167. package/libs/PanoTagPlugin/Components/Common/Point/DefaultPoint.svelte +0 -81
  168. package/libs/PanoTagPlugin/Components/Common/Point/PointSwitch.svelte +0 -30
  169. package/libs/PanoTagPlugin/Components/Common/Shadow.svelte +0 -46
  170. package/libs/PanoTagPlugin/Components/Common/Text.svelte +0 -91
  171. package/libs/PanoTagPlugin/Components/Common/TextItem.svelte +0 -42
  172. package/libs/PanoTagPlugin/Components/PointTag.svelte +0 -55
  173. package/libs/PanoTagPlugin/Components/Tag/AudioTag.svelte +0 -105
  174. package/libs/PanoTagPlugin/Components/Tag/CustomTag.svelte +0 -33
  175. package/libs/PanoTagPlugin/Components/Tag/ImageTextTag.svelte +0 -63
  176. package/libs/PanoTagPlugin/Components/Tag/LinkTag.svelte +0 -167
  177. package/libs/PanoTagPlugin/Components/Tag/MarketingTag.svelte +0 -235
  178. package/libs/PanoTagPlugin/Components/Tag/MediaPlane.svelte +0 -32
  179. package/libs/PanoTagPlugin/Components/Tag/TextTag.svelte +0 -63
  180. package/libs/PanoTagPlugin/Components/Tag/index.svelte +0 -154
  181. package/libs/PanoTagPlugin/Components/TagWrapper.svelte +0 -64
  182. package/libs/floorplan/Components/BaseImage.svelte +0 -26
  183. package/libs/floorplan/Components/Camera.svelte +0 -46
  184. package/libs/floorplan/Components/Compass.svelte +0 -51
  185. package/libs/floorplan/Components/CurrentFloor.svelte +0 -57
  186. package/libs/floorplan/Components/Main.svelte +0 -55
  187. package/libs/floorplan/Components/Normalmage.svelte +0 -11
  188. package/libs/floorplan/Components/RoomHighlight/Room.svelte +0 -27
  189. package/libs/floorplan/Components/RoomHighlight/RoomHighlight.svelte +0 -29
  190. package/libs/floorplan/Components/RoomLabels/RoomLabel.svelte +0 -120
  191. package/libs/floorplan/Components/RoomLabels/RoomLabels.svelte +0 -45
  192. package/libs/floorplan/Components/RoomMaterials/RoomMaterial.svelte +0 -42
  193. package/libs/floorplan/Components/RoomMaterials/RoomMaterial_0.svelte +0 -7
  194. package/libs/floorplan/Components/RoomMaterials/RoomMaterial_1.svelte +0 -24
  195. package/libs/floorplan/Components/RoomMaterials/RoomMaterial_2.svelte +0 -33
  196. package/libs/floorplan/Components/RuleLabels/RuleItem.svelte +0 -175
  197. package/libs/floorplan/Components/RuleLabels/RuleLabels.svelte +0 -33
  198. package/libs/floorplan/Components/SvgImage.svelte +0 -28
  199. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/Camera.svelte +0 -85
  200. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/CurrentFloor/CurrentFloor.svelte +0 -18
  201. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/CurrentFloor/ExtraObjects.svelte +0 -40
  202. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/Main.svelte +0 -64
@@ -1,154 +0,0 @@
1
- <script>var _a, _b;
2
- import { ContentType } from '../../typings';
3
- import TextTag from './TextTag.svelte';
4
- import ImageTextTag from './ImageTextTag.svelte';
5
- import MarketingTag from './MarketingTag.svelte';
6
- import { noTypecheck } from '../../utils';
7
- import { setContext } from 'svelte';
8
- import AudioTag from './AudioTag.svelte';
9
- import MediaPlane from './MediaPlane.svelte';
10
- import LinkTag from './LinkTag.svelte';
11
- import CustomTag from './CustomTag.svelte';
12
- export let withAnimation = false;
13
- export let tag;
14
- export let hooks;
15
- export let state;
16
- export let mediaStore;
17
- export let temporaryState;
18
- $: unfolded = (_a = tag.state) === null || _a === void 0 ? void 0 : _a.unfolded;
19
- $: visible = (_b = tag.state) === null || _b === void 0 ? void 0 : _b.visible;
20
- $: isVisible = state.visible && temporaryState.visible && visible;
21
- $: tagId = tag.id;
22
- setContext('hooks', hooks);
23
- let lastVisibleState;
24
- let lastUnfoldedState;
25
- function exposureEmit(isVisible) {
26
- if (isVisible)
27
- hooks.emit('exposure', { id: tagId, type: 'start' });
28
- else
29
- hooks.emit('exposure', { id: tagId, type: 'end' });
30
- }
31
- $: exposureEmit(isVisible);
32
- $: {
33
- if (tag.hooks) {
34
- if (unfolded !== undefined && unfolded !== lastUnfoldedState) {
35
- lastUnfoldedState = unfolded;
36
- if (unfolded)
37
- tag.hooks.emit('unfolded');
38
- else
39
- tag.hooks.emit('folded');
40
- }
41
- if (visible !== undefined && visible !== lastVisibleState) {
42
- lastVisibleState = visible;
43
- if (visible)
44
- tag.hooks.emit('show');
45
- else
46
- tag.hooks.emit('hide');
47
- }
48
- }
49
- }
50
- </script>
51
-
52
- <div
53
- class="content__container"
54
- class:disable={tag.enabled === false || tag.temporaryState?.visible === false}
55
- class:hide={!state.visible || !temporaryState.visible || !tag.state?.visible}
56
- class:withAnimation
57
- class:unClickable={tag.clickable === false}
58
- style:width={tag.pointType === 'PointTag' ? 0 : '100%'}
59
- style:height={tag.pointType === 'PointTag' ? 0 : '100%'}
60
- data-id={tag.id}
61
- on:click|stopPropagation={(event) => hooks.emit('click', { event, target: 'TagContent', tag })}
62
- >
63
- <div class="content__wrapper">
64
- <div class="content" class:unfolded={tag.state?.unfolded}>
65
- {#if tag.element}
66
- <CustomTag tag={noTypecheck(tag)} />
67
- {:else if tag.contentType === ContentType.Text}
68
- <TextTag tag={noTypecheck(tag)} />
69
- {:else if tag.contentType === ContentType.ImageText}
70
- <ImageTextTag tag={noTypecheck(tag)} />
71
- {:else if tag.contentType === ContentType.Audio}
72
- <AudioTag {mediaStore} tag={noTypecheck(tag)} />
73
- {:else if tag.contentType === ContentType.Marketing}
74
- <MarketingTag tag={noTypecheck(tag)} />
75
- {:else if tag.contentType === ContentType.Link}
76
- <LinkTag tag={noTypecheck(tag)} />
77
- {:else if tag.contentType === ContentType.MediaPlane}
78
- <MediaPlane tag={noTypecheck(tag)} />
79
- {/if}
80
- </div>
81
- </div>
82
- </div>
83
-
84
- <style>
85
- @font-face {
86
- font-family: 'TG-TYPE';
87
- font-style: normal;
88
- font-weight: 400;
89
- /* src: local('TG-TYPE-Bold'), url(//vrlab-static.ljcdn.com/release/web/TG-TYPE-Bold.769fe64d.otf) format('woff2'); */
90
- src: local('TG-TYPE-Bold'),
91
- url(data:application/font-woff2;charset=utf-8;base64,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)
92
- format('woff2');
93
- }
94
-
95
- .content__container {
96
- position: relative;
97
- left: 50%;
98
- top: 50%;
99
- transform: translate(-50%, -50%);
100
- font-family: PingFangSC, Segoe UI, Rototo, sans-serif;
101
- }
102
-
103
- .content__container.unClickable {
104
- pointer-events: none !important;
105
- }
106
-
107
- .content__container.unClickable :global(*) {
108
- pointer-events: none !important;
109
- }
110
-
111
- :global(*) {
112
- -webkit-tap-highlight-color: transparent;
113
- }
114
- .content__wrapper {
115
- pointer-events: none;
116
- width: 100%;
117
- height: 100%;
118
- }
119
-
120
- .withAnimation {
121
- transition: opacity 0.3s linear;
122
- }
123
-
124
- .content__container.hide {
125
- opacity: 0;
126
- pointer-events: none;
127
- }
128
-
129
- .content__container.disable {
130
- display: none;
131
- }
132
-
133
- .content__container.hide :global(*) {
134
- pointer-events: none;
135
- }
136
-
137
- .content {
138
- position: relative;
139
- width: 100%;
140
- height: 100%;
141
- font-size: 12px;
142
- line-height: 18px;
143
- color: #fff;
144
- }
145
- .content:not(.unfolded) {
146
- pointer-events: none;
147
- }
148
- .content:not(.unfolded) :global(*) {
149
- pointer-events: none !important;
150
- }
151
- .content.unfolded {
152
- pointer-events: auto;
153
- }
154
- </style>
@@ -1,64 +0,0 @@
1
- <script>var _a, _b, _c, _d, _e;
2
- import { noTypecheck } from '../utils';
3
- import { DimensionType, ContentType, PointType } from '../typings';
4
- import TagContent from './Tag/index.svelte';
5
- import TagPoint from './Common/Point/PointSwitch.svelte';
6
- import 'svelte';
7
- export let withAnimation = false;
8
- export let tag;
9
- export let hooks;
10
- export let state;
11
- export let mediaStore;
12
- export let temporaryState;
13
- $: show = (_a = tag.state) === null || _a === void 0 ? void 0 : _a.visible;
14
- $: hide = !show;
15
- $: unfolded = (_b = tag.state) === null || _b === void 0 ? void 0 : _b.unfolded;
16
- $: left = ((_c = tag.pointTagStyle) === null || _c === void 0 ? void 0 : _c.leftPercent) + '%';
17
- $: top = ((_d = tag.pointTagStyle) === null || _d === void 0 ? void 0 : _d.topPercent) + '%';
18
- $: zIndex = tag.contentType === ContentType.Link ? 20 : ((_e = tag.state) === null || _e === void 0 ? void 0 : _e.unfolded) ? 10 : 0;
19
- let timeout;
20
- let animating = false;
21
- function setAnimating(trigger) {
22
- if (timeout !== undefined)
23
- clearTimeout(timeout);
24
- animating = true;
25
- timeout = setTimeout(() => {
26
- animating = false;
27
- }, 800);
28
- }
29
- $: setAnimating(unfolded);
30
- const handlePointClick = (event) => {
31
- if (animating)
32
- return;
33
- hooks.emit('click', { event, target: 'TagPoint', tag });
34
- };
35
- </script>
36
-
37
- <div class="wrapper" class:hide class:unfolded style:left style:top style:z-index={zIndex} data-id={tag.id}>
38
- {#if tag.dimensionType === DimensionType.Two}
39
- <TagContent {mediaStore} {withAnimation} tag={noTypecheck(tag)} {hooks} {state} {temporaryState} />
40
- {/if}
41
- {#if tag.pointType === PointType.PointTag && tag.style?.point?.style !== 'noPoint'}
42
- <div class="point" on:click|stopPropagation={handlePointClick}>
43
- <TagPoint {tag} />
44
- </div>
45
- {/if}
46
- </div>
47
-
48
- <style>
49
- .wrapper {
50
- position: absolute;
51
- width: 0px;
52
- height: 0px;
53
- overflow: visible;
54
- pointer-events: auto;
55
- }
56
-
57
- .point {
58
- -webkit-tap-highlight-color: transparent;
59
- position: absolute;
60
- transform: translate(-50%, -50%);
61
- left: 50%;
62
- top: 50%;
63
- }
64
- </style>
@@ -1,26 +0,0 @@
1
- <script>var _a, _b;
2
- import NormalImage from './Normalmage.svelte';
3
- import SvgImage from './SvgImage.svelte';
4
- export let floorIndex;
5
- export let floorplanData;
6
- $: imageData = floorplanData.outlines[floorIndex];
7
- $: svgContent = (_b = (_a = floorplanData.outlines) === null || _a === void 0 ? void 0 : _a[floorIndex]) === null || _b === void 0 ? void 0 : _b.svgContent;
8
- </script>
9
-
10
- <div class="floorplan-plugin__base-image">
11
- {#if svgContent}
12
- <SvgImage content={svgContent} />
13
- {:else if imageData}
14
- <NormalImage url={imageData.url} />
15
- {/if}
16
- </div>
17
-
18
- <style>
19
- .floorplan-plugin__base-image {
20
- position: absolute;
21
- z-index: 10;
22
- width: 100%;
23
- height: 100%;
24
- pointer-events: none;
25
- }
26
- </style>
@@ -1,46 +0,0 @@
1
- <script>import { CAMERA_IMAGE } from '../Assets/camera';
2
- import rad2Deg from '../../shared-utils/math/rad2Deg';
3
- export let panoIndex;
4
- export let floorplanData;
5
- export let lastPanoramaLongitude;
6
- export let cameraImageUrl;
7
- const { observers } = floorplanData;
8
- const observer = observers[panoIndex];
9
- const leftRatio = observer.positionInImage.x;
10
- const topRatio = observer.positionInImage.y;
11
- const positionLeft = leftRatio * 100 + '%';
12
- const positionTop = topRatio * 100 + '%';
13
- const rotate = -rad2Deg(lastPanoramaLongitude) + 45;
14
- // TODO: 统一这里的判断条件,目前写了多处
15
- const bodyWidth = document.body.clientWidth;
16
- const bodyHeight = document.body.clientHeight;
17
- const size = bodyWidth < 500 || bodyHeight < 500 ? 17 : 37;
18
- const domSizeStyle = `${size / 16}rem`;
19
- </script>
20
-
21
- <div class="floorplan__camera-position" style:left={positionLeft} style:top={positionTop}>
22
- <div
23
- class="floorplan__camera-rotate"
24
- style:width={domSizeStyle}
25
- style:height={domSizeStyle}
26
- style:left={'-' + domSizeStyle}
27
- style:top={'-' + domSizeStyle}
28
- style:transform={`rotate(${rotate}deg)`}
29
- style:transform-origin={`${domSizeStyle} ${domSizeStyle}`}
30
- style="background-image: {`url(${cameraImageUrl || CAMERA_IMAGE})`}"
31
- />
32
- </div>
33
-
34
- <style lang="postcss">
35
- .floorplan__camera-position {
36
- position: absolute;
37
- width: 0;
38
- height: 0;
39
- }
40
-
41
- .floorplan__camera-rotate {
42
- position: absolute;
43
- background-repeat: no-repeat;
44
- background-size: 100%;
45
- }
46
- </style>
@@ -1,51 +0,0 @@
1
- <script>var _a;
2
- import { COMPASS_IMAGE } from '../Assets/compass';
3
- function rad2Deg(rad) {
4
- return (rad / Math.PI) * 180;
5
- }
6
- export let floorplanData;
7
- export let northDesc;
8
- const northRad = (_a = floorplanData.entrance) === null || _a === void 0 ? void 0 : _a.northRad;
9
- const canCompassShow = typeof northRad === 'number';
10
- const rotate = !northRad ? 0 : rad2Deg(northRad);
11
- const compassTransformStyle = `translateX(-50%) translateZ(10px) rotate(${-rotate + 90}deg)`;
12
- </script>
13
-
14
- {#if canCompassShow}
15
- <div class="floorplan-plugin__compass" style:transform={compassTransformStyle}>
16
- <div class="floorplan-plugin__compass-image" style="background-image: {`url(${COMPASS_IMAGE})`}" />
17
- <span class="floorplan-plugin__compass-text"> {northDesc} </span>
18
- </div>
19
- {/if}
20
-
21
- <style>
22
- .floorplan-plugin__compass {
23
- position: absolute;
24
- left: 50%;
25
- top: -46px;
26
- width: 231px;
27
- height: 41px;
28
- will-change: opacity;
29
- transform-origin: center 184px;
30
- }
31
- .floorplan-plugin__compass-image {
32
- width: 100%;
33
- height: 100%;
34
- position: absolute;
35
- left: 0;
36
- top: 0;
37
- opacity: 0.1;
38
- background-repeat: no-repeat;
39
- background-size: 100% 100%;
40
- }
41
- .floorplan-plugin__compass-text {
42
- position: absolute;
43
- left: 50%;
44
- top: 15px;
45
- transform: translateX(-50%);
46
- opacity: 0.2;
47
- font-weight: bold;
48
- font-size: 10px;
49
- color: #fff;
50
- }
51
- </style>
@@ -1,57 +0,0 @@
1
- <script>import { writable } from 'svelte/store';
2
- import BaseImage from './BaseImage.svelte';
3
- import RoomLabels from './RoomLabels/RoomLabels.svelte';
4
- import RuleLabels from './RuleLabels/RuleLabels.svelte';
5
- import RoomMaterial from './RoomMaterials/RoomMaterial.svelte';
6
- import RoomHighlight from './RoomHighlight/RoomHighlight.svelte';
7
- export let isCurrent;
8
- export let floorIndex;
9
- export let hoverEnable;
10
- export let roomLabelsEnable;
11
- export let ruleLabelsEnable;
12
- export let floorplanData;
13
- export let getRoomAreaText;
14
- export let getLabelElement;
15
- export let getRuleDistanceText;
16
- export let adaptiveRoomLabelVisibleEnable;
17
- const hoveredRoom = writable(undefined);
18
- </script>
19
-
20
- <div class="{`floorplan-plugin__floor${isCurrent ? ' floorplan-plugin__floor--is-current' : ''}`}">
21
- <RoomMaterial {...{ floorIndex, floorplanData }} />
22
- {#if hoverEnable}
23
- <RoomHighlight {...{ floorIndex, floorplanData, hoveredRoom }} />
24
- {/if}
25
- <BaseImage {...{ floorplanData, floorIndex }} />
26
- {#if roomLabelsEnable}
27
- <RoomLabels
28
- {...{
29
- floorplanData,
30
- floorIndex,
31
- getRoomAreaText,
32
- getLabelElement,
33
- hoveredRoom,
34
- adaptiveRoomLabelVisibleEnable,
35
- }}
36
- />
37
- {/if}
38
- {#if ruleLabelsEnable}
39
- <RuleLabels {...{ floorplanData, floorIndex, getRuleDistanceText }} />
40
- {/if}
41
- </div>
42
-
43
- <style>
44
- .floorplan-plugin__floor {
45
- position: absolute;
46
- left: 0;
47
- top: 0;
48
- width: 100%;
49
- height: 100%;
50
- opacity: 0;
51
- pointer-events: none;
52
- }
53
- .floorplan-plugin__floor--is-current {
54
- opacity: 1;
55
- pointer-events: auto;
56
- }
57
- </style>
@@ -1,55 +0,0 @@
1
- <script>import { linear } from 'svelte/easing';
2
- import { fade } from 'svelte/transition';
3
- import Camera from './Camera.svelte';
4
- import Compass from './Compass.svelte';
5
- import CurrentFloor from './CurrentFloor.svelte';
6
- export let duration = 0;
7
- export let visible;
8
- export let northDesc;
9
- export let panoIndex;
10
- export let floorIndex;
11
- export let hoverEnable;
12
- export let compassEnable;
13
- export let roomLabelsEnable;
14
- export let ruleLabelsEnable;
15
- export let floorplanData;
16
- export let lastPanoramaLongitude;
17
- export let cameraImageUrl;
18
- export let getRoomAreaText;
19
- export let getLabelElement;
20
- export let getRuleDistanceText;
21
- export let adaptiveRoomLabelVisibleEnable;
22
- </script>
23
-
24
- {#if visible}
25
- <div class="floorplan-main" in:fade={{ duration, easing: linear }}>
26
- {#each floorplanData.floorDatas as floorData}
27
- <CurrentFloor
28
- {...{
29
- hoverEnable,
30
- floorplanData,
31
- getRoomAreaText,
32
- getLabelElement,
33
- getRuleDistanceText,
34
- roomLabelsEnable,
35
- ruleLabelsEnable,
36
- adaptiveRoomLabelVisibleEnable,
37
- }}
38
- floorIndex={floorData.floorIndex}
39
- isCurrent={floorData.floorIndex === floorIndex}
40
- />
41
- {/each}
42
- <Camera {...{ panoIndex, floorplanData, lastPanoramaLongitude, cameraImageUrl }} />
43
- {#if compassEnable}
44
- <Compass {floorplanData} {northDesc} />
45
- {/if}
46
- </div>
47
- {/if}
48
-
49
- <style>
50
- .floorplan-main {
51
- width: 100%;
52
- height: 100%;
53
- pointer-events: none;
54
- }
55
- </style>
@@ -1,11 +0,0 @@
1
- <script>export let url;
2
- </script>
3
-
4
- <img src={url} alt="floorplan iamge" />
5
-
6
- <style>
7
- img {
8
- width: 100%;
9
- height: 100%;
10
- }
11
- </style>
@@ -1,27 +0,0 @@
1
- <script>import formatFloorplanPoint, { pathD } from '../../utils/formatPosition';
2
- export let room;
3
- export let floorplanData;
4
- export let hoveredRoom;
5
- function onMouseEnter() {
6
- hoveredRoom.set(room);
7
- }
8
- function onMouseLeave() {
9
- hoveredRoom.set(undefined);
10
- }
11
- const { bounding } = floorplanData;
12
- const _pathD = pathD(room.path, {
13
- needZ: true,
14
- format: (vector) => formatFloorplanPoint(vector, bounding),
15
- });
16
- </script>
17
-
18
- <path d={_pathD} fill={`#fff`} on:mouseenter={onMouseEnter} on:mouseleave={onMouseLeave} />
19
-
20
- <style>
21
- path {
22
- opacity: 0;
23
- }
24
- path:hover {
25
- opacity: 0.1;
26
- }
27
- </style>
@@ -1,29 +0,0 @@
1
- <script>import Room from './Room.svelte';
2
- export let floorIndex;
3
- export let floorplanData;
4
- export let hoveredRoom;
5
- const boundingWidth = floorplanData.bounding.max.x - floorplanData.bounding.min.x;
6
- const boundingHeight = floorplanData.bounding.max.y - floorplanData.bounding.min.y;
7
- </script>
8
-
9
- <div class="floorplan-plugin__room-highlight">
10
- <svg width="100%" height="100%" viewBox={`0 0 ${boundingWidth} ${boundingHeight}`}>
11
- {#each floorplanData.floorDatas[floorIndex].rooms as room (room.id)}
12
- <Room {...{ room, floorplanData, hoveredRoom }} />
13
- {/each}
14
- </svg>
15
- </div>
16
-
17
- <style>
18
- .floorplan-plugin__room-highlight {
19
- position: absolute;
20
- width: 100%;
21
- height: 100%;
22
- }
23
-
24
- svg {
25
- width: 100%;
26
- height: 100%;
27
- overflow: visible;
28
- }
29
- </style>
@@ -1,120 +0,0 @@
1
- <script>import { onMount } from 'svelte';
2
- export let pxmm;
3
- export let room;
4
- export let hoveredRoom;
5
- export let getRoomAreaText;
6
- export let getLabelElement;
7
- export let adaptiveRoomLabelVisibleEnable;
8
- // https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html
9
- // https://github.com/substack/point-in-polygon
10
- function isPointInPolygon(point, polygon) {
11
- const x = point[0];
12
- const y = point[1];
13
- let inside = false;
14
- for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
15
- const xi = polygon[i][0];
16
- const yi = polygon[i][1];
17
- const xj = polygon[j][0];
18
- const yj = polygon[j][1];
19
- const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;
20
- if (intersect)
21
- inside = !inside;
22
- }
23
- return inside;
24
- }
25
- function isLabelInRoomCurry(room, labelElementSize) {
26
- if (labelElementSize.width === 0 || labelElementSize.height === 0)
27
- return () => false;
28
- const polygon = room.path.map(({ x, y }) => [x, y]);
29
- const labelPosition = room.roomLabel.position;
30
- const { x, y } = labelPosition;
31
- const { width, height } = labelElementSize;
32
- const halfWidth = width / 2;
33
- const halfHeight = height / 2;
34
- return function isLabelInRoom(pxmm) {
35
- const clientX = x * pxmm;
36
- const clientY = y * pxmm;
37
- const clientPolygon = polygon.map(([x, y]) => [x * pxmm, y * pxmm]);
38
- // const
39
- /** 围成 labelRect 的四个点
40
- * 1----0
41
- * | |
42
- * 2----3
43
- */
44
- const labelRectClientPoints = [
45
- [clientX + halfWidth, clientY - halfHeight],
46
- [clientX - halfWidth, clientY - halfHeight],
47
- [clientX - halfWidth, clientY + halfHeight],
48
- [clientX + halfWidth, clientY + halfHeight],
49
- ];
50
- return labelRectClientPoints.every((point) => isPointInPolygon(point, clientPolygon));
51
- };
52
- }
53
- // ========== 获取设备宽高像素 ==========
54
- // TODO: 统一这里的判断条件,目前写了多处
55
- const bodyWidth = document.body.clientWidth;
56
- const bodyHeight = document.body.clientHeight;
57
- // ====================================
58
- const roomLabel = room.roomLabel;
59
- const left = roomLabel.positionInImage.x * 100 + '%';
60
- const top = roomLabel.positionInImage.y * 100 + '%';
61
- // 屏幕宽或高小于 500px 时,用 10px 字体,否则用 14px
62
- const fontSize = (bodyWidth < 500 || bodyHeight < 500 ? 10 : 14) / 16 + 'rem';
63
- let isHoverd = false;
64
- let labelElement;
65
- let labelElementSize;
66
- $: roomSizeDes = room.size ? getRoomAreaText(room.size) : '';
67
- $: isLabelInRoom = labelElementSize ? isLabelInRoomCurry(room, labelElementSize) : undefined;
68
- $: userConfigElement = getLabelElement === null || getLabelElement === void 0 ? void 0 : getLabelElement(room);
69
- $: labelVisible = adaptiveRoomLabelVisibleEnable ? (isHoverd ? true : !!(isLabelInRoom === null || isLabelInRoom === void 0 ? void 0 : isLabelInRoom(pxmm))) : true;
70
- hoveredRoom.subscribe(function onHoverdRoomUpdate(_room) {
71
- isHoverd = !!_room && _room.id === room.id;
72
- });
73
- onMount(() => {
74
- // Label 能不能展示只跟房间大小有关
75
- // 计算 LabelElement 宽高
76
- const labelDomRect = labelElement === null || labelElement === void 0 ? void 0 : labelElement.getClientRects()[0];
77
- labelElementSize = { width: labelDomRect.width, height: labelDomRect.height };
78
- });
79
- </script>
80
-
81
- <div
82
- bind:this={labelElement}
83
- class="floorplan-plugin__room-label-item"
84
- style:left
85
- style:top
86
- style:font-size={fontSize}
87
- style:opacity={labelVisible ? '1' : '0'}
88
- >
89
- <!-- 用户没有配置自定义 DOM 时,使用默认 DOM -->
90
- {#if getLabelElement === undefined}
91
- <span class="floorplan-plugin__room-name">
92
- {room.name}
93
- </span>
94
- <span class="floorplan-plugin__room-size">{roomSizeDes}</span>
95
- <!-- 用户配置自定义 DOM 时,使用用户 DOM -->
96
- {:else if userConfigElement}
97
- <!-- TODO: @html 是一个很不好的语法,但是目前没有好的方式去配置 User DOM -->
98
- <!-- TODO: 看一下能不能改成在 reactive segment 里动态插入 DOM -->
99
- <!-- eslint-disable-next-line svelte/no-at-html-tags -->
100
- {@html userConfigElement.outerHTML}
101
- {/if}
102
- </div>
103
-
104
- <style>
105
- .floorplan-plugin__room-label-item {
106
- position: absolute;
107
- display: flex;
108
- flex-flow: column;
109
- align-items: center;
110
- line-height: 1;
111
- color: #fff;
112
- transform: translate(-50%, -50%);
113
- white-space: nowrap;
114
- will-change: opacity;
115
- transition: opacity 300ms;
116
- }
117
- .floorplan-plugin__room-size {
118
- opacity: 0.45;
119
- }
120
- </style>