@realsee/dnalogel 2.0.0-alpha.43 → 2.0.0-alpha.44

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 (164) hide show
  1. package/dist/CSS3DRenderPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  2. package/dist/CameraMovementPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  3. package/dist/ItemLabelPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  4. package/dist/ItemLabelPlugin/index.js +138 -73
  5. package/dist/ItemLabelPlugin/typings.d.ts +1 -0
  6. package/dist/ModelChassisCompassPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  7. package/dist/ModelEntryDoorGuidePlugin/ItemLabelPlugin/typings.d.ts +1 -0
  8. package/dist/ModelItemLabelPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  9. package/dist/ModelRoomLabelPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  10. package/dist/ModelTVVideoPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  11. package/dist/ModelViewPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  12. package/dist/PanoCompassPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  13. package/dist/PanoCursorRaycasterPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  14. package/dist/PanoMeasurePlugin/ItemLabelPlugin/typings.d.ts +1 -0
  15. package/dist/PanoRulerPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  16. package/dist/PanoRulerProPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  17. package/dist/PanoSpatialTagPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  18. package/dist/floorplan/ModelFloorplanPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  19. package/dist/floorplan/PanoFloorplanRadarPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  20. package/dist/floorplan/TopviewFloorplanPlugin/ItemLabelPlugin/typings.d.ts +1 -0
  21. package/dist/index.es.js +156 -91
  22. package/dist/index.js +156 -91
  23. package/dist/index.umd.js +156 -91
  24. package/docs/classes/Magnifier.html +4 -4
  25. package/docs/classes/ModelRoomLabelController.html +4 -4
  26. package/docs/enums/CameraMovementEffect.html +1 -1
  27. package/docs/enums/DIRECTION.html +1 -1
  28. package/docs/enums/DISPLAY_STRATEGY_TYPE.html +1 -1
  29. package/docs/enums/FLOOR_PLAN_ATTACHED_TO.html +1 -1
  30. package/docs/enums/ITEM_LABEL_PLUGIN_DISPLAY_STRATEGY_TYPE.html +1 -1
  31. package/docs/enums/Rotation.html +1 -1
  32. package/docs/interfaces/CSS3DRenderPluginExportType.html +2 -2
  33. package/docs/interfaces/CameraMovementPluginExportType.html +2 -2
  34. package/docs/interfaces/FloorplanBounding.html +3 -3
  35. package/docs/interfaces/FloorplanData.html +1 -1
  36. package/docs/interfaces/FloorplanEntrance.html +6 -6
  37. package/docs/interfaces/FloorplanExtraObject.html +2 -2
  38. package/docs/interfaces/FloorplanExtraObject3D.html +1 -1
  39. package/docs/interfaces/FloorplanFloorData.html +1 -1
  40. package/docs/interfaces/FloorplanImagePosition.html +1 -1
  41. package/docs/interfaces/FloorplanObserver.html +1 -1
  42. package/docs/interfaces/FloorplanOutlineItem.html +1 -1
  43. package/docs/interfaces/FloorplanPosition.html +1 -1
  44. package/docs/interfaces/FloorplanRoomItem.html +5 -5
  45. package/docs/interfaces/FloorplanRoomLabelItem.html +2 -2
  46. package/docs/interfaces/FloorplanServerBounding.html +3 -3
  47. package/docs/interfaces/FloorplanServerComputedData.html +1 -1
  48. package/docs/interfaces/FloorplanServerData.html +1 -1
  49. package/docs/interfaces/FloorplanServerEntrance.html +6 -6
  50. package/docs/interfaces/FloorplanServerFloorData.html +1 -1
  51. package/docs/interfaces/FloorplanServerImagePosition.html +1 -1
  52. package/docs/interfaces/FloorplanServerObserver.html +1 -1
  53. package/docs/interfaces/FloorplanServerOutlineItem.html +1 -1
  54. package/docs/interfaces/FloorplanServerPosition.html +1 -1
  55. package/docs/interfaces/FloorplanServerRoomItem.html +6 -6
  56. package/docs/interfaces/FloorplanServerRoomLabelItem.html +2 -2
  57. package/docs/interfaces/ItemLabelPluginData.html +1 -1
  58. package/docs/interfaces/ItemLabelPluginExportReturnsType.html +1 -1
  59. package/docs/interfaces/ItemLabelPluginParametersType.html +1 -1
  60. package/docs/interfaces/LineJson.html +1 -1
  61. package/docs/interfaces/ModelChassisCompassPluginData.html +1 -1
  62. package/docs/interfaces/ModelChassisCompassPluginExportType.html +1 -1
  63. package/docs/interfaces/ModelChassisCompassPluginParameterType.html +1 -1
  64. package/docs/interfaces/ModelEntryDoorGuidePluginData.html +1 -1
  65. package/docs/interfaces/ModelEntryDoorGuidePluginExportType.html +1 -1
  66. package/docs/interfaces/ModelItemLabelPluginData.html +1 -1
  67. package/docs/interfaces/ModelItemLabelPluginExportReturnsType.html +1 -1
  68. package/docs/interfaces/ModelItemLabelPluginParametersType.html +1 -1
  69. package/docs/interfaces/ModelRoomLabelPluginData.html +1 -1
  70. package/docs/interfaces/ModelTVVideoPluginData.html +1 -1
  71. package/docs/interfaces/ModelTVVideoPluginExportType.html +1 -1
  72. package/docs/interfaces/ModelTVVideoPluginParameterType.html +1 -1
  73. package/docs/interfaces/ModelViewPluginExportType.html +1 -1
  74. package/docs/interfaces/OpenParameter.html +1 -1
  75. package/docs/interfaces/PanoCursorRaycasterPluginExportType.html +6 -6
  76. package/docs/interfaces/PanoMeasureParameterType.html +1 -1
  77. package/docs/interfaces/PanoRulerPluginExportType.html +1 -1
  78. package/docs/interfaces/PanoRulerPluginOptions.html +1 -1
  79. package/docs/interfaces/PanoRulerPluginParameterType.html +1 -1
  80. package/docs/interfaces/PanoRulerProPluginExportType.html +1 -1
  81. package/docs/interfaces/PanoRulerProPluginOptions.html +1 -1
  82. package/docs/interfaces/PanoRulerProPluginParameterType.html +1 -1
  83. package/docs/interfaces/PanoRulerProPluginState.html +1 -1
  84. package/docs/interfaces/PanoSpatialTagPluginData.html +1 -1
  85. package/docs/interfaces/PanoSpatialTagPluginDataElement.html +1 -1
  86. package/docs/interfaces/PanoSpatialTagPluginExportType.html +1 -1
  87. package/docs/interfaces/PanoSpatialTagPluginOriginElement.html +1 -1
  88. package/docs/interfaces/PanoSpatialTagPluginParameterType.html +1 -1
  89. package/docs/interfaces/PanoSpatialTagPluginPointElement.html +1 -1
  90. package/docs/interfaces/PanoSpatialTagPluginTagElement.html +1 -1
  91. package/docs/interfaces/Point.html +1 -1
  92. package/docs/interfaces/PointJson.html +1 -1
  93. package/docs/interfaces/Room.html +1 -1
  94. package/docs/interfaces/RoomInfo.html +1 -1
  95. package/docs/interfaces/RoomLabel.html +7 -7
  96. package/docs/modules.html +18 -18
  97. package/libs/ItemLabelPlugin/ItemLabelComponent.js +2 -2
  98. package/libs/ItemLabelPlugin/ItemLabelComponent.svelte +251 -0
  99. package/libs/ItemLabelPlugin/ItemLabelItem.js +141 -74
  100. package/libs/ItemLabelPlugin/ItemLabelItem.svelte +180 -0
  101. package/libs/ItemLabelPlugin/Plugin.js +1 -1
  102. package/libs/ItemLabelPlugin/typings.d.ts +3 -1
  103. package/libs/ModelItemLabelPlugin/ItemLabelComponent.js +2 -2
  104. package/libs/ModelItemLabelPlugin/ItemLabelComponent.svelte +155 -0
  105. package/libs/ModelItemLabelPlugin/ItemLabelItem.js +6 -6
  106. package/libs/ModelItemLabelPlugin/ItemLabelItem.svelte +100 -0
  107. package/libs/ModelItemLabelPlugin/ModelItemLabelPlugin.js +1 -1
  108. package/libs/ModelItemLabelPlugin/typings.d.ts +1 -1
  109. package/libs/ModelRoomLabelPlugin/Controller.js +1 -1
  110. package/libs/ModelRoomLabelPlugin/RoomLabelItem.js +4 -4
  111. package/libs/ModelRoomLabelPlugin/RoomLabelItem.svelte +63 -0
  112. package/libs/ModelRoomLabelPlugin/RoomLabelItems.js +2 -2
  113. package/libs/ModelRoomLabelPlugin/RoomLabelItems.svelte +94 -0
  114. package/libs/PanoRulerProPlugin/Controller.js +1 -1
  115. package/libs/PanoRulerProPlugin/RulerItem.js +9 -9
  116. package/libs/PanoRulerProPlugin/RulerItem.svelte +166 -0
  117. package/libs/PanoRulerProPlugin/RulerItems.svelte +212 -0
  118. package/libs/PanoSpatialTagPlugin/Components/origins.js +2 -2
  119. package/libs/PanoSpatialTagPlugin/Components/origins.svelte +58 -0
  120. package/libs/PanoSpatialTagPlugin/Components/tag.js +9 -9
  121. package/libs/PanoSpatialTagPlugin/Components/tag.svelte +292 -0
  122. package/libs/PanoSpatialTagPlugin/Plugin.js +2 -2
  123. package/libs/floorplan/Components/BaseImage.js +2 -2
  124. package/libs/floorplan/Components/BaseImage.svelte +26 -0
  125. package/libs/floorplan/Components/Camera.js +3 -3
  126. package/libs/floorplan/Components/Camera.svelte +46 -0
  127. package/libs/floorplan/Components/Compass.js +4 -4
  128. package/libs/floorplan/Components/Compass.svelte +51 -0
  129. package/libs/floorplan/Components/CurrentFloor.js +3 -3
  130. package/libs/floorplan/Components/CurrentFloor.svelte +46 -0
  131. package/libs/floorplan/Components/Main.js +2 -2
  132. package/libs/floorplan/Components/Main.svelte +51 -0
  133. package/libs/floorplan/Components/Normalmage.js +2 -2
  134. package/libs/floorplan/Components/Normalmage.svelte +11 -0
  135. package/libs/floorplan/Components/RoomHighlight/Room.js +2 -2
  136. package/libs/floorplan/Components/RoomHighlight/Room.svelte +27 -0
  137. package/libs/floorplan/Components/RoomHighlight/RoomHighlight.js +3 -3
  138. package/libs/floorplan/Components/RoomHighlight/RoomHighlight.svelte +29 -0
  139. package/libs/floorplan/Components/RoomLabels/RoomLabel.js +3 -3
  140. package/libs/floorplan/Components/RoomLabels/RoomLabel.svelte +119 -0
  141. package/libs/floorplan/Components/RoomLabels/RoomLabels.js +2 -2
  142. package/libs/floorplan/Components/RoomLabels/RoomLabels.svelte +35 -0
  143. package/libs/floorplan/Components/RoomMaterials/RoomMaterial.js +3 -3
  144. package/libs/floorplan/Components/RoomMaterials/RoomMaterial.svelte +42 -0
  145. package/libs/floorplan/Components/RoomMaterials/RoomMaterial_0.svelte +7 -0
  146. package/libs/floorplan/Components/RoomMaterials/RoomMaterial_1.svelte +24 -0
  147. package/libs/floorplan/Components/RoomMaterials/RoomMaterial_2.svelte +33 -0
  148. package/libs/floorplan/Components/RuleLabels/RuleItem.js +9 -9
  149. package/libs/floorplan/Components/RuleLabels/RuleItem.svelte +174 -0
  150. package/libs/floorplan/Components/RuleLabels/RuleLabels.js +2 -2
  151. package/libs/floorplan/Components/RuleLabels/RuleLabels.svelte +32 -0
  152. package/libs/floorplan/Components/SvgImage.js +3 -4
  153. package/libs/floorplan/Components/SvgImage.svelte +28 -0
  154. package/libs/floorplan/ModelFloorplanPlugin/Controller.js +1 -1
  155. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/Camera.js +4 -4
  156. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/Camera.svelte +85 -0
  157. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/CurrentFloor/CurrentFloor.svelte +18 -0
  158. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/CurrentFloor/ExtraObjects.js +4 -4
  159. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/CurrentFloor/ExtraObjects.svelte +40 -0
  160. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/Main.js +3 -3
  161. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/Main.svelte +64 -0
  162. package/libs/floorplan/PanoFloorplanRadarPlugin/Controller.js +1 -1
  163. package/libs/floorplan/TopviewFloorplanPlugin/Controller.js +1 -1
  164. package/package.json +2 -1
