@qverse-ui/lit-components 1.0.4 → 1.0.6

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 +5 -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 +26 -30
  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 +26 -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 +5 -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 +26 -30
  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,20 +5,14 @@ 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
+ * 是否可点击;由 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-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":"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;IA6BjB;;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,11 +1,11 @@
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";
6
5
  import { booleanAttr } from "./properties.js";
7
6
  import { styles } from "./styles.js";
8
7
  import { renderDollhouseView } from "./template.js";
8
+ import { handleDollhouseClick, handelCoreLoaded, handelViewModeChange, syncEnabledFromMode } from "./interaction.js";
9
9
  var __defProp = Object.defineProperty;
10
10
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
11
  var __decorateClass = (decorators, target, key, kind) => {
@@ -20,29 +20,20 @@ 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
39
  * 渲染模板
@@ -54,16 +45,27 @@ let LitSwitchDollhouseView = 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
+ if (this.qspace.view) {
51
+ try {
52
+ syncEnabledFromMode(this, this.qspace.view.mode);
53
+ } catch (error) {
54
+ console.error(error);
55
+ }
56
+ }
57
+ this.qspace.core.addEventListener("loaded", this._onCoreLoaded);
58
+ this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
59
+ }
59
60
  }
60
61
  /**
61
62
  * 组件断开生命周期
62
63
  */
63
64
  disconnectedCallback() {
64
- this.setSwitching(false);
65
- this.setCurrentView(false);
66
- 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
+ }
67
69
  super.disconnectedCallback();
68
70
  }
