@quicktvui/naddons 1.0.0-rc.1 → 1.0.0-rc.2

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 (30) hide show
  1. package/dist/components/GridTabs/GridTabs.vue.d.ts +6 -0
  2. package/dist/components/GridTabs/useGridTabs.d.ts +1 -0
  3. package/dist/components/HsvBackground/HsvBackground.vue.d.ts +7 -19
  4. package/dist/components/HsvBackground/index.d.ts +9 -2
  5. package/dist/components/NaButton/NaButton.vue.d.ts +24 -0
  6. package/dist/components/NaButton/NaButtonBase.vue.d.ts +60 -0
  7. package/dist/components/NaButton/index.d.ts +13 -0
  8. package/dist/components/NaCheckbox/NaCheckbox.vue.d.ts +108 -0
  9. package/dist/components/NaCheckbox/index.d.ts +13 -0
  10. package/dist/components/NaCheckboxGroup/NaCheckboxGroup.vue.d.ts +103 -0
  11. package/dist/components/NaCheckboxGroup/index.d.ts +13 -0
  12. package/dist/components/NaInputView/NaInputView.vue.d.ts +42 -0
  13. package/dist/components/NaInputView/NaInputViewBase.vue.d.ts +46 -0
  14. package/dist/components/NaInputView/index.d.ts +13 -0
  15. package/dist/components/NaRadioGroup/NaRadioGroup.vue.d.ts +103 -0
  16. package/dist/components/NaRadioGroup/index.d.ts +13 -0
  17. package/dist/components/NaSettingSwitch/NaSettingSwitch.vue.d.ts +111 -0
  18. package/dist/components/NaSettingSwitch/index.d.ts +6 -0
  19. package/dist/components/NaSwitcher/NaSwitcher.vue.d.ts +50 -0
  20. package/dist/components/NaSwitcher/index.d.ts +13 -0
  21. package/dist/core/AddonProvider.d.ts +13 -0
  22. package/dist/index.d.ts +28 -1
  23. package/dist/modules/AddonEnvModule.d.ts +4 -0
  24. package/dist/modules/ExtraUIConfigModule.d.ts +7 -0
  25. package/dist/modules/GridTabsConfigModule.d.ts +7 -0
  26. package/dist/naddons.cjs.js +1 -1
  27. package/dist/naddons.es.js +1469 -702
  28. package/dist/style.css +1 -0
  29. package/dist/types/index.d.ts +50 -0
  30. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
