@qverse-ui/lit-components 1.0.4 → 1.0.5

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 (34) hide show
  1. package/dist/components/common/lit-switch-dollhouse-view/index.d.ts +20 -11
  2. package/dist/components/common/lit-switch-dollhouse-view/index.d.ts.map +1 -1
  3. package/dist/components/common/lit-switch-dollhouse-view/index.js +43 -42
  4. package/dist/components/common/lit-switch-dollhouse-view/index.js.map +1 -1
  5. package/dist/components/common/lit-switch-dollhouse-view/interaction.d.ts +5 -5
  6. package/dist/components/common/lit-switch-dollhouse-view/interaction.d.ts.map +1 -1
  7. package/dist/components/common/lit-switch-dollhouse-view/interaction.js +22 -22
  8. package/dist/components/common/lit-switch-dollhouse-view/interaction.js.map +1 -1
  9. package/dist/components/common/lit-switch-dollhouse-view/styles.d.ts.map +1 -1
  10. package/dist/components/common/lit-switch-dollhouse-view/styles.js +2 -6
  11. package/dist/components/common/lit-switch-dollhouse-view/styles.js.map +1 -1
  12. package/dist/components/common/lit-switch-floorplan-view/index.d.ts +5 -11
  13. package/dist/components/common/lit-switch-floorplan-view/index.d.ts.map +1 -1
  14. package/dist/components/common/lit-switch-floorplan-view/index.js +19 -30
  15. package/dist/components/common/lit-switch-floorplan-view/index.js.map +1 -1
  16. package/dist/components/common/lit-switch-floorplan-view/interaction.d.ts +5 -5
  17. package/dist/components/common/lit-switch-floorplan-view/interaction.d.ts.map +1 -1
  18. package/dist/components/common/lit-switch-floorplan-view/interaction.js +22 -22
  19. package/dist/components/common/lit-switch-floorplan-view/interaction.js.map +1 -1
  20. package/dist/components/common/lit-switch-floorplan-view/styles.d.ts.map +1 -1
  21. package/dist/components/common/lit-switch-floorplan-view/styles.js +2 -6
  22. package/dist/components/common/lit-switch-floorplan-view/styles.js.map +1 -1
  23. package/dist/components/common/lit-switch-panorama-view/index.d.ts +23 -11
  24. package/dist/components/common/lit-switch-panorama-view/index.d.ts.map +1 -1
  25. package/dist/components/common/lit-switch-panorama-view/index.js +43 -42
  26. package/dist/components/common/lit-switch-panorama-view/index.js.map +1 -1
  27. package/dist/components/common/lit-switch-panorama-view/interaction.d.ts +5 -5
  28. package/dist/components/common/lit-switch-panorama-view/interaction.d.ts.map +1 -1
  29. package/dist/components/common/lit-switch-panorama-view/interaction.js +22 -22
  30. package/dist/components/common/lit-switch-panorama-view/interaction.js.map +1 -1
  31. package/dist/components/common/lit-switch-panorama-view/styles.d.ts.map +1 -1
  32. package/dist/components/common/lit-switch-panorama-view/styles.js +2 -6
  33. package/dist/components/common/lit-switch-panorama-view/styles.js.map +1 -1
  34. package/package.json +1 -1