69
71
  /**
@@ -91,17 +93,11 @@ __decorateClass([
91
93
  __decorateClass([
92
94
  property({
93
95
  type: Boolean,
94
- attribute: "button-enabled",
96
+ attribute: "enabled",
95
97
  reflect: true,
96
98
  converter: booleanAttr
97
99
  })
98
- ], LitSwitchDollhouseView.prototype, "buttonEnabled", 2);
99
- __decorateClass([
100
- state()
101
- ], LitSwitchDollhouseView.prototype, "_switching", 2);
102
- __decorateClass([
103
- state()
104
- ], LitSwitchDollhouseView.prototype, "_isCurrentView", 2);
100
+ ], LitSwitchDollhouseView.prototype, "enabled", 2);
105
101
  LitSwitchDollhouseView = __decorateClass([
106
102
  safeCustomElement(TAG)
107
103
  ], 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\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 } from 'lit/decorators.js'\r\nimport { safeCustomElement } from '../../../utils/define-lit-element.js'\r\nimport { TAG } from './constants.js'\r\nimport { booleanAttr } from './properties.js'\r\nimport { styles } from './styles.js'\r\nimport { renderDollhouseView } from './template.js'\r\nimport { handleDollhouseClick, handelViewModeChange, handelCoreLoaded, syncEnabledFromMode } from './interaction.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 * 是否可点击;由 core.loaded / mode.change 自动同步,宿主亦可覆盖\r\n * HTML: enabled / Vue: :enabled\r\n */\r\n @property({\r\n type: Boolean,\r\n attribute: 'enabled',\r\n reflect: true,\r\n converter: booleanAttr,\r\n })\r\n enabled = false\r\n\r\n setEnabled(value: boolean) {\r\n\r\n this.enabled = value\r\n\r\n this.toggleAttribute('enabled', value)\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 _onCoreLoaded = () => {\r\n\r\n handelCoreLoaded(this);\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 renderDollhouseView(this._onClick)\r\n\r\n }\r\n\r\n /**\r\n * 组件连接生命周期\r\n */\r\n connectedCallback() {\r\n\r\n super.connectedCallback()\r\n\r\n if (this.qspace) {\r\n\r\n if (this.qspace.view) {\r\n\r\n // 待优化\r\n try {\r\n\r\n syncEnabledFromMode(this, this.qspace.view.mode);\r\n\r\n } catch (error) {\r\n\r\n console.error(error);\r\n\r\n }\r\n\r\n }\r\n\r\n this.qspace.core.addEventListener('loaded', this._onCoreLoaded);\r\n\r\n this.qspace.view.addEventListener('mode.change', this._onViewModeChange);\r\n\r\n }\r\n\r\n }\r\n\r\n /**\r\n * 组件断开生命周期\r\n */\r\n disconnectedCallback() {\r\n\r\n if (this.qspace) {\r\n\r\n this.qspace.core.removeEventListener('loaded', this._onCoreLoaded);\r\n\r\n this.qspace.view.removeEventListener('mode.change', this._onViewModeChange);\r\n\r\n }\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 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 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 }\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,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,UAAI,KAAK,OAAO,MAAM;AAGpB,YAAI;AAEF,8BAAoB,MAAM,KAAK,OAAO,KAAK,IAAI;AAAA,QAEjD,SAAS,OAAO;AAEd,kBAAQ,MAAM,KAAK;AAAA,QAErB;AAAA,MAEF;AAEA,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;AAjIa,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 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;IA6BjB;;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, syncEnabledFromMode } 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,27 @@ 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
+ if (this.qspace.view) {
51
+ try {
52
+ syncEnabledFromMode(this, this.qspace.view.mode);
53
+ } catch (error) {
54
+ console.error(error);
55
+ }
56
+ }
57
+ this.qspace.core.addEventListener("loaded", this._onCoreLoaded);
58
+ this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
59
+ }
59
60
  }
60
61
  /**
61
62
  * 组件断开生命周期
62
63
  */
63
64
  disconnectedCallback() {
64
- this.setSwitching(false);
65
- this.setCurrentView(false);
66
- 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
+ }
67
69
  super.disconnectedCallback();
68
70
  }
69
71
  /**
@@ -91,17 +93,11 @@ __decorateClass([
91
93
  __decorateClass([
92
94
  property({
93
95
  type: Boolean,
94
- attribute: "button-enabled",
96
+ attribute: "enabled",
95
97
  reflect: true,
96
98
  converter: booleanAttr
97
99
  })
98
- ], LitSwitchFloorplanView.prototype, "buttonEnabled", 2);
99
- __decorateClass([
100
- state()
101
- ], LitSwitchFloorplanView.prototype, "_switching", 2);
102
- __decorateClass([
103
- state()
104
- ], LitSwitchFloorplanView.prototype, "_isCurrentView", 2);
100
+ ], LitSwitchFloorplanView.prototype, "enabled", 2);
105
101
  LitSwitchFloorplanView = __decorateClass([
106
102
  safeCustomElement(TAG)
107
103
  ], 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, syncEnabledFromMode } 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 if (this.qspace.view) {\n\n // 待优化\n try {\n\n syncEnabledFromMode(this, this.qspace.view.mode);\n\n } catch (error) {\n\n console.error(error);\n\n }\n\n }\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,UAAI,KAAK,OAAO,MAAM;AAGpB,YAAI;AAEF,8BAAoB,MAAM,KAAK,OAAO,KAAK,IAAI;AAAA,QAEjD,SAAS,OAAO;AAEd,kBAAQ,MAAM,KAAK;AAAA,QAErB;AAAA,MAEF;AAEA,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;AAjIa,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,25 +6,19 @@ 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
+ * 是否可点击;由 core.loaded / mode.change 自动同步,宿主亦可覆盖
10
+ * HTML: enabled / Vue: :enabled
11
11
  */
12
- buttonEnabled: boolean;
12
+ enabled: boolean;
13
13
  /**
14
14
  * 切换全景视图参数;仅 JS 属性绑定
15
15
  * Vue: :option="{ locationId, quaternion }"
16
16
  */
17
17
  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;
18
+ setEnabled(value: boolean): void;
26
19
  static styles: import("lit").CSSResult;
27
20
  private _onClick;
21
+ private _onCoreLoaded;
28
22
  private _onViewModeChange;
29
23
  /**
30
24
  * 渲染模板
@@ -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":"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,OAAO,UAAQ;IAEf;;;OAGG;IAEH,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAO;IAE1C,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;IA6BjB;;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,qBAAqB,CAAA;KAE7B;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 { handlePanoramaClick, handelViewModeChange } from "./interaction.js";
5
+ import { handlePanoramaClick, handelCoreLoaded, handelViewModeChange, syncEnabledFromMode } 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,30 +20,21 @@ 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
40
  * 渲染模板
@@ -55,16 +46,27 @@ let LitSwitchPanoramaView = class extends LitElement {
55
46
  * 组件连接生命周期
56
47
  */
57
48
  connectedCallback() {
58
- this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
59
49
  super.connectedCallback();
50
+ if (this.qspace) {
51
+ if (this.qspace.view) {
52
+ try {
53
+ syncEnabledFromMode(this, this.qspace.view.mode);
54
+ } catch (error) {
55
+ console.error(error);
56
+ }
57
+ }
58
+ this.qspace.core.addEventListener("loaded", this._onCoreLoaded);
59
+ this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
60
+ }
60
61
  }
61
62
  /**
62
63
  * 组件断开生命周期
63
64
  */
64
65
  disconnectedCallback() {
65
- this.setSwitching(false);
66
- this.setCurrentView(false);
67
- this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
66
+ if (this.qspace) {
67
+ this.qspace.core.removeEventListener("loaded", this._onCoreLoaded);
68
+ this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
69
+ }
68
70
  super.disconnectedCallback();
69
71
  }
70
72
  /**
@@ -92,20 +94,14 @@ __decorateClass([
92
94
  __decorateClass([
93
95
  property({
94
96
  type: Boolean,
95
- attribute: "button-enabled",
97
+ attribute: "enabled",
96
98
  reflect: true,
97
99
  converter: booleanAttr
98
100
  })
99
- ], LitSwitchPanoramaView.prototype, "buttonEnabled", 2);
101
+ ], LitSwitchPanoramaView.prototype, "enabled", 2);
100
102
  __decorateClass([
101
103
  property({ attribute: false })
102
104
  ], LitSwitchPanoramaView.prototype, "option", 2);
103
- __decorateClass([
104
- state()
105
- ], LitSwitchPanoramaView.prototype, "_switching", 2);
106
- __decorateClass([
107
- state()
108
- ], LitSwitchPanoramaView.prototype, "_isCurrentView", 2);
109
105
  LitSwitchPanoramaView = __decorateClass([
110
106
  safeCustomElement(TAG)
111
107
  ], 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\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 } from 'lit/decorators.js'\r\nimport { safeCustomElement } from '../../../utils/define-lit-element.js'\r\nimport { TAG } from './constants.js'\r\nimport { handlePanoramaClick, handelViewModeChange, handelCoreLoaded, syncEnabledFromMode } 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 * 是否可点击;由 core.loaded / mode.change 自动同步,宿主亦可覆盖\r\n * HTML: enabled / Vue: :enabled\r\n */\r\n @property({\r\n type: Boolean,\r\n attribute: 'enabled',\r\n reflect: true,\r\n converter: booleanAttr,\r\n })\r\n enabled = 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 setEnabled(value: boolean) {\r\n\r\n this.enabled = value\r\n\r\n this.toggleAttribute('enabled', value)\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 _onCoreLoaded = () => {\r\n\r\n handelCoreLoaded(this);\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 super.connectedCallback()\r\n\r\n if (this.qspace) {\r\n\r\n if (this.qspace.view) {\r\n\r\n // 待优化\r\n try {\r\n\r\n syncEnabledFromMode(this, this.qspace.view.mode);\r\n\r\n } catch (error) {\r\n\r\n console.error(error);\r\n\r\n }\r\n\r\n }\r\n\r\n this.qspace.core.addEventListener('loaded', this._onCoreLoaded);\r\n\r\n this.qspace.view.addEventListener('mode.change', this._onViewModeChange);\r\n\r\n }\r\n\r\n }\r\n\r\n /**\r\n * 组件断开生命周期\r\n */\r\n disconnectedCallback() {\r\n\r\n if (this.qspace) {\r\n\r\n this.qspace.core.removeEventListener('loaded', this._onCoreLoaded);\r\n\r\n this.qspace.view.removeEventListener('mode.change', this._onViewModeChange);\r\n\r\n }\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 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 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 }\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,UAAU;AAOV,SAAA,SAAsC;AAYtC,SAAQ,WAAW,CAAC,MAAa;AAE/B,0BAAoB,MAAM,CAAC;AAAA,IAE7B;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,mBAAmB,KAAK,QAAQ;AAAA,EAEzC;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoB;AAElB,UAAM,kBAAA;AAEN,QAAI,KAAK,QAAQ;AAEf,UAAI,KAAK,OAAO,MAAM;AAGpB,YAAI;AAEF,8BAAoB,MAAM,KAAK,OAAO,KAAK,IAAI;AAAA,QAEjD,SAAS,OAAO;AAEd,kBAAQ,MAAM,KAAK;AAAA,QAErB;AAAA,MAEF;AAEA,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;AAxIa,sBAiCJ,SAAS;AA7BhB,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,WAAA,CAAA;AAOA,gBAAA;AAAA,EADC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GAtBnB,sBAuBX,WAAA,UAAA,CAAA;AAvBW,wBAAN,gBAAA;AAAA,EADN,kBAAkB,GAAG;AAAA,GACT,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.6",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"