@pure-ds/core 0.7.30 → 0.7.33
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/.github/copilot-instructions.md +20 -11
- package/LOCALIZATION.md +197 -0
- package/dist/types/pds.config.d.ts +1 -1
- package/dist/types/pds.config.d.ts.map +1 -1
- package/dist/types/pds.d.ts +150 -0
- package/dist/types/public/assets/pds/components/pds-form.d.ts +2 -2
- package/dist/types/public/assets/pds/components/pds-form.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-omnibox.d.ts +2 -2
- package/dist/types/public/assets/pds/components/pds-omnibox.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-rating.d.ts +1 -119
- package/dist/types/public/assets/pds/components/pds-rating.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-treeview.d.ts.map +1 -1
- package/dist/types/public/assets/pds/components/pds-upload.d.ts.map +1 -1
- package/dist/types/src/js/common/ask.d.ts.map +1 -1
- package/dist/types/src/js/common/font-loader.d.ts.map +1 -1
- package/dist/types/src/js/common/localization-resource-provider.d.ts +49 -0
- package/dist/types/src/js/common/localization-resource-provider.d.ts.map +1 -0
- package/dist/types/src/js/common/localization.d.ts +25 -0
- package/dist/types/src/js/common/localization.d.ts.map +1 -0
- package/dist/types/src/js/common/msg.d.ts +1 -2
- package/dist/types/src/js/common/msg.d.ts.map +1 -1
- package/dist/types/src/js/common/pds-log.d.ts +3 -0
- package/dist/types/src/js/common/pds-log.d.ts.map +1 -0
- package/dist/types/src/js/lit.d.ts +0 -7
- package/dist/types/src/js/lit.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-config.d.ts +51 -0
- package/dist/types/src/js/pds-core/pds-config.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-enhancers.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-live.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-registry.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-runtime.d.ts.map +1 -1
- package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
- package/dist/types/src/js/pds-localization.d.ts +3 -0
- package/dist/types/src/js/pds-localization.d.ts.map +1 -0
- package/dist/types/src/js/pds-singleton.d.ts +13 -0
- package/dist/types/src/js/pds-singleton.d.ts.map +1 -0
- package/dist/types/src/js/pds.d.ts +9 -1
- package/dist/types/src/js/pds.d.ts.map +1 -1
- package/package.json +10 -4
- package/packages/pds-cli/README.md +2 -0
- package/packages/pds-cli/lib/pds-mcp-core.js +2 -2
- package/public/assets/js/app.js +9 -11
- package/public/assets/js/lit.js +3 -94
- package/public/assets/js/pds-ask.js +4 -4
- package/public/assets/js/pds-enhancers.js +1 -1
- package/public/assets/js/pds-localization.js +1 -0
- package/public/assets/js/pds-manager.js +118 -118
- package/public/assets/js/pds.js +2 -2
- package/public/assets/pds/components/pds-calendar.js +4 -4
- package/public/assets/pds/components/pds-daterange.js +11 -8
- package/public/assets/pds/components/pds-form.js +22 -22
- package/public/assets/pds/components/pds-live-edit.js +503 -42
- package/public/assets/pds/components/pds-live-importer.js +66 -66
- package/public/assets/pds/components/pds-live-template-canvas.js +3 -3
- package/public/assets/pds/components/pds-omnibox.js +4 -4
- package/public/assets/pds/components/pds-rating.js +5 -3
- package/public/assets/pds/components/pds-tags.js +5 -5
- package/public/assets/pds/components/pds-theme.js +4 -4
- package/public/assets/pds/components/pds-toaster.js +6 -6
- package/public/assets/pds/components/pds-treeview.js +8 -4
- package/public/assets/pds/components/pds-upload.js +7 -6
- package/public/assets/pds/core/pds-ask.js +4 -4
- package/public/assets/pds/core/pds-enhancers.js +1 -1
- package/public/assets/pds/core/pds-localization.js +1 -0
- package/public/assets/pds/core/pds-manager.js +118 -118
- package/public/assets/pds/core.js +2 -2
- package/public/assets/pds/external/lit.js +3 -94
- package/readme.md +34 -6
- package/src/js/common/ask.js +530 -0
- package/src/js/common/common.js +122 -0
- package/src/js/common/font-loader.js +202 -0
- package/src/js/common/localization-resource-provider.js +274 -0
- package/src/js/common/localization.js +839 -0
- package/src/js/common/msg.js +9 -0
- package/src/js/common/pds-core/pds.d.ts +128 -0
- package/src/js/common/pds-log.js +144 -0
- package/src/js/common/toast.js +122 -0
- package/src/js/pds-core/pds-config.js +51 -10
- package/src/js/pds-core/pds-enhancers.js +5 -3
- package/src/js/pds-core/pds-live.js +7 -5
- package/src/js/pds-core/pds-registry.js +6 -4
- package/src/js/pds-core/pds-runtime.js +12 -8
- package/src/js/pds-core/pds-start-helpers.js +9 -4
- package/src/js/pds-singleton.js +49 -0
- package/src/js/pds.d.ts +150 -0
- package/src/js/pds.js +420 -40
package/src/js/pds.js
CHANGED
|
@@ -28,26 +28,9 @@
|
|
|
28
28
|
* @property {(css:string) => CSSStyleSheet} createStylesheet - Create a constructable stylesheet from CSS text. @throws {DOMException} on invalid CSS in some browsers.
|
|
29
29
|
* @property {() => boolean} isLiveMode - Returns true when running in live/designer-backed mode
|
|
30
30
|
* @property {() => Promise<typeof import("./pds-core/pds-generator.js").Generator>} getGenerator - Live-only accessor for the Generator class
|
|
31
|
+
* @property {(level: 'log'|'warn'|'error'|'debug'|'info', message?: any, ...data: any[]) => void} log - Unified logging entry point used by PDS internals and consumers
|
|
31
32
|
*/
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Workspace for the Pure Design System runtime API
|
|
35
|
-
* PDS is now an EventTarget so consumers can subscribe to a single, consistent
|
|
36
|
-
* event bus instead of listening on window/document or individual elements.
|
|
37
|
-
*/
|
|
38
|
-
class PDSBase extends EventTarget {}
|
|
39
|
-
/** @type {PDSAPI & PDSBase} */
|
|
40
|
-
const __PDS_SINGLETON_KEY__ = "__PURE_DS_PDS_SINGLETON__";
|
|
41
|
-
const __globalScope__ = typeof globalThis !== "undefined" ? globalThis : window;
|
|
42
|
-
const __existingPDS__ = __globalScope__?.[__PDS_SINGLETON_KEY__];
|
|
43
|
-
const PDS =
|
|
44
|
-
__existingPDS__ && typeof __existingPDS__.addEventListener === "function"
|
|
45
|
-
? __existingPDS__
|
|
46
|
-
: new PDSBase();
|
|
47
|
-
|
|
48
|
-
if (__globalScope__) {
|
|
49
|
-
__globalScope__[__PDS_SINGLETON_KEY__] = PDS;
|
|
50
|
-
}
|
|
33
|
+
import { PDS } from "./pds-singleton.js";
|
|
51
34
|
|
|
52
35
|
// State properties
|
|
53
36
|
if (typeof PDS.initializing !== "boolean") {
|
|
@@ -65,6 +48,12 @@ if (!("currentConfig" in PDS)) {
|
|
|
65
48
|
if (!("compiled" in PDS)) {
|
|
66
49
|
PDS.compiled = null;
|
|
67
50
|
}
|
|
51
|
+
if (typeof PDS.logHandler !== "function") {
|
|
52
|
+
PDS.logHandler = null;
|
|
53
|
+
}
|
|
54
|
+
if (!("mode" in PDS)) {
|
|
55
|
+
PDS.mode = null;
|
|
56
|
+
}
|
|
68
57
|
|
|
69
58
|
import {
|
|
70
59
|
adoptLayers,
|
|
@@ -87,11 +76,377 @@ import {
|
|
|
87
76
|
isPresetThemeCompatible,
|
|
88
77
|
resolveThemePreference,
|
|
89
78
|
} from "./pds-core/pds-theme-utils.js";
|
|
79
|
+
import { configurePDSLogger, pdsLog } from "./common/pds-log.js";
|
|
90
80
|
|
|
91
81
|
let __autoCompletePromise = null;
|
|
92
82
|
let __askPromise = null;
|
|
93
83
|
let __toastPromise = null;
|
|
94
84
|
let __defaultEnhancersPromise = null;
|
|
85
|
+
let __localizationPromise = null;
|
|
86
|
+
let __localizationRuntime = null;
|
|
87
|
+
|
|
88
|
+
const __LOCALIZATION_RUNTIME_SINGLETON_KEY__ = "__pdsLocalizationRuntime";
|
|
89
|
+
|
|
90
|
+
function __getLocalizationRuntimeSync() {
|
|
91
|
+
if (__localizationRuntime) {
|
|
92
|
+
return __localizationRuntime;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const sharedRuntime = PDS?.[__LOCALIZATION_RUNTIME_SINGLETON_KEY__];
|
|
96
|
+
if (sharedRuntime && typeof sharedRuntime === "object") {
|
|
97
|
+
__localizationRuntime = sharedRuntime;
|
|
98
|
+
return sharedRuntime;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function __setLocalizationRuntime(runtime) {
|
|
105
|
+
const normalizedRuntime = runtime && typeof runtime === "object" ? runtime : null;
|
|
106
|
+
__localizationRuntime = normalizedRuntime;
|
|
107
|
+
PDS[__LOCALIZATION_RUNTIME_SINGLETON_KEY__] = normalizedRuntime;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
configurePDSLogger({
|
|
111
|
+
getLogger: () => (typeof PDS.logHandler === "function" ? PDS.logHandler : null),
|
|
112
|
+
getContext: () => {
|
|
113
|
+
const mode =
|
|
114
|
+
PDS?.mode ||
|
|
115
|
+
PDS?.compiled?.mode ||
|
|
116
|
+
(PDS?.registry?.isLive ? "live" : "static");
|
|
117
|
+
const debug =
|
|
118
|
+
(PDS?.debug ||
|
|
119
|
+
PDS?.currentConfig?.debug ||
|
|
120
|
+
PDS?.currentConfig?.design?.debug ||
|
|
121
|
+
PDS?.compiled?.debug ||
|
|
122
|
+
PDS?.compiled?.design?.debug ||
|
|
123
|
+
false) === true;
|
|
124
|
+
return {
|
|
125
|
+
mode,
|
|
126
|
+
debug,
|
|
127
|
+
thisArg: PDS,
|
|
128
|
+
};
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
PDS.log = (level = "log", message, ...data) => {
|
|
133
|
+
pdsLog(level, message, ...data);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const __fallbackLocalizationState = {
|
|
137
|
+
locale: "en",
|
|
138
|
+
messages: {},
|
|
139
|
+
hasProvider: false,
|
|
140
|
+
};
|
|
141
|
+
const __pendingLocalizationKeys = new Set();
|
|
142
|
+
|
|
143
|
+
function __isStrTagged(template) {
|
|
144
|
+
return (
|
|
145
|
+
Boolean(template) &&
|
|
146
|
+
typeof template !== "string" &&
|
|
147
|
+
typeof template === "object" &&
|
|
148
|
+
"strTag" in template
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function __collateStrings(strings = []) {
|
|
153
|
+
let result = "";
|
|
154
|
+
for (let index = 0; index <= strings.length - 1; index += 1) {
|
|
155
|
+
result += strings[index];
|
|
156
|
+
if (index < strings.length - 1) {
|
|
157
|
+
result += `{${index}}`;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function __replacePlaceholders(input, callback) {
|
|
164
|
+
return String(input).replace(/\{(\d+)\}/g, (_match, index) =>
|
|
165
|
+
callback(Number(index))
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function __normalizeMessages(messages) {
|
|
170
|
+
if (!messages || typeof messages !== "object") {
|
|
171
|
+
return {};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const normalized = {};
|
|
175
|
+
for (const [key, value] of Object.entries(messages)) {
|
|
176
|
+
if (typeof value === "string") {
|
|
177
|
+
normalized[key] = value;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (value && typeof value === "object" && typeof value.content === "string") {
|
|
182
|
+
normalized[key] = value.content;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return normalized;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function __fallbackStr(strings, ...values) {
|
|
189
|
+
return {
|
|
190
|
+
strTag: true,
|
|
191
|
+
strings: Array.from(strings || []),
|
|
192
|
+
values,
|
|
193
|
+
raw: Array.from(strings?.raw || []),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
function __fallbackMsg(template) {
|
|
198
|
+
if (!template) {
|
|
199
|
+
return "";
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (__isStrTagged(template)) {
|
|
203
|
+
const key = __collateStrings(template.strings || []);
|
|
204
|
+
const translated = __fallbackLocalizationState.messages[key] || key;
|
|
205
|
+
return __replacePlaceholders(translated, (index) => template.values?.[index]);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
const key = String(template);
|
|
209
|
+
return __fallbackLocalizationState.messages[key] || key;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function __queuePendingLocalizationKey(template) {
|
|
213
|
+
if (!template) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const key = __isStrTagged(template)
|
|
218
|
+
? __collateStrings(template.strings || [])
|
|
219
|
+
: String(template);
|
|
220
|
+
|
|
221
|
+
if (typeof key === "string" && key.length > 0) {
|
|
222
|
+
__pendingLocalizationKeys.add(key);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function __flushPendingLocalizationKeys(runtime) {
|
|
227
|
+
if (
|
|
228
|
+
!runtime ||
|
|
229
|
+
typeof runtime.msg !== "function" ||
|
|
230
|
+
__pendingLocalizationKeys.size === 0
|
|
231
|
+
) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
const pendingKeys = Array.from(__pendingLocalizationKeys);
|
|
236
|
+
__pendingLocalizationKeys.clear();
|
|
237
|
+
|
|
238
|
+
for (const key of pendingKeys) {
|
|
239
|
+
try {
|
|
240
|
+
runtime.msg(key);
|
|
241
|
+
} catch {}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
async function __loadLocalizationRuntime() {
|
|
246
|
+
const runtime = __getLocalizationRuntimeSync();
|
|
247
|
+
if (runtime) {
|
|
248
|
+
return runtime;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
if (!__localizationPromise) {
|
|
252
|
+
const localizationModuleURL = __resolveExternalRuntimeModuleURL(
|
|
253
|
+
"pds-localization.js"
|
|
254
|
+
);
|
|
255
|
+
|
|
256
|
+
__localizationPromise = import(localizationModuleURL)
|
|
257
|
+
.then((mod) => {
|
|
258
|
+
if (
|
|
259
|
+
typeof mod?.msg !== "function" ||
|
|
260
|
+
typeof mod?.str !== "function" ||
|
|
261
|
+
typeof mod?.configureLocalization !== "function" ||
|
|
262
|
+
typeof mod?.loadLocale !== "function" ||
|
|
263
|
+
typeof mod?.setLocale !== "function" ||
|
|
264
|
+
typeof mod?.getLocalizationState !== "function"
|
|
265
|
+
) {
|
|
266
|
+
throw new Error("Failed to load localization runtime exports");
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
__setLocalizationRuntime(mod);
|
|
270
|
+
__flushPendingLocalizationKeys(mod);
|
|
271
|
+
return mod;
|
|
272
|
+
})
|
|
273
|
+
.catch((error) => {
|
|
274
|
+
__localizationPromise = null;
|
|
275
|
+
throw error;
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return __localizationPromise;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
const msg = (template, options = {}) => {
|
|
283
|
+
const runtime = __getLocalizationRuntimeSync();
|
|
284
|
+
if (typeof runtime?.msg === "function") {
|
|
285
|
+
return runtime.msg(template, options);
|
|
286
|
+
}
|
|
287
|
+
__queuePendingLocalizationKey(template);
|
|
288
|
+
return __fallbackMsg(template, options);
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
const str = (strings, ...values) => {
|
|
292
|
+
const runtime = __getLocalizationRuntimeSync();
|
|
293
|
+
if (typeof runtime?.str === "function") {
|
|
294
|
+
return runtime.str(strings, ...values);
|
|
295
|
+
}
|
|
296
|
+
return __fallbackStr(strings, ...values);
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
const configureLocalization = (config = null) => {
|
|
300
|
+
const runtime = __getLocalizationRuntimeSync();
|
|
301
|
+
if (typeof runtime?.configureLocalization === "function") {
|
|
302
|
+
return runtime.configureLocalization(config);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
if (!config || typeof config !== "object") {
|
|
306
|
+
__fallbackLocalizationState.locale = "en";
|
|
307
|
+
__fallbackLocalizationState.messages = {};
|
|
308
|
+
__fallbackLocalizationState.hasProvider = false;
|
|
309
|
+
return {
|
|
310
|
+
locale: __fallbackLocalizationState.locale,
|
|
311
|
+
messages: { ...__fallbackLocalizationState.messages },
|
|
312
|
+
hasProvider: __fallbackLocalizationState.hasProvider,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
if (typeof config.locale === "string" && config.locale.trim()) {
|
|
317
|
+
__fallbackLocalizationState.locale = config.locale.trim();
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
if (Object.prototype.hasOwnProperty.call(config, "messages")) {
|
|
321
|
+
__fallbackLocalizationState.messages = __normalizeMessages(config.messages);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
const hasProvider = Boolean(
|
|
325
|
+
config.provider ||
|
|
326
|
+
config.translate ||
|
|
327
|
+
config.loadLocale ||
|
|
328
|
+
config.setLocale
|
|
329
|
+
);
|
|
330
|
+
__fallbackLocalizationState.hasProvider = hasProvider;
|
|
331
|
+
|
|
332
|
+
if (hasProvider) {
|
|
333
|
+
__loadLocalizationRuntime()
|
|
334
|
+
.then((runtime) => {
|
|
335
|
+
runtime.configureLocalization(config);
|
|
336
|
+
__flushPendingLocalizationKeys(runtime);
|
|
337
|
+
})
|
|
338
|
+
.catch(() => {});
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
return {
|
|
342
|
+
locale: __fallbackLocalizationState.locale,
|
|
343
|
+
messages: { ...__fallbackLocalizationState.messages },
|
|
344
|
+
hasProvider: __fallbackLocalizationState.hasProvider,
|
|
345
|
+
};
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
const loadLocale = async (locale) => {
|
|
349
|
+
const runtime = await __loadLocalizationRuntime();
|
|
350
|
+
return runtime.loadLocale(locale);
|
|
351
|
+
};
|
|
352
|
+
|
|
353
|
+
const setLocale = async (locale, options = {}) => {
|
|
354
|
+
const runtime = await __loadLocalizationRuntime();
|
|
355
|
+
return runtime.setLocale(locale, options);
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
const getLocalizationState = () => {
|
|
359
|
+
const runtime = __getLocalizationRuntimeSync();
|
|
360
|
+
if (typeof runtime?.getLocalizationState === "function") {
|
|
361
|
+
return runtime.getLocalizationState();
|
|
362
|
+
}
|
|
363
|
+
return {
|
|
364
|
+
locale: __fallbackLocalizationState.locale,
|
|
365
|
+
messages: { ...__fallbackLocalizationState.messages },
|
|
366
|
+
hasProvider: __fallbackLocalizationState.hasProvider,
|
|
367
|
+
};
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
const createJSONLocalization = (options = {}) => {
|
|
371
|
+
const runtime = __getLocalizationRuntimeSync();
|
|
372
|
+
if (typeof runtime?.createJSONLocalization === "function") {
|
|
373
|
+
return runtime.createJSONLocalization(options);
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
const defaultLocale =
|
|
377
|
+
typeof options?.locale === "string" && options.locale.trim()
|
|
378
|
+
? options.locale.trim().toLowerCase()
|
|
379
|
+
: "en";
|
|
380
|
+
|
|
381
|
+
const configuredLocales = Array.isArray(options?.locales)
|
|
382
|
+
? options.locales
|
|
383
|
+
.map((locale) => String(locale || "").trim().toLowerCase())
|
|
384
|
+
.filter(Boolean)
|
|
385
|
+
: [];
|
|
386
|
+
|
|
387
|
+
const locales = Array.from(new Set([defaultLocale, ...configuredLocales]));
|
|
388
|
+
|
|
389
|
+
let __jsonLocalizationConfigPromise = null;
|
|
390
|
+
const __resolveJSONLocalizationConfig = async () => {
|
|
391
|
+
if (!__jsonLocalizationConfigPromise) {
|
|
392
|
+
__jsonLocalizationConfigPromise = __loadLocalizationRuntime()
|
|
393
|
+
.then((runtime) => {
|
|
394
|
+
if (typeof runtime?.createJSONLocalization === "function") {
|
|
395
|
+
return runtime.createJSONLocalization(options);
|
|
396
|
+
}
|
|
397
|
+
return null;
|
|
398
|
+
})
|
|
399
|
+
.catch(() => null);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
return __jsonLocalizationConfigPromise;
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
const resolveLoader = async (kind = "loadLocale") => {
|
|
406
|
+
const runtimeConfig = await __resolveJSONLocalizationConfig();
|
|
407
|
+
if (!runtimeConfig || typeof runtimeConfig !== "object") {
|
|
408
|
+
return null;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
const provider = runtimeConfig.provider;
|
|
412
|
+
if (!provider || typeof provider !== "object") {
|
|
413
|
+
return null;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
const exactLoader = provider[kind];
|
|
417
|
+
if (typeof exactLoader === "function") {
|
|
418
|
+
return exactLoader;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
if (kind === "setLocale" && typeof provider.loadLocale === "function") {
|
|
422
|
+
return provider.loadLocale;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
return null;
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
return {
|
|
429
|
+
locale: defaultLocale,
|
|
430
|
+
locales: [...locales],
|
|
431
|
+
provider: {
|
|
432
|
+
locales: [...locales],
|
|
433
|
+
async loadLocale(context = {}) {
|
|
434
|
+
const loader = await resolveLoader("loadLocale");
|
|
435
|
+
if (typeof loader !== "function") {
|
|
436
|
+
return {};
|
|
437
|
+
}
|
|
438
|
+
return loader(context);
|
|
439
|
+
},
|
|
440
|
+
async setLocale(context = {}) {
|
|
441
|
+
const loader = await resolveLoader("setLocale");
|
|
442
|
+
if (typeof loader !== "function") {
|
|
443
|
+
return {};
|
|
444
|
+
}
|
|
445
|
+
return loader(context);
|
|
446
|
+
},
|
|
447
|
+
},
|
|
448
|
+
};
|
|
449
|
+
};
|
|
95
450
|
|
|
96
451
|
function __resolveExternalRuntimeModuleURL(filename, overrideURL) {
|
|
97
452
|
if (overrideURL && typeof overrideURL === "string") {
|
|
@@ -208,22 +563,7 @@ __lazyToast.info = async (...args) => {
|
|
|
208
563
|
};
|
|
209
564
|
|
|
210
565
|
const __defaultLog = function (level = "log", message, ...data) {
|
|
211
|
-
|
|
212
|
-
const debug =
|
|
213
|
-
(this?.debug || this?.design?.debug || PDS.debug || false) === true;
|
|
214
|
-
|
|
215
|
-
if (isStaticMode) {
|
|
216
|
-
if (!PDS.debug) return;
|
|
217
|
-
} else if (!debug && level !== "error" && level !== "warn") {
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
const method = console[level] || console.log;
|
|
222
|
-
if (data.length > 0) {
|
|
223
|
-
method(message, ...data);
|
|
224
|
-
} else {
|
|
225
|
-
method(message);
|
|
226
|
-
}
|
|
566
|
+
PDS.log(level, message, ...data);
|
|
227
567
|
};
|
|
228
568
|
|
|
229
569
|
function __stripFunctionsForClone(value) {
|
|
@@ -309,6 +649,22 @@ PDS.isLiveMode = () => registry.isLive;
|
|
|
309
649
|
PDS.ask = __lazyAsk;
|
|
310
650
|
PDS.toast = __lazyToast;
|
|
311
651
|
PDS.common = common;
|
|
652
|
+
PDS.msg = msg;
|
|
653
|
+
PDS.str = str;
|
|
654
|
+
PDS.configureLocalization = configureLocalization;
|
|
655
|
+
PDS.loadLocale = loadLocale;
|
|
656
|
+
PDS.setLocale = setLocale;
|
|
657
|
+
PDS.getLocalizationState = getLocalizationState;
|
|
658
|
+
PDS.createJSONLocalization = createJSONLocalization;
|
|
659
|
+
PDS.i18n = {
|
|
660
|
+
msg,
|
|
661
|
+
str,
|
|
662
|
+
configure: configureLocalization,
|
|
663
|
+
loadLocale,
|
|
664
|
+
setLocale,
|
|
665
|
+
getState: getLocalizationState,
|
|
666
|
+
createJSONLocalization,
|
|
667
|
+
};
|
|
312
668
|
PDS.AutoComplete = null;
|
|
313
669
|
PDS.loadAutoComplete = async () => {
|
|
314
670
|
if (PDS.AutoComplete && typeof PDS.AutoComplete.connect === "function") {
|
|
@@ -504,7 +860,8 @@ if (!__themeDescriptor) {
|
|
|
504
860
|
PDS.currentPreset?.name ||
|
|
505
861
|
PDS.currentConfig?.preset ||
|
|
506
862
|
"current preset";
|
|
507
|
-
|
|
863
|
+
PDS.log(
|
|
864
|
+
"warn",
|
|
508
865
|
`PDS theme "${resolvedTheme}" not supported by preset "${presetName}".`
|
|
509
866
|
);
|
|
510
867
|
PDS.dispatchEvent(
|
|
@@ -592,8 +949,24 @@ async function start(config) {
|
|
|
592
949
|
try {
|
|
593
950
|
const mode = (config && config.mode) || "live";
|
|
594
951
|
const { mode: _omit, ...rest } = config || {};
|
|
952
|
+
|
|
953
|
+
PDS.mode = mode;
|
|
954
|
+
PDS.logHandler = typeof rest?.log === "function" ? rest.log : null;
|
|
955
|
+
|
|
595
956
|
PDS.currentConfig = __toReadonlyClone(rest);
|
|
596
957
|
|
|
958
|
+
const localizationConfig =
|
|
959
|
+
rest && typeof rest.localization === "object" && rest.localization
|
|
960
|
+
? rest.localization
|
|
961
|
+
: null;
|
|
962
|
+
|
|
963
|
+
if (localizationConfig) {
|
|
964
|
+
await __loadLocalizationRuntime();
|
|
965
|
+
configureLocalization(localizationConfig);
|
|
966
|
+
} else {
|
|
967
|
+
configureLocalization(null);
|
|
968
|
+
}
|
|
969
|
+
|
|
597
970
|
let startResult;
|
|
598
971
|
if (mode === "static") {
|
|
599
972
|
startResult = await staticInit(rest);
|
|
@@ -619,9 +992,7 @@ async function start(config) {
|
|
|
619
992
|
const resolvedExternalIconPath =
|
|
620
993
|
PDS?.compiled?.design?.icons?.externalPath || "/assets/img/icons/";
|
|
621
994
|
|
|
622
|
-
|
|
623
|
-
console.info(`[PDS] startup ready; external icon path: ${resolvedExternalIconPath}`);
|
|
624
|
-
}
|
|
995
|
+
PDS.log("info", `startup ready; external icon path: ${resolvedExternalIconPath}`);
|
|
625
996
|
|
|
626
997
|
return startResult;
|
|
627
998
|
} finally {
|
|
@@ -798,4 +1169,13 @@ async function staticInit(config) {
|
|
|
798
1169
|
|
|
799
1170
|
export const applyResolvedTheme = __applyResolvedTheme;
|
|
800
1171
|
export const setupSystemListenerIfNeeded = __setupSystemListenerIfNeeded;
|
|
801
|
-
export {
|
|
1172
|
+
export {
|
|
1173
|
+
PDS,
|
|
1174
|
+
msg,
|
|
1175
|
+
str,
|
|
1176
|
+
configureLocalization,
|
|
1177
|
+
loadLocale,
|
|
1178
|
+
setLocale,
|
|
1179
|
+
getLocalizationState,
|
|
1180
|
+
createJSONLocalization,
|
|
1181
|
+
};
|