spicykatsu 0.0.1

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.
@@ -0,0 +1,2582 @@
1
+ import {
2
+ isReactive,
3
+ isRef,
4
+ toRaw
5
+ } from "./chunk-CKQ4TNQ3.js";
6
+
7
+ // node_modules/@vue/devtools-shared/dist/index.js
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 __esm = (fn, res) => function __init() {
15
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
16
+ };
17
+ var __commonJS = (cb, mod) => function __require() {
18
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
19
+ };
20
+ var __copyProps = (to, from, except, desc) => {
21
+ if (from && typeof from === "object" || typeof from === "function") {
22
+ for (let key of __getOwnPropNames(from))
23
+ if (!__hasOwnProp.call(to, key) && key !== except)
24
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
25
+ }
26
+ return to;
27
+ };
28
+ var __toESM = (mod, isNodeMode, target2) => (target2 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
29
+ // If the importer is in node compatibility mode or this is not an ESM
30
+ // file that has been converted to a CommonJS file using a Babel-
31
+ // compatible transform (i.e. "__esModule" has not been set), then set
32
+ // "default" to the CommonJS "module.exports" for node compatibility.
33
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target2, "default", { value: mod, enumerable: true }) : target2,
34
+ mod
35
+ ));
36
+ var init_esm_shims = __esm({
37
+ "../../node_modules/.pnpm/tsup@8.0.2_postcss@8.4.38_typescript@5.4.3/node_modules/tsup/assets/esm_shims.js"() {
38
+ "use strict";
39
+ }
40
+ });
41
+ var require_rfdc = __commonJS({
42
+ "../../node_modules/.pnpm/rfdc@1.3.1/node_modules/rfdc/index.js"(exports, module) {
43
+ "use strict";
44
+ init_esm_shims();
45
+ module.exports = rfdc2;
46
+ function copyBuffer(cur) {
47
+ if (cur instanceof Buffer) {
48
+ return Buffer.from(cur);
49
+ }
50
+ return new cur.constructor(cur.buffer.slice(), cur.byteOffset, cur.length);
51
+ }
52
+ function rfdc2(opts) {
53
+ opts = opts || {};
54
+ if (opts.circles)
55
+ return rfdcCircles(opts);
56
+ return opts.proto ? cloneProto : clone;
57
+ function cloneArray(a, fn) {
58
+ var keys = Object.keys(a);
59
+ var a2 = new Array(keys.length);
60
+ for (var i = 0; i < keys.length; i++) {
61
+ var k = keys[i];
62
+ var cur = a[k];
63
+ if (typeof cur !== "object" || cur === null) {
64
+ a2[k] = cur;
65
+ } else if (cur instanceof Date) {
66
+ a2[k] = new Date(cur);
67
+ } else if (ArrayBuffer.isView(cur)) {
68
+ a2[k] = copyBuffer(cur);
69
+ } else {
70
+ a2[k] = fn(cur);
71
+ }
72
+ }
73
+ return a2;
74
+ }
75
+ function clone(o) {
76
+ if (typeof o !== "object" || o === null)
77
+ return o;
78
+ if (o instanceof Date)
79
+ return new Date(o);
80
+ if (Array.isArray(o))
81
+ return cloneArray(o, clone);
82
+ if (o instanceof Map)
83
+ return new Map(cloneArray(Array.from(o), clone));
84
+ if (o instanceof Set)
85
+ return new Set(cloneArray(Array.from(o), clone));
86
+ var o2 = {};
87
+ for (var k in o) {
88
+ if (Object.hasOwnProperty.call(o, k) === false)
89
+ continue;
90
+ var cur = o[k];
91
+ if (typeof cur !== "object" || cur === null) {
92
+ o2[k] = cur;
93
+ } else if (cur instanceof Date) {
94
+ o2[k] = new Date(cur);
95
+ } else if (cur instanceof Map) {
96
+ o2[k] = new Map(cloneArray(Array.from(cur), clone));
97
+ } else if (cur instanceof Set) {
98
+ o2[k] = new Set(cloneArray(Array.from(cur), clone));
99
+ } else if (ArrayBuffer.isView(cur)) {
100
+ o2[k] = copyBuffer(cur);
101
+ } else {
102
+ o2[k] = clone(cur);
103
+ }
104
+ }
105
+ return o2;
106
+ }
107
+ function cloneProto(o) {
108
+ if (typeof o !== "object" || o === null)
109
+ return o;
110
+ if (o instanceof Date)
111
+ return new Date(o);
112
+ if (Array.isArray(o))
113
+ return cloneArray(o, cloneProto);
114
+ if (o instanceof Map)
115
+ return new Map(cloneArray(Array.from(o), cloneProto));
116
+ if (o instanceof Set)
117
+ return new Set(cloneArray(Array.from(o), cloneProto));
118
+ var o2 = {};
119
+ for (var k in o) {
120
+ var cur = o[k];
121
+ if (typeof cur !== "object" || cur === null) {
122
+ o2[k] = cur;
123
+ } else if (cur instanceof Date) {
124
+ o2[k] = new Date(cur);
125
+ } else if (cur instanceof Map) {
126
+ o2[k] = new Map(cloneArray(Array.from(cur), cloneProto));
127
+ } else if (cur instanceof Set) {
128
+ o2[k] = new Set(cloneArray(Array.from(cur), cloneProto));
129
+ } else if (ArrayBuffer.isView(cur)) {
130
+ o2[k] = copyBuffer(cur);
131
+ } else {
132
+ o2[k] = cloneProto(cur);
133
+ }
134
+ }
135
+ return o2;
136
+ }
137
+ }
138
+ function rfdcCircles(opts) {
139
+ var refs = [];
140
+ var refsNew = [];
141
+ return opts.proto ? cloneProto : clone;
142
+ function cloneArray(a, fn) {
143
+ var keys = Object.keys(a);
144
+ var a2 = new Array(keys.length);
145
+ for (var i = 0; i < keys.length; i++) {
146
+ var k = keys[i];
147
+ var cur = a[k];
148
+ if (typeof cur !== "object" || cur === null) {
149
+ a2[k] = cur;
150
+ } else if (cur instanceof Date) {
151
+ a2[k] = new Date(cur);
152
+ } else if (ArrayBuffer.isView(cur)) {
153
+ a2[k] = copyBuffer(cur);
154
+ } else {
155
+ var index = refs.indexOf(cur);
156
+ if (index !== -1) {
157
+ a2[k] = refsNew[index];
158
+ } else {
159
+ a2[k] = fn(cur);
160
+ }
161
+ }
162
+ }
163
+ return a2;
164
+ }
165
+ function clone(o) {
166
+ if (typeof o !== "object" || o === null)
167
+ return o;
168
+ if (o instanceof Date)
169
+ return new Date(o);
170
+ if (Array.isArray(o))
171
+ return cloneArray(o, clone);
172
+ if (o instanceof Map)
173
+ return new Map(cloneArray(Array.from(o), clone));
174
+ if (o instanceof Set)
175
+ return new Set(cloneArray(Array.from(o), clone));
176
+ var o2 = {};
177
+ refs.push(o);
178
+ refsNew.push(o2);
179
+ for (var k in o) {
180
+ if (Object.hasOwnProperty.call(o, k) === false)
181
+ continue;
182
+ var cur = o[k];
183
+ if (typeof cur !== "object" || cur === null) {
184
+ o2[k] = cur;
185
+ } else if (cur instanceof Date) {
186
+ o2[k] = new Date(cur);
187
+ } else if (cur instanceof Map) {
188
+ o2[k] = new Map(cloneArray(Array.from(cur), clone));
189
+ } else if (cur instanceof Set) {
190
+ o2[k] = new Set(cloneArray(Array.from(cur), clone));
191
+ } else if (ArrayBuffer.isView(cur)) {
192
+ o2[k] = copyBuffer(cur);
193
+ } else {
194
+ var i = refs.indexOf(cur);
195
+ if (i !== -1) {
196
+ o2[k] = refsNew[i];
197
+ } else {
198
+ o2[k] = clone(cur);
199
+ }
200
+ }
201
+ }
202
+ refs.pop();
203
+ refsNew.pop();
204
+ return o2;
205
+ }
206
+ function cloneProto(o) {
207
+ if (typeof o !== "object" || o === null)
208
+ return o;
209
+ if (o instanceof Date)
210
+ return new Date(o);
211
+ if (Array.isArray(o))
212
+ return cloneArray(o, cloneProto);
213
+ if (o instanceof Map)
214
+ return new Map(cloneArray(Array.from(o), cloneProto));
215
+ if (o instanceof Set)
216
+ return new Set(cloneArray(Array.from(o), cloneProto));
217
+ var o2 = {};
218
+ refs.push(o);
219
+ refsNew.push(o2);
220
+ for (var k in o) {
221
+ var cur = o[k];
222
+ if (typeof cur !== "object" || cur === null) {
223
+ o2[k] = cur;
224
+ } else if (cur instanceof Date) {
225
+ o2[k] = new Date(cur);
226
+ } else if (cur instanceof Map) {
227
+ o2[k] = new Map(cloneArray(Array.from(cur), cloneProto));
228
+ } else if (cur instanceof Set) {
229
+ o2[k] = new Set(cloneArray(Array.from(cur), cloneProto));
230
+ } else if (ArrayBuffer.isView(cur)) {
231
+ o2[k] = copyBuffer(cur);
232
+ } else {
233
+ var i = refs.indexOf(cur);
234
+ if (i !== -1) {
235
+ o2[k] = refsNew[i];
236
+ } else {
237
+ o2[k] = cloneProto(cur);
238
+ }
239
+ }
240
+ }
241
+ refs.pop();
242
+ refsNew.pop();
243
+ return o2;
244
+ }
245
+ }
246
+ }
247
+ });
248
+ init_esm_shims();
249
+ init_esm_shims();
250
+ var isBrowser = typeof navigator !== "undefined";
251
+ var target = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {};
252
+ var isInChromePanel = typeof target.chrome !== "undefined" && !!target.chrome.devtools;
253
+ var isInIframe = isBrowser && target.self !== target.top;
254
+ var isInElectron = typeof navigator !== "undefined" && navigator.userAgent.toLowerCase().includes("electron");
255
+ var isNuxtApp = typeof window !== "undefined" && !!window.__NUXT__;
256
+ init_esm_shims();
257
+ var import_rfdc = __toESM(require_rfdc(), 1);
258
+ var deepClone = (0, import_rfdc.default)({ circles: true });
259
+ init_esm_shims();
260
+
261
+ // node_modules/hookable/dist/index.mjs
262
+ function flatHooks(configHooks, hooks = {}, parentName) {
263
+ for (const key in configHooks) {
264
+ const subHook = configHooks[key];
265
+ const name = parentName ? `${parentName}:${key}` : key;
266
+ if (typeof subHook === "object" && subHook !== null) {
267
+ flatHooks(subHook, hooks, name);
268
+ } else if (typeof subHook === "function") {
269
+ hooks[name] = subHook;
270
+ }
271
+ }
272
+ return hooks;
273
+ }
274
+ var defaultTask = { run: (function_) => function_() };
275
+ var _createTask = () => defaultTask;
276
+ var createTask = typeof console.createTask !== "undefined" ? console.createTask : _createTask;
277
+ function serialTaskCaller(hooks, args) {
278
+ const name = args.shift();
279
+ const task = createTask(name);
280
+ return hooks.reduce(
281
+ (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),
282
+ Promise.resolve()
283
+ );
284
+ }
285
+ function parallelTaskCaller(hooks, args) {
286
+ const name = args.shift();
287
+ const task = createTask(name);
288
+ return Promise.all(hooks.map((hook2) => task.run(() => hook2(...args))));
289
+ }
290
+ function callEachWith(callbacks, arg0) {
291
+ for (const callback of [...callbacks]) {
292
+ callback(arg0);
293
+ }
294
+ }
295
+ var Hookable = class {
296
+ constructor() {
297
+ this._hooks = {};
298
+ this._before = void 0;
299
+ this._after = void 0;
300
+ this._deprecatedMessages = void 0;
301
+ this._deprecatedHooks = {};
302
+ this.hook = this.hook.bind(this);
303
+ this.callHook = this.callHook.bind(this);
304
+ this.callHookWith = this.callHookWith.bind(this);
305
+ }
306
+ hook(name, function_, options = {}) {
307
+ if (!name || typeof function_ !== "function") {
308
+ return () => {
309
+ };
310
+ }
311
+ const originalName = name;
312
+ let dep;
313
+ while (this._deprecatedHooks[name]) {
314
+ dep = this._deprecatedHooks[name];
315
+ name = dep.to;
316
+ }
317
+ if (dep && !options.allowDeprecated) {
318
+ let message = dep.message;
319
+ if (!message) {
320
+ message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : "");
321
+ }
322
+ if (!this._deprecatedMessages) {
323
+ this._deprecatedMessages = /* @__PURE__ */ new Set();
324
+ }
325
+ if (!this._deprecatedMessages.has(message)) {
326
+ console.warn(message);
327
+ this._deprecatedMessages.add(message);
328
+ }
329
+ }
330
+ if (!function_.name) {
331
+ try {
332
+ Object.defineProperty(function_, "name", {
333
+ get: () => "_" + name.replace(/\W+/g, "_") + "_hook_cb",
334
+ configurable: true
335
+ });
336
+ } catch {
337
+ }
338
+ }
339
+ this._hooks[name] = this._hooks[name] || [];
340
+ this._hooks[name].push(function_);
341
+ return () => {
342
+ if (function_) {
343
+ this.removeHook(name, function_);
344
+ function_ = void 0;
345
+ }
346
+ };
347
+ }
348
+ hookOnce(name, function_) {
349
+ let _unreg;
350
+ let _function = (...arguments_) => {
351
+ if (typeof _unreg === "function") {
352
+ _unreg();
353
+ }
354
+ _unreg = void 0;
355
+ _function = void 0;
356
+ return function_(...arguments_);
357
+ };
358
+ _unreg = this.hook(name, _function);
359
+ return _unreg;
360
+ }
361
+ removeHook(name, function_) {
362
+ if (this._hooks[name]) {
363
+ const index = this._hooks[name].indexOf(function_);
364
+ if (index !== -1) {
365
+ this._hooks[name].splice(index, 1);
366
+ }
367
+ if (this._hooks[name].length === 0) {
368
+ delete this._hooks[name];
369
+ }
370
+ }
371
+ }
372
+ deprecateHook(name, deprecated) {
373
+ this._deprecatedHooks[name] = typeof deprecated === "string" ? { to: deprecated } : deprecated;
374
+ const _hooks = this._hooks[name] || [];
375
+ delete this._hooks[name];
376
+ for (const hook2 of _hooks) {
377
+ this.hook(name, hook2);
378
+ }
379
+ }
380
+ deprecateHooks(deprecatedHooks) {
381
+ Object.assign(this._deprecatedHooks, deprecatedHooks);
382
+ for (const name in deprecatedHooks) {
383
+ this.deprecateHook(name, deprecatedHooks[name]);
384
+ }
385
+ }
386
+ addHooks(configHooks) {
387
+ const hooks = flatHooks(configHooks);
388
+ const removeFns = Object.keys(hooks).map(
389
+ (key) => this.hook(key, hooks[key])
390
+ );
391
+ return () => {
392
+ for (const unreg of removeFns.splice(0, removeFns.length)) {
393
+ unreg();
394
+ }
395
+ };
396
+ }
397
+ removeHooks(configHooks) {
398
+ const hooks = flatHooks(configHooks);
399
+ for (const key in hooks) {
400
+ this.removeHook(key, hooks[key]);
401
+ }
402
+ }
403
+ removeAllHooks() {
404
+ for (const key in this._hooks) {
405
+ delete this._hooks[key];
406
+ }
407
+ }
408
+ callHook(name, ...arguments_) {
409
+ arguments_.unshift(name);
410
+ return this.callHookWith(serialTaskCaller, name, ...arguments_);
411
+ }
412
+ callHookParallel(name, ...arguments_) {
413
+ arguments_.unshift(name);
414
+ return this.callHookWith(parallelTaskCaller, name, ...arguments_);
415
+ }
416
+ callHookWith(caller, name, ...arguments_) {
417
+ const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;
418
+ if (this._before) {
419
+ callEachWith(this._before, event);
420
+ }
421
+ const result = caller(
422
+ name in this._hooks ? [...this._hooks[name]] : [],
423
+ arguments_
424
+ );
425
+ if (result instanceof Promise) {
426
+ return result.finally(() => {
427
+ if (this._after && event) {
428
+ callEachWith(this._after, event);
429
+ }
430
+ });
431
+ }
432
+ if (this._after && event) {
433
+ callEachWith(this._after, event);
434
+ }
435
+ return result;
436
+ }
437
+ beforeEach(function_) {
438
+ this._before = this._before || [];
439
+ this._before.push(function_);
440
+ return () => {
441
+ if (this._before !== void 0) {
442
+ const index = this._before.indexOf(function_);
443
+ if (index !== -1) {
444
+ this._before.splice(index, 1);
445
+ }
446
+ }
447
+ };
448
+ }
449
+ afterEach(function_) {
450
+ this._after = this._after || [];
451
+ this._after.push(function_);
452
+ return () => {
453
+ if (this._after !== void 0) {
454
+ const index = this._after.indexOf(function_);
455
+ if (index !== -1) {
456
+ this._after.splice(index, 1);
457
+ }
458
+ }
459
+ };
460
+ }
461
+ };
462
+ function createHooks() {
463
+ return new Hookable();
464
+ }
465
+
466
+ // node_modules/perfect-debounce/dist/index.mjs
467
+ var DEBOUNCE_DEFAULTS = {
468
+ trailing: true
469
+ };
470
+ function debounce(fn, wait = 25, options = {}) {
471
+ options = { ...DEBOUNCE_DEFAULTS, ...options };
472
+ if (!Number.isFinite(wait)) {
473
+ throw new TypeError("Expected `wait` to be a finite number");
474
+ }
475
+ let leadingValue;
476
+ let timeout;
477
+ let resolveList = [];
478
+ let currentPromise;
479
+ let trailingArgs;
480
+ const applyFn = (_this, args) => {
481
+ currentPromise = _applyPromised(fn, _this, args);
482
+ currentPromise.finally(() => {
483
+ currentPromise = null;
484
+ if (options.trailing && trailingArgs && !timeout) {
485
+ const promise = applyFn(_this, trailingArgs);
486
+ trailingArgs = null;
487
+ return promise;
488
+ }
489
+ });
490
+ return currentPromise;
491
+ };
492
+ return function(...args) {
493
+ if (currentPromise) {
494
+ if (options.trailing) {
495
+ trailingArgs = args;
496
+ }
497
+ return currentPromise;
498
+ }
499
+ return new Promise((resolve) => {
500
+ const shouldCallNow = !timeout && options.leading;
501
+ clearTimeout(timeout);
502
+ timeout = setTimeout(() => {
503
+ timeout = null;
504
+ const promise = options.leading ? leadingValue : applyFn(this, args);
505
+ for (const _resolve of resolveList) {
506
+ _resolve(promise);
507
+ }
508
+ resolveList = [];
509
+ }, wait);
510
+ if (shouldCallNow) {
511
+ leadingValue = applyFn(this, args);
512
+ resolve(leadingValue);
513
+ } else {
514
+ resolveList.push(resolve);
515
+ }
516
+ });
517
+ };
518
+ }
519
+ async function _applyPromised(fn, _this, args) {
520
+ return await fn.apply(_this, args);
521
+ }
522
+
523
+ // node_modules/@vue/devtools-kit/dist/index.js
524
+ var __create2 = Object.create;
525
+ var __defProp2 = Object.defineProperty;
526
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
527
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
528
+ var __getProtoOf2 = Object.getPrototypeOf;
529
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
530
+ var __esm2 = (fn, res) => function __init() {
531
+ return fn && (res = (0, fn[__getOwnPropNames2(fn)[0]])(fn = 0)), res;
532
+ };
533
+ var __commonJS2 = (cb, mod) => function __require() {
534
+ return mod || (0, cb[__getOwnPropNames2(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
535
+ };
536
+ var __copyProps2 = (to, from, except, desc) => {
537
+ if (from && typeof from === "object" || typeof from === "function") {
538
+ for (let key of __getOwnPropNames2(from))
539
+ if (!__hasOwnProp2.call(to, key) && key !== except)
540
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
541
+ }
542
+ return to;
543
+ };
544
+ var __toESM2 = (mod, isNodeMode, target10) => (target10 = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
545
+ // If the importer is in node compatibility mode or this is not an ESM
546
+ // file that has been converted to a CommonJS file using a Babel-
547
+ // compatible transform (i.e. "__esModule" has not been set), then set
548
+ // "default" to the CommonJS "module.exports" for node compatibility.
549
+ isNodeMode || !mod || !mod.__esModule ? __defProp2(target10, "default", { value: mod, enumerable: true }) : target10,
550
+ mod
551
+ ));
552
+ var init_esm_shims2 = __esm2({
553
+ "../../node_modules/.pnpm/tsup@8.0.2_postcss@8.4.38_typescript@5.4.3/node_modules/tsup/assets/esm_shims.js"() {
554
+ "use strict";
555
+ }
556
+ });
557
+ var require_speakingurl = __commonJS2({
558
+ "../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js"(exports, module) {
559
+ "use strict";
560
+ init_esm_shims2();
561
+ (function(root) {
562
+ "use strict";
563
+ var charMap = {
564
+ // latin
565
+ "À": "A",
566
+ "Á": "A",
567
+ "Â": "A",
568
+ "Ã": "A",
569
+ "Ä": "Ae",
570
+ "Å": "A",
571
+ "Æ": "AE",
572
+ "Ç": "C",
573
+ "È": "E",
574
+ "É": "E",
575
+ "Ê": "E",
576
+ "Ë": "E",
577
+ "Ì": "I",
578
+ "Í": "I",
579
+ "Î": "I",
580
+ "Ï": "I",
581
+ "Ð": "D",
582
+ "Ñ": "N",
583
+ "Ò": "O",
584
+ "Ó": "O",
585
+ "Ô": "O",
586
+ "Õ": "O",
587
+ "Ö": "Oe",
588
+ "Ő": "O",
589
+ "Ø": "O",
590
+ "Ù": "U",
591
+ "Ú": "U",
592
+ "Û": "U",
593
+ "Ü": "Ue",
594
+ "Ű": "U",
595
+ "Ý": "Y",
596
+ "Þ": "TH",
597
+ "ß": "ss",
598
+ "à": "a",
599
+ "á": "a",
600
+ "â": "a",
601
+ "ã": "a",
602
+ "ä": "ae",
603
+ "å": "a",
604
+ "æ": "ae",
605
+ "ç": "c",
606
+ "è": "e",
607
+ "é": "e",
608
+ "ê": "e",
609
+ "ë": "e",
610
+ "ì": "i",
611
+ "í": "i",
612
+ "î": "i",
613
+ "ï": "i",
614
+ "ð": "d",
615
+ "ñ": "n",
616
+ "ò": "o",
617
+ "ó": "o",
618
+ "ô": "o",
619
+ "õ": "o",
620
+ "ö": "oe",
621
+ "ő": "o",
622
+ "ø": "o",
623
+ "ù": "u",
624
+ "ú": "u",
625
+ "û": "u",
626
+ "ü": "ue",
627
+ "ű": "u",
628
+ "ý": "y",
629
+ "þ": "th",
630
+ "ÿ": "y",
631
+ "ẞ": "SS",
632
+ // language specific
633
+ // Arabic
634
+ "ا": "a",
635
+ "أ": "a",
636
+ "إ": "i",
637
+ "آ": "aa",
638
+ "ؤ": "u",
639
+ "ئ": "e",
640
+ "ء": "a",
641
+ "ب": "b",
642
+ "ت": "t",
643
+ "ث": "th",
644
+ "ج": "j",
645
+ "ح": "h",
646
+ "خ": "kh",
647
+ "د": "d",
648
+ "ذ": "th",
649
+ "ر": "r",
650
+ "ز": "z",
651
+ "س": "s",
652
+ "ش": "sh",
653
+ "ص": "s",
654
+ "ض": "dh",
655
+ "ط": "t",
656
+ "ظ": "z",
657
+ "ع": "a",
658
+ "غ": "gh",
659
+ "ف": "f",
660
+ "ق": "q",
661
+ "ك": "k",
662
+ "ل": "l",
663
+ "م": "m",
664
+ "ن": "n",
665
+ "ه": "h",
666
+ "و": "w",
667
+ "ي": "y",
668
+ "ى": "a",
669
+ "ة": "h",
670
+ "ﻻ": "la",
671
+ "ﻷ": "laa",
672
+ "ﻹ": "lai",
673
+ "ﻵ": "laa",
674
+ // Persian additional characters than Arabic
675
+ "گ": "g",
676
+ "چ": "ch",
677
+ "پ": "p",
678
+ "ژ": "zh",
679
+ "ک": "k",
680
+ "ی": "y",
681
+ // Arabic diactrics
682
+ "َ": "a",
683
+ "ً": "an",
684
+ "ِ": "e",
685
+ "ٍ": "en",
686
+ "ُ": "u",
687
+ "ٌ": "on",
688
+ "ْ": "",
689
+ // Arabic numbers
690
+ "٠": "0",
691
+ "١": "1",
692
+ "٢": "2",
693
+ "٣": "3",
694
+ "٤": "4",
695
+ "٥": "5",
696
+ "٦": "6",
697
+ "٧": "7",
698
+ "٨": "8",
699
+ "٩": "9",
700
+ // Persian numbers
701
+ "۰": "0",
702
+ "۱": "1",
703
+ "۲": "2",
704
+ "۳": "3",
705
+ "۴": "4",
706
+ "۵": "5",
707
+ "۶": "6",
708
+ "۷": "7",
709
+ "۸": "8",
710
+ "۹": "9",
711
+ // Burmese consonants
712
+ "က": "k",
713
+ "ခ": "kh",
714
+ "ဂ": "g",
715
+ "ဃ": "ga",
716
+ "င": "ng",
717
+ "စ": "s",
718
+ "ဆ": "sa",
719
+ "ဇ": "z",
720
+ "စျ": "za",
721
+ "ည": "ny",
722
+ "ဋ": "t",
723
+ "ဌ": "ta",
724
+ "ဍ": "d",
725
+ "ဎ": "da",
726
+ "ဏ": "na",
727
+ "တ": "t",
728
+ "ထ": "ta",
729
+ "ဒ": "d",
730
+ "ဓ": "da",
731
+ "န": "n",
732
+ "ပ": "p",
733
+ "ဖ": "pa",
734
+ "ဗ": "b",
735
+ "ဘ": "ba",
736
+ "မ": "m",
737
+ "ယ": "y",
738
+ "ရ": "ya",
739
+ "လ": "l",
740
+ "ဝ": "w",
741
+ "သ": "th",
742
+ "ဟ": "h",
743
+ "ဠ": "la",
744
+ "အ": "a",
745
+ // consonant character combos
746
+ "ြ": "y",
747
+ "ျ": "ya",
748
+ "ွ": "w",
749
+ "ြွ": "yw",
750
+ "ျွ": "ywa",
751
+ "ှ": "h",
752
+ // independent vowels
753
+ "ဧ": "e",
754
+ "၏": "-e",
755
+ "ဣ": "i",
756
+ "ဤ": "-i",
757
+ "ဉ": "u",
758
+ "ဦ": "-u",
759
+ "ဩ": "aw",
760
+ "သြော": "aw",
761
+ "ဪ": "aw",
762
+ // numbers
763
+ "၀": "0",
764
+ "၁": "1",
765
+ "၂": "2",
766
+ "၃": "3",
767
+ "၄": "4",
768
+ "၅": "5",
769
+ "၆": "6",
770
+ "၇": "7",
771
+ "၈": "8",
772
+ "၉": "9",
773
+ // virama and tone marks which are silent in transliteration
774
+ "္": "",
775
+ "့": "",
776
+ "း": "",
777
+ // Czech
778
+ "č": "c",
779
+ "ď": "d",
780
+ "ě": "e",
781
+ "ň": "n",
782
+ "ř": "r",
783
+ "š": "s",
784
+ "ť": "t",
785
+ "ů": "u",
786
+ "ž": "z",
787
+ "Č": "C",
788
+ "Ď": "D",
789
+ "Ě": "E",
790
+ "Ň": "N",
791
+ "Ř": "R",
792
+ "Š": "S",
793
+ "Ť": "T",
794
+ "Ů": "U",
795
+ "Ž": "Z",
796
+ // Dhivehi
797
+ "ހ": "h",
798
+ "ށ": "sh",
799
+ "ނ": "n",
800
+ "ރ": "r",
801
+ "ބ": "b",
802
+ "ޅ": "lh",
803
+ "ކ": "k",
804
+ "އ": "a",
805
+ "ވ": "v",
806
+ "މ": "m",
807
+ "ފ": "f",
808
+ "ދ": "dh",
809
+ "ތ": "th",
810
+ "ލ": "l",
811
+ "ގ": "g",
812
+ "ޏ": "gn",
813
+ "ސ": "s",
814
+ "ޑ": "d",
815
+ "ޒ": "z",
816
+ "ޓ": "t",
817
+ "ޔ": "y",
818
+ "ޕ": "p",
819
+ "ޖ": "j",
820
+ "ޗ": "ch",
821
+ "ޘ": "tt",
822
+ "ޙ": "hh",
823
+ "ޚ": "kh",
824
+ "ޛ": "th",
825
+ "ޜ": "z",
826
+ "ޝ": "sh",
827
+ "ޞ": "s",
828
+ "ޟ": "d",
829
+ "ޠ": "t",
830
+ "ޡ": "z",
831
+ "ޢ": "a",
832
+ "ޣ": "gh",
833
+ "ޤ": "q",
834
+ "ޥ": "w",
835
+ "ަ": "a",
836
+ "ާ": "aa",
837
+ "ި": "i",
838
+ "ީ": "ee",
839
+ "ު": "u",
840
+ "ޫ": "oo",
841
+ "ެ": "e",
842
+ "ޭ": "ey",
843
+ "ޮ": "o",
844
+ "ޯ": "oa",
845
+ "ް": "",
846
+ // Georgian https://en.wikipedia.org/wiki/Romanization_of_Georgian
847
+ // National system (2002)
848
+ "ა": "a",
849
+ "ბ": "b",
850
+ "გ": "g",
851
+ "დ": "d",
852
+ "ე": "e",
853
+ "ვ": "v",
854
+ "ზ": "z",
855
+ "თ": "t",
856
+ "ი": "i",
857
+ "კ": "k",
858
+ "ლ": "l",
859
+ "მ": "m",
860
+ "ნ": "n",
861
+ "ო": "o",
862
+ "პ": "p",
863
+ "ჟ": "zh",
864
+ "რ": "r",
865
+ "ს": "s",
866
+ "ტ": "t",
867
+ "უ": "u",
868
+ "ფ": "p",
869
+ "ქ": "k",
870
+ "ღ": "gh",
871
+ "ყ": "q",
872
+ "შ": "sh",
873
+ "ჩ": "ch",
874
+ "ც": "ts",
875
+ "ძ": "dz",
876
+ "წ": "ts",
877
+ "ჭ": "ch",
878
+ "ხ": "kh",
879
+ "ჯ": "j",
880
+ "ჰ": "h",
881
+ // Greek
882
+ "α": "a",
883
+ "β": "v",
884
+ "γ": "g",
885
+ "δ": "d",
886
+ "ε": "e",
887
+ "ζ": "z",
888
+ "η": "i",
889
+ "θ": "th",
890
+ "ι": "i",
891
+ "κ": "k",
892
+ "λ": "l",
893
+ "μ": "m",
894
+ "ν": "n",
895
+ "ξ": "ks",
896
+ "ο": "o",
897
+ "π": "p",
898
+ "ρ": "r",
899
+ "σ": "s",
900
+ "τ": "t",
901
+ "υ": "y",
902
+ "φ": "f",
903
+ "χ": "x",
904
+ "ψ": "ps",
905
+ "ω": "o",
906
+ "ά": "a",
907
+ "έ": "e",
908
+ "ί": "i",
909
+ "ό": "o",
910
+ "ύ": "y",
911
+ "ή": "i",
912
+ "ώ": "o",
913
+ "ς": "s",
914
+ "ϊ": "i",
915
+ "ΰ": "y",
916
+ "ϋ": "y",
917
+ "ΐ": "i",
918
+ "Α": "A",
919
+ "Β": "B",
920
+ "Γ": "G",
921
+ "Δ": "D",
922
+ "Ε": "E",
923
+ "Ζ": "Z",
924
+ "Η": "I",
925
+ "Θ": "TH",
926
+ "Ι": "I",
927
+ "Κ": "K",
928
+ "Λ": "L",
929
+ "Μ": "M",
930
+ "Ν": "N",
931
+ "Ξ": "KS",
932
+ "Ο": "O",
933
+ "Π": "P",
934
+ "Ρ": "R",
935
+ "Σ": "S",
936
+ "Τ": "T",
937
+ "Υ": "Y",
938
+ "Φ": "F",
939
+ "Χ": "X",
940
+ "Ψ": "PS",
941
+ "Ω": "O",
942
+ "Ά": "A",
943
+ "Έ": "E",
944
+ "Ί": "I",
945
+ "Ό": "O",
946
+ "Ύ": "Y",
947
+ "Ή": "I",
948
+ "Ώ": "O",
949
+ "Ϊ": "I",
950
+ "Ϋ": "Y",
951
+ // Latvian
952
+ "ā": "a",
953
+ // 'č': 'c', // duplicate
954
+ "ē": "e",
955
+ "ģ": "g",
956
+ "ī": "i",
957
+ "ķ": "k",
958
+ "ļ": "l",
959
+ "ņ": "n",
960
+ // 'š': 's', // duplicate
961
+ "ū": "u",
962
+ // 'ž': 'z', // duplicate
963
+ "Ā": "A",
964
+ // 'Č': 'C', // duplicate
965
+ "Ē": "E",
966
+ "Ģ": "G",
967
+ "Ī": "I",
968
+ "Ķ": "k",
969
+ "Ļ": "L",
970
+ "Ņ": "N",
971
+ // 'Š': 'S', // duplicate
972
+ "Ū": "U",
973
+ // 'Ž': 'Z', // duplicate
974
+ // Macedonian
975
+ "Ќ": "Kj",
976
+ "ќ": "kj",
977
+ "Љ": "Lj",
978
+ "љ": "lj",
979
+ "Њ": "Nj",
980
+ "њ": "nj",
981
+ "Тс": "Ts",
982
+ "тс": "ts",
983
+ // Polish
984
+ "ą": "a",
985
+ "ć": "c",
986
+ "ę": "e",
987
+ "ł": "l",
988
+ "ń": "n",
989
+ // 'ó': 'o', // duplicate
990
+ "ś": "s",
991
+ "ź": "z",
992
+ "ż": "z",
993
+ "Ą": "A",
994
+ "Ć": "C",
995
+ "Ę": "E",
996
+ "Ł": "L",
997
+ "Ń": "N",
998
+ "Ś": "S",
999
+ "Ź": "Z",
1000
+ "Ż": "Z",
1001
+ // Ukranian
1002
+ "Є": "Ye",
1003
+ "І": "I",
1004
+ "Ї": "Yi",
1005
+ "Ґ": "G",
1006
+ "є": "ye",
1007
+ "і": "i",
1008
+ "ї": "yi",
1009
+ "ґ": "g",
1010
+ // Romanian
1011
+ "ă": "a",
1012
+ "Ă": "A",
1013
+ "ș": "s",
1014
+ "Ș": "S",
1015
+ // 'ş': 's', // duplicate
1016
+ // 'Ş': 'S', // duplicate
1017
+ "ț": "t",
1018
+ "Ț": "T",
1019
+ "ţ": "t",
1020
+ "Ţ": "T",
1021
+ // Russian https://en.wikipedia.org/wiki/Romanization_of_Russian
1022
+ // ICAO
1023
+ "а": "a",
1024
+ "б": "b",
1025
+ "в": "v",
1026
+ "г": "g",
1027
+ "д": "d",
1028
+ "е": "e",
1029
+ "ё": "yo",
1030
+ "ж": "zh",
1031
+ "з": "z",
1032
+ "и": "i",
1033
+ "й": "i",
1034
+ "к": "k",
1035
+ "л": "l",
1036
+ "м": "m",
1037
+ "н": "n",
1038
+ "о": "o",
1039
+ "п": "p",
1040
+ "р": "r",
1041
+ "с": "s",
1042
+ "т": "t",
1043
+ "у": "u",
1044
+ "ф": "f",
1045
+ "х": "kh",
1046
+ "ц": "c",
1047
+ "ч": "ch",
1048
+ "ш": "sh",
1049
+ "щ": "sh",
1050
+ "ъ": "",
1051
+ "ы": "y",
1052
+ "ь": "",
1053
+ "э": "e",
1054
+ "ю": "yu",
1055
+ "я": "ya",
1056
+ "А": "A",
1057
+ "Б": "B",
1058
+ "В": "V",
1059
+ "Г": "G",
1060
+ "Д": "D",
1061
+ "Е": "E",
1062
+ "Ё": "Yo",
1063
+ "Ж": "Zh",
1064
+ "З": "Z",
1065
+ "И": "I",
1066
+ "Й": "I",
1067
+ "К": "K",
1068
+ "Л": "L",
1069
+ "М": "M",
1070
+ "Н": "N",
1071
+ "О": "O",
1072
+ "П": "P",
1073
+ "Р": "R",
1074
+ "С": "S",
1075
+ "Т": "T",
1076
+ "У": "U",
1077
+ "Ф": "F",
1078
+ "Х": "Kh",
1079
+ "Ц": "C",
1080
+ "Ч": "Ch",
1081
+ "Ш": "Sh",
1082
+ "Щ": "Sh",
1083
+ "Ъ": "",
1084
+ "Ы": "Y",
1085
+ "Ь": "",
1086
+ "Э": "E",
1087
+ "Ю": "Yu",
1088
+ "Я": "Ya",
1089
+ // Serbian
1090
+ "ђ": "dj",
1091
+ "ј": "j",
1092
+ // 'љ': 'lj', // duplicate
1093
+ // 'њ': 'nj', // duplicate
1094
+ "ћ": "c",
1095
+ "џ": "dz",
1096
+ "Ђ": "Dj",
1097
+ "Ј": "j",
1098
+ // 'Љ': 'Lj', // duplicate
1099
+ // 'Њ': 'Nj', // duplicate
1100
+ "Ћ": "C",
1101
+ "Џ": "Dz",
1102
+ // Slovak
1103
+ "ľ": "l",
1104
+ "ĺ": "l",
1105
+ "ŕ": "r",
1106
+ "Ľ": "L",
1107
+ "Ĺ": "L",
1108
+ "Ŕ": "R",
1109
+ // Turkish
1110
+ "ş": "s",
1111
+ "Ş": "S",
1112
+ "ı": "i",
1113
+ "İ": "I",
1114
+ // 'ç': 'c', // duplicate
1115
+ // 'Ç': 'C', // duplicate
1116
+ // 'ü': 'u', // duplicate, see langCharMap
1117
+ // 'Ü': 'U', // duplicate, see langCharMap
1118
+ // 'ö': 'o', // duplicate, see langCharMap
1119
+ // 'Ö': 'O', // duplicate, see langCharMap
1120
+ "ğ": "g",
1121
+ "Ğ": "G",
1122
+ // Vietnamese
1123
+ "ả": "a",
1124
+ "Ả": "A",
1125
+ "ẳ": "a",
1126
+ "Ẳ": "A",
1127
+ "ẩ": "a",
1128
+ "Ẩ": "A",
1129
+ "đ": "d",
1130
+ "Đ": "D",
1131
+ "ẹ": "e",
1132
+ "Ẹ": "E",
1133
+ "ẽ": "e",
1134
+ "Ẽ": "E",
1135
+ "ẻ": "e",
1136
+ "Ẻ": "E",
1137
+ "ế": "e",
1138
+ "Ế": "E",
1139
+ "ề": "e",
1140
+ "Ề": "E",
1141
+ "ệ": "e",
1142
+ "Ệ": "E",
1143
+ "ễ": "e",
1144
+ "Ễ": "E",
1145
+ "ể": "e",
1146
+ "Ể": "E",
1147
+ "ỏ": "o",
1148
+ "ọ": "o",
1149
+ "Ọ": "o",
1150
+ "ố": "o",
1151
+ "Ố": "O",
1152
+ "ồ": "o",
1153
+ "Ồ": "O",
1154
+ "ổ": "o",
1155
+ "Ổ": "O",
1156
+ "ộ": "o",
1157
+ "Ộ": "O",
1158
+ "ỗ": "o",
1159
+ "Ỗ": "O",
1160
+ "ơ": "o",
1161
+ "Ơ": "O",
1162
+ "ớ": "o",
1163
+ "Ớ": "O",
1164
+ "ờ": "o",
1165
+ "Ờ": "O",
1166
+ "ợ": "o",
1167
+ "Ợ": "O",
1168
+ "ỡ": "o",
1169
+ "Ỡ": "O",
1170
+ "Ở": "o",
1171
+ "ở": "o",
1172
+ "ị": "i",
1173
+ "Ị": "I",
1174
+ "ĩ": "i",
1175
+ "Ĩ": "I",
1176
+ "ỉ": "i",
1177
+ "Ỉ": "i",
1178
+ "ủ": "u",
1179
+ "Ủ": "U",
1180
+ "ụ": "u",
1181
+ "Ụ": "U",
1182
+ "ũ": "u",
1183
+ "Ũ": "U",
1184
+ "ư": "u",
1185
+ "Ư": "U",
1186
+ "ứ": "u",
1187
+ "Ứ": "U",
1188
+ "ừ": "u",
1189
+ "Ừ": "U",
1190
+ "ự": "u",
1191
+ "Ự": "U",
1192
+ "ữ": "u",
1193
+ "Ữ": "U",
1194
+ "ử": "u",
1195
+ "Ử": "ư",
1196
+ "ỷ": "y",
1197
+ "Ỷ": "y",
1198
+ "ỳ": "y",
1199
+ "Ỳ": "Y",
1200
+ "ỵ": "y",
1201
+ "Ỵ": "Y",
1202
+ "ỹ": "y",
1203
+ "Ỹ": "Y",
1204
+ "ạ": "a",
1205
+ "Ạ": "A",
1206
+ "ấ": "a",
1207
+ "Ấ": "A",
1208
+ "ầ": "a",
1209
+ "Ầ": "A",
1210
+ "ậ": "a",
1211
+ "Ậ": "A",
1212
+ "ẫ": "a",
1213
+ "Ẫ": "A",
1214
+ // 'ă': 'a', // duplicate
1215
+ // 'Ă': 'A', // duplicate
1216
+ "ắ": "a",
1217
+ "Ắ": "A",
1218
+ "ằ": "a",
1219
+ "Ằ": "A",
1220
+ "ặ": "a",
1221
+ "Ặ": "A",
1222
+ "ẵ": "a",
1223
+ "Ẵ": "A",
1224
+ "⓪": "0",
1225
+ "①": "1",
1226
+ "②": "2",
1227
+ "③": "3",
1228
+ "④": "4",
1229
+ "⑤": "5",
1230
+ "⑥": "6",
1231
+ "⑦": "7",
1232
+ "⑧": "8",
1233
+ "⑨": "9",
1234
+ "⑩": "10",
1235
+ "⑪": "11",
1236
+ "⑫": "12",
1237
+ "⑬": "13",
1238
+ "⑭": "14",
1239
+ "⑮": "15",
1240
+ "⑯": "16",
1241
+ "⑰": "17",
1242
+ "⑱": "18",
1243
+ "⑲": "18",
1244
+ "⑳": "18",
1245
+ "⓵": "1",
1246
+ "⓶": "2",
1247
+ "⓷": "3",
1248
+ "⓸": "4",
1249
+ "⓹": "5",
1250
+ "⓺": "6",
1251
+ "⓻": "7",
1252
+ "⓼": "8",
1253
+ "⓽": "9",
1254
+ "⓾": "10",
1255
+ "⓿": "0",
1256
+ "⓫": "11",
1257
+ "⓬": "12",
1258
+ "⓭": "13",
1259
+ "⓮": "14",
1260
+ "⓯": "15",
1261
+ "⓰": "16",
1262
+ "⓱": "17",
1263
+ "⓲": "18",
1264
+ "⓳": "19",
1265
+ "⓴": "20",
1266
+ "Ⓐ": "A",
1267
+ "Ⓑ": "B",
1268
+ "Ⓒ": "C",
1269
+ "Ⓓ": "D",
1270
+ "Ⓔ": "E",
1271
+ "Ⓕ": "F",
1272
+ "Ⓖ": "G",
1273
+ "Ⓗ": "H",
1274
+ "Ⓘ": "I",
1275
+ "Ⓙ": "J",
1276
+ "Ⓚ": "K",
1277
+ "Ⓛ": "L",
1278
+ "Ⓜ": "M",
1279
+ "Ⓝ": "N",
1280
+ "Ⓞ": "O",
1281
+ "Ⓟ": "P",
1282
+ "Ⓠ": "Q",
1283
+ "Ⓡ": "R",
1284
+ "Ⓢ": "S",
1285
+ "Ⓣ": "T",
1286
+ "Ⓤ": "U",
1287
+ "Ⓥ": "V",
1288
+ "Ⓦ": "W",
1289
+ "Ⓧ": "X",
1290
+ "Ⓨ": "Y",
1291
+ "Ⓩ": "Z",
1292
+ "ⓐ": "a",
1293
+ "ⓑ": "b",
1294
+ "ⓒ": "c",
1295
+ "ⓓ": "d",
1296
+ "ⓔ": "e",
1297
+ "ⓕ": "f",
1298
+ "ⓖ": "g",
1299
+ "ⓗ": "h",
1300
+ "ⓘ": "i",
1301
+ "ⓙ": "j",
1302
+ "ⓚ": "k",
1303
+ "ⓛ": "l",
1304
+ "ⓜ": "m",
1305
+ "ⓝ": "n",
1306
+ "ⓞ": "o",
1307
+ "ⓟ": "p",
1308
+ "ⓠ": "q",
1309
+ "ⓡ": "r",
1310
+ "ⓢ": "s",
1311
+ "ⓣ": "t",
1312
+ "ⓤ": "u",
1313
+ "ⓦ": "v",
1314
+ "ⓥ": "w",
1315
+ "ⓧ": "x",
1316
+ "ⓨ": "y",
1317
+ "ⓩ": "z",
1318
+ // symbols
1319
+ "“": '"',
1320
+ "”": '"',
1321
+ "‘": "'",
1322
+ "’": "'",
1323
+ "∂": "d",
1324
+ "ƒ": "f",
1325
+ "™": "(TM)",
1326
+ "©": "(C)",
1327
+ "œ": "oe",
1328
+ "Œ": "OE",
1329
+ "®": "(R)",
1330
+ "†": "+",
1331
+ "℠": "(SM)",
1332
+ "…": "...",
1333
+ "˚": "o",
1334
+ "º": "o",
1335
+ "ª": "a",
1336
+ "•": "*",
1337
+ "၊": ",",
1338
+ "။": ".",
1339
+ // currency
1340
+ "$": "USD",
1341
+ "€": "EUR",
1342
+ "₢": "BRN",
1343
+ "₣": "FRF",
1344
+ "£": "GBP",
1345
+ "₤": "ITL",
1346
+ "₦": "NGN",
1347
+ "₧": "ESP",
1348
+ "₩": "KRW",
1349
+ "₪": "ILS",
1350
+ "₫": "VND",
1351
+ "₭": "LAK",
1352
+ "₮": "MNT",
1353
+ "₯": "GRD",
1354
+ "₱": "ARS",
1355
+ "₲": "PYG",
1356
+ "₳": "ARA",
1357
+ "₴": "UAH",
1358
+ "₵": "GHS",
1359
+ "¢": "cent",
1360
+ "¥": "CNY",
1361
+ "元": "CNY",
1362
+ "円": "YEN",
1363
+ "﷼": "IRR",
1364
+ "₠": "EWE",
1365
+ "฿": "THB",
1366
+ "₨": "INR",
1367
+ "₹": "INR",
1368
+ "₰": "PF",
1369
+ "₺": "TRY",
1370
+ "؋": "AFN",
1371
+ "₼": "AZN",
1372
+ "лв": "BGN",
1373
+ "៛": "KHR",
1374
+ "₡": "CRC",
1375
+ "₸": "KZT",
1376
+ "ден": "MKD",
1377
+ "zł": "PLN",
1378
+ "₽": "RUB",
1379
+ "₾": "GEL"
1380
+ };
1381
+ var lookAheadCharArray = [
1382
+ // burmese
1383
+ "်",
1384
+ // Dhivehi
1385
+ "ް"
1386
+ ];
1387
+ var diatricMap = {
1388
+ // Burmese
1389
+ // dependent vowels
1390
+ "ာ": "a",
1391
+ "ါ": "a",
1392
+ "ေ": "e",
1393
+ "ဲ": "e",
1394
+ "ိ": "i",
1395
+ "ီ": "i",
1396
+ "ို": "o",
1397
+ "ု": "u",
1398
+ "ူ": "u",
1399
+ "ေါင်": "aung",
1400
+ "ော": "aw",
1401
+ "ော်": "aw",
1402
+ "ေါ": "aw",
1403
+ "ေါ်": "aw",
1404
+ "်": "်",
1405
+ // this is special case but the character will be converted to latin in the code
1406
+ "က်": "et",
1407
+ "ိုက်": "aik",
1408
+ "ောက်": "auk",
1409
+ "င်": "in",
1410
+ "ိုင်": "aing",
1411
+ "ောင်": "aung",
1412
+ "စ်": "it",
1413
+ "ည်": "i",
1414
+ "တ်": "at",
1415
+ "ိတ်": "eik",
1416
+ "ုတ်": "ok",
1417
+ "ွတ်": "ut",
1418
+ "ေတ်": "it",
1419
+ "ဒ်": "d",
1420
+ "ိုဒ်": "ok",
1421
+ "ုဒ်": "ait",
1422
+ "န်": "an",
1423
+ "ာန်": "an",
1424
+ "ိန်": "ein",
1425
+ "ုန်": "on",
1426
+ "ွန်": "un",
1427
+ "ပ်": "at",
1428
+ "ိပ်": "eik",
1429
+ "ုပ်": "ok",
1430
+ "ွပ်": "ut",
1431
+ "န်ုပ်": "nub",
1432
+ "မ်": "an",
1433
+ "ိမ်": "ein",
1434
+ "ုမ်": "on",
1435
+ "ွမ်": "un",
1436
+ "ယ်": "e",
1437
+ "ိုလ်": "ol",
1438
+ "ဉ်": "in",
1439
+ "ံ": "an",
1440
+ "ိံ": "ein",
1441
+ "ုံ": "on",
1442
+ // Dhivehi
1443
+ "ައް": "ah",
1444
+ "ަށް": "ah"
1445
+ };
1446
+ var langCharMap = {
1447
+ "en": {},
1448
+ // default language
1449
+ "az": {
1450
+ // Azerbaijani
1451
+ "ç": "c",
1452
+ "ə": "e",
1453
+ "ğ": "g",
1454
+ "ı": "i",
1455
+ "ö": "o",
1456
+ "ş": "s",
1457
+ "ü": "u",
1458
+ "Ç": "C",
1459
+ "Ə": "E",
1460
+ "Ğ": "G",
1461
+ "İ": "I",
1462
+ "Ö": "O",
1463
+ "Ş": "S",
1464
+ "Ü": "U"
1465
+ },
1466
+ "cs": {
1467
+ // Czech
1468
+ "č": "c",
1469
+ "ď": "d",
1470
+ "ě": "e",
1471
+ "ň": "n",
1472
+ "ř": "r",
1473
+ "š": "s",
1474
+ "ť": "t",
1475
+ "ů": "u",
1476
+ "ž": "z",
1477
+ "Č": "C",
1478
+ "Ď": "D",
1479
+ "Ě": "E",
1480
+ "Ň": "N",
1481
+ "Ř": "R",
1482
+ "Š": "S",
1483
+ "Ť": "T",
1484
+ "Ů": "U",
1485
+ "Ž": "Z"
1486
+ },
1487
+ "fi": {
1488
+ // Finnish
1489
+ // 'å': 'a', duplicate see charMap/latin
1490
+ // 'Å': 'A', duplicate see charMap/latin
1491
+ "ä": "a",
1492
+ // ok
1493
+ "Ä": "A",
1494
+ // ok
1495
+ "ö": "o",
1496
+ // ok
1497
+ "Ö": "O"
1498
+ // ok
1499
+ },
1500
+ "hu": {
1501
+ // Hungarian
1502
+ "ä": "a",
1503
+ // ok
1504
+ "Ä": "A",
1505
+ // ok
1506
+ // 'á': 'a', duplicate see charMap/latin
1507
+ // 'Á': 'A', duplicate see charMap/latin
1508
+ "ö": "o",
1509
+ // ok
1510
+ "Ö": "O",
1511
+ // ok
1512
+ // 'ő': 'o', duplicate see charMap/latin
1513
+ // 'Ő': 'O', duplicate see charMap/latin
1514
+ "ü": "u",
1515
+ "Ü": "U",
1516
+ "ű": "u",
1517
+ "Ű": "U"
1518
+ },
1519
+ "lt": {
1520
+ // Lithuanian
1521
+ "ą": "a",
1522
+ "č": "c",
1523
+ "ę": "e",
1524
+ "ė": "e",
1525
+ "į": "i",
1526
+ "š": "s",
1527
+ "ų": "u",
1528
+ "ū": "u",
1529
+ "ž": "z",
1530
+ "Ą": "A",
1531
+ "Č": "C",
1532
+ "Ę": "E",
1533
+ "Ė": "E",
1534
+ "Į": "I",
1535
+ "Š": "S",
1536
+ "Ų": "U",
1537
+ "Ū": "U"
1538
+ },
1539
+ "lv": {
1540
+ // Latvian
1541
+ "ā": "a",
1542
+ "č": "c",
1543
+ "ē": "e",
1544
+ "ģ": "g",
1545
+ "ī": "i",
1546
+ "ķ": "k",
1547
+ "ļ": "l",
1548
+ "ņ": "n",
1549
+ "š": "s",
1550
+ "ū": "u",
1551
+ "ž": "z",
1552
+ "Ā": "A",
1553
+ "Č": "C",
1554
+ "Ē": "E",
1555
+ "Ģ": "G",
1556
+ "Ī": "i",
1557
+ "Ķ": "k",
1558
+ "Ļ": "L",
1559
+ "Ņ": "N",
1560
+ "Š": "S",
1561
+ "Ū": "u",
1562
+ "Ž": "Z"
1563
+ },
1564
+ "pl": {
1565
+ // Polish
1566
+ "ą": "a",
1567
+ "ć": "c",
1568
+ "ę": "e",
1569
+ "ł": "l",
1570
+ "ń": "n",
1571
+ "ó": "o",
1572
+ "ś": "s",
1573
+ "ź": "z",
1574
+ "ż": "z",
1575
+ "Ą": "A",
1576
+ "Ć": "C",
1577
+ "Ę": "e",
1578
+ "Ł": "L",
1579
+ "Ń": "N",
1580
+ "Ó": "O",
1581
+ "Ś": "S",
1582
+ "Ź": "Z",
1583
+ "Ż": "Z"
1584
+ },
1585
+ "sv": {
1586
+ // Swedish
1587
+ // 'å': 'a', duplicate see charMap/latin
1588
+ // 'Å': 'A', duplicate see charMap/latin
1589
+ "ä": "a",
1590
+ // ok
1591
+ "Ä": "A",
1592
+ // ok
1593
+ "ö": "o",
1594
+ // ok
1595
+ "Ö": "O"
1596
+ // ok
1597
+ },
1598
+ "sk": {
1599
+ // Slovak
1600
+ "ä": "a",
1601
+ "Ä": "A"
1602
+ },
1603
+ "sr": {
1604
+ // Serbian
1605
+ "љ": "lj",
1606
+ "њ": "nj",
1607
+ "Љ": "Lj",
1608
+ "Њ": "Nj",
1609
+ "đ": "dj",
1610
+ "Đ": "Dj"
1611
+ },
1612
+ "tr": {
1613
+ // Turkish
1614
+ "Ü": "U",
1615
+ "Ö": "O",
1616
+ "ü": "u",
1617
+ "ö": "o"
1618
+ }
1619
+ };
1620
+ var symbolMap = {
1621
+ "ar": {
1622
+ "∆": "delta",
1623
+ "∞": "la-nihaya",
1624
+ "♥": "hob",
1625
+ "&": "wa",
1626
+ "|": "aw",
1627
+ "<": "aqal-men",
1628
+ ">": "akbar-men",
1629
+ "∑": "majmou",
1630
+ "¤": "omla"
1631
+ },
1632
+ "az": {},
1633
+ "ca": {
1634
+ "∆": "delta",
1635
+ "∞": "infinit",
1636
+ "♥": "amor",
1637
+ "&": "i",
1638
+ "|": "o",
1639
+ "<": "menys que",
1640
+ ">": "mes que",
1641
+ "∑": "suma dels",
1642
+ "¤": "moneda"
1643
+ },
1644
+ "cs": {
1645
+ "∆": "delta",
1646
+ "∞": "nekonecno",
1647
+ "♥": "laska",
1648
+ "&": "a",
1649
+ "|": "nebo",
1650
+ "<": "mensi nez",
1651
+ ">": "vetsi nez",
1652
+ "∑": "soucet",
1653
+ "¤": "mena"
1654
+ },
1655
+ "de": {
1656
+ "∆": "delta",
1657
+ "∞": "unendlich",
1658
+ "♥": "Liebe",
1659
+ "&": "und",
1660
+ "|": "oder",
1661
+ "<": "kleiner als",
1662
+ ">": "groesser als",
1663
+ "∑": "Summe von",
1664
+ "¤": "Waehrung"
1665
+ },
1666
+ "dv": {
1667
+ "∆": "delta",
1668
+ "∞": "kolunulaa",
1669
+ "♥": "loabi",
1670
+ "&": "aai",
1671
+ "|": "noonee",
1672
+ "<": "ah vure kuda",
1673
+ ">": "ah vure bodu",
1674
+ "∑": "jumula",
1675
+ "¤": "faisaa"
1676
+ },
1677
+ "en": {
1678
+ "∆": "delta",
1679
+ "∞": "infinity",
1680
+ "♥": "love",
1681
+ "&": "and",
1682
+ "|": "or",
1683
+ "<": "less than",
1684
+ ">": "greater than",
1685
+ "∑": "sum",
1686
+ "¤": "currency"
1687
+ },
1688
+ "es": {
1689
+ "∆": "delta",
1690
+ "∞": "infinito",
1691
+ "♥": "amor",
1692
+ "&": "y",
1693
+ "|": "u",
1694
+ "<": "menos que",
1695
+ ">": "mas que",
1696
+ "∑": "suma de los",
1697
+ "¤": "moneda"
1698
+ },
1699
+ "fa": {
1700
+ "∆": "delta",
1701
+ "∞": "bi-nahayat",
1702
+ "♥": "eshgh",
1703
+ "&": "va",
1704
+ "|": "ya",
1705
+ "<": "kamtar-az",
1706
+ ">": "bishtar-az",
1707
+ "∑": "majmooe",
1708
+ "¤": "vahed"
1709
+ },
1710
+ "fi": {
1711
+ "∆": "delta",
1712
+ "∞": "aarettomyys",
1713
+ "♥": "rakkaus",
1714
+ "&": "ja",
1715
+ "|": "tai",
1716
+ "<": "pienempi kuin",
1717
+ ">": "suurempi kuin",
1718
+ "∑": "summa",
1719
+ "¤": "valuutta"
1720
+ },
1721
+ "fr": {
1722
+ "∆": "delta",
1723
+ "∞": "infiniment",
1724
+ "♥": "Amour",
1725
+ "&": "et",
1726
+ "|": "ou",
1727
+ "<": "moins que",
1728
+ ">": "superieure a",
1729
+ "∑": "somme des",
1730
+ "¤": "monnaie"
1731
+ },
1732
+ "ge": {
1733
+ "∆": "delta",
1734
+ "∞": "usasruloba",
1735
+ "♥": "siqvaruli",
1736
+ "&": "da",
1737
+ "|": "an",
1738
+ "<": "naklebi",
1739
+ ">": "meti",
1740
+ "∑": "jami",
1741
+ "¤": "valuta"
1742
+ },
1743
+ "gr": {},
1744
+ "hu": {
1745
+ "∆": "delta",
1746
+ "∞": "vegtelen",
1747
+ "♥": "szerelem",
1748
+ "&": "es",
1749
+ "|": "vagy",
1750
+ "<": "kisebb mint",
1751
+ ">": "nagyobb mint",
1752
+ "∑": "szumma",
1753
+ "¤": "penznem"
1754
+ },
1755
+ "it": {
1756
+ "∆": "delta",
1757
+ "∞": "infinito",
1758
+ "♥": "amore",
1759
+ "&": "e",
1760
+ "|": "o",
1761
+ "<": "minore di",
1762
+ ">": "maggiore di",
1763
+ "∑": "somma",
1764
+ "¤": "moneta"
1765
+ },
1766
+ "lt": {
1767
+ "∆": "delta",
1768
+ "∞": "begalybe",
1769
+ "♥": "meile",
1770
+ "&": "ir",
1771
+ "|": "ar",
1772
+ "<": "maziau nei",
1773
+ ">": "daugiau nei",
1774
+ "∑": "suma",
1775
+ "¤": "valiuta"
1776
+ },
1777
+ "lv": {
1778
+ "∆": "delta",
1779
+ "∞": "bezgaliba",
1780
+ "♥": "milestiba",
1781
+ "&": "un",
1782
+ "|": "vai",
1783
+ "<": "mazak neka",
1784
+ ">": "lielaks neka",
1785
+ "∑": "summa",
1786
+ "¤": "valuta"
1787
+ },
1788
+ "my": {
1789
+ "∆": "kwahkhyaet",
1790
+ "∞": "asaonasme",
1791
+ "♥": "akhyait",
1792
+ "&": "nhin",
1793
+ "|": "tho",
1794
+ "<": "ngethaw",
1795
+ ">": "kyithaw",
1796
+ "∑": "paungld",
1797
+ "¤": "ngwekye"
1798
+ },
1799
+ "mk": {},
1800
+ "nl": {
1801
+ "∆": "delta",
1802
+ "∞": "oneindig",
1803
+ "♥": "liefde",
1804
+ "&": "en",
1805
+ "|": "of",
1806
+ "<": "kleiner dan",
1807
+ ">": "groter dan",
1808
+ "∑": "som",
1809
+ "¤": "valuta"
1810
+ },
1811
+ "pl": {
1812
+ "∆": "delta",
1813
+ "∞": "nieskonczonosc",
1814
+ "♥": "milosc",
1815
+ "&": "i",
1816
+ "|": "lub",
1817
+ "<": "mniejsze niz",
1818
+ ">": "wieksze niz",
1819
+ "∑": "suma",
1820
+ "¤": "waluta"
1821
+ },
1822
+ "pt": {
1823
+ "∆": "delta",
1824
+ "∞": "infinito",
1825
+ "♥": "amor",
1826
+ "&": "e",
1827
+ "|": "ou",
1828
+ "<": "menor que",
1829
+ ">": "maior que",
1830
+ "∑": "soma",
1831
+ "¤": "moeda"
1832
+ },
1833
+ "ro": {
1834
+ "∆": "delta",
1835
+ "∞": "infinit",
1836
+ "♥": "dragoste",
1837
+ "&": "si",
1838
+ "|": "sau",
1839
+ "<": "mai mic ca",
1840
+ ">": "mai mare ca",
1841
+ "∑": "suma",
1842
+ "¤": "valuta"
1843
+ },
1844
+ "ru": {
1845
+ "∆": "delta",
1846
+ "∞": "beskonechno",
1847
+ "♥": "lubov",
1848
+ "&": "i",
1849
+ "|": "ili",
1850
+ "<": "menshe",
1851
+ ">": "bolshe",
1852
+ "∑": "summa",
1853
+ "¤": "valjuta"
1854
+ },
1855
+ "sk": {
1856
+ "∆": "delta",
1857
+ "∞": "nekonecno",
1858
+ "♥": "laska",
1859
+ "&": "a",
1860
+ "|": "alebo",
1861
+ "<": "menej ako",
1862
+ ">": "viac ako",
1863
+ "∑": "sucet",
1864
+ "¤": "mena"
1865
+ },
1866
+ "sr": {},
1867
+ "tr": {
1868
+ "∆": "delta",
1869
+ "∞": "sonsuzluk",
1870
+ "♥": "ask",
1871
+ "&": "ve",
1872
+ "|": "veya",
1873
+ "<": "kucuktur",
1874
+ ">": "buyuktur",
1875
+ "∑": "toplam",
1876
+ "¤": "para birimi"
1877
+ },
1878
+ "uk": {
1879
+ "∆": "delta",
1880
+ "∞": "bezkinechnist",
1881
+ "♥": "lubov",
1882
+ "&": "i",
1883
+ "|": "abo",
1884
+ "<": "menshe",
1885
+ ">": "bilshe",
1886
+ "∑": "suma",
1887
+ "¤": "valjuta"
1888
+ },
1889
+ "vn": {
1890
+ "∆": "delta",
1891
+ "∞": "vo cuc",
1892
+ "♥": "yeu",
1893
+ "&": "va",
1894
+ "|": "hoac",
1895
+ "<": "nho hon",
1896
+ ">": "lon hon",
1897
+ "∑": "tong",
1898
+ "¤": "tien te"
1899
+ }
1900
+ };
1901
+ var uricChars = [";", "?", ":", "@", "&", "=", "+", "$", ",", "/"].join("");
1902
+ var uricNoSlashChars = [";", "?", ":", "@", "&", "=", "+", "$", ","].join("");
1903
+ var markChars = [".", "!", "~", "*", "'", "(", ")"].join("");
1904
+ var getSlug = function getSlug2(input, opts) {
1905
+ var separator = "-";
1906
+ var result = "";
1907
+ var diatricString = "";
1908
+ var convertSymbols = true;
1909
+ var customReplacements = {};
1910
+ var maintainCase;
1911
+ var titleCase;
1912
+ var truncate;
1913
+ var uricFlag;
1914
+ var uricNoSlashFlag;
1915
+ var markFlag;
1916
+ var symbol;
1917
+ var langChar;
1918
+ var lucky;
1919
+ var i;
1920
+ var ch;
1921
+ var l;
1922
+ var lastCharWasSymbol;
1923
+ var lastCharWasDiatric;
1924
+ var allowedChars = "";
1925
+ if (typeof input !== "string") {
1926
+ return "";
1927
+ }
1928
+ if (typeof opts === "string") {
1929
+ separator = opts;
1930
+ }
1931
+ symbol = symbolMap.en;
1932
+ langChar = langCharMap.en;
1933
+ if (typeof opts === "object") {
1934
+ maintainCase = opts.maintainCase || false;
1935
+ customReplacements = opts.custom && typeof opts.custom === "object" ? opts.custom : customReplacements;
1936
+ truncate = +opts.truncate > 1 && opts.truncate || false;
1937
+ uricFlag = opts.uric || false;
1938
+ uricNoSlashFlag = opts.uricNoSlash || false;
1939
+ markFlag = opts.mark || false;
1940
+ convertSymbols = opts.symbols === false || opts.lang === false ? false : true;
1941
+ separator = opts.separator || separator;
1942
+ if (uricFlag) {
1943
+ allowedChars += uricChars;
1944
+ }
1945
+ if (uricNoSlashFlag) {
1946
+ allowedChars += uricNoSlashChars;
1947
+ }
1948
+ if (markFlag) {
1949
+ allowedChars += markChars;
1950
+ }
1951
+ symbol = opts.lang && symbolMap[opts.lang] && convertSymbols ? symbolMap[opts.lang] : convertSymbols ? symbolMap.en : {};
1952
+ langChar = opts.lang && langCharMap[opts.lang] ? langCharMap[opts.lang] : opts.lang === false || opts.lang === true ? {} : langCharMap.en;
1953
+ if (opts.titleCase && typeof opts.titleCase.length === "number" && Array.prototype.toString.call(opts.titleCase)) {
1954
+ opts.titleCase.forEach(function(v) {
1955
+ customReplacements[v + ""] = v + "";
1956
+ });
1957
+ titleCase = true;
1958
+ } else {
1959
+ titleCase = !!opts.titleCase;
1960
+ }
1961
+ if (opts.custom && typeof opts.custom.length === "number" && Array.prototype.toString.call(opts.custom)) {
1962
+ opts.custom.forEach(function(v) {
1963
+ customReplacements[v + ""] = v + "";
1964
+ });
1965
+ }
1966
+ Object.keys(customReplacements).forEach(function(v) {
1967
+ var r;
1968
+ if (v.length > 1) {
1969
+ r = new RegExp("\\b" + escapeChars(v) + "\\b", "gi");
1970
+ } else {
1971
+ r = new RegExp(escapeChars(v), "gi");
1972
+ }
1973
+ input = input.replace(r, customReplacements[v]);
1974
+ });
1975
+ for (ch in customReplacements) {
1976
+ allowedChars += ch;
1977
+ }
1978
+ }
1979
+ allowedChars += separator;
1980
+ allowedChars = escapeChars(allowedChars);
1981
+ input = input.replace(/(^\s+|\s+$)/g, "");
1982
+ lastCharWasSymbol = false;
1983
+ lastCharWasDiatric = false;
1984
+ for (i = 0, l = input.length; i < l; i++) {
1985
+ ch = input[i];
1986
+ if (isReplacedCustomChar(ch, customReplacements)) {
1987
+ lastCharWasSymbol = false;
1988
+ } else if (langChar[ch]) {
1989
+ ch = lastCharWasSymbol && langChar[ch].match(/[A-Za-z0-9]/) ? " " + langChar[ch] : langChar[ch];
1990
+ lastCharWasSymbol = false;
1991
+ } else if (ch in charMap) {
1992
+ if (i + 1 < l && lookAheadCharArray.indexOf(input[i + 1]) >= 0) {
1993
+ diatricString += ch;
1994
+ ch = "";
1995
+ } else if (lastCharWasDiatric === true) {
1996
+ ch = diatricMap[diatricString] + charMap[ch];
1997
+ diatricString = "";
1998
+ } else {
1999
+ ch = lastCharWasSymbol && charMap[ch].match(/[A-Za-z0-9]/) ? " " + charMap[ch] : charMap[ch];
2000
+ }
2001
+ lastCharWasSymbol = false;
2002
+ lastCharWasDiatric = false;
2003
+ } else if (ch in diatricMap) {
2004
+ diatricString += ch;
2005
+ ch = "";
2006
+ if (i === l - 1) {
2007
+ ch = diatricMap[diatricString];
2008
+ }
2009
+ lastCharWasDiatric = true;
2010
+ } else if (
2011
+ // process symbol chars
2012
+ symbol[ch] && !(uricFlag && uricChars.indexOf(ch) !== -1) && !(uricNoSlashFlag && uricNoSlashChars.indexOf(ch) !== -1)
2013
+ ) {
2014
+ ch = lastCharWasSymbol || result.substr(-1).match(/[A-Za-z0-9]/) ? separator + symbol[ch] : symbol[ch];
2015
+ ch += input[i + 1] !== void 0 && input[i + 1].match(/[A-Za-z0-9]/) ? separator : "";
2016
+ lastCharWasSymbol = true;
2017
+ } else {
2018
+ if (lastCharWasDiatric === true) {
2019
+ ch = diatricMap[diatricString] + ch;
2020
+ diatricString = "";
2021
+ lastCharWasDiatric = false;
2022
+ } else if (lastCharWasSymbol && (/[A-Za-z0-9]/.test(ch) || result.substr(-1).match(/A-Za-z0-9]/))) {
2023
+ ch = " " + ch;
2024
+ }
2025
+ lastCharWasSymbol = false;
2026
+ }
2027
+ result += ch.replace(new RegExp("[^\\w\\s" + allowedChars + "_-]", "g"), separator);
2028
+ }
2029
+ if (titleCase) {
2030
+ result = result.replace(/(\w)(\S*)/g, function(_, i2, r) {
2031
+ var j = i2.toUpperCase() + (r !== null ? r : "");
2032
+ return Object.keys(customReplacements).indexOf(j.toLowerCase()) < 0 ? j : j.toLowerCase();
2033
+ });
2034
+ }
2035
+ result = result.replace(/\s+/g, separator).replace(new RegExp("\\" + separator + "+", "g"), separator).replace(new RegExp("(^\\" + separator + "+|\\" + separator + "+$)", "g"), "");
2036
+ if (truncate && result.length > truncate) {
2037
+ lucky = result.charAt(truncate) === separator;
2038
+ result = result.slice(0, truncate);
2039
+ if (!lucky) {
2040
+ result = result.slice(0, result.lastIndexOf(separator));
2041
+ }
2042
+ }
2043
+ if (!maintainCase && !titleCase) {
2044
+ result = result.toLowerCase();
2045
+ }
2046
+ return result;
2047
+ };
2048
+ var createSlug = function createSlug2(opts) {
2049
+ return function getSlugWithConfig(input) {
2050
+ return getSlug(input, opts);
2051
+ };
2052
+ };
2053
+ var escapeChars = function escapeChars2(input) {
2054
+ return input.replace(/[-\\^$*+?.()|[\]{}\/]/g, "\\$&");
2055
+ };
2056
+ var isReplacedCustomChar = function(ch, customReplacements) {
2057
+ for (var c in customReplacements) {
2058
+ if (customReplacements[c] === ch) {
2059
+ return true;
2060
+ }
2061
+ }
2062
+ };
2063
+ if (typeof module !== "undefined" && module.exports) {
2064
+ module.exports = getSlug;
2065
+ module.exports.createSlug = createSlug;
2066
+ } else if (typeof define !== "undefined" && define.amd) {
2067
+ define([], function() {
2068
+ return getSlug;
2069
+ });
2070
+ } else {
2071
+ try {
2072
+ if (root.getSlug || root.createSlug) {
2073
+ throw "speakingurl: globals exists /(getSlug|createSlug)/";
2074
+ } else {
2075
+ root.getSlug = getSlug;
2076
+ root.createSlug = createSlug;
2077
+ }
2078
+ } catch (e) {
2079
+ }
2080
+ }
2081
+ })(exports);
2082
+ }
2083
+ });
2084
+ var require_speakingurl2 = __commonJS2({
2085
+ "../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js"(exports, module) {
2086
+ "use strict";
2087
+ init_esm_shims2();
2088
+ module.exports = require_speakingurl();
2089
+ }
2090
+ });
2091
+ init_esm_shims2();
2092
+ init_esm_shims2();
2093
+ init_esm_shims2();
2094
+ init_esm_shims2();
2095
+ init_esm_shims2();
2096
+ init_esm_shims2();
2097
+ init_esm_shims2();
2098
+ init_esm_shims2();
2099
+ init_esm_shims2();
2100
+ init_esm_shims2();
2101
+ var _a;
2102
+ var _b;
2103
+ var devtoolsHooks = (_b = (_a = target).__VUE_DEVTOOLS_HOOK) != null ? _b : _a.__VUE_DEVTOOLS_HOOK = createHooks();
2104
+ var on = {
2105
+ vueAppInit(fn) {
2106
+ devtoolsHooks.hook("app:init", fn);
2107
+ },
2108
+ vueAppConnected(fn) {
2109
+ devtoolsHooks.hook("app:connected", fn);
2110
+ },
2111
+ componentAdded(fn) {
2112
+ return devtoolsHooks.hook("component:added", fn);
2113
+ },
2114
+ componentUpdated(fn) {
2115
+ return devtoolsHooks.hook("component:updated", fn);
2116
+ },
2117
+ componentRemoved(fn) {
2118
+ return devtoolsHooks.hook("component:removed", fn);
2119
+ },
2120
+ setupDevtoolsPlugin(fn) {
2121
+ devtoolsHooks.hook("devtools-plugin:setup", fn);
2122
+ }
2123
+ };
2124
+ var hook = {
2125
+ on,
2126
+ setupDevToolsPlugin(pluginDescriptor, setupFn) {
2127
+ return devtoolsHooks.callHook("devtools-plugin:setup", pluginDescriptor, setupFn);
2128
+ }
2129
+ };
2130
+ init_esm_shims2();
2131
+ init_esm_shims2();
2132
+ init_esm_shims2();
2133
+ init_esm_shims2();
2134
+ init_esm_shims2();
2135
+ init_esm_shims2();
2136
+ init_esm_shims2();
2137
+ var import_speakingurl = __toESM2(require_speakingurl2(), 1);
2138
+ init_esm_shims2();
2139
+ init_esm_shims2();
2140
+ init_esm_shims2();
2141
+ var _a2;
2142
+ var _b2;
2143
+ var apiHooks = (_b2 = (_a2 = target).__VUE_DEVTOOLS_API_HOOK) != null ? _b2 : _a2.__VUE_DEVTOOLS_API_HOOK = createHooks();
2144
+ function getRoutes(router) {
2145
+ const routesMap = /* @__PURE__ */ new Map();
2146
+ return ((router == null ? void 0 : router.getRoutes()) || []).filter((i) => !routesMap.has(i.path) && routesMap.set(i.path, 1));
2147
+ }
2148
+ function filterRoutes(routes) {
2149
+ return routes.map((item) => {
2150
+ let { path, name, children } = item;
2151
+ if (children == null ? void 0 : children.length)
2152
+ children = filterRoutes(children);
2153
+ return {
2154
+ path,
2155
+ name,
2156
+ children
2157
+ };
2158
+ });
2159
+ }
2160
+ function filterCurrentRoute(route) {
2161
+ if (route) {
2162
+ const { fullPath, hash, href, path, name, matched, params, query } = route;
2163
+ return {
2164
+ fullPath,
2165
+ hash,
2166
+ href,
2167
+ path,
2168
+ name,
2169
+ params,
2170
+ query,
2171
+ matched: filterRoutes(matched)
2172
+ };
2173
+ }
2174
+ return route;
2175
+ }
2176
+ function normalizeRouterInfo(appRecord) {
2177
+ function init() {
2178
+ var _a10;
2179
+ const router = (_a10 = appRecord.app) == null ? void 0 : _a10.config.globalProperties.$router;
2180
+ const currentRoute = filterCurrentRoute(router == null ? void 0 : router.currentRoute.value);
2181
+ const routes = filterRoutes(getRoutes(router));
2182
+ const c = console.warn;
2183
+ console.warn = () => {
2184
+ };
2185
+ target[ROUTER_INFO_KEY] = {
2186
+ currentRoute: currentRoute ? deepClone(currentRoute) : {},
2187
+ routes: deepClone(routes)
2188
+ };
2189
+ target[ROUTER_KEY] = router;
2190
+ console.warn = c;
2191
+ }
2192
+ init();
2193
+ hook.on.componentUpdated(debounce(() => {
2194
+ init();
2195
+ apiHooks.callHook("router-info:updated", target[ROUTER_INFO_KEY]);
2196
+ }, 200));
2197
+ }
2198
+ function setupDevToolsPlugin(pluginDescriptor, setupFn) {
2199
+ return hook.setupDevToolsPlugin(pluginDescriptor, setupFn);
2200
+ }
2201
+ init_esm_shims2();
2202
+ init_esm_shims2();
2203
+ init_esm_shims2();
2204
+ init_esm_shims2();
2205
+ init_esm_shims2();
2206
+ init_esm_shims2();
2207
+ init_esm_shims2();
2208
+ init_esm_shims2();
2209
+ var StateEditor = class {
2210
+ constructor() {
2211
+ this.refEditor = new RefStateEditor();
2212
+ }
2213
+ set(object, path, value, cb) {
2214
+ const sections = Array.isArray(path) ? path : path.split(".");
2215
+ const markRef = false;
2216
+ while (sections.length > 1) {
2217
+ const section = sections.shift();
2218
+ if (object instanceof Map)
2219
+ object = object.get(section);
2220
+ if (object instanceof Set)
2221
+ object = Array.from(object.values())[section];
2222
+ else
2223
+ object = object[section];
2224
+ if (this.refEditor.isRef(object))
2225
+ object = this.refEditor.get(object);
2226
+ }
2227
+ const field = sections[0];
2228
+ const item = this.refEditor.get(object)[field];
2229
+ if (cb) {
2230
+ cb(object, field, value);
2231
+ } else {
2232
+ if (this.refEditor.isRef(item))
2233
+ this.refEditor.set(item, value);
2234
+ else if (markRef)
2235
+ object[field] = value;
2236
+ else
2237
+ object[field] = value;
2238
+ }
2239
+ }
2240
+ get(object, path) {
2241
+ const sections = Array.isArray(path) ? path : path.split(".");
2242
+ for (let i = 0; i < sections.length; i++) {
2243
+ if (object instanceof Map)
2244
+ object = object.get(sections[i]);
2245
+ else
2246
+ object = object[sections[i]];
2247
+ if (this.refEditor.isRef(object))
2248
+ object = this.refEditor.get(object);
2249
+ if (!object)
2250
+ return void 0;
2251
+ }
2252
+ return object;
2253
+ }
2254
+ has(object, path, parent = false) {
2255
+ if (typeof object === "undefined")
2256
+ return false;
2257
+ const sections = Array.isArray(path) ? path.slice() : path.split(".");
2258
+ const size = !parent ? 1 : 2;
2259
+ while (object && sections.length > size) {
2260
+ const section = sections.shift();
2261
+ object = object[section];
2262
+ if (this.refEditor.isRef(object))
2263
+ object = this.refEditor.get(object);
2264
+ }
2265
+ return object != null && Object.prototype.hasOwnProperty.call(object, sections[0]);
2266
+ }
2267
+ createDefaultSetCallback(state) {
2268
+ return (object, field, value) => {
2269
+ if (state.remove || state.newKey) {
2270
+ if (Array.isArray(object))
2271
+ object.splice(field, 1);
2272
+ else if (toRaw(object) instanceof Map)
2273
+ object.delete(field);
2274
+ else if (toRaw(object) instanceof Set)
2275
+ object.delete(Array.from(object.values())[field]);
2276
+ else
2277
+ Reflect.deleteProperty(object, field);
2278
+ }
2279
+ if (!state.remove) {
2280
+ const target10 = object[state.newKey || field];
2281
+ if (this.refEditor.isRef(target10))
2282
+ this.refEditor.set(target10, value);
2283
+ else if (toRaw(object) instanceof Map)
2284
+ object.set(state.newKey || field, value);
2285
+ else if (toRaw(object) instanceof Set)
2286
+ object.add(value);
2287
+ else
2288
+ object[state.newKey || field] = value;
2289
+ }
2290
+ };
2291
+ }
2292
+ };
2293
+ var RefStateEditor = class {
2294
+ set(ref, value) {
2295
+ if (isRef(ref)) {
2296
+ ref.value = value;
2297
+ } else {
2298
+ if (ref instanceof Set && Array.isArray(value)) {
2299
+ ref.clear();
2300
+ value.forEach((v) => ref.add(v));
2301
+ return;
2302
+ }
2303
+ const currentKeys = Object.keys(value);
2304
+ if (ref instanceof Map) {
2305
+ const previousKeysSet2 = new Set(ref.keys());
2306
+ currentKeys.forEach((key) => {
2307
+ ref.set(key, Reflect.get(value, key));
2308
+ previousKeysSet2.delete(key);
2309
+ });
2310
+ previousKeysSet2.forEach((key) => ref.delete(key));
2311
+ return;
2312
+ }
2313
+ const previousKeysSet = new Set(Object.keys(ref));
2314
+ currentKeys.forEach((key) => {
2315
+ Reflect.set(ref, key, Reflect.get(value, key));
2316
+ previousKeysSet.delete(key);
2317
+ });
2318
+ previousKeysSet.forEach((key) => Reflect.deleteProperty(ref, key));
2319
+ }
2320
+ }
2321
+ get(ref) {
2322
+ return isRef(ref) ? ref.value : ref;
2323
+ }
2324
+ isRef(ref) {
2325
+ return isRef(ref) || isReactive(ref);
2326
+ }
2327
+ };
2328
+ var stateEditor = new StateEditor();
2329
+ init_esm_shims2();
2330
+ init_esm_shims2();
2331
+ init_esm_shims2();
2332
+ var UNDEFINED = "__vue_devtool_undefined__";
2333
+ var INFINITY = "__vue_devtool_infinity__";
2334
+ var NEGATIVE_INFINITY = "__vue_devtool_negative_infinity__";
2335
+ var NAN = "__vue_devtool_nan__";
2336
+ init_esm_shims2();
2337
+ init_esm_shims2();
2338
+ var tokenMap = {
2339
+ [UNDEFINED]: "undefined",
2340
+ [NAN]: "NaN",
2341
+ [INFINITY]: "Infinity",
2342
+ [NEGATIVE_INFINITY]: "-Infinity"
2343
+ };
2344
+ var reversedTokenMap = Object.entries(tokenMap).reduce((acc, [key, value]) => {
2345
+ acc[value] = key;
2346
+ return acc;
2347
+ }, {});
2348
+ init_esm_shims2();
2349
+ init_esm_shims2();
2350
+ init_esm_shims2();
2351
+ init_esm_shims2();
2352
+ init_esm_shims2();
2353
+ init_esm_shims2();
2354
+ init_esm_shims2();
2355
+ var MAX_SERIALIZED_SIZE = 512 * 1024;
2356
+ init_esm_shims2();
2357
+ init_esm_shims2();
2358
+ init_esm_shims2();
2359
+ init_esm_shims2();
2360
+ function addCustomTab(tab) {
2361
+ if (devtoolsState.tabs.some((t) => t.name === tab.name))
2362
+ return;
2363
+ devtoolsState.tabs.push(tab);
2364
+ }
2365
+ init_esm_shims2();
2366
+ function addCustomCommand(action) {
2367
+ if (devtoolsState.commands.some((t) => t.id === action.id))
2368
+ return;
2369
+ devtoolsState.commands.push(action);
2370
+ }
2371
+ function removeCustomCommand(actionId) {
2372
+ const index = devtoolsState.commands.findIndex((t) => t.id === actionId);
2373
+ if (index === -1)
2374
+ return;
2375
+ devtoolsState.commands.splice(index, 1);
2376
+ }
2377
+ init_esm_shims2();
2378
+ var _a3;
2379
+ var _b3;
2380
+ (_b3 = (_a3 = target).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__) != null ? _b3 : _a3.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__ = true;
2381
+ init_esm_shims2();
2382
+ init_esm_shims2();
2383
+ init_esm_shims2();
2384
+ var STATE_KEY = "__VUE_DEVTOOLS_GLOBAL_STATE__";
2385
+ function initStateFactory() {
2386
+ return {
2387
+ connected: false,
2388
+ clientConnected: false,
2389
+ appRecords: [],
2390
+ activeAppRecord: null,
2391
+ selectedComponentId: null,
2392
+ pluginBuffer: [],
2393
+ tabs: [],
2394
+ commands: [],
2395
+ vitePluginDetected: false,
2396
+ activeAppRecordId: null,
2397
+ highPerfModeEnabled: false
2398
+ };
2399
+ }
2400
+ var _a4;
2401
+ var _b4;
2402
+ (_b4 = (_a4 = target)[STATE_KEY]) != null ? _b4 : _a4[STATE_KEY] = initStateFactory();
2403
+ var callStateUpdatedHook = debounce((state, oldState) => {
2404
+ apiHooks.callHook("devtools:state-updated", state, oldState);
2405
+ }, 80);
2406
+ var callConnectedUpdatedHook = debounce((state, oldState) => {
2407
+ apiHooks.callHook("devtools:connected-updated", state, oldState);
2408
+ }, 80);
2409
+ var devtoolsState = new Proxy(target[STATE_KEY], {
2410
+ get(target10, property) {
2411
+ return target[STATE_KEY][property];
2412
+ },
2413
+ deleteProperty(target10, property) {
2414
+ delete target10[property];
2415
+ return true;
2416
+ },
2417
+ set(target10, property, value) {
2418
+ const oldState = { ...target[STATE_KEY] };
2419
+ target10[property] = value;
2420
+ target[STATE_KEY][property] = value;
2421
+ callStateUpdatedHook(target[STATE_KEY], oldState);
2422
+ if (["connected", "clientConnected"].includes(property.toString()) && oldState[property] !== value)
2423
+ callConnectedUpdatedHook(target[STATE_KEY], oldState);
2424
+ return true;
2425
+ }
2426
+ });
2427
+ Object.defineProperty(devtoolsState.tabs, "push", {
2428
+ configurable: true,
2429
+ value(...items) {
2430
+ const result = Array.prototype.push.apply(this, items);
2431
+ devtoolsState.tabs = this;
2432
+ apiHooks.callHook("custom-tabs:updated", this);
2433
+ return result;
2434
+ }
2435
+ });
2436
+ ["push", "splice"].forEach((method) => {
2437
+ Object.defineProperty(devtoolsState.commands, method, {
2438
+ configurable: true,
2439
+ value(...args) {
2440
+ const result = Array.prototype[method].apply(this, args);
2441
+ devtoolsState.commands = this;
2442
+ apiHooks.callHook("custom-commands:updated", this);
2443
+ return result;
2444
+ }
2445
+ });
2446
+ });
2447
+ init_esm_shims2();
2448
+ init_esm_shims2();
2449
+ var ROUTER_KEY = "__VUE_DEVTOOLS_ROUTER__";
2450
+ var ROUTER_INFO_KEY = "__VUE_DEVTOOLS_ROUTER_INFO__";
2451
+ var _a5;
2452
+ var _b5;
2453
+ (_b5 = (_a5 = target)[ROUTER_INFO_KEY]) != null ? _b5 : _a5[ROUTER_INFO_KEY] = {
2454
+ currentRoute: null,
2455
+ routes: []
2456
+ };
2457
+ var _a6;
2458
+ var _b6;
2459
+ (_b6 = (_a6 = target)[ROUTER_KEY]) != null ? _b6 : _a6[ROUTER_KEY] = null;
2460
+ var devtoolsRouterInfo = new Proxy(target[ROUTER_INFO_KEY], {
2461
+ get(target10, property) {
2462
+ return target[ROUTER_INFO_KEY][property];
2463
+ }
2464
+ });
2465
+ init_esm_shims2();
2466
+ var CONTEXT_KEY = "__VUE_DEVTOOLS_CONTEXT__";
2467
+ function initContextFactory() {
2468
+ return {
2469
+ appRecord: null,
2470
+ api: null,
2471
+ inspector: [],
2472
+ timelineLayer: [],
2473
+ routerInfo: {},
2474
+ router: null,
2475
+ activeInspectorTreeId: "",
2476
+ componentPluginHookBuffer: []
2477
+ };
2478
+ }
2479
+ var _a7;
2480
+ var _b7;
2481
+ (_b7 = (_a7 = target)[CONTEXT_KEY]) != null ? _b7 : _a7[CONTEXT_KEY] = initContextFactory();
2482
+ function resetDevToolsContext() {
2483
+ target[CONTEXT_KEY] = initContextFactory();
2484
+ }
2485
+ var devtoolsContext = new Proxy(target[CONTEXT_KEY], {
2486
+ get(target10, property) {
2487
+ if (property === "router")
2488
+ return target[ROUTER_KEY];
2489
+ else if (property === "clear")
2490
+ return resetDevToolsContext;
2491
+ return target[CONTEXT_KEY][property];
2492
+ },
2493
+ set(target10, property, value) {
2494
+ target[CONTEXT_KEY][property] = value;
2495
+ return true;
2496
+ }
2497
+ });
2498
+ var devtoolsAppRecords = new Proxy(devtoolsState.appRecords, {
2499
+ get(_, property) {
2500
+ if (property === "value")
2501
+ return devtoolsState.appRecords;
2502
+ else if (property === "active")
2503
+ return devtoolsState.activeAppRecord;
2504
+ else if (property === "activeId")
2505
+ return devtoolsState.activeAppRecordId;
2506
+ },
2507
+ set(target10, property, value) {
2508
+ var _a10;
2509
+ const oldState = { ...devtoolsState };
2510
+ if (property === "value") {
2511
+ devtoolsState.appRecords = value;
2512
+ } else if (property === "active") {
2513
+ const _value = value;
2514
+ devtoolsState.activeAppRecord = _value;
2515
+ devtoolsContext.appRecord = _value;
2516
+ devtoolsContext.api = _value.api;
2517
+ devtoolsContext.inspector = (_a10 = _value.inspector) != null ? _a10 : [];
2518
+ normalizeRouterInfo(value);
2519
+ devtoolsContext.routerInfo = devtoolsRouterInfo;
2520
+ } else if (property === "activeId") {
2521
+ devtoolsState.activeAppRecordId = value;
2522
+ }
2523
+ callStateUpdatedHook(devtoolsState, oldState);
2524
+ if (["connected", "clientConnected"].includes(property.toString()) && oldState[property] !== value)
2525
+ callConnectedUpdatedHook(devtoolsState, oldState);
2526
+ return true;
2527
+ }
2528
+ });
2529
+ var _a8;
2530
+ var _b8;
2531
+ var appRecordInfo = (_b8 = (_a8 = target).__VUE_DEVTOOLS_APP_RECROD_INFO__) != null ? _b8 : _a8.__VUE_DEVTOOLS_APP_RECROD_INFO__ = {
2532
+ id: 0,
2533
+ appIds: /* @__PURE__ */ new Set()
2534
+ };
2535
+ init_esm_shims2();
2536
+ var _a9;
2537
+ var _b9;
2538
+ (_b9 = (_a9 = target).__VUE_DEVTOOLS_ENV__) != null ? _b9 : _a9.__VUE_DEVTOOLS_ENV__ = {
2539
+ vitePluginDetected: false
2540
+ };
2541
+ init_esm_shims2();
2542
+ function onDevToolsConnected(fn) {
2543
+ return new Promise((resolve) => {
2544
+ if (devtoolsState.connected) {
2545
+ fn();
2546
+ resolve();
2547
+ return;
2548
+ }
2549
+ apiHooks.hook("devtools:connected-updated", (state) => {
2550
+ if (state.connected) {
2551
+ fn();
2552
+ resolve();
2553
+ }
2554
+ });
2555
+ });
2556
+ }
2557
+ function onDevToolsClientConnected(fn) {
2558
+ return new Promise((resolve) => {
2559
+ if (devtoolsState.connected && devtoolsState.clientConnected) {
2560
+ fn();
2561
+ resolve();
2562
+ return;
2563
+ }
2564
+ apiHooks.hook("devtools:connected-updated", (state) => {
2565
+ if (state.connected && state.clientConnected) {
2566
+ fn();
2567
+ resolve();
2568
+ }
2569
+ });
2570
+ });
2571
+ }
2572
+ init_esm_shims2();
2573
+ export {
2574
+ addCustomCommand,
2575
+ addCustomTab,
2576
+ onDevToolsClientConnected,
2577
+ onDevToolsConnected,
2578
+ removeCustomCommand,
2579
+ setupDevToolsPlugin,
2580
+ setupDevToolsPlugin as setupDevtoolsPlugin
2581
+ };
2582
+ //# sourceMappingURL=vitepress___@vue_devtools-api.js.map