@pure-ds/core 0.7.30 → 0.7.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.github/copilot-instructions.md +20 -11
  2. package/LOCALIZATION.md +197 -0
  3. package/dist/types/pds.config.d.ts +1 -1
  4. package/dist/types/pds.config.d.ts.map +1 -1
  5. package/dist/types/pds.d.ts +150 -0
  6. package/dist/types/public/assets/pds/components/pds-form.d.ts +2 -2
  7. package/dist/types/public/assets/pds/components/pds-form.d.ts.map +1 -1
  8. package/dist/types/public/assets/pds/components/pds-omnibox.d.ts +2 -2
  9. package/dist/types/public/assets/pds/components/pds-omnibox.d.ts.map +1 -1
  10. package/dist/types/public/assets/pds/components/pds-rating.d.ts +1 -119
  11. package/dist/types/public/assets/pds/components/pds-rating.d.ts.map +1 -1
  12. package/dist/types/public/assets/pds/components/pds-treeview.d.ts.map +1 -1
  13. package/dist/types/public/assets/pds/components/pds-upload.d.ts.map +1 -1
  14. package/dist/types/src/js/common/ask.d.ts.map +1 -1
  15. package/dist/types/src/js/common/font-loader.d.ts.map +1 -1
  16. package/dist/types/src/js/common/localization-resource-provider.d.ts +49 -0
  17. package/dist/types/src/js/common/localization-resource-provider.d.ts.map +1 -0
  18. package/dist/types/src/js/common/localization.d.ts +25 -0
  19. package/dist/types/src/js/common/localization.d.ts.map +1 -0
  20. package/dist/types/src/js/common/msg.d.ts +1 -2
  21. package/dist/types/src/js/common/msg.d.ts.map +1 -1
  22. package/dist/types/src/js/common/pds-log.d.ts +3 -0
  23. package/dist/types/src/js/common/pds-log.d.ts.map +1 -0
  24. package/dist/types/src/js/lit.d.ts +0 -7
  25. package/dist/types/src/js/lit.d.ts.map +1 -1
  26. package/dist/types/src/js/pds-core/pds-config.d.ts +51 -0
  27. package/dist/types/src/js/pds-core/pds-config.d.ts.map +1 -1
  28. package/dist/types/src/js/pds-core/pds-enhancers.d.ts.map +1 -1
  29. package/dist/types/src/js/pds-core/pds-live.d.ts.map +1 -1
  30. package/dist/types/src/js/pds-core/pds-registry.d.ts.map +1 -1
  31. package/dist/types/src/js/pds-core/pds-runtime.d.ts.map +1 -1
  32. package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
  33. package/dist/types/src/js/pds-localization.d.ts +3 -0
  34. package/dist/types/src/js/pds-localization.d.ts.map +1 -0
  35. package/dist/types/src/js/pds-singleton.d.ts +13 -0
  36. package/dist/types/src/js/pds-singleton.d.ts.map +1 -0
  37. package/dist/types/src/js/pds.d.ts +9 -1
  38. package/dist/types/src/js/pds.d.ts.map +1 -1
  39. package/package.json +8 -4
  40. package/packages/pds-cli/README.md +2 -0
  41. package/packages/pds-cli/lib/pds-mcp-core.js +2 -2
  42. package/public/assets/js/app.js +9 -11
  43. package/public/assets/js/lit.js +3 -94
  44. package/public/assets/js/pds-ask.js +4 -4
  45. package/public/assets/js/pds-enhancers.js +1 -1
  46. package/public/assets/js/pds-localization.js +1 -0
  47. package/public/assets/js/pds-manager.js +118 -118
  48. package/public/assets/js/pds.js +2 -2
  49. package/public/assets/pds/components/pds-calendar.js +4 -4
  50. package/public/assets/pds/components/pds-daterange.js +11 -8
  51. package/public/assets/pds/components/pds-form.js +22 -22
  52. package/public/assets/pds/components/pds-live-edit.js +503 -42
  53. package/public/assets/pds/components/pds-live-importer.js +66 -66
  54. package/public/assets/pds/components/pds-live-template-canvas.js +3 -3
  55. package/public/assets/pds/components/pds-omnibox.js +4 -4
  56. package/public/assets/pds/components/pds-rating.js +5 -3
  57. package/public/assets/pds/components/pds-tags.js +5 -5
  58. package/public/assets/pds/components/pds-theme.js +4 -4
  59. package/public/assets/pds/components/pds-toaster.js +6 -6
  60. package/public/assets/pds/components/pds-treeview.js +8 -4
  61. package/public/assets/pds/components/pds-upload.js +7 -6
  62. package/public/assets/pds/core/pds-ask.js +4 -4
  63. package/public/assets/pds/core/pds-enhancers.js +1 -1
  64. package/public/assets/pds/core/pds-localization.js +1 -0
  65. package/public/assets/pds/core/pds-manager.js +118 -118
  66. package/public/assets/pds/core.js +2 -2
  67. package/public/assets/pds/external/lit.js +3 -94
  68. package/readme.md +34 -6
  69. package/src/js/pds-core/pds-config.js +34 -11
  70. package/src/js/pds-core/pds-enhancers.js +5 -3
  71. package/src/js/pds-core/pds-live.js +7 -5
  72. package/src/js/pds-core/pds-registry.js +6 -4
  73. package/src/js/pds-core/pds-runtime.js +12 -8
  74. package/src/js/pds-core/pds-start-helpers.js +9 -4
  75. package/src/js/pds.d.ts +150 -0
  76. 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
- const isStaticMode = Boolean(PDS.registry && !PDS.registry.isLive);
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
- console.warn(
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
- if (typeof console !== "undefined" && typeof console.info === "function") {
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 { PDS };
1172
+ export {
1173
+ PDS,
1174
+ msg,
1175
+ str,
1176
+ configureLocalization,
1177
+ loadLocale,
1178
+ setLocale,
1179
+ getLocalizationState,
1180
+ createJSONLocalization,
1181
+ };