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