@@ -5,43 +5,52 @@ export declare class LitSwitchDollhouseView extends LitElement {
5
5
  /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */
6
6
  qspace: any;
7
7
  /**
8
- * 是否允许点击;默认 false,场景就绪后由宿主设为 true
9
- * HTML: button-enabled / Vue: :button-enabled
8
+
9
+ * 是否可点击;由 core.loaded / mode.change 自动同步,宿主亦可覆盖
10
+
11
+ * HTML: enabled / Vue: :enabled
12
+
10
13
  */
11
- buttonEnabled: boolean;
12
- /** 切换进行中(内部状态);调用 qspace 前禁用,complete 后恢复 */
13
- private _switching;
14
- /** 切换完成后禁用当前按钮,避免重复切换 */
15
- private _isCurrentView;
16
- setSwitching(value: boolean): void;
17
- isSwitching(): boolean;
18
- setCurrentView(value: boolean): void;
19
- isCurrentView(): boolean;
14
+ enabled: boolean;
15
+ setEnabled(value: boolean): void;
20
16
  static styles: import("lit").CSSResult;
21
17
  private _onClick;
18
+ private _onCoreLoaded;
22
19
  private _onViewModeChange;
23
20
  /**
21
+
24
22
  * 渲染模板
23
+
25
24
  */
26
25
  render(): import("lit-html").TemplateResult;
27
26
  /**
27
+
28
28
  * 组件连接生命周期
29
+
29
30
  */
30
31
  connectedCallback(): void;
31
32
  /**
33
+
32
34
  * 组件断开生命周期
35
+
33
36
  */
34
37
  disconnectedCallback(): void;
35
38
  /**
39
+
36
40
  * 第一次更新
41
+
37
42
  */
38
43
  firstUpdated(changed: Map<string, unknown>): void;
39
44
  /**
45
+
40
46
  * 组件更新
47
+
41
48
  */
42
49
  updated(changed: Map<string, unknown>): void;
43
50
  /**
51
+
44
52
  * 将要更新
53
+
45
54
  */
46
55
  protected willUpdate(_changedProperties: PropertyValues): void;
47
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-dollhouse-view/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAGhD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAMpC,gDAAgD;AAChD,qBACa,sBAAuB,SAAQ,UAAU;IAEpD,0DAA0D;IAE1D,MAAM,EAAE,GAAG,CAAO;IAElB;;;OAGG;IAOH,aAAa,UAAQ;IAErB,6CAA6C;IAE7C,OAAO,CAAC,UAAU,CAAQ;IAE1B,yBAAyB;IAEzB,OAAO,CAAC,cAAc,CAAQ;IAE9B,YAAY,CAAC,KAAK,EAAE,OAAO;IAS3B,WAAW;IAMX,cAAc,CAAC,KAAK,EAAE,OAAO;IAO7B,aAAa;IAMb,MAAM,CAAC,MAAM,0BAAS;IAEtB,OAAO,CAAC,QAAQ,CAIf;IAED,OAAO,CAAC,iBAAiB,CAIxB;IAED;;OAEG;IACH,MAAM;IAQN;;OAEG;IACH,iBAAiB;IAUjB;;OAEG;IACH,oBAAoB;IAapB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAQ1C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAQrC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;CAM/D;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,qBAAqB;QAE7B,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAA;KAE9B;CAEF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-dollhouse-view/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAMhD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAYpC,gDAAgD;AAEhD,qBAEa,sBAAuB,SAAQ,UAAU;IAIpD,0DAA0D;IAI1D,MAAM,EAAE,GAAG,CAAO;IAIlB;;;;;;OAMG;IAcH,OAAO,UAAQ;IAIf,UAAU,CAAC,KAAK,EAAE,OAAO;IAgBzB,MAAM,CAAC,MAAM,0BAAS;IAItB,OAAO,CAAC,QAAQ,CAQf;IAID,OAAO,CAAC,aAAa,CAQpB;IAID,OAAO,CAAC,iBAAiB,CAQxB;IAID;;;;OAIG;IAEH,MAAM;IAYN;;;;OAIG;IAEH,iBAAiB;IA4BjB;;;;OAIG;IAEH,oBAAoB;IA4BpB;;;;OAIG;IAEH,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAY1C;;;;OAIG;IAEH,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAYrC;;;;OAIG;IAEH,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;CAQ/D;AAID,OAAO,CAAC,MAAM,CAAC;IAIb,UAAU,qBAAqB;QAI7B,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAA;KAI9B;CAIF"}
@@ -1,8 +1,8 @@
1
1
  import { LitElement } from "lit";
2
- import { property, state } from "lit/decorators.js";
2
+ import { property } from "lit/decorators.js";
3
3
  import { safeCustomElement } from "../../../utils/define-lit-element.js";
4
4
  import { TAG } from "./constants.js";
5
- import { handleDollhouseClick, handelViewModeChange } from "./interaction.js";
5
+ import { handleDollhouseClick, handelCoreLoaded, handelViewModeChange } from "./interaction.js";
6
6
  import { booleanAttr } from "./properties.js";
7
7
  import { styles } from "./styles.js";
8
8
  import { renderDollhouseView } from "./template.js";
@@ -20,67 +20,74 @@ let LitSwitchDollhouseView = class extends LitElement {
20
20
  constructor() {
21
21
  super(...arguments);
22
22
  this.qspace = null;
23
- this.buttonEnabled = false;
24
- this._switching = false;
25
- this._isCurrentView = false;
23
+ this.enabled = false;
26
24
  this._onClick = (e) => {
27
25
  handleDollhouseClick(this, e);
28
26
  };
27
+ this._onCoreLoaded = () => {
28
+ handelCoreLoaded(this);
29
+ };
29
30
  this._onViewModeChange = (mode) => {
30
31
  handelViewModeChange(this, mode);
31
32
  };
32
33
  }
33
- setSwitching(value) {
34
- this._switching = value;
35
- this.toggleAttribute("switching", value);
36
- }
37
- isSwitching() {
38
- return this._switching;
39
- }
40
- setCurrentView(value) {
41
- this._isCurrentView = value;
42
- this.toggleAttribute("current-view", value);
43
- }
44
- isCurrentView() {
45
- return this._isCurrentView;
34
+ setEnabled(value) {
35
+ this.enabled = value;
36
+ this.toggleAttribute("enabled", value);
46
37
  }
47
38
  /**
48
- * 渲染模板
49
- */
39
+
40
+ * 渲染模板
41
+
42
+ */
50
43
  render() {
51
44
  return renderDollhouseView(this._onClick);
52
45
  }
53
46
  /**
54
- * 组件连接生命周期
55
- */
47
+
48
+ * 组件连接生命周期
49
+
50
+ */
56
51
  connectedCallback() {
57
- this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
58
52
  super.connectedCallback();
53
+ if (this.qspace) {
54
+ this.qspace.core.addEventListener("loaded", this._onCoreLoaded);
55
+ this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
56
+ }
59
57
  }
60
58
  /**
61
- * 组件断开生命周期
62
- */
59
+
60
+ * 组件断开生命周期
61
+
62
+ */
63
63
  disconnectedCallback() {
64
- this.setSwitching(false);
65
- this.setCurrentView(false);
66
- this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
64
+ if (this.qspace) {
65
+ this.qspace.core.removeEventListener("loaded", this._onCoreLoaded);
66
+ this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
67
+ }
67
68
  super.disconnectedCallback();
68
69
  }
69
70
  /**
70
- * 第一次更新
71
- */
71
+
72
+ * 第一次更新
73
+
74
+ */
72
75
  firstUpdated(changed) {
73
76
  super.firstUpdated(changed);
74
77
  }
75
78
  /**
76
- * 组件更新
77
- */
79
+
80
+ * 组件更新
81
+
82
+ */
78
83
  updated(changed) {
79
84
  super.updated(changed);
80
85
  }
81
86
  /**
82
- * 将要更新
83
- */
87
+
88
+ * 将要更新
89
+
90
+ */
84
91
  willUpdate(_changedProperties) {
85
92
  }
86
93
  };
@@ -91,17 +98,11 @@ __decorateClass([
91
98
  __decorateClass([
92
99
  property({
93
100
  type: Boolean,
94
- attribute: "button-enabled",
101
+ attribute: "enabled",
95
102
  reflect: true,
96
103
  converter: booleanAttr
97
104
  })
98
- ], LitSwitchDollhouseView.prototype, "buttonEnabled", 2);
99
- __decorateClass([
100
- state()
101
- ], LitSwitchDollhouseView.prototype, "_switching", 2);
102
- __decorateClass([
103
- state()
104
- ], LitSwitchDollhouseView.prototype, "_isCurrentView", 2);
105
+ ], LitSwitchDollhouseView.prototype, "enabled", 2);
105
106
  LitSwitchDollhouseView = __decorateClass([
106
107
  safeCustomElement(TAG)
107
108
  ], LitSwitchDollhouseView);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/index.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-dollhouse-view 组件注册与属性声明\r\n */\r\n\r\nimport { LitElement, PropertyValues } from 'lit'\r\nimport { property, state } from 'lit/decorators.js'\r\nimport { safeCustomElement } from '../../../utils/define-lit-element.js'\r\nimport { TAG } from './constants.js'\r\nimport { handleDollhouseClick, handelViewModeChange } from './interaction.js'\r\nimport { booleanAttr } from './properties.js'\r\nimport { styles } from './styles.js'\r\nimport { renderDollhouseView } from './template.js'\r\n\r\n/** 切换到 dollhouse 视图;qspace 须由宿主通过 :qspace 传入 */\r\n@safeCustomElement(TAG)\r\nexport class LitSwitchDollhouseView extends LitElement {\r\n\r\n /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */\r\n @property({ attribute: false })\r\n qspace: any = null\r\n\r\n /**\r\n * 是否允许点击;默认 false,场景就绪后由宿主设为 true\r\n * HTML: button-enabled / Vue: :button-enabled\r\n */\r\n @property({\r\n type: Boolean,\r\n attribute: 'button-enabled',\r\n reflect: true,\r\n converter: booleanAttr,\r\n })\r\n buttonEnabled = false\r\n\r\n /** 切换进行中(内部状态);调用 qspace 前禁用,complete 后恢复 */\r\n @state()\r\n private _switching = false\r\n\r\n /** 切换完成后禁用当前按钮,避免重复切换 */\r\n @state()\r\n private _isCurrentView = false\r\n\r\n setSwitching(value: boolean) {\r\n\r\n this._switching = value\r\n\r\n /** 同步内部状态到 HTML attribute */\r\n this.toggleAttribute('switching', value)\r\n\r\n }\r\n\r\n isSwitching() {\r\n\r\n return this._switching\r\n\r\n }\r\n\r\n setCurrentView(value: boolean) {\r\n\r\n this._isCurrentView = value\r\n this.toggleAttribute('current-view', value)\r\n\r\n }\r\n\r\n isCurrentView() {\r\n\r\n return this._isCurrentView\r\n\r\n }\r\n\r\n static styles = styles\r\n\r\n private _onClick = (e: Event) => {\r\n\r\n handleDollhouseClick(this, e)\r\n\r\n }\r\n\r\n private _onViewModeChange = (mode: string) => {\r\n\r\n handelViewModeChange(this, mode);\r\n\r\n }\r\n\r\n /**\r\n * 渲染模板\r\n */\r\n render() {\r\n\r\n // console.log('render', this);\r\n\r\n return renderDollhouseView(this._onClick)\r\n\r\n }\r\n\r\n /**\r\n * 组件连接生命周期\r\n */\r\n connectedCallback() {\r\n\r\n // console.log('connectedCallback', this);\r\n\r\n this.qspace.view.addEventListener('mode.change', this._onViewModeChange);\r\n\r\n super.connectedCallback()\r\n\r\n }\r\n\r\n /**\r\n * 组件断开生命周期\r\n */\r\n disconnectedCallback() {\r\n\r\n // console.log('disconnectedCallback', this);\r\n\r\n this.setSwitching(false)\r\n this.setCurrentView(false)\r\n\r\n this.qspace.view.removeEventListener('mode.change', this._onViewModeChange);\r\n\r\n super.disconnectedCallback()\r\n\r\n }\r\n\r\n /**\r\n * 第一次更新\r\n */\r\n firstUpdated(changed: Map<string, unknown>) {\r\n\r\n // console.log('firstUpdated', this, changed);\r\n\r\n super.firstUpdated(changed)\r\n\r\n }\r\n\r\n /**\r\n * 组件更新\r\n */\r\n updated(changed: Map<string, unknown>) {\r\n\r\n // console.log('updated', this, changed);\r\n\r\n super.updated(changed)\r\n\r\n }\r\n\r\n /**\r\n * 将要更新\r\n */\r\n protected willUpdate(_changedProperties: PropertyValues): void {\r\n\r\n // console.log('willUpdate', this, _changedProperties);\r\n\r\n }\r\n\r\n}\r\n\r\ndeclare global {\r\n\r\n interface HTMLElementTagNameMap {\r\n\r\n [TAG]: LitSwitchDollhouseView\r\n\r\n }\r\n\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAiBO,IAAM,yBAAN,cAAqC,WAAW;AAAA,EAAhD,cAAA;AAAA,UAAA,GAAA,SAAA;AAIL,SAAA,SAAc;AAYd,SAAA,gBAAgB;AAIhB,SAAQ,aAAa;AAIrB,SAAQ,iBAAiB;AAgCzB,SAAQ,WAAW,CAAC,MAAa;AAE/B,2BAAqB,MAAM,CAAC;AAAA,IAE9B;AAEA,SAAQ,oBAAoB,CAAC,SAAiB;AAE5C,2BAAqB,MAAM,IAAI;AAAA,IAEjC;AAAA,EAAA;AAAA,EAxCA,aAAa,OAAgB;AAE3B,SAAK,aAAa;AAGlB,SAAK,gBAAgB,aAAa,KAAK;AAAA,EAEzC;AAAA,EAEA,cAAc;AAEZ,WAAO,KAAK;AAAA,EAEd;AAAA,EAEA,eAAe,OAAgB;AAE7B,SAAK,iBAAiB;AACtB,SAAK,gBAAgB,gBAAgB,KAAK;AAAA,EAE5C;AAAA,EAEA,gBAAgB;AAEd,WAAO,KAAK;AAAA,EAEd;AAAA;AAAA;AAAA;AAAA,EAmBA,SAAS;AAIP,WAAO,oBAAoB,KAAK,QAAQ;AAAA,EAE1C;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB;AAIlB,SAAK,OAAO,KAAK,iBAAiB,eAAe,KAAK,iBAAiB;AAEvE,UAAM,kBAAA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB;AAIrB,SAAK,aAAa,KAAK;AACvB,SAAK,eAAe,KAAK;AAEzB,SAAK,OAAO,KAAK,oBAAoB,eAAe,KAAK,iBAAiB;AAE1E,UAAM,qBAAA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,SAA+B;AAI1C,UAAM,aAAa,OAAO;AAAA,EAE5B;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,SAA+B;AAIrC,UAAM,QAAQ,OAAO;AAAA,EAEvB;AAAA;AAAA;AAAA;AAAA,EAKU,WAAW,oBAA0C;AAAA,EAI/D;AAEF;AA3Ia,uBAsDJ,SAAS;AAlDhB,gBAAA;AAAA,EADC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GAHnB,uBAIX,WAAA,UAAA,CAAA;AAYA,gBAAA;AAAA,EANC,SAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,CACZ;AAAA,GAfU,uBAgBX,WAAA,iBAAA,CAAA;AAIQ,gBAAA;AAAA,EADP,MAAA;AAAM,GAnBI,uBAoBH,WAAA,cAAA,CAAA;AAIA,gBAAA;AAAA,EADP,MAAA;AAAM,GAvBI,uBAwBH,WAAA,kBAAA,CAAA;AAxBG,yBAAN,gBAAA;AAAA,EADN,kBAAkB,GAAG;AAAA,GACT,sBAAA;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/index.ts"],"sourcesContent":["/*\r\r\n * @Author: ncz\r\r\n * @Date: 2026-05-30\r\r\n * @Description: lit-switch-dollhouse-view 组件注册与属性声明\r\r\n */\r\r\n\r\r\nimport { LitElement, PropertyValues } from 'lit'\r\r\nimport { property } from 'lit/decorators.js'\r\r\nimport { safeCustomElement } from '../../../utils/define-lit-element.js'\r\r\nimport { TAG } from './constants.js'\r\r\nimport { handleDollhouseClick, handelViewModeChange, handelCoreLoaded } from './interaction.js'\r\r\nimport { booleanAttr } from './properties.js'\r\r\nimport { styles } from './styles.js'\r\r\nimport { renderDollhouseView } from './template.js'\r\r\n\r\r\n/** 切换到 dollhouse 视图;qspace 须由宿主通过 :qspace 传入 */\r\r\n@safeCustomElement(TAG)\r\r\nexport class LitSwitchDollhouseView extends LitElement {\r\r\n\r\r\n /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */\r\r\n @property({ attribute: false })\r\r\n qspace: any = null\r\r\n\r\r\n /**\r\r\n * 是否可点击;由 core.loaded / mode.change 自动同步,宿主亦可覆盖\r\r\n * HTML: enabled / Vue: :enabled\r\r\n */\r\r\n @property({\r\r\n type: Boolean,\r\r\n attribute: 'enabled',\r\r\n reflect: true,\r\r\n converter: booleanAttr,\r\r\n })\r\r\n enabled = false\r\r\n\r\r\n setEnabled(value: boolean) {\r\r\n\r\r\n this.enabled = value\r\r\n\r\r\n this.toggleAttribute('enabled', value)\r\r\n\r\r\n }\r\r\n\r\r\n static styles = styles\r\r\n\r\r\n private _onClick = (e: Event) => {\r\r\n\r\r\n handleDollhouseClick(this, e)\r\r\n\r\r\n }\r\r\n\r\r\n private _onCoreLoaded = () => {\r\r\n\r\r\n handelCoreLoaded(this);\r\r\n\r\r\n }\r\r\n\r\r\n private _onViewModeChange = (mode: string) => {\r\r\n\r\r\n handelViewModeChange(this, mode);\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 渲染模板\r\r\n */\r\r\n render() {\r\r\n\r\r\n return renderDollhouseView(this._onClick)\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 组件连接生命周期\r\r\n */\r\r\n connectedCallback() {\r\r\n\r\r\n super.connectedCallback()\r\r\n\r\r\n if (this.qspace) {\r\r\n\r\r\n this.qspace.core.addEventListener('loaded', this._onCoreLoaded);\r\r\n\r\r\n this.qspace.view.addEventListener('mode.change', this._onViewModeChange);\r\r\n\r\r\n }\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 组件断开生命周期\r\r\n */\r\r\n disconnectedCallback() {\r\r\n\r\r\n if (this.qspace) {\r\r\n\r\r\n this.qspace.core.removeEventListener('loaded', this._onCoreLoaded);\r\r\n\r\r\n this.qspace.view.removeEventListener('mode.change', this._onViewModeChange);\r\r\n\r\r\n }\r\r\n\r\r\n super.disconnectedCallback()\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 第一次更新\r\r\n */\r\r\n firstUpdated(changed: Map<string, unknown>) {\r\r\n\r\r\n super.firstUpdated(changed)\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 组件更新\r\r\n */\r\r\n updated(changed: Map<string, unknown>) {\r\r\n\r\r\n super.updated(changed)\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 将要更新\r\r\n */\r\r\n protected willUpdate(_changedProperties: PropertyValues): void {\r\r\n\r\r\n }\r\r\n\r\r\n}\r\r\n\r\r\ndeclare global {\r\r\n\r\r\n interface HTMLElementTagNameMap {\r\r\n\r\r\n [TAG]: LitSwitchDollhouseView\r\r\n\r\r\n }\r\r\n\r\r\n}\r\r\n\r"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAkCO,IAAM,yBAAN,cAAqC,WAAW;AAAA,EAAhD,cAAA;AAAA,UAAA,GAAA,SAAA;AAQL,SAAA,SAAc;AAwBd,SAAA,UAAU;AAwBV,SAAQ,WAAW,CAAC,MAAa;AAI/B,2BAAqB,MAAM,CAAC;AAAA,IAI9B;AAIA,SAAQ,gBAAgB,MAAM;AAI5B,uBAAiB,IAAI;AAAA,IAIvB;AAIA,SAAQ,oBAAoB,CAAC,SAAiB;AAI5C,2BAAqB,MAAM,IAAI;AAAA,IAIjC;AAAA,EAAA;AAAA,EApDA,WAAW,OAAgB;AAIzB,SAAK,UAAU;AAIf,SAAK,gBAAgB,WAAW,KAAK;AAAA,EAIvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkDA,SAAS;AAIP,WAAO,oBAAoB,KAAK,QAAQ;AAAA,EAI1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,oBAAoB;AAIlB,UAAM,kBAAA;AAIN,QAAI,KAAK,QAAQ;AAIf,WAAK,OAAO,KAAK,iBAAiB,UAAU,KAAK,aAAa;AAI9D,WAAK,OAAO,KAAK,iBAAiB,eAAe,KAAK,iBAAiB;AAAA,IAIzE;AAAA,EAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,uBAAuB;AAIrB,QAAI,KAAK,QAAQ;AAIf,WAAK,OAAO,KAAK,oBAAoB,UAAU,KAAK,aAAa;AAIjE,WAAK,OAAO,KAAK,oBAAoB,eAAe,KAAK,iBAAiB;AAAA,IAI5E;AAIA,UAAM,qBAAA;AAAA,EAIR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,aAAa,SAA+B;AAI1C,UAAM,aAAa,OAAO;AAAA,EAI5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,QAAQ,SAA+B;AAIrC,UAAM,QAAQ,OAAO;AAAA,EAIvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUU,WAAW,oBAA0C;AAAA,EAI/D;AAIF;AApOa,uBAoDJ,SAAS;AA5ChB,gBAAA;AAAA,EAFC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GANnB,uBAQX,WAAA,UAAA,CAAA;AAwBA,gBAAA;AAAA,EAZC,SAAS;AAAA,IAER,MAAM;AAAA,IAEN,WAAW;AAAA,IAEX,SAAS;AAAA,IAET,WAAW;AAAA,EAAA,CAEZ;AAAA,GA9BU,uBAgCX,WAAA,WAAA,CAAA;AAhCW,yBAAN,gBAAA;AAAA,EAFN,kBAAkB,GAAG;AAAA,GAET,sBAAA;"}
@@ -1,11 +1,11 @@
1
1
  export type DollhouseViewHost = HTMLElement & {
2
2
  qspace: any;
3
- buttonEnabled: boolean;
4
- setSwitching: (value: boolean) => void;
5
- isSwitching: () => boolean;
6
- setCurrentView: (value: boolean) => void;
7
- isCurrentView: () => boolean;
3
+ enabled: boolean;
4
+ setEnabled: (value: boolean) => void;
8
5
  };
6
+ /** 根据 qspace.view.mode 同步 enabled:当前视图或过渡中不可点 */
7
+ export declare function syncEnabledFromMode(host: DollhouseViewHost, mode: string | undefined): void;
9
8
  export declare function handleDollhouseClick(host: DollhouseViewHost, e: Event): void;
9
+ export declare function handelCoreLoaded(host: DollhouseViewHost): void;
10
10
  export declare function handelViewModeChange(host: DollhouseViewHost, mode: string): void;
11
11
  //# sourceMappingURL=interaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-dollhouse-view/interaction.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAE5C,MAAM,EAAE,GAAG,CAAA;IACX,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,WAAW,EAAE,MAAM,OAAO,CAAA;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,aAAa,EAAE,MAAM,OAAO,CAAA;CAE7B,CAAA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK,QA8BrE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,QA6BzE"}
1
+ {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-dollhouse-view/interaction.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAE5C,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAErC,CAAA;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,QAmBpF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK,QA2BrE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,QAIvD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,QAIzE"}
@@ -1,8 +1,20 @@
1
1
  import { ViewMode } from "../../../enum/view.mode.js";
2
2
  import { dispatchClick, dispatchComplete } from "./events.js";
3
3
  import { turnToDollhouseView } from "./logic.js";
4
+ function syncEnabledFromMode(host, mode) {
5
+ switch (mode) {
6
+ case ViewMode.Transitioning:
7
+ case ViewMode.Dollhouse:
8
+ host.setEnabled(false);
9
+ break;
10
+ case ViewMode.Floorplan:
11
+ case ViewMode.Panorama:
12
+ host.setEnabled(true);
13
+ break;
14
+ }
15
+ }
4
16
  function handleDollhouseClick(host, e) {
5
- if (!host.buttonEnabled || host.isSwitching() || host.isCurrentView()) {
17
+ if (!host.enabled) {
6
18
  e.preventDefault();
7
19
  e.stopPropagation();
8
20
  return;
@@ -11,34 +23,22 @@ function handleDollhouseClick(host, e) {
11
23
  if (!host.qspace) {
12
24
  return;
13
25
  }
14
- host.setSwitching(true);
26
+ host.setEnabled(false);
15
27
  turnToDollhouseView(host.qspace, () => {
16
28
  dispatchComplete(host, e);
17
- host.setSwitching(false);
18
- host.setCurrentView(true);
19
29
  });
20
30
  }
31
+ function handelCoreLoaded(host) {
32
+ var _a, _b;
33
+ syncEnabledFromMode(host, (_b = (_a = host.qspace) == null ? void 0 : _a.view) == null ? void 0 : _b.mode);
34
+ }
21
35
  function handelViewModeChange(host, mode) {
22
- switch (mode) {
23
- case ViewMode.Transitioning:
24
- host.setSwitching(true);
25
- break;
26
- case ViewMode.Dollhouse:
27
- host.setSwitching(false);
28
- host.setCurrentView(true);
29
- break;
30
- case ViewMode.Floorplan:
31
- host.setSwitching(false);
32
- host.setCurrentView(false);
33
- break;
34
- case ViewMode.Panorama:
35
- host.setSwitching(false);
36
- host.setCurrentView(false);
37
- break;
38
- }
36
+ syncEnabledFromMode(host, mode);
39
37
  }
40
38
  export {
39
+ handelCoreLoaded,
41
40
  handelViewModeChange,
42
- handleDollhouseClick
41
+ handleDollhouseClick,
42
+ syncEnabledFromMode
43
43
  };
44
44
  //# sourceMappingURL=interaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/interaction.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-dollhouse-view 点击交互流程\n */\n\nimport { ViewMode } from '@/enum/view.mode'\nimport { dispatchClick, dispatchComplete } from './events.js'\nimport { turnToDollhouseView } from './logic.js'\n\nexport type DollhouseViewHost = HTMLElement & {\n\n qspace: any\n buttonEnabled: boolean\n setSwitching: (value: boolean) => void\n isSwitching: () => boolean\n setCurrentView: (value: boolean) => void\n isCurrentView: () => boolean\n\n}\n\nexport function handleDollhouseClick(host: DollhouseViewHost, e: Event) {\n\n if (!host.buttonEnabled || host.isSwitching() || host.isCurrentView()) {\n\n e.preventDefault()\n e.stopPropagation()\n\n return\n\n }\n\n dispatchClick(host, e)\n\n if (!host.qspace) {\n\n return\n\n }\n\n host.setSwitching(true)\n\n turnToDollhouseView(host.qspace, () => {\n\n dispatchComplete(host, e)\n\n host.setSwitching(false)\n host.setCurrentView(true)\n\n })\n\n}\n\nexport function handelViewModeChange(host: DollhouseViewHost, mode: string) {\n\n // console.log('on mode change', mode);\n\n switch (mode) {\n\n case ViewMode.Transitioning:\n host.setSwitching(true)\n break\n\n case ViewMode.Dollhouse:\n host.setSwitching(false)\n host.setCurrentView(true)\n break\n\n case ViewMode.Floorplan:\n host.setSwitching(false)\n host.setCurrentView(false)\n break\n\n case ViewMode.Panorama:\n host.setSwitching(false)\n host.setCurrentView(false)\n break\n\n default:\n break\n }\n\n}\n"],"names":[],"mappings":";;;AAqBO,SAAS,qBAAqB,MAAyB,GAAU;AAEtE,MAAI,CAAC,KAAK,iBAAiB,KAAK,iBAAiB,KAAK,iBAAiB;AAErE,MAAE,eAAA;AACF,MAAE,gBAAA;AAEF;AAAA,EAEF;AAEA,gBAAc,MAAM,CAAC;AAErB,MAAI,CAAC,KAAK,QAAQ;AAEhB;AAAA,EAEF;AAEA,OAAK,aAAa,IAAI;AAEtB,sBAAoB,KAAK,QAAQ,MAAM;AAErC,qBAAiB,MAAM,CAAC;AAExB,SAAK,aAAa,KAAK;AACvB,SAAK,eAAe,IAAI;AAAA,EAE1B,CAAC;AAEH;AAEO,SAAS,qBAAqB,MAAyB,MAAc;AAI1E,UAAQ,MAAA;AAAA,IAEN,KAAK,SAAS;AACZ,WAAK,aAAa,IAAI;AACtB;AAAA,IAEF,KAAK,SAAS;AACZ,WAAK,aAAa,KAAK;AACvB,WAAK,eAAe,IAAI;AACxB;AAAA,IAEF,KAAK,SAAS;AACZ,WAAK,aAAa,KAAK;AACvB,WAAK,eAAe,KAAK;AACzB;AAAA,IAEF,KAAK,SAAS;AACZ,WAAK,aAAa,KAAK;AACvB,WAAK,eAAe,KAAK;AACzB;AAAA,EAGA;AAGN;"}
1
+ {"version":3,"file":"interaction.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/interaction.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-dollhouse-view 点击交互流程\n */\n\nimport { ViewMode } from '@/enum/view.mode'\nimport { dispatchClick, dispatchComplete } from './events.js'\nimport { turnToDollhouseView } from './logic.js'\n\nexport type DollhouseViewHost = HTMLElement & {\n\n qspace: any\n enabled: boolean\n setEnabled: (value: boolean) => void\n\n}\n\n/** 根据 qspace.view.mode 同步 enabled:当前视图或过渡中不可点 */\nexport function syncEnabledFromMode(host: DollhouseViewHost, mode: string | undefined) {\n\n switch (mode) {\n\n case ViewMode.Transitioning:\n case ViewMode.Dollhouse:\n host.setEnabled(false)\n break\n\n case ViewMode.Floorplan:\n case ViewMode.Panorama:\n host.setEnabled(true)\n break\n\n default:\n break\n\n }\n\n}\n\nexport function handleDollhouseClick(host: DollhouseViewHost, e: Event) {\n\n if (!host.enabled) {\n\n e.preventDefault()\n e.stopPropagation()\n\n return\n\n }\n\n dispatchClick(host, e)\n\n if (!host.qspace) {\n\n return\n\n }\n\n host.setEnabled(false)\n\n turnToDollhouseView(host.qspace, () => {\n\n dispatchComplete(host, e)\n\n })\n\n}\n\nexport function handelCoreLoaded(host: DollhouseViewHost) {\n\n syncEnabledFromMode(host, host.qspace?.view?.mode)\n\n}\n\nexport function handelViewModeChange(host: DollhouseViewHost, mode: string) {\n\n syncEnabledFromMode(host, mode)\n\n}\n"],"names":[],"mappings":";;;AAmBO,SAAS,oBAAoB,MAAyB,MAA0B;AAErF,UAAQ,MAAA;AAAA,IAEN,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AACZ,WAAK,WAAW,KAAK;AACrB;AAAA,IAEF,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AACZ,WAAK,WAAW,IAAI;AACpB;AAAA,EAGA;AAIN;AAEO,SAAS,qBAAqB,MAAyB,GAAU;AAEtE,MAAI,CAAC,KAAK,SAAS;AAEjB,MAAE,eAAA;AACF,MAAE,gBAAA;AAEF;AAAA,EAEF;AAEA,gBAAc,MAAM,CAAC;AAErB,MAAI,CAAC,KAAK,QAAQ;AAEhB;AAAA,EAEF;AAEA,OAAK,WAAW,KAAK;AAErB,sBAAoB,KAAK,QAAQ,MAAM;AAErC,qBAAiB,MAAM,CAAC;AAAA,EAE1B,CAAC;AAEH;AAEO,SAAS,iBAAiB,MAAyB;;AAExD,sBAAoB,OAAM,gBAAK,WAAL,mBAAa,SAAb,mBAAmB,IAAI;AAEnD;AAEO,SAAS,qBAAqB,MAAyB,MAAc;AAE1E,sBAAoB,MAAM,IAAI;AAEhC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-dollhouse-view/styles.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM,yBAgClB,CAAA"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-dollhouse-view/styles.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM,yBA4BlB,CAAA"}
@@ -20,16 +20,12 @@ const styles = css`
20
20
  background-image: var(--lit-mode-dollhouse-icon, url(${unsafeCSS(iconUrl)}));
21
21
  }
22
22
 
23
- :host(:not([button-enabled])),
24
- :host([switching]),
25
- :host([current-view]) {
23
+ :host(:not([enabled])) {
26
24
  pointer-events: none;
27
25
  opacity: 0.5;
28
26
  }
29
27
 
30
- :host(:not([button-enabled])) .mode-item,
31
- :host([switching]) .mode-item,
32
- :host([current-view]) .mode-item {
28
+ :host(:not([enabled])) .mode-item {
33
29
  cursor: not-allowed;
34
30
  }
35
31
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/styles.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-dollhouse-view 样式\r\n */\r\n\r\nimport { css, unsafeCSS } from 'lit'\r\nimport iconUrl from './assets/icon.png?url'\r\n\r\nexport const styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .mode-item {\r\n box-sizing: border-box;\r\n width: 26px;\r\n height: 26px;\r\n background-repeat: no-repeat;\r\n background-size: 26px 26px;\r\n background-position: center;\r\n cursor: pointer;\r\n }\r\n\r\n .mode-item.dollhouse {\r\n background-color: rgba(255, 0, 0, 0.4);\r\n background-image: var(--lit-mode-dollhouse-icon, url(${unsafeCSS(iconUrl)}));\r\n }\r\n\r\n :host(:not([button-enabled])),\r\n :host([switching]),\r\n :host([current-view]) {\r\n pointer-events: none;\r\n opacity: 0.5;\r\n }\r\n\r\n :host(:not([button-enabled])) .mode-item,\r\n :host([switching]) .mode-item,\r\n :host([current-view]) .mode-item {\r\n cursor: not-allowed;\r\n }\r\n`\r\n"],"names":[],"mappings":";;AASO,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2DAiBqC,UAAU,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"styles.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/styles.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-dollhouse-view 样式\r\n */\r\n\r\nimport { css, unsafeCSS } from 'lit'\r\nimport iconUrl from './assets/icon.png?url'\r\n\r\nexport const styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .mode-item {\r\n box-sizing: border-box;\r\n width: 26px;\r\n height: 26px;\r\n background-repeat: no-repeat;\r\n background-size: 26px 26px;\r\n background-position: center;\r\n cursor: pointer;\r\n }\r\n\r\n .mode-item.dollhouse {\r\n background-color: rgba(255, 0, 0, 0.4);\r\n background-image: var(--lit-mode-dollhouse-icon, url(${unsafeCSS(iconUrl)}));\r\n }\r\n\r\n :host(:not([enabled])) {\r\n pointer-events: none;\r\n opacity: 0.5;\r\n }\r\n\r\n :host(:not([enabled])) .mode-item {\r\n cursor: not-allowed;\r\n }\r\n`\r\n"],"names":[],"mappings":";;AASO,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2DAiBqC,UAAU,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -5,20 +5,14 @@ export declare class LitSwitchFloorplanView extends LitElement {
5
5
  /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */
6
6
  qspace: any;
7
7
  /**
8
- * 是否允许点击;默认 false,场景就绪后由宿主设为 true
9
- * HTML: button-enabled / Vue: :button-enabled
8
+ * 是否可点击;由 core.loaded / mode.change 自动同步,宿主亦可覆盖
9
+ * HTML: enabled / Vue: :enabled
10
10
  */
11
- buttonEnabled: boolean;
12
- /** 切换进行中(内部状态);调用 qspace 前禁用,complete 后恢复 */
13
- private _switching;
14
- /** 切换完成后禁用当前按钮,避免重复切换 */
15
- private _isCurrentView;
16
- setSwitching(value: boolean): void;
17
- isSwitching(): boolean;
18
- setCurrentView(value: boolean): void;
19
- isCurrentView(): boolean;
11
+ enabled: boolean;
12
+ setEnabled(value: boolean): void;
20
13
  static styles: import("lit").CSSResult;
21
14
  private _onClick;
15
+ private _onCoreLoaded;
22
16
  private _onViewModeChange;
23
17
  /**
24
18
  * 渲染模板
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-floorplan-view/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAGhD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAMpC,gDAAgD;AAChD,qBACa,sBAAuB,SAAQ,UAAU;IAEpD,0DAA0D;IAE1D,MAAM,EAAE,GAAG,CAAO;IAElB;;;OAGG;IAOH,aAAa,UAAQ;IAErB,6CAA6C;IAE7C,OAAO,CAAC,UAAU,CAAQ;IAE1B,yBAAyB;IAEzB,OAAO,CAAC,cAAc,CAAQ;IAE9B,YAAY,CAAC,KAAK,EAAE,OAAO;IAO3B,WAAW;IAMX,cAAc,CAAC,KAAK,EAAE,OAAO;IAO7B,aAAa;IAMb,MAAM,CAAC,MAAM,0BAAS;IAEtB,OAAO,CAAC,QAAQ,CAIf;IAED,OAAO,CAAC,iBAAiB,CAIxB;IAED;;OAEG;IACH,MAAM;IAMN;;OAEG;IACH,iBAAiB;IAUjB;;OAEG;IACH,oBAAoB;IAapB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAQ1C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAQrC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;CAM/D;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,qBAAqB;QAE7B,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAA;KAE9B;CAEF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-floorplan-view/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAGhD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAMpC,gDAAgD;AAChD,qBACa,sBAAuB,SAAQ,UAAU;IAEpD,0DAA0D;IAE1D,MAAM,EAAE,GAAG,CAAO;IAElB;;;OAGG;IAOH,OAAO,UAAQ;IAEf,UAAU,CAAC,KAAK,EAAE,OAAO;IAQzB,MAAM,CAAC,MAAM,0BAAS;IAEtB,OAAO,CAAC,QAAQ,CAIf;IAED,OAAO,CAAC,aAAa,CAIpB;IAED,OAAO,CAAC,iBAAiB,CAIxB;IAED;;OAEG;IACH,MAAM;IAMN;;OAEG;IACH,iBAAiB;IAcjB;;OAEG;IACH,oBAAoB;IAcpB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAM1C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAMrC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;CAI/D;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,qBAAqB;QAE7B,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAA;KAE9B;CAEF"}
@@ -1,8 +1,8 @@
1
1
  import { LitElement } from "lit";
2
- import { property, state } from "lit/decorators.js";
2
+ import { property } from "lit/decorators.js";
3
3
  import { safeCustomElement } from "../../../utils/define-lit-element.js";
4
4
  import { TAG } from "./constants.js";
5
- import { handleFloorplanClick, handelViewModeChange } from "./interaction.js";
5
+ import { handleFloorplanClick, handelCoreLoaded, handelViewModeChange } from "./interaction.js";
6
6
  import { booleanAttr } from "./properties.js";
7
7
  import { styles } from "./styles.js";
8
8
  import { renderFloorplanView } from "./template.js";
@@ -20,29 +20,20 @@ let LitSwitchFloorplanView = class extends LitElement {
20
20
  constructor() {
21
21
  super(...arguments);
22
22
  this.qspace = null;
23
- this.buttonEnabled = false;
24
- this._switching = false;
25
- this._isCurrentView = false;
23
+ this.enabled = false;
26
24
  this._onClick = (e) => {
27
25
  handleFloorplanClick(this, e);
28
26
  };
27
+ this._onCoreLoaded = () => {
28
+ handelCoreLoaded(this);
29
+ };
29
30
  this._onViewModeChange = (mode) => {
30
31
  handelViewModeChange(this, mode);
31
32
  };
32
33
  }
33
- setSwitching(value) {
34
- this._switching = value;
35
- this.toggleAttribute("switching", value);
36
- }
37
- isSwitching() {
38
- return this._switching;
39
- }
40
- setCurrentView(value) {
41
- this._isCurrentView = value;
42
- this.toggleAttribute("current-view", value);
43
- }
44
- isCurrentView() {
45
- return this._isCurrentView;
34
+ setEnabled(value) {
35
+ this.enabled = value;
36
+ this.toggleAttribute("enabled", value);
46
37
  }
47
38
  /**
48
39
  * 渲染模板
@@ -54,16 +45,20 @@ let LitSwitchFloorplanView = class extends LitElement {
54
45
  * 组件连接生命周期
55
46
  */
56
47
  connectedCallback() {
57
- this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
58
48
  super.connectedCallback();
49
+ if (this.qspace) {
50
+ this.qspace.core.addEventListener("loaded", this._onCoreLoaded);
51
+ this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
52
+ }
59
53
  }
60
54
  /**
61
55
  * 组件断开生命周期
62
56
  */
63
57
  disconnectedCallback() {
64
- this.setSwitching(false);
65
- this.setCurrentView(false);
66
- this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
58
+ if (this.qspace) {
59
+ this.qspace.core.removeEventListener("loaded", this._onCoreLoaded);
60
+ this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
61
+ }
67
62
  super.disconnectedCallback();
68
63
  }
69
64
  /**
@@ -91,17 +86,11 @@ __decorateClass([
91
86
  __decorateClass([
92
87
  property({
93
88
  type: Boolean,
94
- attribute: "button-enabled",
89
+ attribute: "enabled",
95
90
  reflect: true,
96
91
  converter: booleanAttr
97
92
  })
98
- ], LitSwitchFloorplanView.prototype, "buttonEnabled", 2);
99
- __decorateClass([
100
- state()
101
- ], LitSwitchFloorplanView.prototype, "_switching", 2);
102
- __decorateClass([
103
- state()
104
- ], LitSwitchFloorplanView.prototype, "_isCurrentView", 2);
93
+ ], LitSwitchFloorplanView.prototype, "enabled", 2);
105
94
  LitSwitchFloorplanView = __decorateClass([
106
95
  safeCustomElement(TAG)
107
96
  ], LitSwitchFloorplanView);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/index.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-floorplan-view 组件注册与属性声明\n */\n\nimport { LitElement, PropertyValues } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { safeCustomElement } from '../../../utils/define-lit-element.js'\nimport { TAG } from './constants.js'\nimport { handleFloorplanClick, handelViewModeChange } from './interaction.js'\nimport { booleanAttr } from './properties.js'\nimport { styles } from './styles.js'\nimport { renderFloorplanView } from './template.js'\n\n/** 切换到 floorplan 视图;qspace 须由宿主通过 :qspace 传入 */\n@safeCustomElement(TAG)\nexport class LitSwitchFloorplanView extends LitElement {\n\n /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */\n @property({ attribute: false })\n qspace: any = null\n\n /**\n * 是否允许点击;默认 false,场景就绪后由宿主设为 true\n * HTML: button-enabled / Vue: :button-enabled\n */\n @property({\n type: Boolean,\n attribute: 'button-enabled',\n reflect: true,\n converter: booleanAttr,\n })\n buttonEnabled = false\n\n /** 切换进行中(内部状态);调用 qspace 前禁用,complete 后恢复 */\n @state()\n private _switching = false\n\n /** 切换完成后禁用当前按钮,避免重复切换 */\n @state()\n private _isCurrentView = false\n\n setSwitching(value: boolean) {\n\n this._switching = value\n this.toggleAttribute('switching', value)\n\n }\n\n isSwitching() {\n\n return this._switching\n\n }\n\n setCurrentView(value: boolean) {\n\n this._isCurrentView = value\n this.toggleAttribute('current-view', value)\n\n }\n\n isCurrentView() {\n\n return this._isCurrentView\n\n }\n\n static styles = styles\n\n private _onClick = (e: Event) => {\n\n handleFloorplanClick(this, e)\n\n }\n\n private _onViewModeChange = (mode: string) => {\n\n handelViewModeChange(this, mode);\n\n }\n\n /**\n * 渲染模板\n */\n render() {\n\n return renderFloorplanView(this._onClick)\n\n }\n\n /**\n * 组件连接生命周期\n */\n connectedCallback() {\n\n // console.log('connectedCallback', this);\n\n this.qspace.view.addEventListener('mode.change', this._onViewModeChange);\n\n super.connectedCallback()\n\n }\n\n /**\n * 组件断开生命周期\n */\n disconnectedCallback() {\n\n // console.log('disconnectedCallback', this);\n\n this.setSwitching(false)\n this.setCurrentView(false)\n\n this.qspace.view.removeEventListener('mode.change', this._onViewModeChange);\n\n super.disconnectedCallback()\n\n }\n\n /**\n * 第一次更新\n */\n firstUpdated(changed: Map<string, unknown>) {\n\n // console.log('firstUpdated', this, changed);\n\n super.firstUpdated(changed)\n\n }\n\n /**\n * 组件更新\n */\n updated(changed: Map<string, unknown>) {\n\n // console.log('updated', this, changed);\n\n super.updated(changed)\n\n }\n\n /**\n * 将要更新\n */\n protected willUpdate(_changedProperties: PropertyValues): void {\n\n // console.log('willUpdate', this, _changedProperties);\n\n }\n\n}\n\ndeclare global {\n\n interface HTMLElementTagNameMap {\n\n [TAG]: LitSwitchFloorplanView\n\n }\n\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAiBO,IAAM,yBAAN,cAAqC,WAAW;AAAA,EAAhD,cAAA;AAAA,UAAA,GAAA,SAAA;AAIL,SAAA,SAAc;AAYd,SAAA,gBAAgB;AAIhB,SAAQ,aAAa;AAIrB,SAAQ,iBAAiB;AA8BzB,SAAQ,WAAW,CAAC,MAAa;AAE/B,2BAAqB,MAAM,CAAC;AAAA,IAE9B;AAEA,SAAQ,oBAAoB,CAAC,SAAiB;AAE5C,2BAAqB,MAAM,IAAI;AAAA,IAEjC;AAAA,EAAA;AAAA,EAtCA,aAAa,OAAgB;AAE3B,SAAK,aAAa;AAClB,SAAK,gBAAgB,aAAa,KAAK;AAAA,EAEzC;AAAA,EAEA,cAAc;AAEZ,WAAO,KAAK;AAAA,EAEd;AAAA,EAEA,eAAe,OAAgB;AAE7B,SAAK,iBAAiB;AACtB,SAAK,gBAAgB,gBAAgB,KAAK;AAAA,EAE5C;AAAA,EAEA,gBAAgB;AAEd,WAAO,KAAK;AAAA,EAEd;AAAA;AAAA;AAAA;AAAA,EAmBA,SAAS;AAEP,WAAO,oBAAoB,KAAK,QAAQ;AAAA,EAE1C;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB;AAIlB,SAAK,OAAO,KAAK,iBAAiB,eAAe,KAAK,iBAAiB;AAEvE,UAAM,kBAAA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB;AAIrB,SAAK,aAAa,KAAK;AACvB,SAAK,eAAe,KAAK;AAEzB,SAAK,OAAO,KAAK,oBAAoB,eAAe,KAAK,iBAAiB;AAE1E,UAAM,qBAAA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,SAA+B;AAI1C,UAAM,aAAa,OAAO;AAAA,EAE5B;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,SAA+B;AAIrC,UAAM,QAAQ,OAAO;AAAA,EAEvB;AAAA;AAAA;AAAA;AAAA,EAKU,WAAW,oBAA0C;AAAA,EAI/D;AAEF;AAvIa,uBAoDJ,SAAS;AAhDhB,gBAAA;AAAA,EADC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GAHnB,uBAIX,WAAA,UAAA,CAAA;AAYA,gBAAA;AAAA,EANC,SAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,CACZ;AAAA,GAfU,uBAgBX,WAAA,iBAAA,CAAA;AAIQ,gBAAA;AAAA,EADP,MAAA;AAAM,GAnBI,uBAoBH,WAAA,cAAA,CAAA;AAIA,gBAAA;AAAA,EADP,MAAA;AAAM,GAvBI,uBAwBH,WAAA,kBAAA,CAAA;AAxBG,yBAAN,gBAAA;AAAA,EADN,kBAAkB,GAAG;AAAA,GACT,sBAAA;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/index.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-floorplan-view 组件注册与属性声明\n */\n\nimport { LitElement, PropertyValues } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport { safeCustomElement } from '../../../utils/define-lit-element.js'\nimport { TAG } from './constants.js'\nimport { handleFloorplanClick, handelViewModeChange, handelCoreLoaded } from './interaction.js'\nimport { booleanAttr } from './properties.js'\nimport { styles } from './styles.js'\nimport { renderFloorplanView } from './template.js'\n\n/** 切换到 floorplan 视图;qspace 须由宿主通过 :qspace 传入 */\n@safeCustomElement(TAG)\nexport class LitSwitchFloorplanView extends LitElement {\n\n /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */\n @property({ attribute: false })\n qspace: any = null\n\n /**\n * 是否可点击;由 core.loaded / mode.change 自动同步,宿主亦可覆盖\n * HTML: enabled / Vue: :enabled\n */\n @property({\n type: Boolean,\n attribute: 'enabled',\n reflect: true,\n converter: booleanAttr,\n })\n enabled = false\n\n setEnabled(value: boolean) {\n\n this.enabled = value\n\n this.toggleAttribute('enabled', value)\n\n }\n\n static styles = styles\n\n private _onClick = (e: Event) => {\n\n handleFloorplanClick(this, e)\n\n }\n\n private _onCoreLoaded = () => {\n\n handelCoreLoaded(this);\n\n }\n\n private _onViewModeChange = (mode: string) => {\n\n handelViewModeChange(this, mode);\n\n }\n\n /**\n * 渲染模板\n */\n render() {\n\n return renderFloorplanView(this._onClick)\n\n }\n\n /**\n * 组件连接生命周期\n */\n connectedCallback() {\n\n super.connectedCallback()\n\n if (this.qspace) {\n\n this.qspace.core.addEventListener('loaded', this._onCoreLoaded);\n\n this.qspace.view.addEventListener('mode.change', this._onViewModeChange);\n\n }\n\n }\n\n /**\n * 组件断开生命周期\n */\n disconnectedCallback() {\n\n if (this.qspace) {\n\n this.qspace.core.removeEventListener('loaded', this._onCoreLoaded);\n\n this.qspace.view.removeEventListener('mode.change', this._onViewModeChange);\n\n }\n\n super.disconnectedCallback()\n\n }\n\n /**\n * 第一次更新\n */\n firstUpdated(changed: Map<string, unknown>) {\n\n super.firstUpdated(changed)\n\n }\n\n /**\n * 组件更新\n */\n updated(changed: Map<string, unknown>) {\n\n super.updated(changed)\n\n }\n\n /**\n * 将要更新\n */\n protected willUpdate(_changedProperties: PropertyValues): void {\n\n }\n\n}\n\ndeclare global {\n\n interface HTMLElementTagNameMap {\n\n [TAG]: LitSwitchFloorplanView\n\n }\n\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAiBO,IAAM,yBAAN,cAAqC,WAAW;AAAA,EAAhD,cAAA;AAAA,UAAA,GAAA,SAAA;AAIL,SAAA,SAAc;AAYd,SAAA,UAAU;AAYV,SAAQ,WAAW,CAAC,MAAa;AAE/B,2BAAqB,MAAM,CAAC;AAAA,IAE9B;AAEA,SAAQ,gBAAgB,MAAM;AAE5B,uBAAiB,IAAI;AAAA,IAEvB;AAEA,SAAQ,oBAAoB,CAAC,SAAiB;AAE5C,2BAAqB,MAAM,IAAI;AAAA,IAEjC;AAAA,EAAA;AAAA,EA1BA,WAAW,OAAgB;AAEzB,SAAK,UAAU;AAEf,SAAK,gBAAgB,WAAW,KAAK;AAAA,EAEvC;AAAA;AAAA;AAAA;AAAA,EAyBA,SAAS;AAEP,WAAO,oBAAoB,KAAK,QAAQ;AAAA,EAE1C;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB;AAElB,UAAM,kBAAA;AAEN,QAAI,KAAK,QAAQ;AAEf,WAAK,OAAO,KAAK,iBAAiB,UAAU,KAAK,aAAa;AAE9D,WAAK,OAAO,KAAK,iBAAiB,eAAe,KAAK,iBAAiB;AAAA,IAEzE;AAAA,EAEF;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB;AAErB,QAAI,KAAK,QAAQ;AAEf,WAAK,OAAO,KAAK,oBAAoB,UAAU,KAAK,aAAa;AAEjE,WAAK,OAAO,KAAK,oBAAoB,eAAe,KAAK,iBAAiB;AAAA,IAE5E;AAEA,UAAM,qBAAA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,SAA+B;AAE1C,UAAM,aAAa,OAAO;AAAA,EAE5B;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,SAA+B;AAErC,UAAM,QAAQ,OAAO;AAAA,EAEvB;AAAA;AAAA;AAAA;AAAA,EAKU,WAAW,oBAA0C;AAAA,EAE/D;AAEF;AAlHa,uBA0BJ,SAAS;AAtBhB,gBAAA;AAAA,EADC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GAHnB,uBAIX,WAAA,UAAA,CAAA;AAYA,gBAAA;AAAA,EANC,SAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,CACZ;AAAA,GAfU,uBAgBX,WAAA,WAAA,CAAA;AAhBW,yBAAN,gBAAA;AAAA,EADN,kBAAkB,GAAG;AAAA,GACT,sBAAA;"}
@@ -1,11 +1,11 @@
1
1
  export type FloorplanViewHost = HTMLElement & {
2
2
  qspace: any;
3
- buttonEnabled: boolean;
4
- setSwitching: (value: boolean) => void;
5
- isSwitching: () => boolean;
6
- setCurrentView: (value: boolean) => void;
7
- isCurrentView: () => boolean;
3
+ enabled: boolean;
4
+ setEnabled: (value: boolean) => void;
8
5
  };
6
+ /** 根据 qspace.view.mode 同步 enabled:当前视图或过渡中不可点 */
7
+ export declare function syncEnabledFromMode(host: FloorplanViewHost, mode: string | undefined): void;
9
8
  export declare function handleFloorplanClick(host: FloorplanViewHost, e: Event): void;
9
+ export declare function handelCoreLoaded(host: FloorplanViewHost): void;
10
10
  export declare function handelViewModeChange(host: FloorplanViewHost, mode: string): void;
11
11
  //# sourceMappingURL=interaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-floorplan-view/interaction.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAE5C,MAAM,EAAE,GAAG,CAAA;IACX,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,WAAW,EAAE,MAAM,OAAO,CAAA;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,aAAa,EAAE,MAAM,OAAO,CAAA;CAE7B,CAAA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK,QA6BrE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,QA8BzE"}
1
+ {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-floorplan-view/interaction.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAE5C,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAErC,CAAA;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,QAmBpF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK,QA2BrE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,QAIvD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,QAIzE"}
@@ -1,8 +1,20 @@
1
1
  import { ViewMode } from "../../../enum/view.mode.js";
2
2
  import { dispatchClick, dispatchComplete } from "./events.js";
3
3
  import { turnToFloorplanView } from "./logic.js";
4
+ function syncEnabledFromMode(host, mode) {
5
+ switch (mode) {
6
+ case ViewMode.Transitioning:
7
+ case ViewMode.Floorplan:
8
+ host.setEnabled(false);
9
+ break;
10
+ case ViewMode.Dollhouse:
11
+ case ViewMode.Panorama:
12
+ host.setEnabled(true);
13
+ break;
14
+ }
15
+ }
4
16
  function handleFloorplanClick(host, e) {
5
- if (!host.buttonEnabled || host.isSwitching() || host.isCurrentView()) {
17
+ if (!host.enabled) {
6
18
  e.preventDefault();
7
19
  e.stopPropagation();
8
20
  return;
@@ -11,34 +23,22 @@ function handleFloorplanClick(host, e) {
11
23
  if (!host.qspace) {
12
24
  return;
13
25
  }
14
- host.setSwitching(true);
26
+ host.setEnabled(false);
15
27
  turnToFloorplanView(host.qspace, () => {
16
28
  dispatchComplete(host, e);
17
- host.setSwitching(false);
18
- host.setCurrentView(true);
19
29
  });
20
30
  }
31
+ function handelCoreLoaded(host) {
32
+ var _a, _b;
33
+ syncEnabledFromMode(host, (_b = (_a = host.qspace) == null ? void 0 : _a.view) == null ? void 0 : _b.mode);
34
+ }
21
35
  function handelViewModeChange(host, mode) {
22
- switch (mode) {
23
- case ViewMode.Transitioning:
24
- host.setSwitching(true);
25
- break;
26
- case ViewMode.Floorplan:
27
- host.setSwitching(false);
28
- host.setCurrentView(true);
29
- break;
30
- case ViewMode.Dollhouse:
31
- host.setSwitching(false);
32
- host.setCurrentView(false);
33
- break;
34
- case ViewMode.Panorama:
35
- host.setSwitching(false);
36
- host.setCurrentView(false);
37
- break;
38
- }
36
+ syncEnabledFromMode(host, mode);
39
37
  }
40
38
  export {
39
+ handelCoreLoaded,
41
40
  handelViewModeChange,
42
- handleFloorplanClick
41
+ handleFloorplanClick,
42
+ syncEnabledFromMode
43
43
  };
44
44
  //# sourceMappingURL=interaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/interaction.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-floorplan-view 点击交互流程\n */\n\nimport { ViewMode } from '@/enum/view.mode'\nimport { dispatchClick, dispatchComplete } from './events.js'\nimport { turnToFloorplanView } from './logic.js'\n\nexport type FloorplanViewHost = HTMLElement & {\n\n qspace: any\n buttonEnabled: boolean\n setSwitching: (value: boolean) => void\n isSwitching: () => boolean\n setCurrentView: (value: boolean) => void\n isCurrentView: () => boolean\n\n}\n\nexport function handleFloorplanClick(host: FloorplanViewHost, e: Event) {\n\n if (!host.buttonEnabled || host.isSwitching() || host.isCurrentView()) {\n\n e.preventDefault()\n e.stopPropagation()\n\n return\n\n }\n\n dispatchClick(host, e)\n\n if (!host.qspace) {\n\n return\n\n }\n\n host.setSwitching(true)\n\n turnToFloorplanView(host.qspace, () => {\n\n dispatchComplete(host, e)\n host.setSwitching(false)\n host.setCurrentView(true)\n\n })\n\n}\n\nexport function handelViewModeChange(host: FloorplanViewHost, mode: string) {\n\n // console.log('on mode change', mode);\n\n switch (mode) {\n\n case ViewMode.Transitioning:\n host.setSwitching(true)\n break\n\n case ViewMode.Floorplan:\n host.setSwitching(false)\n host.setCurrentView(true)\n break\n\n case ViewMode.Dollhouse:\n host.setSwitching(false)\n host.setCurrentView(false)\n break\n\n case ViewMode.Panorama:\n host.setSwitching(false)\n host.setCurrentView(false)\n break\n\n default:\n break\n\n }\n\n}\n"],"names":[],"mappings":";;;AAqBO,SAAS,qBAAqB,MAAyB,GAAU;AAEtE,MAAI,CAAC,KAAK,iBAAiB,KAAK,iBAAiB,KAAK,iBAAiB;AAErE,MAAE,eAAA;AACF,MAAE,gBAAA;AAEF;AAAA,EAEF;AAEA,gBAAc,MAAM,CAAC;AAErB,MAAI,CAAC,KAAK,QAAQ;AAEhB;AAAA,EAEF;AAEA,OAAK,aAAa,IAAI;AAEtB,sBAAoB,KAAK,QAAQ,MAAM;AAErC,qBAAiB,MAAM,CAAC;AACxB,SAAK,aAAa,KAAK;AACvB,SAAK,eAAe,IAAI;AAAA,EAE1B,CAAC;AAEH;AAEO,SAAS,qBAAqB,MAAyB,MAAc;AAI1E,UAAQ,MAAA;AAAA,IAEN,KAAK,SAAS;AACZ,WAAK,aAAa,IAAI;AACtB;AAAA,IAEF,KAAK,SAAS;AACZ,WAAK,aAAa,KAAK;AACvB,WAAK,eAAe,IAAI;AACxB;AAAA,IAEF,KAAK,SAAS;AACZ,WAAK,aAAa,KAAK;AACvB,WAAK,eAAe,KAAK;AACzB;AAAA,IAEF,KAAK,SAAS;AACZ,WAAK,aAAa,KAAK;AACvB,WAAK,eAAe,KAAK;AACzB;AAAA,EAGA;AAIN;"}
1
+ {"version":3,"file":"interaction.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/interaction.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-floorplan-view 点击交互流程\n */\n\nimport { ViewMode } from '@/enum/view.mode'\nimport { dispatchClick, dispatchComplete } from './events.js'\nimport { turnToFloorplanView } from './logic.js'\n\nexport type FloorplanViewHost = HTMLElement & {\n\n qspace: any\n enabled: boolean\n setEnabled: (value: boolean) => void\n\n}\n\n/** 根据 qspace.view.mode 同步 enabled:当前视图或过渡中不可点 */\nexport function syncEnabledFromMode(host: FloorplanViewHost, mode: string | undefined) {\n\n switch (mode) {\n\n case ViewMode.Transitioning:\n case ViewMode.Floorplan:\n host.setEnabled(false)\n break\n\n case ViewMode.Dollhouse:\n case ViewMode.Panorama:\n host.setEnabled(true)\n break\n\n default:\n break\n\n }\n\n}\n\nexport function handleFloorplanClick(host: FloorplanViewHost, e: Event) {\n\n if (!host.enabled) {\n\n e.preventDefault()\n e.stopPropagation()\n\n return\n\n }\n\n dispatchClick(host, e)\n\n if (!host.qspace) {\n\n return\n\n }\n\n host.setEnabled(false)\n\n turnToFloorplanView(host.qspace, () => {\n\n dispatchComplete(host, e)\n\n })\n\n}\n\nexport function handelCoreLoaded(host: FloorplanViewHost) {\n\n syncEnabledFromMode(host, host.qspace?.view?.mode)\n\n}\n\nexport function handelViewModeChange(host: FloorplanViewHost, mode: string) {\n\n syncEnabledFromMode(host, mode)\n\n}\n"],"names":[],"mappings":";;;AAmBO,SAAS,oBAAoB,MAAyB,MAA0B;AAErF,UAAQ,MAAA;AAAA,IAEN,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AACZ,WAAK,WAAW,KAAK;AACrB;AAAA,IAEF,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AACZ,WAAK,WAAW,IAAI;AACpB;AAAA,EAGA;AAIN;AAEO,SAAS,qBAAqB,MAAyB,GAAU;AAEtE,MAAI,CAAC,KAAK,SAAS;AAEjB,MAAE,eAAA;AACF,MAAE,gBAAA;AAEF;AAAA,EAEF;AAEA,gBAAc,MAAM,CAAC;AAErB,MAAI,CAAC,KAAK,QAAQ;AAEhB;AAAA,EAEF;AAEA,OAAK,WAAW,KAAK;AAErB,sBAAoB,KAAK,QAAQ,MAAM;AAErC,qBAAiB,MAAM,CAAC;AAAA,EAE1B,CAAC;AAEH;AAEO,SAAS,iBAAiB,MAAyB;;AAExD,sBAAoB,OAAM,gBAAK,WAAL,mBAAa,SAAb,mBAAmB,IAAI;AAEnD;AAEO,SAAS,qBAAqB,MAAyB,MAAc;AAE1E,sBAAoB,MAAM,IAAI;AAEhC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-floorplan-view/styles.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM,yBAgClB,CAAA"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-floorplan-view/styles.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM,yBA4BlB,CAAA"}
@@ -20,16 +20,12 @@ const styles = css`
20
20
  background-image: var(--lit-mode-floorplan-icon, url(${unsafeCSS(iconUrl)}));
21
21
  }
22
22
 
23
- :host(:not([button-enabled])),
24
- :host([switching]),
25
- :host([current-view]) {
23
+ :host(:not([enabled])) {
26
24
  pointer-events: none;
27
25
  opacity: 0.5;
28
26
  }
29
27
 
30
- :host(:not([button-enabled])) .mode-item,
31
- :host([switching]) .mode-item,
32
- :host([current-view]) .mode-item {
28
+ :host(:not([enabled])) .mode-item {
33
29
  cursor: not-allowed;
34
30
  }
35
31
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/styles.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-floorplan-view 样式\r\n */\r\n\r\nimport { css, unsafeCSS } from 'lit'\r\nimport iconUrl from './assets/icon.png?url'\r\n\r\nexport const styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .mode-item {\r\n box-sizing: border-box;\r\n width: 26px;\r\n height: 26px;\r\n background-repeat: no-repeat;\r\n background-size: 26px 26px;\r\n background-position: center;\r\n cursor: pointer;\r\n }\r\n\r\n .mode-item.floorplan {\r\n background-color: rgba(255, 0, 0, 0.4);\r\n background-image: var(--lit-mode-floorplan-icon, url(${unsafeCSS(iconUrl)}));\r\n }\r\n\r\n :host(:not([button-enabled])),\r\n :host([switching]),\r\n :host([current-view]) {\r\n pointer-events: none;\r\n opacity: 0.5;\r\n }\r\n\r\n :host(:not([button-enabled])) .mode-item,\r\n :host([switching]) .mode-item,\r\n :host([current-view]) .mode-item {\r\n cursor: not-allowed;\r\n }\r\n`\r\n"],"names":[],"mappings":";;AASO,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2DAiBqC,UAAU,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"styles.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/styles.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-floorplan-view 样式\r\n */\r\n\r\nimport { css, unsafeCSS } from 'lit'\r\nimport iconUrl from './assets/icon.png?url'\r\n\r\nexport const styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .mode-item {\r\n box-sizing: border-box;\r\n width: 26px;\r\n height: 26px;\r\n background-repeat: no-repeat;\r\n background-size: 26px 26px;\r\n background-position: center;\r\n cursor: pointer;\r\n }\r\n\r\n .mode-item.floorplan {\r\n background-color: rgba(255, 0, 0, 0.4);\r\n background-image: var(--lit-mode-floorplan-icon, url(${unsafeCSS(iconUrl)}));\r\n }\r\n\r\n :host(:not([enabled])) {\r\n pointer-events: none;\r\n opacity: 0.5;\r\n }\r\n\r\n :host(:not([enabled])) .mode-item {\r\n cursor: not-allowed;\r\n }\r\n`\r\n"],"names":[],"mappings":";;AASO,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2DAiBqC,UAAU,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -6,48 +6,60 @@ export declare class LitSwitchPanoramaView extends LitElement {
6
6
  /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */
7
7
  qspace: any;
8
8
  /**
9
- * 是否允许点击;默认 false,场景就绪后由宿主设为 true
10
- * HTML: button-enabled / Vue: :button-enabled
9
+
10
+ * 是否可点击;由 core.loaded / mode.change 自动同步,宿主亦可覆盖
11
+
12
+ * HTML: enabled / Vue: :enabled
13
+
11
14
  */
12
- buttonEnabled: boolean;
15
+ enabled: boolean;
13
16
  /**
17
+
14
18
  * 切换全景视图参数;仅 JS 属性绑定
19
+
15
20
  * Vue: :option="{ locationId, quaternion }"
21
+
16
22
  */
17
23
  option: PanoramaSwitchOption | null;
18
- /** 切换进行中(内部状态);调用 qspace 前禁用,complete 后恢复 */
19
- private _switching;
20
- /** 切换完成后禁用当前按钮,避免重复切换 */
21
- private _isCurrentView;
22
- setSwitching(value: boolean): void;
23
- isSwitching(): boolean;
24
- setCurrentView(value: boolean): void;
25
- isCurrentView(): boolean;
24
+ setEnabled(value: boolean): void;
26
25
  static styles: import("lit").CSSResult;
27
26
  private _onClick;
27
+ private _onCoreLoaded;
28
28
  private _onViewModeChange;
29
29
  /**
30
+
30
31
  * 渲染模板
32
+
31
33
  */
32
34
  render(): import("lit-html").TemplateResult;
33
35
  /**
36
+
34
37
  * 组件连接生命周期
38
+
35
39
  */
36
40
  connectedCallback(): void;
37
41
  /**
42
+
38
43
  * 组件断开生命周期
44
+
39
45
  */
40
46
  disconnectedCallback(): void;
41
47
  /**
48
+
42
49
  * 第一次更新
50
+
43
51
  */
44
52
  firstUpdated(changed: Map<string, unknown>): void;
45
53
  /**
54
+
46
55
  * 组件更新
56
+
47
57
  */
48
58
  updated(changed: Map<string, unknown>): void;
49
59
  /**
60
+
50
61
  * 将要更新
62
+
51
63
  */
52
64
  protected willUpdate(_changedProperties: PropertyValues): void;
53
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAGhD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEpC,OAAO,EAAe,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAIxE,+CAA+C;AAC/C,qBACa,qBAAsB,SAAQ,UAAU;IAEnD,0DAA0D;IAE1D,MAAM,EAAE,GAAG,CAAO;IAElB;;;OAGG;IAOH,aAAa,UAAQ;IAErB;;;OAGG;IAEH,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAE1C,6CAA6C;IAE7C,OAAO,CAAC,UAAU,CAAQ;IAE1B,yBAAyB;IAEzB,OAAO,CAAC,cAAc,CAAQ;IAE9B,YAAY,CAAC,KAAK,EAAE,OAAO;IAO3B,WAAW;IAMX,cAAc,CAAC,KAAK,EAAE,OAAO;IAO7B,aAAa;IAMb,MAAM,CAAC,MAAM,0BAAS;IAEtB,OAAO,CAAC,QAAQ,CAIf;IAED,OAAO,CAAC,iBAAiB,CAIxB;IAED;;OAEG;IACH,MAAM;IAMN;;OAEG;IACH,iBAAiB;IAUjB;;OAEG;IACH,oBAAoB;IAapB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAQ1C;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAQrC;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;CAM/D;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,qBAAqB;QAE7B,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAA;KAE7B;CAEF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAMhD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAIpC,OAAO,EAAe,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAQxE,+CAA+C;AAE/C,qBAEa,qBAAsB,SAAQ,UAAU;IAInD,0DAA0D;IAI1D,MAAM,EAAE,GAAG,CAAO;IAIlB;;;;;;OAMG;IAcH,OAAO,UAAQ;IAIf;;;;;;OAMG;IAIH,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAI1C,UAAU,CAAC,KAAK,EAAE,OAAO;IAgBzB,MAAM,CAAC,MAAM,0BAAS;IAItB,OAAO,CAAC,QAAQ,CAQf;IAID,OAAO,CAAC,aAAa,CAQpB;IAID,OAAO,CAAC,iBAAiB,CAQxB;IAID;;;;OAIG;IAEH,MAAM;IAYN;;;;OAIG;IAEH,iBAAiB;IA4BjB;;;;OAIG;IAEH,oBAAoB;IA4BpB;;;;OAIG;IAEH,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAY1C;;;;OAIG;IAEH,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAYrC;;;;OAIG;IAEH,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,cAAc,GAAG,IAAI;CAQ/D;AAID,OAAO,CAAC,MAAM,CAAC;IAIb,UAAU,qBAAqB;QAI7B,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAA;KAI7B;CAIF"}
@@ -1,8 +1,8 @@
1
1
  import { LitElement } from "lit";
2
- import { property, state } from "lit/decorators.js";
2
+ import { property } from "lit/decorators.js";
3
3
  import { safeCustomElement } from "../../../utils/define-lit-element.js";
4
4
  import { TAG } from "./constants.js";
5
- import { handlePanoramaClick, handelViewModeChange } from "./interaction.js";
5
+ import { handlePanoramaClick, handelCoreLoaded, handelViewModeChange } from "./interaction.js";
6
6
  import { booleanAttr } from "./properties.js";
7
7
  import { styles } from "./styles.js";
8
8
  import { renderPanoramaView } from "./template.js";
@@ -20,68 +20,75 @@ let LitSwitchPanoramaView = class extends LitElement {
20
20
  constructor() {
21
21
  super(...arguments);
22
22
  this.qspace = null;
23
- this.buttonEnabled = false;
23
+ this.enabled = false;
24
24
  this.option = null;
25
- this._switching = false;
26
- this._isCurrentView = false;
27
25
  this._onClick = (e) => {
28
26
  handlePanoramaClick(this, e);
29
27
  };
28
+ this._onCoreLoaded = () => {
29
+ handelCoreLoaded(this);
30
+ };
30
31
  this._onViewModeChange = (mode) => {
31
32
  handelViewModeChange(this, mode);
32
33
  };
33
34
  }
34
- setSwitching(value) {
35
- this._switching = value;
36
- this.toggleAttribute("switching", value);
37
- }
38
- isSwitching() {
39
- return this._switching;
40
- }
41
- setCurrentView(value) {
42
- this._isCurrentView = value;
43
- this.toggleAttribute("current-view", value);
44
- }
45
- isCurrentView() {
46
- return this._isCurrentView;
35
+ setEnabled(value) {
36
+ this.enabled = value;
37
+ this.toggleAttribute("enabled", value);
47
38
  }
48
39
  /**
49
- * 渲染模板
50
- */
40
+
41
+ * 渲染模板
42
+
43
+ */
51
44
  render() {
52
45
  return renderPanoramaView(this._onClick);
53
46
  }
54
47
  /**
55
- * 组件连接生命周期
56
- */
48
+
49
+ * 组件连接生命周期
50
+
51
+ */
57
52
  connectedCallback() {
58
- this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
59
53
  super.connectedCallback();
54
+ if (this.qspace) {
55
+ this.qspace.core.addEventListener("loaded", this._onCoreLoaded);
56
+ this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
57
+ }
60
58
  }
61
59
  /**
62
- * 组件断开生命周期
63
- */
60
+
61
+ * 组件断开生命周期
62
+
63
+ */
64
64
  disconnectedCallback() {
65
- this.setSwitching(false);
66
- this.setCurrentView(false);
67
- this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
65
+ if (this.qspace) {
66
+ this.qspace.core.removeEventListener("loaded", this._onCoreLoaded);
67
+ this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
68
+ }
68
69
  super.disconnectedCallback();
69
70
  }
70
71
  /**
71
- * 第一次更新
72
- */
72
+
73
+ * 第一次更新
74
+
75
+ */
73
76
  firstUpdated(changed) {
74
77
  super.firstUpdated(changed);
75
78
  }
76
79
  /**
77
- * 组件更新
78
- */
80
+
81
+ * 组件更新
82
+
83
+ */
79
84
  updated(changed) {
80
85
  super.updated(changed);
81
86
  }
82
87
  /**
83
- * 将要更新
84
- */
88
+
89
+ * 将要更新
90
+
91
+ */
85
92
  willUpdate(_changedProperties) {
86
93
  }
87
94
  };
@@ -92,20 +99,14 @@ __decorateClass([
92
99
  __decorateClass([
93
100
  property({
94
101
  type: Boolean,
95
- attribute: "button-enabled",
102
+ attribute: "enabled",
96
103
  reflect: true,
97
104
  converter: booleanAttr
98
105
  })
99
- ], LitSwitchPanoramaView.prototype, "buttonEnabled", 2);
106
+ ], LitSwitchPanoramaView.prototype, "enabled", 2);
100
107
  __decorateClass([
101
108
  property({ attribute: false })
102
109
  ], LitSwitchPanoramaView.prototype, "option", 2);
103
- __decorateClass([
104
- state()
105
- ], LitSwitchPanoramaView.prototype, "_switching", 2);
106
- __decorateClass([
107
- state()
108
- ], LitSwitchPanoramaView.prototype, "_isCurrentView", 2);
109
110
  LitSwitchPanoramaView = __decorateClass([
110
111
  safeCustomElement(TAG)
111
112
  ], LitSwitchPanoramaView);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/common/lit-switch-panorama-view/index.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-panorama-view 组件注册与属性声明\r\n */\r\n\r\nimport { LitElement, PropertyValues } from 'lit'\r\nimport { property, state } from 'lit/decorators.js'\r\nimport { safeCustomElement } from '../../../utils/define-lit-element.js'\r\nimport { TAG } from './constants.js'\r\nimport { handlePanoramaClick, handelViewModeChange } from './interaction.js'\r\nimport { booleanAttr, type PanoramaSwitchOption } from './properties.js'\r\nimport { styles } from './styles.js'\r\nimport { renderPanoramaView } from './template.js'\r\n\r\n/** 切换到 panorama 视图;qspace 须由宿主通过 :qspace 传入 */\r\n@safeCustomElement(TAG)\r\nexport class LitSwitchPanoramaView extends LitElement {\r\n\r\n /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */\r\n @property({ attribute: false })\r\n qspace: any = null\r\n\r\n /**\r\n * 是否允许点击;默认 false,场景就绪后由宿主设为 true\r\n * HTML: button-enabled / Vue: :button-enabled\r\n */\r\n @property({\r\n type: Boolean,\r\n attribute: 'button-enabled',\r\n reflect: true,\r\n converter: booleanAttr,\r\n })\r\n buttonEnabled = false\r\n\r\n /**\r\n * 切换全景视图参数;仅 JS 属性绑定\r\n * Vue: :option=\"{ locationId, quaternion }\"\r\n */\r\n @property({ attribute: false })\r\n option: PanoramaSwitchOption | null = null\r\n\r\n /** 切换进行中(内部状态);调用 qspace 前禁用,complete 后恢复 */\r\n @state()\r\n private _switching = false\r\n\r\n /** 切换完成后禁用当前按钮,避免重复切换 */\r\n @state()\r\n private _isCurrentView = false\r\n\r\n setSwitching(value: boolean) {\r\n\r\n this._switching = value\r\n this.toggleAttribute('switching', value)\r\n\r\n }\r\n\r\n isSwitching() {\r\n\r\n return this._switching\r\n\r\n }\r\n\r\n setCurrentView(value: boolean) {\r\n\r\n this._isCurrentView = value\r\n this.toggleAttribute('current-view', value)\r\n\r\n }\r\n\r\n isCurrentView() {\r\n\r\n return this._isCurrentView\r\n\r\n }\r\n\r\n static styles = styles\r\n\r\n private _onClick = (e: Event) => {\r\n\r\n handlePanoramaClick(this, e)\r\n\r\n }\r\n\r\n private _onViewModeChange = (mode: string) => {\r\n\r\n handelViewModeChange(this, mode);\r\n\r\n }\r\n\r\n /**\r\n * 渲染模板\r\n */\r\n render() {\r\n\r\n return renderPanoramaView(this._onClick)\r\n\r\n }\r\n\r\n /**\r\n * 组件连接生命周期\r\n */\r\n connectedCallback() {\r\n\r\n // console.log('connectedCallback', this);\r\n\r\n this.qspace.view.addEventListener('mode.change', this._onViewModeChange);\r\n\r\n super.connectedCallback()\r\n\r\n }\r\n\r\n /**\r\n * 组件断开生命周期\r\n */\r\n disconnectedCallback() {\r\n\r\n // console.log('disconnectedCallback', this);\r\n\r\n this.setSwitching(false)\r\n this.setCurrentView(false)\r\n\r\n this.qspace.view.removeEventListener('mode.change', this._onViewModeChange);\r\n\r\n super.disconnectedCallback()\r\n\r\n }\r\n\r\n /**\r\n * 第一次更新\r\n */\r\n firstUpdated(changed: Map<string, unknown>) {\r\n\r\n // console.log('firstUpdated', this, changed);\r\n\r\n super.firstUpdated(changed)\r\n\r\n }\r\n\r\n /**\r\n * 组件更新\r\n */\r\n updated(changed: Map<string, unknown>) {\r\n\r\n // console.log('updated', this, changed);\r\n\r\n super.updated(changed)\r\n\r\n }\r\n\r\n /**\r\n * 将要更新\r\n */\r\n protected willUpdate(_changedProperties: PropertyValues): void {\r\n\r\n // console.log('willUpdate', this, _changedProperties);\r\n\r\n }\r\n\r\n}\r\n\r\ndeclare global {\r\n\r\n interface HTMLElementTagNameMap {\r\n\r\n [TAG]: LitSwitchPanoramaView\r\n\r\n }\r\n\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAiBO,IAAM,wBAAN,cAAoC,WAAW;AAAA,EAA/C,cAAA;AAAA,UAAA,GAAA,SAAA;AAIL,SAAA,SAAc;AAYd,SAAA,gBAAgB;AAOhB,SAAA,SAAsC;AAItC,SAAQ,aAAa;AAIrB,SAAQ,iBAAiB;AA8BzB,SAAQ,WAAW,CAAC,MAAa;AAE/B,0BAAoB,MAAM,CAAC;AAAA,IAE7B;AAEA,SAAQ,oBAAoB,CAAC,SAAiB;AAE5C,2BAAqB,MAAM,IAAI;AAAA,IAEjC;AAAA,EAAA;AAAA,EAtCA,aAAa,OAAgB;AAE3B,SAAK,aAAa;AAClB,SAAK,gBAAgB,aAAa,KAAK;AAAA,EAEzC;AAAA,EAEA,cAAc;AAEZ,WAAO,KAAK;AAAA,EAEd;AAAA,EAEA,eAAe,OAAgB;AAE7B,SAAK,iBAAiB;AACtB,SAAK,gBAAgB,gBAAgB,KAAK;AAAA,EAE5C;AAAA,EAEA,gBAAgB;AAEd,WAAO,KAAK;AAAA,EAEd;AAAA;AAAA;AAAA;AAAA,EAmBA,SAAS;AAEP,WAAO,mBAAmB,KAAK,QAAQ;AAAA,EAEzC;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB;AAIlB,SAAK,OAAO,KAAK,iBAAiB,eAAe,KAAK,iBAAiB;AAEvE,UAAM,kBAAA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA,EAKA,uBAAuB;AAIrB,SAAK,aAAa,KAAK;AACvB,SAAK,eAAe,KAAK;AAEzB,SAAK,OAAO,KAAK,oBAAoB,eAAe,KAAK,iBAAiB;AAE1E,UAAM,qBAAA;AAAA,EAER;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,SAA+B;AAI1C,UAAM,aAAa,OAAO;AAAA,EAE5B;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,SAA+B;AAIrC,UAAM,QAAQ,OAAO;AAAA,EAEvB;AAAA;AAAA;AAAA;AAAA,EAKU,WAAW,oBAA0C;AAAA,EAI/D;AAEF;AA9Ia,sBA2DJ,SAAS;AAvDhB,gBAAA;AAAA,EADC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GAHnB,sBAIX,WAAA,UAAA,CAAA;AAYA,gBAAA;AAAA,EANC,SAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,CACZ;AAAA,GAfU,sBAgBX,WAAA,iBAAA,CAAA;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GAtBnB,sBAuBX,WAAA,UAAA,CAAA;AAIQ,gBAAA;AAAA,EADP,MAAA;AAAM,GA1BI,sBA2BH,WAAA,cAAA,CAAA;AAIA,gBAAA;AAAA,EADP,MAAA;AAAM,GA9BI,sBA+BH,WAAA,kBAAA,CAAA;AA/BG,wBAAN,gBAAA;AAAA,EADN,kBAAkB,GAAG;AAAA,GACT,qBAAA;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/common/lit-switch-panorama-view/index.ts"],"sourcesContent":["/*\r\r\n * @Author: ncz\r\r\n * @Date: 2026-05-30\r\r\n * @Description: lit-switch-panorama-view 组件注册与属性声明\r\r\n */\r\r\n\r\r\nimport { LitElement, PropertyValues } from 'lit'\r\r\nimport { property } from 'lit/decorators.js'\r\r\nimport { safeCustomElement } from '../../../utils/define-lit-element.js'\r\r\nimport { TAG } from './constants.js'\r\r\nimport { handlePanoramaClick, handelViewModeChange, handelCoreLoaded } from './interaction.js'\r\r\nimport { booleanAttr, type PanoramaSwitchOption } from './properties.js'\r\r\nimport { styles } from './styles.js'\r\r\nimport { renderPanoramaView } from './template.js'\r\r\n\r\r\n/** 切换到 panorama 视图;qspace 须由宿主通过 :qspace 传入 */\r\r\n@safeCustomElement(TAG)\r\r\nexport class LitSwitchPanoramaView extends LitElement {\r\r\n\r\r\n /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */\r\r\n @property({ attribute: false })\r\r\n qspace: any = null\r\r\n\r\r\n /**\r\r\n * 是否可点击;由 core.loaded / mode.change 自动同步,宿主亦可覆盖\r\r\n * HTML: enabled / Vue: :enabled\r\r\n */\r\r\n @property({\r\r\n type: Boolean,\r\r\n attribute: 'enabled',\r\r\n reflect: true,\r\r\n converter: booleanAttr,\r\r\n })\r\r\n enabled = false\r\r\n\r\r\n /**\r\r\n * 切换全景视图参数;仅 JS 属性绑定\r\r\n * Vue: :option=\"{ locationId, quaternion }\"\r\r\n */\r\r\n @property({ attribute: false })\r\r\n option: PanoramaSwitchOption | null = null\r\r\n\r\r\n setEnabled(value: boolean) {\r\r\n\r\r\n this.enabled = value\r\r\n\r\r\n this.toggleAttribute('enabled', value)\r\r\n\r\r\n }\r\r\n\r\r\n static styles = styles\r\r\n\r\r\n private _onClick = (e: Event) => {\r\r\n\r\r\n handlePanoramaClick(this, e)\r\r\n\r\r\n }\r\r\n\r\r\n private _onCoreLoaded = () => {\r\r\n\r\r\n handelCoreLoaded(this);\r\r\n\r\r\n }\r\r\n\r\r\n private _onViewModeChange = (mode: string) => {\r\r\n\r\r\n handelViewModeChange(this, mode);\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 渲染模板\r\r\n */\r\r\n render() {\r\r\n\r\r\n return renderPanoramaView(this._onClick)\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 组件连接生命周期\r\r\n */\r\r\n connectedCallback() {\r\r\n\r\r\n super.connectedCallback()\r\r\n\r\r\n if (this.qspace) {\r\r\n\r\r\n this.qspace.core.addEventListener('loaded', this._onCoreLoaded);\r\r\n\r\r\n this.qspace.view.addEventListener('mode.change', this._onViewModeChange);\r\r\n\r\r\n }\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 组件断开生命周期\r\r\n */\r\r\n disconnectedCallback() {\r\r\n\r\r\n if (this.qspace) {\r\r\n\r\r\n this.qspace.core.removeEventListener('loaded', this._onCoreLoaded);\r\r\n\r\r\n this.qspace.view.removeEventListener('mode.change', this._onViewModeChange);\r\r\n\r\r\n }\r\r\n\r\r\n super.disconnectedCallback()\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 第一次更新\r\r\n */\r\r\n firstUpdated(changed: Map<string, unknown>) {\r\r\n\r\r\n super.firstUpdated(changed)\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 组件更新\r\r\n */\r\r\n updated(changed: Map<string, unknown>) {\r\r\n\r\r\n super.updated(changed)\r\r\n\r\r\n }\r\r\n\r\r\n /**\r\r\n * 将要更新\r\r\n */\r\r\n protected willUpdate(_changedProperties: PropertyValues): void {\r\r\n\r\r\n }\r\r\n\r\r\n}\r\r\n\r\r\ndeclare global {\r\r\n\r\r\n interface HTMLElementTagNameMap {\r\r\n\r\r\n [TAG]: LitSwitchPanoramaView\r\r\n\r\r\n }\r\r\n\r\r\n}\r\r\n\r"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAkCO,IAAM,wBAAN,cAAoC,WAAW;AAAA,EAA/C,cAAA;AAAA,UAAA,GAAA,SAAA;AAQL,SAAA,SAAc;AAwBd,SAAA,UAAU;AAcV,SAAA,SAAsC;AAwBtC,SAAQ,WAAW,CAAC,MAAa;AAI/B,0BAAoB,MAAM,CAAC;AAAA,IAI7B;AAIA,SAAQ,gBAAgB,MAAM;AAI5B,uBAAiB,IAAI;AAAA,IAIvB;AAIA,SAAQ,oBAAoB,CAAC,SAAiB;AAI5C,2BAAqB,MAAM,IAAI;AAAA,IAIjC;AAAA,EAAA;AAAA,EApDA,WAAW,OAAgB;AAIzB,SAAK,UAAU;AAIf,SAAK,gBAAgB,WAAW,KAAK;AAAA,EAIvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkDA,SAAS;AAIP,WAAO,mBAAmB,KAAK,QAAQ;AAAA,EAIzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,oBAAoB;AAIlB,UAAM,kBAAA;AAIN,QAAI,KAAK,QAAQ;AAIf,WAAK,OAAO,KAAK,iBAAiB,UAAU,KAAK,aAAa;AAI9D,WAAK,OAAO,KAAK,iBAAiB,eAAe,KAAK,iBAAiB;AAAA,IAIzE;AAAA,EAIF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,uBAAuB;AAIrB,QAAI,KAAK,QAAQ;AAIf,WAAK,OAAO,KAAK,oBAAoB,UAAU,KAAK,aAAa;AAIjE,WAAK,OAAO,KAAK,oBAAoB,eAAe,KAAK,iBAAiB;AAAA,IAI5E;AAIA,UAAM,qBAAA;AAAA,EAIR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,aAAa,SAA+B;AAI1C,UAAM,aAAa,OAAO;AAAA,EAI5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,QAAQ,SAA+B;AAIrC,UAAM,QAAQ,OAAO;AAAA,EAIvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUU,WAAW,oBAA0C;AAAA,EAI/D;AAIF;AAlPa,sBAkEJ,SAAS;AA1DhB,gBAAA;AAAA,EAFC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GANnB,sBAQX,WAAA,UAAA,CAAA;AAwBA,gBAAA;AAAA,EAZC,SAAS;AAAA,IAER,MAAM;AAAA,IAEN,WAAW;AAAA,IAEX,SAAS;AAAA,IAET,WAAW;AAAA,EAAA,CAEZ;AAAA,GA9BU,sBAgCX,WAAA,WAAA,CAAA;AAcA,gBAAA;AAAA,EAFC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GA5CnB,sBA8CX,WAAA,UAAA,CAAA;AA9CW,wBAAN,gBAAA;AAAA,EAFN,kBAAkB,GAAG;AAAA,GAET,qBAAA;"}
@@ -2,13 +2,13 @@ import type { PanoramaSwitchOption } from './properties.js';
2
2
  export type PanoramaViewHost = HTMLElement & {
3
3
  qspace: any;
4
4
  option: PanoramaSwitchOption | null;
5
- buttonEnabled: boolean;
6
- setSwitching: (value: boolean) => void;
7
- isSwitching: () => boolean;
8
- setCurrentView: (value: boolean) => void;
9
- isCurrentView: () => boolean;
5
+ enabled: boolean;
6
+ setEnabled: (value: boolean) => void;
10
7
  };
8
+ /** 根据 qspace.view.mode 同步 enabled:当前视图或过渡中不可点 */
9
+ export declare function syncEnabledFromMode(host: PanoramaViewHost, mode: string | undefined): void;
11
10
  /** 点击交互:校验 → 派发 click → 执行 qspace 切换 → 派发 complete */
12
11
  export declare function handlePanoramaClick(host: PanoramaViewHost, e: Event): void;
12
+ export declare function handelCoreLoaded(host: PanoramaViewHost): void;
13
13
  export declare function handelViewModeChange(host: PanoramaViewHost, mode: string): void;
14
14
  //# sourceMappingURL=interaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/interaction.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAE3C,MAAM,EAAE,GAAG,CAAA;IACX,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACnC,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,WAAW,EAAE,MAAM,OAAO,CAAA;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,aAAa,EAAE,MAAM,OAAO,CAAA;CAE7B,CAAA;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,KAAK,QA8BnE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,QA8BxE"}
1
+ {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/interaction.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAE3C,MAAM,EAAE,GAAG,CAAA;IACX,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAErC,CAAA;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,QAmBnF;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,KAAK,QA2BnE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,QAItD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,QAIxE"}
@@ -1,8 +1,20 @@
1
1
  import { ViewMode } from "../../../enum/view.mode.js";
2
2
  import { dispatchClick, dispatchComplete } from "./events.js";
3
3
  import { turnToPanoramaView } from "./logic.js";
4
+ function syncEnabledFromMode(host, mode) {
5
+ switch (mode) {
6
+ case ViewMode.Transitioning:
7
+ case ViewMode.Panorama:
8
+ host.setEnabled(false);
9
+ break;
10
+ case ViewMode.Dollhouse:
11
+ case ViewMode.Floorplan:
12
+ host.setEnabled(true);
13
+ break;
14
+ }
15
+ }
4
16
  function handlePanoramaClick(host, e) {
5
- if (!host.buttonEnabled || host.isSwitching() || host.isCurrentView()) {
17
+ if (!host.enabled) {
6
18
  e.preventDefault();
7
19
  e.stopPropagation();
8
20
  return;
@@ -11,34 +23,22 @@ function handlePanoramaClick(host, e) {
11
23
  if (!host.qspace) {
12
24
  return;
13
25
  }
14
- host.setSwitching(true);
26
+ host.setEnabled(false);
15
27
  turnToPanoramaView(host.qspace, host.option, () => {
16
28
  dispatchComplete(host, e);
17
- host.setSwitching(false);
18
- host.setCurrentView(true);
19
29
  });
20
30
  }
31
+ function handelCoreLoaded(host) {
32
+ var _a, _b;
33
+ syncEnabledFromMode(host, (_b = (_a = host.qspace) == null ? void 0 : _a.view) == null ? void 0 : _b.mode);
34
+ }
21
35
  function handelViewModeChange(host, mode) {
22
- switch (mode) {
23
- case ViewMode.Transitioning:
24
- host.setSwitching(true);
25
- break;
26
- case ViewMode.Panorama:
27
- host.setSwitching(false);
28
- host.setCurrentView(true);
29
- break;
30
- case ViewMode.Dollhouse:
31
- host.setSwitching(false);
32
- host.setCurrentView(false);
33
- break;
34
- case ViewMode.Floorplan:
35
- host.setSwitching(false);
36
- host.setCurrentView(false);
37
- break;
38
- }
36
+ syncEnabledFromMode(host, mode);
39
37
  }
40
38
  export {
39
+ handelCoreLoaded,
41
40
  handelViewModeChange,
42
- handlePanoramaClick
41
+ handlePanoramaClick,
42
+ syncEnabledFromMode
43
43
  };
44
44
  //# sourceMappingURL=interaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.js","sources":["../../../../src/components/common/lit-switch-panorama-view/interaction.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-panorama-view 点击交互流程\n */\n\nimport { ViewMode } from '@/enum/view.mode'\nimport { dispatchClick, dispatchComplete } from './events.js'\nimport { turnToPanoramaView } from './logic.js'\nimport type { PanoramaSwitchOption } from './properties.js'\n\nexport type PanoramaViewHost = HTMLElement & {\n\n qspace: any\n option: PanoramaSwitchOption | null\n buttonEnabled: boolean\n setSwitching: (value: boolean) => void\n isSwitching: () => boolean\n setCurrentView: (value: boolean) => void\n isCurrentView: () => boolean\n\n}\n\n/** 点击交互:校验 → 派发 click → 执行 qspace 切换 → 派发 complete */\nexport function handlePanoramaClick(host: PanoramaViewHost, e: Event) {\n\n if (!host.buttonEnabled || host.isSwitching() || host.isCurrentView()) {\n\n e.preventDefault()\n e.stopPropagation()\n\n return\n\n }\n\n dispatchClick(host, e)\n\n if (!host.qspace) {\n\n return\n\n }\n\n host.setSwitching(true)\n\n turnToPanoramaView(host.qspace, host.option, () => {\n\n dispatchComplete(host, e)\n\n host.setSwitching(false)\n host.setCurrentView(true)\n\n })\n\n}\n\nexport function handelViewModeChange(host: PanoramaViewHost, mode: string) {\n\n // console.log('on mode change', mode);\n\n switch (mode) {\n\n case ViewMode.Transitioning:\n host.setSwitching(true)\n break\n\n case ViewMode.Panorama:\n host.setSwitching(false)\n host.setCurrentView(true)\n break\n\n case ViewMode.Dollhouse:\n host.setSwitching(false)\n host.setCurrentView(false)\n break\n\n case ViewMode.Floorplan:\n host.setSwitching(false)\n host.setCurrentView(false)\n break\n\n default:\n break\n\n }\n\n}\n"],"names":[],"mappings":";;;AAwBO,SAAS,oBAAoB,MAAwB,GAAU;AAEpE,MAAI,CAAC,KAAK,iBAAiB,KAAK,iBAAiB,KAAK,iBAAiB;AAErE,MAAE,eAAA;AACF,MAAE,gBAAA;AAEF;AAAA,EAEF;AAEA,gBAAc,MAAM,CAAC;AAErB,MAAI,CAAC,KAAK,QAAQ;AAEhB;AAAA,EAEF;AAEA,OAAK,aAAa,IAAI;AAEtB,qBAAmB,KAAK,QAAQ,KAAK,QAAQ,MAAM;AAEjD,qBAAiB,MAAM,CAAC;AAExB,SAAK,aAAa,KAAK;AACvB,SAAK,eAAe,IAAI;AAAA,EAE1B,CAAC;AAEH;AAEO,SAAS,qBAAqB,MAAwB,MAAc;AAIzE,UAAQ,MAAA;AAAA,IAEN,KAAK,SAAS;AACZ,WAAK,aAAa,IAAI;AACtB;AAAA,IAEF,KAAK,SAAS;AACZ,WAAK,aAAa,KAAK;AACvB,WAAK,eAAe,IAAI;AACxB;AAAA,IAEF,KAAK,SAAS;AACZ,WAAK,aAAa,KAAK;AACvB,WAAK,eAAe,KAAK;AACzB;AAAA,IAEF,KAAK,SAAS;AACZ,WAAK,aAAa,KAAK;AACvB,WAAK,eAAe,KAAK;AACzB;AAAA,EAGA;AAIN;"}
1
+ {"version":3,"file":"interaction.js","sources":["../../../../src/components/common/lit-switch-panorama-view/interaction.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-panorama-view 点击交互流程\n */\n\nimport { ViewMode } from '@/enum/view.mode'\nimport { dispatchClick, dispatchComplete } from './events.js'\nimport { turnToPanoramaView } from './logic.js'\nimport type { PanoramaSwitchOption } from './properties.js'\n\nexport type PanoramaViewHost = HTMLElement & {\n\n qspace: any\n option: PanoramaSwitchOption | null\n enabled: boolean\n setEnabled: (value: boolean) => void\n\n}\n\n/** 根据 qspace.view.mode 同步 enabled:当前视图或过渡中不可点 */\nexport function syncEnabledFromMode(host: PanoramaViewHost, mode: string | undefined) {\n\n switch (mode) {\n\n case ViewMode.Transitioning:\n case ViewMode.Panorama:\n host.setEnabled(false)\n break\n\n case ViewMode.Dollhouse:\n case ViewMode.Floorplan:\n host.setEnabled(true)\n break\n\n default:\n break\n\n }\n\n}\n\n/** 点击交互:校验 → 派发 click → 执行 qspace 切换 → 派发 complete */\nexport function handlePanoramaClick(host: PanoramaViewHost, e: Event) {\n\n if (!host.enabled) {\n\n e.preventDefault()\n e.stopPropagation()\n\n return\n\n }\n\n dispatchClick(host, e)\n\n if (!host.qspace) {\n\n return\n\n }\n\n host.setEnabled(false)\n\n turnToPanoramaView(host.qspace, host.option, () => {\n\n dispatchComplete(host, e)\n\n })\n\n}\n\nexport function handelCoreLoaded(host: PanoramaViewHost) {\n\n syncEnabledFromMode(host, host.qspace?.view?.mode)\n\n}\n\nexport function handelViewModeChange(host: PanoramaViewHost, mode: string) {\n\n syncEnabledFromMode(host, mode)\n\n}\n"],"names":[],"mappings":";;;AAqBO,SAAS,oBAAoB,MAAwB,MAA0B;AAEpF,UAAQ,MAAA;AAAA,IAEN,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AACZ,WAAK,WAAW,KAAK;AACrB;AAAA,IAEF,KAAK,SAAS;AAAA,IACd,KAAK,SAAS;AACZ,WAAK,WAAW,IAAI;AACpB;AAAA,EAGA;AAIN;AAGO,SAAS,oBAAoB,MAAwB,GAAU;AAEpE,MAAI,CAAC,KAAK,SAAS;AAEjB,MAAE,eAAA;AACF,MAAE,gBAAA;AAEF;AAAA,EAEF;AAEA,gBAAc,MAAM,CAAC;AAErB,MAAI,CAAC,KAAK,QAAQ;AAEhB;AAAA,EAEF;AAEA,OAAK,WAAW,KAAK;AAErB,qBAAmB,KAAK,QAAQ,KAAK,QAAQ,MAAM;AAEjD,qBAAiB,MAAM,CAAC;AAAA,EAE1B,CAAC;AAEH;AAEO,SAAS,iBAAiB,MAAwB;;AAEvD,sBAAoB,OAAM,gBAAK,WAAL,mBAAa,SAAb,mBAAmB,IAAI;AAEnD;AAEO,SAAS,qBAAqB,MAAwB,MAAc;AAEzE,sBAAoB,MAAM,IAAI;AAEhC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/styles.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM,yBAgClB,CAAA"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/styles.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,MAAM,yBA4BlB,CAAA"}
@@ -20,16 +20,12 @@ const styles = css`
20
20
  background-image: var(--lit-mode-panorama-icon, url(${unsafeCSS(iconUrl)}));
21
21
  }
22
22
 
23
- :host(:not([button-enabled])),
24
- :host([switching]),
25
- :host([current-view]) {
23
+ :host(:not([enabled])) {
26
24
  pointer-events: none;
27
25
  opacity: 0.5;
28
26
  }
29
27
 
30
- :host(:not([button-enabled])) .mode-item,
31
- :host([switching]) .mode-item,
32
- :host([current-view]) .mode-item {
28
+ :host(:not([enabled])) .mode-item {
33
29
  cursor: not-allowed;
34
30
  }
35
31
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sources":["../../../../src/components/common/lit-switch-panorama-view/styles.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-panorama-view 样式\r\n */\r\n\r\nimport { css, unsafeCSS } from 'lit'\r\nimport iconUrl from './assets/icon.png?url'\r\n\r\nexport const styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .mode-item {\r\n box-sizing: border-box;\r\n width: 26px;\r\n height: 26px;\r\n background-repeat: no-repeat;\r\n background-size: 26px 26px;\r\n background-position: center;\r\n cursor: pointer;\r\n }\r\n\r\n .mode-item.panorama {\r\n background-color: rgba(255, 0, 0, 0.4);\r\n background-image: var(--lit-mode-panorama-icon, url(${unsafeCSS(iconUrl)}));\r\n }\r\n\r\n :host(:not([button-enabled])),\r\n :host([switching]),\r\n :host([current-view]) {\r\n pointer-events: none;\r\n opacity: 0.5;\r\n }\r\n\r\n :host(:not([button-enabled])) .mode-item,\r\n :host([switching]) .mode-item,\r\n :host([current-view]) .mode-item {\r\n cursor: not-allowed;\r\n }\r\n`\r\n"],"names":[],"mappings":";;AASO,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0DAiBoC,UAAU,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"styles.js","sources":["../../../../src/components/common/lit-switch-panorama-view/styles.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-panorama-view 样式\r\n */\r\n\r\nimport { css, unsafeCSS } from 'lit'\r\nimport iconUrl from './assets/icon.png?url'\r\n\r\nexport const styles = css`\r\n :host {\r\n display: inline-block;\r\n }\r\n\r\n .mode-item {\r\n box-sizing: border-box;\r\n width: 26px;\r\n height: 26px;\r\n background-repeat: no-repeat;\r\n background-size: 26px 26px;\r\n background-position: center;\r\n cursor: pointer;\r\n }\r\n\r\n .mode-item.panorama {\r\n background-color: rgba(255, 0, 0, 0.4);\r\n background-image: var(--lit-mode-panorama-icon, url(${unsafeCSS(iconUrl)}));\r\n }\r\n\r\n :host(:not([enabled])) {\r\n pointer-events: none;\r\n opacity: 0.5;\r\n }\r\n\r\n :host(:not([enabled])) .mode-item {\r\n cursor: not-allowed;\r\n }\r\n`\r\n"],"names":[],"mappings":";;AASO,MAAM,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0DAiBoC,UAAU,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qverse-ui/lit-components",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"