@vsleem-realsee-viewer/bimsee-plugin 2.0.7 → 2.0.8

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/README.md CHANGED
@@ -14,7 +14,6 @@
14
14
  | `masker?` | `MaskerProps` | 请查看MaskerProps类型默认值 | 蒙层相关属性配置 |
15
15
  | `immediate?` | `boolean` | true | 是否立即发起数据请求 |
16
16
  | `delay?` | `number` | 0 | 请求延迟时间(单位:毫秒) |
17
- | `handleCheckModelFn` | `(res?: Coordinate) => Promise<boolean>` | - | 处理检查模型状态 |
18
17
  | `handleResponseFn?` | `(res?: Coordinate) => Promise<Coordinate \ undefined>` | - | 处理坐标系树响应 |
19
18
  | `fetchSuccess?` | `(res?: Coordinate) => void` | - | 坐标系树请求成功 |
20
19
  | `fetchError?` | `(error: any) => void` | - | 请求失败回调 |
@@ -2,7 +2,10 @@
2
2
  * BIM业务错误码枚举(扩展无返回值错误)
3
3
  */
4
4
  export declare enum BimseeErrorCode {
5
+ /** 缺少必要的参数(Store相关操作) */
5
6
  StoreMissParams = 11000,
7
+ /** 没有找到对应的CS树(如未初始化、已被删除或未关联) */
6
8
  StoreNoCSTree = 11001,
9
+ /** 在Store操作中,没有找到对应的BIM模型(如未加载、ID无效等) */
7
10
  StoreSelectNoBIMModel = 11002
8
11
  }
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { ref as S, computed as I, watch as O, unref as T, defineComponent as re, onMounted as se, onBeforeUnmount as Le, createElementBlock as ue, openBlock as U, withDirectives as Ee, renderSlot as X, createElementVNode as _e, vShow as Ie, normalizeProps as G, guardReactiveProps as j, createBlock as be, createCommentVNode as Fe, mergeProps as Re, toHandlers as Be, withCtx as Ne } from "vue";
1
+ import { ref as S, computed as I, watch as O, unref as T, defineComponent as re, onMounted as se, onBeforeUnmount as Le, createElementBlock as ue, openBlock as U, withDirectives as Ee, renderSlot as X, createElementVNode as _e, vShow as Ie, normalizeProps as G, guardReactiveProps as j, createBlock as be, createCommentVNode as Re, mergeProps as Fe, toHandlers as Be, withCtx as Ne } from "vue";
2
2
  import { APP_SETTING as xe, utils as ie, Position as V, Vector3 as te, Point as oe, CoordinateModelType as ze, AppError as A, DataSource as De, http as Ye } from "@vsleem-realsee-viewer/shared";
3
3
  const H = {
4
4
  visible: !0,
@@ -69,10 +69,10 @@ function Ae(n, r, p, i) {
69
69
  }
70
70
  function h(e) {
71
71
  if (!f.value || !J()) return;
72
- const t = e instanceof TouchEvent ? e.touches[0] : e, { pageX: u, pageY: c } = t, { pageX: l, pageY: v } = f.value, { defaultYaw: k = 0, defaultPitch: F = 0 } = f.value, B = Math.PI * 0.15 / 180;
73
- let N = (Number(k) - (u - l) * B) % (2 * Math.PI), R = (Number(F) + (c - v) * B) % (2 * Math.PI);
74
- R = Math.max(-Math.PI / 2, Math.min(Math.PI / 2, R));
75
- const Z = new V({ yaw: N, pitch: R });
72
+ const t = e instanceof TouchEvent ? e.touches[0] : e, { pageX: u, pageY: c } = t, { pageX: l, pageY: v } = f.value, { defaultYaw: k = 0, defaultPitch: R = 0 } = f.value, B = Math.PI * 0.15 / 180;
73
+ let N = (Number(k) - (u - l) * B) % (2 * Math.PI), F = (Number(R) + (c - v) * B) % (2 * Math.PI);
74
+ F = Math.max(-Math.PI / 2, Math.min(Math.PI / 2, F));
75
+ const Z = new V({ yaw: N, pitch: F });
76
76
  Q(Z);
77
77
  }
78
78
  function E() {
@@ -100,8 +100,8 @@ function Ae(n, r, p, i) {
100
100
  referCoordinate: l
101
101
  } = s.value, v = b.referPointToModelPoint(c, l);
102
102
  if (v) {
103
- const k = Number(e) + (v?.yaw || 0), F = new V({ yaw: Number(k), pitch: Number(t) }), B = b.modelPointToCameraPosition(v), N = b.maskerRotateToCameraTarget(F, B), R = b.zoomLevelToFov(u);
104
- r.value.setModelPoint(v), D({ position: B, target: N, fov: R }), o({ defaultYaw: k }), i("point-loaded", v);
103
+ const k = Number(e) + (v?.yaw || 0), R = new V({ yaw: Number(k), pitch: Number(t) }), B = b.modelPointToCameraPosition(v), N = b.maskerRotateToCameraTarget(R, B), F = b.zoomLevelToFov(u);
104
+ r.value.setModelPoint(v), D({ position: B, target: N, fov: F }), o({ defaultYaw: k }), i("point-loaded", v);
105
105
  }
106
106
  }
107
107
  function de() {
@@ -173,15 +173,15 @@ function Ae(n, r, p, i) {
173
173
  v,
174
174
  l,
175
175
  c
176
- ), { y: F = 0 } = k || {};
177
- return new oe({ ...k, y: -F });
176
+ ), { y: R = 0 } = k || {};
177
+ return new oe({ ...k, y: -R });
178
178
  }
