@qverse-ui/lit-components 1.0.3 → 1.0.4

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 (56) hide show
  1. package/dist/components/base/index.d.ts.map +1 -1
  2. package/dist/components/base/index.js.map +1 -1
  3. package/dist/components/common/lit-switch-dollhouse-view/constants.d.ts +2 -1
  4. package/dist/components/common/lit-switch-dollhouse-view/constants.d.ts.map +1 -1
  5. package/dist/components/common/lit-switch-dollhouse-view/constants.js +2 -1
  6. package/dist/components/common/lit-switch-dollhouse-view/constants.js.map +1 -1
  7. package/dist/components/common/lit-switch-dollhouse-view/events.js.map +1 -1
  8. package/dist/components/common/lit-switch-dollhouse-view/index.d.ts +39 -4
  9. package/dist/components/common/lit-switch-dollhouse-view/index.d.ts.map +1 -1
  10. package/dist/components/common/lit-switch-dollhouse-view/index.js +61 -8
  11. package/dist/components/common/lit-switch-dollhouse-view/index.js.map +1 -1
  12. package/dist/components/common/lit-switch-dollhouse-view/interaction.d.ts +5 -1
  13. package/dist/components/common/lit-switch-dollhouse-view/interaction.d.ts.map +1 -1
  14. package/dist/components/common/lit-switch-dollhouse-view/interaction.js +25 -1
  15. package/dist/components/common/lit-switch-dollhouse-view/interaction.js.map +1 -1
  16. package/dist/components/common/lit-switch-dollhouse-view/styles.d.ts.map +1 -1
  17. package/dist/components/common/lit-switch-dollhouse-view/styles.js +4 -6
  18. package/dist/components/common/lit-switch-dollhouse-view/styles.js.map +1 -1
  19. package/dist/components/common/lit-switch-floorplan-view/constants.js.map +1 -1
  20. package/dist/components/common/lit-switch-floorplan-view/index.d.ts +39 -4
  21. package/dist/components/common/lit-switch-floorplan-view/index.d.ts.map +1 -1
  22. package/dist/components/common/lit-switch-floorplan-view/index.js +61 -8
  23. package/dist/components/common/lit-switch-floorplan-view/index.js.map +1 -1
  24. package/dist/components/common/lit-switch-floorplan-view/interaction.d.ts +5 -1
  25. package/dist/components/common/lit-switch-floorplan-view/interaction.d.ts.map +1 -1
  26. package/dist/components/common/lit-switch-floorplan-view/interaction.js +25 -1
  27. package/dist/components/common/lit-switch-floorplan-view/interaction.js.map +1 -1
  28. package/dist/components/common/lit-switch-floorplan-view/logic.js.map +1 -1
  29. package/dist/components/common/lit-switch-floorplan-view/styles.d.ts.map +1 -1
  30. package/dist/components/common/lit-switch-floorplan-view/styles.js +4 -6
  31. package/dist/components/common/lit-switch-floorplan-view/styles.js.map +1 -1
  32. package/dist/components/common/lit-switch-panorama-view/constants.js.map +1 -1
  33. package/dist/components/common/lit-switch-panorama-view/index.d.ts +45 -4
  34. package/dist/components/common/lit-switch-panorama-view/index.d.ts.map +1 -1
  35. package/dist/components/common/lit-switch-panorama-view/index.js +65 -8
  36. package/dist/components/common/lit-switch-panorama-view/index.js.map +1 -1
  37. package/dist/components/common/lit-switch-panorama-view/interaction.d.ts +7 -1
  38. package/dist/components/common/lit-switch-panorama-view/interaction.d.ts.map +1 -1
  39. package/dist/components/common/lit-switch-panorama-view/interaction.js +26 -2
  40. package/dist/components/common/lit-switch-panorama-view/interaction.js.map +1 -1
  41. package/dist/components/common/lit-switch-panorama-view/logic.d.ts +2 -1
  42. package/dist/components/common/lit-switch-panorama-view/logic.d.ts.map +1 -1
  43. package/dist/components/common/lit-switch-panorama-view/logic.js +8 -5
  44. package/dist/components/common/lit-switch-panorama-view/logic.js.map +1 -1
  45. package/dist/components/common/lit-switch-panorama-view/properties.d.ts +11 -0
  46. package/dist/components/common/lit-switch-panorama-view/properties.d.ts.map +1 -1
  47. package/dist/components/common/lit-switch-panorama-view/properties.js.map +1 -1
  48. package/dist/components/common/lit-switch-panorama-view/styles.d.ts.map +1 -1
  49. package/dist/components/common/lit-switch-panorama-view/styles.js +4 -6
  50. package/dist/components/common/lit-switch-panorama-view/styles.js.map +1 -1
  51. package/dist/enum/view.mode.d.ts +7 -0
  52. package/dist/enum/view.mode.d.ts.map +1 -0
  53. package/dist/enum/view.mode.js +11 -0
  54. package/dist/enum/view.mode.js.map +1 -0
  55. package/dist/utils/define-lit-element.js.map +1 -1
  56. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/base/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,iBAAiB,CAAA;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEtE,eAAO,MAAM,aAAa,yBAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/base/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACtE,eAAO,MAAM,aAAa,yBAA0B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/components/base/index.ts"],"sourcesContent":["/**\r\n * @qverse-ui/lit-components/base — 基础组件\r\n */\r\nimport './lit-button.js'\r\n\r\nexport { LitButton } from './lit-button.js'\r\n\r\nexport type { LitButtonVariant, LitButtonSize } from './lit-button.js'\r\n\r\nexport const LIT_BASE_TAGS = ['lit-button'] as const\r\n"],"names":[],"mappings":";AASO,MAAM,gBAAgB,CAAC,YAAY;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/base/index.ts"],"sourcesContent":["/**\n * @qverse-ui/lit-components/base — 基础组件\n */\nimport './lit-button.js'\nexport { LitButton } from './lit-button.js'\nexport type { LitButtonVariant, LitButtonSize } from './lit-button.js'\nexport const LIT_BASE_TAGS = ['lit-button'] as const\n"],"names":[],"mappings":";AAMO,MAAM,gBAAgB,CAAC,YAAY;"}
@@ -1,5 +1,6 @@
1
+ import { ViewMode } from '@/enum/view.mode';
1
2
  export declare const TAG: "lit-switch-dollhouse-view";
2
- export declare const VIEW: "dollhouse";
3
+ export declare const VIEW: ViewMode.Dollhouse;
3
4
  export declare const ICON_CSS_VAR: "--lit-mode-dollhouse-icon";
4
5
  export declare const CLICK_EVENT: "lit-switch-dollhouse-click";
5
6
  export declare const COMPLETE_EVENT: "lit-switch-dollhouse-complete";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-dollhouse-view/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,GAAG,EAAG,2BAAoC,CAAA;AAEvD,eAAO,MAAM,IAAI,EAAG,WAAoB,CAAA;AAExC,eAAO,MAAM,YAAY,EAAG,2BAAoC,CAAA;AAEhE,eAAO,MAAM,WAAW,EAAG,4BAAqC,CAAA;AAEhE,eAAO,MAAM,cAAc,EAAG,+BAAwC,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-dollhouse-view/constants.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,eAAO,MAAM,GAAG,EAAG,2BAAoC,CAAA;AAEvD,eAAO,MAAM,IAAI,oBAA8B,CAAA;AAE/C,eAAO,MAAM,YAAY,EAAG,2BAAoC,CAAA;AAEhE,eAAO,MAAM,WAAW,EAAG,4BAAqC,CAAA;AAEhE,eAAO,MAAM,cAAc,EAAG,+BAAwC,CAAA"}
@@ -1,5 +1,6 @@
1
+ import { ViewMode } from "../../../enum/view.mode.js";
1
2
  const TAG = "lit-switch-dollhouse-view";
2
- const VIEW = "dollhouse";
3
+ const VIEW = ViewMode.Dollhouse;
3
4
  const CLICK_EVENT = "lit-switch-dollhouse-click";
