layplux 0.0.1

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 (201) hide show
  1. package/dist/cjs/components/center-view/index.cjs +41 -0
  2. package/dist/cjs/components/corner-glow/index.cjs +31 -0
  3. package/dist/cjs/components/dropdown/index.cjs +162 -0
  4. package/dist/cjs/components/icon/index.cjs +59 -0
  5. package/dist/cjs/components/index.cjs +25 -0
  6. package/dist/cjs/components/panel-view/index.cjs +166 -0
  7. package/dist/cjs/components/popup/index.cjs +280 -0
  8. package/dist/cjs/components/title/index.cjs +76 -0
  9. package/dist/cjs/components/tooltip/index.cjs +68 -0
  10. package/dist/cjs/components/widget/index.cjs +104 -0
  11. package/dist/cjs/index.cjs +40 -0
  12. package/dist/cjs/layout/glass-overlay.cjs +31 -0
  13. package/dist/cjs/layout/layered-manager.cjs +35 -0
  14. package/dist/cjs/layout/layplux.cjs +41 -0
  15. package/dist/cjs/layout/root-pane.cjs +46 -0
  16. package/dist/cjs/layout/skeleton/bottom-area.cjs +64 -0
  17. package/dist/cjs/layout/skeleton/bottom-left-area.cjs +42 -0
  18. package/dist/cjs/layout/skeleton/bottom-right-area.cjs +38 -0
  19. package/dist/cjs/layout/skeleton/center-area.cjs +467 -0
  20. package/dist/cjs/layout/skeleton/index.cjs +24 -0
  21. package/dist/cjs/layout/skeleton/left-bottom-area.cjs +42 -0
  22. package/dist/cjs/layout/skeleton/left-top-area.cjs +42 -0
  23. package/dist/cjs/layout/skeleton/right-bottom-area.cjs +38 -0
  24. package/dist/cjs/layout/skeleton/right-top-area.cjs +38 -0
  25. package/dist/cjs/layout/skeleton/skeleton.cjs +66 -0
  26. package/dist/cjs/layout/skeleton/top-area.cjs +64 -0
  27. package/dist/cjs/locales/en-US.cjs +34 -0
  28. package/dist/cjs/locales/index.cjs +39 -0
  29. package/dist/cjs/locales/zh-CN.cjs +34 -0
  30. package/dist/cjs/managers/area.cjs +32 -0
  31. package/dist/cjs/managers/index.cjs +20 -0
  32. package/dist/cjs/managers/pane.cjs +34 -0
  33. package/dist/cjs/managers/skeleton.cjs +208 -0
  34. package/dist/cjs/managers/theme.cjs +37 -0
  35. package/dist/cjs/managers/widget-container.cjs +96 -0
  36. package/dist/cjs/managers/widget.cjs +103 -0
  37. package/dist/cjs/types/config.cjs +16 -0
  38. package/dist/cjs/types/index.cjs +18 -0
  39. package/dist/cjs/types/locale.cjs +16 -0
  40. package/dist/cjs/utils/event-bus.cjs +154 -0
  41. package/dist/cjs/utils/focus-tracker.cjs +154 -0
  42. package/dist/cjs/utils/index.cjs +31 -0
  43. package/dist/cjs/utils/unique-id.cjs +27 -0
  44. package/dist/cjs/utils/vue.cjs +37 -0
  45. package/dist/esm/components/center-view/index.mjs +21 -0
  46. package/dist/esm/components/corner-glow/index.mjs +11 -0
  47. package/dist/esm/components/dropdown/index.mjs +146 -0
  48. package/dist/esm/components/icon/index.mjs +39 -0
  49. package/dist/esm/components/index.mjs +8 -0
  50. package/dist/esm/components/panel-view/index.mjs +152 -0
  51. package/dist/esm/components/popup/index.mjs +268 -0
  52. package/dist/esm/components/title/index.mjs +56 -0
  53. package/dist/esm/components/tooltip/index.mjs +48 -0
  54. package/dist/esm/components/widget/index.mjs +84 -0
  55. package/dist/esm/index.mjs +10 -0
  56. package/dist/esm/layout/glass-overlay.mjs +11 -0
  57. package/dist/esm/layout/layered-manager.mjs +15 -0
  58. package/dist/esm/layout/layplux.mjs +21 -0
  59. package/dist/esm/layout/root-pane.mjs +26 -0
  60. package/dist/esm/layout/skeleton/bottom-area.mjs +44 -0
  61. package/dist/esm/layout/skeleton/bottom-left-area.mjs +22 -0
  62. package/dist/esm/layout/skeleton/bottom-right-area.mjs +18 -0
  63. package/dist/esm/layout/skeleton/center-area.mjs +454 -0
  64. package/dist/esm/layout/skeleton/index.mjs +4 -0
  65. package/dist/esm/layout/skeleton/left-bottom-area.mjs +22 -0
  66. package/dist/esm/layout/skeleton/left-top-area.mjs +22 -0
  67. package/dist/esm/layout/skeleton/right-bottom-area.mjs +18 -0
  68. package/dist/esm/layout/skeleton/right-top-area.mjs +18 -0
  69. package/dist/esm/layout/skeleton/skeleton.mjs +46 -0
  70. package/dist/esm/layout/skeleton/top-area.mjs +44 -0
  71. package/dist/esm/locales/en-US.mjs +14 -0
  72. package/dist/esm/locales/index.mjs +19 -0
  73. package/dist/esm/locales/zh-CN.mjs +14 -0
  74. package/dist/esm/managers/area.mjs +12 -0
  75. package/dist/esm/managers/index.mjs +3 -0
  76. package/dist/esm/managers/pane.mjs +14 -0
  77. package/dist/esm/managers/skeleton.mjs +192 -0
  78. package/dist/esm/managers/theme.mjs +17 -0
  79. package/dist/esm/managers/widget-container.mjs +76 -0
  80. package/dist/esm/managers/widget.mjs +83 -0
  81. package/dist/esm/types/config.mjs +0 -0
  82. package/dist/esm/types/index.mjs +1 -0
  83. package/dist/esm/types/locale.mjs +0 -0
  84. package/dist/esm/utils/event-bus.mjs +124 -0
  85. package/dist/esm/utils/focus-tracker.mjs +135 -0
  86. package/dist/esm/utils/index.mjs +10 -0
  87. package/dist/esm/utils/unique-id.mjs +7 -0
  88. package/dist/esm/utils/vue.mjs +17 -0
  89. package/dist/style/base/_tokens-dark.scss +51 -0
  90. package/dist/style/base/_tokens.scss +56 -0
  91. package/dist/style/components/_bottom-area.scss +30 -0
  92. package/dist/style/components/_bottom-left-area.scss +8 -0
  93. package/dist/style/components/_bottom-right-area.scss +8 -0
  94. package/dist/style/components/_center-area.scss +162 -0
  95. package/dist/style/components/_corner-glow.scss +17 -0
  96. package/dist/style/components/_dropdown.scss +91 -0
  97. package/dist/style/components/_glass-pane.scss +6 -0
  98. package/dist/style/components/_layered-manager.scss +6 -0
  99. package/dist/style/components/_left-bottom-area.scss +8 -0
  100. package/dist/style/components/_left-top-area.scss +9 -0
  101. package/dist/style/components/_pane-view.scss +79 -0
  102. package/dist/style/components/_popup.scss +19 -0
  103. package/dist/style/components/_right-bottom-area.scss +8 -0
  104. package/dist/style/components/_right-top-area.scss +8 -0
  105. package/dist/style/components/_root-pane.scss +17 -0
  106. package/dist/style/components/_skeleton.scss +38 -0
  107. package/dist/style/components/_title-view.scss +176 -0
  108. package/dist/style/components/_tooltip.scss +65 -0
  109. package/dist/style/components/_top-area.scss +25 -0
  110. package/dist/style/index.css +768 -0
  111. package/dist/style/layplux.scss +21 -0
  112. package/dist/types/components/center-view/index.d.ts +16 -0
  113. package/dist/types/components/center-view/index.d.ts.map +1 -0
  114. package/dist/types/components/corner-glow/index.d.ts +2 -0
  115. package/dist/types/components/corner-glow/index.d.ts.map +1 -0
  116. package/dist/types/components/dropdown/index.d.ts +116 -0
  117. package/dist/types/components/dropdown/index.d.ts.map +1 -0
  118. package/dist/types/components/icon/index.d.ts +22 -0
  119. package/dist/types/components/icon/index.d.ts.map +1 -0
  120. package/dist/types/components/index.d.ts +9 -0
  121. package/dist/types/components/index.d.ts.map +1 -0
  122. package/dist/types/components/panel-view/index.d.ts +22 -0
  123. package/dist/types/components/panel-view/index.d.ts.map +1 -0
  124. package/dist/types/components/popup/index.d.ts +99 -0
  125. package/dist/types/components/popup/index.d.ts.map +1 -0
  126. package/dist/types/components/title/index.d.ts +57 -0
  127. package/dist/types/components/title/index.d.ts.map +1 -0
  128. package/dist/types/components/tooltip/index.d.ts +69 -0
  129. package/dist/types/components/tooltip/index.d.ts.map +1 -0
  130. package/dist/types/components/widget/index.d.ts +15 -0
  131. package/dist/types/components/widget/index.d.ts.map +1 -0
  132. package/dist/types/index.d.ts +10 -0
  133. package/dist/types/index.d.ts.map +1 -0
  134. package/dist/types/layout/glass-overlay.d.ts +2 -0
  135. package/dist/types/layout/glass-overlay.d.ts.map +1 -0
  136. package/dist/types/layout/layered-manager.d.ts +8 -0
  137. package/dist/types/layout/layered-manager.d.ts.map +1 -0
  138. package/dist/types/layout/layplux.d.ts +25 -0
  139. package/dist/types/layout/layplux.d.ts.map +1 -0
  140. package/dist/types/layout/root-pane.d.ts +8 -0
  141. package/dist/types/layout/root-pane.d.ts.map +1 -0
  142. package/dist/types/layout/skeleton/bottom-area.d.ts +9 -0
  143. package/dist/types/layout/skeleton/bottom-area.d.ts.map +1 -0
  144. package/dist/types/layout/skeleton/bottom-left-area.d.ts +9 -0
  145. package/dist/types/layout/skeleton/bottom-left-area.d.ts.map +1 -0
  146. package/dist/types/layout/skeleton/bottom-right-area.d.ts +9 -0
  147. package/dist/types/layout/skeleton/bottom-right-area.d.ts.map +1 -0
  148. package/dist/types/layout/skeleton/center-area.d.ts +11 -0
  149. package/dist/types/layout/skeleton/center-area.d.ts.map +1 -0
  150. package/dist/types/layout/skeleton/index.d.ts +2 -0
  151. package/dist/types/layout/skeleton/index.d.ts.map +1 -0
  152. package/dist/types/layout/skeleton/left-bottom-area.d.ts +9 -0
  153. package/dist/types/layout/skeleton/left-bottom-area.d.ts.map +1 -0
  154. package/dist/types/layout/skeleton/left-top-area.d.ts +9 -0
  155. package/dist/types/layout/skeleton/left-top-area.d.ts.map +1 -0
  156. package/dist/types/layout/skeleton/right-bottom-area.d.ts +9 -0
  157. package/dist/types/layout/skeleton/right-bottom-area.d.ts.map +1 -0
  158. package/dist/types/layout/skeleton/right-top-area.d.ts +9 -0
  159. package/dist/types/layout/skeleton/right-top-area.d.ts.map +1 -0
  160. package/dist/types/layout/skeleton/skeleton.d.ts +8 -0
  161. package/dist/types/layout/skeleton/skeleton.d.ts.map +1 -0
  162. package/dist/types/layout/skeleton/top-area.d.ts +9 -0
  163. package/dist/types/layout/skeleton/top-area.d.ts.map +1 -0
  164. package/dist/types/locales/en-US.d.ts +3 -0
  165. package/dist/types/locales/en-US.d.ts.map +1 -0
  166. package/dist/types/locales/index.d.ts +7 -0
  167. package/dist/types/locales/index.d.ts.map +1 -0
  168. package/dist/types/locales/zh-CN.d.ts +3 -0
  169. package/dist/types/locales/zh-CN.d.ts.map +1 -0
  170. package/dist/types/managers/area.d.ts +10 -0
  171. package/dist/types/managers/area.d.ts.map +1 -0
  172. package/dist/types/managers/index.d.ts +5 -0
  173. package/dist/types/managers/index.d.ts.map +1 -0
  174. package/dist/types/managers/pane.d.ts +8 -0
  175. package/dist/types/managers/pane.d.ts.map +1 -0
  176. package/dist/types/managers/skeleton.d.ts +38 -0
  177. package/dist/types/managers/skeleton.d.ts.map +1 -0
  178. package/dist/types/managers/theme.d.ts +2 -0
  179. package/dist/types/managers/theme.d.ts.map +1 -0
  180. package/dist/types/managers/widget-container.d.ts +21 -0
  181. package/dist/types/managers/widget-container.d.ts.map +1 -0
  182. package/dist/types/managers/widget.d.ts +26 -0
  183. package/dist/types/managers/widget.d.ts.map +1 -0
  184. package/dist/types/types/config.d.ts +54 -0
  185. package/dist/types/types/config.d.ts.map +1 -0
  186. package/dist/types/types/index.d.ts +2 -0
  187. package/dist/types/types/index.d.ts.map +1 -0
  188. package/dist/types/types/locale.d.ts +12 -0
  189. package/dist/types/types/locale.d.ts.map +1 -0
  190. package/dist/types/utils/event-bus.d.ts +18 -0
  191. package/dist/types/utils/event-bus.d.ts.map +1 -0
  192. package/dist/types/utils/focus-tracker.d.ts +37 -0
  193. package/dist/types/utils/focus-tracker.d.ts.map +1 -0
  194. package/dist/types/utils/index.d.ts +6 -0
  195. package/dist/types/utils/index.d.ts.map +1 -0
  196. package/dist/types/utils/unique-id.d.ts +2 -0
  197. package/dist/types/utils/unique-id.d.ts.map +1 -0
  198. package/dist/types/utils/vue.d.ts +5 -0
  199. package/dist/types/utils/vue.d.ts.map +1 -0
  200. package/dist/umd/index.js +4000 -0
  201. package/package.json +46 -0
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var skeleton_exports = {};
20
+ __export(skeleton_exports, {
21
+ useSkeleton: () => useSkeleton
22
+ });
23
+ module.exports = __toCommonJS(skeleton_exports);
24
+ var import_vue = require("vue");
25
+ var import_area = require("./area");
26
+ var import_widget = require("./widget");
27
+ var import_widget_container = require("./widget-container");
28
+ var import_utils = require("../utils");
29
+ var import_theme = require("./theme");
30
+ function useSkeleton() {
31
+ const widgets = [];
32
+ const self = {};
33
+ const containers = /* @__PURE__ */ new Map();
34
+ const focusTracker = new import_utils.FocusTracker();
35
+ const event = (0, import_utils.createPluginEventBus)("skeleton");
36
+ const locale = (0, import_vue.ref)((0, import_utils.getBuiltInLocale)("zh-CN"));
37
+ function setLocale(name) {
38
+ locale.value = (0, import_utils.getBuiltInLocale)(name);
39
+ }
40
+ const theme = (0, import_vue.ref)("system");
41
+ const systemDark = (0, import_vue.ref)(
42
+ typeof window !== "undefined" ? window.matchMedia("(prefers-color-scheme: dark)").matches : false
43
+ );
44
+ function resolveTheme() {
45
+ if (theme.value === "system") {
46
+ return systemDark.value ? "dark" : "light";
47
+ }
48
+ return theme.value;
49
+ }
50
+ function isDark() {
51
+ return resolveTheme() === "dark";
52
+ }
53
+ function setTheme(t) {
54
+ theme.value = t;
55
+ }
56
+ const themeName = (0, import_vue.ref)("default");
57
+ function setThemeName(name) {
58
+ themeName.value = name;
59
+ }
60
+ function registerTheme(name, vars) {
61
+ (0, import_theme.injectThemeCSS)(name, vars);
62
+ }
63
+ if (typeof window !== "undefined") {
64
+ window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (e) => {
65
+ systemDark.value = e.matches;
66
+ });
67
+ }
68
+ const topArea = (0, import_area.useArea)(
69
+ {
70
+ createContainer
71
+ },
72
+ "topArea",
73
+ (config, container) => createWidget(config, container)
74
+ );
75
+ const bottomArea = (0, import_area.useArea)(
76
+ {
77
+ createContainer
78
+ },
79
+ "bottomArea",
80
+ (config, container) => createWidget(config, container)
81
+ );
82
+ const leftTopArea = (0, import_area.useArea)(
83
+ {
84
+ createContainer
85
+ },
86
+ "leftTopArea",
87
+ (config, container) => createWidget(config, container)
88
+ );
89
+ const leftBottomArea = (0, import_area.useArea)(
90
+ {
91
+ createContainer
92
+ },
93
+ "leftBottomArea",
94
+ (config, container) => createWidget(config, container)
95
+ );
96
+ const rightTopArea = (0, import_area.useArea)(
97
+ { createContainer },
98
+ "rightTopArea",
99
+ (config, container) => createWidget(config, container)
100
+ );
101
+ const rightBottomArea = (0, import_area.useArea)(
102
+ { createContainer },
103
+ "rightBottomArea",
104
+ (config, container) => createWidget(config, container)
105
+ );
106
+ const bottomRightArea = (0, import_area.useArea)(
107
+ { createContainer },
108
+ "bottomRightArea",
109
+ (config, container) => createWidget(config, container)
110
+ );
111
+ const bottomLeftArea = (0, import_area.useArea)(
112
+ {
113
+ createContainer
114
+ },
115
+ "bottomLeftArea",
116
+ (config, container) => createWidget(config, container)
117
+ );
118
+ const centerArea = (0, import_area.useArea)(
119
+ { createContainer },
120
+ "centerArea",
121
+ (config, container) => createWidget(config, container)
122
+ );
123
+ function createWidget(config, container) {
124
+ if ((0, import_widget.isWidget)(config)) {
125
+ return config;
126
+ }
127
+ const widget = (0, import_widget.useWidget)(config, container, self);
128
+ widgets.push(widget);
129
+ event.emitGlobal("skeleton:widget-added", { widget });
130
+ return widget;
131
+ }
132
+ const focusedId = (0, import_vue.ref)(null);
133
+ function toggleFocus(id) {
134
+ if (focusedId.value === id) {
135
+ blur();
136
+ } else {
137
+ focus(id);
138
+ }
139
+ }
140
+ function focus(id) {
141
+ focusedId.value = id;
142
+ event.emitGlobal("skeleton:focus-changed", { focusedId: id });
143
+ }
144
+ function blur() {
145
+ focusedId.value = null;
146
+ event.emitGlobal("skeleton:focus-changed", { focusedId: null });
147
+ }
148
+ function add(config, extraConfig) {
149
+ if (extraConfig) {
150
+ config = { ...config, ...extraConfig };
151
+ }
152
+ const { area } = config;
153
+ if (area === "topArea") {
154
+ topArea.add(config);
155
+ } else if (area === "bottomArea") {
156
+ bottomArea.add(config);
157
+ } else if (area === "leftTopArea") {
158
+ leftTopArea.add(config);
159
+ } else if (area === "leftBottomArea") {
160
+ leftBottomArea.add(config);
161
+ } else if (area === "bottomLeftArea") {
162
+ bottomLeftArea.add(config);
163
+ } else if (area === "rightTopArea") {
164
+ rightTopArea.add(config);
165
+ } else if (area === "rightBottomArea") {
166
+ rightBottomArea.add(config);
167
+ } else if (area === "bottomRightArea") {
168
+ bottomRightArea.add(config);
169
+ } else if (area === "centerArea") {
170
+ centerArea.add(config);
171
+ }
172
+ }
173
+ function createContainer(name, handle) {
174
+ const container = (0, import_widget_container.useWidgetContainer)(handle, self);
175
+ containers.set(name, container);
176
+ return container;
177
+ }
178
+ Object.assign(self, {
179
+ widgets,
180
+ topArea,
181
+ bottomArea,
182
+ leftTopArea,
183
+ leftBottomArea,
184
+ rightTopArea,
185
+ rightBottomArea,
186
+ bottomRightArea,
187
+ bottomLeftArea,
188
+ centerArea,
189
+ focusedId,
190
+ focusTracker,
191
+ event,
192
+ locale,
193
+ setLocale,
194
+ theme,
195
+ resolveTheme,
196
+ isDark,
197
+ setTheme,
198
+ themeName,
199
+ setThemeName,
200
+ registerTheme,
201
+ toggleFocus,
202
+ focus,
203
+ blur,
204
+ add,
205
+ createContainer
206
+ });
207
+ return self;
208
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var theme_exports = {};
20
+ __export(theme_exports, {
21
+ injectThemeCSS: () => injectThemeCSS
22
+ });
23
+ module.exports = __toCommonJS(theme_exports);
24
+ function injectThemeCSS(name, vars) {
25
+ const styleId = `layplux-theme-${name}`;
26
+ let styleEl = document.getElementById(styleId);
27
+ if (!styleEl) {
28
+ styleEl = document.createElement("style");
29
+ styleEl.id = styleId;
30
+ document.head.appendChild(styleEl);
31
+ }
32
+ const varLines = Object.entries(vars).map(([key, value]) => ` ${key}: ${value};`).join("\n");
33
+ styleEl.textContent = `.layplux-root[data-theme='${name}'] {
34
+ ${varLines}
35
+ }
36
+ `;
37
+ }
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var widget_container_exports = {};
20
+ __export(widget_container_exports, {
21
+ useWidgetContainer: () => useWidgetContainer
22
+ });
23
+ module.exports = __toCommonJS(widget_container_exports);
24
+ var import_vue = require("vue");
25
+ function useWidgetContainer(handle, skeleton) {
26
+ const maps = {};
27
+ const items = (0, import_vue.ref)([]);
28
+ const activeId = (0, import_vue.ref)(null);
29
+ const self = {
30
+ items,
31
+ activeId,
32
+ add,
33
+ get,
34
+ getAt,
35
+ indexOf,
36
+ remove,
37
+ activate,
38
+ deactivate,
39
+ toggleActive
40
+ };
41
+ function add(item) {
42
+ const nItem = handle(item, self);
43
+ const origin = get(nItem.name);
44
+ if (origin === nItem) return origin;
45
+ const i = origin ? items.value.indexOf(origin) : -1;
46
+ if (i > -1) {
47
+ items.value.splice(i, 1, nItem);
48
+ } else {
49
+ items.value.push(nItem);
50
+ }
51
+ maps[nItem.name] = nItem;
52
+ return nItem;
53
+ }
54
+ function get(name) {
55
+ return maps[name] || null;
56
+ }
57
+ function getAt(index) {
58
+ return items.value[index] || null;
59
+ }
60
+ function indexOf(item) {
61
+ return items.value.indexOf(item);
62
+ }
63
+ function remove(name) {
64
+ const item = maps[name];
65
+ if (!item) return null;
66
+ const i = items.value.indexOf(item);
67
+ if (i > -1) items.value.splice(i, 1);
68
+ delete maps[name];
69
+ skeleton.event.emitGlobal("skeleton:widget-removed", { name });
70
+ return item;
71
+ }
72
+ function activate(id) {
73
+ if (!maps[id]) return;
74
+ activeId.value = id;
75
+ skeleton.focus(id);
76
+ maps[id].focusable.active();
77
+ skeleton.event.emitGlobal(`widget:${id}:activated`, { widget: maps[id] });
78
+ }
79
+ function deactivate() {
80
+ const current = activeId.value;
81
+ activeId.value = null;
82
+ skeleton.blur();
83
+ if (current && maps[current]) {
84
+ maps[current].focusable.suspense();
85
+ skeleton.event.emitGlobal(`widget:${current}:deactivated`, { widget: maps[current] });
86
+ }
87
+ }
88
+ function toggleActive(id) {
89
+ if (activeId.value === id) {
90
+ deactivate();
91
+ } else {
92
+ activate(id);
93
+ }
94
+ }
95
+ return self;
96
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var widget_exports = {};
20
+ __export(widget_exports, {
21
+ isWidget: () => isWidget,
22
+ useWidget: () => useWidget
23
+ });
24
+ module.exports = __toCommonJS(widget_exports);
25
+ var import_vue = require("vue");
26
+ var import_utils = require("../utils");
27
+ var import_components = require("../components");
28
+ var import_pane = require("./pane");
29
+ function useWidget(config, container, skeleton) {
30
+ const { name, props, type } = config;
31
+ const active = (0, import_vue.computed)(() => container?.activeId.value === name);
32
+ const focused = (0, import_vue.computed)(() => skeleton?.focusedId.value === name);
33
+ const id = (0, import_utils.uniqueId)(type);
34
+ const align = props?.align ?? "left";
35
+ const pane = (0, import_pane.usePane)();
36
+ const focusable = skeleton.focusTracker.create({
37
+ range: (e) => {
38
+ const target = e.target;
39
+ if (!target) {
40
+ return false;
41
+ }
42
+ const el = document.getElementById(id);
43
+ if (el?.contains(target)) {
44
+ return true;
45
+ }
46
+ if (target.classList.contains("layplux-resize-handle")) {
47
+ return true;
48
+ }
49
+ return false;
50
+ },
51
+ onActive: () => {
52
+ widget.container?.activate(name);
53
+ skeleton.event?.emitGlobal(`widget:${name}:focus`, { widget });
54
+ },
55
+ onBlur: () => {
56
+ skeleton.blur();
57
+ skeleton.event?.emitGlobal(`widget:${name}:blur`, { widget });
58
+ if (pane.viewMode.value === "DockUnpinned" || pane.viewMode.value === "Undock") {
59
+ container?.deactivate();
60
+ }
61
+ }
62
+ });
63
+ function renderBody() {
64
+ const { content, contentProps } = config;
65
+ return (0, import_utils.createContent)(content, { ...contentProps, config, event: widget.event });
66
+ }
67
+ function renderContent() {
68
+ return (0, import_vue.h)(import_components.WidgetView, { key: id, widget });
69
+ }
70
+ function renderTitle() {
71
+ return (0, import_vue.h)(import_components.WidgetTitleView, { key: id, widget });
72
+ }
73
+ const widget = {
74
+ id,
75
+ type,
76
+ isWidget: true,
77
+ name,
78
+ align,
79
+ config,
80
+ active,
81
+ focused,
82
+ container,
83
+ pane,
84
+ focusable,
85
+ event: skeleton.event,
86
+ renderBody,
87
+ renderContent,
88
+ renderTitle
89
+ };
90
+ props?.onInit?.(widget);
91
+ if (skeleton?.event) {
92
+ (0, import_vue.watch)(
93
+ () => pane.viewMode.value,
94
+ (mode) => {
95
+ skeleton.event.emitGlobal(`widget:${name}:view-mode-changed`, { widget, mode });
96
+ }
97
+ );
98
+ }
99
+ return widget;
100
+ }
101
+ function isWidget(obj) {
102
+ return obj && obj.isWidget;
103
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var config_exports = {};
16
+ module.exports = __toCommonJS(config_exports);
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var types_exports = {};
17
+ module.exports = __toCommonJS(types_exports);
18
+ __reExport(types_exports, require("./config"), module.exports);
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var locale_exports = {};
16
+ module.exports = __toCommonJS(locale_exports);
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var event_bus_exports = {};
30
+ __export(event_bus_exports, {
31
+ createPluginEventBus: () => createPluginEventBus,
32
+ emitSystemEvent: () => emitSystemEvent,
33
+ getGlobalEmitter: () => getGlobalEmitter,
34
+ onSystemEvent: () => onSystemEvent
35
+ });
36
+ module.exports = __toCommonJS(event_bus_exports);
37
+ var import_eventemitter2 = __toESM(require("eventemitter2"), 1);
38
+ const globalEmitter = new import_eventemitter2.default({
39
+ wildcard: true,
40
+ // 开启通配符
41
+ delimiter: ":",
42
+ // 命名空间分隔符,与原版 createModuleEventBus 保持一致
43
+ newListener: false,
44
+ // 不触发 newListener 事件,减少不必要开销
45
+ maxListeners: 200,
46
+ // 对标原版 createModuleEventBus(pluginName, 200) 的容量参数
47
+ verboseMemoryLeak: true
48
+ // 超出 maxListeners 时打印详细的内存泄漏警告
49
+ });
50
+ function createPluginEventBus(namespace) {
51
+ const privateEmitter = new import_eventemitter2.default({
52
+ wildcard: true,
53
+ delimiter: ":",
54
+ newListener: false,
55
+ maxListeners: 200,
56
+ verboseMemoryLeak: true
57
+ });
58
+ const prefixed = (event) => `${namespace}:${event}`;
59
+ return {
60
+ // ── 私有事件(自动加 namespace 前缀)──────────────────────────
61
+ emit(event, payload) {
62
+ privateEmitter.emit(prefixed(event), payload);
63
+ },
64
+ /**
65
+ * 订阅私有事件,返回取消订阅函数。
66
+ * 利用 EventEmitter2 的 Listener 对象的 .off() 方法,
67
+ * 无需调用方保存 handler 引用。
68
+ */
69
+ on(event, handler) {
70
+ const listener = privateEmitter.on(
71
+ prefixed(event),
72
+ handler,
73
+ { objectify: true }
74
+ // 返回 Listener 对象而非 emitter 本身
75
+ );
76
+ return () => listener.off();
77
+ },
78
+ off(event, handler) {
79
+ privateEmitter.off(prefixed(event), handler);
80
+ },
81
+ /**
82
+ * 订阅一次后自动取消
83
+ */
84
+ once(event, handler) {
85
+ const listener = privateEmitter.once(prefixed(event), handler, {
86
+ objectify: true
87
+ });
88
+ return () => listener.off();
89
+ },
90
+ // ── 全局事件(跨插件通信,走 globalEmitter)────────────────────
91
+ emitGlobal(event, payload) {
92
+ globalEmitter.emit(event, payload);
93
+ },
94
+ /**
95
+ * 订阅全局事件,支持通配符:
96
+ * onGlobal('layout:*', fn) → 订阅所有 layout 事件
97
+ * onGlobal('layout:panel-**', fn)→ 订阅所有 layout:panel 开头的事件
98
+ * onGlobal('**', fn) → 订阅所有全局事件(慎用)
99
+ */
100
+ onGlobal(event, handler) {
101
+ const listener = globalEmitter.on(event, handler, {
102
+ objectify: true
103
+ });
104
+ return () => listener.off();
105
+ },
106
+ offGlobal(event, handler) {
107
+ globalEmitter.off(event, handler);
108
+ },
109
+ onGlobalOnce(event, handler) {
110
+ const listener = globalEmitter.once(event, handler, {
111
+ objectify: true
112
+ });
113
+ return () => listener.off();
114
+ },
115
+ /**
116
+ * 等待某个全局事件触发,返回 Promise(EventEmitter2 原生支持)
117
+ * 适合插件 setup 中等待其他插件就绪的场景:
118
+ * await ctx.event.waitForGlobal('explorer:ready', 5000)
119
+ */
120
+ waitForGlobal(event, timeoutMs) {
121
+ return new Promise((resolve, reject) => {
122
+ const timer = timeoutMs ? setTimeout(() => {
123
+ globalEmitter.off(event, onEvent);
124
+ reject(new Error(`[EventBus] Timeout waiting for "${event}" after ${timeoutMs}ms`));
125
+ }, timeoutMs) : null;
126
+ function onEvent(payload) {
127
+ if (timer) clearTimeout(timer);
128
+ resolve(payload);
129
+ }
130
+ globalEmitter.once(event, onEvent);
131
+ });
132
+ },
133
+ // ── 清理(插件 destroy 时调用)─────────────────────────────────
134
+ /**
135
+ * 移除该插件私有 emitter 上的所有监听器。
136
+ * 全局监听器需要单独 offGlobal(插件应在 teardown 中手动清理)。
137
+ */
138
+ removeAllListeners() {
139
+ privateEmitter.removeAllListeners();
140
+ }
141
+ };
142
+ }
143
+ function emitSystemEvent(event, payload) {
144
+ globalEmitter.emit(event, payload);
145
+ }
146
+ function onSystemEvent(event, handler) {
147
+ const listener = globalEmitter.on(event, handler, {
148
+ objectify: true
149
+ });
150
+ return () => listener.off();
151
+ }
152
+ function getGlobalEmitter() {
153
+ return globalEmitter;
154
+ }