Files
pole-book/server/node_modules/.strapi/vite/deps/chunk-7HX4OIS5.js

2391 lines
67 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import {
require_escape_string_regexp
} from "./chunk-6LY4MOO2.js";
import {
require_pluralize
} from "./chunk-XNACAI67.js";
import {
require_set
} from "./chunk-RMBEU7DO.js";
import {
require_snakeCase
} from "./chunk-XLSIZGJF.js";
import {
require_get
} from "./chunk-LCL5TIBZ.js";
import {
createSlice
} from "./chunk-WOQNBAGN.js";
import {
R
} from "./chunk-5VODLFKF.js";
import {
Box,
Flex,
Link,
Typography,
useIntl
} from "./chunk-7XB6XSWQ.js";
import {
require_react_dom
} from "./chunk-FOD4ENRR.js";
import {
ForwardRef$4r,
ForwardRef$5n
} from "./chunk-WRD5KPDH.js";
import {
require_jsx_runtime
} from "./chunk-NIAJZ5MX.js";
import {
dt,
mt
} from "./chunk-ACIMPXWY.js";
import {
require_react
} from "./chunk-MADUDGYZ.js";
import {
__commonJS,
__toESM
} from "./chunk-PLDDJCW6.js";
// node_modules/lodash.deburr/index.js
var require_lodash = __commonJS({
"node_modules/lodash.deburr/index.js"(exports, module) {
var INFINITY = 1 / 0;
var symbolTag = "[object Symbol]";
var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
var rsComboMarksRange = "\\u0300-\\u036f\\ufe20-\\ufe23";
var rsComboSymbolsRange = "\\u20d0-\\u20f0";
var rsCombo = "[" + rsComboMarksRange + rsComboSymbolsRange + "]";
var reComboMark = RegExp(rsCombo, "g");
var deburredLetters = {
// Latin-1 Supplement block.
"À": "A",
"Á": "A",
"Â": "A",
"Ã": "A",
"Ä": "A",
"Å": "A",
"à": "a",
"á": "a",
"â": "a",
"ã": "a",
"ä": "a",
"å": "a",
"Ç": "C",
"ç": "c",
"Ð": "D",
"ð": "d",
"È": "E",
"É": "E",
"Ê": "E",
"Ë": "E",
"è": "e",
"é": "e",
"ê": "e",
"ë": "e",
"Ì": "I",
"Í": "I",
"Î": "I",
"Ï": "I",
"ì": "i",
"í": "i",
"î": "i",
"ï": "i",
"Ñ": "N",
"ñ": "n",
"Ò": "O",
"Ó": "O",
"Ô": "O",
"Õ": "O",
"Ö": "O",
"Ø": "O",
"ò": "o",
"ó": "o",
"ô": "o",
"õ": "o",
"ö": "o",
"ø": "o",
"Ù": "U",
"Ú": "U",
"Û": "U",
"Ü": "U",
"ù": "u",
"ú": "u",
"û": "u",
"ü": "u",
"Ý": "Y",
"ý": "y",
"ÿ": "y",
"Æ": "Ae",
"æ": "ae",
"Þ": "Th",
"þ": "th",
"ß": "ss",
// Latin Extended-A block.
"Ā": "A",
"Ă": "A",
"Ą": "A",
"ā": "a",
"ă": "a",
"ą": "a",
"Ć": "C",
"Ĉ": "C",
"Ċ": "C",
"Č": "C",
"ć": "c",
"ĉ": "c",
"ċ": "c",
"č": "c",
"Ď": "D",
"Đ": "D",
"ď": "d",
"đ": "d",
"Ē": "E",
"Ĕ": "E",
"Ė": "E",
"Ę": "E",
"Ě": "E",
"ē": "e",
"ĕ": "e",
"ė": "e",
"ę": "e",
"ě": "e",
"Ĝ": "G",
"Ğ": "G",
"Ġ": "G",
"Ģ": "G",
"ĝ": "g",
"ğ": "g",
"ġ": "g",
"ģ": "g",
"Ĥ": "H",
"Ħ": "H",
"ĥ": "h",
"ħ": "h",
"Ĩ": "I",
"Ī": "I",
"Ĭ": "I",
"Į": "I",
"İ": "I",
"ĩ": "i",
"ī": "i",
"ĭ": "i",
"į": "i",
"ı": "i",
"Ĵ": "J",
"ĵ": "j",
"Ķ": "K",
"ķ": "k",
"ĸ": "k",
"Ĺ": "L",
"Ļ": "L",
"Ľ": "L",
"Ŀ": "L",
"Ł": "L",
"ĺ": "l",
"ļ": "l",
"ľ": "l",
"ŀ": "l",
"ł": "l",
"Ń": "N",
"Ņ": "N",
"Ň": "N",
"Ŋ": "N",
"ń": "n",
"ņ": "n",
"ň": "n",
"ŋ": "n",
"Ō": "O",
"Ŏ": "O",
"Ő": "O",
"ō": "o",
"ŏ": "o",
"ő": "o",
"Ŕ": "R",
"Ŗ": "R",
"Ř": "R",
"ŕ": "r",
"ŗ": "r",
"ř": "r",
"Ś": "S",
"Ŝ": "S",
"Ş": "S",
"Š": "S",
"ś": "s",
"ŝ": "s",
"ş": "s",
"š": "s",
"Ţ": "T",
"Ť": "T",
"Ŧ": "T",
"ţ": "t",
"ť": "t",
"ŧ": "t",
"Ũ": "U",
"Ū": "U",
"Ŭ": "U",
"Ů": "U",
"Ű": "U",
"Ų": "U",
"ũ": "u",
"ū": "u",
"ŭ": "u",
"ů": "u",
"ű": "u",
"ų": "u",
"Ŵ": "W",
"ŵ": "w",
"Ŷ": "Y",
"ŷ": "y",
"Ÿ": "Y",
"Ź": "Z",
"Ż": "Z",
"Ž": "Z",
"ź": "z",
"ż": "z",
"ž": "z",
"IJ": "IJ",
"ij": "ij",
"Œ": "Oe",
"œ": "oe",
"ʼn": "'n",
"ſ": "ss"
};
var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal || freeSelf || Function("return this")();
function basePropertyOf(object) {
return function(key) {
return object == null ? void 0 : object[key];
};
}
var deburrLetter = basePropertyOf(deburredLetters);
var objectProto = Object.prototype;
var objectToString = objectProto.toString;
var Symbol = root.Symbol;
var symbolProto = Symbol ? Symbol.prototype : void 0;
var symbolToString = symbolProto ? symbolProto.toString : void 0;
function baseToString(value) {
if (typeof value == "string") {
return value;
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : "";
}
var result = value + "";
return result == "0" && 1 / value == -INFINITY ? "-0" : result;
}
function isObjectLike(value) {
return !!value && typeof value == "object";
}
function isSymbol(value) {
return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
}
function toString(value) {
return value == null ? "" : baseToString(value);
}
function deburr(string) {
string = toString(string);
return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
}
module.exports = deburr;
}
});
// node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp/index.js
var require_escape_string_regexp2 = __commonJS({
"node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp/index.js"(exports, module) {
"use strict";
var matchOperatorsRegex = /[|\\{}()[\]^$+*?.-]/g;
module.exports = (string) => {
if (typeof string !== "string") {
throw new TypeError("Expected a string");
}
return string.replace(matchOperatorsRegex, "\\$&");
};
}
});
// node_modules/@sindresorhus/transliterate/replacements.js
var require_replacements = __commonJS({
"node_modules/@sindresorhus/transliterate/replacements.js"(exports, module) {
"use strict";
module.exports = [
// German umlauts
["ß", "ss"],
["ä", "ae"],
["Ä", "Ae"],
["ö", "oe"],
["Ö", "Oe"],
["ü", "ue"],
["Ü", "Ue"],
// Latin
["À", "A"],
["Á", "A"],
["Â", "A"],
["Ã", "A"],
["Ä", "Ae"],
["Å", "A"],
["Æ", "AE"],
["Ç", "C"],
["È", "E"],
["É", "E"],
["Ê", "E"],
["Ë", "E"],
["Ì", "I"],
["Í", "I"],
["Î", "I"],
["Ï", "I"],
["Ð", "D"],
["Ñ", "N"],
["Ò", "O"],
["Ó", "O"],
["Ô", "O"],
["Õ", "O"],
["Ö", "Oe"],
["Ő", "O"],
["Ø", "O"],
["Ù", "U"],
["Ú", "U"],
["Û", "U"],
["Ü", "Ue"],
["Ű", "U"],
["Ý", "Y"],
["Þ", "TH"],
["ß", "ss"],
["à", "a"],
["á", "a"],
["â", "a"],
["ã", "a"],
["ä", "ae"],
["å", "a"],
["æ", "ae"],
["ç", "c"],
["è", "e"],
["é", "e"],
["ê", "e"],
["ë", "e"],
["ì", "i"],
["í", "i"],
["î", "i"],
["ï", "i"],
["ð", "d"],
["ñ", "n"],
["ò", "o"],
["ó", "o"],
["ô", "o"],
["õ", "o"],
["ö", "oe"],
["ő", "o"],
["ø", "o"],
["ù", "u"],
["ú", "u"],
["û", "u"],
["ü", "ue"],
["ű", "u"],
["ý", "y"],
["þ", "th"],
["ÿ", "y"],
["ẞ", "SS"],
// Vietnamese
["à", "a"],
["À", "A"],
["á", "a"],
["Á", "A"],
["â", "a"],
["Â", "A"],
["ã", "a"],
["Ã", "A"],
["è", "e"],
["È", "E"],
["é", "e"],
["É", "E"],
["ê", "e"],
["Ê", "E"],
["ì", "i"],
["Ì", "I"],
["í", "i"],
["Í", "I"],
["ò", "o"],
["Ò", "O"],
["ó", "o"],
["Ó", "O"],
["ô", "o"],
["Ô", "O"],
["õ", "o"],
["Õ", "O"],
["ù", "u"],
["Ù", "U"],
["ú", "u"],
["Ú", "U"],
["ý", "y"],
["Ý", "Y"],
["ă", "a"],
["Ă", "A"],
["Đ", "D"],
["đ", "d"],
["ĩ", "i"],
["Ĩ", "I"],
["ũ", "u"],
["Ũ", "U"],
["ơ", "o"],
["Ơ", "O"],
["ư", "u"],
["Ư", "U"],
["ạ", "a"],
["Ạ", "A"],
["ả", "a"],
["Ả", "A"],
["ấ", "a"],
["Ấ", "A"],
["ầ", "a"],
["Ầ", "A"],
["ẩ", "a"],
["Ẩ", "A"],
["ẫ", "a"],
["Ẫ", "A"],
["ậ", "a"],
["Ậ", "A"],
["ắ", "a"],
["Ắ", "A"],
["ằ", "a"],
["Ằ", "A"],
["ẳ", "a"],
["Ẳ", "A"],
["ẵ", "a"],
["Ẵ", "A"],
["ặ", "a"],
["Ặ", "A"],
["ẹ", "e"],
["Ẹ", "E"],
["ẻ", "e"],
["Ẻ", "E"],
["ẽ", "e"],
["Ẽ", "E"],
["ế", "e"],
["Ế", "E"],
["ề", "e"],
["Ề", "E"],
["ể", "e"],
["Ể", "E"],
["ễ", "e"],
["Ễ", "E"],
["ệ", "e"],
["Ệ", "E"],
["ỉ", "i"],
["Ỉ", "I"],
["ị", "i"],
["Ị", "I"],
["ọ", "o"],
["Ọ", "O"],
["ỏ", "o"],
["Ỏ", "O"],
["ố", "o"],
["Ố", "O"],
["ồ", "o"],
["Ồ", "O"],
["ổ", "o"],
["Ổ", "O"],
["ỗ", "o"],
["Ỗ", "O"],
["ộ", "o"],
["Ộ", "O"],
["ớ", "o"],
["Ớ", "O"],
["ờ", "o"],
["Ờ", "O"],
["ở", "o"],
["Ở", "O"],
["ỡ", "o"],
["Ỡ", "O"],
["ợ", "o"],
["Ợ", "O"],
["ụ", "u"],
["Ụ", "U"],
["ủ", "u"],
["Ủ", "U"],
["ứ", "u"],
["Ứ", "U"],
["ừ", "u"],
["Ừ", "U"],
["ử", "u"],
["Ử", "U"],
["ữ", "u"],
["Ữ", "U"],
["ự", "u"],
["Ự", "U"],
["ỳ", "y"],
["Ỳ", "Y"],
["ỵ", "y"],
["Ỵ", "Y"],
["ỷ", "y"],
["Ỷ", "Y"],
["ỹ", "y"],
["Ỹ", "Y"],
// Arabic
["ء", "e"],
["آ", "a"],
["أ", "a"],
["ؤ", "w"],
["إ", "i"],
["ئ", "y"],
["ا", "a"],
["ب", "b"],
["ة", "t"],
["ت", "t"],
["ث", "th"],
["ج", "j"],
["ح", "h"],
["خ", "kh"],
["د", "d"],
["ذ", "dh"],
["ر", "r"],
["ز", "z"],
["س", "s"],
["ش", "sh"],
["ص", "s"],
["ض", "d"],
["ط", "t"],
["ظ", "z"],
["ع", "e"],
["غ", "gh"],
["ـ", "_"],
["ف", "f"],
["ق", "q"],
["ك", "k"],
["ل", "l"],
["م", "m"],
["ن", "n"],
["ه", "h"],
["و", "w"],
["ى", "a"],
["ي", "y"],
["َ‎", "a"],
["ُ", "u"],
["ِ‎", "i"],
["٠", "0"],
["١", "1"],
["٢", "2"],
["٣", "3"],
["٤", "4"],
["٥", "5"],
["٦", "6"],
["٧", "7"],
["٨", "8"],
["٩", "9"],
// Persian / Farsi
["چ", "ch"],
["ک", "k"],
["گ", "g"],
["پ", "p"],
["ژ", "zh"],
["ی", "y"],
["۰", "0"],
["۱", "1"],
["۲", "2"],
["۳", "3"],
["۴", "4"],
["۵", "5"],
["۶", "6"],
["۷", "7"],
["۸", "8"],
["۹", "9"],
// Pashto
["ټ", "p"],
["ځ", "z"],
["څ", "c"],
["ډ", "d"],
["ﺫ", "d"],
["ﺭ", "r"],
["ړ", "r"],
["ﺯ", "z"],
["ږ", "g"],
["ښ", "x"],
["ګ", "g"],
["ڼ", "n"],
["ۀ", "e"],
["ې", "e"],
["ۍ", "ai"],
// Urdu
["ٹ", "t"],
["ڈ", "d"],
["ڑ", "r"],
["ں", "n"],
["ہ", "h"],
["ھ", "h"],
["ے", "e"],
// Russian
["А", "A"],
["а", "a"],
["Б", "B"],
["б", "b"],
["В", "V"],
["в", "v"],
["Г", "G"],
["г", "g"],
["Д", "D"],
["д", "d"],
["Е", "E"],
["е", "e"],
["Ж", "Zh"],
["ж", "zh"],
["З", "Z"],
["з", "z"],
["И", "I"],
["и", "i"],
["Й", "J"],
["й", "j"],
["К", "K"],
["к", "k"],
["Л", "L"],
["л", "l"],
["М", "M"],
["м", "m"],
["Н", "N"],
["н", "n"],
["О", "O"],
["о", "o"],
["П", "P"],
["п", "p"],
["Р", "R"],
["р", "r"],
["С", "S"],
["с", "s"],
["Т", "T"],
["т", "t"],
["У", "U"],
["у", "u"],
["Ф", "F"],
["ф", "f"],
["Х", "H"],
["х", "h"],
["Ц", "Cz"],
["ц", "cz"],
["Ч", "Ch"],
["ч", "ch"],
["Ш", "Sh"],
["ш", "sh"],
["Щ", "Shh"],
["щ", "shh"],
["Ъ", ""],
["ъ", ""],
["Ы", "Y"],
["ы", "y"],
["Ь", ""],
["ь", ""],
["Э", "E"],
["э", "e"],
["Ю", "Yu"],
["ю", "yu"],
["Я", "Ya"],
["я", "ya"],
["Ё", "Yo"],
["ё", "yo"],
// Romanian
["ă", "a"],
["Ă", "A"],
["ș", "s"],
["Ș", "S"],
["ț", "t"],
["Ț", "T"],
["ţ", "t"],
["Ţ", "T"],
// Turkish
["ş", "s"],
["Ş", "S"],
["ç", "c"],
["Ç", "C"],
["ğ", "g"],
["Ğ", "G"],
["ı", "i"],
["İ", "I"],
// Armenian
["ա", "a"],
["Ա", "A"],
["բ", "b"],
["Բ", "B"],
["գ", "g"],
["Գ", "G"],
["դ", "d"],
["Դ", "D"],
["ե", "ye"],
["Ե", "Ye"],
["զ", "z"],
["Զ", "Z"],
["է", "e"],
["Է", "E"],
["ը", "y"],
["Ը", "Y"],
["թ", "t"],
["Թ", "T"],
["ժ", "zh"],
["Ժ", "Zh"],
["ի", "i"],
["Ի", "I"],
["լ", "l"],
["Լ", "L"],
["խ", "kh"],
["Խ", "Kh"],
["ծ", "ts"],
["Ծ", "Ts"],
["կ", "k"],
["Կ", "K"],
["հ", "h"],
["Հ", "H"],
["ձ", "dz"],
["Ձ", "Dz"],
["ղ", "gh"],
["Ղ", "Gh"],
["ճ", "tch"],
["Ճ", "Tch"],
["մ", "m"],
["Մ", "M"],
["յ", "y"],
["Յ", "Y"],
["ն", "n"],
["Ն", "N"],
["շ", "sh"],
["Շ", "Sh"],
["ո", "vo"],
["Ո", "Vo"],
["չ", "ch"],
["Չ", "Ch"],
["պ", "p"],
["Պ", "P"],
["ջ", "j"],
["Ջ", "J"],
["ռ", "r"],
["Ռ", "R"],
["ս", "s"],
["Ս", "S"],
["վ", "v"],
["Վ", "V"],
["տ", "t"],
["Տ", "T"],
["ր", "r"],
["Ր", "R"],
["ց", "c"],
["Ց", "C"],
["ու", "u"],
["ՈՒ", "U"],
["Ու", "U"],
["փ", "p"],
["Փ", "P"],
["ք", "q"],
["Ք", "Q"],
["օ", "o"],
["Օ", "O"],
["ֆ", "f"],
["Ֆ", "F"],
["և", "yev"],
// Georgian
["ა", "a"],
["ბ", "b"],
["გ", "g"],
["დ", "d"],
["ე", "e"],
["ვ", "v"],
["ზ", "z"],
["თ", "t"],
["ი", "i"],
["კ", "k"],
["ლ", "l"],
["მ", "m"],
["ნ", "n"],
["ო", "o"],
["პ", "p"],
["ჟ", "zh"],
["რ", "r"],
["ს", "s"],
["ტ", "t"],
["უ", "u"],
["ფ", "ph"],
["ქ", "q"],
["ღ", "gh"],
["", "k"],
["შ", "sh"],
["ჩ", "ch"],
["ც", "ts"],
["ძ", "dz"],
["წ", "ts"],
["ჭ", "tch"],
["ხ", "kh"],
["ჯ", "j"],
["ჰ", "h"],
// Czech
["č", "c"],
["ď", "d"],
["ě", "e"],
["ň", "n"],
["ř", "r"],
["š", "s"],
["ť", "t"],
["ů", "u"],
["ž", "z"],
["Č", "C"],
["Ď", "D"],
["Ě", "E"],
["Ň", "N"],
["Ř", "R"],
["Š", "S"],
["Ť", "T"],
["Ů", "U"],
["Ž", "Z"],
// Dhivehi
["ހ", "h"],
["ށ", "sh"],
["ނ", "n"],
["ރ", "r"],
["ބ", "b"],
["ޅ", "lh"],
["ކ", "k"],
["އ", "a"],
["ވ", "v"],
["މ", "m"],
["ފ", "f"],
["ދ", "dh"],
["ތ", "th"],
["ލ", "l"],
["ގ", "g"],
["ޏ", "gn"],
["ސ", "s"],
["ޑ", "d"],
["ޒ", "z"],
["ޓ", "t"],
["ޔ", "y"],
["ޕ", "p"],
["ޖ", "j"],
["ޗ", "ch"],
["ޘ", "tt"],
["ޙ", "hh"],
["ޚ", "kh"],
["ޛ", "th"],
["ޜ", "z"],
["ޝ", "sh"],
["ޞ", "s"],
["ޟ", "d"],
["ޠ", "t"],
["ޡ", "z"],
["ޢ", "a"],
["ޣ", "gh"],
["ޤ", "q"],
["ޥ", "w"],
["ަ", "a"],
["ާ", "aa"],
["ި", "i"],
["ީ", "ee"],
["ު", "u"],
["ޫ", "oo"],
["ެ", "e"],
["ޭ", "ey"],
["ޮ", "o"],
["ޯ", "oa"],
["ް", ""],
// Greek
["α", "a"],
["β", "v"],
["γ", "g"],
["δ", "d"],
["ε", "e"],
["ζ", "z"],
["η", "i"],
["θ", "th"],
["ι", "i"],
["κ", "k"],
["λ", "l"],
["μ", "m"],
["ν", "n"],
["ξ", "ks"],
["ο", "o"],
["π", "p"],
["ρ", "r"],
["σ", "s"],
["τ", "t"],
["υ", "y"],
["φ", "f"],
["χ", "x"],
["ψ", "ps"],
["ω", "o"],
["ά", "a"],
["έ", "e"],
["ί", "i"],
["ό", "o"],
["ύ", "y"],
["ή", "i"],
["ώ", "o"],
["ς", "s"],
["ϊ", "i"],
["ΰ", "y"],
["ϋ", "y"],
["ΐ", "i"],
["Α", "A"],
["Β", "B"],
["Γ", "G"],
["Δ", "D"],
["Ε", "E"],
["Ζ", "Z"],
["Η", "I"],
["Θ", "TH"],
["Ι", "I"],
["Κ", "K"],
["Λ", "L"],
["Μ", "M"],
["Ν", "N"],
["Ξ", "KS"],
["Ο", "O"],
["Π", "P"],
["Ρ", "R"],
["Σ", "S"],
["Τ", "T"],
["Υ", "Y"],
["Φ", "F"],
["Χ", "X"],
["Ψ", "PS"],
["Ω", "O"],
["Ά", "A"],
["Έ", "E"],
["Ί", "I"],
["Ό", "O"],
["Ύ", "Y"],
["Ή", "I"],
["Ώ", "O"],
["Ϊ", "I"],
["Ϋ", "Y"],
// Disabled as it conflicts with German and Latin.
// Hungarian
// ['ä', 'a'],
// ['Ä', 'A'],
// ['ö', 'o'],
// ['Ö', 'O'],
// ['ü', 'u'],
// ['Ü', 'U'],
// ['ű', 'u'],
// ['Ű', 'U'],
// Latvian
["ā", "a"],
["ē", "e"],
["ģ", "g"],
["ī", "i"],
["ķ", "k"],
["ļ", "l"],
["ņ", "n"],
["ū", "u"],
["Ā", "A"],
["Ē", "E"],
["Ģ", "G"],
["Ī", "I"],
["Ķ", "K"],
["Ļ", "L"],
["Ņ", "N"],
["Ū", "U"],
["č", "c"],
["š", "s"],
["ž", "z"],
["Č", "C"],
["Š", "S"],
["Ž", "Z"],
// Lithuanian
["ą", "a"],
["č", "c"],
["ę", "e"],
["ė", "e"],
["į", "i"],
["š", "s"],
["ų", "u"],
["ū", "u"],
["ž", "z"],
["Ą", "A"],
["Č", "C"],
["Ę", "E"],
["Ė", "E"],
["Į", "I"],
["Š", "S"],
["Ų", "U"],
["Ū", "U"],
// Macedonian
["Ќ", "Kj"],
["ќ", "kj"],
["Љ", "Lj"],
["љ", "lj"],
["Њ", "Nj"],
["њ", "nj"],
["Тс", "Ts"],
["тс", "ts"],
// Polish
["ą", "a"],
["ć", "c"],
["ę", "e"],
["ł", "l"],
["ń", "n"],
["ś", "s"],
["ź", "z"],
["ż", "z"],
["Ą", "A"],
["Ć", "C"],
["Ę", "E"],
["Ł", "L"],
["Ń", "N"],
["Ś", "S"],
["Ź", "Z"],
["Ż", "Z"],
// Disabled as it conflicts with Vietnamese.
// Serbian
// ['љ', 'lj'],
// ['њ', 'nj'],
// ['Љ', 'Lj'],
// ['Њ', 'Nj'],
// ['đ', 'dj'],
// ['Đ', 'Dj'],
// ['ђ', 'dj'],
// ['ј', 'j'],
// ['ћ', 'c'],
// ['џ', 'dz'],
// ['Ђ', 'Dj'],
// ['Ј', 'j'],
// ['Ћ', 'C'],
// ['Џ', 'Dz'],
// Disabled as it conflicts with German and Latin.
// Slovak
// ['ä', 'a'],
// ['Ä', 'A'],
// ['ľ', 'l'],
// ['ĺ', 'l'],
// ['ŕ', 'r'],
// ['Ľ', 'L'],
// ['Ĺ', 'L'],
// ['Ŕ', 'R'],
// Disabled as it conflicts with German and Latin.
// Swedish
// ['å', 'o'],
// ['Å', 'o'],
// ['ä', 'a'],
// ['Ä', 'A'],
// ['ë', 'e'],
// ['Ë', 'E'],
// ['ö', 'o'],
// ['Ö', 'O'],
// Ukrainian
["Є", "Ye"],
["І", "I"],
["Ї", "Yi"],
["Ґ", "G"],
["є", "ye"],
["і", "i"],
["ї", "yi"],
["ґ", "g"]
// Danish
// ['Æ', 'Ae'],
// ['Ø', 'Oe'],
// ['Å', 'Aa'],
// ['æ', 'ae'],
// ['ø', 'oe'],
// ['å', 'aa']
];
}
});
// node_modules/@sindresorhus/transliterate/index.js
var require_transliterate = __commonJS({
"node_modules/@sindresorhus/transliterate/index.js"(exports, module) {
"use strict";
var deburr = require_lodash();
var escapeStringRegexp = require_escape_string_regexp2();
var builtinReplacements = require_replacements();
var doCustomReplacements = (string, replacements) => {
for (const [key, value] of replacements) {
string = string.replace(new RegExp(escapeStringRegexp(key), "g"), value);
}
return string;
};
module.exports = (string, options) => {
if (typeof string !== "string") {
throw new TypeError(`Expected a string, got \`${typeof string}\``);
}
options = {
customReplacements: [],
...options
};
const customReplacements = new Map([
...builtinReplacements,
...options.customReplacements
]);
string = string.normalize();
string = doCustomReplacements(string, customReplacements);
string = deburr(string);
return string;
};
}
});
// node_modules/@sindresorhus/slugify/overridable-replacements.js
var require_overridable_replacements = __commonJS({
"node_modules/@sindresorhus/slugify/overridable-replacements.js"(exports, module) {
"use strict";
module.exports = [
["&", " and "],
["🦄", " unicorn "],
["♥", " love "]
];
}
});
// node_modules/@sindresorhus/slugify/index.js
var require_slugify = __commonJS({
"node_modules/@sindresorhus/slugify/index.js"(exports, module) {
"use strict";
var escapeStringRegexp = require_escape_string_regexp();
var transliterate = require_transliterate();
var builtinOverridableReplacements = require_overridable_replacements();
var decamelize = (string) => {
return string.replace(/([A-Z]{2,})(\d+)/g, "$1 $2").replace(/([a-z\d]+)([A-Z]{2,})/g, "$1 $2").replace(/([a-z\d])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g, "$1 $2");
};
var removeMootSeparators = (string, separator) => {
const escapedSeparator = escapeStringRegexp(separator);
return string.replace(new RegExp(`${escapedSeparator}{2,}`, "g"), separator).replace(new RegExp(`^${escapedSeparator}|${escapedSeparator}$`, "g"), "");
};
var slugify2 = (string, options) => {
if (typeof string !== "string") {
throw new TypeError(`Expected a string, got \`${typeof string}\``);
}
options = {
separator: "-",
lowercase: true,
decamelize: true,
customReplacements: [],
preserveLeadingUnderscore: false,
...options
};
const shouldPrependUnderscore = options.preserveLeadingUnderscore && string.startsWith("_");
const customReplacements = new Map([
...builtinOverridableReplacements,
...options.customReplacements
]);
string = transliterate(string, { customReplacements });
if (options.decamelize) {
string = decamelize(string);
}
let patternSlug = /[^a-zA-Z\d]+/g;
if (options.lowercase) {
string = string.toLowerCase();
patternSlug = /[^a-z\d]+/g;
}
string = string.replace(patternSlug, options.separator);
string = string.replace(/\\/g, "");
if (options.separator) {
string = removeMootSeparators(string, options.separator);
}
if (shouldPrependUnderscore) {
string = `_${string}`;
}
return string;
};
var counter = () => {
const occurrences = /* @__PURE__ */ new Map();
const countable = (string, options) => {
string = slugify2(string, options);
if (!string) {
return "";
}
const stringLower = string.toLowerCase();
const numberless = occurrences.get(stringLower.replace(/(?:-\d+?)+?$/, "")) || 0;
const counter2 = occurrences.get(stringLower);
occurrences.set(stringLower, typeof counter2 === "number" ? counter2 + 1 : 1);
const newCounter = occurrences.get(stringLower) || 2;
if (newCounter >= 2 || numberless > 2) {
string = `${string}-${newCounter}`;
}
return string;
};
countable.reset = () => {
occurrences.clear();
};
return countable;
};
module.exports = slugify2;
module.exports.counter = counter;
}
});
// node_modules/@strapi/content-type-builder/dist/admin/constants.mjs
var PERMISSIONS = {
// This permission regards the main component (App) and is used to tell
// If the plugin link should be displayed in the menu
// And also if the plugin is accessible. This use case is found when a user types the url of the
// plugin directly in the browser
main: [
{
action: "plugin::content-type-builder.read",
subject: null
}
]
};
var MAX_COMPONENT_DEPTH = 6;
// node_modules/@strapi/content-type-builder/dist/admin/components/AutoReloadOverlayBlocker.mjs
var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
var React = __toESM(require_react(), 1);
var import_react_dom = __toESM(require_react_dom(), 1);
var AutoReloadOverlayBlockerContext = React.createContext({});
var MAX_ELAPSED_TIME = 30 * 1e3;
var AutoReloadOverlayBlockerProvider = ({ children }) => {
const [isOpen, setIsOpen] = React.useState(false);
const [config, setConfig] = React.useState({});
const [failed, setFailed] = React.useState(false);
const lockAppWithAutoreload = React.useCallback((config2 = {}) => {
setIsOpen(true);
setConfig(config2);
}, []);
const unlockAppWithAutoreload = React.useCallback(() => {
setIsOpen(false);
setConfig({});
}, []);
React.useEffect(() => {
if (isOpen) {
const timeout = setTimeout(() => {
setFailed(true);
}, MAX_ELAPSED_TIME);
return () => {
clearTimeout(timeout);
};
}
}, [
isOpen
]);
let displayedIcon = (config == null ? void 0 : config.icon) || "reload";
let description = {
id: (config == null ? void 0 : config.description) || "components.OverlayBlocker.description",
defaultMessage: "You're using a feature that needs the server to restart. The page will reload automatically."
};
let title = {
id: (config == null ? void 0 : config.title) || "components.OverlayBlocker.title",
defaultMessage: "Waiting for restart"
};
if (failed) {
displayedIcon = "time";
description = {
id: "components.OverlayBlocker.description.serverError",
defaultMessage: "The server should have restarted, please check your logs in the terminal."
};
title = {
id: "components.OverlayBlocker.title.serverError",
defaultMessage: "The restart is taking longer than expected"
};
}
const autoReloadValue = React.useMemo(() => ({
lockAppWithAutoreload,
unlockAppWithAutoreload
}), [
lockAppWithAutoreload,
unlockAppWithAutoreload
]);
return (0, import_jsx_runtime.jsxs)(AutoReloadOverlayBlockerContext.Provider, {
value: autoReloadValue,
children: [
(0, import_jsx_runtime.jsx)(Blocker, {
displayedIcon,
isOpen,
description,
title
}),
children
]
});
};
var Blocker = ({ displayedIcon, description, title, isOpen }) => {
var _a;
const { formatMessage } = useIntl();
return isOpen && ((_a = globalThis == null ? void 0 : globalThis.document) == null ? void 0 : _a.body) ? (0, import_react_dom.createPortal)(
(0, import_jsx_runtime.jsxs)(Overlay, {
id: "autoReloadOverlayBlocker",
direction: "column",
alignItems: "center",
gap: 6,
children: [
(0, import_jsx_runtime.jsxs)(Flex, {
direction: "column",
alignItems: "center",
gap: 2,
children: [
(0, import_jsx_runtime.jsx)(Typography, {
tag: "h1",
variant: "alpha",
children: formatMessage(title)
}),
(0, import_jsx_runtime.jsx)(Typography, {
tag: "h2",
textColor: "neutral600",
fontSize: 4,
fontWeight: "regular",
children: formatMessage(description)
})
]
}),
displayedIcon === "reload" && (0, import_jsx_runtime.jsx)(IconBox, {
padding: 6,
background: "primary100",
borderColor: "primary200",
children: (0, import_jsx_runtime.jsx)(LoaderReload, {
width: "4rem",
height: "4rem"
})
}),
displayedIcon === "time" && (0, import_jsx_runtime.jsx)(IconBox, {
padding: 6,
background: "primary100",
borderColor: "primary200",
children: (0, import_jsx_runtime.jsx)(ForwardRef$4r, {
width: "4rem",
height: "4rem"
})
}),
(0, import_jsx_runtime.jsx)(Box, {
marginTop: 2,
children: (0, import_jsx_runtime.jsx)(Link, {
href: "https://docs.strapi.io",
isExternal: true,
children: formatMessage({
id: "global.documentation",
defaultMessage: "Read the documentation"
})
})
})
]
}),
// eslint-disable-next-line no-undef
globalThis.document.body
) : null;
};
var rotation = mt`
from {
transform: rotate(0deg);
}
to {
transform: rotate(359deg);
}
`;
var LoaderReload = dt(ForwardRef$5n)`
animation: ${rotation} 1s infinite linear;
`;
var Overlay = dt(Flex)`
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
/* TODO: set this up in the theme for consistence z-index values */
z-index: 1140;
padding-top: 16rem;
& > * {
position: relative;
z-index: 1;
}
&:before {
content: '';
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: ${({ theme }) => theme.colors.neutral0};
opacity: 0.9;
}
`;
var IconBox = dt(Box)`
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
svg {
> path {
fill: ${({ theme }) => theme.colors.primary600} !important;
}
}
`;
var useAutoReloadOverlayBlocker = () => React.useContext(AutoReloadOverlayBlockerContext);
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs
var import_get = __toESM(require_get(), 1);
// node_modules/@strapi/content-type-builder/dist/admin/utils/makeUnique.mjs
var makeUnique = (array) => [
...new Set(array)
];
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/retrieveComponentsFromSchema.mjs
var retrieveComponentsFromSchema = (attributes, allComponentsData) => {
const allComponents = attributes.reduce((acc, current) => {
const type = current.type;
if (type === "component") {
const currentComponentName = current.component;
acc.push(currentComponentName);
const currentComponentAttributes = (0, import_get.default)(allComponentsData, [
currentComponentName,
"schema",
"attributes"
], []);
acc.push(...retrieveComponentsFromSchema(currentComponentAttributes, allComponentsData));
}
if (type === "dynamiczone") {
const dynamicZoneComponents = current.components;
const componentsFromDZComponents = dynamicZoneComponents.reduce((acc2, currentUid) => {
const compoAttrs = (0, import_get.default)(allComponentsData, [
currentUid,
"schema",
"attributes"
], []);
return [
...acc2,
...retrieveComponentsFromSchema(compoAttrs, allComponentsData)
];
}, []);
return [
...acc,
...dynamicZoneComponents,
...componentsFromDZComponents
];
}
return acc;
}, []);
return makeUnique(allComponents);
};
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/reducer.mjs
var import_get2 = __toESM(require_get(), 1);
var import_set = __toESM(require_set(), 1);
// node_modules/@strapi/content-type-builder/dist/admin/utils/getRelationType.mjs
var getRelationType = (relation, targetAttribute) => {
const hasNotTargetAttribute = targetAttribute === void 0 || targetAttribute === null;
if (relation === "oneToOne" && hasNotTargetAttribute) {
return "oneWay";
}
if (relation === "oneToMany" && hasNotTargetAttribute) {
return "manyWay";
}
return relation;
};
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/reducer.mjs
var DEFAULT_MODIFIED_DATA = {
components: {},
contentTypes: {}
};
var initialState = {
components: {},
contentTypes: {},
initialComponents: {},
initialContentTypes: {},
initialData: {},
modifiedData: {
...DEFAULT_MODIFIED_DATA
},
reservedNames: {},
isLoading: true
};
var ONE_SIDE_RELATIONS = [
"oneWay",
"manyWay"
];
var getOppositeRelation = (originalRelation) => {
if (originalRelation === "manyToOne") {
return "oneToMany";
}
if (originalRelation === "oneToMany") {
return "manyToOne";
}
return originalRelation;
};
var findAttributeIndex = (schema, attributeToFind) => {
return schema.schema.attributes.findIndex(({ name }) => name === attributeToFind);
};
var slice = createSlice({
name: "data-manager",
initialState,
reducers: {
init: (state, action) => {
const { components, contentTypes, reservedNames } = action.payload;
state.components = components;
state.initialComponents = components;
state.initialContentTypes = contentTypes;
state.contentTypes = contentTypes;
state.reservedNames = reservedNames;
state.isLoading = false;
state.modifiedData = {
...DEFAULT_MODIFIED_DATA,
component: state.modifiedData.component ? components[state.modifiedData.component.uid] : void 0,
contentType: state.modifiedData.contentType ? contentTypes[state.modifiedData.contentType.uid] : void 0,
components: state.modifiedData.components ? Object.keys(state.modifiedData.components).reduce((acc, key) => {
acc[key] = components[key];
return acc;
}, {}) : {},
contentTypes: state.modifiedData.contentTypes ? Object.keys(state.modifiedData.contentTypes).reduce((acc, key) => {
acc[key] = contentTypes[key];
return acc;
}, {}) : {}
};
state.initialData = state.modifiedData;
},
addAttribute: (state, action) => {
var _a;
const { attributeToSet, forTarget, targetUid, shouldAddComponentToData } = action.payload;
const { name, ...rest } = attributeToSet;
delete rest.createComponent;
const pathToDataToEdit = [
"component",
"contentType"
].includes(forTarget) ? [
forTarget
] : [
forTarget,
targetUid
];
const currentAttributes = (0, import_get2.default)(state, [
"modifiedData",
...pathToDataToEdit,
"schema",
"attributes"
], []).slice();
const updatedAttributes = [
...currentAttributes,
{
...rest,
name
}
];
(0, import_set.default)(state, [
"modifiedData",
...pathToDataToEdit,
"schema",
"attributes"
], updatedAttributes);
if (shouldAddComponentToData) {
const componentToAddUID = rest.component;
const componentToAdd = state.components[componentToAddUID];
const isTemporaryComponent = componentToAdd == null ? void 0 : componentToAdd.isTemporary;
const hasComponentAlreadyBeenAdded = ((_a = state.modifiedData.components) == null ? void 0 : _a[componentToAddUID]) !== void 0;
if (isTemporaryComponent || hasComponentAlreadyBeenAdded) {
return;
}
if (!state.modifiedData.components) {
state.modifiedData.components = {};
}
state.modifiedData.components[componentToAddUID] = componentToAdd;
const nestedComponents = retrieveComponentsFromSchema(componentToAdd.schema.attributes, state.components);
const nestedComponentsToAddInModifiedData = nestedComponents.filter((compoUID) => {
return (0, import_get2.default)(state, [
"modifiedData",
"components",
compoUID
]) === void 0;
});
nestedComponentsToAddInModifiedData.forEach((compoUID) => {
const compoSchema = (0, import_get2.default)(state, [
"components",
compoUID
], {});
const isTemporary = compoSchema.isTemporary || false;
if (!isTemporary) {
if (!state.modifiedData.components) {
state.modifiedData.components = {};
}
state.modifiedData.components[compoUID] = compoSchema;
}
});
return;
}
const isCreatingRelationAttribute = rest.type === "relation";
if (isCreatingRelationAttribute) {
const target = rest.target;
const targetAttribute = rest.targetAttribute || null;
const relation = rest.relation;
const relationType = getRelationType(relation, targetAttribute);
const currentUid = (0, import_get2.default)(state, [
"modifiedData",
...pathToDataToEdit,
"uid"
]);
if (rest.type === "relation" && relationType !== "oneWay" && relationType !== "manyWay" && target === currentUid) {
const oppositeAttribute = {
name: targetAttribute,
relation: getOppositeRelation(relationType),
target,
targetAttribute: name,
type: "relation"
};
if (rest.private) {
oppositeAttribute.private = rest.private;
}
const attributesToSet = [
...updatedAttributes,
oppositeAttribute
];
(0, import_set.default)(state, [
"modifiedData",
...pathToDataToEdit,
"schema",
"attributes"
], attributesToSet);
}
}
},
addCreatedComponentToDynamicZone: (state, action) => {
const { dynamicZoneTarget, componentsToAdd } = action.payload;
const dzAttributeIndex = findAttributeIndex(state.modifiedData.contentType, dynamicZoneTarget);
componentsToAdd.forEach((componentUid) => {
if (!state.modifiedData.contentType) {
return;
}
if (!state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components) {
state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components = [];
}
state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components.push(componentUid);
});
},
addCustomFieldAttribute: (state, action) => {
const { attributeToSet, forTarget, targetUid } = action.payload;
const { name, ...rest } = attributeToSet;
const pathToDataToEdit = [
"component",
"contentType"
].includes(forTarget) ? [
forTarget
] : [
forTarget,
targetUid
];
const currentAttributes = (0, import_get2.default)(state, [
"modifiedData",
...pathToDataToEdit,
"schema",
"attributes"
], []).slice();
const updatedAttributes = [
...currentAttributes,
{
...rest,
name
}
];
(0, import_set.default)(state, [
"modifiedData",
...pathToDataToEdit,
"schema",
"attributes"
], updatedAttributes);
},
changeDynamicZoneComponents: (state, action) => {
var _a, _b, _c;
const { dynamicZoneTarget, newComponents } = action.payload;
const dzAttributeIndex = findAttributeIndex(state.modifiedData.contentType, dynamicZoneTarget);
const currentDZComponents = ((_a = state.modifiedData.contentType) == null ? void 0 : _a.schema.attributes[dzAttributeIndex]).components;
const updatedComponents = makeUnique([
...currentDZComponents,
...newComponents
]);
((_b = state.modifiedData.contentType) == null ? void 0 : _b.schema.attributes[dzAttributeIndex]).components = updatedComponents;
const nestedComponents = retrieveComponentsFromSchema(R((_c = state.modifiedData.contentType) == null ? void 0 : _c.schema.attributes), state.components);
const nestedComponentsToAddInModifiedData = nestedComponents.filter((compoUID) => {
return (0, import_get2.default)(state, [
"modifiedData",
"components",
compoUID
]) === void 0;
});
nestedComponentsToAddInModifiedData.forEach((compoUID) => {
const compoSchema = (0, import_get2.default)(state, [
"components",
compoUID
], {});
const isTemporary = compoSchema.isTemporary || false;
if (!isTemporary) {
if (!state.modifiedData.components) {
state.modifiedData.components = {};
}
state.modifiedData.components[compoUID] = compoSchema;
}
});
},
createComponentSchema: (state, action) => {
const { uid, data, componentCategory, shouldAddComponentToData } = action.payload;
const newSchema = {
uid,
isTemporary: true,
category: componentCategory,
schema: {
...data,
attributes: []
}
};
state.components[uid] = newSchema;
if (shouldAddComponentToData) {
state.modifiedData.components[uid] = newSchema;
}
},
createSchema: (state, action) => {
const { uid, data } = action.payload;
const newSchema = {
uid,
isTemporary: true,
schema: {
...data,
attributes: []
}
};
state.contentTypes[uid] = newSchema;
},
editAttribute: (state, action) => {
const { attributeToSet, forTarget, targetUid, initialAttribute } = action.payload;
const { name, ...rest } = attributeToSet;
const initialAttributeName = initialAttribute.name;
const pathToDataToEdit = [
"component",
"contentType"
].includes(forTarget) ? [
forTarget
] : [
forTarget,
targetUid
];
const initialAttributeIndex = findAttributeIndex((0, import_get2.default)(state, [
"modifiedData",
...pathToDataToEdit
]), initialAttributeName);
const isEditingRelation = rest.type === "relation";
if (!isEditingRelation) {
(0, import_set.default)(state, [
"modifiedData",
...pathToDataToEdit,
"schema",
"attributes",
initialAttributeIndex
], attributeToSet);
return;
}
const updatedAttributes = (0, import_get2.default)(state, [
"modifiedData",
...pathToDataToEdit,
"schema",
"attributes"
]).slice();
const toSet = {
name,
relation: rest.relation,
target: rest.target,
targetAttribute: rest.targetAttribute,
type: "relation"
};
if (rest.private) {
toSet.private = rest.private;
}
if (rest.pluginOptions) {
toSet.pluginOptions = rest.pluginOptions;
}
const currentAttributeIndex = updatedAttributes.findIndex((value) => {
return value.name !== void 0 && value.name === initialAttribute.name;
});
if (currentAttributeIndex !== -1) {
updatedAttributes.splice(currentAttributeIndex, 1, toSet);
}
let oppositeAttributeNameToRemove = null;
let oppositeAttributeNameToUpdate = null;
let oppositeAttributeToCreate = null;
let initialOppositeAttribute = null;
const currentUid = (0, import_get2.default)(state, [
"modifiedData",
...pathToDataToEdit,
"uid"
]);
const didChangeTargetRelation = initialAttribute.target !== rest.target;
const didCreateInternalRelation = rest.target === currentUid;
const relationType = getRelationType(rest.relation, rest.targetAttribute);
const initialRelationType = getRelationType(initialAttribute.relation, initialAttribute.targetAttribute);
const hadInternalRelation = initialAttribute.target === currentUid;
const didChangeRelationType = initialRelationType !== relationType;
const shouldRemoveOppositeAttributeBecauseOfTargetChange = didChangeTargetRelation && !didCreateInternalRelation && hadInternalRelation && isEditingRelation;
const shouldRemoveOppositeAttributeBecauseOfRelationTypeChange = didChangeRelationType && hadInternalRelation && [
"oneWay",
"manyWay"
].includes(relationType) && isEditingRelation;
const shouldUpdateOppositeAttributeBecauseOfRelationTypeChange = !ONE_SIDE_RELATIONS.includes(initialRelationType) && !ONE_SIDE_RELATIONS.includes(relationType) && hadInternalRelation && didCreateInternalRelation && isEditingRelation;
const shouldCreateOppositeAttributeBecauseOfRelationTypeChange = ONE_SIDE_RELATIONS.includes(initialRelationType) && !ONE_SIDE_RELATIONS.includes(relationType) && hadInternalRelation && didCreateInternalRelation && isEditingRelation;
const shouldCreateOppositeAttributeBecauseOfTargetChange = didChangeTargetRelation && didCreateInternalRelation && !ONE_SIDE_RELATIONS.includes(relationType);
if (shouldRemoveOppositeAttributeBecauseOfTargetChange || shouldRemoveOppositeAttributeBecauseOfRelationTypeChange) {
oppositeAttributeNameToRemove = initialAttribute.targetAttribute;
}
if (oppositeAttributeNameToRemove) {
const indexToRemove = updatedAttributes.findIndex((value) => value.name === oppositeAttributeNameToRemove);
updatedAttributes.splice(indexToRemove, 1);
}
if (!shouldRemoveOppositeAttributeBecauseOfTargetChange) {
const initialTargetContentType = (0, import_get2.default)(state, [
"initialContentTypes",
initialAttribute.target
]);
if (initialTargetContentType) {
const oppositeAttributeIndex = findAttributeIndex(initialTargetContentType, initialAttribute.targetAttribute);
initialOppositeAttribute = (0, import_get2.default)(state, [
"initialContentTypes",
initialAttribute.target,
"schema",
"attributes",
oppositeAttributeIndex
]);
}
}
if (shouldCreateOppositeAttributeBecauseOfRelationTypeChange || shouldCreateOppositeAttributeBecauseOfTargetChange) {
oppositeAttributeToCreate = {
name: rest.targetAttribute,
relation: getOppositeRelation(relationType),
target: rest.target,
targetAttribute: name,
type: "relation"
};
if (rest.private) {
oppositeAttributeToCreate.private = rest.private;
}
if (initialOppositeAttribute && initialOppositeAttribute.pluginOptions) {
oppositeAttributeToCreate.pluginOptions = initialOppositeAttribute.pluginOptions;
}
const indexOfInitialAttribute = updatedAttributes.findIndex(({ name: name2 }) => name2 === initialAttribute.name);
const indexOfUpdatedAttribute = updatedAttributes.findIndex(({ name: attrName }) => name === attrName);
const indexToInsert = (indexOfInitialAttribute === -1 ? indexOfUpdatedAttribute : indexOfInitialAttribute) + 1;
updatedAttributes.splice(indexToInsert, 0, oppositeAttributeToCreate);
}
if (shouldUpdateOppositeAttributeBecauseOfRelationTypeChange) {
oppositeAttributeNameToUpdate = initialAttribute.targetAttribute;
oppositeAttributeToCreate = {
name: rest.targetAttribute,
relation: getOppositeRelation(relationType),
target: rest.target,
targetAttribute: name,
type: "relation"
};
if (rest.private) {
oppositeAttributeToCreate.private = rest.private;
}
if (initialOppositeAttribute && initialOppositeAttribute.pluginOptions) {
oppositeAttributeToCreate.pluginOptions = initialOppositeAttribute.pluginOptions;
}
if (oppositeAttributeNameToUpdate) {
const indexToUpdate = updatedAttributes.findIndex(({ name: name2 }) => name2 === oppositeAttributeNameToUpdate);
updatedAttributes.splice(indexToUpdate, 1, oppositeAttributeToCreate);
}
}
(0, import_set.default)(state, [
"modifiedData",
...pathToDataToEdit,
"schema",
"attributes"
], updatedAttributes);
},
editCustomFieldAttribute: (state, action) => {
const { forTarget, targetUid, initialAttribute, attributeToSet } = action.payload;
const initialAttributeName = initialAttribute.name;
const pathToDataToEdit = [
"component",
"contentType"
].includes(forTarget) ? [
forTarget
] : [
forTarget,
targetUid
];
const initialAttributeIndex = findAttributeIndex((0, import_get2.default)(state, [
"modifiedData",
...pathToDataToEdit
]), initialAttributeName);
(0, import_set.default)(state, [
"modifiedData",
...pathToDataToEdit,
"schema",
"attributes",
initialAttributeIndex
], attributeToSet);
},
updateInitialState: (state) => {
state.initialData = state.modifiedData;
},
deleteNotSavedType: (state) => {
state.contentTypes = state.initialContentTypes;
state.components = state.initialComponents;
},
reloadPlugin: () => {
return initialState;
},
removeComponentFromDynamicZone: (state, action) => {
const { dzName, componentToRemoveIndex } = action.payload;
const dzAttributeIndex = findAttributeIndex(state.modifiedData.contentType, dzName);
if (state.modifiedData.contentType) {
state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components.splice(componentToRemoveIndex, 1);
}
},
removeField: (state, action) => {
var _a, _b, _c;
const { mainDataKey, attributeToRemoveName } = action.payload;
const pathToAttributes = [
"modifiedData",
mainDataKey,
"schema",
"attributes"
];
const attributeToRemoveIndex = findAttributeIndex(state.modifiedData[mainDataKey], attributeToRemoveName);
const pathToAttributeToRemove = [
...pathToAttributes,
attributeToRemoveIndex
];
const attributeToRemoveData = (0, import_get2.default)(state, pathToAttributeToRemove);
const isRemovingRelationAttribute = attributeToRemoveData.type === "relation";
const canTheAttributeToRemoveHaveARelationWithItself = mainDataKey === "contentType";
if (isRemovingRelationAttribute && canTheAttributeToRemoveHaveARelationWithItself) {
const { target, relation, targetAttribute } = attributeToRemoveData;
const relationType = getRelationType(relation, targetAttribute);
const uid = (_a = state.modifiedData.contentType) == null ? void 0 : _a.uid;
const shouldRemoveOppositeAttribute = target === uid && !ONE_SIDE_RELATIONS.includes(relationType);
if (shouldRemoveOppositeAttribute) {
const attributes = (_b = state.modifiedData[mainDataKey]) == null ? void 0 : _b.schema.attributes.slice();
const nextAttributes = attributes.filter((attribute) => {
if (attribute.name === attributeToRemoveName) {
return false;
}
if (attribute.target === uid && attribute.targetAttribute === attributeToRemoveName) {
return false;
}
return true;
});
const schema = state.modifiedData[mainDataKey];
if (schema) {
schema.schema.attributes = nextAttributes;
}
return;
}
}
const uidFieldsToUpdate = state.modifiedData[mainDataKey].schema.attributes.slice().reduce((acc, current) => {
if (current.type !== "uid") {
return acc;
}
if (current.targetField !== attributeToRemoveName) {
return acc;
}
acc.push(current.name);
return acc;
}, []);
uidFieldsToUpdate.forEach((fieldName) => {
var _a2;
const fieldIndex = findAttributeIndex(state.modifiedData[mainDataKey], fieldName);
(_a2 = state.modifiedData[mainDataKey]) == null ? true : delete _a2.schema.attributes[fieldIndex].targetField;
});
(_c = state.modifiedData[mainDataKey]) == null ? void 0 : _c.schema.attributes.splice(attributeToRemoveIndex, 1);
},
removeFieldFromDisplayedComponent: (state, action) => {
var _a, _b, _c, _d, _e;
const { attributeToRemoveName, componentUid } = action.payload;
const attributeToRemoveIndex = findAttributeIndex((_a = state.modifiedData.components) == null ? void 0 : _a[componentUid], attributeToRemoveName);
(_e = (_d = (_c = (_b = state.modifiedData.components) == null ? void 0 : _b[componentUid]) == null ? void 0 : _c.schema) == null ? void 0 : _d.attributes) == null ? void 0 : _e.splice(attributeToRemoveIndex, 1);
},
setModifiedData: (state, action) => {
const { schemaToSet, hasJustCreatedSchema } = action.payload;
const schema = {
...DEFAULT_MODIFIED_DATA,
...schemaToSet
};
state.initialData = schema;
state.modifiedData = schema;
if (!hasJustCreatedSchema) {
state.components = state.initialComponents;
state.contentTypes = state.initialContentTypes;
}
},
updateSchema: (state, action) => {
const { data, schemaType } = action.payload;
const schema = state.modifiedData[schemaType];
if (!schema) {
return;
}
schema.schema.displayName = data.displayName;
if (schemaType === "component") {
const { uid } = action.payload;
schema.category = data.category;
schema.schema.icon = data.icon;
const addedComponent = R(schema);
state.components[uid] = addedComponent;
} else {
schema.schema.kind = data.kind;
}
}
}
});
var { reducer, actions } = slice;
// node_modules/@strapi/content-type-builder/dist/admin/utils/nameToSlug.mjs
var import_slugify = __toESM(require_slugify(), 1);
var nameToSlug = (name) => (0, import_slugify.default)(name, {
separator: "-"
});
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/utils/createUid.mjs
var createUid = (name) => {
const modelName = nameToSlug(name);
return `api::${modelName}.${modelName}`;
};
var createComponentUid = (name, category) => {
return `${nameToSlug(category)}.${nameToSlug(name)}`;
};
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/reducer.mjs
var import_set2 = __toESM(require_set(), 1);
var import_snakeCase = __toESM(require_snakeCase(), 1);
var import_pluralize = __toESM(require_pluralize(), 1);
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs
var customFieldDefaultOptionsReducer = (acc, option) => {
if (option.items) {
return option.items.reduce(customFieldDefaultOptionsReducer, acc);
}
if ("defaultValue" in option) {
const { name, defaultValue } = option;
acc.push({
name,
defaultValue
});
}
return acc;
};
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/utils/relations.mjs
var shouldPluralizeName = (nature) => [
"manyToMany",
"oneToMany",
"manyWay"
].includes(nature) ? 2 : 1;
var shouldPluralizeTargetAttribute = (nature) => [
"manyToMany",
"manyToOne"
].includes(nature) ? 2 : 1;
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/reducer.mjs
var initialState2 = {
formErrors: {},
modifiedData: {},
initialData: {},
componentToCreate: {},
isCreatingComponentWhileAddingAField: false
};
var slice2 = createSlice({
name: "formModal",
initialState: initialState2,
reducers: {
onChange: (state, action) => {
const { keys, value } = action.payload;
const obj = state.modifiedData;
const hasDefaultValue = Boolean(obj.default);
if (hasDefaultValue && keys.length === 1 && keys.includes("type")) {
const previousType = obj.type;
if (previousType && [
"date",
"datetime",
"time"
].includes(previousType)) {
delete state.modifiedData.default;
}
}
(0, import_set2.default)(state, [
"modifiedData",
...keys
], value);
},
onChangeRelationTarget: (state, action) => {
const { target: { oneThatIsCreatingARelationWithAnother, selectedContentTypeFriendlyName, targetContentTypeAllowedRelations, value } } = action.payload;
let didChangeRelationTypeBecauseOfRestrictedRelation = false;
let changedRelationType = null;
(0, import_set2.default)(state, [
"modifiedData",
"target"
], value);
const modifiedData = state.modifiedData;
if (Array.isArray(targetContentTypeAllowedRelations)) {
const currentRelationType = getRelationType(modifiedData.relation, modifiedData.targetAttribute);
if (currentRelationType && !targetContentTypeAllowedRelations.includes(currentRelationType)) {
const relationToSet = targetContentTypeAllowedRelations[0];
didChangeRelationTypeBecauseOfRestrictedRelation = true;
changedRelationType = relationToSet;
if (relationToSet === "oneWay") {
(0, import_set2.default)(state, [
"modifiedData",
"relation"
], "oneToOne");
} else if (relationToSet === "manyWay") {
(0, import_set2.default)(state, [
"modifiedData",
"relation"
], "oneToMany");
} else {
(0, import_set2.default)(state, [
"modifiedData",
"relation"
], relationToSet);
}
}
}
let nameToSet;
if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType) {
nameToSet = (0, import_pluralize.default)((0, import_snakeCase.default)(nameToSlug(selectedContentTypeFriendlyName)), shouldPluralizeName(changedRelationType));
} else {
nameToSet = (0, import_pluralize.default)((0, import_snakeCase.default)(nameToSlug(selectedContentTypeFriendlyName)), shouldPluralizeName(modifiedData.relation));
}
(0, import_set2.default)(state, [
"modifiedData",
"name"
], nameToSet);
const currentTargetAttribute = state.modifiedData.targetAttribute;
if (currentTargetAttribute === null) {
return;
}
if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType && [
"oneWay",
"manyWay"
].includes(changedRelationType)) {
(0, import_set2.default)(state, [
"modifiedData",
"targetAttribute"
], null);
return;
}
const targetAttributeToSet = (0, import_pluralize.default)((0, import_snakeCase.default)(nameToSlug(oneThatIsCreatingARelationWithAnother)), shouldPluralizeTargetAttribute(modifiedData.relation));
(0, import_set2.default)(state, [
"modifiedData",
"targetAttribute"
], targetAttributeToSet);
},
onChangeRelationType: (state, action) => {
const { target: { oneThatIsCreatingARelationWithAnother, value } } = action.payload;
const currentName = state.modifiedData.name;
if (![
"oneWay",
"manyWay"
].includes(value)) {
(0, import_set2.default)(state, [
"modifiedData",
"relation"
], value);
const currentTargetAttribute = state.modifiedData.targetAttribute;
(0, import_set2.default)(state, [
"modifiedData",
"name"
], (0, import_pluralize.default)((0, import_snakeCase.default)(nameToSlug(currentName)), shouldPluralizeName(value)));
(0, import_set2.default)(state, [
"modifiedData",
"targetAttribute"
], (0, import_pluralize.default)(currentTargetAttribute || (0, import_snakeCase.default)(nameToSlug(oneThatIsCreatingARelationWithAnother)), shouldPluralizeTargetAttribute(value)));
return;
}
if (value === "oneWay") {
(0, import_set2.default)(state, [
"modifiedData",
"relation"
], "oneToOne");
(0, import_set2.default)(state, [
"modifiedData",
"targetAttribute"
], null);
(0, import_set2.default)(state, [
"modifiedData",
"name"
], (0, import_pluralize.default)((0, import_snakeCase.default)(currentName), 1));
return;
}
(0, import_set2.default)(state, [
"modifiedData",
"relation"
], "oneToMany");
(0, import_set2.default)(state, [
"modifiedData",
"targetAttribute"
], null);
(0, import_set2.default)(state, [
"modifiedData",
"name"
], (0, import_pluralize.default)((0, import_snakeCase.default)(currentName), 2));
},
resetProps: () => {
return initialState2;
},
resetPropsAndSetFormForAddingAnExistingCompo: (state, action) => {
const { options = {} } = action.payload;
return {
...initialState2,
modifiedData: {
type: "component",
repeatable: true,
...options
}
};
},
resetPropsAndSaveCurrentData: (state, action) => {
const { options = {} } = action.payload;
const componentToCreate = state.modifiedData.componentToCreate;
const modifiedData = {
displayName: componentToCreate.displayName,
type: "component",
repeatable: false,
...options,
component: createComponentUid(componentToCreate.displayName, componentToCreate.category)
};
return {
...initialState2,
componentToCreate,
modifiedData,
isCreatingComponentWhileAddingAField: state.modifiedData.createComponent
};
},
resetPropsAndSetTheFormForAddingACompoToADz: (state) => {
const createdDZ = state.modifiedData;
const dataToSet = {
...createdDZ,
createComponent: true,
componentToCreate: {
type: "component"
}
};
return {
...initialState2,
modifiedData: dataToSet
};
},
setDataToEdit: (state, action) => {
const { data } = action.payload;
state.modifiedData = data;
state.initialData = data;
},
setAttributeDataSchema: (state, action) => {
const { isEditing } = action.payload;
if (isEditing) {
const { modifiedDataToSetForEditing } = action.payload;
state.modifiedData = modifiedDataToSetForEditing;
state.initialData = modifiedDataToSetForEditing;
return;
}
const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;
let dataToSet;
if (attributeType === "component") {
if (step === "1") {
dataToSet = {
type: "component",
createComponent: true,
componentToCreate: {
type: "component"
}
};
} else {
dataToSet = {
...options,
type: "component",
repeatable: true
};
}
} else if (attributeType === "dynamiczone") {
dataToSet = {
...options,
type: "dynamiczone",
components: []
};
} else if (attributeType === "text") {
dataToSet = {
...options,
type: "string"
};
} else if (attributeType === "number" || attributeType === "date") {
dataToSet = options;
} else if (attributeType === "media") {
dataToSet = {
allowedTypes: [
"images",
"files",
"videos",
"audios"
],
type: "media",
multiple: true,
...options
};
} else if (attributeType === "enumeration") {
dataToSet = {
...options,
type: "enumeration",
enum: []
};
} else if (attributeType === "relation") {
dataToSet = {
name: (0, import_snakeCase.default)(nameToSetForRelation),
relation: "oneToOne",
targetAttribute: null,
target: targetUid,
type: "relation"
};
} else {
dataToSet = {
...options,
type: attributeType,
default: null
};
}
state.modifiedData = dataToSet;
},
setCustomFieldDataSchema: (state, action) => {
var _a, _b;
const { isEditing } = action.payload;
if (isEditing) {
const { modifiedDataToSetForEditing } = action.payload;
state.modifiedData = modifiedDataToSetForEditing;
state.initialData = modifiedDataToSetForEditing;
return;
}
const { customField, options = {} } = action.payload;
state.modifiedData = {
...options,
type: customField.type
};
const allOptions = [
...((_a = customField == null ? void 0 : customField.options) == null ? void 0 : _a.base) || [],
...((_b = customField == null ? void 0 : customField.options) == null ? void 0 : _b.advanced) || []
];
const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);
if (optionDefaults.length) {
optionDefaults.forEach(({ name, defaultValue }) => (0, import_set2.default)(state.modifiedData, name, defaultValue));
}
},
setDynamicZoneDataSchema: (state, action) => {
const { attributeToEdit } = action.payload;
state.modifiedData = attributeToEdit;
state.initialData = attributeToEdit;
},
setErrors: (state, action) => {
state.formErrors = action.payload.errors;
}
}
});
var { actions: actions2, reducer: reducer2 } = slice2;
export {
PERMISSIONS,
MAX_COMPONENT_DEPTH,
getRelationType,
makeUnique,
retrieveComponentsFromSchema,
initialState,
reducer,
actions,
require_slugify,
nameToSlug,
createUid,
createComponentUid,
initialState2,
actions2,
reducer2,
AutoReloadOverlayBlockerProvider,
useAutoReloadOverlayBlocker
};
//# sourceMappingURL=chunk-7HX4OIS5.js.map