4
5
  const COMPLETE_EVENT = "lit-switch-dollhouse-complete";
5
6
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/constants.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-dollhouse-view 常量(标签、事件名、CSS 变量)\n */\n\nexport const TAG = 'lit-switch-dollhouse-view' as const\r\n\r\nexport const VIEW = 'dollhouse' as const\r\n\r\nexport const ICON_CSS_VAR = '--lit-mode-dollhouse-icon' as const\r\n\r\nexport const CLICK_EVENT = 'lit-switch-dollhouse-click' as const\r\n\r\nexport const COMPLETE_EVENT = 'lit-switch-dollhouse-complete' as const\r\n"],"names":[],"mappings":"AAMO,MAAM,MAAM;AAEZ,MAAM,OAAO;AAIb,MAAM,cAAc;AAEpB,MAAM,iBAAiB;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/constants.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-dollhouse-view 常量(标签、事件名、CSS 变量)\n */\n\nimport { ViewMode } from '@/enum/view.mode'\n\nexport const TAG = 'lit-switch-dollhouse-view' as const\n\nexport const VIEW = ViewMode.Dollhouse as const\n\nexport const ICON_CSS_VAR = '--lit-mode-dollhouse-icon' as const\n\nexport const CLICK_EVENT = 'lit-switch-dollhouse-click' as const\n\nexport const COMPLETE_EVENT = 'lit-switch-dollhouse-complete' as const\n"],"names":[],"mappings":";AAQO,MAAM,MAAM;AAEZ,MAAM,OAAO,SAAS;AAItB,MAAM,cAAc;AAEpB,MAAM,iBAAiB;"}
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/events.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-dollhouse-view 自定义事件派发\n */\n\nimport { CLICK_EVENT, COMPLETE_EVENT, VIEW } from './constants.js'\r\n\r\nexport function dispatchClick(host: HTMLElement, originalEvent: Event) {\r\n\r\n host.dispatchEvent(new CustomEvent(CLICK_EVENT, {\r\n bubbles: true,\r\n composed: true,\r\n detail: {\r\n view: VIEW,\r\n originalEvent,\r\n },\r\n }))\r\n\r\n}\r\n\r\nexport function dispatchComplete(host: HTMLElement, originalEvent: Event) {\r\n\r\n host.dispatchEvent(new CustomEvent(COMPLETE_EVENT, {\r\n bubbles: true,\r\n composed: true,\r\n detail: {\r\n view: VIEW,\r\n originalEvent,\r\n },\r\n }))\r\n\r\n}\r\n"],"names":[],"mappings":";AAQO,SAAS,cAAc,MAAmB,eAAsB;AAErE,OAAK,cAAc,IAAI,YAAY,aAAa;AAAA,IAC9C,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IAAA;AAAA,EACF,CACD,CAAC;AAEJ;AAEO,SAAS,iBAAiB,MAAmB,eAAsB;AAExE,OAAK,cAAc,IAAI,YAAY,gBAAgB;AAAA,IACjD,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IAAA;AAAA,EACF,CACD,CAAC;AAEJ;"}
1
+ {"version":3,"file":"events.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/events.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 { CLICK_EVENT, COMPLETE_EVENT, VIEW } from './constants.js'\r\n\r\nexport function dispatchClick(host: HTMLElement, originalEvent: Event) {\r\n\r\n host.dispatchEvent(new CustomEvent(CLICK_EVENT, {\r\n bubbles: true,\r\n composed: true,\r\n detail: {\r\n view: VIEW,\r\n originalEvent,\r\n },\r\n }))\r\n\r\n}\r\n\r\nexport function dispatchComplete(host: HTMLElement, originalEvent: Event) {\r\n\r\n host.dispatchEvent(new CustomEvent(COMPLETE_EVENT, {\r\n bubbles: true,\r\n composed: true,\r\n detail: {\r\n view: VIEW,\r\n originalEvent,\r\n },\r\n }))\r\n\r\n}"],"names":[],"mappings":";AAQO,SAAS,cAAc,MAAmB,eAAsB;AAErE,OAAK,cAAc,IAAI,YAAY,aAAa;AAAA,IAC9C,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IAAA;AAAA,EACF,CACD,CAAC;AAEJ;AAEO,SAAS,iBAAiB,MAAmB,eAAsB;AAExE,OAAK,cAAc,IAAI,YAAY,gBAAgB;AAAA,IACjD,SAAS;AAAA,IACT,UAAU;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IAAA;AAAA,EACF,CACD,CAAC;AAEJ;"}
@@ -1,14 +1,49 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, PropertyValues } from 'lit';
2
2
  import { TAG } from './constants.js';
3
- /** 切换到 dollhouse 视图;qspace 须由宿主通过 :qspace 传入;active 时隐藏 */
3
+ /** 切换到 dollhouse 视图;qspace 须由宿主通过 :qspace 传入 */
4
4
  export declare class LitSwitchDollhouseView extends LitElement {
5
+ /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */
5
6
  qspace: any;
7
+ /**
8
+ * 是否允许点击;默认 false,场景就绪后由宿主设为 true
9
+ * HTML: button-enabled / Vue: :button-enabled
10
+ */
6
11
  buttonEnabled: boolean;
7
- active: boolean;
8
- switching: 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;
9
20
  static styles: import("lit").CSSResult;
10
21
  private _onClick;
22
+ private _onViewModeChange;
23
+ /**
24
+ * 渲染模板
25
+ */
11
26
  render(): import("lit-html").TemplateResult;
27
+ /**
28
+ * 组件连接生命周期
29
+ */
30
+ connectedCallback(): void;
31
+ /**
32
+ * 组件断开生命周期
33
+ */
34
+ disconnectedCallback(): void;
35
+ /**
36
+ * 第一次更新
37
+ */
38
+ firstUpdated(changed: Map<string, unknown>): void;
39
+ /**
40
+ * 组件更新
41
+ */
42
+ updated(changed: Map<string, unknown>): void;
43
+ /**
44
+ * 将要更新
45
+ */
46
+ protected willUpdate(_changedProperties: PropertyValues): void;
12
47
  }