179
179
  }
180
180
  function ye(e) {
181
181
  return new te(e);
182
182
  }
183
183
  function ge(e, t) {
184
- const { x: u = 0, y: c = 0, z: l = 0 } = t, { yaw: v, pitch: k } = e, F = -v, B = k, N = 100, R = 0, Z = N * Math.cos(R + F) + u, Te = N * Math.sin(R + F) + c, Ce = N * Math.tan(B) + l;
184
+ const { x: u = 0, y: c = 0, z: l = 0 } = t, { yaw: v, pitch: k } = e, R = -v, B = k, N = 100, F = 0, Z = N * Math.cos(F + R) + u, Te = N * Math.sin(F + R) + c, Ce = N * Math.tan(B) + l;
185
185
  return new te({ x: Z, y: Te, z: Ce });
186
186
  }
187
187
  function Se(e) {
@@ -427,7 +427,6 @@ const Je = { class: "vsleem-bimsee" }, Qe = /* @__PURE__ */ re({
427
427
  masker: { default: () => H },
428
428
  immediate: { type: Boolean, default: !0 },
429
429
  delay: {},
430
- handleCheckModelFn: {},
431
430
  handleResponseFn: {},
432
431
  fetchSuccess: {},
433
432
  fetchError: {}
@@ -445,7 +444,7 @@ const Je = { class: "vsleem-bimsee" }, Qe = /* @__PURE__ */ re({
445
444
  setup(n, { expose: r, emit: p }) {
446
445
  const i = n, d = p, a = S(), f = qe(i, a, d), { storeRef: s, getMasker: P } = f, { getShow: y, getBindValue: C } = Ke(s), { maskerEvents: o } = We(P, d);
447
446
  return r(f), (M, L) => (U(), ue("div", Je, [
448
- T(y) ? (U(), be(Xe, Re({
447
+ T(y) ? (U(), be(Xe, Fe({
449
448
  key: 0,
450
449
  ref_key: "maskerElRef",
451
450
  ref: a,
@@ -456,7 +455,7 @@ const Je = { class: "vsleem-bimsee" }, Qe = /* @__PURE__ */ re({
456
455
  X(M.$slots, "masker", G(j(_)), void 0, !0)
457
456
  ]),
458
457
  _: 3
459
- }, 16, ["bimseeStore"])) : Fe("", !0),
458
+ }, 16, ["bimseeStore"])) : Re("", !0),
460
459
  X(M.$slots, "default", G(j(T(C))), void 0, !0)
461
460
  ]));
462
461
  }
package/dist/index.umd.js CHANGED
@@ -1 +1 @@
1
- (function(E,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@vsleem-realsee-viewer/shared")):typeof define=="function"&&define.amd?define(["exports","vue","@vsleem-realsee-viewer/shared"],e):(E=typeof globalThis<"u"?globalThis:E||self,e(E.BimseePlugin={},E.Vue,E.VSLeemShared))})(this,(function(E,e,M){"use strict";const z={visible:!0,defaultYaw:0,defaultPitch:0,defaultZoomLvl:30,minFov:20,maxFov:120},O={appSetting:M.APP_SETTING,masker:z,immediate:!0},{cloneDeep:Z,deepMergeProps:Q,getDiffProps:ee}=M.utils;function te(a,s,h,u){const l=e.ref(Z(z)),r=e.ref(),p=e.ref(),i=e.computed(()=>l.value),S=e.computed(()=>{const{coordinateTree:t,mappedCoordinateTree:o,currentSpace:c,currentModel:d,currentPoint:f}=s.value||{};return{coordinateTree:t,mappedCoordinateTree:o,currentSpace:c,currentModel:d,currentPoint:f,cameraStatus:r.value,state:i.value}});e.watch(()=>Z(a.value.masker),g,{immediate:!0,deep:!0});function g(t,o){const c=ee(t,o);n(c)}function C(){return e.unref(i)}function n(t){t&&Q(l.value,t)}function y(){I(),q(),u("ready",H(),C())}function _(){P()}function I(){const t=e.unref(h);t&&(t.addEventListener("mousedown",m),t.addEventListener("touchstart",m),window.addEventListener("mousemove",w),window.addEventListener("touchmove",w),window.addEventListener("mouseup",L),window.addEventListener("touchend",L),t.addEventListener("mouseover",k),t.addEventListener("mouseout",D),t.addEventListener("wheel",j))}function P(){const t=e.unref(h);t&&(t.removeEventListener("mousedown",m),t.removeEventListener("touchstart",m),window.removeEventListener("mousemove",w),window.removeEventListener("touchmove",w),window.removeEventListener("mouseup",L),window.removeEventListener("touchend",L),t.removeEventListener("mouseover",k),t.removeEventListener("mouseout",D),t.removeEventListener("wheel",j))}function m(t){const o=t instanceof TouchEvent?t.touches[0]:t,{defaultYaw:c=0,defaultPitch:d=0}=i.value,f=Number(c)-Number(s.value.currentPoint?.yaw||0);p.value={pageX:o.pageX,pageY:o.pageY,defaultYaw:f,defaultPitch:d},$(!0),u("mousedown",t)}function w(t){if(!p.value||!K())return;const o=t instanceof TouchEvent?t.touches[0]:t,{pageX:c,pageY:d}=o,{pageX:f,pageY:v}=p.value,{defaultYaw:T=0,defaultPitch:B=0}=p.value,F=Math.PI*.15/180;let N=(Number(T)-(c-f)*F)%(2*Math.PI),R=(Number(B)+(d-v)*F)%(2*Math.PI);R=Math.max(-Math.PI/2,Math.min(Math.PI/2,R));const A=new M.Position({yaw:N,pitch:R});W(A)}function L(){$(!1),p.value=void 0}function k(){V(!0)}function D(){V(!1)}function j(t){t.preventDefault(),t.stopPropagation();const o=Math.sign(t.deltaY)*5;if(o===0)return;const{minFov:c=0,maxFov:d=0}=i.value,{fov:f=0}=r.value||{},v=Math.min(Math.max(f+o,c),d);v!==f&&J(b.fovToZoomLevel(v))}function q(){const{defaultYaw:t=0,defaultPitch:o=0,defaultZoomLvl:c=0,referPoint:d,referCoordinate:f}=i.value,v=b.referPointToModelPoint(d,f);if(v){const T=Number(t)+(v?.yaw||0),B=new M.Position({yaw:Number(T),pitch:Number(o)}),F=b.modelPointToCameraPosition(v),N=b.maskerRotateToCameraTarget(B,F),R=b.zoomLevelToFov(c);s.value.setModelPoint(v),Y({position:F,target:N,fov:R}),n({defaultYaw:T}),u("point-loaded",v)}}function fe(){const{defaultYaw:t,defaultPitch:o}=i.value;return{yaw:t,pitch:o}}function me(){return i.value.defaultZoomLvl}function pe(){return r.value?.position}function ve(){return r.value?.fov}function he(){return r.value?.target}function H(){return r.value}function we(){return i.value?.mouseover??!1}function K(){return i.value?.mousedown??!1}function Y(t){r.value={...r.value,...t}}function V(t){n({mouseover:t})}function $(t){n({mousedown:t})}function Pe(t){n({minFov:t})}function Me(t){n({maxFov:t})}function ye(t,o){const{coordinate:c,yaw:d,pitch:f,zoomLevel:v}=o;n({referPoint:t,referCoordinate:c,defaultYaw:d,defaultPitch:f,defaultZoomLvl:v}),q()}function W(t){const o=r.value?.position;if(!o)return;const{yaw:c,pitch:d}=t,f=Number(s.value.currentPoint?.yaw||0)+c,v=new M.Position({yaw:Number(f),pitch:Number(d)}),T=b.maskerRotateToCameraTarget(v,o);n({defaultYaw:f,defaultPitch:d}),Y({target:T}),u("position-updated",{position:t,target:T})}function J(t){const o=b.zoomLevelToFov(t);n({defaultZoomLvl:t}),Y({fov:o}),u("zoom-updated",{zoomLevel:t,fov:o})}function Se(t,o){const{coordinateTree:c,currentModel:d}=s.value;if(d){const f=c?.findCsById(o?.id),v=f?.getDestRelativeMap(d);if(!v)return;const T=new M.Point(t).projection(v,f,d),{y:B=0}=T||{};return new M.Point({...T,y:-B})}}function ge(t){return new M.Vector3(t)}function ke(t,o){const{x:c=0,y:d=0,z:f=0}=o,{yaw:v,pitch:T}=t,B=-v,F=T,N=100,R=0,A=N*Math.cos(R+B)+c,Ce=N*Math.sin(R+B)+d,_e=N*Math.tan(F)+f;return new M.Vector3({x:A,y:Ce,z:_e})}function Te(t){const{minFov:o=20,maxFov:c=120}=i.value,f=100-(Math.max(o,Math.min(c,t))-o)/(c-o)*100;return Math.max(0,Math.min(100,Math.round(f)))}function Ee(t){const{minFov:o=20,maxFov:c=120}=i.value;let d=c+t/100*(o-c);return Math.max(o,Math.min(c,d))}const b={referPointToModelPoint:Se,modelPointToCameraPosition:ge,maskerRotateToCameraTarget:ke,fovToZoomLevel:Te,zoomLevelToFov:Ee};return{getProps:i,getBindValue:S,maskerAction:{dataHelper:b,isMouseover:we,isMousedown:K,setState:n,setMousedown:$,setMouseover:V,setMinFov:Pe,setMaxFov:Me,setReferPoint:ye,zoom:J,rotate:W,getState:C,getPosition:fe,getZoomLevel:me,getCameraPosition:pe,getCameraTarget:he,getCameraFov:ve,getCameraStatus:H},handleReady:y,handleDestroy:_}}const oe={class:"vsleem-bimsee-masker"},ne=e.defineComponent({__name:"Masker",props:{bimseeProps:{},bimseeStore:{}},emits:["ready","click","mousedown","zoom-updated","position-updated","point-loaded"],setup(a,{expose:s,emit:h}){const u=a,l=h,r=e.ref(),p=e.computed(()=>u.bimseeProps),i=e.computed(()=>u.bimseeStore),{getProps:S,getBindValue:g,maskerAction:C,handleReady:n,handleDestroy:y}=te(p,i,r,l);return e.onMounted(n),e.onBeforeUnmount(y),s(C),(_,I)=>(e.openBlock(),e.createElementBlock("div",oe,[e.withDirectives(e.createElementVNode("div",{ref_key:"maskerElRef",ref:r,class:"bimsee-masker-full"},null,512),[[e.vShow,e.unref(S).visible]]),e.renderSlot(_.$slots,"default",e.normalizeProps(e.guardReactiveProps(e.unref(g))),void 0,!0)]))}}),G=(a,s)=>{const h=a.__vccOpts||a;for(const[u,l]of s)h[u]=l;return h},ae=G(ne,[["__scopeId","data-v-4578d53d"]]);var x=(a=>(a[a.StoreMissParams=11e3]="StoreMissParams",a[a.StoreNoCSTree=11001]="StoreNoCSTree",a[a.StoreSelectNoBIMModel=11002]="StoreSelectNoBIMModel",a))(x||{});function re(a){const s=e.ref(),h=e.ref(),u=e.ref(!1),l=e.ref(!1),r=e.ref(),p=e.ref(),i=e.computed(()=>s.value?.findCsById(r.value)),S=e.computed(()=>i.value?.findParentSpace());async function g(m){const{projectId:w,modelCsId:L}=m||{};try{if(!w)throw new M.AppError(x.StoreMissParams,"缺少必要的查询参数");u.value=!0;let k=await M.DataSource.getCoordinateTree(w);if(k=await a.value.handleResponseFn?.(k)||k,!k)throw new M.AppError(x.StoreNoCSTree,`未查询到坐标系ID为 ${L} 的坐标系树`);const D=k.findCsById(L);s.value=k,h.value=D?.getMappedCsTree(),n({modelCsId:L}),a.value.fetchSuccess?.(k)}catch(k){console.error(k),a.value.fetchError?.(k)}finally{u.value=!1}}function C(m=!1){l.value=m}function n(m){const{modelCsId:w}=m;w&&y({id:w})}function y(m){const{id:w}=m;if(s.value?.findCsById(w)?.modelType===M.CoordinateModelType.BIMModel)r.value=w;else throw new M.AppError(x.StoreSelectNoBIMModel,`未找到ID为 ${w} 的BIM模型坐标系`)}function _(m){p.value=m}function I(){return P.value}const P=e.computed(()=>({ready:l.value,coordinateTree:s.value,mappedCoordinateTree:h.value,currentPoint:p.value,currentSpace:S.value,currentModel:i.value,reload:g,selectModel:y,setModelPoint:_}));return{storeRef:P,getStore:I,setReady:C}}const{cloneDeep:U,deepMergeProps:se,getDiffProps:ie}=M.utils;function ce(a,s,h){const u=e.ref(U(O)),l=e.computed(()=>u.value);e.watch(()=>U(a),g,{immediate:!0,deep:!0}),e.watch(()=>l.value.searchInfo,_,{deep:!0});const{storeRef:r,getStore:p,setReady:i}=re(l);e.onMounted(S);async function S(){const{appSetting:P,immediate:m,searchInfo:w,delay:L=1}=e.unref(l);P&&M.http.setRequestGlobalConfig(P),m&&(await r.value?.reload(w),setTimeout(y,L))}function g(P,m){const w=ie(P,m);n(w)}function C(){return e.unref(l)}function n(P){P&&se(u.value,P)}function y(){i(!0),h?.("ready")}async function _(){const{searchInfo:P}=l.value,{ready:m}=r.value;m&&P&&await r.value?.reload(P)}function I(){return s.value}return{storeRef:r,getStore:p,getMasker:I,getState:C,setState:n}}function ue(a,s,h){const u=e.computed(()=>a.value.ready&&!!a.value.currentModel),l=e.computed(()=>{const{coordinateTree:r,mappedCoordinateTree:p,currentSpace:i,currentModel:S,currentPoint:g}=a.value||{};return{coordinateTree:r,mappedCoordinateTree:p,currentSpace:i,currentModel:S,currentPoint:g}});return{getShow:u,getBindValue:l}}function de(a,s){const h=e.ref({yaw:0,pitch:0});function u(){s("masker-ready")}function l(n){s("masker-click",n)}function r(n){s("masker-mousedown",n)}function p(n){s("masker-zoom-updated",n)}function i(n){s("masker-position-updated",n,g(n))}function S(n){s("masker-point-loaded",n)}function g(n){const{yaw:y,pitch:_}=n.position,{yaw:I,pitch:P}=e.unref(h);return h.value={yaw:y,pitch:_},{yaw:y-I,pitch:_-P}}return{maskerEvents:{ready:u,click:l,mousedown:r,zoomUpdated:p,positionUpdated:i,pointLoaded:S}}}const le={class:"vsleem-bimsee"},X=G(e.defineComponent({name:"Bimsee",__name:"Bimsee",props:{appSetting:{},searchInfo:{},bimseeSetting:{},masker:{default:()=>z},immediate:{type:Boolean,default:!0},delay:{},handleCheckModelFn:{},handleResponseFn:{},fetchSuccess:{},fetchError:{}},emits:["ready","change-model","masker-ready","masker-click","masker-mousedown","masker-zoom-updated","masker-position-updated","masker-point-loaded"],setup(a,{expose:s,emit:h}){const u=a,l=h,r=e.ref(),p=ce(u,r,l),{storeRef:i,getMasker:S}=p,{getShow:g,getBindValue:C}=ue(i),{maskerEvents:n}=de(S,l);return s(p),(y,_)=>(e.openBlock(),e.createElementBlock("div",le,[e.unref(g)?(e.openBlock(),e.createBlock(ae,e.mergeProps({key:0,ref_key:"maskerElRef",ref:r,bimseeProps:u,bimseeStore:e.unref(i)},e.toHandlers(e.unref(n))),{default:e.withCtx(I=>[e.renderSlot(y.$slots,"masker",e.normalizeProps(e.guardReactiveProps(I)),void 0,!0)]),_:3},16,["bimseeStore"])):e.createCommentVNode("",!0),e.renderSlot(y.$slots,"default",e.normalizeProps(e.guardReactiveProps(e.unref(C))),void 0,!0)]))}}),[["__scopeId","data-v-03ae1278"]]);E.BIMSEE_CONFIG=O,E.Bimsee=X,E.BimseePlugin=X,E.MASKER_CONFIG=z,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(E,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@vsleem-realsee-viewer/shared")):typeof define=="function"&&define.amd?define(["exports","vue","@vsleem-realsee-viewer/shared"],e):(E=typeof globalThis<"u"?globalThis:E||self,e(E.BimseePlugin={},E.Vue,E.VSLeemShared))})(this,(function(E,e,M){"use strict";const z={visible:!0,defaultYaw:0,defaultPitch:0,defaultZoomLvl:30,minFov:20,maxFov:120},O={appSetting:M.APP_SETTING,masker:z,immediate:!0},{cloneDeep:Z,deepMergeProps:Q,getDiffProps:ee}=M.utils;function te(a,s,h,u){const l=e.ref(Z(z)),r=e.ref(),p=e.ref(),i=e.computed(()=>l.value),S=e.computed(()=>{const{coordinateTree:t,mappedCoordinateTree:o,currentSpace:c,currentModel:d,currentPoint:f}=s.value||{};return{coordinateTree:t,mappedCoordinateTree:o,currentSpace:c,currentModel:d,currentPoint:f,cameraStatus:r.value,state:i.value}});e.watch(()=>Z(a.value.masker),g,{immediate:!0,deep:!0});function g(t,o){const c=ee(t,o);n(c)}function C(){return e.unref(i)}function n(t){t&&Q(l.value,t)}function y(){I(),q(),u("ready",H(),C())}function _(){P()}function I(){const t=e.unref(h);t&&(t.addEventListener("mousedown",m),t.addEventListener("touchstart",m),window.addEventListener("mousemove",w),window.addEventListener("touchmove",w),window.addEventListener("mouseup",L),window.addEventListener("touchend",L),t.addEventListener("mouseover",k),t.addEventListener("mouseout",D),t.addEventListener("wheel",j))}function P(){const t=e.unref(h);t&&(t.removeEventListener("mousedown",m),t.removeEventListener("touchstart",m),window.removeEventListener("mousemove",w),window.removeEventListener("touchmove",w),window.removeEventListener("mouseup",L),window.removeEventListener("touchend",L),t.removeEventListener("mouseover",k),t.removeEventListener("mouseout",D),t.removeEventListener("wheel",j))}function m(t){const o=t instanceof TouchEvent?t.touches[0]:t,{defaultYaw:c=0,defaultPitch:d=0}=i.value,f=Number(c)-Number(s.value.currentPoint?.yaw||0);p.value={pageX:o.pageX,pageY:o.pageY,defaultYaw:f,defaultPitch:d},$(!0),u("mousedown",t)}function w(t){if(!p.value||!K())return;const o=t instanceof TouchEvent?t.touches[0]:t,{pageX:c,pageY:d}=o,{pageX:f,pageY:v}=p.value,{defaultYaw:T=0,defaultPitch:B=0}=p.value,F=Math.PI*.15/180;let N=(Number(T)-(c-f)*F)%(2*Math.PI),R=(Number(B)+(d-v)*F)%(2*Math.PI);R=Math.max(-Math.PI/2,Math.min(Math.PI/2,R));const A=new M.Position({yaw:N,pitch:R});W(A)}function L(){$(!1),p.value=void 0}function k(){V(!0)}function D(){V(!1)}function j(t){t.preventDefault(),t.stopPropagation();const o=Math.sign(t.deltaY)*5;if(o===0)return;const{minFov:c=0,maxFov:d=0}=i.value,{fov:f=0}=r.value||{},v=Math.min(Math.max(f+o,c),d);v!==f&&J(b.fovToZoomLevel(v))}function q(){const{defaultYaw:t=0,defaultPitch:o=0,defaultZoomLvl:c=0,referPoint:d,referCoordinate:f}=i.value,v=b.referPointToModelPoint(d,f);if(v){const T=Number(t)+(v?.yaw||0),B=new M.Position({yaw:Number(T),pitch:Number(o)}),F=b.modelPointToCameraPosition(v),N=b.maskerRotateToCameraTarget(B,F),R=b.zoomLevelToFov(c);s.value.setModelPoint(v),Y({position:F,target:N,fov:R}),n({defaultYaw:T}),u("point-loaded",v)}}function fe(){const{defaultYaw:t,defaultPitch:o}=i.value;return{yaw:t,pitch:o}}function me(){return i.value.defaultZoomLvl}function pe(){return r.value?.position}function ve(){return r.value?.fov}function he(){return r.value?.target}function H(){return r.value}function we(){return i.value?.mouseover??!1}function K(){return i.value?.mousedown??!1}function Y(t){r.value={...r.value,...t}}function V(t){n({mouseover:t})}function $(t){n({mousedown:t})}function Pe(t){n({minFov:t})}function Me(t){n({maxFov:t})}function ye(t,o){const{coordinate:c,yaw:d,pitch:f,zoomLevel:v}=o;n({referPoint:t,referCoordinate:c,defaultYaw:d,defaultPitch:f,defaultZoomLvl:v}),q()}function W(t){const o=r.value?.position;if(!o)return;const{yaw:c,pitch:d}=t,f=Number(s.value.currentPoint?.yaw||0)+c,v=new M.Position({yaw:Number(f),pitch:Number(d)}),T=b.maskerRotateToCameraTarget(v,o);n({defaultYaw:f,defaultPitch:d}),Y({target:T}),u("position-updated",{position:t,target:T})}function J(t){const o=b.zoomLevelToFov(t);n({defaultZoomLvl:t}),Y({fov:o}),u("zoom-updated",{zoomLevel:t,fov:o})}function Se(t,o){const{coordinateTree:c,currentModel:d}=s.value;if(d){const f=c?.findCsById(o?.id),v=f?.getDestRelativeMap(d);if(!v)return;const T=new M.Point(t).projection(v,f,d),{y:B=0}=T||{};return new M.Point({...T,y:-B})}}function ge(t){return new M.Vector3(t)}function ke(t,o){const{x:c=0,y:d=0,z:f=0}=o,{yaw:v,pitch:T}=t,B=-v,F=T,N=100,R=0,A=N*Math.cos(R+B)+c,Ce=N*Math.sin(R+B)+d,_e=N*Math.tan(F)+f;return new M.Vector3({x:A,y:Ce,z:_e})}function Te(t){const{minFov:o=20,maxFov:c=120}=i.value,f=100-(Math.max(o,Math.min(c,t))-o)/(c-o)*100;return Math.max(0,Math.min(100,Math.round(f)))}function Ee(t){const{minFov:o=20,maxFov:c=120}=i.value;let d=c+t/100*(o-c);return Math.max(o,Math.min(c,d))}const b={referPointToModelPoint:Se,modelPointToCameraPosition:ge,maskerRotateToCameraTarget:ke,fovToZoomLevel:Te,zoomLevelToFov:Ee};return{getProps:i,getBindValue:S,maskerAction:{dataHelper:b,isMouseover:we,isMousedown:K,setState:n,setMousedown:$,setMouseover:V,setMinFov:Pe,setMaxFov:Me,setReferPoint:ye,zoom:J,rotate:W,getState:C,getPosition:fe,getZoomLevel:me,getCameraPosition:pe,getCameraTarget:he,getCameraFov:ve,getCameraStatus:H},handleReady:y,handleDestroy:_}}const oe={class:"vsleem-bimsee-masker"},ne=e.defineComponent({__name:"Masker",props:{bimseeProps:{},bimseeStore:{}},emits:["ready","click","mousedown","zoom-updated","position-updated","point-loaded"],setup(a,{expose:s,emit:h}){const u=a,l=h,r=e.ref(),p=e.computed(()=>u.bimseeProps),i=e.computed(()=>u.bimseeStore),{getProps:S,getBindValue:g,maskerAction:C,handleReady:n,handleDestroy:y}=te(p,i,r,l);return e.onMounted(n),e.onBeforeUnmount(y),s(C),(_,I)=>(e.openBlock(),e.createElementBlock("div",oe,[e.withDirectives(e.createElementVNode("div",{ref_key:"maskerElRef",ref:r,class:"bimsee-masker-full"},null,512),[[e.vShow,e.unref(S).visible]]),e.renderSlot(_.$slots,"default",e.normalizeProps(e.guardReactiveProps(e.unref(g))),void 0,!0)]))}}),G=(a,s)=>{const h=a.__vccOpts||a;for(const[u,l]of s)h[u]=l;return h},ae=G(ne,[["__scopeId","data-v-4578d53d"]]);var x=(a=>(a[a.StoreMissParams=11e3]="StoreMissParams",a[a.StoreNoCSTree=11001]="StoreNoCSTree",a[a.StoreSelectNoBIMModel=11002]="StoreSelectNoBIMModel",a))(x||{});function re(a){const s=e.ref(),h=e.ref(),u=e.ref(!1),l=e.ref(!1),r=e.ref(),p=e.ref(),i=e.computed(()=>s.value?.findCsById(r.value)),S=e.computed(()=>i.value?.findParentSpace());async function g(m){const{projectId:w,modelCsId:L}=m||{};try{if(!w)throw new M.AppError(x.StoreMissParams,"缺少必要的查询参数");u.value=!0;let k=await M.DataSource.getCoordinateTree(w);if(k=await a.value.handleResponseFn?.(k)||k,!k)throw new M.AppError(x.StoreNoCSTree,`未查询到坐标系ID为 ${L} 的坐标系树`);const D=k.findCsById(L);s.value=k,h.value=D?.getMappedCsTree(),n({modelCsId:L}),a.value.fetchSuccess?.(k)}catch(k){console.error(k),a.value.fetchError?.(k)}finally{u.value=!1}}function C(m=!1){l.value=m}function n(m){const{modelCsId:w}=m;w&&y({id:w})}function y(m){const{id:w}=m;if(s.value?.findCsById(w)?.modelType===M.CoordinateModelType.BIMModel)r.value=w;else throw new M.AppError(x.StoreSelectNoBIMModel,`未找到ID为 ${w} 的BIM模型坐标系`)}function _(m){p.value=m}function I(){return P.value}const P=e.computed(()=>({ready:l.value,coordinateTree:s.value,mappedCoordinateTree:h.value,currentPoint:p.value,currentSpace:S.value,currentModel:i.value,reload:g,selectModel:y,setModelPoint:_}));return{storeRef:P,getStore:I,setReady:C}}const{cloneDeep:U,deepMergeProps:se,getDiffProps:ie}=M.utils;function ce(a,s,h){const u=e.ref(U(O)),l=e.computed(()=>u.value);e.watch(()=>U(a),g,{immediate:!0,deep:!0}),e.watch(()=>l.value.searchInfo,_,{deep:!0});const{storeRef:r,getStore:p,setReady:i}=re(l);e.onMounted(S);async function S(){const{appSetting:P,immediate:m,searchInfo:w,delay:L=1}=e.unref(l);P&&M.http.setRequestGlobalConfig(P),m&&(await r.value?.reload(w),setTimeout(y,L))}function g(P,m){const w=ie(P,m);n(w)}function C(){return e.unref(l)}function n(P){P&&se(u.value,P)}function y(){i(!0),h?.("ready")}async function _(){const{searchInfo:P}=l.value,{ready:m}=r.value;m&&P&&await r.value?.reload(P)}function I(){return s.value}return{storeRef:r,getStore:p,getMasker:I,getState:C,setState:n}}function ue(a,s,h){const u=e.computed(()=>a.value.ready&&!!a.value.currentModel),l=e.computed(()=>{const{coordinateTree:r,mappedCoordinateTree:p,currentSpace:i,currentModel:S,currentPoint:g}=a.value||{};return{coordinateTree:r,mappedCoordinateTree:p,currentSpace:i,currentModel:S,currentPoint:g}});return{getShow:u,getBindValue:l}}function de(a,s){const h=e.ref({yaw:0,pitch:0});function u(){s("masker-ready")}function l(n){s("masker-click",n)}function r(n){s("masker-mousedown",n)}function p(n){s("masker-zoom-updated",n)}function i(n){s("masker-position-updated",n,g(n))}function S(n){s("masker-point-loaded",n)}function g(n){const{yaw:y,pitch:_}=n.position,{yaw:I,pitch:P}=e.unref(h);return h.value={yaw:y,pitch:_},{yaw:y-I,pitch:_-P}}return{maskerEvents:{ready:u,click:l,mousedown:r,zoomUpdated:p,positionUpdated:i,pointLoaded:S}}}const le={class:"vsleem-bimsee"},X=G(e.defineComponent({name:"Bimsee",__name:"Bimsee",props:{appSetting:{},searchInfo:{},bimseeSetting:{},masker:{default:()=>z},immediate:{type:Boolean,default:!0},delay:{},handleResponseFn:{},fetchSuccess:{},fetchError:{}},emits:["ready","change-model","masker-ready","masker-click","masker-mousedown","masker-zoom-updated","masker-position-updated","masker-point-loaded"],setup(a,{expose:s,emit:h}){const u=a,l=h,r=e.ref(),p=ce(u,r,l),{storeRef:i,getMasker:S}=p,{getShow:g,getBindValue:C}=ue(i),{maskerEvents:n}=de(S,l);return s(p),(y,_)=>(e.openBlock(),e.createElementBlock("div",le,[e.unref(g)?(e.openBlock(),e.createBlock(ae,e.mergeProps({key:0,ref_key:"maskerElRef",ref:r,bimseeProps:u,bimseeStore:e.unref(i)},e.toHandlers(e.unref(n))),{default:e.withCtx(I=>[e.renderSlot(y.$slots,"masker",e.normalizeProps(e.guardReactiveProps(I)),void 0,!0)]),_:3},16,["bimseeStore"])):e.createCommentVNode("",!0),e.renderSlot(y.$slots,"default",e.normalizeProps(e.guardReactiveProps(e.unref(C))),void 0,!0)]))}}),[["__scopeId","data-v-03ae1278"]]);E.BIMSEE_CONFIG=O,E.Bimsee=X,E.BimseePlugin=X,E.MASKER_CONFIG=z,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})}));
@@ -14,7 +14,6 @@ export type BimseeProps = {
14
14
  masker?: MaskerProps;
15
15
  immediate?: boolean;
16
16
  delay?: number;
17
- handleCheckModelFn: (res?: Coordinate) => Promise<boolean>;
18
17
  handleResponseFn?: (res?: Coordinate) => Promise<Coordinate | undefined>;
19
18
  fetchSuccess?: (coordinate?: Coordinate) => void;
20
19
  fetchError?: (error: any) => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vsleem-realsee-viewer/bimsee-plugin",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "description": "Bimsee plugin for VSLeem RealSee Viewer",
5
5
  "main": "./dist/index.umd.js",
6
6
  "module": "./dist/index.mjs",
@@ -13,11 +13,11 @@
13
13
  "dist"
14
14
  ],
15
15
  "dependencies": {
16
- "@vsleem-realsee-viewer/shared": "2.0.8"
16
+ "@vsleem-realsee-viewer/shared": "2.0.9"
17
17
  },
18
18
  "peerDependencies": {
19
19
  "vue": "^3.0.0",
20
- "@vsleem-realsee-viewer/shared": "2.0.8"
20
+ "@vsleem-realsee-viewer/shared": "2.0.9"
21
21
  },
22
22
  "peerDependenciesMeta": {
23
23
  "vue": {