@hai3/studio 0.1.0-alpha.0

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.
package/dist/index.js ADDED
@@ -0,0 +1,1422 @@
1
+ 'use strict';
2
+
3
+ var React3 = require('react');
4
+ var uicore = require('@hai3/uicore');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var uikit = require('@hai3/uikit');
7
+ var lodash = require('lodash');
8
+ var uikitContracts = require('@hai3/uikit-contracts');
9
+
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var React3__default = /*#__PURE__*/_interopDefault(React3);
13
+
14
+ var __create = Object.create;
15
+ var __defProp = Object.defineProperty;
16
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
17
+ var __getOwnPropNames = Object.getOwnPropertyNames;
18
+ var __getProtoOf = Object.getPrototypeOf;
19
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
20
+ var __commonJS = (cb, mod) => function __require() {
21
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
22
+ };
23
+ var __copyProps = (to, from, except, desc) => {
24
+ if (from && typeof from === "object" || typeof from === "function") {
25
+ for (let key of __getOwnPropNames(from))
26
+ if (!__hasOwnProp.call(to, key) && key !== except)
27
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
28
+ }
29
+ return to;
30
+ };
31
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
32
+ // If the importer is in node compatibility mode or this is not an ESM
33
+ // file that has been converted to a CommonJS file using a Babel-
34
+ // compatible transform (i.e. "__esModule" has not been set), then set
35
+ // "default" to the CommonJS "module.exports" for node compatibility.
36
+ !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
37
+ mod
38
+ ));
39
+
40
+ // src/i18n/en.json
41
+ var require_en = __commonJS({
42
+ "src/i18n/en.json"(exports, module) {
43
+ module.exports = {
44
+ title: "HAI3 Studio",
45
+ aria: {
46
+ openButton: "Open Studio (Shift+`) or drag to move",
47
+ collapseButton: "Collapse Studio panel",
48
+ resizeHandle: "Resize Studio panel"
49
+ },
50
+ controls: {
51
+ heading: "Development Controls",
52
+ screenset: "Screenset:",
53
+ theme: "Theme:",
54
+ language: "Language:",
55
+ mockApi: "Mock API"
56
+ }
57
+ };
58
+ }
59
+ });
60
+
61
+ // src/i18n/ar.json
62
+ var require_ar = __commonJS({
63
+ "src/i18n/ar.json"(exports, module) {
64
+ module.exports = {
65
+ title: "\u0623\u062F\u0648\u0627\u062A \u062A\u0637\u0648\u064A\u0631 HAI3",
66
+ aria: {
67
+ openButton: "\u0641\u062A\u062D \u0623\u062F\u0648\u0627\u062A \u0627\u0644\u062A\u0637\u0648\u064A\u0631 (Shift+`) \u0623\u0648 \u0627\u0644\u0633\u062D\u0628 \u0644\u0644\u062A\u062D\u0631\u064A\u0643",
68
+ collapseButton: "\u0637\u064A \u0644\u0648\u062D\u0629 \u0623\u062F\u0648\u0627\u062A \u0627\u0644\u062A\u0637\u0648\u064A\u0631",
69
+ resizeHandle: "\u062A\u063A\u064A\u064A\u0631 \u062D\u062C\u0645 \u0644\u0648\u062D\u0629 \u0627\u0644\u0623\u062F\u0648\u0627\u062A"
70
+ },
71
+ controls: {
72
+ heading: "\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u062A\u062D\u0643\u0645 \u0641\u064A \u0627\u0644\u062A\u0637\u0648\u064A\u0631",
73
+ screenset: "\u0645\u062C\u0645\u0648\u0639\u0629 \u0627\u0644\u0634\u0627\u0634\u0627\u062A:",
74
+ theme: "\u0627\u0644\u0633\u0645\u0629:",
75
+ language: "\u0627\u0644\u0644\u063A\u0629:",
76
+ mockApi: "\u0648\u0627\u062C\u0647\u0629 \u0628\u0631\u0645\u062C\u064A\u0629 \u0648\u0647\u0645\u064A\u0629"
77
+ }
78
+ };
79
+ }
80
+ });
81
+
82
+ // src/i18n/bn.json
83
+ var require_bn = __commonJS({
84
+ "src/i18n/bn.json"(exports, module) {
85
+ module.exports = {
86
+ title: "HAI3 \u09A1\u09C7\u09AD\u09C7\u09B2\u09AA\u09AE\u09C7\u09A8\u09CD\u099F \u099F\u09C1\u09B2\u09B8",
87
+ aria: {
88
+ openButton: "\u09A1\u09C7\u09AD\u09C7\u09B2\u09AA\u09AE\u09C7\u09A8\u09CD\u099F \u099F\u09C1\u09B2\u09B8 \u0996\u09C1\u09B2\u09C1\u09A8 (Shift+`) \u09AC\u09BE \u09B8\u09B0\u09BE\u09A8\u09CB\u09B0 \u099C\u09A8\u09CD\u09AF \u099F\u09BE\u09A8\u09C1\u09A8",
89
+ collapseButton: "\u09A1\u09C7\u09AD\u09C7\u09B2\u09AA\u09AE\u09C7\u09A8\u09CD\u099F \u099F\u09C1\u09B2\u09B8 \u09AA\u09CD\u09AF\u09BE\u09A8\u09C7\u09B2 \u09B8\u0982\u0995\u09C1\u099A\u09BF\u09A4 \u0995\u09B0\u09C1\u09A8",
90
+ resizeHandle: "\u099F\u09C1\u09B2\u09B8 \u09AA\u09CD\u09AF\u09BE\u09A8\u09C7\u09B2\u09C7\u09B0 \u0986\u0995\u09BE\u09B0 \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09A8 \u0995\u09B0\u09C1\u09A8"
91
+ },
92
+ controls: {
93
+ heading: "\u0989\u09A8\u09CD\u09A8\u09AF\u09BC\u09A8 \u09A8\u09BF\u09AF\u09BC\u09A8\u09CD\u09A4\u09CD\u09B0\u09A3",
94
+ screenset: "\u09B8\u09CD\u0995\u09CD\u09B0\u09BF\u09A8\u09B8\u09C7\u099F:",
95
+ theme: "\u09A5\u09BF\u09AE:",
96
+ language: "\u09AD\u09BE\u09B7\u09BE:",
97
+ mockApi: "\u09AE\u0995 API"
98
+ }
99
+ };
100
+ }
101
+ });
102
+
103
+ // src/i18n/cs.json
104
+ var require_cs = __commonJS({
105
+ "src/i18n/cs.json"(exports, module) {
106
+ module.exports = {
107
+ title: "V\xFDvoj\xE1\u0159sk\xE9 n\xE1stroje HAI3",
108
+ aria: {
109
+ openButton: "Otev\u0159\xEDt v\xFDvoj\xE1\u0159sk\xE9 n\xE1stroje (Shift+`) nebo p\u0159et\xE1hnout pro p\u0159esun",
110
+ collapseButton: "Sbalit panel v\xFDvoj\xE1\u0159sk\xFDch n\xE1stroj\u016F",
111
+ resizeHandle: "Zm\u011Bnit velikost panelu n\xE1stroj\u016F"
112
+ },
113
+ controls: {
114
+ heading: "V\xFDvoj\xE1\u0159sk\xE9 ovl\xE1dac\xED prvky",
115
+ screenset: "Sada obrazovek:",
116
+ theme: "Motiv:",
117
+ language: "Jazyk:",
118
+ mockApi: "Simulovan\xE9 API"
119
+ }
120
+ };
121
+ }
122
+ });
123
+
124
+ // src/i18n/da.json
125
+ var require_da = __commonJS({
126
+ "src/i18n/da.json"(exports, module) {
127
+ module.exports = {
128
+ title: "HAI3 Udviklingsv\xE6rkt\xF8jer",
129
+ aria: {
130
+ openButton: "\xC5bn Udviklingsv\xE6rkt\xF8jer (Shift+`) eller tr\xE6k for at flytte",
131
+ collapseButton: "Skjul udviklingsv\xE6rkt\xF8jspanelet",
132
+ resizeHandle: "\xC6ndre st\xF8rrelse p\xE5 v\xE6rkt\xF8jspanelet"
133
+ },
134
+ controls: {
135
+ heading: "Udviklingskontrolelementer",
136
+ screenset: "Sk\xE6rms\xE6t:",
137
+ theme: "Tema:",
138
+ language: "Sprog:",
139
+ mockApi: "Mock-API"
140
+ }
141
+ };
142
+ }
143
+ });
144
+
145
+ // src/i18n/de.json
146
+ var require_de = __commonJS({
147
+ "src/i18n/de.json"(exports, module) {
148
+ module.exports = {
149
+ title: "HAI3 Entwicklerwerkzeuge",
150
+ aria: {
151
+ openButton: "Entwicklerwerkzeuge \xF6ffnen (Shift+`) oder ziehen zum Verschieben",
152
+ collapseButton: "Entwicklerwerkzeuge-Panel einklappen",
153
+ resizeHandle: "Gr\xF6\xDFe des Werkzeug-Panels \xE4ndern"
154
+ },
155
+ controls: {
156
+ heading: "Entwicklungssteuerung",
157
+ screenset: "Bildschirmset:",
158
+ theme: "Design:",
159
+ language: "Sprache:",
160
+ mockApi: "Mock-API"
161
+ }
162
+ };
163
+ }
164
+ });
165
+
166
+ // src/i18n/el.json
167
+ var require_el = __commonJS({
168
+ "src/i18n/el.json"(exports, module) {
169
+ module.exports = {
170
+ title: "\u0395\u03C1\u03B3\u03B1\u03BB\u03B5\u03AF\u03B1 \u0391\u03BD\u03AC\u03C0\u03C4\u03C5\u03BE\u03B7\u03C2 HAI3",
171
+ aria: {
172
+ openButton: "\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 \u0395\u03C1\u03B3\u03B1\u03BB\u03B5\u03AF\u03C9\u03BD \u0391\u03BD\u03AC\u03C0\u03C4\u03C5\u03BE\u03B7\u03C2 (Shift+`) \u03AE \u03C3\u03CD\u03C1\u03B5\u03C4\u03B5 \u03B3\u03B9\u03B1 \u03BC\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7",
173
+ collapseButton: "\u03A3\u03CD\u03BC\u03C0\u03C4\u03C5\u03BE\u03B7 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 \u03B5\u03C1\u03B3\u03B1\u03BB\u03B5\u03AF\u03C9\u03BD \u03B1\u03BD\u03AC\u03C0\u03C4\u03C5\u03BE\u03B7\u03C2",
174
+ resizeHandle: "\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03BC\u03B5\u03B3\u03AD\u03B8\u03BF\u03C5\u03C2 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 \u03B5\u03C1\u03B3\u03B1\u03BB\u03B5\u03AF\u03C9\u03BD"
175
+ },
176
+ controls: {
177
+ heading: "\u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 \u0395\u03BB\u03AD\u03B3\u03C7\u03BF\u03C5 \u0391\u03BD\u03AC\u03C0\u03C4\u03C5\u03BE\u03B7\u03C2",
178
+ screenset: "\u03A3\u03CD\u03BD\u03BF\u03BB\u03BF \u039F\u03B8\u03BF\u03BD\u03CE\u03BD:",
179
+ theme: "\u0398\u03AD\u03BC\u03B1:",
180
+ language: "\u0393\u03BB\u03CE\u03C3\u03C3\u03B1:",
181
+ mockApi: "Mock API"
182
+ }
183
+ };
184
+ }
185
+ });
186
+
187
+ // src/i18n/es.json
188
+ var require_es = __commonJS({
189
+ "src/i18n/es.json"(exports, module) {
190
+ module.exports = {
191
+ title: "Herramientas de Desarrollo HAI3",
192
+ aria: {
193
+ openButton: "Abrir Herramientas de Desarrollo (Shift+`) o arrastrar para mover",
194
+ collapseButton: "Contraer panel de herramientas de desarrollo",
195
+ resizeHandle: "Cambiar tama\xF1o del panel de herramientas"
196
+ },
197
+ controls: {
198
+ heading: "Controles de Desarrollo",
199
+ screenset: "Conjunto de Pantallas:",
200
+ theme: "Tema:",
201
+ language: "Idioma:",
202
+ mockApi: "API Simulada"
203
+ }
204
+ };
205
+ }
206
+ });
207
+
208
+ // src/i18n/fa.json
209
+ var require_fa = __commonJS({
210
+ "src/i18n/fa.json"(exports, module) {
211
+ module.exports = {
212
+ title: "\u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06CC \u062A\u0648\u0633\u0639\u0647 HAI3",
213
+ aria: {
214
+ openButton: "\u0628\u0627\u0632 \u06A9\u0631\u062F\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06CC \u062A\u0648\u0633\u0639\u0647 (Shift+`) \u06CC\u0627 \u06A9\u0634\u06CC\u062F\u0646 \u0628\u0631\u0627\u06CC \u062C\u0627\u0628\u062C\u0627\u06CC\u06CC",
215
+ collapseButton: "\u062C\u0645\u0639 \u06A9\u0631\u062F\u0646 \u067E\u0646\u0644 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06CC \u062A\u0648\u0633\u0639\u0647",
216
+ resizeHandle: "\u062A\u063A\u06CC\u06CC\u0631 \u0627\u0646\u062F\u0627\u0632\u0647 \u067E\u0646\u0644 \u0627\u0628\u0632\u0627\u0631\u0647\u0627"
217
+ },
218
+ controls: {
219
+ heading: "\u06A9\u0646\u062A\u0631\u0644\u200C\u0647\u0627\u06CC \u062A\u0648\u0633\u0639\u0647",
220
+ screenset: "\u0645\u062C\u0645\u0648\u0639\u0647 \u0635\u0641\u062D\u0647\u200C\u0646\u0645\u0627\u06CC\u0634:",
221
+ theme: "\u067E\u0648\u0633\u062A\u0647:",
222
+ language: "\u0632\u0628\u0627\u0646:",
223
+ mockApi: "API \u0633\u0627\u062E\u062A\u06AF\u06CC"
224
+ }
225
+ };
226
+ }
227
+ });
228
+
229
+ // src/i18n/fi.json
230
+ var require_fi = __commonJS({
231
+ "src/i18n/fi.json"(exports, module) {
232
+ module.exports = {
233
+ title: "HAI3 Kehitysty\xF6kalut",
234
+ aria: {
235
+ openButton: "Avaa Kehitysty\xF6kalut (Shift+`) tai ved\xE4 siirt\xE4\xE4ksesi",
236
+ collapseButton: "Tiivist\xE4 kehitysty\xF6kalupaneeli",
237
+ resizeHandle: "Muuta ty\xF6kalupaneelin kokoa"
238
+ },
239
+ controls: {
240
+ heading: "Kehitysohjaimet",
241
+ screenset: "N\xE4ytt\xF6sarja:",
242
+ theme: "Teema:",
243
+ language: "Kieli:",
244
+ mockApi: "Mock-API"
245
+ }
246
+ };
247
+ }
248
+ });
249
+
250
+ // src/i18n/fr.json
251
+ var require_fr = __commonJS({
252
+ "src/i18n/fr.json"(exports, module) {
253
+ module.exports = {
254
+ title: "Outils de D\xE9veloppement HAI3",
255
+ aria: {
256
+ openButton: "Ouvrir les outils de d\xE9veloppement (Shift+`) ou glisser pour d\xE9placer",
257
+ collapseButton: "R\xE9duire le panneau des outils de d\xE9veloppement",
258
+ resizeHandle: "Redimensionner le panneau des outils"
259
+ },
260
+ controls: {
261
+ heading: "Contr\xF4les de D\xE9veloppement",
262
+ screenset: "Ensemble d'\xC9crans:",
263
+ theme: "Th\xE8me:",
264
+ language: "Langue:",
265
+ mockApi: "API Simul\xE9e"
266
+ }
267
+ };
268
+ }
269
+ });
270
+
271
+ // src/i18n/he.json
272
+ var require_he = __commonJS({
273
+ "src/i18n/he.json"(exports, module) {
274
+ module.exports = {
275
+ title: "\u05DB\u05DC\u05D9 \u05E4\u05D9\u05EA\u05D5\u05D7 HAI3",
276
+ aria: {
277
+ openButton: "\u05E4\u05EA\u05D7 \u05DB\u05DC\u05D9 \u05E4\u05D9\u05EA\u05D5\u05D7 (Shift+`) \u05D0\u05D5 \u05D2\u05E8\u05D5\u05E8 \u05DC\u05D4\u05D6\u05D6\u05D4",
278
+ collapseButton: "\u05DB\u05D5\u05D5\u05E5 \u05D7\u05DC\u05D5\u05E0\u05D9\u05EA \u05DB\u05DC\u05D9 \u05E4\u05D9\u05EA\u05D5\u05D7",
279
+ resizeHandle: "\u05E9\u05E0\u05D4 \u05D2\u05D5\u05D3\u05DC \u05D7\u05DC\u05D5\u05E0\u05D9\u05EA \u05DB\u05DC\u05D9\u05DD"
280
+ },
281
+ controls: {
282
+ heading: "\u05D1\u05E7\u05E8\u05D5\u05EA \u05E4\u05D9\u05EA\u05D5\u05D7",
283
+ screenset: "\u05E2\u05E8\u05DB\u05EA \u05DE\u05E1\u05DB\u05D9\u05DD:",
284
+ theme: "\u05E2\u05E8\u05DB\u05EA \u05E0\u05D5\u05E9\u05D0:",
285
+ language: "\u05E9\u05E4\u05D4:",
286
+ mockApi: "API \u05DE\u05D3\u05D5\u05DE\u05D4"
287
+ }
288
+ };
289
+ }
290
+ });
291
+
292
+ // src/i18n/hi.json
293
+ var require_hi = __commonJS({
294
+ "src/i18n/hi.json"(exports, module) {
295
+ module.exports = {
296
+ title: "HAI3 \u0921\u0947\u0935\u0932\u092A\u092E\u0947\u0902\u091F \u091F\u0942\u0932\u094D\u0938",
297
+ aria: {
298
+ openButton: "\u0921\u0947\u0935\u0932\u092A\u092E\u0947\u0902\u091F \u091F\u0942\u0932\u094D\u0938 \u0916\u094B\u0932\u0947\u0902 (Shift+`) \u092F\u093E \u0938\u094D\u0925\u093E\u0928\u093E\u0902\u0924\u0930\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0916\u0940\u0902\u091A\u0947\u0902",
299
+ collapseButton: "\u0921\u0947\u0935\u0932\u092A\u092E\u0947\u0902\u091F \u091F\u0942\u0932\u094D\u0938 \u092A\u0948\u0928\u0932 \u0915\u094B \u0938\u0902\u0915\u094D\u0937\u093F\u092A\u094D\u0924 \u0915\u0930\u0947\u0902",
300
+ resizeHandle: "\u091F\u0942\u0932\u094D\u0938 \u092A\u0948\u0928\u0932 \u0915\u093E \u0906\u0915\u093E\u0930 \u092C\u0926\u0932\u0947\u0902"
301
+ },
302
+ controls: {
303
+ heading: "\u0935\u093F\u0915\u093E\u0938 \u0928\u093F\u092F\u0902\u0924\u094D\u0930\u0923",
304
+ screenset: "\u0938\u094D\u0915\u094D\u0930\u0940\u0928\u0938\u0947\u091F:",
305
+ theme: "\u0925\u0940\u092E:",
306
+ language: "\u092D\u093E\u0937\u093E:",
307
+ mockApi: "\u092E\u0949\u0915 API"
308
+ }
309
+ };
310
+ }
311
+ });
312
+
313
+ // src/i18n/hu.json
314
+ var require_hu = __commonJS({
315
+ "src/i18n/hu.json"(exports, module) {
316
+ module.exports = {
317
+ title: "HAI3 Fejleszt\u0151i Eszk\xF6z\xF6k",
318
+ aria: {
319
+ openButton: "Fejleszt\u0151i Eszk\xF6z\xF6k megnyit\xE1sa (Shift+`) vagy h\xFAzza az \xE1thelyez\xE9shez",
320
+ collapseButton: "Fejleszt\u0151i eszk\xF6z\xF6k panel \xF6sszecsuk\xE1sa",
321
+ resizeHandle: "Eszk\xF6zpanel \xE1tm\xE9retez\xE9se"
322
+ },
323
+ controls: {
324
+ heading: "Fejleszt\xE9si Vez\xE9rl\u0151k",
325
+ screenset: "K\xE9perny\u0151k\xE9szlet:",
326
+ theme: "T\xE9ma:",
327
+ language: "Nyelv:",
328
+ mockApi: "Mock API"
329
+ }
330
+ };
331
+ }
332
+ });
333
+
334
+ // src/i18n/id.json
335
+ var require_id = __commonJS({
336
+ "src/i18n/id.json"(exports, module) {
337
+ module.exports = {
338
+ title: "Alat Pengembangan HAI3",
339
+ aria: {
340
+ openButton: "Buka Alat Pengembangan (Shift+`) atau seret untuk memindahkan",
341
+ collapseButton: "Ciutkan panel alat pengembangan",
342
+ resizeHandle: "Ubah ukuran panel alat"
343
+ },
344
+ controls: {
345
+ heading: "Kontrol Pengembangan",
346
+ screenset: "Set Layar:",
347
+ theme: "Tema:",
348
+ language: "Bahasa:",
349
+ mockApi: "API Tiruan"
350
+ }
351
+ };
352
+ }
353
+ });
354
+
355
+ // src/i18n/it.json
356
+ var require_it = __commonJS({
357
+ "src/i18n/it.json"(exports, module) {
358
+ module.exports = {
359
+ title: "Strumenti di Sviluppo HAI3",
360
+ aria: {
361
+ openButton: "Apri Strumenti di Sviluppo (Shift+`) o trascina per spostare",
362
+ collapseButton: "Comprimi pannello strumenti di sviluppo",
363
+ resizeHandle: "Ridimensiona pannello strumenti"
364
+ },
365
+ controls: {
366
+ heading: "Controlli di Sviluppo",
367
+ screenset: "Set di Schermate:",
368
+ theme: "Tema:",
369
+ language: "Lingua:",
370
+ mockApi: "API Simulata"
371
+ }
372
+ };
373
+ }
374
+ });
375
+
376
+ // src/i18n/ja.json
377
+ var require_ja = __commonJS({
378
+ "src/i18n/ja.json"(exports, module) {
379
+ module.exports = {
380
+ title: "HAI3 \u958B\u767A\u30C4\u30FC\u30EB",
381
+ aria: {
382
+ openButton: "\u958B\u767A\u30C4\u30FC\u30EB\u3092\u958B\u304F (Shift+`) \u307E\u305F\u306F\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u79FB\u52D5",
383
+ collapseButton: "\u958B\u767A\u30C4\u30FC\u30EB\u30D1\u30CD\u30EB\u3092\u6298\u308A\u305F\u305F\u3080",
384
+ resizeHandle: "\u30C4\u30FC\u30EB\u30D1\u30CD\u30EB\u306E\u30B5\u30A4\u30BA\u3092\u5909\u66F4"
385
+ },
386
+ controls: {
387
+ heading: "\u958B\u767A\u30B3\u30F3\u30C8\u30ED\u30FC\u30EB",
388
+ screenset: "\u30B9\u30AF\u30EA\u30FC\u30F3\u30BB\u30C3\u30C8:",
389
+ theme: "\u30C6\u30FC\u30DE:",
390
+ language: "\u8A00\u8A9E:",
391
+ mockApi: "\u30E2\u30C3\u30AF API"
392
+ }
393
+ };
394
+ }
395
+ });
396
+
397
+ // src/i18n/ko.json
398
+ var require_ko = __commonJS({
399
+ "src/i18n/ko.json"(exports, module) {
400
+ module.exports = {
401
+ title: "HAI3 \uAC1C\uBC1C \uB3C4\uAD6C",
402
+ aria: {
403
+ openButton: "\uAC1C\uBC1C \uB3C4\uAD6C \uC5F4\uAE30 (Shift+`) \uB610\uB294 \uB4DC\uB798\uADF8\uD558\uC5EC \uC774\uB3D9",
404
+ collapseButton: "\uAC1C\uBC1C \uB3C4\uAD6C \uD328\uB110 \uC811\uAE30",
405
+ resizeHandle: "\uB3C4\uAD6C \uD328\uB110 \uD06C\uAE30 \uC870\uC815"
406
+ },
407
+ controls: {
408
+ heading: "\uAC1C\uBC1C \uC81C\uC5B4",
409
+ screenset: "\uD654\uBA74 \uC138\uD2B8:",
410
+ theme: "\uD14C\uB9C8:",
411
+ language: "\uC5B8\uC5B4:",
412
+ mockApi: "\uBAA8\uC758 API"
413
+ }
414
+ };
415
+ }
416
+ });
417
+
418
+ // src/i18n/ms.json
419
+ var require_ms = __commonJS({
420
+ "src/i18n/ms.json"(exports, module) {
421
+ module.exports = {
422
+ title: "Alat Pembangun HAI3",
423
+ aria: {
424
+ openButton: "Buka Alat Pembangun (Shift+`) atau seret untuk alih",
425
+ collapseButton: "Runtuhkan panel alat pembangun",
426
+ resizeHandle: "Ubah saiz panel alat"
427
+ },
428
+ controls: {
429
+ heading: "Kawalan Pembangunan",
430
+ screenset: "Set Skrin:",
431
+ theme: "Tema:",
432
+ language: "Bahasa:",
433
+ mockApi: "API Palsu"
434
+ }
435
+ };
436
+ }
437
+ });
438
+
439
+ // src/i18n/nl.json
440
+ var require_nl = __commonJS({
441
+ "src/i18n/nl.json"(exports, module) {
442
+ module.exports = {
443
+ title: "HAI3 Ontwikkeltools",
444
+ aria: {
445
+ openButton: "Open Ontwikkeltools (Shift+`) of sleep om te verplaatsen",
446
+ collapseButton: "Ontwikkeltools paneel inklappen",
447
+ resizeHandle: "Formaat van tools paneel wijzigen"
448
+ },
449
+ controls: {
450
+ heading: "Ontwikkelingsbesturing",
451
+ screenset: "Schermset:",
452
+ theme: "Thema:",
453
+ language: "Taal:",
454
+ mockApi: "Nep-API"
455
+ }
456
+ };
457
+ }
458
+ });
459
+
460
+ // src/i18n/no.json
461
+ var require_no = __commonJS({
462
+ "src/i18n/no.json"(exports, module) {
463
+ module.exports = {
464
+ title: "HAI3 Utviklingsverkt\xF8y",
465
+ aria: {
466
+ openButton: "\xC5pne Utviklingsverkt\xF8y (Shift+`) eller dra for \xE5 flytte",
467
+ collapseButton: "Skjul utviklingsverkt\xF8ypanelet",
468
+ resizeHandle: "Endre st\xF8rrelse p\xE5 verkt\xF8ypanelet"
469
+ },
470
+ controls: {
471
+ heading: "Utviklingskontroller",
472
+ screenset: "Skjermsett:",
473
+ theme: "Tema:",
474
+ language: "Spr\xE5k:",
475
+ mockApi: "Mock-API"
476
+ }
477
+ };
478
+ }
479
+ });
480
+
481
+ // src/i18n/pl.json
482
+ var require_pl = __commonJS({
483
+ "src/i18n/pl.json"(exports, module) {
484
+ module.exports = {
485
+ title: "Narz\u0119dzia programistyczne HAI3",
486
+ aria: {
487
+ openButton: "Otw\xF3rz narz\u0119dzia programistyczne (Shift+`) lub przeci\u0105gnij, aby przenie\u015B\u0107",
488
+ collapseButton: "Zwi\u0144 panel narz\u0119dzi programistycznych",
489
+ resizeHandle: "Zmie\u0144 rozmiar panelu narz\u0119dzi"
490
+ },
491
+ controls: {
492
+ heading: "Kontrolki programistyczne",
493
+ screenset: "Zestaw ekran\xF3w:",
494
+ theme: "Motyw:",
495
+ language: "J\u0119zyk:",
496
+ mockApi: "Fikcyjne API"
497
+ }
498
+ };
499
+ }
500
+ });
501
+
502
+ // src/i18n/pt.json
503
+ var require_pt = __commonJS({
504
+ "src/i18n/pt.json"(exports, module) {
505
+ module.exports = {
506
+ title: "Ferramentas de Desenvolvimento HAI3",
507
+ aria: {
508
+ openButton: "Abrir Ferramentas de Desenvolvimento (Shift+`) ou arrastar para mover",
509
+ collapseButton: "Recolher painel de ferramentas de desenvolvimento",
510
+ resizeHandle: "Redimensionar painel de ferramentas"
511
+ },
512
+ controls: {
513
+ heading: "Controles de Desenvolvimento",
514
+ screenset: "Conjunto de Telas:",
515
+ theme: "Tema:",
516
+ language: "Idioma:",
517
+ mockApi: "API Simulada"
518
+ }
519
+ };
520
+ }
521
+ });
522
+
523
+ // src/i18n/ro.json
524
+ var require_ro = __commonJS({
525
+ "src/i18n/ro.json"(exports, module) {
526
+ module.exports = {
527
+ title: "Instrumente de Dezvoltare HAI3",
528
+ aria: {
529
+ openButton: "Deschide Instrumente de Dezvoltare (Shift+`) sau trage pentru a muta",
530
+ collapseButton: "Restr\xE2nge panoul instrumentelor de dezvoltare",
531
+ resizeHandle: "Redimensioneaz\u0103 panoul instrumentelor"
532
+ },
533
+ controls: {
534
+ heading: "Controale de Dezvoltare",
535
+ screenset: "Set de Ecrane:",
536
+ theme: "Tem\u0103:",
537
+ language: "Limb\u0103:",
538
+ mockApi: "API Simulat"
539
+ }
540
+ };
541
+ }
542
+ });
543
+
544
+ // src/i18n/ru.json
545
+ var require_ru = __commonJS({
546
+ "src/i18n/ru.json"(exports, module) {
547
+ module.exports = {
548
+ title: "\u0418\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438 HAI3",
549
+ aria: {
550
+ openButton: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438 (Shift+`) \u0438\u043B\u0438 \u043F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044C \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F",
551
+ collapseButton: "\u0421\u0432\u0435\u0440\u043D\u0443\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0438",
552
+ resizeHandle: "\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0440\u0430\u0437\u043C\u0435\u0440 \u043F\u0430\u043D\u0435\u043B\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432"
553
+ },
554
+ controls: {
555
+ heading: "\u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0440\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u043E\u0439",
556
+ screenset: "\u041D\u0430\u0431\u043E\u0440 \u044D\u043A\u0440\u0430\u043D\u043E\u0432:",
557
+ theme: "\u0422\u0435\u043C\u0430:",
558
+ language: "\u042F\u0437\u044B\u043A:",
559
+ mockApi: "\u0424\u0438\u043A\u0442\u0438\u0432\u043D\u044B\u0439 API"
560
+ }
561
+ };
562
+ }
563
+ });
564
+
565
+ // src/i18n/sv.json
566
+ var require_sv = __commonJS({
567
+ "src/i18n/sv.json"(exports, module) {
568
+ module.exports = {
569
+ title: "HAI3 Utvecklingsverktyg",
570
+ aria: {
571
+ openButton: "\xD6ppna Utvecklingsverktyg (Shift+`) eller dra f\xF6r att flytta",
572
+ collapseButton: "F\xE4ll ihop utvecklingsverktygspanelen",
573
+ resizeHandle: "\xC4ndra storlek p\xE5 verktygspanelen"
574
+ },
575
+ controls: {
576
+ heading: "Utvecklingskontroller",
577
+ screenset: "Sk\xE4rmupps\xE4ttning:",
578
+ theme: "Tema:",
579
+ language: "Spr\xE5k:",
580
+ mockApi: "Mock-API"
581
+ }
582
+ };
583
+ }
584
+ });
585
+
586
+ // src/i18n/sw.json
587
+ var require_sw = __commonJS({
588
+ "src/i18n/sw.json"(exports, module) {
589
+ module.exports = {
590
+ title: "Zana za Utengenezaji wa HAI3",
591
+ aria: {
592
+ openButton: "Fungua Zana za Utengenezaji (Shift+`) au buruta ili kuhamisha",
593
+ collapseButton: "Kunja paneli ya zana za utengenezaji",
594
+ resizeHandle: "Badilisha ukubwa wa paneli ya zana"
595
+ },
596
+ controls: {
597
+ heading: "Vidhibiti vya Maendeleo",
598
+ screenset: "Seti ya Skrini:",
599
+ theme: "Mandhari:",
600
+ language: "Lugha:",
601
+ mockApi: "API ya Majaribio"
602
+ }
603
+ };
604
+ }
605
+ });
606
+
607
+ // src/i18n/ta.json
608
+ var require_ta = __commonJS({
609
+ "src/i18n/ta.json"(exports, module) {
610
+ module.exports = {
611
+ title: "HAI3 \u0BAE\u0BC7\u0BAE\u0BCD\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1 \u0B95\u0BB0\u0BC1\u0BB5\u0BBF\u0B95\u0BB3\u0BCD",
612
+ aria: {
613
+ openButton: "\u0BAE\u0BC7\u0BAE\u0BCD\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1 \u0B95\u0BB0\u0BC1\u0BB5\u0BBF\u0B95\u0BB3\u0BC8\u0BA4\u0BCD \u0BA4\u0BBF\u0BB1 (Shift+`) \u0B85\u0BB2\u0BCD\u0BB2\u0BA4\u0BC1 \u0BA8\u0B95\u0BB0\u0BCD\u0BA4\u0BCD\u0BA4 \u0B87\u0BB4\u0BC1\u0B95\u0BCD\u0B95\u0BB5\u0BC1\u0BAE\u0BCD",
614
+ collapseButton: "\u0BAE\u0BC7\u0BAE\u0BCD\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1 \u0B95\u0BB0\u0BC1\u0BB5\u0BBF\u0B95\u0BB3\u0BCD \u0BAA\u0BB2\u0B95\u0BA4\u0BCD\u0BA4\u0BC8 \u0BAE\u0B9F\u0BBF\u0B95\u0BCD\u0B95\u0BB5\u0BC1\u0BAE\u0BCD",
615
+ resizeHandle: "\u0B95\u0BB0\u0BC1\u0BB5\u0BBF\u0B95\u0BB3\u0BCD \u0BAA\u0BB2\u0B95\u0BA4\u0BCD\u0BA4\u0BBF\u0BA9\u0BCD \u0B85\u0BB3\u0BB5\u0BC8 \u0BAE\u0BBE\u0BB1\u0BCD\u0BB1\u0BB5\u0BC1\u0BAE\u0BCD"
616
+ },
617
+ controls: {
618
+ heading: "\u0BAE\u0BC7\u0BAE\u0BCD\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1 \u0B95\u0B9F\u0BCD\u0B9F\u0BC1\u0BAA\u0BCD\u0BAA\u0BBE\u0B9F\u0BC1\u0B95\u0BB3\u0BCD",
619
+ screenset: "\u0BA4\u0BBF\u0BB0\u0BC8\u0BA4\u0BCD \u0BA4\u0BCA\u0B95\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1:",
620
+ theme: "\u0BA4\u0BC0\u0BAE\u0BCD:",
621
+ language: "\u0BAE\u0BCA\u0BB4\u0BBF:",
622
+ mockApi: "\u0BAA\u0BCB\u0BB2\u0BBF API"
623
+ }
624
+ };
625
+ }
626
+ });
627
+
628
+ // src/i18n/th.json
629
+ var require_th = __commonJS({
630
+ "src/i18n/th.json"(exports, module) {
631
+ module.exports = {
632
+ title: "\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E21\u0E37\u0E2D\u0E1E\u0E31\u0E12\u0E19\u0E32 HAI3",
633
+ aria: {
634
+ openButton: "\u0E40\u0E1B\u0E34\u0E14\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E21\u0E37\u0E2D\u0E1E\u0E31\u0E12\u0E19\u0E32 (Shift+`) \u0E2B\u0E23\u0E37\u0E2D\u0E25\u0E32\u0E01\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E22\u0E49\u0E32\u0E22",
635
+ collapseButton: "\u0E22\u0E38\u0E1A\u0E41\u0E1C\u0E07\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E21\u0E37\u0E2D\u0E1E\u0E31\u0E12\u0E19\u0E32",
636
+ resizeHandle: "\u0E1B\u0E23\u0E31\u0E1A\u0E02\u0E19\u0E32\u0E14\u0E41\u0E1C\u0E07\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E21\u0E37\u0E2D"
637
+ },
638
+ controls: {
639
+ heading: "\u0E04\u0E27\u0E1A\u0E04\u0E38\u0E21\u0E01\u0E32\u0E23\u0E1E\u0E31\u0E12\u0E19\u0E32",
640
+ screenset: "\u0E0A\u0E38\u0E14\u0E2B\u0E19\u0E49\u0E32\u0E08\u0E2D:",
641
+ theme: "\u0E18\u0E35\u0E21:",
642
+ language: "\u0E20\u0E32\u0E29\u0E32:",
643
+ mockApi: "API \u0E08\u0E33\u0E25\u0E2D\u0E07"
644
+ }
645
+ };
646
+ }
647
+ });
648
+
649
+ // src/i18n/tl.json
650
+ var require_tl = __commonJS({
651
+ "src/i18n/tl.json"(exports, module) {
652
+ module.exports = {
653
+ title: "Mga Kasangkapan sa Pag-develop ng HAI3",
654
+ aria: {
655
+ openButton: "Buksan ang Mga Kasangkapan sa Pag-develop (Shift+`) o i-drag upang ilipat",
656
+ collapseButton: "I-collapse ang panel ng mga kasangkapan sa pag-develop",
657
+ resizeHandle: "Baguhin ang laki ng panel ng mga kasangkapan"
658
+ },
659
+ controls: {
660
+ heading: "Mga Kontrol sa Pag-unlad",
661
+ screenset: "Hanay ng Screen:",
662
+ theme: "Tema:",
663
+ language: "Wika:",
664
+ mockApi: "Mock API"
665
+ }
666
+ };
667
+ }
668
+ });
669
+
670
+ // src/i18n/tr.json
671
+ var require_tr = __commonJS({
672
+ "src/i18n/tr.json"(exports, module) {
673
+ module.exports = {
674
+ title: "HAI3 Geli\u015Ftirici Ara\xE7lar\u0131",
675
+ aria: {
676
+ openButton: "Geli\u015Ftirici Ara\xE7lar\u0131n\u0131 A\xE7 (Shift+`) veya ta\u015F\u0131mak i\xE7in s\xFCr\xFCkle",
677
+ collapseButton: "Geli\u015Ftirici ara\xE7lar\u0131 panelini daralt",
678
+ resizeHandle: "Ara\xE7 panelini yeniden boyutland\u0131r"
679
+ },
680
+ controls: {
681
+ heading: "Geli\u015Ftirme Kontrolleri",
682
+ screenset: "Ekran Seti:",
683
+ theme: "Tema:",
684
+ language: "Dil:",
685
+ mockApi: "Sahte API"
686
+ }
687
+ };
688
+ }
689
+ });
690
+
691
+ // src/i18n/uk.json
692
+ var require_uk = __commonJS({
693
+ "src/i18n/uk.json"(exports, module) {
694
+ module.exports = {
695
+ title: "\u0406\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0438 \u0440\u043E\u0437\u0440\u043E\u0431\u043A\u0438 HAI3",
696
+ aria: {
697
+ openButton: "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 \u0456\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0438 \u0440\u043E\u0437\u0440\u043E\u0431\u043A\u0438 (Shift+`) \u0430\u0431\u043E \u043F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0443\u0442\u0438 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043C\u0456\u0449\u0435\u043D\u043D\u044F",
698
+ collapseButton: "\u0417\u0433\u043E\u0440\u043D\u0443\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C \u0456\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0456\u0432 \u0440\u043E\u0437\u0440\u043E\u0431\u043A\u0438",
699
+ resizeHandle: "\u0417\u043C\u0456\u043D\u0438\u0442\u0438 \u0440\u043E\u0437\u043C\u0456\u0440 \u043F\u0430\u043D\u0435\u043B\u0456 \u0456\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u0456\u0432"
700
+ },
701
+ controls: {
702
+ heading: "\u0415\u043B\u0435\u043C\u0435\u043D\u0442\u0438 \u043A\u0435\u0440\u0443\u0432\u0430\u043D\u043D\u044F \u0440\u043E\u0437\u0440\u043E\u0431\u043A\u043E\u044E",
703
+ screenset: "\u041D\u0430\u0431\u0456\u0440 \u0435\u043A\u0440\u0430\u043D\u0456\u0432:",
704
+ theme: "\u0422\u0435\u043C\u0430:",
705
+ language: "\u041C\u043E\u0432\u0430:",
706
+ mockApi: "\u0424\u0456\u043A\u0442\u0438\u0432\u043D\u0438\u0439 API"
707
+ }
708
+ };
709
+ }
710
+ });
711
+
712
+ // src/i18n/ur.json
713
+ var require_ur = __commonJS({
714
+ "src/i18n/ur.json"(exports, module) {
715
+ module.exports = {
716
+ title: "HAI3 \u0688\u0648\u06CC\u0644\u067E\u0645\u0646\u0679 \u0679\u0648\u0644\u0632",
717
+ aria: {
718
+ openButton: "\u0688\u0648\u06CC\u0644\u067E\u0645\u0646\u0679 \u0679\u0648\u0644\u0632 \u06A9\u06BE\u0648\u0644\u06CC\u06BA (Shift+`) \u06CC\u0627 \u0645\u0646\u062A\u0642\u0644 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u06AF\u06BE\u0633\u06CC\u0679\u06CC\u06BA",
719
+ collapseButton: "\u0688\u0648\u06CC\u0644\u067E\u0645\u0646\u0679 \u0679\u0648\u0644\u0632 \u067E\u06CC\u0646\u0644 \u06A9\u0648 \u0633\u06A9\u06CC\u0691\u06CC\u06BA",
720
+ resizeHandle: "\u0679\u0648\u0644\u0632 \u067E\u06CC\u0646\u0644 \u06A9\u0627 \u0633\u0627\u0626\u0632 \u062A\u0628\u062F\u06CC\u0644 \u06A9\u0631\u06CC\u06BA"
721
+ },
722
+ controls: {
723
+ heading: "\u0688\u0648\u06CC\u0644\u067E\u0645\u0646\u0679 \u06A9\u0646\u0679\u0631\u0648\u0644\u0632",
724
+ screenset: "\u0627\u0633\u06A9\u0631\u06CC\u0646 \u0633\u06CC\u0679:",
725
+ theme: "\u062A\u06BE\u06CC\u0645:",
726
+ language: "\u0632\u0628\u0627\u0646:",
727
+ mockApi: "\u0641\u0631\u0636\u06CC API"
728
+ }
729
+ };
730
+ }
731
+ });
732
+
733
+ // src/i18n/vi.json
734
+ var require_vi = __commonJS({
735
+ "src/i18n/vi.json"(exports, module) {
736
+ module.exports = {
737
+ title: "C\xF4ng c\u1EE5 Ph\xE1t tri\u1EC3n HAI3",
738
+ aria: {
739
+ openButton: "M\u1EDF C\xF4ng c\u1EE5 Ph\xE1t tri\u1EC3n (Shift+`) ho\u1EB7c k\xE9o \u0111\u1EC3 di chuy\u1EC3n",
740
+ collapseButton: "Thu g\u1ECDn b\u1EA3ng c\xF4ng c\u1EE5 ph\xE1t tri\u1EC3n",
741
+ resizeHandle: "Thay \u0111\u1ED5i k\xEDch th\u01B0\u1EDBc b\u1EA3ng c\xF4ng c\u1EE5"
742
+ },
743
+ controls: {
744
+ heading: "\u0110i\u1EC1u khi\u1EC3n Ph\xE1t tri\u1EC3n",
745
+ screenset: "B\u1ED9 M\xE0n h\xECnh:",
746
+ theme: "Ch\u1EE7 \u0111\u1EC1:",
747
+ language: "Ng\xF4n ng\u1EEF:",
748
+ mockApi: "API Gi\u1EA3 l\u1EADp"
749
+ }
750
+ };
751
+ }
752
+ });
753
+
754
+ // src/i18n/zh-TW.json
755
+ var require_zh_TW = __commonJS({
756
+ "src/i18n/zh-TW.json"(exports, module) {
757
+ module.exports = {
758
+ title: "HAI3 \u958B\u767C\u5DE5\u5177",
759
+ aria: {
760
+ openButton: "\u958B\u555F\u958B\u767C\u5DE5\u5177 (Shift+`) \u6216\u62D6\u66F3\u79FB\u52D5",
761
+ collapseButton: "\u6536\u5408\u958B\u767C\u5DE5\u5177\u9762\u677F",
762
+ resizeHandle: "\u8ABF\u6574\u5DE5\u5177\u9762\u677F\u5927\u5C0F"
763
+ },
764
+ controls: {
765
+ heading: "\u958B\u767C\u63A7\u5236\u9805",
766
+ screenset: "\u87A2\u5E55\u96C6:",
767
+ theme: "\u4E3B\u984C:",
768
+ language: "\u8A9E\u8A00:",
769
+ mockApi: "\u6A21\u64EC API"
770
+ }
771
+ };
772
+ }
773
+ });
774
+
775
+ // src/i18n/zh.json
776
+ var require_zh = __commonJS({
777
+ "src/i18n/zh.json"(exports, module) {
778
+ module.exports = {
779
+ title: "HAI3 \u5F00\u53D1\u5DE5\u5177",
780
+ aria: {
781
+ openButton: "\u6253\u5F00\u5F00\u53D1\u5DE5\u5177 (Shift+`) \u6216\u62D6\u52A8\u79FB\u52A8",
782
+ collapseButton: "\u6298\u53E0\u5F00\u53D1\u5DE5\u5177\u9762\u677F",
783
+ resizeHandle: "\u8C03\u6574\u5DE5\u5177\u9762\u677F\u5927\u5C0F"
784
+ },
785
+ controls: {
786
+ heading: "\u5F00\u53D1\u63A7\u5236",
787
+ screenset: "\u5C4F\u5E55\u96C6:",
788
+ theme: "\u4E3B\u9898:",
789
+ language: "\u8BED\u8A00:",
790
+ mockApi: "\u6A21\u62DF API"
791
+ }
792
+ };
793
+ }
794
+ });
795
+
796
+ // src/utils/persistence.ts
797
+ var saveStudioState = (key, value) => {
798
+ try {
799
+ localStorage.setItem(key, JSON.stringify(value));
800
+ } catch (e) {
801
+ console.warn(`[Studio] Failed to save state for ${key}:`, e);
802
+ }
803
+ };
804
+ var loadStudioState = (key, defaultValue) => {
805
+ try {
806
+ const item = localStorage.getItem(key);
807
+ return item ? JSON.parse(item) : defaultValue;
808
+ } catch (e) {
809
+ console.warn(`[Studio] Failed to load state for ${key}:`, e);
810
+ return defaultValue;
811
+ }
812
+ };
813
+
814
+ // src/types.ts
815
+ var PANEL_CONSTRAINTS = {
816
+ MIN_WIDTH: 320,
817
+ MIN_HEIGHT: 400,
818
+ MAX_WIDTH: 600,
819
+ MAX_HEIGHT: 800,
820
+ DEFAULT_WIDTH: 400,
821
+ DEFAULT_HEIGHT: 500
822
+ };
823
+ var BUTTON_SIZE = {
824
+ width: 48,
825
+ height: 48
826
+ };
827
+ var STORAGE_PREFIX = "hai3:studio:";
828
+ var STORAGE_KEYS = {
829
+ POSITION: `${STORAGE_PREFIX}position`,
830
+ SIZE: `${STORAGE_PREFIX}size`,
831
+ COLLAPSED: `${STORAGE_PREFIX}collapsed`,
832
+ BUTTON_POSITION: `${STORAGE_PREFIX}buttonPosition`
833
+ };
834
+
835
+ // src/events/studioEvents.ts
836
+ var StudioEvents = {
837
+ PositionChanged: "studio/positionChanged",
838
+ SizeChanged: "studio/sizeChanged",
839
+ ButtonPositionChanged: "studio/buttonPositionChanged"
840
+ };
841
+
842
+ // src/effects/persistenceEffects.ts
843
+ var initPersistenceEffects = () => {
844
+ const positionSubscription = uicore.eventBus.on(
845
+ StudioEvents.PositionChanged,
846
+ ({ position }) => {
847
+ saveStudioState(STORAGE_KEYS.POSITION, position);
848
+ }
849
+ );
850
+ const sizeSubscription = uicore.eventBus.on(
851
+ StudioEvents.SizeChanged,
852
+ ({ size }) => {
853
+ saveStudioState(STORAGE_KEYS.SIZE, size);
854
+ }
855
+ );
856
+ const buttonPositionSubscription = uicore.eventBus.on(
857
+ StudioEvents.ButtonPositionChanged,
858
+ ({ position }) => {
859
+ saveStudioState(STORAGE_KEYS.BUTTON_POSITION, position);
860
+ }
861
+ );
862
+ return () => {
863
+ positionSubscription.unsubscribe();
864
+ sizeSubscription.unsubscribe();
865
+ buttonPositionSubscription.unsubscribe();
866
+ };
867
+ };
868
+ var studioTranslations = uicore.I18nRegistry.createLoader({
869
+ [uicore.Language.English]: () => Promise.resolve().then(() => __toESM(require_en())),
870
+ [uicore.Language.Arabic]: () => Promise.resolve().then(() => __toESM(require_ar())),
871
+ [uicore.Language.Bengali]: () => Promise.resolve().then(() => __toESM(require_bn())),
872
+ [uicore.Language.Czech]: () => Promise.resolve().then(() => __toESM(require_cs())),
873
+ [uicore.Language.Danish]: () => Promise.resolve().then(() => __toESM(require_da())),
874
+ [uicore.Language.German]: () => Promise.resolve().then(() => __toESM(require_de())),
875
+ [uicore.Language.Greek]: () => Promise.resolve().then(() => __toESM(require_el())),
876
+ [uicore.Language.Spanish]: () => Promise.resolve().then(() => __toESM(require_es())),
877
+ [uicore.Language.Persian]: () => Promise.resolve().then(() => __toESM(require_fa())),
878
+ [uicore.Language.Finnish]: () => Promise.resolve().then(() => __toESM(require_fi())),
879
+ [uicore.Language.French]: () => Promise.resolve().then(() => __toESM(require_fr())),
880
+ [uicore.Language.Hebrew]: () => Promise.resolve().then(() => __toESM(require_he())),
881
+ [uicore.Language.Hindi]: () => Promise.resolve().then(() => __toESM(require_hi())),
882
+ [uicore.Language.Hungarian]: () => Promise.resolve().then(() => __toESM(require_hu())),
883
+ [uicore.Language.Indonesian]: () => Promise.resolve().then(() => __toESM(require_id())),
884
+ [uicore.Language.Italian]: () => Promise.resolve().then(() => __toESM(require_it())),
885
+ [uicore.Language.Japanese]: () => Promise.resolve().then(() => __toESM(require_ja())),
886
+ [uicore.Language.Korean]: () => Promise.resolve().then(() => __toESM(require_ko())),
887
+ [uicore.Language.Malay]: () => Promise.resolve().then(() => __toESM(require_ms())),
888
+ [uicore.Language.Dutch]: () => Promise.resolve().then(() => __toESM(require_nl())),
889
+ [uicore.Language.Norwegian]: () => Promise.resolve().then(() => __toESM(require_no())),
890
+ [uicore.Language.Polish]: () => Promise.resolve().then(() => __toESM(require_pl())),
891
+ [uicore.Language.Portuguese]: () => Promise.resolve().then(() => __toESM(require_pt())),
892
+ [uicore.Language.Romanian]: () => Promise.resolve().then(() => __toESM(require_ro())),
893
+ [uicore.Language.Russian]: () => Promise.resolve().then(() => __toESM(require_ru())),
894
+ [uicore.Language.Swedish]: () => Promise.resolve().then(() => __toESM(require_sv())),
895
+ [uicore.Language.Swahili]: () => Promise.resolve().then(() => __toESM(require_sw())),
896
+ [uicore.Language.Tamil]: () => Promise.resolve().then(() => __toESM(require_ta())),
897
+ [uicore.Language.Thai]: () => Promise.resolve().then(() => __toESM(require_th())),
898
+ [uicore.Language.Tagalog]: () => Promise.resolve().then(() => __toESM(require_tl())),
899
+ [uicore.Language.Turkish]: () => Promise.resolve().then(() => __toESM(require_tr())),
900
+ [uicore.Language.Ukrainian]: () => Promise.resolve().then(() => __toESM(require_uk())),
901
+ [uicore.Language.Urdu]: () => Promise.resolve().then(() => __toESM(require_ur())),
902
+ [uicore.Language.Vietnamese]: () => Promise.resolve().then(() => __toESM(require_vi())),
903
+ [uicore.Language.ChineseTraditional]: () => Promise.resolve().then(() => __toESM(require_zh_TW())),
904
+ [uicore.Language.ChineseSimplified]: () => Promise.resolve().then(() => __toESM(require_zh()))
905
+ });
906
+ uicore.i18nRegistry.registerLoader("studio", studioTranslations);
907
+ var StudioContext = React3.createContext(void 0);
908
+ var useStudioContext = () => {
909
+ const context = React3.useContext(StudioContext);
910
+ if (!context) {
911
+ throw new Error("useStudioContext must be used within StudioProvider");
912
+ }
913
+ return context;
914
+ };
915
+ var StudioProvider = ({ children }) => {
916
+ const [collapsed, setCollapsed] = React3.useState(
917
+ () => loadStudioState(STORAGE_KEYS.COLLAPSED, false)
918
+ );
919
+ const [portalContainer, setPortalContainer] = React3.useState(null);
920
+ React3.useEffect(() => {
921
+ const cleanup = initPersistenceEffects();
922
+ return cleanup;
923
+ }, []);
924
+ const toggleCollapsed = React3.useCallback(() => {
925
+ setCollapsed((prev) => {
926
+ const newValue = !prev;
927
+ saveStudioState(STORAGE_KEYS.COLLAPSED, newValue);
928
+ return newValue;
929
+ });
930
+ }, []);
931
+ return /* @__PURE__ */ jsxRuntime.jsx(
932
+ StudioContext.Provider,
933
+ {
934
+ value: {
935
+ collapsed,
936
+ toggleCollapsed,
937
+ portalContainer,
938
+ setPortalContainer
939
+ },
940
+ children
941
+ }
942
+ );
943
+ };
944
+ StudioProvider.displayName = "StudioProvider";
945
+ var useDraggable = ({ panelSize, storageKey = STORAGE_KEYS.POSITION }) => {
946
+ const getDefaultPosition = () => ({
947
+ x: window.innerWidth - panelSize.width - 20,
948
+ y: window.innerHeight - panelSize.height - 20
949
+ });
950
+ const [position, setPosition] = React3.useState(
951
+ () => loadStudioState(storageKey, getDefaultPosition())
952
+ );
953
+ const [isDragging, setIsDragging] = React3.useState(false);
954
+ const dragStartPos = React3.useRef({ x: 0, y: 0 });
955
+ const handleMouseDown = React3.useCallback((e) => {
956
+ setIsDragging(true);
957
+ dragStartPos.current = {
958
+ x: e.clientX - position.x,
959
+ y: e.clientY - position.y
960
+ };
961
+ }, [position]);
962
+ React3.useEffect(() => {
963
+ if (!isDragging) return;
964
+ const handleMouseMove = (e) => {
965
+ const newX = lodash.clamp(
966
+ e.clientX - dragStartPos.current.x,
967
+ 0,
968
+ window.innerWidth - panelSize.width
969
+ );
970
+ const newY = lodash.clamp(
971
+ e.clientY - dragStartPos.current.y,
972
+ 0,
973
+ window.innerHeight - panelSize.height
974
+ );
975
+ const newPosition = { x: newX, y: newY };
976
+ setPosition(newPosition);
977
+ const eventName = storageKey === STORAGE_KEYS.BUTTON_POSITION ? StudioEvents.ButtonPositionChanged : StudioEvents.PositionChanged;
978
+ uicore.eventBus.emit(eventName, { position: newPosition });
979
+ };
980
+ const handleMouseUp = () => {
981
+ setIsDragging(false);
982
+ };
983
+ window.addEventListener("mousemove", handleMouseMove);
984
+ window.addEventListener("mouseup", handleMouseUp);
985
+ return () => {
986
+ window.removeEventListener("mousemove", handleMouseMove);
987
+ window.removeEventListener("mouseup", handleMouseUp);
988
+ };
989
+ }, [isDragging, panelSize.width, panelSize.height, storageKey]);
990
+ return {
991
+ position,
992
+ isDragging,
993
+ handleMouseDown
994
+ };
995
+ };
996
+ var useResizable = () => {
997
+ const [size, setSize] = React3.useState(
998
+ () => loadStudioState(STORAGE_KEYS.SIZE, {
999
+ width: PANEL_CONSTRAINTS.DEFAULT_WIDTH,
1000
+ height: PANEL_CONSTRAINTS.DEFAULT_HEIGHT
1001
+ })
1002
+ );
1003
+ const [isResizing, setIsResizing] = React3.useState(false);
1004
+ const resizeStartRef = React3.useRef(null);
1005
+ const handleMouseDown = React3.useCallback((e) => {
1006
+ e.stopPropagation();
1007
+ resizeStartRef.current = {
1008
+ mouseX: e.clientX,
1009
+ mouseY: e.clientY,
1010
+ width: size.width,
1011
+ height: size.height
1012
+ };
1013
+ setIsResizing(true);
1014
+ }, [size.width, size.height]);
1015
+ React3.useEffect(() => {
1016
+ if (!isResizing || !resizeStartRef.current) return;
1017
+ const startState = resizeStartRef.current;
1018
+ document.body.style.userSelect = "none";
1019
+ document.body.style.cursor = "nwse-resize";
1020
+ const handleMouseMove = (e) => {
1021
+ const deltaX = e.clientX - startState.mouseX;
1022
+ const deltaY = e.clientY - startState.mouseY;
1023
+ const newWidth = lodash.clamp(
1024
+ startState.width + deltaX,
1025
+ PANEL_CONSTRAINTS.MIN_WIDTH,
1026
+ PANEL_CONSTRAINTS.MAX_WIDTH
1027
+ );
1028
+ const newHeight = lodash.clamp(
1029
+ startState.height + deltaY,
1030
+ PANEL_CONSTRAINTS.MIN_HEIGHT,
1031
+ PANEL_CONSTRAINTS.MAX_HEIGHT
1032
+ );
1033
+ const newSize = { width: newWidth, height: newHeight };
1034
+ setSize(newSize);
1035
+ uicore.eventBus.emit(StudioEvents.SizeChanged, { size: newSize });
1036
+ };
1037
+ const handleMouseUp = () => {
1038
+ setIsResizing(false);
1039
+ resizeStartRef.current = null;
1040
+ document.body.style.userSelect = "";
1041
+ document.body.style.cursor = "";
1042
+ };
1043
+ window.addEventListener("mousemove", handleMouseMove);
1044
+ window.addEventListener("mouseup", handleMouseUp);
1045
+ return () => {
1046
+ window.removeEventListener("mousemove", handleMouseMove);
1047
+ window.removeEventListener("mouseup", handleMouseUp);
1048
+ document.body.style.userSelect = "";
1049
+ document.body.style.cursor = "";
1050
+ };
1051
+ }, [isResizing]);
1052
+ return {
1053
+ size,
1054
+ isResizing,
1055
+ handleMouseDown
1056
+ };
1057
+ };
1058
+ var ThemeSelector = ({
1059
+ className = ""
1060
+ }) => {
1061
+ const dispatch = uicore.useAppDispatch();
1062
+ const currentTheme = uicore.useAppSelector((state) => state.uicore.layout.theme);
1063
+ const { portalContainer } = useStudioContext();
1064
+ const { t } = uicore.useTranslation();
1065
+ const formatThemeName = (themeName) => {
1066
+ return themeName.split("-").map((word) => lodash.upperFirst(word)).join(" ");
1067
+ };
1068
+ const availableThemes = uicore.themeRegistry.getThemeNames();
1069
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center justify-between ${className}`, children: [
1070
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground whitespace-nowrap", children: t("studio:controls.theme") }),
1071
+ /* @__PURE__ */ jsxRuntime.jsxs(uikit.DropdownMenu, { children: [
1072
+ /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownButton, { variant: uikitContracts.ButtonVariant.Outline, children: formatThemeName(currentTheme) }) }),
1073
+ /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownMenuContent, { align: "end", container: portalContainer, className: "z-[99999] pointer-events-auto", children: availableThemes.map((themeName) => /* @__PURE__ */ jsxRuntime.jsx(
1074
+ uikit.DropdownMenuItem,
1075
+ {
1076
+ onClick: () => dispatch(uicore.changeTheme(themeName)),
1077
+ children: formatThemeName(themeName)
1078
+ },
1079
+ themeName
1080
+ )) })
1081
+ ] })
1082
+ ] });
1083
+ };
1084
+ ThemeSelector.displayName = "ThemeSelector";
1085
+ var ScreensetSelector = ({
1086
+ options,
1087
+ currentValue,
1088
+ onChange,
1089
+ className = ""
1090
+ }) => {
1091
+ const { portalContainer } = useStudioContext();
1092
+ const { t, direction } = uicore.useTranslation();
1093
+ const formatName = (name) => {
1094
+ return name.split(/[-_]/).map((word) => lodash.upperFirst(word)).join(" ");
1095
+ };
1096
+ const getCurrentDisplay = () => {
1097
+ const [category, itemId] = currentValue.split(":");
1098
+ if (!category || !itemId) return "Select";
1099
+ const categoryGroup = options.find((opt) => opt.category === category);
1100
+ const item = categoryGroup?.screensets.find((i) => i.id === itemId);
1101
+ return item ? item.name : "Select";
1102
+ };
1103
+ const handleItemClick = (category, itemId) => {
1104
+ onChange(`${category}:${itemId}`);
1105
+ };
1106
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center justify-between ${className}`, children: [
1107
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground whitespace-nowrap", children: t("studio:controls.screenset") }),
1108
+ /* @__PURE__ */ jsxRuntime.jsxs(uikit.DropdownMenu, { dir: direction, children: [
1109
+ /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownButton, { variant: uikitContracts.ButtonVariant.Outline, children: formatName(getCurrentDisplay()) }) }),
1110
+ /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownMenuContent, { align: "end", container: portalContainer, className: "z-[99999] pointer-events-auto", children: options.map((categoryGroup) => /* @__PURE__ */ jsxRuntime.jsxs(uikit.DropdownMenuSub, { children: [
1111
+ /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownMenuSubTrigger, { disabled: categoryGroup.screensets.length === 0, children: formatName(categoryGroup.category) }),
1112
+ /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownMenuSubContent, { container: portalContainer, className: "z-[99999] pointer-events-auto", children: categoryGroup.screensets.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
1113
+ uikit.DropdownMenuItem,
1114
+ {
1115
+ onClick: () => handleItemClick(categoryGroup.category, item.id),
1116
+ children: formatName(item.name)
1117
+ },
1118
+ item.id
1119
+ )) })
1120
+ ] }, categoryGroup.category)) })
1121
+ ] })
1122
+ ] });
1123
+ };
1124
+ ScreensetSelector.displayName = "ScreensetSelector";
1125
+ var FALLBACK_SELECT_LANGUAGE_TEXT = "Select language";
1126
+ var RTL_INDICATOR_SUFFIX = " (RTL)";
1127
+ function LanguageSelector({
1128
+ displayMode = uicore.LanguageDisplayMode.Native
1129
+ } = {}) {
1130
+ const { t, language, changeLanguage, getSupportedLanguages } = uicore.useTranslation();
1131
+ const { portalContainer } = useStudioContext();
1132
+ const languages = getSupportedLanguages();
1133
+ const currentLanguage = languages.find((lang) => lang.code === language);
1134
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
1135
+ /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-sm text-muted-foreground whitespace-nowrap", children: t("studio:controls.language") }),
1136
+ /* @__PURE__ */ jsxRuntime.jsxs(uikit.DropdownMenu, { children: [
1137
+ /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(uikit.Button, { variant: uikitContracts.ButtonVariant.Outline, children: currentLanguage ? displayMode === uicore.LanguageDisplayMode.Native ? currentLanguage.name : currentLanguage.englishName : FALLBACK_SELECT_LANGUAGE_TEXT }) }),
1138
+ /* @__PURE__ */ jsxRuntime.jsx(uikit.DropdownMenuContent, { align: "end", container: portalContainer, className: "z-[99999] pointer-events-auto", children: languages.map((lang) => /* @__PURE__ */ jsxRuntime.jsxs(
1139
+ uikit.DropdownMenuItem,
1140
+ {
1141
+ onClick: () => changeLanguage(lang.code),
1142
+ children: [
1143
+ displayMode === uicore.LanguageDisplayMode.Native ? lang.name : lang.englishName,
1144
+ lang.direction === uicore.TextDirection.RightToLeft && RTL_INDICATOR_SUFFIX
1145
+ ]
1146
+ },
1147
+ lang.code
1148
+ )) })
1149
+ ] })
1150
+ ] });
1151
+ }
1152
+ var ApiModeToggle = ({ className }) => {
1153
+ const useMockApi = uicore.useAppSelector((state) => state.uicore.app.useMockApi);
1154
+ const { t } = uicore.useTranslation();
1155
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `flex items-center justify-between h-9 ${className}`, children: [
1156
+ /* @__PURE__ */ jsxRuntime.jsx(
1157
+ "label",
1158
+ {
1159
+ htmlFor: "api-mode-toggle",
1160
+ className: "text-sm text-muted-foreground cursor-pointer select-none whitespace-nowrap",
1161
+ children: t("studio:controls.mockApi")
1162
+ }
1163
+ ),
1164
+ /* @__PURE__ */ jsxRuntime.jsx(
1165
+ uikit.Switch,
1166
+ {
1167
+ id: "api-mode-toggle",
1168
+ checked: useMockApi,
1169
+ onCheckedChange: (checked) => uicore.setApiMode(checked)
1170
+ }
1171
+ )
1172
+ ] });
1173
+ };
1174
+ ApiModeToggle.displayName = "ApiModeToggle";
1175
+ var ALL_CATEGORIES = [uicore.ScreensetCategory.Drafts, uicore.ScreensetCategory.Mockups, uicore.ScreensetCategory.Production];
1176
+ var buildScreensetOptions = () => {
1177
+ return ALL_CATEGORIES.map((category) => ({
1178
+ category,
1179
+ screensets: uicore.screensetRegistry.getMetadataByCategory(category)
1180
+ }));
1181
+ };
1182
+ var ControlPanel = () => {
1183
+ const dispatch = uicore.useAppDispatch();
1184
+ const currentScreenset = uicore.useAppSelector((state) => state.uicore.layout.currentScreenset);
1185
+ const [screensetOptions, setScreensetOptions] = React3.useState([]);
1186
+ const { t } = uicore.useTranslation();
1187
+ React3.useEffect(() => {
1188
+ const options = buildScreensetOptions();
1189
+ setScreensetOptions(options);
1190
+ }, []);
1191
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
1192
+ /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: t("studio:controls.heading") }),
1193
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
1194
+ screensetOptions.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
1195
+ ScreensetSelector,
1196
+ {
1197
+ options: screensetOptions,
1198
+ currentValue: currentScreenset,
1199
+ onChange: (value) => dispatch(uicore.selectScreenset(value))
1200
+ }
1201
+ ),
1202
+ /* @__PURE__ */ jsxRuntime.jsx(ApiModeToggle, {}),
1203
+ /* @__PURE__ */ jsxRuntime.jsx(ThemeSelector, {}),
1204
+ /* @__PURE__ */ jsxRuntime.jsx(LanguageSelector, {})
1205
+ ] })
1206
+ ] }) });
1207
+ };
1208
+ ControlPanel.displayName = "ControlPanel";
1209
+ var StudioPanel = () => {
1210
+ const { toggleCollapsed, setPortalContainer } = useStudioContext();
1211
+ const { t } = uicore.useTranslation();
1212
+ const portalRef = React3__default.default.useRef(null);
1213
+ const { size, handleMouseDown: handleResizeMouseDown } = useResizable();
1214
+ const { position, isDragging, handleMouseDown: handleDragMouseDown } = useDraggable({
1215
+ panelSize: size,
1216
+ storageKey: STORAGE_KEYS.POSITION
1217
+ });
1218
+ React3__default.default.useEffect(() => {
1219
+ setPortalContainer(portalRef.current);
1220
+ return () => setPortalContainer(null);
1221
+ }, [setPortalContainer]);
1222
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1223
+ /* @__PURE__ */ jsxRuntime.jsx(
1224
+ "div",
1225
+ {
1226
+ ref: portalRef,
1227
+ className: "studio-portal-container fixed z-[99999] pointer-events-none"
1228
+ }
1229
+ ),
1230
+ /* @__PURE__ */ jsxRuntime.jsx(
1231
+ "div",
1232
+ {
1233
+ className: "studio-panel fixed z-[10000]",
1234
+ style: {
1235
+ left: `${position.x}px`,
1236
+ top: `${position.y}px`,
1237
+ width: `${size.width}px`,
1238
+ height: `${size.height}px`
1239
+ },
1240
+ children: /* @__PURE__ */ jsxRuntime.jsxs(uikit.Card, { className: "h-full w-full flex flex-col overflow-hidden bg-white/20 dark:bg-black/50 backdrop-blur-md backdrop-saturate-[180%] border border-white/30 dark:border-white/20 shadow-[0_8px_32px_rgba(0,0,0,0.2)]", children: [
1241
+ /* @__PURE__ */ jsxRuntime.jsxs(
1242
+ "div",
1243
+ {
1244
+ className: "studio-header px-4 py-3 border-b border-border/50 select-none flex items-center justify-between",
1245
+ onMouseDown: handleDragMouseDown,
1246
+ style: { cursor: isDragging ? "grabbing" : "grab" },
1247
+ children: [
1248
+ /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-sm font-semibold text-foreground", children: t("studio:title") }),
1249
+ /* @__PURE__ */ jsxRuntime.jsx(
1250
+ uikit.Button,
1251
+ {
1252
+ variant: uikit.ButtonVariant.Ghost,
1253
+ size: uikit.ButtonSize.Sm,
1254
+ onClick: toggleCollapsed,
1255
+ className: "h-7 w-7 p-0",
1256
+ "aria-label": t("studio:aria.collapseButton"),
1257
+ title: t("studio:aria.collapseButton"),
1258
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1259
+ "svg",
1260
+ {
1261
+ className: "w-4 h-4",
1262
+ fill: "none",
1263
+ stroke: "currentColor",
1264
+ viewBox: "0 0 24 24",
1265
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1266
+ "path",
1267
+ {
1268
+ strokeLinecap: "round",
1269
+ strokeLinejoin: "round",
1270
+ strokeWidth: 2,
1271
+ d: "M19 9l-7 7-7-7"
1272
+ }
1273
+ )
1274
+ }
1275
+ )
1276
+ }
1277
+ )
1278
+ ]
1279
+ }
1280
+ ),
1281
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto p-4", children: /* @__PURE__ */ jsxRuntime.jsx(ControlPanel, {}) }),
1282
+ /* @__PURE__ */ jsxRuntime.jsx(
1283
+ "div",
1284
+ {
1285
+ className: "studio-resize-handle absolute bottom-1 right-1 w-5 h-5 cursor-nwse-resize",
1286
+ onMouseDown: handleResizeMouseDown,
1287
+ role: "button",
1288
+ "aria-label": t("studio:aria.resizeHandle"),
1289
+ title: t("studio:aria.resizeHandle"),
1290
+ tabIndex: 0,
1291
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1292
+ "svg",
1293
+ {
1294
+ className: "w-5 h-5 text-muted-foreground/70 hover:text-muted-foreground transition-colors",
1295
+ fill: "currentColor",
1296
+ viewBox: "0 0 24 24",
1297
+ children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M22 22H20V20H22V22ZM22 18H20V16H22V18ZM18 22H16V20H18V22ZM18 18H16V16H18V18ZM14 22H12V20H14V22Z" })
1298
+ }
1299
+ )
1300
+ }
1301
+ )
1302
+ ] })
1303
+ }
1304
+ )
1305
+ ] });
1306
+ };
1307
+ StudioPanel.displayName = "StudioPanel";
1308
+ var useKeyboardShortcut = (handler) => {
1309
+ React3.useEffect(() => {
1310
+ const handleKeyDown = (e) => {
1311
+ if (e.shiftKey && e.code === "Backquote") {
1312
+ e.preventDefault();
1313
+ handler();
1314
+ }
1315
+ };
1316
+ window.addEventListener("keydown", handleKeyDown);
1317
+ return () => {
1318
+ window.removeEventListener("keydown", handleKeyDown);
1319
+ };
1320
+ }, [handler]);
1321
+ };
1322
+ var GlassmorphicButton = ({
1323
+ icon,
1324
+ onMouseDown,
1325
+ onClick,
1326
+ title,
1327
+ isDragging = false
1328
+ }) => {
1329
+ return /* @__PURE__ */ jsxRuntime.jsx(
1330
+ uikit.Button,
1331
+ {
1332
+ variant: uikit.ButtonVariant.Ghost,
1333
+ onMouseDown,
1334
+ onClick,
1335
+ title,
1336
+ className: "w-12 h-12 p-0 rounded-full flex items-center justify-center pointer-events-auto bg-white/20 dark:bg-black/50 backdrop-blur-md backdrop-saturate-[180%] border border-white/30 dark:border-white/20 shadow-[0_8px_32px_rgba(0,0,0,0.2)] hover:bg-white/30 dark:hover:bg-black/60 transition-colors",
1337
+ style: { cursor: isDragging ? "grabbing" : "grab" },
1338
+ children: icon
1339
+ }
1340
+ );
1341
+ };
1342
+ GlassmorphicButton.displayName = "GlassmorphicButton";
1343
+ var StudioIcon = ({ className = "" }) => {
1344
+ return /* @__PURE__ */ jsxRuntime.jsx(
1345
+ "svg",
1346
+ {
1347
+ className,
1348
+ fill: "none",
1349
+ stroke: "currentColor",
1350
+ viewBox: "0 0 24 24",
1351
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1352
+ "path",
1353
+ {
1354
+ strokeLinecap: "round",
1355
+ strokeLinejoin: "round",
1356
+ strokeWidth: 2,
1357
+ d: "M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"
1358
+ }
1359
+ )
1360
+ }
1361
+ );
1362
+ };
1363
+ var CollapsedButton = ({ toggleCollapsed }) => {
1364
+ const { t } = uicore.useTranslation();
1365
+ const { position, isDragging, handleMouseDown } = useDraggable({
1366
+ panelSize: BUTTON_SIZE,
1367
+ storageKey: STORAGE_KEYS.BUTTON_POSITION
1368
+ });
1369
+ const dragStartPosition = React3.useRef(null);
1370
+ const handleButtonMouseDown = (e) => {
1371
+ dragStartPosition.current = { x: e.clientX, y: e.clientY };
1372
+ handleMouseDown(e);
1373
+ };
1374
+ const handleButtonClick = (e) => {
1375
+ if (dragStartPosition.current) {
1376
+ const dx = Math.abs(e.clientX - dragStartPosition.current.x);
1377
+ const dy = Math.abs(e.clientY - dragStartPosition.current.y);
1378
+ if (dx < 5 && dy < 5) {
1379
+ toggleCollapsed();
1380
+ }
1381
+ }
1382
+ };
1383
+ return /* @__PURE__ */ jsxRuntime.jsx(
1384
+ "div",
1385
+ {
1386
+ className: "fixed z-[10000]",
1387
+ style: {
1388
+ left: `${position.x}px`,
1389
+ top: `${position.y}px`
1390
+ },
1391
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1392
+ GlassmorphicButton,
1393
+ {
1394
+ icon: /* @__PURE__ */ jsxRuntime.jsx(StudioIcon, { className: "w-6 h-6 text-foreground" }),
1395
+ onMouseDown: handleButtonMouseDown,
1396
+ onClick: handleButtonClick,
1397
+ title: t("studio:aria.openButton"),
1398
+ isDragging
1399
+ }
1400
+ )
1401
+ }
1402
+ );
1403
+ };
1404
+ CollapsedButton.displayName = "CollapsedButton";
1405
+ var StudioContent = () => {
1406
+ const { collapsed, toggleCollapsed } = useStudioContext();
1407
+ useKeyboardShortcut(toggleCollapsed);
1408
+ if (collapsed) {
1409
+ return /* @__PURE__ */ jsxRuntime.jsx(CollapsedButton, { toggleCollapsed });
1410
+ }
1411
+ return /* @__PURE__ */ jsxRuntime.jsx(StudioPanel, {});
1412
+ };
1413
+ var StudioOverlay = () => {
1414
+ return /* @__PURE__ */ jsxRuntime.jsx(StudioProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(StudioContent, {}) });
1415
+ };
1416
+ StudioOverlay.displayName = "StudioOverlay";
1417
+
1418
+ exports.StudioOverlay = StudioOverlay;
1419
+ exports.StudioProvider = StudioProvider;
1420
+ exports.useStudioContext = useStudioContext;
1421
+ //# sourceMappingURL=index.js.map
1422
+ //# sourceMappingURL=index.js.map