@@ -0,0 +1,51 @@
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 getLabelElement;
19
+ export let adaptiveRoomLabelVisibleEnable;
20
+ </script>
21
+
22
+ {#if visible}
23
+ <div class="floorplan-main" in:fade={{ duration, easing: linear }}>
24
+ {#each floorplanData.floorDatas as floorData}
25
+ <CurrentFloor
26
+ {...{
27
+ hoverEnable,
28
+ floorplanData,
29
+ getLabelElement,
30
+ roomLabelsEnable,
31
+ ruleLabelsEnable,
32
+ adaptiveRoomLabelVisibleEnable,
33
+ }}
34
+ floorIndex={floorData.floorIndex}
35
+ isCurrent={floorData.floorIndex === floorIndex}
36
+ />
37
+ {/each}
38
+ <Camera {...{ panoIndex, floorplanData, lastPanoramaLongitude, cameraImageUrl }} />
39
+ {#if compassEnable}
40
+ <Compass {floorplanData} {northDesc} />
41
+ {/if}
42
+ </div>
43
+ {/if}
44
+
45
+ <style>
46
+ .floorplan-main {
47
+ width: 100%;
48
+ height: 100%;
49
+ pointer-events: none;
50
+ }
51
+ </style>
@@ -13,7 +13,7 @@ import {
13
13
  } from "svelte/internal";
14
14
 
15
15
  function add_css(target) {
16
- append_styles(target, "svelte-1cuuebb", "img.svelte-1cuuebb{width:100%;height:100%}");
16
+ append_styles(target, "svelte-1gfoniz", "img.svelte-1gfoniz{width:100%;height:100%}");
17
17
  }
18
18
 
19
19
  function create_fragment(ctx) {
@@ -25,7 +25,7 @@ function create_fragment(ctx) {
25
25
  img = element("img");
26
26
  if (!src_url_equal(img.src, img_src_value = /*url*/ ctx[0])) attr(img, "src", img_src_value);
27
27
  attr(img, "alt", "floorplan iamge");
28
- attr(img, "class", "svelte-1cuuebb");
28
+ attr(img, "class", "svelte-1gfoniz");
29
29
  },
30
30
  m(target, anchor) {
31
31
  insert(target, img, anchor);
@@ -0,0 +1,11 @@
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>
@@ -16,7 +16,7 @@ import {
16
16
  import formatFloorplanPoint, { pathD } from '../../utils/formatPosition';
17
17
 
18
18
  function add_css(target) {
19
- append_styles(target, "svelte-11takew", "path.svelte-11takew{opacity:0}path.svelte-11takew:hover{opacity:0.1}");
19
+ append_styles(target, "svelte-19uvvss", "path.svelte-19uvvss{opacity:0}path.svelte-19uvvss:hover{opacity:0.1}");
20
20
  }
21
21
 
22
22
  function create_fragment(ctx) {
@@ -30,7 +30,7 @@ function create_fragment(ctx) {
30
30
  path = svg_element("path");
31
31
  attr(path, "d", /*_pathD*/ ctx[2]);
32
32
  attr(path, "fill", path_fill_value = `#fff`);
33
- attr(path, "class", "svelte-11takew");
33
+ attr(path, "class", "svelte-19uvvss");
34
34
  },
35
35
  m(target, anchor) {
36
36
  insert(target, path, anchor);
@@ -0,0 +1,27 @@
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>
@@ -27,7 +27,7 @@ import {
27
27
  import Room from './Room';
28
28
 
29
29
  function add_css(target) {
30
- append_styles(target, "svelte-1tk06jk", ".floorplan-plugin__room-highlight.svelte-1tk06jk{position:absolute;width:100%;height:100%}svg.svelte-1tk06jk{width:100%;height:100%;overflow:visible}");
30
+ append_styles(target, "svelte-1kqo6e4", ".floorplan-plugin__room-highlight.svelte-1kqo6e4{position:absolute;width:100%;height:100%}svg.svelte-1kqo6e4{width:100%;height:100%;overflow:visible}");
31
31
  }
32
32
 
33
33
  function get_each_context(ctx, list, i) {
@@ -130,8 +130,8 @@ function create_fragment(ctx) {
130
130
  attr(svg, "width", "100%");
131
131
  attr(svg, "height", "100%");
132
132
  attr(svg, "viewBox", svg_viewBox_value = `0 0 ${/*boundingWidth*/ ctx[3]} ${/*boundingHeight*/ ctx[4]}`);
133
- attr(svg, "class", "svelte-1tk06jk");
134
- attr(div, "class", "floorplan-plugin__room-highlight svelte-1tk06jk");
133
+ attr(svg, "class", "svelte-1kqo6e4");
134
+ attr(div, "class", "floorplan-plugin__room-highlight svelte-1kqo6e4");
135
135
  },
136
136
  m(target, anchor) {
137
137
  insert(target, div, anchor);
@@ -0,0 +1,29 @@
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>
@@ -22,7 +22,7 @@ import {
22
22
  import { onMount } from 'svelte';
23
23
 
24
24
  function add_css(target) {
25
- append_styles(target, "svelte-1b5j2lp", ".floorplan-plugin__room-label-item.svelte-1b5j2lp{position:absolute;display:flex;flex-flow:column;align-items:center;line-height:1;color:#fff;transform:translate(-50%, -50%);white-space:nowrap;will-change:opacity;transition:opacity 300ms}.floorplan-plugin__room-size.svelte-1b5j2lp{opacity:0.45}");
25
+ append_styles(target, "svelte-12pzct5", ".floorplan-plugin__room-label-item.svelte-12pzct5{position:absolute;display:flex;flex-flow:column;align-items:center;line-height:1;color:#fff;transform:translate(-50%, -50%);white-space:nowrap;will-change:opacity;transition:opacity 300ms}.floorplan-plugin__room-size.svelte-12pzct5{opacity:0.45}");
26
26
  }
27
27
 
28
28
  // (95:30)
@@ -67,7 +67,7 @@ function create_if_block(ctx) {
67
67
  span1 = element("span");
68
68
  span1.textContent = `${/*roomSizeDes*/ ctx[5]}`;
69
69
  attr(span0, "class", "floorplan-plugin__room-name");
70
- attr(span1, "class", "floorplan-plugin__room-size svelte-1b5j2lp");
70
+ attr(span1, "class", "floorplan-plugin__room-size svelte-12pzct5");
71
71
  },
72
72
  m(target, anchor) {
73
73
  insert(target, span0, anchor);
@@ -101,7 +101,7 @@ function create_fragment(ctx) {
101
101
  c() {
102
102
  div = element("div");
103
103
  if (if_block) if_block.c();
104
- attr(div, "class", "floorplan-plugin__room-label-item svelte-1b5j2lp");
104
+ attr(div, "class", "floorplan-plugin__room-label-item svelte-12pzct5");
105
105
  set_style(div, "left", /*left*/ ctx[6], false);
106
106
  set_style(div, "top", /*top*/ ctx[7], false);
107
107
  set_style(div, "font-size", /*fontSize*/ ctx[8], false);
@@ -0,0 +1,119 @@
1
+ <script>import { onMount } from 'svelte';
2
+ export let pxmm;
3
+ export let room;
4
+ export let hoveredRoom;
5
+ export let getLabelElement;
6
+ export let adaptiveRoomLabelVisibleEnable;
7
+ // https://wrf.ecse.rpi.edu//Research/Short_Notes/pnpoly.html
8
+ // https://github.com/substack/point-in-polygon
9
+ function isPointInPolygon(point, polygon) {
10
+ const x = point[0];
11
+ const y = point[1];
12
+ let inside = false;
13
+ for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
14
+ const xi = polygon[i][0];
15
+ const yi = polygon[i][1];
16
+ const xj = polygon[j][0];
17
+ const yj = polygon[j][1];
18
+ const intersect = yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi;
19
+ if (intersect)
20
+ inside = !inside;
21
+ }
22
+ return inside;
23
+ }
24
+ function isLabelInRoomCurry(room, labelElementSize) {
25
+ if (labelElementSize.width === 0 || labelElementSize.height === 0)
26
+ return () => false;
27
+ const polygon = room.path.map(({ x, y }) => [x, y]);
28
+ const labelPosition = room.roomLabel.position;
29
+ const { x, y } = labelPosition;
30
+ const { width, height } = labelElementSize;
31
+ const halfWidth = width / 2;
32
+ const halfHeight = height / 2;
33
+ return function isLabelInRoom(pxmm) {
34
+ const clientX = x * pxmm;
35
+ const clientY = y * pxmm;
36
+ const clientPolygon = polygon.map(([x, y]) => [x * pxmm, y * pxmm]);
37
+ // const
38
+ /** 围成 labelRect 的四个点
39
+ * 1----0
40
+ * | |
41
+ * 2----3
42
+ */
43
+ const labelRectClientPoints = [
44
+ [clientX + halfWidth, clientY - halfHeight],
45
+ [clientX - halfWidth, clientY - halfHeight],
46
+ [clientX - halfWidth, clientY + halfHeight],
47
+ [clientX + halfWidth, clientY + halfHeight],
48
+ ];
49
+ return labelRectClientPoints.every((point) => isPointInPolygon(point, clientPolygon));
50
+ };
51
+ }
52
+ // ========== 获取设备宽高像素 ==========
53
+ // TODO: 统一这里的判断条件,目前写了多处
54
+ const bodyWidth = document.body.clientWidth;
55
+ const bodyHeight = document.body.clientHeight;
56
+ const roomSizeDes = room.size ? (room.size / 1000000).toFixed(1) + '㎡' : '';
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
+ $: isLabelInRoom = labelElementSize ? isLabelInRoomCurry(room, labelElementSize) : undefined;
67
+ $: userConfigElement = getLabelElement === null || getLabelElement === void 0 ? void 0 : getLabelElement(room);
68
+ $: labelVisible = adaptiveRoomLabelVisibleEnable ? (isHoverd ? true : !!(isLabelInRoom === null || isLabelInRoom === void 0 ? void 0 : isLabelInRoom(pxmm))) : true;
69
+ hoveredRoom.subscribe(function onHoverdRoomUpdate(_room) {
70
+ isHoverd = !!_room && _room.id === room.id;
71
+ });
72
+ onMount(() => {
73
+ // Label 能不能展示只跟房间大小有关
74
+ // 计算 LabelElement 宽高
75
+ const labelDomRect = labelElement === null || labelElement === void 0 ? void 0 : labelElement.getClientRects()[0];
76
+ labelElementSize = { width: labelDomRect.width, height: labelDomRect.height };
77
+ });
78
+ </script>
79
+
80
+ <div
81
+ bind:this={labelElement}
82
+ class="floorplan-plugin__room-label-item"
83
+ style:left
84
+ style:top
85
+ style:font-size={fontSize}
86
+ style:opacity={labelVisible ? '1' : '0'}
87
+ >
88
+ <!-- 用户没有配置自定义 DOM 时,使用默认 DOM -->
89
+ {#if getLabelElement === undefined}
90
+ <span class="floorplan-plugin__room-name">
91
+ {room.name}
92
+ </span>
93
+ <span class="floorplan-plugin__room-size">{roomSizeDes}</span>
94
+ <!-- 用户配置自定义 DOM 时,使用用户 DOM -->
95
+ {:else if userConfigElement}
96
+ <!-- TODO: @html 是一个很不好的语法,但是目前没有好的方式去配置 User DOM -->
97
+ <!-- TODO: 看一下能不能改成在 reactive segment 里动态插入 DOM -->
98
+ <!-- eslint-disable-next-line svelte/no-at-html-tags -->
99
+ {@html userConfigElement.outerHTML}
100
+ {/if}
101
+ </div>
102
+
103
+ <style>
104
+ .floorplan-plugin__room-label-item {
105
+ position: absolute;
106
+ display: flex;
107
+ flex-flow: column;
108
+ align-items: center;
109
+ line-height: 1;
110
+ color: #fff;
111
+ transform: translate(-50%, -50%);
112
+ white-space: nowrap;
113
+ will-change: opacity;
114
+ transition: opacity 300ms;
115
+ }
116
+ .floorplan-plugin__room-size {
117
+ opacity: 0.45;
118
+ }
119
+ </style>
@@ -27,7 +27,7 @@ import {
27
27
  import RoomLabel from './RoomLabel';
28
28
 
29
29
  function add_css(target) {
30
- append_styles(target, "svelte-447cof", ".floorplan-plugin__room-labels.svelte-447cof{width:100%;height:100%;position:absolute;left:0;top:0;z-index:20;pointer-events:none}");
30
+ append_styles(target, "svelte-13xux0b", ".floorplan-plugin__room-labels.svelte-13xux0b{width:100%;height:100%;position:absolute;left:0;top:0;z-index:20;pointer-events:none}");
31
31
  }
32
32
 
33
33
  function get_each_context(ctx, list, i) {
@@ -60,7 +60,7 @@ function create_if_block(ctx) {
60
60
  each_blocks[i].c();
61
61
  }
62
62
 
63
- attr(div, "class", "floorplan-plugin__room-labels svelte-447cof");
63
+ attr(div, "class", "floorplan-plugin__room-labels svelte-13xux0b");
64
64
  add_render_callback(() => /*div_elementresize_handler*/ ctx[8].call(div));
65
65
  },
66
66
  m(target, anchor) {
@@ -0,0 +1,35 @@
1
+ <script>import RoomLabel from './RoomLabel.svelte';
2
+ export let floorIndex;
3
+ export let floorplanData;
4
+ export let hoveredRoom;
5
+ export let getLabelElement;
6
+ export let adaptiveRoomLabelVisibleEnable;
7
+ $: rooms = floorplanData.floorDatas[floorIndex].rooms;
8
+ let clientWidth = 0;
9
+ let pxmm = 0;
10
+ $: {
11
+ const { max, min } = floorplanData.bounding;
12
+ const boundingWidth = max.x - min.x;
13
+ pxmm = clientWidth / boundingWidth;
14
+ }
15
+ </script>
16
+
17
+ {#if rooms}
18
+ <div class="floorplan-plugin__room-labels" bind:clientWidth>
19
+ {#each rooms as room (room.id)}
20
+ <RoomLabel {...{ pxmm, room, getLabelElement, hoveredRoom, adaptiveRoomLabelVisibleEnable }} />
21
+ {/each}
22
+ </div>
23
+ {/if}
24
+
25
+ <style>
26
+ .floorplan-plugin__room-labels {
27
+ width: 100%;
28
+ height: 100%;
29
+ position: absolute;
30
+ left: 0;
31
+ top: 0;
32
+ z-index: 20;
33
+ pointer-events: none;
34
+ }
35
+ </style>
@@ -25,7 +25,7 @@ import RoomMaterial_1 from './RoomMaterial_1';
25
25
  import RoomMaterial_2 from './RoomMaterial_2';
26
26
 
27
27
  function add_css(target) {
28
- append_styles(target, "svelte-9ip3e6", ".floorplan-plugin__room-material.svelte-9ip3e6{position:absolute;left:0;top:0;width:100%;height:100%}svg.svelte-9ip3e6{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible}");
28
+ append_styles(target, "svelte-1dykexu", ".floorplan-plugin__room-material.svelte-1dykexu{position:absolute;left:0;top:0;width:100%;height:100%}svg.svelte-1dykexu{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible}");
29
29
  }
30
30
 
31
31
  function get_each_context(ctx, list, i) {
@@ -162,7 +162,7 @@ function create_each_block(ctx) {
162
162
  attr(svg, "width", "100%");
163
163
  attr(svg, "height", "100%");
164
164
  attr(svg, "viewBox", svg_viewBox_value = `0 0 ${/*boundingWidth*/ ctx[1]} ${/*boundingHeight*/ ctx[2]}`);
165
- attr(svg, "class", "svelte-9ip3e6");
165
+ attr(svg, "class", "svelte-1dykexu");
166
166
  },
167
167
  m(target, anchor) {
168
168
  insert(target, svg, anchor);
@@ -234,7 +234,7 @@ function create_fragment(ctx) {
234
234
  each_blocks[i].c();
235
235
  }
236
236
 
237
- attr(div, "class", "floorplan-plugin__room-material svelte-9ip3e6");
237
+ attr(div, "class", "floorplan-plugin__room-material svelte-1dykexu");
238
238
  },
239
239
  m(target, anchor) {
240
240
  insert(target, div, anchor);
@@ -0,0 +1,42 @@
1
+ <script>import formatFloorplanPoint from '../../utils/formatPosition';
2
+ import RoomMaterial_0 from './RoomMaterial_0.svelte';
3
+ import RoomMaterial_1 from './RoomMaterial_1.svelte';
4
+ import RoomMaterial_2 from './RoomMaterial_2.svelte';
5
+ export let floorIndex;
6
+ export let floorplanData;
7
+ const boundingWidth = floorplanData.bounding.max.x - floorplanData.bounding.min.x;
8
+ const boundingHeight = floorplanData.bounding.max.y - floorplanData.bounding.min.y;
9
+ $: rooms = floorplanData.floorDatas[floorIndex].rooms.map((room) => (Object.assign(Object.assign({}, room), { path: room.path.map((p) => formatFloorplanPoint(p, floorplanData.bounding)) })));
10
+ </script>
11
+
12
+ <div class="floorplan-plugin__room-material">
13
+ {#each rooms as room}
14
+ <svg width="100%" height="100%" viewBox={`0 0 ${boundingWidth} ${boundingHeight}`}>
15
+ {#if room.floorType === 1}
16
+ <RoomMaterial_0 path={room.path} />
17
+ {:else if room.floorType === 0}
18
+ <RoomMaterial_2 path={room.path} />
19
+ {:else}
20
+ <RoomMaterial_1 path={room.path} />
21
+ {/if}
22
+ </svg>
23
+ {/each}
24
+ </div>
25
+
26
+ <style>
27
+ .floorplan-plugin__room-material {
28
+ position: absolute;
29
+ left: 0;
30
+ top: 0;
31
+ width: 100%;
32
+ height: 100%;
33
+ }
34
+ svg {
35
+ position: absolute;
36
+ left: 0;
37
+ top: 0;
38
+ width: 100%;
39
+ height: 100%;
40
+ overflow: visible;
41
+ }
42
+ </style>
@@ -0,0 +1,7 @@
1
+ <script>import { pathD } from '../../utils/formatPosition';
2
+ export let path;
3
+ $: d = pathD(path, { needZ: true });
4
+ </script>
5
+
6
+ <!-- 纯色背景 -->
7
+ <path {d} fill="#2F313A" />
@@ -0,0 +1,24 @@
1
+ <script>import { pathD } from '../../utils/formatPosition';
2
+ export let path;
3
+ $: d = pathD(path, { needZ: true });
4
+ const halfWidth = 6;
5
+ const width = halfWidth * 2;
6
+ const patternPathD = `M0 ${halfWidth} h ${width} M${halfWidth} 0 v ${width}`;
7
+ </script>
8
+
9
+ <!-- 瓷砖地板, 偏蓝的格格 -->
10
+ <defs>
11
+ <pattern
12
+ id="fpm-room-pattern-0"
13
+ x="0"
14
+ y="0"
15
+ {width}
16
+ height={width}
17
+ patternUnits="userSpaceOnUse"
18
+ patternTransform="scale(50 50)"
19
+ >
20
+ <rect x="0" y="0" {width} height={width} fill="#323747" />
21
+ <path d={patternPathD} stroke="#ffffff" stroke-opacity="0.06" stroke-width="0.5" fill="none" />
22
+ </pattern>
23
+ </defs>
24
+ <path {d} fill="url(#fpm-room-pattern-0)" />
@@ -0,0 +1,33 @@
1
+ <script>import { pathD } from '../../utils/formatPosition';
2
+ export let path;
3
+ $: d = pathD(path, { needZ: true });
4
+ </script>
5
+
6
+ <!-- 木地板,偏灰的格格 -->
7
+ <defs>
8
+ <pattern
9
+ id="room-material-pattern-1"
10
+ x="0"
11
+ y="0"
12
+ width="12"
13
+ height="50"
14
+ patternUnits="userSpaceOnUse"
15
+ patternTransform="scale(50 50)"
16
+ >
17
+ <rect x="0" y="0" width="6" height="50" fill="none" stroke="#4B4B57" stroke-width="0.5" />
18
+ </pattern>
19
+ <pattern
20
+ id="room-material-pattern-2"
21
+ x="6"
22
+ y="25"
23
+ width="12"
24
+ height="50"
25
+ patternUnits="userSpaceOnUse"
26
+ patternTransform="scale(50 50)"
27
+ >
28
+ <rect x="0" y="0" width="6" height="50" fill="none" stroke="#4B4B57" stroke-width="0.5" />
29
+ </pattern>
30
+ </defs>
31
+ <path {d} fill="#43434D" />
32
+ <path {d} fill="url(#room-material-pattern-1)" />
33
+ <path {d} fill="url(#room-material-pattern-2)" />
@@ -20,7 +20,7 @@ import {
20
20
  } from "svelte/internal";
21
21
 
22
22
  function add_css(target) {
23
- append_styles(target, "svelte-1l1xujz", ".floorplan-plugin__rule-labels.svelte-1l1xujz.svelte-1l1xujz{position:absolute;display:flex}.floorplan-plugin__rule-labels--top.svelte-1l1xujz.svelte-1l1xujz{left:0;top:-1.25rem}.floorplan-plugin__rule-labels--bottom.svelte-1l1xujz.svelte-1l1xujz{left:0;bottom:-1.25rem}.floorplan-plugin__rule-labels--left.svelte-1l1xujz.svelte-1l1xujz{top:0;left:-1.25rem}.floorplan-plugin__rule-labels--right.svelte-1l1xujz.svelte-1l1xujz{top:0;right:-1.25rem}.floorplan-plugin__rule-line.svelte-1l1xujz.svelte-1l1xujz{background:#fff;opacity:0.05;width:100%;height:100%}.floorplan-plugin__rule-scale-wrapper.svelte-1l1xujz.svelte-1l1xujz{position:absolute;width:0.3125rem;height:100%;left:50%;top:0;transform:translateX(-50%)}.floorplan-plugin__rule-labels.is-row.svelte-1l1xujz .floorplan-plugin__rule-scale-wrapper.svelte-1l1xujz{width:100%;height:0.3125rem;top:50%;left:0;transform:translateY(-50%)}.floorplan-plugin__rule-scale.svelte-1l1xujz.svelte-1l1xujz{position:absolute;background:#fff;opacity:0.05;width:100%;height:0.0625rem}.floorplan-plugin__rule-labels.is-row.svelte-1l1xujz .floorplan-plugin__rule-scale.svelte-1l1xujz{width:0.0625rem;height:100%}.floorplan-plugin__rule-text-wrapper.svelte-1l1xujz.svelte-1l1xujz{position:absolute}.floorplan-plugin__rule-labels--top.svelte-1l1xujz .floorplan-plugin__rule-text-wrapper.svelte-1l1xujz{width:100%;height:0;top:0.625rem}.floorplan-plugin__rule-labels--bottom.svelte-1l1xujz .floorplan-plugin__rule-text-wrapper.svelte-1l1xujz{width:100%;height:0;bottom:0.625rem}.floorplan-plugin__rule-labels--left.svelte-1l1xujz .floorplan-plugin__rule-text-wrapper.svelte-1l1xujz{width:0;height:100%;left:0.625rem}.floorplan-plugin__rule-labels--right.svelte-1l1xujz .floorplan-plugin__rule-text-wrapper.svelte-1l1xujz{width:0;height:100%;right:0.625rem}.floorplan-plugin__rule-text-item.svelte-1l1xujz.svelte-1l1xujz{width:0;height:0;position:absolute;transform:rotate(90deg)}.floorplan-plugin__rule-labels.is-row.svelte-1l1xujz .floorplan-plugin__rule-text-item.svelte-1l1xujz{transform:rotate(0)}.floorplan-plugin__rule-text.svelte-1l1xujz.svelte-1l1xujz{width:max-content;transform:translate(-50%, -50%);font-size:0.625rem;color:#fff;opacity:0.2}");
23
+ append_styles(target, "svelte-xt7p1v", ".floorplan-plugin__rule-labels.svelte-xt7p1v.svelte-xt7p1v{position:absolute;display:flex}.floorplan-plugin__rule-labels--top.svelte-xt7p1v.svelte-xt7p1v{left:0;top:-1.25rem}.floorplan-plugin__rule-labels--bottom.svelte-xt7p1v.svelte-xt7p1v{left:0;bottom:-1.25rem}.floorplan-plugin__rule-labels--left.svelte-xt7p1v.svelte-xt7p1v{top:0;left:-1.25rem}.floorplan-plugin__rule-labels--right.svelte-xt7p1v.svelte-xt7p1v{top:0;right:-1.25rem}.floorplan-plugin__rule-line.svelte-xt7p1v.svelte-xt7p1v{background:#fff;opacity:0.05;width:100%;height:100%}.floorplan-plugin__rule-scale-wrapper.svelte-xt7p1v.svelte-xt7p1v{position:absolute;width:0.3125rem;height:100%;left:50%;top:0;transform:translateX(-50%)}.floorplan-plugin__rule-labels.is-row.svelte-xt7p1v .floorplan-plugin__rule-scale-wrapper.svelte-xt7p1v{width:100%;height:0.3125rem;top:50%;left:0;transform:translateY(-50%)}.floorplan-plugin__rule-scale.svelte-xt7p1v.svelte-xt7p1v{position:absolute;background:#fff;opacity:0.05;width:100%;height:0.0625rem}.floorplan-plugin__rule-labels.is-row.svelte-xt7p1v .floorplan-plugin__rule-scale.svelte-xt7p1v{width:0.0625rem;height:100%}.floorplan-plugin__rule-text-wrapper.svelte-xt7p1v.svelte-xt7p1v{position:absolute}.floorplan-plugin__rule-labels--top.svelte-xt7p1v .floorplan-plugin__rule-text-wrapper.svelte-xt7p1v{width:100%;height:0;top:0.625rem}.floorplan-plugin__rule-labels--bottom.svelte-xt7p1v .floorplan-plugin__rule-text-wrapper.svelte-xt7p1v{width:100%;height:0;bottom:0.625rem}.floorplan-plugin__rule-labels--left.svelte-xt7p1v .floorplan-plugin__rule-text-wrapper.svelte-xt7p1v{width:0;height:100%;left:0.625rem}.floorplan-plugin__rule-labels--right.svelte-xt7p1v .floorplan-plugin__rule-text-wrapper.svelte-xt7p1v{width:0;height:100%;right:0.625rem}.floorplan-plugin__rule-text-item.svelte-xt7p1v.svelte-xt7p1v{width:0;height:0;position:absolute;transform:rotate(90deg)}.floorplan-plugin__rule-labels.is-row.svelte-xt7p1v .floorplan-plugin__rule-text-item.svelte-xt7p1v{transform:rotate(0)}.floorplan-plugin__rule-text.svelte-xt7p1v.svelte-xt7p1v{width:-webkit-max-content;width:-moz-max-content;width:max-content;transform:translate(-50%, -50%);font-size:0.625rem;color:#fff;opacity:0.2}");
24
24
  }
25
25
 
26
26
  function get_each_context(ctx, list, i) {
@@ -43,7 +43,7 @@ function create_each_block_1(ctx) {
43
43
  return {
44
44
  c() {
45
45
  div = element("div");
46
- attr(div, "class", "floorplan-plugin__rule-scale svelte-1l1xujz");
46
+ attr(div, "class", "floorplan-plugin__rule-scale svelte-xt7p1v");
47
47
  set_style(div, "left", /*rulerLabel*/ ctx[13].left * 100 + '%', false);
48
48
  set_style(div, "bottom", /*rulerLabel*/ ctx[13].bottom * 100 + '%', false);
49
49
  },
@@ -73,9 +73,9 @@ function create_each_block(key_1, ctx) {
73
73
  div0 = element("div");
74
74
  t0 = text(t0_value);
75
75
  t1 = space();
76
- attr(div0, "class", "floorplan-plugin__rule-text svelte-1l1xujz");
76
+ attr(div0, "class", "floorplan-plugin__rule-text svelte-xt7p1v");
77
77
  toggle_class(div0, "is-row", /*isRow*/ ctx[1]);
78
- attr(div1, "class", "floorplan-plugin__rule-text-item svelte-1l1xujz");
78
+ attr(div1, "class", "floorplan-plugin__rule-text-item svelte-xt7p1v");
79
79
  set_style(div1, "left", /*textItem*/ ctx[10].left * 100 + '%', false);
80
80
  set_style(div1, "bottom", /*textItem*/ ctx[10].bottom * 100 + '%', false);
81
81
  this.first = div1;
@@ -139,11 +139,11 @@ function create_fragment(ctx) {
139
139
  each_blocks[i].c();
140
140
  }
141
141
 
142
- attr(div0, "class", "floorplan-plugin__rule-line svelte-1l1xujz");
143
- attr(div1, "class", "floorplan-plugin__rule-scale-wrapper svelte-1l1xujz");
142
+ attr(div0, "class", "floorplan-plugin__rule-line svelte-xt7p1v");
143
+ attr(div1, "class", "floorplan-plugin__rule-scale-wrapper svelte-xt7p1v");
144
144
  toggle_class(div1, "is-row", /*isRow*/ ctx[1]);
145
- attr(div2, "class", "floorplan-plugin__rule-text-wrapper svelte-1l1xujz");
146
- attr(div3, "class", div3_class_value = "floorplan-plugin__rule-labels floorplan-plugin__rule-labels--" + /*type*/ ctx[0] + " svelte-1l1xujz");
145
+ attr(div2, "class", "floorplan-plugin__rule-text-wrapper svelte-xt7p1v");
146
+ attr(div3, "class", div3_class_value = "floorplan-plugin__rule-labels floorplan-plugin__rule-labels--" + /*type*/ ctx[0] + " svelte-xt7p1v");
147
147
  toggle_class(div3, "is-row", /*isRow*/ ctx[1]);
148
148
  set_style(div3, "width", /*isRow*/ ctx[1] ? '100%' : 1 / 16 + 'rem', false);
149
149
  set_style(div3, "height", !/*isRow*/ ctx[1] ? '100%' : 1 / 16 + 'rem', false);
@@ -194,7 +194,7 @@ function create_fragment(ctx) {
194
194
  each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each1_lookup, div2, destroy_block, create_each_block, null, get_each_context);
195
195
  }
196
196
 
197
- if (dirty & /*type*/ 1 && div3_class_value !== (div3_class_value = "floorplan-plugin__rule-labels floorplan-plugin__rule-labels--" + /*type*/ ctx[0] + " svelte-1l1xujz")) {
197
+ if (dirty & /*type*/ 1 && div3_class_value !== (div3_class_value = "floorplan-plugin__rule-labels floorplan-plugin__rule-labels--" + /*type*/ ctx[0] + " svelte-xt7p1v")) {
198
198
  attr(div3, "class", div3_class_value);
199
199
  }
200
200