13
48
  declare global {
14
49
  interface HTMLElementTagNameMap {
@@ -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,MAAM,KAAK,CAAA;AAGhC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAMpC,2DAA2D;AAC3D,qBACa,sBAAuB,SAAQ,UAAU;IAGpD,MAAM,EAAE,GAAG,CAAO;IAQlB,aAAa,UAAQ;IAGrB,MAAM,UAAQ;IAGd,SAAS,UAAQ;IAEjB,MAAM,CAAC,MAAM,0BAAS;IAEtB,OAAO,CAAC,QAAQ,CAIf;IAED,MAAM;CAMP;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,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,8 +1,8 @@
1
1
  import { LitElement } from "lit";
2
- import { property } from "lit/decorators.js";
2
+ import { property, state } from "lit/decorators.js";
3
3
  import { safeCustomElement } from "../../../utils/define-lit-element.js";
4
4
  import { TAG } from "./constants.js";
5
- import { handleDollhouseClick } from "./interaction.js";
5
+ import { handleDollhouseClick, 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";
@@ -21,15 +21,68 @@ let LitSwitchDollhouseView = class extends LitElement {
21
21
  super(...arguments);
22
22
  this.qspace = null;
23
23
  this.buttonEnabled = false;
24
- this.active = false;
25
- this.switching = false;
24
+ this._switching = false;
25
+ this._isCurrentView = false;
26
26
  this._onClick = (e) => {
27
27
  handleDollhouseClick(this, e);
28
28
  };
29
+ this._onViewModeChange = (mode) => {
30
+ handelViewModeChange(this, mode);
31
+ };
32
+ }
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;
29
46
  }
47
+ /**
48
+ * 渲染模板
49
+ */
30
50
  render() {
31
51
  return renderDollhouseView(this._onClick);
32
52
  }
53
+ /**
54
+ * 组件连接生命周期
55
+ */
56
+ connectedCallback() {
57
+ this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
58
+ super.connectedCallback();
59
+ }
60
+ /**
61
+ * 组件断开生命周期
62
+ */
63
+ disconnectedCallback() {
64
+ this.setSwitching(false);
65
+ this.setCurrentView(false);
66
+ this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
67
+ super.disconnectedCallback();
68
+ }
69
+ /**
70
+ * 第一次更新
71
+ */
72
+ firstUpdated(changed) {
73
+ super.firstUpdated(changed);
74
+ }
75
+ /**
76
+ * 组件更新
77
+ */
78
+ updated(changed) {
79
+ super.updated(changed);
80
+ }
81
+ /**
82
+ * 将要更新
83
+ */
84
+ willUpdate(_changedProperties) {
85
+ }
33
86
  };
34
87
  LitSwitchDollhouseView.styles = styles;
35
88
  __decorateClass([
@@ -44,11 +97,11 @@ __decorateClass([
44
97
  })
45
98
  ], LitSwitchDollhouseView.prototype, "buttonEnabled", 2);
46
99
  __decorateClass([
47
- property({ type: Boolean, reflect: true })
48
- ], LitSwitchDollhouseView.prototype, "active", 2);
100
+ state()
101
+ ], LitSwitchDollhouseView.prototype, "_switching", 2);
49
102
  __decorateClass([
50
- property({ type: Boolean, reflect: true })
51
- ], LitSwitchDollhouseView.prototype, "switching", 2);
103
+ state()
104
+ ], LitSwitchDollhouseView.prototype, "_isCurrentView", 2);
52
105
  LitSwitchDollhouseView = __decorateClass([
53
106
  safeCustomElement(TAG)
54
107
  ], LitSwitchDollhouseView);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/common/lit-switch-dollhouse-view/index.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-dollhouse-view 组件注册与属性声明\n */\n\nimport { LitElement } 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 { handleDollhouseClick } 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 传入;active 时隐藏 */\r\n@safeCustomElement(TAG)\r\nexport class LitSwitchDollhouseView extends LitElement {\r\n\r\n @property({ attribute: false })\r\n qspace: any = null\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 @property({ type: Boolean, reflect: true })\r\n active = false\r\n\r\n @property({ type: Boolean, reflect: true })\r\n switching = false\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 render() {\r\n\r\n return renderDollhouseView(this._onClick)\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;AAGL,SAAA,SAAc;AAQd,SAAA,gBAAgB;AAGhB,SAAA,SAAS;AAGT,SAAA,YAAY;AAIZ,SAAQ,WAAW,CAAC,MAAa;AAE/B,2BAAqB,MAAM,CAAC;AAAA,IAE9B;AAAA,EAAA;AAAA,EAEA,SAAS;AAEP,WAAO,oBAAoB,KAAK,QAAQ;AAAA,EAE1C;AAEF;AAjCa,uBAmBJ,SAAS;AAhBhB,gBAAA;AAAA,EADC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GAFnB,uBAGX,WAAA,UAAA,CAAA;AAQA,gBAAA;AAAA,EANC,SAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,CACZ;AAAA,GAVU,uBAWX,WAAA,iBAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAb/B,uBAcX,WAAA,UAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAhB/B,uBAiBX,WAAA,aAAA,CAAA;AAjBW,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, 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,7 +1,11 @@
1
1
  export type DollhouseViewHost = HTMLElement & {
2
2
  qspace: any;
3
3
  buttonEnabled: boolean;
4
- switching: boolean;
4
+ setSwitching: (value: boolean) => void;
5
+ isSwitching: () => boolean;
6
+ setCurrentView: (value: boolean) => void;
7
+ isCurrentView: () => boolean;
5
8
  };
6
9
  export declare function handleDollhouseClick(host: DollhouseViewHost, e: Event): void;
10
+ export declare function handelViewModeChange(host: DollhouseViewHost, mode: string): void;
7
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":"AASA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAE5C,MAAM,EAAE,GAAG,CAAA;IACX,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,OAAO,CAAA;CAEnB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK,QAyBrE"}
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,7 +1,8 @@
1
+ import { ViewMode } from "../../../enum/view.mode.js";
1
2
  import { dispatchClick, dispatchComplete } from "./events.js";
2
3
  import { turnToDollhouseView } from "./logic.js";
3
4
  function handleDollhouseClick(host, e) {
4
- if (!host.buttonEnabled || host.switching) {
5
+ if (!host.buttonEnabled || host.isSwitching() || host.isCurrentView()) {
5
6
  e.preventDefault();
6
7
  e.stopPropagation();
7
8
  return;
@@ -10,11 +11,34 @@ function handleDollhouseClick(host, e) {
10
11
  if (!host.qspace) {
11
12
  return;
12
13
  }
14
+ host.setSwitching(true);
13
15
  turnToDollhouseView(host.qspace, () => {
14
16
  dispatchComplete(host, e);
17
+ host.setSwitching(false);
18
+ host.setCurrentView(true);
15
19
  });
16
20
  }
21
+ 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
+ }
39
+ }
17
40
  export {
41
+ handelViewModeChange,
18
42
  handleDollhouseClick
19
43
  };
20
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 { dispatchClick, dispatchComplete } from './events.js'\r\nimport { turnToDollhouseView } from './logic.js'\r\n\r\nexport type DollhouseViewHost = HTMLElement & {\r\n\r\n qspace: any\r\n buttonEnabled: boolean\r\n switching: boolean\r\n\r\n}\r\n\r\nexport function handleDollhouseClick(host: DollhouseViewHost, e: Event) {\r\n\r\n if (!host.buttonEnabled || host.switching) {\r\n\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n return\r\n\r\n }\r\n\r\n dispatchClick(host, e)\r\n\r\n if (!host.qspace) {\r\n\r\n return\r\n\r\n }\r\n\r\n turnToDollhouseView(host.qspace, () => {\r\n\r\n dispatchComplete(host, e)\r\n\r\n })\r\n\r\n}\r\n"],"names":[],"mappings":";;AAiBO,SAAS,qBAAqB,MAAyB,GAAU;AAEtE,MAAI,CAAC,KAAK,iBAAiB,KAAK,WAAW;AAEzC,MAAE,eAAA;AACF,MAAE,gBAAA;AAEF;AAAA,EAEF;AAEA,gBAAc,MAAM,CAAC;AAErB,MAAI,CAAC,KAAK,QAAQ;AAEhB;AAAA,EAEF;AAEA,sBAAoB,KAAK,QAAQ,MAAM;AAErC,qBAAiB,MAAM,CAAC;AAAA,EAE1B,CAAC;AAEH;"}
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 +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,yBAkClB,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,yBAgClB,CAAA"}
@@ -5,10 +5,6 @@ const styles = css`
5
5
  display: inline-block;
6
6
  }
7
7
 
8
- :host([active]) {
9
- display: none;
10
- }
11
-
12
8
  .mode-item {
13
9
  box-sizing: border-box;
14
10
  width: 26px;
@@ -25,13 +21,15 @@ const styles = css`
25
21
  }
26
22
 
27
23
  :host(:not([button-enabled])),
28
- :host([switching]) {
24
+ :host([switching]),
25
+ :host([current-view]) {
29
26
  pointer-events: none;
30
27
  opacity: 0.5;
31
28
  }
32
29
 
33
30
  :host(:not([button-enabled])) .mode-item,
34
- :host([switching]) .mode-item {
31
+ :host([switching]) .mode-item,
32
+ :host([current-view]) .mode-item {
35
33
  cursor: not-allowed;
36
34
  }
37
35
  `;
@@ -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 :host([active]) {\r\n display: none;\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 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 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;AAAA;AAAA;AAAA;AAAA,2DAqBqC,UAAU,OAAO,CAAC;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([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 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/constants.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-floorplan-view 常量(标签、事件名、CSS 变量)\n */\n\nexport const TAG = 'lit-switch-floorplan-view' as const\r\n\r\nexport const VIEW = 'floorplan' as const\r\n\r\nexport const ICON_CSS_VAR = '--lit-mode-floorplan-icon' as const\r\n\r\nexport const CLICK_EVENT = 'lit-switch-floorplan-click' as const\r\n\r\nexport const COMPLETE_EVENT = 'lit-switch-floorplan-complete' as const\r\n"],"names":[],"mappings":"AAMO,MAAM,MAAM;AAEZ,MAAM,OAAO;AAIb,MAAM,cAAc;AAEpB,MAAM,iBAAiB;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/constants.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-floorplan-view 常量(标签、事件名、CSS 变量)\n */\n\nexport const TAG = 'lit-switch-floorplan-view' as const\n\nexport const VIEW = 'floorplan' as const\n\nexport const ICON_CSS_VAR = '--lit-mode-floorplan-icon' as const\n\nexport const CLICK_EVENT = 'lit-switch-floorplan-click' as const\n\nexport const COMPLETE_EVENT = 'lit-switch-floorplan-complete' as const\n"],"names":[],"mappings":"AAMO,MAAM,MAAM;AAEZ,MAAM,OAAO;AAIb,MAAM,cAAc;AAEpB,MAAM,iBAAiB;"}
@@ -1,14 +1,49 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, PropertyValues } from 'lit';
2
2
  import { TAG } from './constants.js';
3
- /** 切换到 floorplan 视图;qspace 须由宿主通过 :qspace 传入;active 时隐藏 */
3
+ /** 切换到 floorplan 视图;qspace 须由宿主通过 :qspace 传入 */
4
4
  export declare class LitSwitchFloorplanView extends LitElement {
5
+ /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */
5
6
  qspace: any;
7
+ /**
8
+ * 是否允许点击;默认 false,场景就绪后由宿主设为 true
9
+ * HTML: button-enabled / Vue: :button-enabled
10
+ */
6
11
  buttonEnabled: boolean;
7
- active: boolean;
8
- switching: 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;
9
20
  static styles: import("lit").CSSResult;
10
21
  private _onClick;
22
+ private _onViewModeChange;
23
+ /**
24
+ * 渲染模板
25
+ */
11
26
  render(): import("lit-html").TemplateResult;
27
+ /**
28
+ * 组件连接生命周期
29
+ */
30
+ connectedCallback(): void;
31
+ /**
32
+ * 组件断开生命周期
33
+ */
34
+ disconnectedCallback(): void;
35
+ /**
36
+ * 第一次更新
37
+ */
38
+ firstUpdated(changed: Map<string, unknown>): void;
39
+ /**
40
+ * 组件更新
41
+ */
42
+ updated(changed: Map<string, unknown>): void;
43
+ /**
44
+ * 将要更新
45
+ */
46
+ protected willUpdate(_changedProperties: PropertyValues): void;
12
47
  }
13
48
  declare global {
14
49
  interface HTMLElementTagNameMap {
@@ -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,MAAM,KAAK,CAAA;AAGhC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAMpC,2DAA2D;AAC3D,qBACa,sBAAuB,SAAQ,UAAU;IAGpD,MAAM,EAAE,GAAG,CAAO;IAQlB,aAAa,UAAQ;IAGrB,MAAM,UAAQ;IAGd,SAAS,UAAQ;IAEjB,MAAM,CAAC,MAAM,0BAAS;IAEtB,OAAO,CAAC,QAAQ,CAIf;IAED,MAAM;CAMP;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,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,8 +1,8 @@
1
1
  import { LitElement } from "lit";
2
- import { property } from "lit/decorators.js";
2
+ import { property, state } from "lit/decorators.js";
3
3
  import { safeCustomElement } from "../../../utils/define-lit-element.js";
4
4
  import { TAG } from "./constants.js";
5
- import { handleFloorplanClick } from "./interaction.js";
5
+ import { handleFloorplanClick, 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";
@@ -21,15 +21,68 @@ let LitSwitchFloorplanView = class extends LitElement {
21
21
  super(...arguments);
22
22
  this.qspace = null;
23
23
  this.buttonEnabled = false;
24
- this.active = false;
25
- this.switching = false;
24
+ this._switching = false;
25
+ this._isCurrentView = false;
26
26
  this._onClick = (e) => {
27
27
  handleFloorplanClick(this, e);
28
28
  };
29
+ this._onViewModeChange = (mode) => {
30
+ handelViewModeChange(this, mode);
31
+ };
32
+ }
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;
29
46
  }
47
+ /**
48
+ * 渲染模板
49
+ */
30
50
  render() {
31
51
  return renderFloorplanView(this._onClick);
32
52
  }
53
+ /**
54
+ * 组件连接生命周期
55
+ */
56
+ connectedCallback() {
57
+ this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
58
+ super.connectedCallback();
59
+ }
60
+ /**
61
+ * 组件断开生命周期
62
+ */
63
+ disconnectedCallback() {
64
+ this.setSwitching(false);
65
+ this.setCurrentView(false);
66
+ this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
67
+ super.disconnectedCallback();
68
+ }
69
+ /**
70
+ * 第一次更新
71
+ */
72
+ firstUpdated(changed) {
73
+ super.firstUpdated(changed);
74
+ }
75
+ /**
76
+ * 组件更新
77
+ */
78
+ updated(changed) {
79
+ super.updated(changed);
80
+ }
81
+ /**
82
+ * 将要更新
83
+ */
84
+ willUpdate(_changedProperties) {
85
+ }
33
86
  };
34
87
  LitSwitchFloorplanView.styles = styles;
35
88
  __decorateClass([
@@ -44,11 +97,11 @@ __decorateClass([
44
97
  })
45
98
  ], LitSwitchFloorplanView.prototype, "buttonEnabled", 2);
46
99
  __decorateClass([
47
- property({ type: Boolean, reflect: true })
48
- ], LitSwitchFloorplanView.prototype, "active", 2);
100
+ state()
101
+ ], LitSwitchFloorplanView.prototype, "_switching", 2);
49
102
  __decorateClass([
50
- property({ type: Boolean, reflect: true })
51
- ], LitSwitchFloorplanView.prototype, "switching", 2);
103
+ state()
104
+ ], LitSwitchFloorplanView.prototype, "_isCurrentView", 2);
52
105
  LitSwitchFloorplanView = __decorateClass([
53
106
  safeCustomElement(TAG)
54
107
  ], 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 } 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 { handleFloorplanClick } from './interaction.js'\r\nimport { booleanAttr } from './properties.js'\r\nimport { styles } from './styles.js'\r\nimport { renderFloorplanView } from './template.js'\r\n\r\n/** 切换到 floorplan 视图;qspace 须由宿主通过 :qspace 传入;active 时隐藏 */\r\n@safeCustomElement(TAG)\r\nexport class LitSwitchFloorplanView extends LitElement {\r\n\r\n @property({ attribute: false })\r\n qspace: any = null\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 @property({ type: Boolean, reflect: true })\r\n active = false\r\n\r\n @property({ type: Boolean, reflect: true })\r\n switching = false\r\n\r\n static styles = styles\r\n\r\n private _onClick = (e: Event) => {\r\n\r\n handleFloorplanClick(this, e)\r\n\r\n }\r\n\r\n render() {\r\n\r\n return renderFloorplanView(this._onClick)\r\n\r\n }\r\n\r\n}\r\n\r\ndeclare global {\r\n\r\n interface HTMLElementTagNameMap {\r\n\r\n [TAG]: LitSwitchFloorplanView\r\n\r\n }\r\n\r\n}\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAiBO,IAAM,yBAAN,cAAqC,WAAW;AAAA,EAAhD,cAAA;AAAA,UAAA,GAAA,SAAA;AAGL,SAAA,SAAc;AAQd,SAAA,gBAAgB;AAGhB,SAAA,SAAS;AAGT,SAAA,YAAY;AAIZ,SAAQ,WAAW,CAAC,MAAa;AAE/B,2BAAqB,MAAM,CAAC;AAAA,IAE9B;AAAA,EAAA;AAAA,EAEA,SAAS;AAEP,WAAO,oBAAoB,KAAK,QAAQ;AAAA,EAE1C;AAEF;AAjCa,uBAmBJ,SAAS;AAhBhB,gBAAA;AAAA,EADC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GAFnB,uBAGX,WAAA,UAAA,CAAA;AAQA,gBAAA;AAAA,EANC,SAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,CACZ;AAAA,GAVU,uBAWX,WAAA,iBAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAb/B,uBAcX,WAAA,UAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAhB/B,uBAiBX,WAAA,aAAA,CAAA;AAjBW,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, 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,7 +1,11 @@
1
1
  export type FloorplanViewHost = HTMLElement & {
2
2
  qspace: any;
3
3
  buttonEnabled: boolean;
4
- switching: boolean;
4
+ setSwitching: (value: boolean) => void;
5
+ isSwitching: () => boolean;
6
+ setCurrentView: (value: boolean) => void;
7
+ isCurrentView: () => boolean;
5
8
  };
6
9
  export declare function handleFloorplanClick(host: FloorplanViewHost, e: Event): void;
10
+ export declare function handelViewModeChange(host: FloorplanViewHost, mode: string): void;
7
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":"AASA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAE5C,MAAM,EAAE,GAAG,CAAA;IACX,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,OAAO,CAAA;CAEnB,CAAA;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK,QAyBrE"}
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,7 +1,8 @@
1
+ import { ViewMode } from "../../../enum/view.mode.js";
1
2
  import { dispatchClick, dispatchComplete } from "./events.js";
2
3
  import { turnToFloorplanView } from "./logic.js";
3
4
  function handleFloorplanClick(host, e) {
4
- if (!host.buttonEnabled || host.switching) {
5
+ if (!host.buttonEnabled || host.isSwitching() || host.isCurrentView()) {
5
6
  e.preventDefault();
6
7
  e.stopPropagation();
7
8
  return;
@@ -10,11 +11,34 @@ function handleFloorplanClick(host, e) {
10
11
  if (!host.qspace) {
11
12
  return;
12
13
  }
14
+ host.setSwitching(true);
13
15
  turnToFloorplanView(host.qspace, () => {
14
16
  dispatchComplete(host, e);
17
+ host.setSwitching(false);
18
+ host.setCurrentView(true);
15
19
  });
16
20
  }
21
+ 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
+ }
39
+ }
17
40
  export {
41
+ handelViewModeChange,
18
42
  handleFloorplanClick
19
43
  };
20
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 { dispatchClick, dispatchComplete } from './events.js'\r\nimport { turnToFloorplanView } from './logic.js'\r\n\r\nexport type FloorplanViewHost = HTMLElement & {\r\n\r\n qspace: any\r\n buttonEnabled: boolean\r\n switching: boolean\r\n\r\n}\r\n\r\nexport function handleFloorplanClick(host: FloorplanViewHost, e: Event) {\r\n\r\n if (!host.buttonEnabled || host.switching) {\r\n\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n return\r\n\r\n }\r\n\r\n dispatchClick(host, e)\r\n\r\n if (!host.qspace) {\r\n\r\n return\r\n\r\n }\r\n\r\n turnToFloorplanView(host.qspace, () => {\r\n\r\n dispatchComplete(host, e)\r\n\r\n })\r\n\r\n}\r\n"],"names":[],"mappings":";;AAiBO,SAAS,qBAAqB,MAAyB,GAAU;AAEtE,MAAI,CAAC,KAAK,iBAAiB,KAAK,WAAW;AAEzC,MAAE,eAAA;AACF,MAAE,gBAAA;AAEF;AAAA,EAEF;AAEA,gBAAc,MAAM,CAAC;AAErB,MAAI,CAAC,KAAK,QAAQ;AAEhB;AAAA,EAEF;AAEA,sBAAoB,KAAK,QAAQ,MAAM;AAErC,qBAAiB,MAAM,CAAC;AAAA,EAE1B,CAAC;AAEH;"}
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 +1 @@
1
- {"version":3,"file":"logic.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/logic.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-floorplan-view qspace 视图切换逻辑\n */\n\nexport function turnToFloorplanView(qspace: any, complete: () => void) {\r\n\r\n qspace.view.turnToFloorplan({ complete })\r\n\r\n}\r\n"],"names":[],"mappings":"AAMO,SAAS,oBAAoB,QAAa,UAAsB;AAErE,SAAO,KAAK,gBAAgB,EAAE,SAAA,CAAU;AAE1C;"}
1
+ {"version":3,"file":"logic.js","sources":["../../../../src/components/common/lit-switch-floorplan-view/logic.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-floorplan-view qspace 视图切换逻辑\n */\n\nexport function turnToFloorplanView(qspace: any, complete: () => void) {\n\n qspace.view.turnToFloorplan({ complete })\n\n}\n"],"names":[],"mappings":"AAMO,SAAS,oBAAoB,QAAa,UAAsB;AAErE,SAAO,KAAK,gBAAgB,EAAE,SAAA,CAAU;AAE1C;"}
@@ -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,yBAkClB,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,yBAgClB,CAAA"}
@@ -5,10 +5,6 @@ const styles = css`
5
5
  display: inline-block;
6
6
  }
7
7
 
8
- :host([active]) {
9
- display: none;
10
- }
11
-
12
8
  .mode-item {
13
9
  box-sizing: border-box;
14
10
  width: 26px;
@@ -25,13 +21,15 @@ const styles = css`
25
21
  }
26
22
 
27
23
  :host(:not([button-enabled])),
28
- :host([switching]) {
24
+ :host([switching]),
25
+ :host([current-view]) {
29
26
  pointer-events: none;
30
27
  opacity: 0.5;
31
28
  }
32
29
 
33
30
  :host(:not([button-enabled])) .mode-item,
34
- :host([switching]) .mode-item {
31
+ :host([switching]) .mode-item,
32
+ :host([current-view]) .mode-item {
35
33
  cursor: not-allowed;
36
34
  }
37
35
  `;
@@ -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 :host([active]) {\r\n display: none;\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 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 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;AAAA;AAAA;AAAA;AAAA,2DAqBqC,UAAU,OAAO,CAAC;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([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 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/components/common/lit-switch-panorama-view/constants.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-panorama-view 常量(标签、事件名、CSS 变量)\n */\n\nexport const TAG = 'lit-switch-panorama-view' as const\r\n\r\nexport const VIEW = 'panorama' as const\r\n\r\nexport const ICON_CSS_VAR = '--lit-mode-panorama-icon' as const\r\n\r\nexport const CLICK_EVENT = 'lit-switch-panorama-click' as const\r\n\r\nexport const COMPLETE_EVENT = 'lit-switch-panorama-complete' as const\r\n"],"names":[],"mappings":"AAMO,MAAM,MAAM;AAEZ,MAAM,OAAO;AAIb,MAAM,cAAc;AAEpB,MAAM,iBAAiB;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/components/common/lit-switch-panorama-view/constants.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-panorama-view 常量(标签、事件名、CSS 变量)\n */\n\nexport const TAG = 'lit-switch-panorama-view' as const\n\nexport const VIEW = 'panorama' as const\n\nexport const ICON_CSS_VAR = '--lit-mode-panorama-icon' as const\n\nexport const CLICK_EVENT = 'lit-switch-panorama-click' as const\n\nexport const COMPLETE_EVENT = 'lit-switch-panorama-complete' as const\n"],"names":[],"mappings":"AAMO,MAAM,MAAM;AAEZ,MAAM,OAAO;AAIb,MAAM,cAAc;AAEpB,MAAM,iBAAiB;"}
@@ -1,14 +1,55 @@
1
- import { LitElement } from 'lit';
1
+ import { LitElement, PropertyValues } from 'lit';
2
2
  import { TAG } from './constants.js';
3
- /** 切换到 panorama 视图;qspace 须由宿主通过 :qspace 传入;active 时隐藏 */
3
+ import { type PanoramaSwitchOption } from './properties.js';
4
+ /** 切换到 panorama 视图;qspace 须由宿主通过 :qspace 传入 */
4
5
  export declare class LitSwitchPanoramaView extends LitElement {
6
+ /** qspace SDK 实例;仅 JS 属性绑定,不映射 HTML attribute(对象无法序列化) */
5
7
  qspace: any;
8
+ /**
9
+ * 是否允许点击;默认 false,场景就绪后由宿主设为 true
10
+ * HTML: button-enabled / Vue: :button-enabled
11
+ */
6
12
  buttonEnabled: boolean;
7
- active: boolean;
8
- switching: boolean;
13
+ /**
14
+ * 切换全景视图参数;仅 JS 属性绑定
15
+ * Vue: :option="{ locationId, quaternion }"
16
+ */
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;
9
26
  static styles: import("lit").CSSResult;
10
27
  private _onClick;
28
+ private _onViewModeChange;
29
+ /**
30
+ * 渲染模板
31
+ */
11
32
  render(): import("lit-html").TemplateResult;
33
+ /**
34
+ * 组件连接生命周期
35
+ */
36
+ connectedCallback(): void;
37
+ /**
38
+ * 组件断开生命周期
39
+ */
40
+ disconnectedCallback(): void;
41
+ /**
42
+ * 第一次更新
43
+ */
44
+ firstUpdated(changed: Map<string, unknown>): void;
45
+ /**
46
+ * 组件更新
47
+ */
48
+ updated(changed: Map<string, unknown>): void;
49
+ /**
50
+ * 将要更新
51
+ */
52
+ protected willUpdate(_changedProperties: PropertyValues): void;
12
53
  }
13
54
  declare global {
14
55
  interface HTMLElementTagNameMap {
@@ -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,MAAM,KAAK,CAAA;AAGhC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAMpC,0DAA0D;AAC1D,qBACa,qBAAsB,SAAQ,UAAU;IAGnD,MAAM,EAAE,GAAG,CAAO;IAQlB,aAAa,UAAQ;IAGrB,MAAM,UAAQ;IAGd,SAAS,UAAQ;IAEjB,MAAM,CAAC,MAAM,0BAAS;IAEtB,OAAO,CAAC,QAAQ,CAIf;IAED,MAAM;CAMP;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,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,8 +1,8 @@
1
1
  import { LitElement } from "lit";
2
- import { property } from "lit/decorators.js";
2
+ import { property, state } from "lit/decorators.js";
3
3
  import { safeCustomElement } from "../../../utils/define-lit-element.js";
4
4
  import { TAG } from "./constants.js";
5
- import { handlePanoramaClick } from "./interaction.js";
5
+ import { handlePanoramaClick, 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";
@@ -21,15 +21,69 @@ let LitSwitchPanoramaView = class extends LitElement {
21
21
  super(...arguments);
22
22
  this.qspace = null;
23
23
  this.buttonEnabled = false;
24
- this.active = false;
25
- this.switching = false;
24
+ this.option = null;
25
+ this._switching = false;
26
+ this._isCurrentView = false;
26
27
  this._onClick = (e) => {
27
28
  handlePanoramaClick(this, e);
28
29
  };
30
+ this._onViewModeChange = (mode) => {
31
+ handelViewModeChange(this, mode);
32
+ };
33
+ }
34
+ setSwitching(value) {
35
+ this._switching = value;
36
+ this.toggleAttribute("switching", value);
37
+ }
38
+ isSwitching() {
39
+ return this._switching;
29
40
  }
41
+ setCurrentView(value) {
42
+ this._isCurrentView = value;
43
+ this.toggleAttribute("current-view", value);
44
+ }
45
+ isCurrentView() {
46
+ return this._isCurrentView;
47
+ }
48
+ /**
49
+ * 渲染模板
50
+ */
30
51
  render() {
31
52
  return renderPanoramaView(this._onClick);
32
53
  }
54
+ /**
55
+ * 组件连接生命周期
56
+ */
57
+ connectedCallback() {
58
+ this.qspace.view.addEventListener("mode.change", this._onViewModeChange);
59
+ super.connectedCallback();
60
+ }
61
+ /**
62
+ * 组件断开生命周期
63
+ */
64
+ disconnectedCallback() {
65
+ this.setSwitching(false);
66
+ this.setCurrentView(false);
67
+ this.qspace.view.removeEventListener("mode.change", this._onViewModeChange);
68
+ super.disconnectedCallback();
69
+ }
70
+ /**
71
+ * 第一次更新
72
+ */
73
+ firstUpdated(changed) {
74
+ super.firstUpdated(changed);
75
+ }
76
+ /**
77
+ * 组件更新
78
+ */
79
+ updated(changed) {
80
+ super.updated(changed);
81
+ }
82
+ /**
83
+ * 将要更新
84
+ */
85
+ willUpdate(_changedProperties) {
86
+ }
33
87
  };
34
88
  LitSwitchPanoramaView.styles = styles;
35
89
  __decorateClass([
@@ -44,11 +98,14 @@ __decorateClass([
44
98
  })
45
99
  ], LitSwitchPanoramaView.prototype, "buttonEnabled", 2);
46
100
  __decorateClass([
47
- property({ type: Boolean, reflect: true })
48
- ], LitSwitchPanoramaView.prototype, "active", 2);
101
+ property({ attribute: false })
102
+ ], LitSwitchPanoramaView.prototype, "option", 2);
103
+ __decorateClass([
104
+ state()
105
+ ], LitSwitchPanoramaView.prototype, "_switching", 2);
49
106
  __decorateClass([
50
- property({ type: Boolean, reflect: true })
51
- ], LitSwitchPanoramaView.prototype, "switching", 2);
107
+ state()
108
+ ], LitSwitchPanoramaView.prototype, "_isCurrentView", 2);
52
109
  LitSwitchPanoramaView = __decorateClass([
53
110
  safeCustomElement(TAG)
54
111
  ], 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 } 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 } from './interaction.js'\r\nimport { booleanAttr } from './properties.js'\r\nimport { styles } from './styles.js'\r\nimport { renderPanoramaView } from './template.js'\r\n\r\n/** 切换到 panorama 视图;qspace 须由宿主通过 :qspace 传入;active 时隐藏 */\r\n@safeCustomElement(TAG)\r\nexport class LitSwitchPanoramaView extends LitElement {\r\n\r\n @property({ attribute: false })\r\n qspace: any = null\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 @property({ type: Boolean, reflect: true })\r\n active = false\r\n\r\n @property({ type: Boolean, reflect: true })\r\n switching = false\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 render() {\r\n\r\n return renderPanoramaView(this._onClick)\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;AAGL,SAAA,SAAc;AAQd,SAAA,gBAAgB;AAGhB,SAAA,SAAS;AAGT,SAAA,YAAY;AAIZ,SAAQ,WAAW,CAAC,MAAa;AAE/B,0BAAoB,MAAM,CAAC;AAAA,IAE7B;AAAA,EAAA;AAAA,EAEA,SAAS;AAEP,WAAO,mBAAmB,KAAK,QAAQ;AAAA,EAEzC;AAEF;AAjCa,sBAmBJ,SAAS;AAhBhB,gBAAA;AAAA,EADC,SAAS,EAAE,WAAW,MAAA,CAAO;AAAA,GAFnB,sBAGX,WAAA,UAAA,CAAA;AAQA,gBAAA;AAAA,EANC,SAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,CACZ;AAAA,GAVU,sBAWX,WAAA,iBAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAb/B,sBAcX,WAAA,UAAA,CAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,SAAS,SAAS,MAAM;AAAA,GAhB/B,sBAiBX,WAAA,aAAA,CAAA;AAjBW,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, 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,8 +1,14 @@
1
+ import type { PanoramaSwitchOption } from './properties.js';
1
2
  export type PanoramaViewHost = HTMLElement & {
2
3
  qspace: any;
4
+ option: PanoramaSwitchOption | null;
3
5
  buttonEnabled: boolean;
4
- switching: boolean;
6
+ setSwitching: (value: boolean) => void;
7
+ isSwitching: () => boolean;
8
+ setCurrentView: (value: boolean) => void;
9
+ isCurrentView: () => boolean;
5
10
  };
6
11
  /** 点击交互:校验 → 派发 click → 执行 qspace 切换 → 派发 complete */
7
12
  export declare function handlePanoramaClick(host: PanoramaViewHost, e: Event): void;
13
+ export declare function handelViewModeChange(host: PanoramaViewHost, mode: string): void;
8
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,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAE3C,MAAM,EAAE,GAAG,CAAA;IACX,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,OAAO,CAAA;CAEnB,CAAA;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC,EAAE,KAAK,QAyBnE"}
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,7 +1,8 @@
1
+ import { ViewMode } from "../../../enum/view.mode.js";
1
2
  import { dispatchClick, dispatchComplete } from "./events.js";
2
3
  import { turnToPanoramaView } from "./logic.js";
3
4
  function handlePanoramaClick(host, e) {
4
- if (!host.buttonEnabled || host.switching) {
5
+ if (!host.buttonEnabled || host.isSwitching() || host.isCurrentView()) {
5
6
  e.preventDefault();
6
7
  e.stopPropagation();
7
8
  return;
@@ -10,11 +11,34 @@ function handlePanoramaClick(host, e) {
10
11
  if (!host.qspace) {
11
12
  return;
12
13
  }
13
- turnToPanoramaView(host.qspace, () => {
14
+ host.setSwitching(true);
15
+ turnToPanoramaView(host.qspace, host.option, () => {
14
16
  dispatchComplete(host, e);
17
+ host.setSwitching(false);
18
+ host.setCurrentView(true);
15
19
  });
16
20
  }
21
+ 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
+ }
39
+ }
17
40
  export {
41
+ handelViewModeChange,
18
42
  handlePanoramaClick
19
43
  };
20
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 { dispatchClick, dispatchComplete } from './events.js'\r\nimport { turnToPanoramaView } from './logic.js'\r\n\r\nexport type PanoramaViewHost = HTMLElement & {\r\n\r\n qspace: any\r\n buttonEnabled: boolean\r\n switching: boolean\r\n\r\n}\r\n\r\n/** 点击交互:校验 → 派发 click → 执行 qspace 切换 → 派发 complete */\r\nexport function handlePanoramaClick(host: PanoramaViewHost, e: Event) {\r\n\r\n if (!host.buttonEnabled || host.switching) {\r\n\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n return\r\n\r\n }\r\n\r\n dispatchClick(host, e)\r\n\r\n if (!host.qspace) {\r\n\r\n return\r\n\r\n }\r\n\r\n turnToPanoramaView(host.qspace, () => {\r\n\r\n dispatchComplete(host, e)\r\n\r\n })\r\n\r\n}\r\n"],"names":[],"mappings":";;AAkBO,SAAS,oBAAoB,MAAwB,GAAU;AAEpE,MAAI,CAAC,KAAK,iBAAiB,KAAK,WAAW;AAEzC,MAAE,eAAA;AACF,MAAE,gBAAA;AAEF;AAAA,EAEF;AAEA,gBAAc,MAAM,CAAC;AAErB,MAAI,CAAC,KAAK,QAAQ;AAEhB;AAAA,EAEF;AAEA,qBAAmB,KAAK,QAAQ,MAAM;AAEpC,qBAAiB,MAAM,CAAC;AAAA,EAE1B,CAAC;AAEH;"}
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,2 +1,3 @@
1
- export declare function turnToPanoramaView(qspace: any, complete: () => void): void;
1
+ import type { PanoramaSwitchOption } from './properties.js';
2
+ export declare function turnToPanoramaView(qspace: any, option: PanoramaSwitchOption | null, complete: () => void): void;
2
3
  //# sourceMappingURL=logic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/logic.ts"],"names":[],"mappings":"AAMA,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,IAAI,QASnE"}
1
+ {"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/logic.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAE3D,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,oBAAoB,GAAG,IAAI,EACnC,QAAQ,EAAE,MAAM,IAAI,QAkBrB"}
@@ -1,10 +1,13 @@
1
- function turnToPanoramaView(qspace, complete) {
2
- var _a, _b, _c;
3
- const locationId = (_c = (_b = (_a = qspace.model) == null ? void 0 : _a.waypoints) == null ? void 0 : _b[0]) == null ? void 0 : _c.location_id;
4
- qspace.view.turnToPanorama({
1
+ function turnToPanoramaView(qspace, option, complete) {
2
+ const locationId = option == null ? void 0 : option.locationId;
3
+ const params = {
5
4
  location_id: locationId,
6
5
  complete
7
- });
6
+ };
7
+ if (option == null ? void 0 : option.quaternion) {
8
+ params.quaternion = option.quaternion;
9
+ }
10
+ qspace.view.turnToPanorama(params);
8
11
  }
9
12
  export {
10
13
  turnToPanoramaView
@@ -1 +1 @@
1
- {"version":3,"file":"logic.js","sources":["../../../../src/components/common/lit-switch-panorama-view/logic.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-panorama-view qspace 视图切换逻辑\n */\n\nexport function turnToPanoramaView(qspace: any, complete: () => void) {\r\n\r\n const locationId = qspace.model?.waypoints?.[0]?.location_id\r\n\r\n qspace.view.turnToPanorama({\r\n location_id: locationId,\r\n complete,\r\n })\r\n\r\n}\r\n"],"names":[],"mappings":"AAMO,SAAS,mBAAmB,QAAa,UAAsB;AAA/D;AAEL,QAAM,cAAa,wBAAO,UAAP,mBAAc,cAAd,mBAA0B,OAA1B,mBAA8B;AAEjD,SAAO,KAAK,eAAe;AAAA,IACzB,aAAa;AAAA,IACb;AAAA,EAAA,CACD;AAEH;"}
1
+ {"version":3,"file":"logic.js","sources":["../../../../src/components/common/lit-switch-panorama-view/logic.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-panorama-view qspace 视图切换逻辑\r\n */\r\n\r\nimport type { PanoramaSwitchOption } from './properties.js'\r\n\r\nexport function turnToPanoramaView(\r\n qspace: any,\r\n option: PanoramaSwitchOption | null,\r\n complete: () => void,\r\n) {\r\n\r\n const locationId = option?.locationId;\r\n\r\n const params: Record<string, unknown> = {\r\n location_id: locationId,\r\n complete,\r\n }\r\n\r\n if (option?.quaternion) {\r\n\r\n params.quaternion = option.quaternion\r\n\r\n }\r\n\r\n qspace.view.turnToPanorama(params)\r\n\r\n}\r\n"],"names":[],"mappings":"AAQO,SAAS,mBACd,QACA,QACA,UACA;AAEA,QAAM,aAAa,iCAAQ;AAE3B,QAAM,SAAkC;AAAA,IACtC,aAAa;AAAA,IACb;AAAA,EAAA;AAGF,MAAI,iCAAQ,YAAY;AAEtB,WAAO,aAAa,OAAO;AAAA,EAE7B;AAEA,SAAO,KAAK,eAAe,MAAM;AAEnC;"}
@@ -1,3 +1,14 @@
1
+ export type PanoramaSwitchQuaternion = {
2
+ x: number;
3
+ y: number;
4
+ z: number;
5
+ w: number;
6
+ };
7
+ /** 切换全景视图参数;由宿主通过 :option 传入 */
8
+ export type PanoramaSwitchOption = {
9
+ locationId?: string;
10
+ quaternion?: PanoramaSwitchQuaternion;
11
+ };
1
12
  export declare const booleanAttr: {
2
13
  fromAttribute(value: string | null): boolean;
3
14
  toAttribute(value: boolean): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/properties.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW;yBACD,MAAM,GAAG,IAAI,GAAG,OAAO;uBAQzB,OAAO,GAAG,MAAM,GAAG,IAAI;CAK3C,CAAA"}
1
+ {"version":3,"file":"properties.d.ts","sourceRoot":"","sources":["../../../../src/components/common/lit-switch-panorama-view/properties.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,wBAAwB,GAAG;IAErC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CAEV,CAAA;AAED,gCAAgC;AAChC,MAAM,MAAM,oBAAoB,GAAG;IAEjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,wBAAwB,CAAA;CAEtC,CAAA;AAED,eAAO,MAAM,WAAW;yBACD,MAAM,GAAG,IAAI,GAAG,OAAO;uBAQzB,OAAO,GAAG,MAAM,GAAG,IAAI;CAK3C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"properties.js","sources":["../../../../src/components/common/lit-switch-panorama-view/properties.ts"],"sourcesContent":["/*\n * @Author: ncz\n * @Date: 2026-05-30\n * @Description: lit-switch-panorama-view 属性转换器\n */\n\nexport const booleanAttr = {\r\n fromAttribute(value: string | null): boolean {\r\n\r\n if (value === null) return false\r\n if (value === 'false' || value === '0') return false\r\n\r\n return true\r\n\r\n },\r\n toAttribute(value: boolean): string | null {\r\n\r\n return value ? '' : null\r\n\r\n },\r\n}\r\n"],"names":[],"mappings":"AAMO,MAAM,cAAc;AAAA,EACzB,cAAc,OAA+B;AAE3C,QAAI,UAAU,KAAM,QAAO;AAC3B,QAAI,UAAU,WAAW,UAAU,IAAK,QAAO;AAE/C,WAAO;AAAA,EAET;AAAA,EACA,YAAY,OAA+B;AAEzC,WAAO,QAAQ,KAAK;AAAA,EAEtB;AACF;"}
1
+ {"version":3,"file":"properties.js","sources":["../../../../src/components/common/lit-switch-panorama-view/properties.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-05-30\r\n * @Description: lit-switch-panorama-view 属性转换器与类型\r\n */\r\n\r\nexport type PanoramaSwitchQuaternion = {\r\n\r\n x: number\r\n y: number\r\n z: number\r\n w: number\r\n\r\n}\r\n\r\n/** 切换全景视图参数;由宿主通过 :option 传入 */\r\nexport type PanoramaSwitchOption = {\r\n\r\n locationId?: string\r\n quaternion?: PanoramaSwitchQuaternion\r\n\r\n}\r\n\r\nexport const booleanAttr = {\r\n fromAttribute(value: string | null): boolean {\r\n\r\n if (value === null) return false\r\n if (value === 'false' || value === '0') return false\r\n\r\n return true\r\n\r\n },\r\n toAttribute(value: boolean): string | null {\r\n\r\n return value ? '' : null\r\n\r\n },\r\n}\r\n"],"names":[],"mappings":"AAuBO,MAAM,cAAc;AAAA,EACzB,cAAc,OAA+B;AAE3C,QAAI,UAAU,KAAM,QAAO;AAC3B,QAAI,UAAU,WAAW,UAAU,IAAK,QAAO;AAE/C,WAAO;AAAA,EAET;AAAA,EACA,YAAY,OAA+B;AAEzC,WAAO,QAAQ,KAAK;AAAA,EAEtB;AACF;"}
@@ -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,yBAkClB,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,yBAgClB,CAAA"}
@@ -5,10 +5,6 @@ const styles = css`
5
5
  display: inline-block;
6
6
  }
7
7
 
8
- :host([active]) {
9
- display: none;
10
- }
11
-
12
8
  .mode-item {
13
9
  box-sizing: border-box;
14
10
  width: 26px;
@@ -25,13 +21,15 @@ const styles = css`
25
21
  }
26
22
 
27
23
  :host(:not([button-enabled])),
28
- :host([switching]) {
24
+ :host([switching]),
25
+ :host([current-view]) {
29
26
  pointer-events: none;
30
27
  opacity: 0.5;
31
28
  }
32
29
 
33
30
  :host(:not([button-enabled])) .mode-item,
34
- :host([switching]) .mode-item {
31
+ :host([switching]) .mode-item,
32
+ :host([current-view]) .mode-item {
35
33
  cursor: not-allowed;
36
34
  }
37
35
  `;
@@ -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 :host([active]) {\r\n display: none;\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 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 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;AAAA;AAAA;AAAA;AAAA,0DAqBoC,UAAU,OAAO,CAAC;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([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;"}
@@ -0,0 +1,7 @@
1
+ export declare enum ViewMode {
2
+ Dollhouse = "dollhouse",
3
+ Floorplan = "floorplan",
4
+ Panorama = "panorama",
5
+ Transitioning = "transitioning"
6
+ }
7
+ //# sourceMappingURL=view.mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.mode.d.ts","sourceRoot":"","sources":["../../src/enum/view.mode.ts"],"names":[],"mappings":"AAKA,oBAAY,QAAQ;IAClB,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,aAAa,kBAAkB;CAChC"}
@@ -0,0 +1,11 @@
1
+ var ViewMode = /* @__PURE__ */ ((ViewMode2) => {
2
+ ViewMode2["Dollhouse"] = "dollhouse";
3
+ ViewMode2["Floorplan"] = "floorplan";
4
+ ViewMode2["Panorama"] = "panorama";
5
+ ViewMode2["Transitioning"] = "transitioning";
6
+ return ViewMode2;
7
+ })(ViewMode || {});
8
+ export {
9
+ ViewMode
10
+ };
11
+ //# sourceMappingURL=view.mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.mode.js","sources":["../../src/enum/view.mode.ts"],"sourcesContent":["/*\r\n * @Author: ncz\r\n * @Date: 2026-06-02 11:04:43\r\n * @Description: 视图模式枚举\r\n */\r\nexport enum ViewMode {\r\n Dollhouse = 'dollhouse',\r\n Floorplan = 'floorplan',\r\n Panorama = 'panorama',\r\n Transitioning = 'transitioning'\r\n}"],"names":["ViewMode"],"mappings":"AAKO,IAAK,6BAAAA,cAAL;AACLA,YAAA,WAAA,IAAY;AACZA,YAAA,WAAA,IAAY;AACZA,YAAA,UAAA,IAAW;AACXA,YAAA,eAAA,IAAgB;AAJN,SAAAA;AAAA,GAAA,YAAA,CAAA,CAAA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"define-lit-element.js","sources":["../../src/utils/define-lit-element.ts"],"sourcesContent":["/**\r\n * 安全注册自定义元素:微前端多应用 / HMR 重复加载同一模块时跳过已注册标签\r\n */\r\nexport function safeCustomElement(tag: string) {\r\n\r\n return <T extends CustomElementConstructor>(\r\n cls: T,\r\n _context?: ClassDecoratorContext,\r\n ): T => {\r\n\r\n if (!customElements.get(tag)) {\r\n\r\n customElements.define(tag, cls)\r\n\r\n }\r\n\r\n return cls\r\n\r\n }\r\n\r\n}\r\n"],"names":[],"mappings":"AAGO,SAAS,kBAAkB,KAAa;AAE7C,SAAO,CACL,KACA,aACM;AAEN,QAAI,CAAC,eAAe,IAAI,GAAG,GAAG;AAE5B,qBAAe,OAAO,KAAK,GAAG;AAAA,IAEhC;AAEA,WAAO;AAAA,EAET;AAEF;"}
1
+ {"version":3,"file":"define-lit-element.js","sources":["../../src/utils/define-lit-element.ts"],"sourcesContent":["/**\n * 安全注册自定义元素:微前端多应用 / HMR 重复加载同一模块时跳过已注册标签\n */\nexport function safeCustomElement(tag: string) {\n\n return <T extends CustomElementConstructor>(\n cls: T,\n _context?: ClassDecoratorContext,\n ): T => {\n\n if (!customElements.get(tag)) {\n\n customElements.define(tag, cls)\n\n }\n\n return cls\n\n }\n\n}\n"],"names":[],"mappings":"AAGO,SAAS,kBAAkB,KAAa;AAE7C,SAAO,CACL,KACA,aACM;AAEN,QAAI,CAAC,eAAe,IAAI,GAAG,GAAG;AAE5B,qBAAe,OAAO,KAAK,GAAG;AAAA,IAEhC;AAEA,WAAO;AAAA,EAET;AAEF;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qverse-ui/lit-components",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"