PluginProbe
Gutenberg / 23.6.0
Gutenberg v23.6.0
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / build / scripts / i18n / index.js

index.js in Gutenberg 23.6.0, at build/scripts/i18n/index.js

559 lines 15.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 "use strict";
2 var wp;
3 (wp ||= {}).i18n = (() => {
4 var __create = Object.create;
5 var __defProp = Object.defineProperty;
6 var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7 var __getOwnPropNames = Object.getOwnPropertyNames;
8 var __getProtoOf = Object.getPrototypeOf;
9 var __hasOwnProp = Object.prototype.hasOwnProperty;
10 var __commonJS = (cb, mod) => function __require() {
11 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12 };
13 var __export = (target, all) => {
14 for (var name in all)
15 __defProp(target, name, { get: all[name], enumerable: true });
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 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
31 mod
32 ));
33 var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
35 // package-external:@wordpress/hooks
36 var require_hooks = __commonJS({
37 "package-external:@wordpress/hooks"(exports, module) {
38 module.exports = window.wp.hooks;
39 }
40 });
41
42 // packages/i18n/build-module/index.mjs
43 var index_exports = {};
44 __export(index_exports, {
45 __: () => __,
46 _n: () => _n,
47 _nx: () => _nx,
48 _x: () => _x,
49 createI18n: () => createI18n,
50 defaultI18n: () => default_i18n_default,
51 getLocaleData: () => getLocaleData,
52 hasTranslation: () => hasTranslation,
53 isRTL: () => isRTL,
54 resetLocaleData: () => resetLocaleData,
55 setLocaleData: () => setLocaleData,
56 sprintf: () => sprintf2,
57 subscribe: () => subscribe
58 });
59
60 // node_modules/@tannin/sprintf/src/index.js
61 var PATTERN = /%(((\d+)\$)|(\(([$_a-zA-Z][$_a-zA-Z0-9]*)\)))?[ +0#-]*\d*(\.(\d+|\*))?(ll|[lhqL])?([cduxXefgsp%])/g;
62 function sprintf(string, ...args) {
63 var i = 0;
64 if (Array.isArray(args[0])) {
65 args = /** @type {import('../types').SprintfArgs<T>[]} */
66 /** @type {unknown} */
67 args[0];
68 }
69 return string.replace(PATTERN, function() {
70 var index, name, precision, type, value;
71 index = arguments[3];
72 name = arguments[5];
73 precision = arguments[7];
74 type = arguments[9];
75 if (type === "%") {
76 return "%";
77 }
78 if (precision === "*") {
79 precision = args[i];
80 i++;
81 }
82 if (name === void 0) {
83 if (index === void 0) {
84 index = i + 1;
85 }
86 i++;
87 value = args[index - 1];
88 } else if (args[0] && typeof args[0] === "object" && args[0].hasOwnProperty(name)) {
89 value = args[0][name];
90 }
91 if (type === "f") {
92 value = parseFloat(value) || 0;
93 } else if (type === "d") {
94 value = parseInt(value) || 0;
95 }
96 if (precision !== void 0) {
97 if (type === "f") {
98 value = value.toFixed(precision);
99 } else if (type === "s") {
100 value = value.substr(0, precision);
101 }
102 }
103 return value !== void 0 && value !== null ? value : "";
104 });
105 }
106
107 // packages/i18n/build-module/sprintf.mjs
108 function sprintf2(format, ...args) {
109 return sprintf(format, ...args);
110 }
111
112 // node_modules/@tannin/postfix/index.js
113 var PRECEDENCE;
114 var OPENERS;
115 var TERMINATORS;
116 var PATTERN2;
117 PRECEDENCE = {
118 "(": 9,
119 "!": 8,
120 "*": 7,
121 "/": 7,
122 "%": 7,
123 "+": 6,
124 "-": 6,
125 "<": 5,
126 "<=": 5,
127 ">": 5,
128 ">=": 5,
129 "==": 4,
130 "!=": 4,
131 "&&": 3,
132 "||": 2,
133 "?": 1,
134 "?:": 1
135 };
136 OPENERS = ["(", "?"];
137 TERMINATORS = {
138 ")": ["("],
139 ":": ["?", "?:"]
140 };
141 PATTERN2 = /<=|>=|==|!=|&&|\|\||\?:|\(|!|\*|\/|%|\+|-|<|>|\?|\)|:/;
142 function postfix(expression) {
143 var terms = [], stack = [], match, operator, term, element;
144 while (match = expression.match(PATTERN2)) {
145 operator = match[0];
146 term = expression.substr(0, match.index).trim();
147 if (term) {
148 terms.push(term);
149 }
150 while (element = stack.pop()) {
151 if (TERMINATORS[operator]) {
152 if (TERMINATORS[operator][0] === element) {
153 operator = TERMINATORS[operator][1] || operator;
154 break;
155 }
156 } else if (OPENERS.indexOf(element) >= 0 || PRECEDENCE[element] < PRECEDENCE[operator]) {
157 stack.push(element);
158 break;
159 }
160 terms.push(element);
161 }
162 if (!TERMINATORS[operator]) {
163 stack.push(operator);
164 }
165 expression = expression.substr(match.index + operator.length);
166 }
167 expression = expression.trim();
168 if (expression) {
169 terms.push(expression);
170 }
171 return terms.concat(stack.reverse());
172 }
173
174 // node_modules/@tannin/evaluate/index.js
175 var OPERATORS = {
176 "!": function(a) {
177 return !a;
178 },
179 "*": function(a, b) {
180 return a * b;
181 },
182 "/": function(a, b) {
183 return a / b;
184 },
185 "%": function(a, b) {
186 return a % b;
187 },
188 "+": function(a, b) {
189 return a + b;
190 },
191 "-": function(a, b) {
192 return a - b;
193 },
194 "<": function(a, b) {
195 return a < b;
196 },
197 "<=": function(a, b) {
198 return a <= b;
199 },
200 ">": function(a, b) {
201 return a > b;
202 },
203 ">=": function(a, b) {
204 return a >= b;
205 },
206 "==": function(a, b) {
207 return a === b;
208 },
209 "!=": function(a, b) {
210 return a !== b;
211 },
212 "&&": function(a, b) {
213 return a && b;
214 },
215 "||": function(a, b) {
216 return a || b;
217 },
218 "?:": function(a, b, c) {
219 if (a) {
220 throw b;
221 }
222 return c;
223 }
224 };
225 function evaluate(postfix2, variables) {
226 var stack = [], i, j, args, getOperatorResult, term, value;
227 for (i = 0; i < postfix2.length; i++) {
228 term = postfix2[i];
229 getOperatorResult = OPERATORS[term];
230 if (getOperatorResult) {
231 j = getOperatorResult.length;
232 args = Array(j);
233 while (j--) {
234 args[j] = stack.pop();
235 }
236 try {
237 value = getOperatorResult.apply(null, args);
238 } catch (earlyReturn) {
239 return earlyReturn;
240 }
241 } else if (variables.hasOwnProperty(term)) {
242 value = variables[term];
243 } else {
244 value = +term;
245 }
246 stack.push(value);
247 }
248 return stack[0];
249 }
250
251 // node_modules/@tannin/compile/index.js
252 function compile(expression) {
253 var terms = postfix(expression);
254 return function(variables) {
255 return evaluate(terms, variables);
256 };
257 }
258
259 // node_modules/@tannin/plural-forms/index.js
260 function pluralForms(expression) {
261 var evaluate2 = compile(expression);
262 return function(n) {
263 return +evaluate2({ n });
264 };
265 }
266
267 // node_modules/tannin/index.js
268 var DEFAULT_OPTIONS = {
269 contextDelimiter: "",
270 onMissingKey: null
271 };
272 function getPluralExpression(pf) {
273 var parts, i, part;
274 parts = pf.split(";");
275 for (i = 0; i < parts.length; i++) {
276 part = parts[i].trim();
277 if (part.indexOf("plural=") === 0) {
278 return part.substr(7);
279 }
280 }
281 }
282 function Tannin(data, options) {
283 var key;
284 this.data = data;
285 this.pluralForms = {};
286 this.options = {};
287 for (key in DEFAULT_OPTIONS) {
288 this.options[key] = options !== void 0 && key in options ? options[key] : DEFAULT_OPTIONS[key];
289 }
290 }
291 Tannin.prototype.getPluralForm = function(domain, n) {
292 var getPluralForm = this.pluralForms[domain], config, plural, pf;
293 if (!getPluralForm) {
294 config = this.data[domain][""];
295 pf = config["Plural-Forms"] || config["plural-forms"] || // Ignore reason: As known, there's no way to document the empty
296 // string property on a key to guarantee this as metadata.
297 // @ts-ignore
298 config.plural_forms;
299 if (typeof pf !== "function") {
300 plural = getPluralExpression(
301 config["Plural-Forms"] || config["plural-forms"] || // Ignore reason: As known, there's no way to document the empty
302 // string property on a key to guarantee this as metadata.
303 // @ts-ignore
304 config.plural_forms
305 );
306 pf = pluralForms(plural);
307 }
308 getPluralForm = this.pluralForms[domain] = pf;
309 }
310 return getPluralForm(n);
311 };
312 Tannin.prototype.dcnpgettext = function(domain, context, singular, plural, n) {
313 var index, key, entry;
314 if (n === void 0) {
315 index = 0;
316 } else {
317 index = this.getPluralForm(domain, n);
318 }
319 key = singular;
320 if (context) {
321 key = context + this.options.contextDelimiter + singular;
322 }
323 entry = this.data[domain][key];
324 if (entry && entry[index]) {
325 return entry[index];
326 }
327 if (this.options.onMissingKey) {
328 this.options.onMissingKey(singular, domain);
329 }
330 return index === 0 ? singular : plural;
331 };
332
333 // packages/i18n/build-module/create-i18n.mjs
334 var DEFAULT_LOCALE_DATA = {
335 "": {
336 plural_forms(n) {
337 return n === 1 ? 0 : 1;
338 }
339 }
340 };
341 var I18N_HOOK_REGEXP = /^i18n\.(n?gettext|has_translation)(_|$)/;
342 var createI18n = (initialData, initialDomain, hooks) => {
343 const tannin = new Tannin({});
344 const listeners = /* @__PURE__ */ new Set();
345 const notifyListeners = () => {
346 listeners.forEach((listener) => listener());
347 };
348 const subscribe2 = (callback) => {
349 listeners.add(callback);
350 return () => listeners.delete(callback);
351 };
352 const getLocaleData2 = (domain = "default") => tannin.data[domain];
353 const doSetLocaleData = (data, domain = "default") => {
354 tannin.data[domain] = {
355 ...tannin.data[domain],
356 ...data
357 };
358 tannin.data[domain][""] = {
359 ...DEFAULT_LOCALE_DATA[""],
360 ...tannin.data[domain]?.[""]
361 };
362 delete tannin.pluralForms[domain];
363 };
364 const setLocaleData2 = (data, domain) => {
365 doSetLocaleData(data, domain);
366 notifyListeners();
367 };
368 const addLocaleData = (data, domain = "default") => {
369 tannin.data[domain] = {
370 ...tannin.data[domain],
371 ...data,
372 // Populate default domain configuration (supported locale date which omits
373 // a plural forms expression).
374 "": {
375 ...DEFAULT_LOCALE_DATA[""],
376 ...tannin.data[domain]?.[""],
377 ...data?.[""]
378 }
379 };
380 delete tannin.pluralForms[domain];
381 notifyListeners();
382 };
383 const resetLocaleData2 = (data, domain) => {
384 tannin.data = {};
385 tannin.pluralForms = {};
386 setLocaleData2(data, domain);
387 };
388 const dcnpgettext = (domain = "default", context, single, plural, number) => {
389 if (!tannin.data[domain]) {
390 doSetLocaleData(void 0, domain);
391 }
392 return tannin.dcnpgettext(domain, context, single, plural, number);
393 };
394 const getFilterDomain = (domain) => domain || "default";
395 const __2 = (text, domain) => {
396 let translation = dcnpgettext(domain, void 0, text);
397 if (!hooks) {
398 return translation;
399 }
400 translation = hooks.applyFilters(
401 "i18n.gettext",
402 translation,
403 text,
404 domain
405 );
406 return hooks.applyFilters(
407 "i18n.gettext_" + getFilterDomain(domain),
408 translation,
409 text,
410 domain
411 );
412 };
413 const _x2 = (text, context, domain) => {
414 let translation = dcnpgettext(domain, context, text);
415 if (!hooks) {
416 return translation;
417 }
418 translation = hooks.applyFilters(
419 "i18n.gettext_with_context",
420 translation,
421 text,
422 context,
423 domain
424 );
425 return hooks.applyFilters(
426 "i18n.gettext_with_context_" + getFilterDomain(domain),
427 translation,
428 text,
429 context,
430 domain
431 );
432 };
433 const _n2 = (single, plural, number, domain) => {
434 let translation = dcnpgettext(
435 domain,
436 void 0,
437 single,
438 plural,
439 number
440 );
441 if (!hooks) {
442 return translation;
443 }
444 translation = hooks.applyFilters(
445 "i18n.ngettext",
446 translation,
447 single,
448 plural,
449 number,
450 domain
451 );
452 return hooks.applyFilters(
453 "i18n.ngettext_" + getFilterDomain(domain),
454 translation,
455 single,
456 plural,
457 number,
458 domain
459 );
460 };
461 const _nx2 = (single, plural, number, context, domain) => {
462 let translation = dcnpgettext(
463 domain,
464 context,
465 single,
466 plural,
467 number
468 );
469 if (!hooks) {
470 return translation;
471 }
472 translation = hooks.applyFilters(
473 "i18n.ngettext_with_context",
474 translation,
475 single,
476 plural,
477 number,
478 context,
479 domain
480 );
481 return hooks.applyFilters(
482 "i18n.ngettext_with_context_" + getFilterDomain(domain),
483 translation,
484 single,
485 plural,
486 number,
487 context,
488 domain
489 );
490 };
491 const isRTL2 = () => {
492 return "rtl" === _x2("ltr", "text direction");
493 };
494 const hasTranslation2 = (single, context, domain) => {
495 const key = context ? context + "" + single : single;
496 let result = !!tannin.data?.[domain ?? "default"]?.[key];
497 if (hooks) {
498 result = hooks.applyFilters(
499 "i18n.has_translation",
500 result,
501 single,
502 context,
503 domain
504 );
505 result = hooks.applyFilters(
506 "i18n.has_translation_" + getFilterDomain(domain),
507 result,
508 single,
509 context,
510 domain
511 );
512 }
513 return result;
514 };
515 if (initialData) {
516 setLocaleData2(initialData, initialDomain);
517 }
518 if (hooks) {
519 const onHookAddedOrRemoved = (hookName) => {
520 if (I18N_HOOK_REGEXP.test(hookName)) {
521 notifyListeners();
522 }
523 };
524 hooks.addAction("hookAdded", "core/i18n", onHookAddedOrRemoved);
525 hooks.addAction("hookRemoved", "core/i18n", onHookAddedOrRemoved);
526 }
527 return {
528 getLocaleData: getLocaleData2,
529 setLocaleData: setLocaleData2,
530 addLocaleData,
531 resetLocaleData: resetLocaleData2,
532 subscribe: subscribe2,
533 __: __2,
534 _x: _x2,
535 _n: _n2,
536 _nx: _nx2,
537 isRTL: isRTL2,
538 hasTranslation: hasTranslation2
539 };
540 };
541
542 // packages/i18n/build-module/default-i18n.mjs
543 var import_hooks = __toESM(require_hooks(), 1);
544 var i18n = createI18n(void 0, void 0, import_hooks.defaultHooks);
545 var default_i18n_default = i18n;
546 var getLocaleData = i18n.getLocaleData.bind(i18n);
547 var setLocaleData = i18n.setLocaleData.bind(i18n);
548 var resetLocaleData = i18n.resetLocaleData.bind(i18n);
549 var subscribe = i18n.subscribe.bind(i18n);
550 var __ = i18n.__.bind(i18n);
551 var _x = i18n._x.bind(i18n);
552 var _n = i18n._n.bind(i18n);
553 var _nx = i18n._nx.bind(i18n);
554 var isRTL = i18n.isRTL.bind(i18n);
555 var hasTranslation = i18n.hasTranslation.bind(i18n);
556 return __toCommonJS(index_exports);
557 })();
558 //# sourceMappingURL=index.js.map
559