- import { defineComponent as D, ref as x, openBlock as q, createBlock as R, unref as U, mergeProps as Q, withCtx as B, renderSlot as j, shallowRef as ae, watch as se, computed as Se, onMounted as ke, h as z, nextTick as _e, provide as we, inject as $e } from "vue";
2
- import { Native as E } from "@extscreen/es3-vue";
3
- import { useES as he, useESPlugin as Ce } from "@extscreen/es3-core";
4
- const ie = "QtGridTabs", Z = /* @__PURE__ */ D({
1
+ import { defineComponent as w, ref as A, openBlock as S, createBlock as $, unref as D, mergeProps as B, withCtx as R, renderSlot as F, shallowRef as me, watch as ee, computed as W, resolveComponent as ge, createElementBlock as J, normalizeStyle as fe, Fragment as Ke, renderList as He, onMounted as et, h as H, nextTick as tt, provide as ot, inject as nt } from "vue";
2
+ import { Native as N } from "@extscreen/es3-vue";
3
+ import { useES as Ze, useESPlugin as at } from "@extscreen/es3-core";
4
+ const be = "QtGridTabs", X = /* @__PURE__ */ w({
5
5
  __name: "GridTabs",
6
6
  props: {
7
7
  protocolVersion: {},
@@ -9,679 +9,684 @@ const ie = "QtGridTabs", Z = /* @__PURE__ */ D({
9
9
  tabsData: {},
10
10
  actionPayload: {}
11
11
  },
12
- emits: ["onTabSelected", "onTabNeedsData", "onLoadMore", "onScroll", "onScrollStateChanged", "onItemPresence", "onTabFocused", "onItemClick", "onItemLongClick", "onItemFocused", "onProtocolMismatch"],
13
- setup(o, { expose: u }) {
14
- const c = x(), r = V(), b = ie + "_Plugin", d = (r.isPluginActive ? b : ie).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), f = K(
15
- d,
16
- r.pluginPackageName || "com.quicktvui.plugin.glintui"
12
+ emits: ["onTabSelected", "onTabClick", "onTabNeedsData", "onLoadMore", "onScroll", "onScrollStateChanged", "onItemPresence", "onTabFocused", "onItemClick", "onItemLongClick", "onItemFocused", "onProtocolMismatch"],
13
+ setup(e, { expose: i }) {
14
+ const u = A(), s = _(), f = be + "_Plugin", l = (s.isPluginActive ? f : be).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
15
+ l,
16
+ s.pluginPackageName || "com.quicktvui.plugin.glintui"
17
17
  );
18
- return u({
18
+ return i({
19
19
  getNativeNode: () => {
20
- var a, l;
21
- return ((l = (a = c.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : l.call(a)) || c.value;
20
+ var a, c;
21
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
22
22
  },
23
23
  dispatchAction: (...a) => {
24
- var i, y;
25
- const l = ((y = (i = c.value) == null ? void 0 : i.getNativeNode) == null ? void 0 : y.call(i)) || c.value;
26
- if (l)
24
+ var d, h;
25
+ const c = ((h = (d = u.value) == null ? void 0 : d.getNativeNode) == null ? void 0 : h.call(d)) || u.value;
26
+ if (c)
27
27
  if (a.length > 0) {
28
- let T = a[0];
29
- typeof T == "object" && (T = JSON.stringify(T)), E.callUIFunction(l, "dispatchAction", [T]);
28
+ let C = a[0];
29
+ typeof C == "object" && (C = JSON.stringify(C)), N.callUIFunction(c, "dispatchAction", [C]);
30
30
  } else
31
- E.callUIFunction(l, "dispatchAction", a);
31
+ N.callUIFunction(c, "dispatchAction", a);
32
32
  },
33
33
  scrollToTop: (...a) => {
34
- var i, y;
35
- const l = ((y = (i = c.value) == null ? void 0 : i.getNativeNode) == null ? void 0 : y.call(i)) || c.value;
36
- l && E.callUIFunction(l, "scrollToTop", a);
34
+ var d, h;
35
+ const c = ((h = (d = u.value) == null ? void 0 : d.getNativeNode) == null ? void 0 : h.call(d)) || u.value;
36
+ c && N.callUIFunction(c, "scrollToTop", a);
37
37
  },
38
38
  getFocusState: (...a) => {
39
- var i, y;
40
- const l = ((y = (i = c.value) == null ? void 0 : i.getNativeNode) == null ? void 0 : y.call(i)) || c.value;
41
- l && E.callUIFunction(l, "getFocusState", a);
39
+ var d, h;
40
+ const c = ((h = (d = u.value) == null ? void 0 : d.getNativeNode) == null ? void 0 : h.call(d)) || u.value;
41
+ c && N.callUIFunction(c, "getFocusState", a);
42
42
  },
43
43
  getItemRect: (...a) => {
44
- var i, y;
45
- const l = ((y = (i = c.value) == null ? void 0 : i.getNativeNode) == null ? void 0 : y.call(i)) || c.value;
46
- l && E.callUIFunction(l, "getItemRect", a);
44
+ var d, h;
45
+ const c = ((h = (d = u.value) == null ? void 0 : d.getNativeNode) == null ? void 0 : h.call(d)) || u.value;
46
+ c && N.callUIFunction(c, "getItemRect", a);
47
47
  },
48
48
  requestFocus: (...a) => {
49
- var i, y;
50
- const l = ((y = (i = c.value) == null ? void 0 : i.getNativeNode) == null ? void 0 : y.call(i)) || c.value;
51
- l && E.callUIFunction(l, "requestFocus", a);
49
+ var d, h;
50
+ const c = ((h = (d = u.value) == null ? void 0 : d.getNativeNode) == null ? void 0 : h.call(d)) || u.value;
51
+ c && N.callUIFunction(c, "requestFocus", a);
52
52
  }
53
- }), (a, l) => (q(), R(U(f), Q({
53
+ }), (a, c) => (S(), $(D(r), B({
54
54
  ref_key: "nativeRef",
55
- ref: c,
56
- protocolVersion: o.protocolVersion,
57
- pageSpec: o.pageSpec,
58
- tabsData: o.tabsData,
59
- actionPayload: o.actionPayload,
60
- onOnTabSelected: l[0] || (l[0] = (i) => a.$emit("onTabSelected", i.nativeEvent)),
61
- onOnTabNeedsData: l[1] || (l[1] = (i) => a.$emit("onTabNeedsData", i.nativeEvent)),
62
- onOnLoadMore: l[2] || (l[2] = (i) => a.$emit("onLoadMore", i.nativeEvent)),
63
- onOnScroll: l[3] || (l[3] = (i) => a.$emit("onScroll", i.nativeEvent)),
64
- onOnScrollStateChanged: l[4] || (l[4] = (i) => a.$emit("onScrollStateChanged", i.nativeEvent)),
65
- onOnItemPresence: l[5] || (l[5] = (i) => a.$emit("onItemPresence", i.nativeEvent)),
66
- onOnTabFocused: l[6] || (l[6] = (i) => a.$emit("onTabFocused", i.nativeEvent)),
67
- onOnItemClick: l[7] || (l[7] = (i) => a.$emit("onItemClick", i.nativeEvent)),
68
- onOnItemLongClick: l[8] || (l[8] = (i) => a.$emit("onItemLongClick", i.nativeEvent)),
69
- onOnItemFocused: l[9] || (l[9] = (i) => a.$emit("onItemFocused", i.nativeEvent)),
70
- onOnProtocolMismatch: l[10] || (l[10] = (i) => a.$emit("onProtocolMismatch", i.nativeEvent))
55
+ ref: u,
56
+ protocolVersion: e.protocolVersion,
57
+ pageSpec: e.pageSpec,
58
+ tabsData: e.tabsData,
59
+ actionPayload: e.actionPayload,
60
+ onOnTabSelected: c[0] || (c[0] = (d) => a.$emit("onTabSelected", d.nativeEvent)),
61
+ onOnTabClick: c[1] || (c[1] = (d) => a.$emit("onTabClick", d.nativeEvent)),
62
+ onOnTabNeedsData: c[2] || (c[2] = (d) => a.$emit("onTabNeedsData", d.nativeEvent)),
63
+ onOnLoadMore: c[3] || (c[3] = (d) => a.$emit("onLoadMore", d.nativeEvent)),
64
+ onOnScroll: c[4] || (c[4] = (d) => a.$emit("onScroll", d.nativeEvent)),
65
+ onOnScrollStateChanged: c[5] || (c[5] = (d) => a.$emit("onScrollStateChanged", d.nativeEvent)),
66
+ onOnItemPresence: c[6] || (c[6] = (d) => a.$emit("onItemPresence", d.nativeEvent)),
67
+ onOnTabFocused: c[7] || (c[7] = (d) => a.$emit("onTabFocused", d.nativeEvent)),
68
+ onOnItemClick: c[8] || (c[8] = (d) => a.$emit("onItemClick", d.nativeEvent)),
69
+ onOnItemLongClick: c[9] || (c[9] = (d) => a.$emit("onItemLongClick", d.nativeEvent)),
70
+ onOnItemFocused: c[10] || (c[10] = (d) => a.$emit("onItemFocused", d.nativeEvent)),
71
+ onOnProtocolMismatch: c[11] || (c[11] = (d) => a.$emit("onProtocolMismatch", d.nativeEvent))
71
72
  }, a.$attrs), {
72
- default: B(() => [
73
- j(a.$slots, "default")
73
+ default: R(() => [
74
+ F(a.$slots, "default")
74
75
  ]),
75
76
  _: 3
76
77
  }, 16, ["protocolVersion", "pageSpec", "tabsData", "actionPayload"]));
77
78
  }
78
79
  });
79
- let Y;
80
- var be;
80
+ let te;
81
+ var Fe;
81
82
  try {
82
- const o = require("@extscreen/es3-vue");
83
- Y = o.registerElement || ((be = o.default) == null ? void 0 : be.registerElement);
83
+ const e = require("@extscreen/es3-vue");
84
+ te = e.registerElement || ((Fe = e.default) == null ? void 0 : Fe.registerElement);
84
85
  } catch {
85
86
  }
86
- const xe = {
87
- install: (o) => {
87
+ const it = {
88
+ install: (e) => {
88
89
  if (!globalThis.__QtGridTabs_registered)
89
- if (Y) {
90
- const u = (c, r) => {
91
- Y(c, {
90
+ if (te) {
91
+ const i = (u, s) => {
92
+ te(u, {
92
93
  component: {
93
- name: r ? "QtGridTabs_Plugin" : "QtGridTabs",
94
- processEventData(b, m) {
95
- const d = b.handler || b, f = m || (d == null ? void 0 : d.nativeParams) || {};
96
- return d && (d.nativeEvent = f), d;
94
+ name: s ? "QtGridTabs_Plugin" : "QtGridTabs",
95
+ processEventData(f, v) {
96
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
97
+ return l && (l.nativeEvent = r), l;
97
98
  }
98
99
  }
99
100
  });
100
101
  };
101
- u("qt-grid-tabs", !1), u("qt-grid-tabs-plugin", !0), u("QtGridTabs", !1), u("QtGridTabs_Plugin", !0), u("gt-tabs", !1), u("gt-tabs-plugin", !0), globalThis.__QtGridTabs_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtGridTabs");
102
+ i("qt-grid-tabs", !1), i("qt-grid-tabs-plugin", !0), i("QtGridTabs", !1), i("QtGridTabs_Plugin", !0), i("gt-tabs", !1), i("gt-tabs-plugin", !0), globalThis.__QtGridTabs_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtGridTabs");
102
103
  } else
103
104
  console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
104
- o.component("GridTabs", Z), o.component("qt-grid-tabs", Z), o.component("gt-tabs", Z);
105
+ e.component("GridTabs", X), e.component("qt-grid-tabs", X), e.component("gt-tabs", X);
105
106
  }
106
107
  };
107
- function Xe(o, u) {
108
- const c = x(""), r = u ? JSON.parse(JSON.stringify(u)) : {}, b = ae([]), m = ae([]);
109
- let d = !1, f = !1;
108
+ function _t(e, i) {
109
+ const u = A(""), s = i ? JSON.parse(JSON.stringify(i)) : {}, f = me([]), v = me([]);
110
+ let l = !1, r = !1;
110
111
  const a = "__virtual_single_tab__";
111
- let l = "", i = !1;
112
- const y = x({}), T = (t) => {
113
- const e = Array.isArray(t) ? t : [t];
114
- if (f && o.value) {
115
- if (typeof o.value.dispatchAction == "function") {
116
- console.log("[useGridTabs] Calling Wrapper dispatchAction directly"), o.value.dispatchAction(e);
112
+ let c = "", d = !1;
113
+ const h = A({}), C = (o) => {
114
+ const t = Array.isArray(o) ? o : [o];
115
+ if (r && e.value) {
116
+ if (typeof e.value.dispatchAction == "function") {
117
+ console.log("[useGridTabs] Calling Wrapper dispatchAction directly"), e.value.dispatchAction(t);
117
118
  return;
118
119
  }
119
- let n = o.value;
120
- typeof o.value.getNativeNode == "function" ? n = o.value.getNativeNode() || o.value : o.value.nativeRef && (n = o.value.nativeRef), n ? (console.log("[useGridTabs] Calling Native callUIFunction dispatchAction fallback"), E.callUIFunction(n, "dispatchAction", [JSON.stringify(e)])) : console.warn("[useGridTabs] Native target is null or undefined, cannot call dispatchAction");
120
+ let n = e.value;
121
+ typeof e.value.getNativeNode == "function" ? n = e.value.getNativeNode() || e.value : e.value.nativeRef && (n = e.value.nativeRef), n ? (console.log("[useGridTabs] Calling Native callUIFunction dispatchAction fallback"), N.callUIFunction(n, "dispatchAction", [JSON.stringify(t)])) : console.warn("[useGridTabs] Native target is null or undefined, cannot call dispatchAction");
121
122
  }
122
- }, G = (t, e) => {
123
- if (!t)
123
+ }, z = (o, t) => {
124
+ if (!o)
124
125
  return !1;
125
126
  let n = !0;
126
- return t.id || (console.error(`[useGridTabs] ❌ 数据格式错误 (${e}): 卡片缺失必填字段 'id'。每个卡片必须有唯一标识才能进行后续更新!`, t), n = !1), t.viewType || (console.error(`[useGridTabs] ❌ 数据格式错误 (${e}): 卡片缺失必填字段 'viewType' (id: ${t.id || "未知"})。必须指定 Native 注册的视图类型或 Portal 标识!`, t), n = !1), n;
127
- }, $ = (t, e) => {
128
- if (!t)
127
+ return o.id || (console.error(`[useGridTabs] ❌ 数据格式错误 (${t}): 卡片缺失必填字段 'id'。每个卡片必须有唯一标识才能进行后续更新!`, o), n = !1), o.viewType || (console.error(`[useGridTabs] ❌ 数据格式错误 (${t}): 卡片缺失必填字段 'viewType' (id: ${o.id || "未知"})。必须指定 Native 注册的视图类型或 Portal 标识!`, o), n = !1), n;
128
+ }, q = (o, t) => {
129
+ if (!o)
129
130
  return !1;
130
131
  let n = !0;
131
- return t.tabId || (console.error(`[useGridTabs] ❌ 数据格式错误 (${e}): Tab 缺失必填字段 'tabId'。每个 Tab 必须有唯一标识!`, t), n = !1), (t.title === void 0 || t.title === null) && console.warn(`[useGridTabs] ⚠️ 数据格式警告 (${e}): Tab 缺失 'title' 字段 (tabId: ${t.tabId || "未知"}),导航栏可能显示为空。`, t), n;
132
- }, J = (t, e) => {
133
- if (!t || t.length === 0)
132
+ return o.tabId || (console.error(`[useGridTabs] ❌ 数据格式错误 (${t}): Tab 缺失必填字段 'tabId'。每个 Tab 必须有唯一标识!`, o), n = !1), (o.title === void 0 || o.title === null) && console.warn(`[useGridTabs] ⚠️ 数据格式警告 (${t}): Tab 缺失 'title' 字段 (tabId: ${o.tabId || "未知"}),导航栏可能显示为空。`, o), n;
133
+ }, Z = (o, t) => {
134
+ if (!o || o.length === 0)
134
135
  return;
135
- F.clear();
136
- const n = t[0].hasOwnProperty("tabId") || t[0].hasOwnProperty("items") && Array.isArray(t[0].items);
137
- d = e === "1d", e === "1d" && n ? console.error("[useGridTabs] ❌ 赋值错误: 你正在向 `items.value` (一维瀑布流) 赋值二维 Tabs 数据结构!请改用 `tabs.value = ...`") : e === "2d" && !n && console.error("[useGridTabs] ❌ 赋值错误: 你正在向 `tabs.value` (二维导航) 赋值一维卡片列表数据结构!请改用 `items.value = ...`"), e === "1d" ? t.forEach((s, v) => G(s, `items.value[${v}]`)) : t.forEach((s, v) => {
138
- $(s, `tabs.value[${v}]`), s.items && Array.isArray(s.items) && s.items.forEach((p, g) => G(p, `tabs.value[${v}].items[${g}]`));
139
- }), f = !0, P();
140
- }, F = /* @__PURE__ */ new Set(), P = (t = "unknown") => {
141
- if (!f) {
136
+ U.clear();
137
+ const n = o[0].hasOwnProperty("tabId") || o[0].hasOwnProperty("items") && Array.isArray(o[0].items);
138
+ l = t === "1d", t === "1d" && n ? console.error("[useGridTabs] ❌ 赋值错误: 你正在向 `items.value` (一维瀑布流) 赋值二维 Tabs 数据结构!请改用 `tabs.value = ...`") : t === "2d" && !n && console.error("[useGridTabs] ❌ 赋值错误: 你正在向 `tabs.value` (二维导航) 赋值一维卡片列表数据结构!请改用 `items.value = ...`"), t === "1d" ? o.forEach((g, m) => z(g, `items.value[${m}]`)) : o.forEach((g, m) => {
139
+ q(g, `tabs.value[${m}]`), g.items && Array.isArray(g.items) && g.items.forEach((y, b) => z(y, `tabs.value[${m}].items[${b}]`));
140
+ }), r = !0, p();
141
+ }, U = /* @__PURE__ */ new Set(), p = (o = "unknown") => {
142
+ if (!r) {
142
143
  console.warn("[useGridTabs] triggerRootUpdate skipped because isInitialized is false");
143
144
  return;
144
145
  }
145
- let e = {
146
+ let t = {
146
147
  protocolVersion: "1.28.0",
147
148
  // 新增:显式声明协议版本
148
- gridBasis: (r == null ? void 0 : r.gridBasis) ?? 30,
149
- unitType: (r == null ? void 0 : r.unitType) ?? "px",
150
- contentConfig: (r == null ? void 0 : r.contentConfig) ?? (r == null ? void 0 : r.layoutConfig) ?? {
149
+ gridBasis: (s == null ? void 0 : s.gridBasis) ?? 30,
150
+ unitType: (s == null ? void 0 : s.unitType) ?? "px",
151
+ contentConfig: (s == null ? void 0 : s.contentConfig) ?? (s == null ? void 0 : s.layoutConfig) ?? {
151
152
  box: { padding: [0, 60, 60, 60] },
152
153
  navContentGapNormal: 0,
153
154
  itemGap: 24
154
155
  },
155
- navConfig: (r == null ? void 0 : r.navConfig) ?? {
156
+ navConfig: (s == null ? void 0 : s.navConfig) ?? {
156
157
  dock: "left",
157
158
  mode: "fixed",
158
159
  renderType: "smart-hybrid",
159
160
  box: { size: [200, 0] },
160
161
  expandedBox: { size: [300, 0] }
161
162
  },
162
- cacheConfig: (r == null ? void 0 : r.cacheConfig) ?? {
163
+ cacheConfig: (s == null ? void 0 : s.cacheConfig) ?? {
163
164
  offscreenPageLimit: 1,
164
165
  prefetchOffset: 2,
165
166
  preLoadEnabled: !1,
166
167
  strategy: "data_priority"
167
168
  },
168
- animationConfig: (r == null ? void 0 : r.animationConfig) ?? {
169
+ animationConfig: (s == null ? void 0 : s.animationConfig) ?? {
169
170
  duration: 300,
170
171
  easing: "ease-out"
171
172
  },
172
- interactionStrategy: (r == null ? void 0 : r.interactionStrategy) ?? {
173
+ interactionStrategy: (s == null ? void 0 : s.interactionStrategy) ?? {
173
174
  defaultFocus: "nav",
174
175
  interceptBack: !0,
175
176
  backMode: "home-first",
176
177
  autoScrollToTop: !0,
177
178
  edgeScrollProtection: 0.5
178
179
  },
179
- focusConfig: (r == null ? void 0 : r.focusConfig) ?? {
180
+ focusConfig: (s == null ? void 0 : s.focusConfig) ?? {
180
181
  boundaryLock: { left: !1, right: !1, top: !1, bottom: !1 }
181
182
  },
182
- themeConfig: r == null ? void 0 : r.themeConfig,
183
- referenceResolution: (r == null ? void 0 : r.referenceResolution) ?? { w: 1920, h: 1080 }
183
+ themeConfig: s == null ? void 0 : s.themeConfig,
184
+ referenceResolution: (s == null ? void 0 : s.referenceResolution) ?? { w: 1920, h: 1080 }
184
185
  }, n = [];
185
- d ? (e.navConfig = { ...e.navConfig, renderType: "none" }, n = [
186
+ l ? (t.navConfig = { ...t.navConfig, renderType: "none" }, n = [
186
187
  {
187
188
  tabId: a,
188
189
  title: "Virtual Tab",
189
190
  hidden: !0,
190
- items: m.value
191
+ items: v.value
191
192
  }
192
- ]) : n = b.value;
193
- const s = JSON.stringify({
194
- page_spec: e,
193
+ ]) : n = f.value;
194
+ const g = JSON.stringify({
195
+ page_spec: t,
195
196
  tabs: n
196
197
  });
197
- if (c.value === "")
198
- console.log(`[useGridTabs] triggerRootUpdate: Initializing tabsDataStr (length=${s.length})`), c.value = s, l = s;
198
+ if (u.value === "")
199
+ console.log(`[useGridTabs] triggerRootUpdate: Initializing tabsDataStr (length=${g.length})`), u.value = g, c = g;
199
200
  else {
200
- if (l === s) {
201
+ if (c === g) {
201
202
  console.log("[useGridTabs] triggerRootUpdate: Data unchanged, skipping RELOAD_TABS");
202
203
  return;
203
204
  }
204
- console.log(`[useGridTabs] triggerRootUpdate: Sending RELOAD_TABS action directly to Native (length=${s.length})`), c.value = s, l = s, T({
205
+ console.log(`[useGridTabs] triggerRootUpdate: Sending RELOAD_TABS action directly to Native (length=${g.length})`), u.value = g, c = g, C({
205
206
  op: "RELOAD_TABS",
206
207
  payload: {
207
- pageSpec: e,
208
+ pageSpec: t,
208
209
  // 兼容不同的 Gson alias
209
- page_spec: e,
210
+ page_spec: t,
210
211
  tabs: n
211
212
  }
212
213
  });
213
214
  }
214
- }, h = (t) => {
215
- if (!t || typeof t != "object" || t.__isGridTabsProxy)
216
- return t;
217
- t.content && typeof t.content == "object" && !t.content.__isGridTabsProxy && (t.content = new Proxy(t.content, {
218
- set(n, s, v, p) {
219
- const g = Reflect.set(n, s, v, p);
220
- return t.id && f && T({
215
+ }, I = (o) => {
216
+ if (!o || typeof o != "object" || o.__isGridTabsProxy)
217
+ return o;
218
+ o.content && typeof o.content == "object" && !o.content.__isGridTabsProxy && (o.content = new Proxy(o.content, {
219
+ set(n, g, m, y) {
220
+ const b = Reflect.set(n, g, m, y);
221
+ return o.id && r && C({
221
222
  op: "UPDATE_ITEM",
222
- itemId: t.id,
223
- payload: t
224
- }), g;
223
+ itemId: o.id,
224
+ payload: o
225
+ }), b;
225
226
  }
226
- }), Object.defineProperty(t.content, "__isGridTabsProxy", { value: !0, enumerable: !1 }), Object.defineProperty(t.content, "__v_skip", { value: !0, enumerable: !1 })), t.subItems && Array.isArray(t.subItems) && !t.subItems.__isGridTabsProxy && (t.subItems = A(t.subItems, t.id), Object.defineProperty(t.subItems, "__isGridTabsProxy", { value: !0, enumerable: !1 }), Object.defineProperty(t.subItems, "__v_skip", { value: !0, enumerable: !1 }));
227
- const e = new Proxy(t, {
228
- set(n, s, v, p) {
229
- const g = Reflect.set(n, s, v, p);
230
- return n.id && f && !i && T({
227
+ }), Object.defineProperty(o.content, "__isGridTabsProxy", { value: !0, enumerable: !1 }), Object.defineProperty(o.content, "__v_skip", { value: !0, enumerable: !1 })), o.subItems && Array.isArray(o.subItems) && !o.subItems.__isGridTabsProxy && (o.subItems = P(o.subItems, o.id), Object.defineProperty(o.subItems, "__isGridTabsProxy", { value: !0, enumerable: !1 }), Object.defineProperty(o.subItems, "__v_skip", { value: !0, enumerable: !1 }));
228
+ const t = new Proxy(o, {
229
+ set(n, g, m, y) {
230
+ const b = Reflect.set(n, g, m, y);
231
+ return n.id && r && !d && C({
231
232
  op: "UPDATE_ITEM",
232
233
  itemId: n.id,
233
234
  payload: n
234
- }), g;
235
+ }), b;
235
236
  }
236
237
  });
237
- return Object.defineProperty(e, "__isGridTabsProxy", { value: !0, enumerable: !1 }), Object.defineProperty(e, "__v_skip", { value: !0, enumerable: !1 }), e;
238
- }, A = (t, e) => {
239
- for (let n = 0; n < t.length; n++)
240
- t[n] = h(t[n]);
241
- return new Proxy(t, {
242
- get(n, s, v) {
243
- return s === "push" ? (...p) => {
244
- p.forEach((C, W) => G(C, `push(${W})`)), f || console.error("[useGridTabs] ❌ 时机错误: 在底层还未完成初始化时调用了 push()。请先对 items.value 或 tabs.value 进行全量赋值!");
245
- const g = p.map((C) => h(C)), I = Array.prototype.push.apply(n, g);
246
- return i || T({
238
+ return Object.defineProperty(t, "__isGridTabsProxy", { value: !0, enumerable: !1 }), Object.defineProperty(t, "__v_skip", { value: !0, enumerable: !1 }), t;
239
+ }, P = (o, t) => {
240
+ for (let n = 0; n < o.length; n++)
241
+ o[n] = I(o[n]);
242
+ return new Proxy(o, {
243
+ get(n, g, m) {
244
+ return g === "push" ? (...y) => {
245
+ y.forEach((Q, K) => z(Q, `push(${K})`)), r || console.error("[useGridTabs] ❌ 时机错误: 在底层还未完成初始化时调用了 push()。请先对 items.value 或 tabs.value 进行全量赋值!");
246
+ const b = y.map((Q) => I(Q)), k = Array.prototype.push.apply(n, b);
247
+ return d || C({
247
248
  op: "APPEND_SUB_ITEMS",
248
- itemId: e,
249
- payload: { subItems: g }
250
- }), I;
251
- } : s === "unshift" ? (...p) => {
252
- p.forEach((C, W) => G(C, `unshift(${W})`)), f || console.error("[useGridTabs] ❌ 时机错误: 在底层还未完成初始化时调用了 unshift()。请先对 items.value 或 tabs.value 进行全量赋值!");
253
- const g = p.map((C) => h(C)), I = Array.prototype.unshift.apply(n, g);
254
- return f && g.length > 0 && !i && T({
249
+ itemId: t,
250
+ payload: { subItems: b }
251
+ }), k;
252
+ } : g === "unshift" ? (...y) => {
253
+ y.forEach((Q, K) => z(Q, `unshift(${K})`)), r || console.error("[useGridTabs] ❌ 时机错误: 在底层还未完成初始化时调用了 unshift()。请先对 items.value 或 tabs.value 进行全量赋值!");
254
+ const b = y.map((Q) => I(Q)), k = Array.prototype.unshift.apply(n, b);
255
+ return r && b.length > 0 && !d && C({
255
256
  op: "PREPEND_SUB_ITEMS",
256
- itemId: e,
257
- payload: { subItems: g }
258
- }), I;
259
- } : s === "splice" ? (...p) => {
260
- const g = p.length >= 2 && p[0] === 0 && p[1] === n.length, I = Array.prototype.splice.apply(n, p);
261
- return f && g && e !== a ? i || T({
257
+ itemId: t,
258
+ payload: { subItems: b }
259
+ }), k;
260
+ } : g === "splice" ? (...y) => {
261
+ const b = y.length >= 2 && y[0] === 0 && y[1] === n.length, k = Array.prototype.splice.apply(n, y);
262
+ return r && b && t !== a ? d || C({
262
263
  op: "CLEAR_SUB_ITEMS",
263
- itemId: e
264
- }) : f && (i || P("items array spliced")), I;
265
- } : Reflect.get(n, s, v);
264
+ itemId: t
265
+ }) : r && (d || p("items array spliced")), k;
266
+ } : Reflect.get(n, g, m);
266
267
  },
267
- set(n, s, v, p) {
268
- if (s !== "length" && !isNaN(Number(s))) {
269
- f || console.error(`[useGridTabs] ❌ 时机错误: 在底层还未完成初始化时直接修改了索引 [${String(s)}]。请先对 items.value 或 tabs.value 进行全量赋值!`), G(v, `索引赋值 [${String(s)}]`);
270
- const g = h(v), I = Reflect.set(n, s, g, p);
271
- return g && g.id && !i && T({
268
+ set(n, g, m, y) {
269
+ if (g !== "length" && !isNaN(Number(g))) {
270
+ r || console.error(`[useGridTabs] ❌ 时机错误: 在底层还未完成初始化时直接修改了索引 [${String(g)}]。请先对 items.value 或 tabs.value 进行全量赋值!`), z(m, `索引赋值 [${String(g)}]`);
271
+ const b = I(m), k = Reflect.set(n, g, b, y);
272
+ return b && b.id && !d && C({
272
273
  op: "UPDATE_ITEM",
273
- itemId: g.id,
274
- payload: g
275
- }), I;
274
+ itemId: b.id,
275
+ payload: b
276
+ }), k;
276
277
  }
277
- return Reflect.set(n, s, v, p);
278
+ return Reflect.set(n, g, m, y);
278
279
  }
279
280
  });
280
- }, S = (t) => (t.items && Array.isArray(t.items) && !t.items.__isGridTabsProxy && (t.items = A(t.items, t.tabId), Object.defineProperty(t.items, "__isGridTabsProxy", { value: !0, enumerable: !1 })), new Proxy(t, {
281
- set(e, n, s, v) {
281
+ }, E = (o) => (o.items && Array.isArray(o.items) && !o.items.__isGridTabsProxy && (o.items = P(o.items, o.tabId), Object.defineProperty(o.items, "__isGridTabsProxy", { value: !0, enumerable: !1 })), new Proxy(o, {
282
+ set(t, n, g, m) {
282
283
  if (n === "items") {
283
- let g = s;
284
- return Array.isArray(s) && !s.__isGridTabsProxy && (g = A(s, e.tabId), Object.defineProperty(g, "__isGridTabsProxy", { value: !0, enumerable: !1 })), Reflect.set(e, n, g, v);
284
+ let b = g;
285
+ return Array.isArray(g) && !g.__isGridTabsProxy && (b = P(g, t.tabId), Object.defineProperty(b, "__isGridTabsProxy", { value: !0, enumerable: !1 })), Reflect.set(t, n, b, m);
285
286
  } else if (n === "loadState") {
286
- const g = Reflect.set(e, n, s, v);
287
- return f && e.tabId && !i && T({
287
+ const b = Reflect.set(t, n, g, m);
288
+ return r && t.tabId && !d && C({
288
289
  op: "UPDATE_TAB_STATE",
289
- itemId: e.tabId,
290
- payload: { loadState: s }
291
- }), g;
290
+ itemId: t.tabId,
291
+ payload: { loadState: g }
292
+ }), b;
292
293
  }
293
- return Reflect.set(e, n, s, v);
294
+ return Reflect.set(t, n, g, m);
294
295
  }
295
- })), _ = (t) => {
296
- const e = t.map((n) => S(n));
297
- return new Proxy(e, {
298
- set(n, s, v, p) {
299
- if (s !== "length" && !isNaN(Number(s))) {
300
- let g = v;
301
- v.__isGridTabsProxy || (g = S(v), Object.defineProperty(g, "__isGridTabsProxy", { value: !0, enumerable: !1 }));
302
- const I = Reflect.set(n, s, g, p);
303
- return P(), I;
296
+ })), G = (o) => {
297
+ const t = o.map((n) => E(n));
298
+ return new Proxy(t, {
299
+ set(n, g, m, y) {
300
+ if (g !== "length" && !isNaN(Number(g))) {
301
+ let b = m;
302
+ m.__isGridTabsProxy || (b = E(m), Object.defineProperty(b, "__isGridTabsProxy", { value: !0, enumerable: !1 }));
303
+ const k = Reflect.set(n, g, b, y);
304
+ return p(), k;
304
305
  }
305
- return Reflect.set(n, s, v, p);
306
+ return Reflect.set(n, g, m, y);
306
307
  }
307
308
  });
308
309
  };
309
- se(b, (t, e) => {
310
- if (console.log("[useGridTabs] watch(tabs) triggered:", { newTabs: t, isInitialized: f }), !t || t.length === 0) {
311
- c.value = "", l = "", f = !1;
310
+ ee(f, (o, t) => {
311
+ if (console.log("[useGridTabs] watch(tabs) triggered:", { newTabs: o, isInitialized: r }), !o || o.length === 0) {
312
+ u.value = "", c = "", r = !1;
312
313
  return;
313
314
  }
314
- if (t.__isGridTabsProxy)
315
- console.log("[useGridTabs] newTabs is ALREADY a proxy, triggering root update"), P();
315
+ if (o.__isGridTabsProxy)
316
+ console.log("[useGridTabs] newTabs is ALREADY a proxy, triggering root update"), p();
316
317
  else {
317
318
  console.log("[useGridTabs] newTabs is NOT a proxy, performing full deduceModeAndInitialize & wrapping");
318
- const n = _(t);
319
- Object.defineProperty(n, "__isGridTabsProxy", { value: !0, enumerable: !1 }), J(n, "2d"), b.value = n;
319
+ const n = G(o);
320
+ Object.defineProperty(n, "__isGridTabsProxy", { value: !0, enumerable: !1 }), Z(n, "2d"), f.value = n;
320
321
  }
321
- }, { flush: "sync", deep: !1 }), se(m, (t, e) => {
322
- if (console.log("[useGridTabs] watch(items) triggered:", { newItems: t, isInitialized: f }), !t || t.length === 0) {
323
- c.value = "", l = "", f = !1;
322
+ }, { flush: "sync", deep: !1 }), ee(v, (o, t) => {
323
+ if (console.log("[useGridTabs] watch(items) triggered:", { newItems: o, isInitialized: r }), !o || o.length === 0) {
324
+ u.value = "", c = "", r = !1;
324
325
  return;
325
326
  }
326
- if (t.__isGridTabsProxy)
327
- console.log("[useGridTabs] newItems is ALREADY a proxy, triggering root update"), P();
327
+ if (o.__isGridTabsProxy)
328
+ console.log("[useGridTabs] newItems is ALREADY a proxy, triggering root update"), p();
328
329
  else {
329
330
  console.log("[useGridTabs] newItems is NOT a proxy, performing full deduceModeAndInitialize & wrapping");
330
- const n = A(t, a);
331
- Object.defineProperty(n, "__isGridTabsProxy", { value: !0, enumerable: !1 }), J(n, "1d"), m.value = n;
331
+ const n = P(o, a);
332
+ Object.defineProperty(n, "__isGridTabsProxy", { value: !0, enumerable: !1 }), Z(n, "1d"), v.value = n;
332
333
  }
333
334
  }, { flush: "sync", deep: !1 });
334
- const N = {}, w = () => {
335
- console.log("[useGridTabs] resetInitialization called manually"), f = !1, F.clear();
336
- for (const t in N)
337
- delete N[t];
338
- }, O = (t) => {
339
- if (!t || t.length === 0) {
340
- c.value = "", f = !1;
335
+ const T = {}, O = () => {
336
+ console.log("[useGridTabs] resetInitialization called manually"), r = !1, U.clear();
337
+ for (const o in T)
338
+ delete T[o];
339
+ }, M = (o) => {
340
+ if (!o || o.length === 0) {
341
+ u.value = "", r = !1;
341
342
  return;
342
343
  }
343
- t[0].hasOwnProperty("tabId") || t[0].hasOwnProperty("items") && Array.isArray(t[0].items) ? b.value = t : m.value = t;
344
- }, k = (t) => {
345
- y.value = t;
346
- }, M = Se(() => ({
347
- tabsData: c.value,
344
+ o[0].hasOwnProperty("tabId") || o[0].hasOwnProperty("items") && Array.isArray(o[0].items) ? f.value = o : v.value = o;
345
+ }, x = (o) => {
346
+ h.value = o;
347
+ }, V = W(() => ({
348
+ tabsData: u.value,
348
349
  // 不再绑定 actionPayload 属性,完全走命令式 API,防止触发无意义的 Vue 节点更新
349
- onTabNeedsData: async (...t) => {
350
- let e = t[0];
351
- if (e && e.nativeEvent && (e = e.nativeEvent), !y.value.onTabNeedsData)
350
+ onTabNeedsData: async (...o) => {
351
+ let t = o[0];
352
+ if (t && t.nativeEvent && (t = t.nativeEvent), !h.value.onTabNeedsData)
352
353
  return;
353
- const { tabId: n, index: s, reason: v } = e;
354
- if (F.has(n)) {
354
+ const { tabId: n, index: g, reason: m } = t;
355
+ if (U.has(n)) {
355
356
  console.log(`[useGridTabs] onTabNeedsData SKIP: tabId=${n} 已经发起过请求,防止死循环`);
356
357
  return;
357
358
  }
358
- F.add(n);
359
+ U.add(n);
359
360
  try {
360
- const p = await y.value.onTabNeedsData(n, s, v);
361
- if (p && Array.isArray(p))
362
- if (N[n] = 1, p.length > 0) {
363
- const g = b.value.find((I) => I.tabId === n);
364
- g && (g.items ? g.items.length > 0 && g.items.splice(0, g.items.length) : g.items = [], g.items.push(...p), g.loadState = "ready", T({
361
+ const y = await h.value.onTabNeedsData(n, g, m);
362
+ if (y && Array.isArray(y))
363
+ if (T[n] = 1, y.length > 0) {
364
+ const b = f.value.find((k) => k.tabId === n);
365
+ b && (b.items ? b.items.length > 0 && b.items.splice(0, b.items.length) : b.items = [], b.items.push(...y), b.loadState = "ready", C({
365
366
  op: "UPDATE_TAB_STATE",
366
367
  itemId: n,
367
368
  payload: { loadState: "ready" }
368
369
  }));
369
370
  } else
370
371
  console.warn(`[useGridTabs] ⚠️ 警告: onTabNeedsData(tabId="${n}") 返回了空数组 []!`), console.warn("👉 如果你已经在此函数内手动调用了 push() 来追加数据,请在最后 return null 或 undefined。"), console.warn("👉 如果该 Tab 确实没有数据,返回 [] 可能会导致底层的 Header 等已有元素被清空,请注意检查。"), console.warn("👉 框架已为您拦截此次空数组覆盖,保留了当前的 DOM 结构。");
371
- } catch (p) {
372
- console.error("[useGridTabs] onTabNeedsData 执行失败:", p), F.delete(n);
372
+ } catch (y) {
373
+ console.error("[useGridTabs] onTabNeedsData 执行失败:", y), U.delete(n);
373
374
  }
374
375
  },
375
- onLoadMore: async (...t) => {
376
- let e = t[0];
377
- if (e && e.nativeEvent && (e = e.nativeEvent), !y.value.onLoadMore)
376
+ onLoadMore: async (...o) => {
377
+ let t = o[0];
378
+ if (t && t.nativeEvent && (t = t.nativeEvent), !h.value.onLoadMore)
378
379
  return;
379
- const { tabId: n, itemId: s } = e, p = (N[n] || 1) + 1;
380
- console.log(`[useGridTabs] 拦截到底层 onLoadMore,强行接管页码: tabId=${n}, pageNo=${p}`);
380
+ const { tabId: n, itemId: g } = t, y = (T[n] || 1) + 1;
381
+ console.log(`[useGridTabs] 拦截到底层 onLoadMore,强行接管页码: tabId=${n}, pageNo=${y}`);
381
382
  try {
382
- const g = await y.value.onLoadMore(n, p, s);
383
- if (g && Array.isArray(g))
384
- if (g.length > 0)
385
- if (N[n] = p, d)
386
- m.value.push(...g);
383
+ const b = await h.value.onLoadMore(n, y, g);
384
+ if (b && Array.isArray(b))
385
+ if (b.length > 0)
386
+ if (T[n] = y, l)
387
+ v.value.push(...b);
387
388
  else {
388
- const I = b.value.find((C) => C.tabId === n);
389
- I && I.items && I.items.push(...g);
389
+ const k = f.value.find((Q) => Q.tabId === n);
390
+ k && k.items && k.items.push(...b);
390
391
  }
391
392
  else
392
- console.warn(`[useGridTabs] ⚠️ 警告: onLoadMore(tabId="${n}", pageNo="${p}") 返回了空数组 []!`), console.warn('👉 如果这是你的最后一页数据,推荐在卡片列表中追加一个 type="no_more" 的 footer 卡片,而不是仅仅返回空。'), console.warn("👉 框架已忽略本次空数据追加,且不会自增页码。");
393
- } catch (g) {
394
- console.error("[useGridTabs] onLoadMore 业务层请求失败:", g);
393
+ console.warn(`[useGridTabs] ⚠️ 警告: onLoadMore(tabId="${n}", pageNo="${y}") 返回了空数组 []!`), console.warn('👉 如果这是你的最后一页数据,推荐在卡片列表中追加一个 type="no_more" 的 footer 卡片,而不是仅仅返回空。'), console.warn("👉 框架已忽略本次空数据追加,且不会自增页码。");
394
+ } catch (b) {
395
+ console.error("[useGridTabs] onLoadMore 业务层请求失败:", b);
395
396
  }
396
397
  },
397
- onItemPresence: (...t) => {
398
- let e = t[0];
399
- if (console.log("[useGridTabs] ⚡️ bindings caught onItemPresence:", e), y.value.onItemPresence)
398
+ onItemPresence: (...o) => {
399
+ let t = o[0];
400
+ if (console.log("[useGridTabs] ⚡️ bindings caught onItemPresence:", t), h.value.onItemPresence)
400
401
  try {
401
- let n = typeof e == "string" ? e : (e == null ? void 0 : e.nativeEvent) || e;
402
+ let n = typeof t == "string" ? t : (t == null ? void 0 : t.nativeEvent) || t;
402
403
  n && typeof n.data == "string" && (n = n.data);
403
- const s = typeof n == "string" ? JSON.parse(n) : n;
404
- s && s.type === "VIEW_PRESENCE_BATCH" && Array.isArray(s.payload) ? s.payload.forEach((v) => {
405
- v.itemId && typeof v.itemId == "string" && v.itemId.startsWith("fallback_pos_") && console.warn(`[useGridTabs] ⚠️ 警告:检测到列表项曝光 (index=${v.index}),但未配置 itemId。请检查传入的 items 数组,务必为每个数据项指定唯一的 itemId,否则底层无法准确进行去重与曝光上报。`), y.value.onItemPresence(v);
406
- }) : y.value.onItemPresence(s);
404
+ const g = typeof n == "string" ? JSON.parse(n) : n;
405
+ g && g.type === "VIEW_PRESENCE_BATCH" && Array.isArray(g.payload) ? g.payload.forEach((m) => {
406
+ m.itemId && typeof m.itemId == "string" && m.itemId.startsWith("fallback_pos_") && console.warn(`[useGridTabs] ⚠️ 警告:检测到列表项曝光 (index=${m.index}),但未配置 itemId。请检查传入的 items 数组,务必为每个数据项指定唯一的 itemId,否则底层无法准确进行去重与曝光上报。`), h.value.onItemPresence(m);
407
+ }) : h.value.onItemPresence(g);
407
408
  } catch (n) {
408
- console.error("[useGridTabs] Failed to parse onItemPresence event payload:", n), y.value.onItemPresence(e);
409
+ console.error("[useGridTabs] Failed to parse onItemPresence event payload:", n), h.value.onItemPresence(t);
409
410
  }
410
411
  },
411
- onTabSelected: (...t) => {
412
- let e = t[0];
413
- e && e.nativeEvent && (e = e.nativeEvent), y.value.onTabSelected && y.value.onTabSelected(e);
412
+ onTabSelected: (...o) => {
413
+ let t = o[0];
414
+ t && t.nativeEvent && (t = t.nativeEvent), h.value.onTabSelected && h.value.onTabSelected(t);
415
+ },
416
+ onTabClick: (...o) => {
417
+ let t = o[0];
418
+ t && t.nativeEvent && (t = t.nativeEvent), h.value.onTabClick && h.value.onTabClick(t);
414
419
  },
415
- onItemClick: (...t) => {
416
- let e = t[0];
417
- if (console.log("[useGridTabs] RAW onItemClick intercepted from Native:", e), e && e.nativeEvent && (e = e.nativeEvent), y.value.onItemClick)
420
+ onItemClick: (...o) => {
421
+ let t = o[0];
422
+ if (console.log("[useGridTabs] RAW onItemClick intercepted from Native:", t), t && t.nativeEvent && (t = t.nativeEvent), h.value.onItemClick)
418
423
  try {
419
- let n = typeof e == "string" ? e : (e == null ? void 0 : e.data) || e;
420
- const s = typeof n == "string" ? JSON.parse(n) : n;
421
- y.value.onItemClick(s);
424
+ let n = typeof t == "string" ? t : (t == null ? void 0 : t.data) || t;
425
+ const g = typeof n == "string" ? JSON.parse(n) : n;
426
+ h.value.onItemClick(g);
422
427
  } catch (n) {
423
- console.error("[useGridTabs] Failed to parse onItemClick event payload:", n), y.value.onItemClick(e);
428
+ console.error("[useGridTabs] Failed to parse onItemClick event payload:", n), h.value.onItemClick(t);
424
429
  }
425
430
  else
426
431
  console.warn("[useGridTabs] onItemClick triggered but NO callback registered in callbacksRef!");
427
432
  },
428
- onItemLongClick: (...t) => {
429
- let e = t[0];
430
- if (console.log("[useGridTabs] RAW onItemLongClick intercepted from Native:", e), typeof e == "number" && t.length >= 3 && typeof t[1] == "string" && (e = t[2]), e && e.nativeEvent && (e = e.nativeEvent), y.value.onItemLongClick)
433
+ onItemLongClick: (...o) => {
434
+ let t = o[0];
435
+ if (console.log("[useGridTabs] RAW onItemLongClick intercepted from Native:", t), typeof t == "number" && o.length >= 3 && typeof o[1] == "string" && (t = o[2]), t && t.nativeEvent && (t = t.nativeEvent), h.value.onItemLongClick)
431
436
  try {
432
- let n = typeof e == "string" ? e : (e == null ? void 0 : e.data) || e;
433
- const s = typeof n == "string" ? JSON.parse(n) : n;
434
- y.value.onItemLongClick(s);
437
+ let n = typeof t == "string" ? t : (t == null ? void 0 : t.data) || t;
438
+ const g = typeof n == "string" ? JSON.parse(n) : n;
439
+ h.value.onItemLongClick(g);
435
440
  } catch (n) {
436
- console.error("[useGridTabs] Failed to parse onItemLongClick event payload:", n), y.value.onItemLongClick(e);
441
+ console.error("[useGridTabs] Failed to parse onItemLongClick event payload:", n), h.value.onItemLongClick(t);
437
442
  }
438
443
  },
439
- onItemFocused: (...t) => {
440
- let e = t[0];
441
- if (e && e.nativeEvent && (e = e.nativeEvent), y.value.onItemFocused)
444
+ onItemFocused: (...o) => {
445
+ let t = o[0];
446
+ if (t && t.nativeEvent && (t = t.nativeEvent), h.value.onItemFocused)
442
447
  try {
443
- let n = typeof e == "string" ? e : (e == null ? void 0 : e.data) || e;
444
- const s = typeof n == "string" ? JSON.parse(n) : n;
445
- y.value.onItemFocused(s);
448
+ let n = typeof t == "string" ? t : (t == null ? void 0 : t.data) || t;
449
+ const g = typeof n == "string" ? JSON.parse(n) : n;
450
+ h.value.onItemFocused(g);
446
451
  } catch (n) {
447
- console.error("[useGridTabs] Failed to parse onItemFocused event payload:", n), y.value.onItemFocused(e);
452
+ console.error("[useGridTabs] Failed to parse onItemFocused event payload:", n), h.value.onItemFocused(t);
448
453
  }
449
454
  },
450
- onTabFocused: (...t) => {
451
- let e = t[0];
452
- e && e.nativeEvent && (e = e.nativeEvent), y.value.onTabFocused && y.value.onTabFocused(e);
455
+ onTabFocused: (...o) => {
456
+ let t = o[0];
457
+ t && t.nativeEvent && (t = t.nativeEvent), h.value.onTabFocused && h.value.onTabFocused(t);
453
458
  },
454
- onScroll: (...t) => {
455
- let e = t[0];
456
- if (e && e.nativeEvent && (e = e.nativeEvent), y.value.onScroll)
459
+ onScroll: (...o) => {
460
+ let t = o[0];
461
+ if (t && t.nativeEvent && (t = t.nativeEvent), h.value.onScroll)
457
462
  try {
458
- const n = (e == null ? void 0 : e.data) || e;
459
- y.value.onScroll(n);
463
+ const n = (t == null ? void 0 : t.data) || t;
464
+ h.value.onScroll(n);
460
465
  } catch {
461
- y.value.onScroll(e);
466
+ h.value.onScroll(t);
462
467
  }
463
468
  },
464
- onScrollStateChanged: (...t) => {
465
- let e = t[0];
466
- if (e && e.nativeEvent && (e = e.nativeEvent), y.value.onScrollStateChanged)
469
+ onScrollStateChanged: (...o) => {
470
+ let t = o[0];
471
+ if (t && t.nativeEvent && (t = t.nativeEvent), h.value.onScrollStateChanged)
467
472
  try {
468
- const n = (e == null ? void 0 : e.data) || e;
469
- y.value.onScrollStateChanged(n);
473
+ const n = (t == null ? void 0 : t.data) || t;
474
+ h.value.onScrollStateChanged(n);
470
475
  } catch {
471
- y.value.onScrollStateChanged(e);
476
+ h.value.onScrollStateChanged(t);
472
477
  }
473
478
  }
474
479
  }));
475
480
  return {
476
- tabsDataStr: c,
477
- bindings: M,
478
- tabs: b,
479
- items: m,
480
- initData: O,
481
- setCallbacks: k,
482
- updateItem: (t, e) => {
483
- if (!f) {
481
+ tabsDataStr: u,
482
+ bindings: V,
483
+ tabs: f,
484
+ items: v,
485
+ initData: M,
486
+ setCallbacks: x,
487
+ updateItem: (o, t) => {
488
+ if (!r) {
484
489
  console.error("[useGridTabs] ❌ 时机错误: 尚未初始化数据,无法调用 updateItem");
485
490
  return;
486
491
  }
487
- T({ op: "UPDATE_ITEM", itemId: t, payload: e }), i = !0;
492
+ C({ op: "UPDATE_ITEM", itemId: o, payload: t }), d = !0;
488
493
  try {
489
- if (d) {
490
- const n = m.value.find((s) => s.id === t);
491
- n && Object.assign(n, e);
494
+ if (l) {
495
+ const n = v.value.find((g) => g.id === o);
496
+ n && Object.assign(n, t);
492
497
  } else
493
- for (const n of b.value)
498
+ for (const n of f.value)
494
499
  if (n.items) {
495
- const s = n.items.find((v) => v.id === t);
496
- if (s) {
497
- Object.assign(s, e);
500
+ const g = n.items.find((m) => m.id === o);
501
+ if (g) {
502
+ Object.assign(g, t);
498
503
  break;
499
504
  }
500
505
  }
501
506
  } finally {
502
- i = !1;
507
+ d = !1;
503
508
  }
504
509
  },
505
- deleteItem: (t, e = !0) => {
506
- if (f) {
507
- T({ op: "DELETE_ITEM", itemId: t, payload: { animated: e } }), i = !0;
510
+ deleteItem: (o, t = !0) => {
511
+ if (r) {
512
+ C({ op: "DELETE_ITEM", itemId: o, payload: { animated: t } }), d = !0;
508
513
  try {
509
- if (d) {
510
- const n = m.value.findIndex((s) => s.id === t);
511
- n !== -1 && m.value.splice(n, 1);
514
+ if (l) {
515
+ const n = v.value.findIndex((g) => g.id === o);
516
+ n !== -1 && v.value.splice(n, 1);
512
517
  } else
513
- for (const n of b.value)
518
+ for (const n of f.value)
514
519
  if (n.items) {
515
- const s = n.items.findIndex((v) => v.id === t);
516
- if (s !== -1) {
517
- n.items.splice(s, 1);
520
+ const g = n.items.findIndex((m) => m.id === o);
521
+ if (g !== -1) {
522
+ n.items.splice(g, 1);
518
523
  break;
519
524
  }
520
525
  }
521
526
  } finally {
522
- i = !1;
527
+ d = !1;
523
528
  }
524
529
  }
525
530
  },
526
- prependItems: (t, e) => {
527
- if (f) {
528
- T({
531
+ prependItems: (o, t) => {
532
+ if (r) {
533
+ C({
529
534
  op: "PREPEND_SUB_ITEMS",
530
- itemId: t,
531
- payload: { subItems: e }
532
- }), i = !0;
535
+ itemId: o,
536
+ payload: { subItems: t }
537
+ }), d = !0;
533
538
  try {
534
- if (d)
535
- m.value.unshift(...e);
539
+ if (l)
540
+ v.value.unshift(...t);
536
541
  else {
537
- const n = b.value.find((s) => s.tabId === t);
538
- n && n.items && n.items.unshift(...e);
542
+ const n = f.value.find((g) => g.tabId === o);
543
+ n && n.items && n.items.unshift(...t);
539
544
  }
540
545
  } finally {
541
- i = !1;
546
+ d = !1;
542
547
  }
543
548
  }
544
549
  },
545
- clearItems: (t) => {
546
- if (f) {
547
- T({
550
+ clearItems: (o) => {
551
+ if (r) {
552
+ C({
548
553
  op: "CLEAR_SUB_ITEMS",
549
- itemId: t
550
- }), i = !0;
554
+ itemId: o
555
+ }), d = !0;
551
556
  try {
552
- if (d)
553
- m.value.splice(0, m.value.length);
557
+ if (l)
558
+ v.value.splice(0, v.value.length);
554
559
  else {
555
- const e = b.value.find((n) => n.tabId === t);
556
- e && e.items && e.items.splice(0, e.items.length);
560
+ const t = f.value.find((n) => n.tabId === o);
561
+ t && t.items && t.items.splice(0, t.items.length);
557
562
  }
558
563
  } finally {
559
- i = !1;
564
+ d = !1;
560
565
  }
561
566
  }
562
567
  },
563
- moveItem: (t, e, n) => {
564
- if (f) {
565
- T({
568
+ moveItem: (o, t, n) => {
569
+ if (r) {
570
+ C({
566
571
  op: "MOVE_ITEM",
567
- itemId: t,
568
- payload: { targetPosition: e, anchorItemId: n }
569
- }), i = !0;
572
+ itemId: o,
573
+ payload: { targetPosition: t, anchorItemId: n }
574
+ }), d = !0;
570
575
  try {
571
- const s = (v) => {
572
- const p = v.findIndex((I) => I.id === t), g = v.findIndex((I) => I.id === n);
573
- if (p !== -1 && g !== -1) {
574
- const I = v.splice(p, 1)[0], C = v.findIndex((Ae) => Ae.id === n), W = e === "after" ? C + 1 : C;
575
- v.splice(W, 0, I);
576
+ const g = (m) => {
577
+ const y = m.findIndex((k) => k.id === o), b = m.findIndex((k) => k.id === n);
578
+ if (y !== -1 && b !== -1) {
579
+ const k = m.splice(y, 1)[0], Q = m.findIndex((Ye) => Ye.id === n), K = t === "after" ? Q + 1 : Q;
580
+ m.splice(K, 0, k);
576
581
  }
577
582
  };
578
- if (d)
579
- s(m.value);
583
+ if (l)
584
+ g(v.value);
580
585
  else
581
- for (const v of b.value)
582
- v.items && s(v.items);
586
+ for (const m of f.value)
587
+ m.items && g(m.items);
583
588
  } finally {
584
- i = !1;
589
+ d = !1;
585
590
  }
586
591
  }
587
592
  },
588
- replaceItem: (t, e) => {
589
- if (f) {
590
- T({
593
+ replaceItem: (o, t) => {
594
+ if (r) {
595
+ C({
591
596
  op: "REPLACE_ITEM",
592
- itemId: t,
593
- payload: e
594
- }), i = !0;
597
+ itemId: o,
598
+ payload: t
599
+ }), d = !0;
595
600
  try {
596
- if (d) {
597
- const n = m.value.findIndex((s) => s.id === t);
598
- n !== -1 && (m.value[n] = e);
601
+ if (l) {
602
+ const n = v.value.findIndex((g) => g.id === o);
603
+ n !== -1 && (v.value[n] = t);
599
604
  } else
600
- for (const n of b.value)
605
+ for (const n of f.value)
601
606
  if (n.items) {
602
- const s = n.items.findIndex((v) => v.id === t);
603
- if (s !== -1) {
604
- n.items[s] = e;
607
+ const g = n.items.findIndex((m) => m.id === o);
608
+ if (g !== -1) {
609
+ n.items[g] = t;
605
610
  break;
606
611
  }
607
612
  }
608
613
  } finally {
609
- i = !1;
614
+ d = !1;
610
615
  }
611
616
  }
612
617
  },
613
- dispatchAction: T,
614
- resetInitialization: w,
615
- getFocusState: async () => new Promise((t, e) => {
616
- let n = o.value;
617
- typeof o.value.getNativeNode == "function" ? n = o.value.getNativeNode() || o.value : o.value.nativeRef && (n = o.value.nativeRef), console.log("[useGridTabs] getFocusState called, nativeTarget:", n);
618
- const s = (v) => {
619
- if (console.log("[useGridTabs] getFocusState callback received:", v), v && v.isSuccess !== void 0 && v.result !== void 0) {
620
- t(v.result);
618
+ dispatchAction: C,
619
+ resetInitialization: O,
620
+ getFocusState: async () => new Promise((o, t) => {
621
+ let n = e.value;
622
+ typeof e.value.getNativeNode == "function" ? n = e.value.getNativeNode() || e.value : e.value.nativeRef && (n = e.value.nativeRef), console.log("[useGridTabs] getFocusState called, nativeTarget:", n);
623
+ const g = (m) => {
624
+ if (console.log("[useGridTabs] getFocusState callback received:", m), m && m.isSuccess !== void 0 && m.result !== void 0) {
625
+ o(m.result);
621
626
  return;
622
627
  }
623
628
  try {
624
- const p = typeof v == "string" ? JSON.parse(v) : v;
625
- t(p);
626
- } catch (p) {
627
- e(p);
629
+ const y = typeof m == "string" ? JSON.parse(m) : m;
630
+ o(y);
631
+ } catch (y) {
632
+ t(y);
628
633
  }
629
634
  };
630
- typeof E.callUIFunction == "function" ? (console.log('[useGridTabs] Executing Native.callUIFunction("getFocusState") with callback as 4th arg'), E.callUIFunction(n, "getFocusState", [], s)) : (console.error("[useGridTabs] Native.callUIFunction is not available"), e(new Error("Native.callUIFunction is not available")));
635
+ typeof N.callUIFunction == "function" ? (console.log('[useGridTabs] Executing Native.callUIFunction("getFocusState") with callback as 4th arg'), N.callUIFunction(n, "getFocusState", [], g)) : (console.error("[useGridTabs] Native.callUIFunction is not available"), t(new Error("Native.callUIFunction is not available")));
631
636
  }),
632
- getItemRect: async (t) => new Promise((e, n) => {
633
- let s = o.value;
634
- typeof o.value.getNativeNode == "function" ? s = o.value.getNativeNode() || o.value : o.value.nativeRef && (s = o.value.nativeRef), console.log(`[useGridTabs] getItemRect called for itemId=${t}, nativeTarget:`, s);
635
- const v = (p) => {
636
- if (console.log(`[useGridTabs] getItemRect callback received for itemId=${t}:`, p), p && p.isSuccess !== void 0 && p.result !== void 0) {
637
- e(p.result);
637
+ getItemRect: async (o) => new Promise((t, n) => {
638
+ let g = e.value;
639
+ typeof e.value.getNativeNode == "function" ? g = e.value.getNativeNode() || e.value : e.value.nativeRef && (g = e.value.nativeRef), console.log(`[useGridTabs] getItemRect called for itemId=${o}, nativeTarget:`, g);
640
+ const m = (y) => {
641
+ if (console.log(`[useGridTabs] getItemRect callback received for itemId=${o}:`, y), y && y.isSuccess !== void 0 && y.result !== void 0) {
642
+ t(y.result);
638
643
  return;
639
644
  }
640
645
  try {
641
- const g = typeof p == "string" ? JSON.parse(p) : p;
642
- e(g);
643
- } catch (g) {
644
- n(g);
646
+ const b = typeof y == "string" ? JSON.parse(y) : y;
647
+ t(b);
648
+ } catch (b) {
649
+ n(b);
645
650
  }
646
651
  };
647
- typeof E.callUIFunction == "function" ? (console.log('[useGridTabs] Executing Native.callUIFunction("getItemRect") with itemId and callback as 4th arg'), E.callUIFunction(s, "getItemRect", [t], v)) : (console.error("[useGridTabs] Native.callUIFunction is not available"), n(new Error("Native.callUIFunction is not available")));
652
+ typeof N.callUIFunction == "function" ? (console.log('[useGridTabs] Executing Native.callUIFunction("getItemRect") with itemId and callback as 4th arg'), N.callUIFunction(g, "getItemRect", [o], m)) : (console.error("[useGridTabs] Native.callUIFunction is not available"), n(new Error("Native.callUIFunction is not available")));
648
653
  }),
649
- requestFocus: (t) => {
650
- let e = o.value;
651
- typeof o.value.getNativeNode == "function" ? e = o.value.getNativeNode() || o.value : o.value.nativeRef && (e = o.value.nativeRef), E.callUIFunction(e, "requestFocus", [t]);
654
+ requestFocus: (o) => {
655
+ let t = e.value;
656
+ typeof e.value.getNativeNode == "function" ? t = e.value.getNativeNode() || e.value : e.value.nativeRef && (t = e.value.nativeRef), N.callUIFunction(t, "requestFocus", [o]);
652
657
  },
653
- updatePageSpec: (t) => {
654
- if (!f)
658
+ updatePageSpec: (o) => {
659
+ if (!r)
655
660
  return;
656
- const e = Object.assign({}, JSON.parse(c.value).page_spec, t);
657
- t.layout && (e.navConfig = Object.assign({}, e.navConfig, t.layout)), t.navConfig && (e.navConfig = Object.assign({}, e.navConfig, t.navConfig)), t.contentConfig && (e.contentConfig = Object.assign({}, e.contentConfig, t.contentConfig)), r && Object.assign(r, e), T({
661
+ const t = Object.assign({}, JSON.parse(u.value).page_spec, o);
662
+ o.layout && (t.navConfig = Object.assign({}, t.navConfig, o.layout)), o.navConfig && (t.navConfig = Object.assign({}, t.navConfig, o.navConfig)), o.contentConfig && (t.contentConfig = Object.assign({}, t.contentConfig, o.contentConfig)), s && Object.assign(s, t), C({
658
663
  op: "RELOAD_TABS",
659
664
  payload: {
660
- pageSpec: e,
661
- page_spec: e,
662
- tabs: b.value
665
+ pageSpec: t,
666
+ page_spec: t,
667
+ tabs: f.value
663
668
  }
664
669
  });
665
- const n = JSON.parse(c.value);
666
- n.page_spec = e, c.value = JSON.stringify(n), l = c.value;
670
+ const n = JSON.parse(u.value);
671
+ n.page_spec = t, u.value = JSON.stringify(n), c = u.value;
667
672
  },
668
- reloadAll: (t, e) => {
669
- r && (Object.keys(r).forEach((n) => delete r[n]), Object.assign(r, t)), b.value = e, T({
673
+ reloadAll: (o, t) => {
674
+ s && (Object.keys(s).forEach((n) => delete s[n]), Object.assign(s, o)), f.value = t, C({
670
675
  op: "RELOAD_TABS",
671
676
  payload: {
672
- pageSpec: t,
673
- page_spec: t,
674
- tabs: e
677
+ pageSpec: o,
678
+ page_spec: o,
679
+ tabs: t
675
680
  }
676
681
  });
677
682
  },
678
683
  scrollToTop: () => {
679
- let t = o.value;
680
- typeof o.value.getNativeNode == "function" ? t = o.value.getNativeNode() || o.value : o.value.nativeRef && (t = o.value.nativeRef), E.callUIFunction(t, "scrollToTop", []);
684
+ let o = e.value;
685
+ typeof e.value.getNativeNode == "function" ? o = e.value.getNativeNode() || e.value : e.value.nativeRef && (o = e.value.nativeRef), N.callUIFunction(o, "scrollToTop", []);
681
686
  }
682
687
  };
683
688
  }
684
- const le = "QtKeyboard", re = /* @__PURE__ */ D({
689
+ const ye = "QtKeyboard", he = /* @__PURE__ */ w({
685
690
  __name: "Keyboard",
686
691
  props: {
687
692
  backgroundColor: {},
@@ -701,275 +706,989 @@ const le = "QtKeyboard", re = /* @__PURE__ */ D({
701
706
  rememberKeyboardType: { type: Boolean }
702
707
  },
703
708
  emits: ["onInputChanged", "onKeyPressed"],
704
- setup(o, { expose: u }) {
705
- const c = x(), r = V(), b = le + "_Plugin", d = (r.isPluginActive ? b : le).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), f = K(
706
- d,
707
- r.pluginPackageName || "com.quicktvui.plugin.extraui",
709
+ setup(e, { expose: i }) {
710
+ const u = A(), s = _(), f = ye + "_Plugin", l = (s.isPluginActive ? f : ye).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
711
+ l,
712
+ s.pluginPackageName || "com.quicktvui.plugin.extraui",
708
713
  "com.quicktvui.plugin.extraui.ExtraUIPluginApp"
709
714
  );
710
- return u({
715
+ return i({
711
716
  getNativeNode: () => {
712
- var a, l;
713
- return ((l = (a = c.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : l.call(a)) || c.value;
717
+ var a, c;
718
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
714
719
  },
715
720
  requestFocus: (...a) => {
716
- var i, y;
717
- const l = ((y = (i = c.value) == null ? void 0 : i.getNativeNode) == null ? void 0 : y.call(i)) || c.value;
718
- l && E.callUIFunction(l, "requestFocus", a);
721
+ var d, h;
722
+ const c = ((h = (d = u.value) == null ? void 0 : d.getNativeNode) == null ? void 0 : h.call(d)) || u.value;
723
+ c && N.callUIFunction(c, "requestFocus", a);
719
724
  }
720
- }), (a, l) => (q(), R(U(f), Q({
725
+ }), (a, c) => (S(), $(D(r), B({
721
726
  ref_key: "nativeRef",
722
- ref: c,
723
- backgroundColor: o.backgroundColor,
724
- backgroundGradient: o.backgroundGradient,
725
- textColor: o.textColor,
726
- weakTextColor: o.weakTextColor,
727
- focusBackgroundColor: o.focusBackgroundColor,
728
- focusTextColor: o.focusTextColor,
729
- placeholder: o.placeholder,
730
- textFullKeyboard: o.textFullKeyboard,
731
- textT9Keyboard: o.textT9Keyboard,
732
- keyboardType: o.keyboardType,
733
- textClear: o.textClear,
734
- textDelete: o.textDelete,
735
- currentInput: o.currentInput,
736
- autofocus: o.autofocus,
737
- rememberKeyboardType: o.rememberKeyboardType,
738
- onOnInputChanged: l[0] || (l[0] = (i) => a.$emit("onInputChanged", i.nativeEvent)),
739
- onOnKeyPressed: l[1] || (l[1] = (i) => a.$emit("onKeyPressed", i.nativeEvent))
727
+ ref: u,
728
+ backgroundColor: e.backgroundColor,
729
+ backgroundGradient: e.backgroundGradient,
730
+ textColor: e.textColor,
731
+ weakTextColor: e.weakTextColor,
732
+ focusBackgroundColor: e.focusBackgroundColor,
733
+ focusTextColor: e.focusTextColor,
734
+ placeholder: e.placeholder,
735
+ textFullKeyboard: e.textFullKeyboard,
736
+ textT9Keyboard: e.textT9Keyboard,
737
+ keyboardType: e.keyboardType,
738
+ textClear: e.textClear,
739
+ textDelete: e.textDelete,
740
+ currentInput: e.currentInput,
741
+ autofocus: e.autofocus,
742
+ rememberKeyboardType: e.rememberKeyboardType,
743
+ onOnInputChanged: c[0] || (c[0] = (d) => a.$emit("onInputChanged", d.nativeEvent)),
744
+ onOnKeyPressed: c[1] || (c[1] = (d) => a.$emit("onKeyPressed", d.nativeEvent))
740
745
  }, a.$attrs), {
741
- default: B(() => [
742
- j(a.$slots, "default")
746
+ default: R(() => [
747
+ F(a.$slots, "default")
743
748
  ]),
744
749
  _: 3
745
750
  }, 16, ["backgroundColor", "backgroundGradient", "textColor", "weakTextColor", "focusBackgroundColor", "focusTextColor", "placeholder", "textFullKeyboard", "textT9Keyboard", "keyboardType", "textClear", "textDelete", "currentInput", "autofocus", "rememberKeyboardType"]));
746
751
  }
747
752
  });
748
- let X;
749
- var ye;
753
+ let oe;
754
+ var ze;
750
755
  try {
751
- const o = require("@extscreen/es3-vue");
752
- X = o.registerElement || ((ye = o.default) == null ? void 0 : ye.registerElement);
756
+ const e = require("@extscreen/es3-vue");
757
+ oe = e.registerElement || ((ze = e.default) == null ? void 0 : ze.registerElement);
753
758
  } catch {
754
759
  }
755
- const Ge = {
756
- install: (o) => {
760
+ const lt = {
761
+ install: (e) => {
757
762
  if (!globalThis.__QtKeyboard_registered)
758
- if (X) {
759
- const u = (c, r) => {
760
- X(c, {
763
+ if (oe) {
764
+ const i = (u, s) => {
765
+ oe(u, {
761
766
  component: {
762
- name: r ? "QtKeyboard_Plugin" : "QtKeyboard",
763
- processEventData(b, m) {
764
- const d = b.handler || b, f = m || (d == null ? void 0 : d.nativeParams) || {};
765
- return d && (d.nativeEvent = f), d;
767
+ name: s ? "QtKeyboard_Plugin" : "QtKeyboard",
768
+ processEventData(f, v) {
769
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
770
+ return l && (l.nativeEvent = r), l;
766
771
  }
767
772
  }
768
773
  });
769
774
  };
770
- u("qt-keyboard", !1), u("qt-keyboard-plugin", !0), u("QtKeyboard", !1), u("QtKeyboard_Plugin", !0), globalThis.__QtKeyboard_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtKeyboard");
775
+ i("qt-keyboard", !1), i("qt-keyboard-plugin", !0), i("QtKeyboard", !1), i("QtKeyboard_Plugin", !0), globalThis.__QtKeyboard_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtKeyboard");
771
776
  } else
772
777
  console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
773
- o.component("Keyboard", re), o.component("qt-keyboard", re);
778
+ e.component("Keyboard", he), e.component("qt-keyboard", he);
774
779
  }
775
- }, ce = "QtPortalPool", ue = /* @__PURE__ */ D({
780
+ }, pe = "QtPortalPool", Ce = /* @__PURE__ */ w({
776
781
  __name: "PortalPool",
777
- setup(o, { expose: u }) {
778
- const c = x(), r = V(), b = ce + "_Plugin", d = (r.isPluginActive ? b : ce).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), f = K(
779
- d,
780
- r.pluginPackageName || "com.quicktvui.plugin.glintui"
782
+ setup(e, { expose: i }) {
783
+ const u = A(), s = _(), f = pe + "_Plugin", l = (s.isPluginActive ? f : pe).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
784
+ l,
785
+ s.pluginPackageName || "com.quicktvui.plugin.glintui"
781
786
  );
782
- return u({
787
+ return i({
783
788
  getNativeNode: () => {
784
- var a, l;
785
- return ((l = (a = c.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : l.call(a)) || c.value;
789
+ var a, c;
790
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
786
791
  }
787
- }), (a, l) => (q(), R(U(f), Q({
792
+ }), (a, c) => (S(), $(D(r), B({
788
793
  ref_key: "nativeRef",
789
- ref: c
794
+ ref: u,
795
+ style: { position: "absolute" },
796
+ absolute: !0
790
797
  }, a.$attrs), {
791
- default: B(() => [
792
- j(a.$slots, "default")
798
+ default: R(() => [
799
+ F(a.$slots, "default")
793
800
  ]),
794
801
  _: 3
795
802
  }, 16));
796
803
  }
797
804
  });
798
- let ee;
799
- var Pe;
805
+ let ne;
806
+ var Me;
800
807
  try {
801
- const o = require("@extscreen/es3-vue");
802
- ee = o.registerElement || ((Pe = o.default) == null ? void 0 : Pe.registerElement);
808
+ const e = require("@extscreen/es3-vue");
809
+ ne = e.registerElement || ((Me = e.default) == null ? void 0 : Me.registerElement);
803
810
  } catch {
804
811
  }
805
- const Oe = {
806
- install: (o) => {
812
+ const rt = {
813
+ install: (e) => {
807
814
  if (!globalThis.__QtPortalPool_registered)
808
- if (ee) {
809
- const u = (c, r) => {
810
- ee(c, {
815
+ if (ne) {
816
+ const i = (u, s) => {
817
+ ne(u, {
811
818
  component: {
812
- name: r ? "QtPortalPool_Plugin" : "QtPortalPool",
813
- processEventData(b, m) {
814
- const d = b.handler || b, f = m || (d == null ? void 0 : d.nativeParams) || {};
815
- return d && (d.nativeEvent = f), d;
819
+ name: s ? "QtPortalPool_Plugin" : "QtPortalPool",
820
+ processEventData(f, v) {
821
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
822
+ return l && (l.nativeEvent = r), l;
816
823
  }
817
824
  }
818
825
  });
819
826
  };
820
- u("qt-portal-pool", !1), u("qt-portal-pool-plugin", !0), u("QtPortalPool", !1), u("QtPortalPool_Plugin", !0), globalThis.__QtPortalPool_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtPortalPool");
827
+ i("qt-portal-pool", !1), i("qt-portal-pool-plugin", !0), i("QtPortalPool", !1), i("QtPortalPool_Plugin", !0), globalThis.__QtPortalPool_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtPortalPool");
821
828
  } else
822
829
  console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
823
- o.component("PortalPool", ue), o.component("qt-portal-pool", ue);
830
+ e.component("PortalPool", Ce), e.component("qt-portal-pool", Ce);
824
831
  }
825
- }, de = "QtPortalItem", fe = /* @__PURE__ */ D({
832
+ }, ke = "QtPortalItem", Ie = /* @__PURE__ */ w({
826
833
  __name: "PortalItem",
827
834
  props: {
828
835
  portalId: {}
829
836
  },
830
- setup(o, { expose: u }) {
831
- const c = x(), r = V(), b = de + "_Plugin", d = (r.isPluginActive ? b : de).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), f = K(
832
- d,
833
- r.pluginPackageName || "com.quicktvui.plugin.glintui"
837
+ setup(e, { expose: i }) {
838
+ const u = A(), s = _(), f = ke + "_Plugin", l = (s.isPluginActive ? f : ke).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
839
+ l,
840
+ s.pluginPackageName || "com.quicktvui.plugin.glintui"
834
841
  );
835
- return u({
842
+ return i({
836
843
  getNativeNode: () => {
837
- var a, l;
838
- return ((l = (a = c.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : l.call(a)) || c.value;
844
+ var a, c;
845
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
839
846
  }
840
- }), (a, l) => (q(), R(U(f), Q({
847
+ }), (a, c) => (S(), $(D(r), B({
841
848
  ref_key: "nativeRef",
842
- ref: c,
843
- portalId: o.portalId
849
+ ref: u,
850
+ style: { position: "absolute" },
851
+ absolute: !0,
852
+ portalId: e.portalId
844
853
  }, a.$attrs), {
845
- default: B(() => [
846
- j(a.$slots, "default")
854
+ default: R(() => [
855
+ F(a.$slots, "default")
847
856
  ]),
848
857
  _: 3
849
858
  }, 16, ["portalId"]));
850
859
  }
851
860
  });
852
- let te;
853
- var Te;
861
+ let ae;
862
+ var De;
854
863
  try {
855
- const o = require("@extscreen/es3-vue");
856
- te = o.registerElement || ((Te = o.default) == null ? void 0 : Te.registerElement);
864
+ const e = require("@extscreen/es3-vue");
865
+ ae = e.registerElement || ((De = e.default) == null ? void 0 : De.registerElement);
857
866
  } catch {
858
867
  }
859
- const Fe = {
860
- install: (o) => {
868
+ const st = {
869
+ install: (e) => {
861
870
  if (!globalThis.__QtPortalItem_registered)
862
- if (te) {
863
- const u = (c, r) => {
864
- te(c, {
871
+ if (ae) {
872
+ const i = (u, s) => {
873
+ ae(u, {
865
874
  component: {
866
- name: r ? "QtPortalItem_Plugin" : "QtPortalItem",
867
- processEventData(b, m) {
868
- const d = b.handler || b, f = m || (d == null ? void 0 : d.nativeParams) || {};
869
- return d && (d.nativeEvent = f), d;
875
+ name: s ? "QtPortalItem_Plugin" : "QtPortalItem",
876
+ processEventData(f, v) {
877
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
878
+ return l && (l.nativeEvent = r), l;
870
879
  }
871
880
  }
872
881
  });
873
882
  };
874
- u("qt-portal-item", !1), u("qt-portal-item-plugin", !0), u("QtPortalItem", !1), u("QtPortalItem_Plugin", !0), globalThis.__QtPortalItem_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtPortalItem");
883
+ i("qt-portal-item", !1), i("qt-portal-item-plugin", !0), i("QtPortalItem", !1), i("QtPortalItem_Plugin", !0), globalThis.__QtPortalItem_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtPortalItem");
875
884
  } else
876
885
  console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
877
- o.component("PortalItem", fe), o.component("qt-portal-item", fe);
886
+ e.component("PortalItem", Ie), e.component("qt-portal-item", Ie);
878
887
  }
879
- }, ve = "QtHsvBackground", ge = /* @__PURE__ */ D({
888
+ }, Ne = "QtHsvBackground", Te = /* @__PURE__ */ w({
880
889
  __name: "HsvBackground",
881
890
  props: {
882
- hue: { default: -2 }
891
+ hue: {},
892
+ hueDuration: {}
883
893
  },
884
- setup(o, { expose: u }) {
885
- const c = x(), r = V(), b = ve + "_Plugin", d = (r.isPluginActive ? b : ve).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), f = K(
886
- d,
887
- r.pluginPackageName || "com.quicktvui.plugin.glintui"
894
+ setup(e, { expose: i }) {
895
+ const u = A(), s = _(), f = Ne + "_Plugin", l = (s.isPluginActive ? f : Ne).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
896
+ l,
897
+ s.pluginPackageName || "com.quicktvui.plugin.glintui"
888
898
  );
889
- return u({
899
+ return i({
890
900
  getNativeNode: () => {
891
- var a, l;
892
- return ((l = (a = c.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : l.call(a)) || c.value;
901
+ var a, c;
902
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
893
903
  }
894
- }), (a, l) => (q(), R(U(f), Q({
904
+ }), (a, c) => (S(), $(D(r), B({
895
905
  ref_key: "nativeRef",
896
- ref: c,
897
- hue: o.hue
906
+ ref: u,
907
+ hue: e.hue,
908
+ hueDuration: e.hueDuration
898
909
  }, a.$attrs), {
899
- default: B(() => [
900
- j(a.$slots, "default")
910
+ default: R(() => [
911
+ F(a.$slots, "default")
901
912
  ]),
902
913
  _: 3
903
- }, 16, ["hue"]));
914
+ }, 16, ["hue", "hueDuration"]));
904
915
  }
905
- }), Me = {
906
- install(o) {
907
- o.component("qt-hsv-background", ge), o.component("HsvBackground", ge);
916
+ });
917
+ let ie;
918
+ var Le;
919
+ try {
920
+ const e = require("@extscreen/es3-vue");
921
+ ie = e.registerElement || ((Le = e.default) == null ? void 0 : Le.registerElement);
922
+ } catch {
923
+ }
924
+ const ct = {
925
+ install: (e) => {
926
+ if (!globalThis.__QtHsvBackground_registered)
927
+ if (ie) {
928
+ const i = (u, s) => {
929
+ ie(u, {
930
+ component: {
931
+ name: s ? "QtHsvBackground_Plugin" : "QtHsvBackground",
932
+ processEventData(f, v) {
933
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
934
+ return l && (l.nativeEvent = r), l;
935
+ }
936
+ }
937
+ });
938
+ };
939
+ i("qt-hsv-background", !1), i("qt-hsv-background-plugin", !0), i("QtHsvBackground", !1), i("QtHsvBackground_Plugin", !0), globalThis.__QtHsvBackground_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtHsvBackground");
940
+ } else
941
+ console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
942
+ e.component("HsvBackground", Te), e.component("qt-hsv-background", Te);
908
943
  }
909
- }, pe = "QtSvgImage", me = /* @__PURE__ */ D({
944
+ }, Se = "QtSvgImage", Pe = /* @__PURE__ */ w({
910
945
  __name: "SvgImage",
911
946
  props: {
912
947
  src: {},
913
948
  tintColor: {}
914
949
  },
915
- setup(o, { expose: u }) {
916
- const c = x(), r = V(), b = pe + "_Plugin", d = (r.isPluginActive ? b : pe).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), f = K(
917
- d,
918
- r.pluginPackageName || "com.quicktvui.plugin.extraui",
950
+ setup(e, { expose: i }) {
951
+ const u = A(), s = _(), f = Se + "_Plugin", l = (s.isPluginActive ? f : Se).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
952
+ l,
953
+ s.pluginPackageName || "com.quicktvui.plugin.extraui",
919
954
  "com.quicktvui.plugin.extraui.ExtraUIPluginApp"
920
955
  );
921
- return u({
956
+ return i({
922
957
  getNativeNode: () => {
923
- var a, l;
924
- return ((l = (a = c.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : l.call(a)) || c.value;
958
+ var a, c;
959
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
925
960
  }
926
- }), (a, l) => (q(), R(U(f), Q({
961
+ }), (a, c) => (S(), $(D(r), B({
927
962
  ref_key: "nativeRef",
928
- ref: c,
929
- src: o.src,
930
- tintColor: o.tintColor
963
+ ref: u,
964
+ src: e.src,
965
+ tintColor: e.tintColor
931
966
  }, a.$attrs), {
932
- default: B(() => [
933
- j(a.$slots, "default")
967
+ default: R(() => [
968
+ F(a.$slots, "default")
934
969
  ]),
935
970
  _: 3
936
971
  }, 16, ["src", "tintColor"]));
937
972
  }
938
973
  });
939
- let ne;
940
- var Ie;
974
+ let le;
975
+ var _e;
941
976
  try {
942
- const o = require("@extscreen/es3-vue");
943
- ne = o.registerElement || ((Ie = o.default) == null ? void 0 : Ie.registerElement);
977
+ const e = require("@extscreen/es3-vue");
978
+ le = e.registerElement || ((_e = e.default) == null ? void 0 : _e.registerElement);
944
979
  } catch {
945
980
  }
946
- const De = {
947
- install: (o) => {
981
+ const ut = {
982
+ install: (e) => {
948
983
  if (!globalThis.__QtSvgImage_registered)
949
- if (ne) {
950
- const u = (c, r) => {
951
- ne(c, {
984
+ if (le) {
985
+ const i = (u, s) => {
986
+ le(u, {
987
+ component: {
988
+ name: s ? "QtSvgImage_Plugin" : "QtSvgImage",
989
+ processEventData(f, v) {
990
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
991
+ return l && (l.nativeEvent = r), l;
992
+ }
993
+ }
994
+ });
995
+ };
996
+ i("qt-svg-image", !1), i("qt-svg-image-plugin", !0), i("QtSvgImage", !1), i("QtSvgImage_Plugin", !0), globalThis.__QtSvgImage_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtSvgImage");
997
+ } else
998
+ console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
999
+ e.component("SvgImage", Pe), e.component("qt-svg-image", Pe);
1000
+ }
1001
+ }, Ee = "QtNaButton", dt = /* @__PURE__ */ w({
1002
+ __name: "NaButtonBase",
1003
+ props: {
1004
+ text: {},
1005
+ icon: {},
1006
+ iconSize: {},
1007
+ iconSpace: {},
1008
+ layoutDirection: {},
1009
+ fontSize: {},
1010
+ maxLines: {},
1011
+ textColor: {},
1012
+ focusTextColor: {},
1013
+ backgroundColor: {},
1014
+ focusBackgroundColor: {},
1015
+ normalBorderWidth: {},
1016
+ normalBorderColor: {},
1017
+ focusBorderColor: {},
1018
+ cornerRadius: {},
1019
+ focusScale: {},
1020
+ enableFocusBorder: { type: Boolean }
1021
+ },
1022
+ emits: ["onButtonCustomEvent"],
1023
+ setup(e, { expose: i }) {
1024
+ const u = A(), s = _(), f = Ee + "_Plugin", l = (s.isPluginActive ? f : Ee).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
1025
+ l,
1026
+ s.pluginPackageName || "com.quicktvui.plugin.extraui",
1027
+ "com.quicktvui.plugin.extraui.ExtraUIPluginApp"
1028
+ );
1029
+ return i({
1030
+ getNativeNode: () => {
1031
+ var a, c;
1032
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
1033
+ }
1034
+ }), (a, c) => (S(), $(D(r), B({
1035
+ ref_key: "nativeRef",
1036
+ ref: u,
1037
+ text: e.text,
1038
+ icon: e.icon,
1039
+ iconSize: e.iconSize,
1040
+ iconSpace: e.iconSpace,
1041
+ layoutDirection: e.layoutDirection,
1042
+ fontSize: e.fontSize,
1043
+ maxLines: e.maxLines,
1044
+ textColor: e.textColor,
1045
+ focusTextColor: e.focusTextColor,
1046
+ backgroundColor: e.backgroundColor,
1047
+ focusBackgroundColor: e.focusBackgroundColor,
1048
+ normalBorderWidth: e.normalBorderWidth,
1049
+ normalBorderColor: e.normalBorderColor,
1050
+ focusBorderColor: e.focusBorderColor,
1051
+ cornerRadius: e.cornerRadius,
1052
+ focusScale: e.focusScale,
1053
+ enableFocusBorder: e.enableFocusBorder,
1054
+ onOnButtonCustomEvent: c[0] || (c[0] = (d) => a.$emit("onButtonCustomEvent", d.nativeEvent))
1055
+ }, a.$attrs), {
1056
+ default: R(() => [
1057
+ F(a.$slots, "default")
1058
+ ]),
1059
+ _: 3
1060
+ }, 16, ["text", "icon", "iconSize", "iconSpace", "layoutDirection", "fontSize", "maxLines", "textColor", "focusTextColor", "backgroundColor", "focusBackgroundColor", "normalBorderWidth", "normalBorderColor", "focusBorderColor", "cornerRadius", "focusScale", "enableFocusBorder"]));
1061
+ }
1062
+ }), xe = /* @__PURE__ */ w({
1063
+ __name: "NaButton",
1064
+ props: {
1065
+ width: {},
1066
+ height: {}
1067
+ },
1068
+ setup(e) {
1069
+ const i = e, u = W(() => ({
1070
+ width: typeof i.width == "number" ? `${i.width}px` : i.width,
1071
+ height: typeof i.height == "number" ? `${i.height}px` : i.height
1072
+ }));
1073
+ return (s, f) => (S(), $(dt, B(s.$attrs, { style: u.value }), {
1074
+ default: R(() => [
1075
+ F(s.$slots, "default")
1076
+ ]),
1077
+ _: 3
1078
+ }, 16, ["style"]));
1079
+ }
1080
+ });
1081
+ let re;
1082
+ var Ue;
1083
+ try {
1084
+ const e = require("@extscreen/es3-vue");
1085
+ re = e.registerElement || ((Ue = e.default) == null ? void 0 : Ue.registerElement);
1086
+ } catch {
1087
+ }
1088
+ const gt = {
1089
+ install: (e) => {
1090
+ if (!globalThis.__QtNaButton_registered)
1091
+ if (re) {
1092
+ const i = (u, s) => {
1093
+ re(u, {
1094
+ component: {
1095
+ name: s ? "QtNaButton_Plugin" : "QtNaButton",
1096
+ processEventData(f, v) {
1097
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
1098
+ return l && (l.nativeEvent = r), l;
1099
+ }
1100
+ }
1101
+ });
1102
+ };
1103
+ i("qt-na-button", !1), i("qt-na-button-plugin", !0), i("QtNaButton", !1), i("QtNaButton_Plugin", !0), globalThis.__QtNaButton_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtNaButton");
1104
+ } else
1105
+ console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
1106
+ e.component("NaButton", xe), e.component("qt-na-button", xe);
1107
+ }
1108
+ }, Ae = "QtNaCheckbox", we = /* @__PURE__ */ w({
1109
+ __name: "NaCheckbox",
1110
+ props: {
1111
+ text: {},
1112
+ checked: { type: Boolean },
1113
+ disabled: { type: Boolean },
1114
+ checkedIcon: {},
1115
+ uncheckedIcon: {},
1116
+ iconSize: {},
1117
+ iconSpace: {},
1118
+ layoutDirection: {},
1119
+ gravity: {},
1120
+ paddingX: {},
1121
+ showBackground: { type: Boolean },
1122
+ fontSize: {},
1123
+ textColor: {},
1124
+ focusTextColor: {},
1125
+ checkedTextColor: {},
1126
+ focusCheckedTextColor: {},
1127
+ disabledTextColor: {},
1128
+ iconColor: {},
1129
+ focusIconColor: {},
1130
+ checkedIconColor: {},
1131
+ focusCheckedIconColor: {},
1132
+ disabledIconColor: {},
1133
+ iconInnerColor: {},
1134
+ focusIconInnerColor: {},
1135
+ checkedIconInnerColor: {},
1136
+ focusCheckedIconInnerColor: {},
1137
+ disabledIconInnerColor: {},
1138
+ focusMode: {},
1139
+ bgColor: {},
1140
+ focusBgColor: {},
1141
+ checkedBgColor: {},
1142
+ focusCheckedBgColor: {},
1143
+ disabledBgColor: {},
1144
+ borderColor: {},
1145
+ focusBorderColor: {},
1146
+ checkedBorderColor: {},
1147
+ focusCheckedBorderColor: {},
1148
+ disabledBorderColor: {},
1149
+ cornerRadius: {},
1150
+ focusScale: {},
1151
+ type: {}
1152
+ },
1153
+ emits: ["onCheckedChange"],
1154
+ setup(e, { expose: i }) {
1155
+ const u = A(), s = _(), f = Ae + "_Plugin", l = (s.isPluginActive ? f : Ae).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
1156
+ l,
1157
+ s.pluginPackageName || ""
1158
+ );
1159
+ return i({
1160
+ getNativeNode: () => {
1161
+ var a, c;
1162
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
1163
+ }
1164
+ }), (a, c) => (S(), $(D(r), B({
1165
+ ref_key: "nativeRef",
1166
+ ref: u,
1167
+ text: e.text,
1168
+ checked: e.checked,
1169
+ disabled: e.disabled,
1170
+ checkedIcon: e.checkedIcon,
1171
+ uncheckedIcon: e.uncheckedIcon,
1172
+ iconSize: e.iconSize,
1173
+ iconSpace: e.iconSpace,
1174
+ layoutDirection: e.layoutDirection,
1175
+ gravity: e.gravity,
1176
+ paddingX: e.paddingX,
1177
+ showBackground: e.showBackground,
1178
+ fontSize: e.fontSize,
1179
+ textColor: e.textColor,
1180
+ focusTextColor: e.focusTextColor,
1181
+ checkedTextColor: e.checkedTextColor,
1182
+ focusCheckedTextColor: e.focusCheckedTextColor,
1183
+ disabledTextColor: e.disabledTextColor,
1184
+ iconColor: e.iconColor,
1185
+ focusIconColor: e.focusIconColor,
1186
+ checkedIconColor: e.checkedIconColor,
1187
+ focusCheckedIconColor: e.focusCheckedIconColor,
1188
+ disabledIconColor: e.disabledIconColor,
1189
+ iconInnerColor: e.iconInnerColor,
1190
+ focusIconInnerColor: e.focusIconInnerColor,
1191
+ checkedIconInnerColor: e.checkedIconInnerColor,
1192
+ focusCheckedIconInnerColor: e.focusCheckedIconInnerColor,
1193
+ disabledIconInnerColor: e.disabledIconInnerColor,
1194
+ focusMode: e.focusMode,
1195
+ bgColor: e.bgColor,
1196
+ focusBgColor: e.focusBgColor,
1197
+ checkedBgColor: e.checkedBgColor,
1198
+ focusCheckedBgColor: e.focusCheckedBgColor,
1199
+ disabledBgColor: e.disabledBgColor,
1200
+ borderColor: e.borderColor,
1201
+ focusBorderColor: e.focusBorderColor,
1202
+ checkedBorderColor: e.checkedBorderColor,
1203
+ focusCheckedBorderColor: e.focusCheckedBorderColor,
1204
+ disabledBorderColor: e.disabledBorderColor,
1205
+ cornerRadius: e.cornerRadius,
1206
+ focusScale: e.focusScale,
1207
+ type: e.type,
1208
+ onOnCheckedChange: c[0] || (c[0] = (d) => a.$emit("onCheckedChange", d.nativeEvent))
1209
+ }, a.$attrs), {
1210
+ default: R(() => [
1211
+ F(a.$slots, "default")
1212
+ ]),
1213
+ _: 3
1214
+ }, 16, ["text", "checked", "disabled", "checkedIcon", "uncheckedIcon", "iconSize", "iconSpace", "layoutDirection", "gravity", "paddingX", "showBackground", "fontSize", "textColor", "focusTextColor", "checkedTextColor", "focusCheckedTextColor", "disabledTextColor", "iconColor", "focusIconColor", "checkedIconColor", "focusCheckedIconColor", "disabledIconColor", "iconInnerColor", "focusIconInnerColor", "checkedIconInnerColor", "focusCheckedIconInnerColor", "disabledIconInnerColor", "focusMode", "bgColor", "focusBgColor", "checkedBgColor", "focusCheckedBgColor", "disabledBgColor", "borderColor", "focusBorderColor", "checkedBorderColor", "focusCheckedBorderColor", "disabledBorderColor", "cornerRadius", "focusScale", "type"]));
1215
+ }
1216
+ });
1217
+ let se;
1218
+ var Ve;
1219
+ try {
1220
+ const e = require("@extscreen/es3-vue");
1221
+ se = e.registerElement || ((Ve = e.default) == null ? void 0 : Ve.registerElement);
1222
+ } catch {
1223
+ }
1224
+ const ft = {
1225
+ install: (e) => {
1226
+ if (!globalThis.__QtNaCheckbox_registered)
1227
+ if (se) {
1228
+ const i = (u, s) => {
1229
+ se(u, {
1230
+ component: {
1231
+ name: s ? "QtNaCheckbox_Plugin" : "QtNaCheckbox",
1232
+ processEventData(f, v) {
1233
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
1234
+ return l && (l.nativeEvent = r), l;
1235
+ }
1236
+ }
1237
+ });
1238
+ };
1239
+ i("qt-na-checkbox", !1), i("qt-na-checkbox-plugin", !0), i("QtNaCheckbox", !1), i("QtNaCheckbox_Plugin", !0), globalThis.__QtNaCheckbox_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtNaCheckbox");
1240
+ } else
1241
+ console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
1242
+ e.component("NaCheckbox", we), e.component("qt-na-checkbox", we);
1243
+ }
1244
+ }, vt = w({
1245
+ name: "NaRadioGroup",
1246
+ props: {
1247
+ modelValue: {
1248
+ type: [String, Number, Boolean],
1249
+ default: ""
1250
+ },
1251
+ options: {
1252
+ type: Array,
1253
+ default: () => []
1254
+ },
1255
+ direction: {
1256
+ type: String,
1257
+ default: "row"
1258
+ },
1259
+ itemWidth: {
1260
+ type: Number,
1261
+ default: void 0
1262
+ },
1263
+ itemHeight: {
1264
+ type: Number,
1265
+ default: void 0
1266
+ },
1267
+ itemGap: {
1268
+ type: Number,
1269
+ default: 20
1270
+ },
1271
+ gravity: {
1272
+ type: String,
1273
+ default: "center"
1274
+ },
1275
+ showBackground: {
1276
+ type: Boolean,
1277
+ default: !0
1278
+ }
1279
+ },
1280
+ emits: ["update:modelValue", "change"],
1281
+ setup(e, { emit: i }) {
1282
+ return {
1283
+ groupStyle: W(() => ({
1284
+ display: "flex",
1285
+ flexDirection: e.direction,
1286
+ alignItems: "center"
1287
+ })),
1288
+ getItemStyle: (v, l) => {
1289
+ var a;
1290
+ const r = { ...((a = v.props) == null ? void 0 : a.style) || {} };
1291
+ return e.itemWidth !== void 0 && (r.width = e.itemWidth), e.itemHeight !== void 0 && (r.height = e.itemHeight), l !== e.options.length - 1 && (e.direction === "row" ? r.marginRight = e.itemGap : r.marginBottom = e.itemGap), r;
1292
+ },
1293
+ onItemClick: (v) => {
1294
+ v.disabled || (i("update:modelValue", v.value), i("change", v.value));
1295
+ }
1296
+ };
1297
+ }
1298
+ });
1299
+ const ve = (e, i) => {
1300
+ const u = e.__vccOpts || e;
1301
+ for (const [s, f] of i)
1302
+ u[s] = f;
1303
+ return u;
1304
+ };
1305
+ function mt(e, i, u, s, f, v) {
1306
+ const l = ge("qt-na-checkbox");
1307
+ return S(), J("div", {
1308
+ class: "na-radio-group",
1309
+ style: fe(e.groupStyle)
1310
+ }, [
1311
+ (S(!0), J(Ke, null, He(e.options, (r, a) => (S(), $(l, B({
1312
+ key: a,
1313
+ type: "radio",
1314
+ checked: e.modelValue === r.value,
1315
+ text: r.label,
1316
+ gravity: e.gravity,
1317
+ showBackground: e.showBackground,
1318
+ disabled: r.disabled
1319
+ }, { ref_for: !0 }, r.props, {
1320
+ style: e.getItemStyle(r, a),
1321
+ onClick: (c) => e.onItemClick(r)
1322
+ }), null, 16, ["checked", "text", "gravity", "showBackground", "disabled", "style", "onClick"]))), 128))
1323
+ ], 4);
1324
+ }
1325
+ const $e = /* @__PURE__ */ ve(vt, [["render", mt], ["__scopeId", "data-v-448252ff"]]), bt = {
1326
+ install: (e) => {
1327
+ e.component("NaRadioGroup", $e), e.component("qt-na-radio-group", $e);
1328
+ }
1329
+ }, yt = w({
1330
+ name: "NaCheckboxGroup",
1331
+ props: {
1332
+ modelValue: {
1333
+ type: Array,
1334
+ default: () => []
1335
+ },
1336
+ options: {
1337
+ type: Array,
1338
+ default: () => []
1339
+ },
1340
+ direction: {
1341
+ type: String,
1342
+ default: "row"
1343
+ },
1344
+ itemWidth: {
1345
+ type: Number,
1346
+ default: void 0
1347
+ },
1348
+ itemHeight: {
1349
+ type: Number,
1350
+ default: void 0
1351
+ },
1352
+ itemGap: {
1353
+ type: Number,
1354
+ default: 20
1355
+ },
1356
+ gravity: {
1357
+ type: String,
1358
+ default: "center"
1359
+ },
1360
+ showBackground: {
1361
+ type: Boolean,
1362
+ default: !0
1363
+ }
1364
+ },
1365
+ emits: ["update:modelValue", "change"],
1366
+ setup(e, { emit: i }) {
1367
+ return {
1368
+ groupStyle: W(() => ({
1369
+ display: "flex",
1370
+ flexDirection: e.direction,
1371
+ alignItems: "center"
1372
+ })),
1373
+ getItemStyle: (v, l) => {
1374
+ var a;
1375
+ const r = { ...((a = v.props) == null ? void 0 : a.style) || {} };
1376
+ return e.itemWidth !== void 0 && (r.width = e.itemWidth), e.itemHeight !== void 0 && (r.height = e.itemHeight), l !== e.options.length - 1 && (e.direction === "row" ? r.marginRight = e.itemGap : r.marginBottom = e.itemGap), r;
1377
+ },
1378
+ onItemClick: (v) => {
1379
+ if (v.disabled)
1380
+ return;
1381
+ const l = [...e.modelValue], r = l.indexOf(v.value);
1382
+ r > -1 ? l.splice(r, 1) : l.push(v.value), i("update:modelValue", l), i("change", l);
1383
+ }
1384
+ };
1385
+ }
1386
+ });
1387
+ function ht(e, i, u, s, f, v) {
1388
+ const l = ge("qt-na-checkbox");
1389
+ return S(), J("div", {
1390
+ class: "na-checkbox-group",
1391
+ style: fe(e.groupStyle)
1392
+ }, [
1393
+ (S(!0), J(Ke, null, He(e.options, (r, a) => (S(), $(l, B({
1394
+ key: a,
1395
+ type: "checkbox",
1396
+ checked: e.modelValue.includes(r.value),
1397
+ text: r.label,
1398
+ gravity: e.gravity,
1399
+ showBackground: e.showBackground,
1400
+ disabled: r.disabled
1401
+ }, { ref_for: !0 }, r.props, {
1402
+ style: e.getItemStyle(r, a),
1403
+ onClick: (c) => e.onItemClick(r)
1404
+ }), null, 16, ["checked", "text", "gravity", "showBackground", "disabled", "style", "onClick"]))), 128))
1405
+ ], 4);
1406
+ }
1407
+ const Be = /* @__PURE__ */ ve(yt, [["render", ht], ["__scopeId", "data-v-cf6a4eaa"]]), pt = {
1408
+ install: (e) => {
1409
+ e.component("NaCheckboxGroup", Be), e.component("qt-na-checkbox-group", Be);
1410
+ }
1411
+ }, Ge = "QtNaSwitcher", Oe = /* @__PURE__ */ w({
1412
+ __name: "NaSwitcher",
1413
+ props: {
1414
+ checked: { type: Boolean },
1415
+ disabled: { type: Boolean },
1416
+ title: {},
1417
+ textOn: {},
1418
+ textOff: {},
1419
+ subtitle: {},
1420
+ subtitleColor: {},
1421
+ titleColor: {},
1422
+ focusTitleColor: {},
1423
+ titleTextSize: {},
1424
+ subtitleTextSize: {},
1425
+ stateTextSize: {}
1426
+ },
1427
+ emits: ["onCheckedChange"],
1428
+ setup(e, { expose: i }) {
1429
+ const u = A(), s = _(), f = Ge + "_Plugin", l = (s.isPluginActive ? f : Ge).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
1430
+ l,
1431
+ s.pluginPackageName || ""
1432
+ );
1433
+ return i({
1434
+ getNativeNode: () => {
1435
+ var a, c;
1436
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
1437
+ }
1438
+ }), (a, c) => (S(), $(D(r), B({
1439
+ ref_key: "nativeRef",
1440
+ ref: u,
1441
+ checked: e.checked,
1442
+ disabled: e.disabled,
1443
+ title: e.title,
1444
+ textOn: e.textOn,
1445
+ textOff: e.textOff,
1446
+ subtitle: e.subtitle,
1447
+ subtitleColor: e.subtitleColor,
1448
+ titleColor: e.titleColor,
1449
+ focusTitleColor: e.focusTitleColor,
1450
+ titleTextSize: e.titleTextSize,
1451
+ subtitleTextSize: e.subtitleTextSize,
1452
+ stateTextSize: e.stateTextSize,
1453
+ onOnCheckedChange: c[0] || (c[0] = (d) => a.$emit("onCheckedChange", d.nativeEvent))
1454
+ }, a.$attrs), {
1455
+ default: R(() => [
1456
+ F(a.$slots, "default")
1457
+ ]),
1458
+ _: 3
1459
+ }, 16, ["checked", "disabled", "title", "textOn", "textOff", "subtitle", "subtitleColor", "titleColor", "focusTitleColor", "titleTextSize", "subtitleTextSize", "stateTextSize"]));
1460
+ }
1461
+ });
1462
+ let ce;
1463
+ var We;
1464
+ try {
1465
+ const e = require("@extscreen/es3-vue");
1466
+ ce = e.registerElement || ((We = e.default) == null ? void 0 : We.registerElement);
1467
+ } catch {
1468
+ }
1469
+ const Ct = {
1470
+ install: (e) => {
1471
+ if (!globalThis.__QtNaSwitcher_registered)
1472
+ if (ce) {
1473
+ const i = (u, s) => {
1474
+ ce(u, {
952
1475
  component: {
953
- name: r ? "QtSvgImage_Plugin" : "QtSvgImage",
954
- processEventData(b, m) {
955
- const d = b.handler || b, f = m || (d == null ? void 0 : d.nativeParams) || {};
956
- return d && (d.nativeEvent = f), d;
1476
+ name: s ? "QtNaSwitcher_Plugin" : "QtNaSwitcher",
1477
+ processEventData(f, v) {
1478
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
1479
+ return l && (l.nativeEvent = r), l;
957
1480
  }
958
1481
  }
959
1482
  });
960
1483
  };
961
- u("qt-svg-image", !1), u("qt-svg-image-plugin", !0), u("QtSvgImage", !1), u("QtSvgImage_Plugin", !0), globalThis.__QtSvgImage_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtSvgImage");
1484
+ i("qt-na-switcher", !1), i("qt-na-switcher-plugin", !0), i("QtNaSwitcher", !1), i("QtNaSwitcher_Plugin", !0), globalThis.__QtNaSwitcher_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtNaSwitcher");
962
1485
  } else
963
1486
  console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
964
- o.component("SvgImage", me), o.component("qt-svg-image", me);
1487
+ e.component("NaSwitcher", Oe), e.component("qt-na-switcher", Oe);
965
1488
  }
966
- }, Le = {
1489
+ }, kt = w({
1490
+ name: "NaSettingSwitch",
1491
+ props: {
1492
+ title: {
1493
+ type: String,
1494
+ default: ""
1495
+ },
1496
+ subtitle: {
1497
+ type: String,
1498
+ default: ""
1499
+ },
1500
+ modelValue: {
1501
+ type: Boolean,
1502
+ default: !1
1503
+ },
1504
+ textOn: {
1505
+ type: String,
1506
+ default: "打开"
1507
+ },
1508
+ textOff: {
1509
+ type: String,
1510
+ default: "关闭"
1511
+ },
1512
+ titleTextSize: {
1513
+ type: Number,
1514
+ default: 28
1515
+ },
1516
+ subtitleTextSize: {
1517
+ type: Number,
1518
+ default: 22
1519
+ },
1520
+ stateTextSize: {
1521
+ type: Number,
1522
+ default: 24
1523
+ },
1524
+ disabled: {
1525
+ type: Boolean,
1526
+ default: !1
1527
+ },
1528
+ width: {
1529
+ type: [Number, String],
1530
+ default: 800
1531
+ },
1532
+ height: {
1533
+ type: [Number, String],
1534
+ default: 100
1535
+ }
1536
+ },
1537
+ emits: ["update:modelValue", "change"],
1538
+ setup(e, { emit: i, attrs: u }) {
1539
+ const s = A(e.modelValue);
1540
+ ee(() => e.modelValue, (r) => {
1541
+ s.value = r;
1542
+ });
1543
+ const f = (r) => {
1544
+ const a = r.checked;
1545
+ s.value = a, i("update:modelValue", a), i("change", a);
1546
+ }, v = W(() => typeof e.width == "number" ? `${e.width}px` : e.width), l = W(() => {
1547
+ const r = u.style || {}, a = e.subtitle ? (typeof e.height == "number" ? e.height : parseInt(e.height)) + 30 : e.height;
1548
+ return {
1549
+ width: v.value,
1550
+ height: typeof a == "number" ? `${a}px` : a,
1551
+ ...r
1552
+ };
1553
+ });
1554
+ return {
1555
+ checked: s,
1556
+ handleCheckedChange: f,
1557
+ mergedStyle: l
1558
+ };
1559
+ }
1560
+ });
1561
+ function It(e, i, u, s, f, v) {
1562
+ const l = ge("qt-na-switcher");
1563
+ return S(), $(l, {
1564
+ class: "na-setting-switch",
1565
+ style: fe(e.mergedStyle),
1566
+ title: e.title,
1567
+ subtitle: e.subtitle,
1568
+ checked: e.checked,
1569
+ textOn: e.textOn,
1570
+ textOff: e.textOff,
1571
+ titleTextSize: e.titleTextSize,
1572
+ subtitleTextSize: e.subtitleTextSize,
1573
+ stateTextSize: e.stateTextSize,
1574
+ disabled: e.disabled,
1575
+ onOnCheckedChange: e.handleCheckedChange
1576
+ }, null, 8, ["style", "title", "subtitle", "checked", "textOn", "textOff", "titleTextSize", "subtitleTextSize", "stateTextSize", "disabled", "onOnCheckedChange"]);
1577
+ }
1578
+ const qe = /* @__PURE__ */ ve(kt, [["render", It]]), Nt = {
1579
+ install(e) {
1580
+ e.component("NaSettingSwitch", qe), e.component("qt-na-setting-switch", qe);
1581
+ }
1582
+ }, Qe = "QtNaInputView", Tt = /* @__PURE__ */ w({
1583
+ __name: "NaInputViewBase",
1584
+ props: {
1585
+ text: {},
1586
+ placeholder: {},
1587
+ type: {},
1588
+ status: {},
1589
+ disabled: { type: Boolean },
1590
+ inputSize: {},
1591
+ cursorVisible: { type: Boolean },
1592
+ useSystemKeyboard: { type: Boolean },
1593
+ trailingIcon: {}
1594
+ },
1595
+ emits: ["onInputClick", "onChange"],
1596
+ setup(e, { expose: i }) {
1597
+ const u = A(), s = _(), f = Qe + "_Plugin", l = (s.isPluginActive ? f : Qe).replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, "$1-$2").toLowerCase().replace(/^-/, ""), r = L(
1598
+ l,
1599
+ s.pluginPackageName || "com.quicktvui.plugin.extraui",
1600
+ "com.quicktvui.plugin.extraui.ExtraUIPluginApp"
1601
+ );
1602
+ return i({
1603
+ getNativeNode: () => {
1604
+ var a, c;
1605
+ return ((c = (a = u.value) == null ? void 0 : a.getNativeNode) == null ? void 0 : c.call(a)) || u.value;
1606
+ }
1607
+ }), (a, c) => (S(), $(D(r), B({
1608
+ ref_key: "nativeRef",
1609
+ ref: u,
1610
+ text: e.text,
1611
+ placeholder: e.placeholder,
1612
+ type: e.type,
1613
+ status: e.status,
1614
+ disabled: e.disabled,
1615
+ inputSize: e.inputSize,
1616
+ cursorVisible: e.cursorVisible,
1617
+ useSystemKeyboard: e.useSystemKeyboard,
1618
+ trailingIcon: e.trailingIcon,
1619
+ onOnInputClick: c[0] || (c[0] = (d) => a.$emit("onInputClick", d.nativeEvent)),
1620
+ onOnChange: c[1] || (c[1] = (d) => a.$emit("onChange", d.nativeEvent))
1621
+ }, a.$attrs), {
1622
+ default: R(() => [
1623
+ F(a.$slots, "default")
1624
+ ]),
1625
+ _: 3
1626
+ }, 16, ["text", "placeholder", "type", "status", "disabled", "inputSize", "cursorVisible", "useSystemKeyboard", "trailingIcon"]));
1627
+ }
1628
+ }), Re = /* @__PURE__ */ w({
1629
+ __name: "NaInputView",
1630
+ props: {
1631
+ inputSize: { default: "medium" }
1632
+ },
1633
+ emits: ["onInputClick", "onChange"],
1634
+ setup(e, { emit: i }) {
1635
+ const u = i, s = e, f = W(() => {
1636
+ let r = 60;
1637
+ return s.inputSize === "large" ? r = 70 : s.inputSize === "small" && (r = 50), {
1638
+ height: `${r}px`
1639
+ };
1640
+ }), v = (r) => {
1641
+ u("onInputClick", r);
1642
+ }, l = (r) => {
1643
+ u("onChange", r);
1644
+ };
1645
+ return (r, a) => (S(), $(Tt, B(r.$attrs, {
1646
+ style: f.value,
1647
+ inputSize: e.inputSize,
1648
+ onOnInputClick: v,
1649
+ onOnChange: l
1650
+ }), {
1651
+ default: R(() => [
1652
+ F(r.$slots, "default")
1653
+ ]),
1654
+ _: 3
1655
+ }, 16, ["style", "inputSize"]));
1656
+ }
1657
+ });
1658
+ let ue;
1659
+ var je;
1660
+ try {
1661
+ const e = require("@extscreen/es3-vue");
1662
+ ue = e.registerElement || ((je = e.default) == null ? void 0 : je.registerElement);
1663
+ } catch {
1664
+ }
1665
+ const St = {
1666
+ install: (e) => {
1667
+ if (!globalThis.__QtNaInputView_registered)
1668
+ if (ue) {
1669
+ const i = (u, s) => {
1670
+ ue(u, {
1671
+ component: {
1672
+ name: s ? "QtNaInputView_Plugin" : "QtNaInputView",
1673
+ processEventData(f, v) {
1674
+ const l = f.handler || f, r = v || (l == null ? void 0 : l.nativeParams) || {};
1675
+ return l && (l.nativeEvent = r), l;
1676
+ }
1677
+ }
1678
+ });
1679
+ };
1680
+ i("qt-na-input-view", !1), i("qt-na-input-view-plugin", !0), i("QtNaInputView", !1), i("QtNaInputView_Plugin", !0), globalThis.__QtNaInputView_registered = !0, console.log("[@quicktvui/naddons] Successfully registered Native tag:", "QtNaInputView");
1681
+ } else
1682
+ console.warn("[@quicktvui/naddons] Failed to find registerElement from @extscreen/es3-vue");
1683
+ e.component("NaInputView", Re), e.component("qt-na-input-view", Re);
1684
+ }
1685
+ }, Pt = {
967
1686
  // 如果设置为 true,则全局跳过所有组件的原生插件安装检查,直接渲染
968
1687
  skipPluginCheck: !1
969
- }, H = /* @__PURE__ */ new Set();
970
- function K(o, u, c) {
971
- return D({
972
- name: `${o}AsyncWrapper`,
1688
+ }, Y = /* @__PURE__ */ new Set();
1689
+ function L(e, i, u) {
1690
+ return w({
1691
+ name: `${e}AsyncWrapper`,
973
1692
  inheritAttrs: !1,
974
1693
  props: {
975
1694
  // 允许单个组件级别跳过检查
@@ -978,220 +1697,268 @@ function K(o, u, c) {
978
1697
  default: !1
979
1698
  }
980
1699
  },
981
- setup(r, { slots: b, attrs: m, expose: d }) {
982
- const f = x("loading"), a = x(""), l = x(), i = globalThis.__VUE_INSTANCE__;
983
- d({
1700
+ setup(s, { slots: f, attrs: v, expose: l }) {
1701
+ const r = A("loading"), a = A(""), c = A(), d = globalThis.__VUE_INSTANCE__;
1702
+ l({
984
1703
  getNativeNode: () => {
985
- let P = l.value;
986
- return !P && i && i.vnode && i.vnode.el && (P = i.vnode.el, P.childNodes && P.childNodes.length > 0 && (P = P.childNodes[0])), P;
1704
+ let p = c.value;
1705
+ return !p && d && d.vnode && d.vnode.el && (p = d.vnode.el, p.childNodes && p.childNodes.length > 0 && (p = p.childNodes[0])), p;
987
1706
  },
988
- nativeRef: l
1707
+ nativeRef: c
989
1708
  });
990
- let G = null, $ = null;
1709
+ let z = null, q = null;
991
1710
  try {
992
- G = he(), $ = Ce();
993
- } catch (P) {
994
- console.warn("[withAsyncPlugin] 获取 useES 或 useESPlugin 失败,可能处于非 ES 环境。", P);
1711
+ z = Ze(), q = at();
1712
+ } catch (p) {
1713
+ console.warn("[withAsyncPlugin] 获取 useES 或 useESPlugin 失败,可能处于非 ES 环境。", p);
995
1714
  }
996
- const J = async () => {
997
- if (!G || typeof G.isComponentRegistered != "function")
1715
+ const Z = async () => {
1716
+ if (!z || typeof z.isComponentRegistered != "function")
998
1717
  return console.log("[withAsyncPlugin] es.isComponentRegistered 不可用"), !1;
999
1718
  try {
1000
- const P = await G.isComponentRegistered(o);
1001
- if (console.log(`[withAsyncPlugin] isComponentRegistered('${o}') 返回:`, P), P === !0 || P && typeof P == "object" && (P.registered === !0 || P.isRegistered === !0))
1719
+ const p = await z.isComponentRegistered(e);
1720
+ if (console.log(`[withAsyncPlugin] isComponentRegistered('${e}') 返回:`, p), p === !0 || p && typeof p == "object" && (p.registered === !0 || p.isRegistered === !0))
1002
1721
  return !0;
1003
1722
  try {
1004
- const h = await E.callNativeWithPromise("ExtendModule", "getCoreSDKInfo");
1005
- if (h && h.core_version) {
1006
- const A = h.core_version;
1007
- console.log(`[withAsyncPlugin] 当前引擎核心版本: ${A}`);
1008
- const S = A.split(".").map((_) => parseInt(_, 10));
1009
- if (S.length >= 3 && !isNaN(S[0]) && !isNaN(S[1]) && !isNaN(S[2]))
1010
- if (S[0] * 1e6 + S[1] * 1e3 + S[2] >= 1011205) {
1011
- console.log(`[withAsyncPlugin] 引擎 >= 1.11.205,使用 ExtendModule 检查 Controller: ${o}`);
1012
- const N = o.split("-").map((k) => k.charAt(0).toUpperCase() + k.slice(1)).join("");
1013
- console.log(`[withAsyncPlugin] 同时检查原名和驼峰名: ${o}, ${N}`);
1014
- const [w, O] = await Promise.all([
1015
- E.callNativeWithPromise("ExtendModule", "isComponentRegistered", o).catch(() => !1),
1016
- E.callNativeWithPromise("ExtendModule", "isComponentRegistered", N).catch(() => !1)
1723
+ const I = await N.callNativeWithPromise("ExtendModule", "getCoreSDKInfo");
1724
+ if (I && I.core_version) {
1725
+ const P = I.core_version;
1726
+ console.log(`[withAsyncPlugin] 当前引擎核心版本: ${P}`);
1727
+ const E = P.split(".").map((G) => parseInt(G, 10));
1728
+ if (E.length >= 3 && !isNaN(E[0]) && !isNaN(E[1]) && !isNaN(E[2]))
1729
+ if (E[0] * 1e6 + E[1] * 1e3 + E[2] >= 1011205) {
1730
+ console.log(`[withAsyncPlugin] 引擎 >= 1.11.205,使用 ExtendModule 检查 Controller: ${e}`);
1731
+ const T = e.split("-").map((x) => x.charAt(0).toUpperCase() + x.slice(1)).join("");
1732
+ console.log(`[withAsyncPlugin] 同时检查原名和驼峰名: ${e}, ${T}`);
1733
+ const [O, M] = await Promise.all([
1734
+ N.callNativeWithPromise("ExtendModule", "isComponentRegistered", e).catch(() => !1),
1735
+ N.callNativeWithPromise("ExtendModule", "isComponentRegistered", T).catch(() => !1)
1017
1736
  ]);
1018
- if (console.log(`[withAsyncPlugin] ExtendModule.isComponentRegistered 返回: [${w}, ${O}]`), w === !0 || O === !0)
1737
+ if (console.log(`[withAsyncPlugin] ExtendModule.isComponentRegistered 返回: [${O}, ${M}]`), O === !0 || M === !0)
1019
1738
  return !0;
1020
1739
  } else
1021
- console.log(`[withAsyncPlugin] 引擎版本 ${A} < 1.11.205,跳过 ExtendModule 检查`);
1740
+ console.log(`[withAsyncPlugin] 引擎版本 ${P} < 1.11.205,跳过 ExtendModule 检查`);
1022
1741
  else
1023
- console.log(`[withAsyncPlugin] 无法解析引擎版本号: ${A}`);
1742
+ console.log(`[withAsyncPlugin] 无法解析引擎版本号: ${P}`);
1024
1743
  }
1025
- } catch (h) {
1026
- console.log("[withAsyncPlugin] 获取引擎版本或检查 Controller 失败:", h);
1744
+ } catch (I) {
1745
+ console.log("[withAsyncPlugin] 获取引擎版本或检查 Controller 失败:", I);
1027
1746
  }
1028
1747
  return !1;
1029
- } catch (P) {
1030
- return console.warn("[withAsyncPlugin] 检查组件注册状态异常:", P), !1;
1748
+ } catch (p) {
1749
+ return console.warn("[withAsyncPlugin] 检查组件注册状态异常:", p), !1;
1031
1750
  }
1032
- }, F = async () => {
1033
- if (Le.skipPluginCheck || r.skipPluginCheck) {
1034
- console.log(`[withAsyncPlugin] 跳过 ${o} 插件检查 (skipPluginCheck = true)`), f.value = "ready";
1751
+ }, U = async () => {
1752
+ if (Pt.skipPluginCheck || s.skipPluginCheck) {
1753
+ console.log(`[withAsyncPlugin] 跳过 ${e} 插件检查 (skipPluginCheck = true)`), r.value = "ready";
1035
1754
  return;
1036
1755
  }
1037
- if (!u) {
1038
- f.value = "ready";
1756
+ if (!i) {
1757
+ r.value = "ready";
1039
1758
  return;
1040
1759
  }
1041
- const P = await J();
1042
- if (console.log(`[withAsyncPlugin] 拦截检查 - ${o} 是否已注册:`, P), P || H.has(u)) {
1043
- f.value = "ready", H.add(u), console.log("[withAsyncPlugin] 组件已注册,跳过安装流程");
1760
+ const p = await Z();
1761
+ if (console.log(`[withAsyncPlugin] 拦截检查 - ${e} 是否已注册:`, p), p || Y.has(i)) {
1762
+ r.value = "ready", Y.add(i), console.log("[withAsyncPlugin] 组件已注册,跳过安装流程");
1044
1763
  return;
1045
1764
  }
1046
- if (!$) {
1047
- console.warn(`[withAsyncPlugin] 无法获取 useESPlugin 实例,可能处于内置 AAR 环境或非插件环境,尝试直接渲染 ${o}`), f.value = "ready";
1765
+ if (!q) {
1766
+ console.warn(`[withAsyncPlugin] 无法获取 useESPlugin 实例,可能处于内置 AAR 环境或非插件环境,尝试直接渲染 ${e}`), r.value = "ready";
1048
1767
  return;
1049
1768
  }
1050
- console.log(`[withAsyncPlugin] 开始动态安装插件: ${u}`);
1769
+ console.log(`[withAsyncPlugin] 开始动态安装插件: ${i}`);
1051
1770
  try {
1052
- await new Promise((h, A) => {
1053
- let S;
1054
- const _ = {
1055
- onPluginInstallSuccess(N, w, O) {
1056
- N === u && (clearTimeout(S), $.removeListener(_), console.log(`[withAsyncPlugin] 安装成功 pkg=${N} 状态码=${w}`), w == 1003 || w == 1001 ? (c ? (console.log(`[withAsyncPlugin] 触发反射初始化: ${c}`), E.callNative("EsNativeModule", "callReflect", {
1771
+ await new Promise((I, P) => {
1772
+ let E;
1773
+ const G = {
1774
+ onPluginInstallSuccess(T, O, M) {
1775
+ T === i && (clearTimeout(E), q.removeListener(G), console.log(`[withAsyncPlugin] 安装成功 pkg=${T} 状态码=${O}`), O == 1003 || O == 1001 ? (u ? (console.log(`[withAsyncPlugin] 触发反射初始化: ${u}`), N.callNative("EsNativeModule", "callReflect", {
1057
1776
  entry: {
1058
- from: c,
1777
+ from: u,
1059
1778
  method: "setup"
1060
1779
  }
1061
- })) : console.log("[withAsyncPlugin] 安装成功,跳过反射初始化(无 pluginInitClass)"), h()) : A(new Error(`安装失败 pkg=${N} status=${w} msg=${O}`)));
1780
+ })) : console.log("[withAsyncPlugin] 安装成功,跳过反射初始化(无 pluginInitClass)"), I()) : P(new Error(`安装失败 pkg=${T} status=${O} msg=${M}`)));
1062
1781
  },
1063
- onPluginInstallError(N, w, O) {
1064
- N === u && (clearTimeout(S), $.removeListener(_), A(new Error(`安装失败 pkg=${N} status=${w} msg=${O}`)));
1782
+ onPluginInstallError(T, O, M) {
1783
+ T === i && (clearTimeout(E), q.removeListener(G), P(new Error(`安装失败 pkg=${T} status=${O} msg=${M}`)));
1065
1784
  }
1066
1785
  };
1067
- $.addListener({ pkg: u }, _), S = setTimeout(() => {
1068
- $.removeListener(_), A(new Error(`插件安装超时: ${u}`));
1069
- }, 8e3), typeof $.installPlugin == "function" ? $.installPlugin({ pkg: u }) : typeof $.install == "function" ? $.install(u) : A(new Error("当前运行时不支持 install / installPlugin"));
1070
- }), await _e(), H.add(u), f.value = "ready";
1071
- } catch (h) {
1072
- console.error("[withAsyncPlugin] 插件加载失败:", h), a.value = (h == null ? void 0 : h.message) || String(h), f.value = "error";
1786
+ q.addListener({ pkg: i }, G), E = setTimeout(() => {
1787
+ q.removeListener(G), P(new Error(`插件安装超时: ${i}`));
1788
+ }, 8e3), typeof q.installPlugin == "function" ? q.installPlugin({ pkg: i }) : typeof q.install == "function" ? q.install(i) : P(new Error("当前运行时不支持 install / installPlugin"));
1789
+ }), await tt(), Y.add(i), r.value = "ready";
1790
+ } catch (I) {
1791
+ console.error("[withAsyncPlugin] 插件加载失败:", I), a.value = (I == null ? void 0 : I.message) || String(I), r.value = "error";
1073
1792
  }
1074
1793
  };
1075
- return ke(() => {
1076
- F();
1794
+ return et(() => {
1795
+ U();
1077
1796
  }), () => {
1078
- const P = {
1797
+ const p = {
1079
1798
  display: "flex",
1080
1799
  flexDirection: "column",
1081
1800
  justifyContent: "center",
1082
1801
  alignItems: "center",
1083
- ...m.style || {}
1802
+ ...v.style || {}
1084
1803
  };
1085
- m.width !== void 0 && !P.width && (P.width = typeof m.width == "number" ? `${m.width}px` : m.width), m.height !== void 0 && !P.height && (P.height = typeof m.height == "number" ? `${m.height}px` : m.height);
1086
- const h = m.class ? `qt-plugin-container ${m.class}` : "qt-plugin-container", A = {
1087
- class: h,
1088
- style: P,
1804
+ v.width !== void 0 && !p.width && (p.width = typeof v.width == "number" ? `${v.width}px` : v.width), v.height !== void 0 && !p.height && (p.height = typeof v.height == "number" ? `${v.height}px` : v.height);
1805
+ const I = v.class ? `qt-plugin-container ${v.class}` : "qt-plugin-container", P = {
1806
+ class: I,
1807
+ style: p,
1089
1808
  // 默认关闭外层 div 的裁剪,防止内部组件 focusScale 时被切
1090
1809
  clipChildren: !1,
1091
1810
  clipPadding: !1,
1092
1811
  clipToPadding: !1
1093
1812
  };
1094
- if (f.value === "loading")
1095
- return z("div", A, [
1096
- z("div", { style: { color: "white", fontSize: "30px" } }, "插件加载中...")
1813
+ if (r.value === "loading")
1814
+ return H("div", P, [
1815
+ H("div", { style: { color: "white", fontSize: "30px" } }, "插件加载中...")
1097
1816
  ]);
1098
- if (f.value === "error")
1099
- return z("div", A, [
1100
- z("div", { style: { color: "white", fontSize: "30px", backgroundColor: "rgba(255,0,0,0.5)" } }, `插件加载失败: ${a.value}`)
1817
+ if (r.value === "error")
1818
+ return H("div", P, [
1819
+ H("div", { style: { color: "white", fontSize: "30px", backgroundColor: "rgba(255,0,0,0.5)" } }, `插件加载失败: ${a.value}`)
1101
1820
  ]);
1102
- const S = {}, _ = {};
1103
- for (const [k, M] of Object.entries(m))
1104
- if (k.startsWith("on") && typeof M == "function") {
1105
- let L = k;
1106
- k.startsWith("onOn") && (L = "on" + k.slice(4)), _[L] = M;
1107
- } else if (k.startsWith("on") && Array.isArray(M)) {
1108
- let L = k;
1109
- k.startsWith("onOn") && (L = "on" + k.slice(4)), _[L] = M;
1821
+ const E = {}, G = {};
1822
+ for (const [x, V] of Object.entries(v))
1823
+ if (x.startsWith("on") && typeof V == "function") {
1824
+ let j = x;
1825
+ x.startsWith("onOn") && (j = "on" + x.slice(4)), G[j] = V;
1826
+ } else if (x.startsWith("on") && Array.isArray(V)) {
1827
+ let j = x;
1828
+ x.startsWith("onOn") && (j = "on" + x.slice(4)), G[j] = V;
1110
1829
  } else
1111
- k.startsWith("onOn") || (S[k] = M);
1112
- const N = {
1113
- ...S,
1114
- ..._,
1115
- class: h,
1830
+ x.startsWith("onOn") || (E[x] = V);
1831
+ const T = {
1832
+ ...E,
1833
+ ...G,
1834
+ class: I,
1116
1835
  // 把外层 class 传给内部
1117
- style: P,
1836
+ style: p,
1118
1837
  // 把外层 style 传给内部
1119
- ref: (k) => {
1120
- l.value = k;
1838
+ ref: (x) => {
1839
+ c.value = x;
1121
1840
  }
1122
- }, w = N.tabsData || "", O = N.actionPayload || "";
1123
- return console.log("[withAsyncPlugin] 最终准备传递给 h() 的属性键集合:", Object.keys(N), "tabsData.length=", w.length, "actionPayload.length=", O.length), z(o, N, b.default ? b.default() : []);
1841
+ }, O = T.tabsData || "", M = T.actionPayload || "";
1842
+ return console.log("[withAsyncPlugin] 最终准备传递给 h() 的属性键集合:", Object.keys(T), "tabsData.length=", O.length, "actionPayload.length=", M.length), H(e, T, f.default ? f.default() : []);
1124
1843
  };
1125
1844
  }
1126
1845
  });
1127
1846
  }
1128
- const Ne = Symbol("AddonEnvContext"), Ee = {
1847
+ const Je = Symbol("AddonEnvContext"), Xe = {
1129
1848
  isPluginActive: !1,
1130
1849
  nameSuffix: "",
1131
1850
  pluginPackageName: "com.quicktvui.plugin.glintui",
1132
1851
  builtInVersions: {}
1133
1852
  };
1134
- async function et(o = "com.quicktvui.plugin.glintui", u = "_Plugin") {
1135
- const c = he();
1136
- let r = {};
1853
+ async function Ut(e = "com.quicktvui.plugin.glintui", i = "_Plugin") {
1854
+ const u = Ze();
1855
+ let s = {};
1137
1856
  try {
1138
- const a = await E.callNativeModule("AddonEnvModule", "getBuiltInVersions", []);
1139
- a && typeof a == "object" && (r = a);
1857
+ const a = await N.callNativeModule("AddonEnvModule", "getBuiltInVersions", []);
1858
+ a && typeof a == "object" && (s = a);
1140
1859
  } catch (a) {
1141
1860
  console.warn("[AddonProvider] Failed to fetch built-in versions from AddonEnvModule", a);
1142
1861
  }
1143
- const b = `QtGridTabs${u}`, m = c.isComponentRegistered(b), d = m instanceof Promise ? await m : m, f = {
1144
- isPluginActive: d,
1145
- nameSuffix: d ? u : "",
1862
+ const f = `QtGridTabs${i}`, v = u.isComponentRegistered(f), l = v instanceof Promise ? await v : v, r = {
1863
+ isPluginActive: l,
1864
+ nameSuffix: l ? i : "",
1146
1865
  // 如果使用了热更插件,包名加上 .ext 后缀(与 Gradle 打包脚本对齐)
1147
- pluginPackageName: d ? `${o}.ext` : o,
1148
- builtInVersions: r
1866
+ pluginPackageName: l ? `${e}.ext` : e,
1867
+ builtInVersions: s
1149
1868
  };
1150
- return console.info("[AddonProvider] Environment initialized:", f), f;
1869
+ return console.info("[AddonProvider] Environment initialized:", r), r;
1151
1870
  }
1152
- let oe = x(Ee);
1153
- function tt(o) {
1154
- oe.value = o, we(Ne, oe);
1871
+ let de = A(Xe);
1872
+ function Vt(e) {
1873
+ de.value = e, ot(Je, de);
1155
1874
  }
1156
- function V() {
1157
- var o;
1158
- return ((o = $e(Ne, oe)) == null ? void 0 : o.value) || Ee;
1875
+ function _() {
1876
+ var e;
1877
+ return ((e = nt(Je, de)) == null ? void 0 : e.value) || Xe;
1159
1878
  }
1160
- async function nt(o) {
1161
- console.log("[AddonProvider] Sending GridTabs global config to Native:", o);
1879
+ async function Et(e) {
1880
+ console.log("[AddonProvider] Sending GridTabs global config to Native:", e);
1162
1881
  try {
1163
- const u = await E.callNativeWithPromise("GridTabsConfigModule", "setDefaultConfig", JSON.stringify(o));
1164
- return console.log("[AddonProvider] Received response from Native:", u), !!(u && u.success);
1165
- } catch (u) {
1166
- return console.error("[AddonProvider] Failed to initialize GridTabs global config:", u), !1;
1882
+ const i = await N.callNativeWithPromise("GridTabsConfigModule", "setDefaultConfig", JSON.stringify(e));
1883
+ return console.log("[AddonProvider] Received response from Native:", i), !!(i && i.success);
1884
+ } catch (i) {
1885
+ return console.error("[AddonProvider] Failed to initialize GridTabs global config:", i), !1;
1167
1886
  }
1168
1887
  }
1169
- const ot = {
1170
- install: (o) => {
1171
- o.use(xe), o.use(Ge), o.use(Oe), o.use(Fe), o.use(Me), o.use(De);
1888
+ async function xt(e) {
1889
+ console.log("[AddonProvider] Sending ExtraUI global theme config to Native:", e);
1890
+ try {
1891
+ const i = await N.callNativeWithPromise("ExtraUIConfigModule", "setThemeConfig", JSON.stringify(e));
1892
+ return console.log("[AddonProvider] Received ExtraUI theme response from Native:", i), !!(i && i.success);
1893
+ } catch (i) {
1894
+ return console.error("[AddonProvider] Failed to initialize ExtraUI global theme config:", i), !1;
1895
+ }
1896
+ }
1897
+ async function Wt(e) {
1898
+ console.log("[AddonProvider] Initializing global theme across all modules:", e);
1899
+ const i = await xt(e), u = await Et({
1900
+ themeConfig: {
1901
+ placeholderColor: e.placeholderColor,
1902
+ glowColor: e.glowColor || e.focusBackgroundColor,
1903
+ outerBorderColor: e.outerBorderColor || e.focusBorderColor,
1904
+ innerBorderColor: e.innerBorderColor,
1905
+ enableElevationShadow: e.enableElevationShadow,
1906
+ cornerRadius: e.cornerRadius,
1907
+ buttonCornerRadius: e.buttonCornerRadius,
1908
+ primaryTextColor: e.primaryTextColor,
1909
+ secondaryTextColor: e.secondaryTextColor,
1910
+ focusTextColor: e.focusTextColor,
1911
+ selectedTextColor: e.selectedTextColor,
1912
+ selectedBackgroundColor: e.selectedBackgroundColor,
1913
+ focusBackgroundColor: e.focusBackgroundColor,
1914
+ buttonNormalBackgroundColor: e.buttonNormalBackgroundColor
1915
+ // 更多属性映射根据后续 Glint/GridTabs 支持情况添加
1916
+ }
1917
+ });
1918
+ return i && u;
1919
+ }
1920
+ const jt = {
1921
+ install: (e) => {
1922
+ e.use(it), e.use(lt), e.use(rt), e.use(st), e.use(ct), e.use(ut), e.use(gt), e.use(ft), e.use(bt), e.use(pt), e.use(Ct), e.use(Nt), e.use(St);
1172
1923
  }
1173
1924
  };
1174
1925
  export {
1175
- Ne as ADDON_ENV_CONTEXT_KEY,
1176
- Z as GridTabs,
1177
- xe as GridTabsPlugin,
1178
- ge as HsvBackground,
1179
- Me as HsvBackgroundPlugin,
1180
- re as Keyboard,
1181
- Ge as KeyboardPlugin,
1182
- fe as PortalItem,
1183
- Fe as PortalItemPlugin,
1184
- ue as PortalPool,
1185
- Oe as PortalPoolPlugin,
1186
- ot as QuickTVUINAddons,
1187
- Le as QuickTVUINAddonsConfig,
1188
- me as SvgImage,
1189
- De as SvgImagePlugin,
1190
- ot as default,
1191
- et as initAddonEnv,
1192
- nt as initGridTabsGlobalConfig,
1193
- tt as provideAddonEnv,
1194
- V as useAddonEnv,
1195
- Xe as useGridTabs,
1196
- K as withAsyncPlugin
1926
+ Je as ADDON_ENV_CONTEXT_KEY,
1927
+ X as GridTabs,
1928
+ it as GridTabsPlugin,
1929
+ Te as HsvBackground,
1930
+ ct as HsvBackgroundPlugin,
1931
+ he as Keyboard,
1932
+ lt as KeyboardPlugin,
1933
+ xe as NaButton,
1934
+ gt as NaButtonPlugin,
1935
+ we as NaCheckbox,
1936
+ Be as NaCheckboxGroup,
1937
+ pt as NaCheckboxGroupPlugin,
1938
+ ft as NaCheckboxPlugin,
1939
+ Re as NaInputView,
1940
+ St as NaInputViewPlugin,
1941
+ $e as NaRadioGroup,
1942
+ bt as NaRadioGroupPlugin,
1943
+ qe as NaSettingSwitch,
1944
+ Nt as NaSettingSwitchPlugin,
1945
+ Oe as NaSwitcher,
1946
+ Ct as NaSwitcherPlugin,
1947
+ Ie as PortalItem,
1948
+ st as PortalItemPlugin,
1949
+ Ce as PortalPool,
1950
+ rt as PortalPoolPlugin,
1951
+ jt as QuickTVUINAddons,
1952
+ Pt as QuickTVUINAddonsConfig,
1953
+ Pe as SvgImage,
1954
+ ut as SvgImagePlugin,
1955
+ jt as default,
1956
+ Ut as initAddonEnv,
1957
+ xt as initExtraUIGlobalTheme,
1958
+ Wt as initGlobalTheme,
1959
+ Et as initGridTabsGlobalConfig,
1960
+ Vt as provideAddonEnv,
1961
+ _ as useAddonEnv,
1962
+ _t as useGridTabs,
1963
+ L as withAsyncPlugin
1197
1964
  };