11162 lines
380 KiB
JavaScript
11162 lines
380 KiB
JavaScript
import {
|
||
require_arrayIncludesWith
|
||
} from "./chunk-WJHEGEPQ.js";
|
||
import {
|
||
AttributeIcon,
|
||
COMPONENT_ICONS,
|
||
DataManagerContext,
|
||
FormModalNavigationContext,
|
||
getTrad,
|
||
useDataManager,
|
||
useFormModalNavigation
|
||
} from "./chunk-6EDW4YHC.js";
|
||
import {
|
||
require_sortBy
|
||
} from "./chunk-FSHORG2W.js";
|
||
import "./chunk-T2YF43GM.js";
|
||
import {
|
||
require_groupBy
|
||
} from "./chunk-MUOUY6GG.js";
|
||
import "./chunk-NE3KAGU6.js";
|
||
import {
|
||
AutoReloadOverlayBlockerProvider,
|
||
MAX_COMPONENT_DEPTH,
|
||
PERMISSIONS,
|
||
actions,
|
||
actions2,
|
||
createComponentUid,
|
||
createUid,
|
||
getRelationType,
|
||
initialState,
|
||
initialState2,
|
||
makeUnique,
|
||
nameToSlug,
|
||
require_slugify,
|
||
retrieveComponentsFromSchema,
|
||
useAutoReloadOverlayBlocker
|
||
} from "./chunk-7HX4OIS5.js";
|
||
import "./chunk-6LY4MOO2.js";
|
||
import {
|
||
pluginId
|
||
} from "./chunk-SQLDXQZE.js";
|
||
import "./chunk-QF6GPHA4.js";
|
||
import "./chunk-JRLAXHTE.js";
|
||
import "./chunk-E4IFZ6ZT.js";
|
||
import {
|
||
require_pluralize
|
||
} from "./chunk-XNACAI67.js";
|
||
import "./chunk-QLEKUQKW.js";
|
||
import "./chunk-4J3VOWQV.js";
|
||
import {
|
||
useGuidedTour
|
||
} from "./chunk-PFI4R5WA.js";
|
||
import "./chunk-B3BGMYGX.js";
|
||
import "./chunk-W6ICJ5TB.js";
|
||
import "./chunk-IHYIPMY2.js";
|
||
import "./chunk-UWHSN2C7.js";
|
||
import "./chunk-ERK7O2GM.js";
|
||
import {
|
||
useFetchClient
|
||
} from "./chunk-FCIM6RNO.js";
|
||
import "./chunk-J33IXKN4.js";
|
||
import {
|
||
ConfirmDialog
|
||
} from "./chunk-NP53ZCXD.js";
|
||
import {
|
||
formatISO
|
||
} from "./chunk-ED4XR3VQ.js";
|
||
import "./chunk-MBK4V2X7.js";
|
||
import {
|
||
require_omit
|
||
} from "./chunk-5ESYXDTN.js";
|
||
import "./chunk-K65KIEAL.js";
|
||
import "./chunk-B7ZLODDO.js";
|
||
import "./chunk-PW7XKCYO.js";
|
||
import {
|
||
require_set
|
||
} from "./chunk-RMBEU7DO.js";
|
||
import "./chunk-RI2W2UZ6.js";
|
||
import "./chunk-IY256CNP.js";
|
||
import {
|
||
errorsTrads
|
||
} from "./chunk-IFOFBKTA.js";
|
||
import {
|
||
create3 as create,
|
||
create4 as create2,
|
||
create5 as create3,
|
||
create6 as create4,
|
||
create7 as create5,
|
||
create8 as create6,
|
||
require_camelCase,
|
||
require_has,
|
||
require_upperFirst
|
||
} from "./chunk-XLSIZGJF.js";
|
||
import "./chunk-EGNP2T5O.js";
|
||
import {
|
||
useAppInfo,
|
||
useTracking
|
||
} from "./chunk-GSN7U3BK.js";
|
||
import "./chunk-T3B5F2LV.js";
|
||
import {
|
||
require_castSlice,
|
||
require_hasUnicode,
|
||
require_stringToArray
|
||
} from "./chunk-YXDCVYVT.js";
|
||
import "./chunk-QIJGNK42.js";
|
||
import "./chunk-7PUJSL55.js";
|
||
import "./chunk-C2ZJTFO7.js";
|
||
import "./chunk-C75BZXCZ.js";
|
||
import "./chunk-APGTER6B.js";
|
||
import "./chunk-ZM6TT53G.js";
|
||
import "./chunk-6AXVGFVQ.js";
|
||
import "./chunk-BFLP6DBI.js";
|
||
import "./chunk-CMLQV3Z2.js";
|
||
import "./chunk-MMOBCIZG.js";
|
||
import "./chunk-IGCTEXRF.js";
|
||
import {
|
||
Layouts
|
||
} from "./chunk-TIVRAWTC.js";
|
||
import "./chunk-PQINNV4N.js";
|
||
import {
|
||
require_isEqual
|
||
} from "./chunk-VYSYYPOB.js";
|
||
import {
|
||
ForwardRef$J as ForwardRef$J2,
|
||
Page
|
||
} from "./chunk-5CAWUBTQ.js";
|
||
import {
|
||
useAuth,
|
||
useStrapiApp
|
||
} from "./chunk-W2TBR6J3.js";
|
||
import "./chunk-QEGMJR7H.js";
|
||
import {
|
||
require_arrayIncludes,
|
||
require_baseConvert,
|
||
require_baseProperty,
|
||
require_get,
|
||
require_lib,
|
||
require_noop,
|
||
require_toInteger,
|
||
require_toNumber
|
||
} from "./chunk-LCL5TIBZ.js";
|
||
import {
|
||
createSelector,
|
||
shallowEqual,
|
||
useDispatch,
|
||
useSelector
|
||
} from "./chunk-WOQNBAGN.js";
|
||
import "./chunk-BHLYCXQ7.js";
|
||
import "./chunk-76QM3EFM.js";
|
||
import {
|
||
require_Set,
|
||
require_SetCache,
|
||
require_baseGetTag,
|
||
require_baseKeys,
|
||
require_baseToString,
|
||
require_baseUnary,
|
||
require_cacheHas,
|
||
require_getTag,
|
||
require_isArray,
|
||
require_isArrayLike,
|
||
require_isObject,
|
||
require_isObjectLike,
|
||
require_nodeUtil,
|
||
require_setToArray,
|
||
require_toString
|
||
} from "./chunk-CE4VABH2.js";
|
||
import "./chunk-5VODLFKF.js";
|
||
import {
|
||
useNotification
|
||
} from "./chunk-N55RVBRV.js";
|
||
import {
|
||
Box,
|
||
Breadcrumbs,
|
||
Button,
|
||
CheckboxImpl,
|
||
Combobox,
|
||
Crumb,
|
||
DatePicker$1,
|
||
DateTimePicker,
|
||
Dialog,
|
||
Divider,
|
||
Field,
|
||
Flex,
|
||
Grid,
|
||
IconButton,
|
||
JSONInput,
|
||
KeyboardNavigable,
|
||
Link as Link2,
|
||
LinkButton,
|
||
Menu,
|
||
Modal,
|
||
MultiSelectNested,
|
||
NumberInput,
|
||
Option,
|
||
Searchbar,
|
||
SingleSelect,
|
||
SingleSelectOption,
|
||
SubNav,
|
||
SubNavHeader,
|
||
SubNavLink,
|
||
SubNavLinkSection,
|
||
SubNavSection,
|
||
SubNavSections,
|
||
Tabs,
|
||
TextButton,
|
||
TextInput,
|
||
Textarea,
|
||
TimePicker$1,
|
||
Toggle,
|
||
TooltipImpl,
|
||
Typography,
|
||
VisuallyHidden,
|
||
inputFocusStyle,
|
||
useCollator,
|
||
useFilter,
|
||
useIntl
|
||
} from "./chunk-7XB6XSWQ.js";
|
||
import "./chunk-5ZC4PE57.js";
|
||
import {
|
||
Link,
|
||
NavLink,
|
||
Navigate,
|
||
Route,
|
||
Routes,
|
||
useLocation,
|
||
useMatch,
|
||
useNavigate
|
||
} from "./chunk-TUXTO2Z5.js";
|
||
import "./chunk-FOD4ENRR.js";
|
||
import {
|
||
ForwardRef$1J,
|
||
ForwardRef$1L,
|
||
ForwardRef$1N,
|
||
ForwardRef$1h,
|
||
ForwardRef$27,
|
||
ForwardRef$29,
|
||
ForwardRef$2b,
|
||
ForwardRef$3B,
|
||
ForwardRef$3D,
|
||
ForwardRef$5j,
|
||
ForwardRef$J,
|
||
ForwardRef$X,
|
||
ForwardRef$j
|
||
} from "./chunk-WRD5KPDH.js";
|
||
import {
|
||
require_jsx_runtime
|
||
} from "./chunk-NIAJZ5MX.js";
|
||
import {
|
||
dt
|
||
} from "./chunk-ACIMPXWY.js";
|
||
import {
|
||
require_react
|
||
} from "./chunk-MADUDGYZ.js";
|
||
import {
|
||
__commonJS,
|
||
__toESM
|
||
} from "./chunk-PLDDJCW6.js";
|
||
|
||
// node_modules/lodash/isString.js
|
||
var require_isString = __commonJS({
|
||
"node_modules/lodash/isString.js"(exports, module) {
|
||
var baseGetTag = require_baseGetTag();
|
||
var isArray = require_isArray();
|
||
var isObjectLike = require_isObjectLike();
|
||
var stringTag = "[object String]";
|
||
function isString(value) {
|
||
return typeof value == "string" || !isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag;
|
||
}
|
||
module.exports = isString;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/_asciiSize.js
|
||
var require_asciiSize = __commonJS({
|
||
"node_modules/lodash/_asciiSize.js"(exports, module) {
|
||
var baseProperty = require_baseProperty();
|
||
var asciiSize = baseProperty("length");
|
||
module.exports = asciiSize;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/_unicodeSize.js
|
||
var require_unicodeSize = __commonJS({
|
||
"node_modules/lodash/_unicodeSize.js"(exports, module) {
|
||
var rsAstralRange = "\\ud800-\\udfff";
|
||
var rsComboMarksRange = "\\u0300-\\u036f";
|
||
var reComboHalfMarksRange = "\\ufe20-\\ufe2f";
|
||
var rsComboSymbolsRange = "\\u20d0-\\u20ff";
|
||
var rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;
|
||
var rsVarRange = "\\ufe0e\\ufe0f";
|
||
var rsAstral = "[" + rsAstralRange + "]";
|
||
var rsCombo = "[" + rsComboRange + "]";
|
||
var rsFitz = "\\ud83c[\\udffb-\\udfff]";
|
||
var rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")";
|
||
var rsNonAstral = "[^" + rsAstralRange + "]";
|
||
var rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}";
|
||
var rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]";
|
||
var rsZWJ = "\\u200d";
|
||
var reOptMod = rsModifier + "?";
|
||
var rsOptVar = "[" + rsVarRange + "]?";
|
||
var rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*";
|
||
var rsSeq = rsOptVar + reOptMod + rsOptJoin;
|
||
var rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
|
||
var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
|
||
function unicodeSize(string) {
|
||
var result = reUnicode.lastIndex = 0;
|
||
while (reUnicode.test(string)) {
|
||
++result;
|
||
}
|
||
return result;
|
||
}
|
||
module.exports = unicodeSize;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/_stringSize.js
|
||
var require_stringSize = __commonJS({
|
||
"node_modules/lodash/_stringSize.js"(exports, module) {
|
||
var asciiSize = require_asciiSize();
|
||
var hasUnicode = require_hasUnicode();
|
||
var unicodeSize = require_unicodeSize();
|
||
function stringSize(string) {
|
||
return hasUnicode(string) ? unicodeSize(string) : asciiSize(string);
|
||
}
|
||
module.exports = stringSize;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/size.js
|
||
var require_size = __commonJS({
|
||
"node_modules/lodash/size.js"(exports, module) {
|
||
var baseKeys = require_baseKeys();
|
||
var getTag = require_getTag();
|
||
var isArrayLike = require_isArrayLike();
|
||
var isString = require_isString();
|
||
var stringSize = require_stringSize();
|
||
var mapTag = "[object Map]";
|
||
var setTag = "[object Set]";
|
||
function size2(collection) {
|
||
if (collection == null) {
|
||
return 0;
|
||
}
|
||
if (isArrayLike(collection)) {
|
||
return isString(collection) ? stringSize(collection) : collection.length;
|
||
}
|
||
var tag = getTag(collection);
|
||
if (tag == mapTag || tag == setTag) {
|
||
return collection.size;
|
||
}
|
||
return baseKeys(collection).length;
|
||
}
|
||
module.exports = size2;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/toLower.js
|
||
var require_toLower = __commonJS({
|
||
"node_modules/lodash/toLower.js"(exports, module) {
|
||
var toString = require_toString();
|
||
function toLower2(value) {
|
||
return toString(value).toLowerCase();
|
||
}
|
||
module.exports = toLower2;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/_baseIsRegExp.js
|
||
var require_baseIsRegExp = __commonJS({
|
||
"node_modules/lodash/_baseIsRegExp.js"(exports, module) {
|
||
var baseGetTag = require_baseGetTag();
|
||
var isObjectLike = require_isObjectLike();
|
||
var regexpTag = "[object RegExp]";
|
||
function baseIsRegExp(value) {
|
||
return isObjectLike(value) && baseGetTag(value) == regexpTag;
|
||
}
|
||
module.exports = baseIsRegExp;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/isRegExp.js
|
||
var require_isRegExp = __commonJS({
|
||
"node_modules/lodash/isRegExp.js"(exports, module) {
|
||
var baseIsRegExp = require_baseIsRegExp();
|
||
var baseUnary = require_baseUnary();
|
||
var nodeUtil = require_nodeUtil();
|
||
var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;
|
||
var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
|
||
module.exports = isRegExp;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/truncate.js
|
||
var require_truncate = __commonJS({
|
||
"node_modules/lodash/truncate.js"(exports, module) {
|
||
var baseToString = require_baseToString();
|
||
var castSlice = require_castSlice();
|
||
var hasUnicode = require_hasUnicode();
|
||
var isObject = require_isObject();
|
||
var isRegExp = require_isRegExp();
|
||
var stringSize = require_stringSize();
|
||
var stringToArray = require_stringToArray();
|
||
var toInteger = require_toInteger();
|
||
var toString = require_toString();
|
||
var DEFAULT_TRUNC_LENGTH = 30;
|
||
var DEFAULT_TRUNC_OMISSION = "...";
|
||
var reFlags = /\w*$/;
|
||
function truncate2(string, options2) {
|
||
var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION;
|
||
if (isObject(options2)) {
|
||
var separator = "separator" in options2 ? options2.separator : separator;
|
||
length = "length" in options2 ? toInteger(options2.length) : length;
|
||
omission = "omission" in options2 ? baseToString(options2.omission) : omission;
|
||
}
|
||
string = toString(string);
|
||
var strLength = string.length;
|
||
if (hasUnicode(string)) {
|
||
var strSymbols = stringToArray(string);
|
||
strLength = strSymbols.length;
|
||
}
|
||
if (length >= strLength) {
|
||
return string;
|
||
}
|
||
var end = length - stringSize(omission);
|
||
if (end < 1) {
|
||
return omission;
|
||
}
|
||
var result = strSymbols ? castSlice(strSymbols, 0, end).join("") : string.slice(0, end);
|
||
if (separator === void 0) {
|
||
return result + omission;
|
||
}
|
||
if (strSymbols) {
|
||
end += result.length - end;
|
||
}
|
||
if (isRegExp(separator)) {
|
||
if (string.slice(end).search(separator)) {
|
||
var match, substring = result;
|
||
if (!separator.global) {
|
||
separator = RegExp(separator.source, toString(reFlags.exec(separator)) + "g");
|
||
}
|
||
separator.lastIndex = 0;
|
||
while (match = separator.exec(substring)) {
|
||
var newEnd = match.index;
|
||
}
|
||
result = result.slice(0, newEnd === void 0 ? end : newEnd);
|
||
}
|
||
} else if (string.indexOf(baseToString(separator), end) != end) {
|
||
var index = result.lastIndexOf(separator);
|
||
if (index > -1) {
|
||
result = result.slice(0, index);
|
||
}
|
||
}
|
||
return result + omission;
|
||
}
|
||
module.exports = truncate2;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/_createSet.js
|
||
var require_createSet = __commonJS({
|
||
"node_modules/lodash/_createSet.js"(exports, module) {
|
||
var Set2 = require_Set();
|
||
var noop = require_noop();
|
||
var setToArray = require_setToArray();
|
||
var INFINITY = 1 / 0;
|
||
var createSet = !(Set2 && 1 / setToArray(new Set2([, -0]))[1] == INFINITY) ? noop : function(values) {
|
||
return new Set2(values);
|
||
};
|
||
module.exports = createSet;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/_baseUniq.js
|
||
var require_baseUniq = __commonJS({
|
||
"node_modules/lodash/_baseUniq.js"(exports, module) {
|
||
var SetCache = require_SetCache();
|
||
var arrayIncludes = require_arrayIncludes();
|
||
var arrayIncludesWith = require_arrayIncludesWith();
|
||
var cacheHas = require_cacheHas();
|
||
var createSet = require_createSet();
|
||
var setToArray = require_setToArray();
|
||
var LARGE_ARRAY_SIZE = 200;
|
||
function baseUniq(array, iteratee, comparator) {
|
||
var index = -1, includes = arrayIncludes, length = array.length, isCommon = true, result = [], seen = result;
|
||
if (comparator) {
|
||
isCommon = false;
|
||
includes = arrayIncludesWith;
|
||
} else if (length >= LARGE_ARRAY_SIZE) {
|
||
var set3 = iteratee ? null : createSet(array);
|
||
if (set3) {
|
||
return setToArray(set3);
|
||
}
|
||
isCommon = false;
|
||
includes = cacheHas;
|
||
seen = new SetCache();
|
||
} else {
|
||
seen = iteratee ? [] : result;
|
||
}
|
||
outer:
|
||
while (++index < length) {
|
||
var value = array[index], computed = iteratee ? iteratee(value) : value;
|
||
value = comparator || value !== 0 ? value : 0;
|
||
if (isCommon && computed === computed) {
|
||
var seenIndex = seen.length;
|
||
while (seenIndex--) {
|
||
if (seen[seenIndex] === computed) {
|
||
continue outer;
|
||
}
|
||
}
|
||
if (iteratee) {
|
||
seen.push(computed);
|
||
}
|
||
result.push(value);
|
||
} else if (!includes(seen, computed, comparator)) {
|
||
if (seen !== result) {
|
||
seen.push(computed);
|
||
}
|
||
result.push(value);
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
module.exports = baseUniq;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/uniq.js
|
||
var require_uniq = __commonJS({
|
||
"node_modules/lodash/uniq.js"(exports, module) {
|
||
var baseUniq = require_baseUniq();
|
||
function uniq2(array) {
|
||
return array && array.length ? baseUniq(array) : [];
|
||
}
|
||
module.exports = uniq2;
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/lodash.min.js
|
||
var require_lodash_min = __commonJS({
|
||
"node_modules/lodash/lodash.min.js"(exports, module) {
|
||
(function() {
|
||
function n(n2, t2, r2) {
|
||
switch (r2.length) {
|
||
case 0:
|
||
return n2.call(t2);
|
||
case 1:
|
||
return n2.call(t2, r2[0]);
|
||
case 2:
|
||
return n2.call(t2, r2[0], r2[1]);
|
||
case 3:
|
||
return n2.call(t2, r2[0], r2[1], r2[2]);
|
||
}
|
||
return n2.apply(t2, r2);
|
||
}
|
||
function t(n2, t2, r2, e2) {
|
||
for (var u2 = -1, i2 = null == n2 ? 0 : n2.length; ++u2 < i2; ) {
|
||
var o2 = n2[u2];
|
||
t2(e2, o2, r2(o2), n2);
|
||
}
|
||
return e2;
|
||
}
|
||
function r(n2, t2) {
|
||
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length; ++r2 < e2 && t2(n2[r2], r2, n2) !== false; ) ;
|
||
return n2;
|
||
}
|
||
function e(n2, t2) {
|
||
for (var r2 = null == n2 ? 0 : n2.length; r2-- && t2(n2[r2], r2, n2) !== false; ) ;
|
||
return n2;
|
||
}
|
||
function u(n2, t2) {
|
||
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length; ++r2 < e2; ) if (!t2(n2[r2], r2, n2)) return false;
|
||
return true;
|
||
}
|
||
function i(n2, t2) {
|
||
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length, u2 = 0, i2 = []; ++r2 < e2; ) {
|
||
var o2 = n2[r2];
|
||
t2(o2, r2, n2) && (i2[u2++] = o2);
|
||
}
|
||
return i2;
|
||
}
|
||
function o(n2, t2) {
|
||
return !!(null == n2 ? 0 : n2.length) && y(n2, t2, 0) > -1;
|
||
}
|
||
function f(n2, t2, r2) {
|
||
for (var e2 = -1, u2 = null == n2 ? 0 : n2.length; ++e2 < u2; ) if (r2(t2, n2[e2])) return true;
|
||
return false;
|
||
}
|
||
function c(n2, t2) {
|
||
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length, u2 = Array(e2); ++r2 < e2; ) u2[r2] = t2(n2[r2], r2, n2);
|
||
return u2;
|
||
}
|
||
function a(n2, t2) {
|
||
for (var r2 = -1, e2 = t2.length, u2 = n2.length; ++r2 < e2; ) n2[u2 + r2] = t2[r2];
|
||
return n2;
|
||
}
|
||
function l(n2, t2, r2, e2) {
|
||
var u2 = -1, i2 = null == n2 ? 0 : n2.length;
|
||
for (e2 && i2 && (r2 = n2[++u2]); ++u2 < i2; ) r2 = t2(r2, n2[u2], u2, n2);
|
||
return r2;
|
||
}
|
||
function s(n2, t2, r2, e2) {
|
||
var u2 = null == n2 ? 0 : n2.length;
|
||
for (e2 && u2 && (r2 = n2[--u2]); u2--; ) r2 = t2(r2, n2[u2], u2, n2);
|
||
return r2;
|
||
}
|
||
function h(n2, t2) {
|
||
for (var r2 = -1, e2 = null == n2 ? 0 : n2.length; ++r2 < e2; ) if (t2(n2[r2], r2, n2)) return true;
|
||
return false;
|
||
}
|
||
function p(n2) {
|
||
return n2.split("");
|
||
}
|
||
function _(n2) {
|
||
return n2.match($t) || [];
|
||
}
|
||
function v(n2, t2, r2) {
|
||
var e2;
|
||
return r2(n2, function(n3, r3, u2) {
|
||
if (t2(n3, r3, u2)) return e2 = r3, false;
|
||
}), e2;
|
||
}
|
||
function g(n2, t2, r2, e2) {
|
||
for (var u2 = n2.length, i2 = r2 + (e2 ? 1 : -1); e2 ? i2-- : ++i2 < u2; ) if (t2(n2[i2], i2, n2)) return i2;
|
||
return -1;
|
||
}
|
||
function y(n2, t2, r2) {
|
||
return t2 === t2 ? Z(n2, t2, r2) : g(n2, b, r2);
|
||
}
|
||
function d(n2, t2, r2, e2) {
|
||
for (var u2 = r2 - 1, i2 = n2.length; ++u2 < i2; ) if (e2(n2[u2], t2)) return u2;
|
||
return -1;
|
||
}
|
||
function b(n2) {
|
||
return n2 !== n2;
|
||
}
|
||
function w(n2, t2) {
|
||
var r2 = null == n2 ? 0 : n2.length;
|
||
return r2 ? k(n2, t2) / r2 : Cn;
|
||
}
|
||
function m(n2) {
|
||
return function(t2) {
|
||
return null == t2 ? X : t2[n2];
|
||
};
|
||
}
|
||
function x(n2) {
|
||
return function(t2) {
|
||
return null == n2 ? X : n2[t2];
|
||
};
|
||
}
|
||
function j(n2, t2, r2, e2, u2) {
|
||
return u2(n2, function(n3, u3, i2) {
|
||
r2 = e2 ? (e2 = false, n3) : t2(r2, n3, u3, i2);
|
||
}), r2;
|
||
}
|
||
function A(n2, t2) {
|
||
var r2 = n2.length;
|
||
for (n2.sort(t2); r2--; ) n2[r2] = n2[r2].value;
|
||
return n2;
|
||
}
|
||
function k(n2, t2) {
|
||
for (var r2, e2 = -1, u2 = n2.length; ++e2 < u2; ) {
|
||
var i2 = t2(n2[e2]);
|
||
i2 !== X && (r2 = r2 === X ? i2 : r2 + i2);
|
||
}
|
||
return r2;
|
||
}
|
||
function O(n2, t2) {
|
||
for (var r2 = -1, e2 = Array(n2); ++r2 < n2; ) e2[r2] = t2(r2);
|
||
return e2;
|
||
}
|
||
function I(n2, t2) {
|
||
return c(t2, function(t3) {
|
||
return [t3, n2[t3]];
|
||
});
|
||
}
|
||
function R(n2) {
|
||
return n2 ? n2.slice(0, H(n2) + 1).replace(Lt, "") : n2;
|
||
}
|
||
function z(n2) {
|
||
return function(t2) {
|
||
return n2(t2);
|
||
};
|
||
}
|
||
function E(n2, t2) {
|
||
return c(t2, function(t3) {
|
||
return n2[t3];
|
||
});
|
||
}
|
||
function S(n2, t2) {
|
||
return n2.has(t2);
|
||
}
|
||
function W(n2, t2) {
|
||
for (var r2 = -1, e2 = n2.length; ++r2 < e2 && y(t2, n2[r2], 0) > -1; ) ;
|
||
return r2;
|
||
}
|
||
function L(n2, t2) {
|
||
for (var r2 = n2.length; r2-- && y(t2, n2[r2], 0) > -1; ) ;
|
||
return r2;
|
||
}
|
||
function C(n2, t2) {
|
||
for (var r2 = n2.length, e2 = 0; r2--; ) n2[r2] === t2 && ++e2;
|
||
return e2;
|
||
}
|
||
function U(n2) {
|
||
return "\\" + Yr[n2];
|
||
}
|
||
function B(n2, t2) {
|
||
return null == n2 ? X : n2[t2];
|
||
}
|
||
function T(n2) {
|
||
return Nr.test(n2);
|
||
}
|
||
function $(n2) {
|
||
return Pr.test(n2);
|
||
}
|
||
function D(n2) {
|
||
for (var t2, r2 = []; !(t2 = n2.next()).done; ) r2.push(t2.value);
|
||
return r2;
|
||
}
|
||
function M(n2) {
|
||
var t2 = -1, r2 = Array(n2.size);
|
||
return n2.forEach(function(n3, e2) {
|
||
r2[++t2] = [e2, n3];
|
||
}), r2;
|
||
}
|
||
function F(n2, t2) {
|
||
return function(r2) {
|
||
return n2(t2(r2));
|
||
};
|
||
}
|
||
function N(n2, t2) {
|
||
for (var r2 = -1, e2 = n2.length, u2 = 0, i2 = []; ++r2 < e2; ) {
|
||
var o2 = n2[r2];
|
||
o2 !== t2 && o2 !== cn || (n2[r2] = cn, i2[u2++] = r2);
|
||
}
|
||
return i2;
|
||
}
|
||
function P(n2) {
|
||
var t2 = -1, r2 = Array(n2.size);
|
||
return n2.forEach(function(n3) {
|
||
r2[++t2] = n3;
|
||
}), r2;
|
||
}
|
||
function q(n2) {
|
||
var t2 = -1, r2 = Array(n2.size);
|
||
return n2.forEach(function(n3) {
|
||
r2[++t2] = [n3, n3];
|
||
}), r2;
|
||
}
|
||
function Z(n2, t2, r2) {
|
||
for (var e2 = r2 - 1, u2 = n2.length; ++e2 < u2; ) if (n2[e2] === t2) return e2;
|
||
return -1;
|
||
}
|
||
function K(n2, t2, r2) {
|
||
for (var e2 = r2 + 1; e2--; ) if (n2[e2] === t2) return e2;
|
||
return e2;
|
||
}
|
||
function V(n2) {
|
||
return T(n2) ? J(n2) : _e(n2);
|
||
}
|
||
function G(n2) {
|
||
return T(n2) ? Y(n2) : p(n2);
|
||
}
|
||
function H(n2) {
|
||
for (var t2 = n2.length; t2-- && Ct.test(n2.charAt(t2)); ) ;
|
||
return t2;
|
||
}
|
||
function J(n2) {
|
||
for (var t2 = Mr.lastIndex = 0; Mr.test(n2); ) ++t2;
|
||
return t2;
|
||
}
|
||
function Y(n2) {
|
||
return n2.match(Mr) || [];
|
||
}
|
||
function Q(n2) {
|
||
return n2.match(Fr) || [];
|
||
}
|
||
var X, nn = "4.17.21", tn = 200, rn = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.", en = "Expected a function", un = "Invalid `variable` option passed into `_.template`", on = "__lodash_hash_undefined__", fn = 500, cn = "__lodash_placeholder__", an = 1, ln = 2, sn = 4, hn = 1, pn = 2, _n = 1, vn = 2, gn = 4, yn = 8, dn = 16, bn = 32, wn = 64, mn = 128, xn = 256, jn = 512, An = 30, kn = "...", On = 800, In = 16, Rn = 1, zn = 2, En = 3, Sn = 1 / 0, Wn = 9007199254740991, Ln = 17976931348623157e292, Cn = NaN, Un = 4294967295, Bn = Un - 1, Tn = Un >>> 1, $n = [["ary", mn], ["bind", _n], ["bindKey", vn], ["curry", yn], ["curryRight", dn], ["flip", jn], ["partial", bn], ["partialRight", wn], ["rearg", xn]], Dn = "[object Arguments]", Mn = "[object Array]", Fn = "[object AsyncFunction]", Nn = "[object Boolean]", Pn = "[object Date]", qn = "[object DOMException]", Zn = "[object Error]", Kn = "[object Function]", Vn = "[object GeneratorFunction]", Gn = "[object Map]", Hn = "[object Number]", Jn = "[object Null]", Yn = "[object Object]", Qn = "[object Promise]", Xn = "[object Proxy]", nt = "[object RegExp]", tt = "[object Set]", rt = "[object String]", et = "[object Symbol]", ut = "[object Undefined]", it = "[object WeakMap]", ot = "[object WeakSet]", ft = "[object ArrayBuffer]", ct = "[object DataView]", at = "[object Float32Array]", lt = "[object Float64Array]", st = "[object Int8Array]", ht = "[object Int16Array]", pt = "[object Int32Array]", _t = "[object Uint8Array]", vt = "[object Uint8ClampedArray]", gt = "[object Uint16Array]", yt = "[object Uint32Array]", dt2 = /\b__p \+= '';/g, bt = /\b(__p \+=) '' \+/g, wt = /(__e\(.*?\)|\b__t\)) \+\n'';/g, mt = /&(?:amp|lt|gt|quot|#39);/g, xt = /[&<>"']/g, jt = RegExp(mt.source), At = RegExp(xt.source), kt = /<%-([\s\S]+?)%>/g, Ot = /<%([\s\S]+?)%>/g, It = /<%=([\s\S]+?)%>/g, Rt = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, zt = /^\w*$/, Et = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, St = /[\\^$.*+?()[\]{}|]/g, Wt = RegExp(St.source), Lt = /^\s+/, Ct = /\s/, Ut = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Bt = /\{\n\/\* \[wrapped with (.+)\] \*/, Tt = /,? & /, $t = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Dt = /[()=,{}\[\]\/\s]/, Mt = /\\(\\)?/g, Ft = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, Nt = /\w*$/, Pt = /^[-+]0x[0-9a-f]+$/i, qt = /^0b[01]+$/i, Zt = /^\[object .+?Constructor\]$/, Kt = /^0o[0-7]+$/i, Vt = /^(?:0|[1-9]\d*)$/, Gt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, Ht = /($^)/, Jt = /['\n\r\u2028\u2029\\]/g, Yt = "\\ud800-\\udfff", Qt = "\\u0300-\\u036f", Xt = "\\ufe20-\\ufe2f", nr = "\\u20d0-\\u20ff", tr = Qt + Xt + nr, rr = "\\u2700-\\u27bf", er = "a-z\\xdf-\\xf6\\xf8-\\xff", ur = "\\xac\\xb1\\xd7\\xf7", ir = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", or = "\\u2000-\\u206f", fr = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", cr = "A-Z\\xc0-\\xd6\\xd8-\\xde", ar = "\\ufe0e\\ufe0f", lr = ur + ir + or + fr, sr = "['’]", hr = "[" + Yt + "]", pr = "[" + lr + "]", _r = "[" + tr + "]", vr = "\\d+", gr = "[" + rr + "]", yr = "[" + er + "]", dr = "[^" + Yt + lr + vr + rr + er + cr + "]", br = "\\ud83c[\\udffb-\\udfff]", wr = "(?:" + _r + "|" + br + ")", mr = "[^" + Yt + "]", xr = "(?:\\ud83c[\\udde6-\\uddff]){2}", jr = "[\\ud800-\\udbff][\\udc00-\\udfff]", Ar = "[" + cr + "]", kr = "\\u200d", Or = "(?:" + yr + "|" + dr + ")", Ir = "(?:" + Ar + "|" + dr + ")", Rr = "(?:" + sr + "(?:d|ll|m|re|s|t|ve))?", zr = "(?:" + sr + "(?:D|LL|M|RE|S|T|VE))?", Er = wr + "?", Sr = "[" + ar + "]?", Wr = "(?:" + kr + "(?:" + [mr, xr, jr].join("|") + ")" + Sr + Er + ")*", Lr = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", Cr = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Ur = Sr + Er + Wr, Br = "(?:" + [gr, xr, jr].join("|") + ")" + Ur, Tr = "(?:" + [mr + _r + "?", _r, xr, jr, hr].join("|") + ")", $r = RegExp(sr, "g"), Dr = RegExp(_r, "g"), Mr = RegExp(br + "(?=" + br + ")|" + Tr + Ur, "g"), Fr = RegExp([Ar + "?" + yr + "+" + Rr + "(?=" + [pr, Ar, "$"].join("|") + ")", Ir + "+" + zr + "(?=" + [pr, Ar + Or, "$"].join("|") + ")", Ar + "?" + Or + "+" + Rr, Ar + "+" + zr, Cr, Lr, vr, Br].join("|"), "g"), Nr = RegExp("[" + kr + Yt + tr + ar + "]"), Pr = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/, qr = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"], Zr = -1, Kr = {};
|
||
Kr[at] = Kr[lt] = Kr[st] = Kr[ht] = Kr[pt] = Kr[_t] = Kr[vt] = Kr[gt] = Kr[yt] = true, Kr[Dn] = Kr[Mn] = Kr[ft] = Kr[Nn] = Kr[ct] = Kr[Pn] = Kr[Zn] = Kr[Kn] = Kr[Gn] = Kr[Hn] = Kr[Yn] = Kr[nt] = Kr[tt] = Kr[rt] = Kr[it] = false;
|
||
var Vr = {};
|
||
Vr[Dn] = Vr[Mn] = Vr[ft] = Vr[ct] = Vr[Nn] = Vr[Pn] = Vr[at] = Vr[lt] = Vr[st] = Vr[ht] = Vr[pt] = Vr[Gn] = Vr[Hn] = Vr[Yn] = Vr[nt] = Vr[tt] = Vr[rt] = Vr[et] = Vr[_t] = Vr[vt] = Vr[gt] = Vr[yt] = true, Vr[Zn] = Vr[Kn] = Vr[it] = false;
|
||
var Gr = {
|
||
"À": "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",
|
||
"Ā": "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",
|
||
"ſ": "s"
|
||
}, Hr = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }, Jr = { "&": "&", "<": "<", ">": ">", """: '"', "'": "'" }, Yr = { "\\": "\\", "'": "'", "\n": "n", "\r": "r", "\u2028": "u2028", "\u2029": "u2029" }, Qr = parseFloat, Xr = parseInt, ne = "object" == typeof global && global && global.Object === Object && global, te = "object" == typeof self && self && self.Object === Object && self, re = ne || te || Function("return this")(), ee = "object" == typeof exports && exports && !exports.nodeType && exports, ue = ee && "object" == typeof module && module && !module.nodeType && module, ie = ue && ue.exports === ee, oe = ie && ne.process, fe = function() {
|
||
try {
|
||
var n2 = ue && ue.require && ue.require("util").types;
|
||
return n2 ? n2 : oe && oe.binding && oe.binding("util");
|
||
} catch (n3) {
|
||
}
|
||
}(), ce = fe && fe.isArrayBuffer, ae = fe && fe.isDate, le = fe && fe.isMap, se = fe && fe.isRegExp, he = fe && fe.isSet, pe = fe && fe.isTypedArray, _e = m("length"), ve = x(Gr), ge = x(Hr), ye = x(Jr), de = function p2(x2) {
|
||
function Z2(n2) {
|
||
if (cc(n2) && !bh(n2) && !(n2 instanceof Ct2)) {
|
||
if (n2 instanceof Y2) return n2;
|
||
if (bl.call(n2, "__wrapped__")) return eo(n2);
|
||
}
|
||
return new Y2(n2);
|
||
}
|
||
function J2() {
|
||
}
|
||
function Y2(n2, t2) {
|
||
this.__wrapped__ = n2, this.__actions__ = [], this.__chain__ = !!t2, this.__index__ = 0, this.__values__ = X;
|
||
}
|
||
function Ct2(n2) {
|
||
this.__wrapped__ = n2, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = false, this.__iteratees__ = [], this.__takeCount__ = Un, this.__views__ = [];
|
||
}
|
||
function $t2() {
|
||
var n2 = new Ct2(this.__wrapped__);
|
||
return n2.__actions__ = Tu(this.__actions__), n2.__dir__ = this.__dir__, n2.__filtered__ = this.__filtered__, n2.__iteratees__ = Tu(this.__iteratees__), n2.__takeCount__ = this.__takeCount__, n2.__views__ = Tu(this.__views__), n2;
|
||
}
|
||
function Yt2() {
|
||
if (this.__filtered__) {
|
||
var n2 = new Ct2(this);
|
||
n2.__dir__ = -1, n2.__filtered__ = true;
|
||
} else n2 = this.clone(), n2.__dir__ *= -1;
|
||
return n2;
|
||
}
|
||
function Qt2() {
|
||
var n2 = this.__wrapped__.value(), t2 = this.__dir__, r2 = bh(n2), e2 = t2 < 0, u2 = r2 ? n2.length : 0, i2 = Oi(0, u2, this.__views__), o2 = i2.start, f2 = i2.end, c2 = f2 - o2, a2 = e2 ? f2 : o2 - 1, l2 = this.__iteratees__, s2 = l2.length, h2 = 0, p3 = Hl(c2, this.__takeCount__);
|
||
if (!r2 || !e2 && u2 == c2 && p3 == c2) return wu(n2, this.__actions__);
|
||
var _2 = [];
|
||
n: for (; c2-- && h2 < p3; ) {
|
||
a2 += t2;
|
||
for (var v2 = -1, g2 = n2[a2]; ++v2 < s2; ) {
|
||
var y2 = l2[v2], d2 = y2.iteratee, b2 = y2.type, w2 = d2(g2);
|
||
if (b2 == zn) g2 = w2;
|
||
else if (!w2) {
|
||
if (b2 == Rn) continue n;
|
||
break n;
|
||
}
|
||
}
|
||
_2[h2++] = g2;
|
||
}
|
||
return _2;
|
||
}
|
||
function Xt2(n2) {
|
||
var t2 = -1, r2 = null == n2 ? 0 : n2.length;
|
||
for (this.clear(); ++t2 < r2; ) {
|
||
var e2 = n2[t2];
|
||
this.set(e2[0], e2[1]);
|
||
}
|
||
}
|
||
function nr2() {
|
||
this.__data__ = is ? is(null) : {}, this.size = 0;
|
||
}
|
||
function tr2(n2) {
|
||
var t2 = this.has(n2) && delete this.__data__[n2];
|
||
return this.size -= t2 ? 1 : 0, t2;
|
||
}
|
||
function rr2(n2) {
|
||
var t2 = this.__data__;
|
||
if (is) {
|
||
var r2 = t2[n2];
|
||
return r2 === on ? X : r2;
|
||
}
|
||
return bl.call(t2, n2) ? t2[n2] : X;
|
||
}
|
||
function er2(n2) {
|
||
var t2 = this.__data__;
|
||
return is ? t2[n2] !== X : bl.call(t2, n2);
|
||
}
|
||
function ur2(n2, t2) {
|
||
var r2 = this.__data__;
|
||
return this.size += this.has(n2) ? 0 : 1, r2[n2] = is && t2 === X ? on : t2, this;
|
||
}
|
||
function ir2(n2) {
|
||
var t2 = -1, r2 = null == n2 ? 0 : n2.length;
|
||
for (this.clear(); ++t2 < r2; ) {
|
||
var e2 = n2[t2];
|
||
this.set(e2[0], e2[1]);
|
||
}
|
||
}
|
||
function or2() {
|
||
this.__data__ = [], this.size = 0;
|
||
}
|
||
function fr2(n2) {
|
||
var t2 = this.__data__, r2 = Wr2(t2, n2);
|
||
return !(r2 < 0) && (r2 == t2.length - 1 ? t2.pop() : Ll.call(t2, r2, 1), --this.size, true);
|
||
}
|
||
function cr2(n2) {
|
||
var t2 = this.__data__, r2 = Wr2(t2, n2);
|
||
return r2 < 0 ? X : t2[r2][1];
|
||
}
|
||
function ar2(n2) {
|
||
return Wr2(this.__data__, n2) > -1;
|
||
}
|
||
function lr2(n2, t2) {
|
||
var r2 = this.__data__, e2 = Wr2(r2, n2);
|
||
return e2 < 0 ? (++this.size, r2.push([n2, t2])) : r2[e2][1] = t2, this;
|
||
}
|
||
function sr2(n2) {
|
||
var t2 = -1, r2 = null == n2 ? 0 : n2.length;
|
||
for (this.clear(); ++t2 < r2; ) {
|
||
var e2 = n2[t2];
|
||
this.set(e2[0], e2[1]);
|
||
}
|
||
}
|
||
function hr2() {
|
||
this.size = 0, this.__data__ = { hash: new Xt2(), map: new (ts || ir2)(), string: new Xt2() };
|
||
}
|
||
function pr2(n2) {
|
||
var t2 = xi(this, n2).delete(n2);
|
||
return this.size -= t2 ? 1 : 0, t2;
|
||
}
|
||
function _r2(n2) {
|
||
return xi(this, n2).get(n2);
|
||
}
|
||
function vr2(n2) {
|
||
return xi(this, n2).has(n2);
|
||
}
|
||
function gr2(n2, t2) {
|
||
var r2 = xi(this, n2), e2 = r2.size;
|
||
return r2.set(n2, t2), this.size += r2.size == e2 ? 0 : 1, this;
|
||
}
|
||
function yr2(n2) {
|
||
var t2 = -1, r2 = null == n2 ? 0 : n2.length;
|
||
for (this.__data__ = new sr2(); ++t2 < r2; ) this.add(n2[t2]);
|
||
}
|
||
function dr2(n2) {
|
||
return this.__data__.set(n2, on), this;
|
||
}
|
||
function br2(n2) {
|
||
return this.__data__.has(n2);
|
||
}
|
||
function wr2(n2) {
|
||
this.size = (this.__data__ = new ir2(n2)).size;
|
||
}
|
||
function mr2() {
|
||
this.__data__ = new ir2(), this.size = 0;
|
||
}
|
||
function xr2(n2) {
|
||
var t2 = this.__data__, r2 = t2.delete(n2);
|
||
return this.size = t2.size, r2;
|
||
}
|
||
function jr2(n2) {
|
||
return this.__data__.get(n2);
|
||
}
|
||
function Ar2(n2) {
|
||
return this.__data__.has(n2);
|
||
}
|
||
function kr2(n2, t2) {
|
||
var r2 = this.__data__;
|
||
if (r2 instanceof ir2) {
|
||
var e2 = r2.__data__;
|
||
if (!ts || e2.length < tn - 1) return e2.push([n2, t2]), this.size = ++r2.size, this;
|
||
r2 = this.__data__ = new sr2(e2);
|
||
}
|
||
return r2.set(n2, t2), this.size = r2.size, this;
|
||
}
|
||
function Or2(n2, t2) {
|
||
var r2 = bh(n2), e2 = !r2 && dh(n2), u2 = !r2 && !e2 && mh(n2), i2 = !r2 && !e2 && !u2 && Oh(n2), o2 = r2 || e2 || u2 || i2, f2 = o2 ? O(n2.length, hl) : [], c2 = f2.length;
|
||
for (var a2 in n2) !t2 && !bl.call(n2, a2) || o2 && ("length" == a2 || u2 && ("offset" == a2 || "parent" == a2) || i2 && ("buffer" == a2 || "byteLength" == a2 || "byteOffset" == a2) || Ci(a2, c2)) || f2.push(a2);
|
||
return f2;
|
||
}
|
||
function Ir2(n2) {
|
||
var t2 = n2.length;
|
||
return t2 ? n2[tu(0, t2 - 1)] : X;
|
||
}
|
||
function Rr2(n2, t2) {
|
||
return Xi(Tu(n2), Mr2(t2, 0, n2.length));
|
||
}
|
||
function zr2(n2) {
|
||
return Xi(Tu(n2));
|
||
}
|
||
function Er2(n2, t2, r2) {
|
||
(r2 === X || Gf(n2[t2], r2)) && (r2 !== X || t2 in n2) || Br2(n2, t2, r2);
|
||
}
|
||
function Sr2(n2, t2, r2) {
|
||
var e2 = n2[t2];
|
||
bl.call(n2, t2) && Gf(e2, r2) && (r2 !== X || t2 in n2) || Br2(n2, t2, r2);
|
||
}
|
||
function Wr2(n2, t2) {
|
||
for (var r2 = n2.length; r2--; ) if (Gf(n2[r2][0], t2)) return r2;
|
||
return -1;
|
||
}
|
||
function Lr2(n2, t2, r2, e2) {
|
||
return ys(n2, function(n3, u2, i2) {
|
||
t2(e2, n3, r2(n3), i2);
|
||
}), e2;
|
||
}
|
||
function Cr2(n2, t2) {
|
||
return n2 && $u(t2, Pc(t2), n2);
|
||
}
|
||
function Ur2(n2, t2) {
|
||
return n2 && $u(t2, qc(t2), n2);
|
||
}
|
||
function Br2(n2, t2, r2) {
|
||
"__proto__" == t2 && Tl ? Tl(n2, t2, { configurable: true, enumerable: true, value: r2, writable: true }) : n2[t2] = r2;
|
||
}
|
||
function Tr2(n2, t2) {
|
||
for (var r2 = -1, e2 = t2.length, u2 = il(e2), i2 = null == n2; ++r2 < e2; ) u2[r2] = i2 ? X : Mc(n2, t2[r2]);
|
||
return u2;
|
||
}
|
||
function Mr2(n2, t2, r2) {
|
||
return n2 === n2 && (r2 !== X && (n2 = n2 <= r2 ? n2 : r2), t2 !== X && (n2 = n2 >= t2 ? n2 : t2)), n2;
|
||
}
|
||
function Fr2(n2, t2, e2, u2, i2, o2) {
|
||
var f2, c2 = t2 & an, a2 = t2 & ln, l2 = t2 & sn;
|
||
if (e2 && (f2 = i2 ? e2(n2, u2, i2, o2) : e2(n2)), f2 !== X) return f2;
|
||
if (!fc(n2)) return n2;
|
||
var s2 = bh(n2);
|
||
if (s2) {
|
||
if (f2 = zi(n2), !c2) return Tu(n2, f2);
|
||
} else {
|
||
var h2 = zs(n2), p3 = h2 == Kn || h2 == Vn;
|
||
if (mh(n2)) return Iu(n2, c2);
|
||
if (h2 == Yn || h2 == Dn || p3 && !i2) {
|
||
if (f2 = a2 || p3 ? {} : Ei(n2), !c2) return a2 ? Mu(n2, Ur2(f2, n2)) : Du(n2, Cr2(f2, n2));
|
||
} else {
|
||
if (!Vr[h2]) return i2 ? n2 : {};
|
||
f2 = Si(n2, h2, c2);
|
||
}
|
||
}
|
||
o2 || (o2 = new wr2());
|
||
var _2 = o2.get(n2);
|
||
if (_2) return _2;
|
||
o2.set(n2, f2), kh(n2) ? n2.forEach(function(r2) {
|
||
f2.add(Fr2(r2, t2, e2, r2, n2, o2));
|
||
}) : jh(n2) && n2.forEach(function(r2, u3) {
|
||
f2.set(u3, Fr2(r2, t2, e2, u3, n2, o2));
|
||
});
|
||
var v2 = l2 ? a2 ? di : yi : a2 ? qc : Pc, g2 = s2 ? X : v2(n2);
|
||
return r(g2 || n2, function(r2, u3) {
|
||
g2 && (u3 = r2, r2 = n2[u3]), Sr2(f2, u3, Fr2(r2, t2, e2, u3, n2, o2));
|
||
}), f2;
|
||
}
|
||
function Nr2(n2) {
|
||
var t2 = Pc(n2);
|
||
return function(r2) {
|
||
return Pr2(r2, n2, t2);
|
||
};
|
||
}
|
||
function Pr2(n2, t2, r2) {
|
||
var e2 = r2.length;
|
||
if (null == n2) return !e2;
|
||
for (n2 = ll(n2); e2--; ) {
|
||
var u2 = r2[e2], i2 = t2[u2], o2 = n2[u2];
|
||
if (o2 === X && !(u2 in n2) || !i2(o2)) return false;
|
||
}
|
||
return true;
|
||
}
|
||
function Gr2(n2, t2, r2) {
|
||
if ("function" != typeof n2) throw new pl(en);
|
||
return Ws(function() {
|
||
n2.apply(X, r2);
|
||
}, t2);
|
||
}
|
||
function Hr2(n2, t2, r2, e2) {
|
||
var u2 = -1, i2 = o, a2 = true, l2 = n2.length, s2 = [], h2 = t2.length;
|
||
if (!l2) return s2;
|
||
r2 && (t2 = c(t2, z(r2))), e2 ? (i2 = f, a2 = false) : t2.length >= tn && (i2 = S, a2 = false, t2 = new yr2(t2));
|
||
n: for (; ++u2 < l2; ) {
|
||
var p3 = n2[u2], _2 = null == r2 ? p3 : r2(p3);
|
||
if (p3 = e2 || 0 !== p3 ? p3 : 0, a2 && _2 === _2) {
|
||
for (var v2 = h2; v2--; ) if (t2[v2] === _2) continue n;
|
||
s2.push(p3);
|
||
} else i2(t2, _2, e2) || s2.push(p3);
|
||
}
|
||
return s2;
|
||
}
|
||
function Jr2(n2, t2) {
|
||
var r2 = true;
|
||
return ys(n2, function(n3, e2, u2) {
|
||
return r2 = !!t2(n3, e2, u2);
|
||
}), r2;
|
||
}
|
||
function Yr2(n2, t2, r2) {
|
||
for (var e2 = -1, u2 = n2.length; ++e2 < u2; ) {
|
||
var i2 = n2[e2], o2 = t2(i2);
|
||
if (null != o2 && (f2 === X ? o2 === o2 && !bc(o2) : r2(o2, f2))) var f2 = o2, c2 = i2;
|
||
}
|
||
return c2;
|
||
}
|
||
function ne2(n2, t2, r2, e2) {
|
||
var u2 = n2.length;
|
||
for (r2 = kc(r2), r2 < 0 && (r2 = -r2 > u2 ? 0 : u2 + r2), e2 = e2 === X || e2 > u2 ? u2 : kc(e2), e2 < 0 && (e2 += u2), e2 = r2 > e2 ? 0 : Oc(e2); r2 < e2; ) n2[r2++] = t2;
|
||
return n2;
|
||
}
|
||
function te2(n2, t2) {
|
||
var r2 = [];
|
||
return ys(n2, function(n3, e2, u2) {
|
||
t2(n3, e2, u2) && r2.push(n3);
|
||
}), r2;
|
||
}
|
||
function ee2(n2, t2, r2, e2, u2) {
|
||
var i2 = -1, o2 = n2.length;
|
||
for (r2 || (r2 = Li), u2 || (u2 = []); ++i2 < o2; ) {
|
||
var f2 = n2[i2];
|
||
t2 > 0 && r2(f2) ? t2 > 1 ? ee2(f2, t2 - 1, r2, e2, u2) : a(u2, f2) : e2 || (u2[u2.length] = f2);
|
||
}
|
||
return u2;
|
||
}
|
||
function ue2(n2, t2) {
|
||
return n2 && bs(n2, t2, Pc);
|
||
}
|
||
function oe2(n2, t2) {
|
||
return n2 && ws(n2, t2, Pc);
|
||
}
|
||
function fe2(n2, t2) {
|
||
return i(t2, function(t3) {
|
||
return uc(n2[t3]);
|
||
});
|
||
}
|
||
function _e2(n2, t2) {
|
||
t2 = ku(t2, n2);
|
||
for (var r2 = 0, e2 = t2.length; null != n2 && r2 < e2; ) n2 = n2[no(t2[r2++])];
|
||
return r2 && r2 == e2 ? n2 : X;
|
||
}
|
||
function de2(n2, t2, r2) {
|
||
var e2 = t2(n2);
|
||
return bh(n2) ? e2 : a(e2, r2(n2));
|
||
}
|
||
function we(n2) {
|
||
return null == n2 ? n2 === X ? ut : Jn : Bl && Bl in ll(n2) ? ki(n2) : Ki(n2);
|
||
}
|
||
function me(n2, t2) {
|
||
return n2 > t2;
|
||
}
|
||
function xe(n2, t2) {
|
||
return null != n2 && bl.call(n2, t2);
|
||
}
|
||
function je(n2, t2) {
|
||
return null != n2 && t2 in ll(n2);
|
||
}
|
||
function Ae(n2, t2, r2) {
|
||
return n2 >= Hl(t2, r2) && n2 < Gl(t2, r2);
|
||
}
|
||
function ke(n2, t2, r2) {
|
||
for (var e2 = r2 ? f : o, u2 = n2[0].length, i2 = n2.length, a2 = i2, l2 = il(i2), s2 = 1 / 0, h2 = []; a2--; ) {
|
||
var p3 = n2[a2];
|
||
a2 && t2 && (p3 = c(p3, z(t2))), s2 = Hl(p3.length, s2), l2[a2] = !r2 && (t2 || u2 >= 120 && p3.length >= 120) ? new yr2(a2 && p3) : X;
|
||
}
|
||
p3 = n2[0];
|
||
var _2 = -1, v2 = l2[0];
|
||
n: for (; ++_2 < u2 && h2.length < s2; ) {
|
||
var g2 = p3[_2], y2 = t2 ? t2(g2) : g2;
|
||
if (g2 = r2 || 0 !== g2 ? g2 : 0, !(v2 ? S(v2, y2) : e2(h2, y2, r2))) {
|
||
for (a2 = i2; --a2; ) {
|
||
var d2 = l2[a2];
|
||
if (!(d2 ? S(d2, y2) : e2(n2[a2], y2, r2))) continue n;
|
||
}
|
||
v2 && v2.push(y2), h2.push(g2);
|
||
}
|
||
}
|
||
return h2;
|
||
}
|
||
function Oe(n2, t2, r2, e2) {
|
||
return ue2(n2, function(n3, u2, i2) {
|
||
t2(e2, r2(n3), u2, i2);
|
||
}), e2;
|
||
}
|
||
function Ie(t2, r2, e2) {
|
||
r2 = ku(r2, t2), t2 = Gi(t2, r2);
|
||
var u2 = null == t2 ? t2 : t2[no(jo(r2))];
|
||
return null == u2 ? X : n(u2, t2, e2);
|
||
}
|
||
function Re(n2) {
|
||
return cc(n2) && we(n2) == Dn;
|
||
}
|
||
function ze(n2) {
|
||
return cc(n2) && we(n2) == ft;
|
||
}
|
||
function Ee(n2) {
|
||
return cc(n2) && we(n2) == Pn;
|
||
}
|
||
function Se(n2, t2, r2, e2, u2) {
|
||
return n2 === t2 || (null == n2 || null == t2 || !cc(n2) && !cc(t2) ? n2 !== n2 && t2 !== t2 : We(n2, t2, r2, e2, Se, u2));
|
||
}
|
||
function We(n2, t2, r2, e2, u2, i2) {
|
||
var o2 = bh(n2), f2 = bh(t2), c2 = o2 ? Mn : zs(n2), a2 = f2 ? Mn : zs(t2);
|
||
c2 = c2 == Dn ? Yn : c2, a2 = a2 == Dn ? Yn : a2;
|
||
var l2 = c2 == Yn, s2 = a2 == Yn, h2 = c2 == a2;
|
||
if (h2 && mh(n2)) {
|
||
if (!mh(t2)) return false;
|
||
o2 = true, l2 = false;
|
||
}
|
||
if (h2 && !l2) return i2 || (i2 = new wr2()), o2 || Oh(n2) ? pi(n2, t2, r2, e2, u2, i2) : _i(n2, t2, c2, r2, e2, u2, i2);
|
||
if (!(r2 & hn)) {
|
||
var p3 = l2 && bl.call(n2, "__wrapped__"), _2 = s2 && bl.call(t2, "__wrapped__");
|
||
if (p3 || _2) {
|
||
var v2 = p3 ? n2.value() : n2, g2 = _2 ? t2.value() : t2;
|
||
return i2 || (i2 = new wr2()), u2(v2, g2, r2, e2, i2);
|
||
}
|
||
}
|
||
return !!h2 && (i2 || (i2 = new wr2()), vi(n2, t2, r2, e2, u2, i2));
|
||
}
|
||
function Le(n2) {
|
||
return cc(n2) && zs(n2) == Gn;
|
||
}
|
||
function Ce(n2, t2, r2, e2) {
|
||
var u2 = r2.length, i2 = u2, o2 = !e2;
|
||
if (null == n2) return !i2;
|
||
for (n2 = ll(n2); u2--; ) {
|
||
var f2 = r2[u2];
|
||
if (o2 && f2[2] ? f2[1] !== n2[f2[0]] : !(f2[0] in n2)) return false;
|
||
}
|
||
for (; ++u2 < i2; ) {
|
||
f2 = r2[u2];
|
||
var c2 = f2[0], a2 = n2[c2], l2 = f2[1];
|
||
if (o2 && f2[2]) {
|
||
if (a2 === X && !(c2 in n2)) return false;
|
||
} else {
|
||
var s2 = new wr2();
|
||
if (e2) var h2 = e2(a2, l2, c2, n2, t2, s2);
|
||
if (!(h2 === X ? Se(l2, a2, hn | pn, e2, s2) : h2)) return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
function Ue(n2) {
|
||
return !(!fc(n2) || Di(n2)) && (uc(n2) ? kl : Zt).test(to(n2));
|
||
}
|
||
function Be(n2) {
|
||
return cc(n2) && we(n2) == nt;
|
||
}
|
||
function Te(n2) {
|
||
return cc(n2) && zs(n2) == tt;
|
||
}
|
||
function $e(n2) {
|
||
return cc(n2) && oc(n2.length) && !!Kr[we(n2)];
|
||
}
|
||
function De(n2) {
|
||
return "function" == typeof n2 ? n2 : null == n2 ? La : "object" == typeof n2 ? bh(n2) ? Ze(n2[0], n2[1]) : qe(n2) : Fa(n2);
|
||
}
|
||
function Me(n2) {
|
||
if (!Mi(n2)) return Vl(n2);
|
||
var t2 = [];
|
||
for (var r2 in ll(n2)) bl.call(n2, r2) && "constructor" != r2 && t2.push(r2);
|
||
return t2;
|
||
}
|
||
function Fe(n2) {
|
||
if (!fc(n2)) return Zi(n2);
|
||
var t2 = Mi(n2), r2 = [];
|
||
for (var e2 in n2) ("constructor" != e2 || !t2 && bl.call(n2, e2)) && r2.push(e2);
|
||
return r2;
|
||
}
|
||
function Ne(n2, t2) {
|
||
return n2 < t2;
|
||
}
|
||
function Pe(n2, t2) {
|
||
var r2 = -1, e2 = Hf(n2) ? il(n2.length) : [];
|
||
return ys(n2, function(n3, u2, i2) {
|
||
e2[++r2] = t2(n3, u2, i2);
|
||
}), e2;
|
||
}
|
||
function qe(n2) {
|
||
var t2 = ji(n2);
|
||
return 1 == t2.length && t2[0][2] ? Ni(t2[0][0], t2[0][1]) : function(r2) {
|
||
return r2 === n2 || Ce(r2, n2, t2);
|
||
};
|
||
}
|
||
function Ze(n2, t2) {
|
||
return Bi(n2) && Fi(t2) ? Ni(no(n2), t2) : function(r2) {
|
||
var e2 = Mc(r2, n2);
|
||
return e2 === X && e2 === t2 ? Nc(r2, n2) : Se(t2, e2, hn | pn);
|
||
};
|
||
}
|
||
function Ke(n2, t2, r2, e2, u2) {
|
||
n2 !== t2 && bs(t2, function(i2, o2) {
|
||
if (u2 || (u2 = new wr2()), fc(i2)) Ve(n2, t2, o2, r2, Ke, e2, u2);
|
||
else {
|
||
var f2 = e2 ? e2(Ji(n2, o2), i2, o2 + "", n2, t2, u2) : X;
|
||
f2 === X && (f2 = i2), Er2(n2, o2, f2);
|
||
}
|
||
}, qc);
|
||
}
|
||
function Ve(n2, t2, r2, e2, u2, i2, o2) {
|
||
var f2 = Ji(n2, r2), c2 = Ji(t2, r2), a2 = o2.get(c2);
|
||
if (a2) return Er2(n2, r2, a2), X;
|
||
var l2 = i2 ? i2(f2, c2, r2 + "", n2, t2, o2) : X, s2 = l2 === X;
|
||
if (s2) {
|
||
var h2 = bh(c2), p3 = !h2 && mh(c2), _2 = !h2 && !p3 && Oh(c2);
|
||
l2 = c2, h2 || p3 || _2 ? bh(f2) ? l2 = f2 : Jf(f2) ? l2 = Tu(f2) : p3 ? (s2 = false, l2 = Iu(c2, true)) : _2 ? (s2 = false, l2 = Wu(c2, true)) : l2 = [] : gc(c2) || dh(c2) ? (l2 = f2, dh(f2) ? l2 = Rc(f2) : fc(f2) && !uc(f2) || (l2 = Ei(c2))) : s2 = false;
|
||
}
|
||
s2 && (o2.set(c2, l2), u2(l2, c2, e2, i2, o2), o2.delete(c2)), Er2(n2, r2, l2);
|
||
}
|
||
function Ge(n2, t2) {
|
||
var r2 = n2.length;
|
||
if (r2) return t2 += t2 < 0 ? r2 : 0, Ci(t2, r2) ? n2[t2] : X;
|
||
}
|
||
function He(n2, t2, r2) {
|
||
t2 = t2.length ? c(t2, function(n3) {
|
||
return bh(n3) ? function(t3) {
|
||
return _e2(t3, 1 === n3.length ? n3[0] : n3);
|
||
} : n3;
|
||
}) : [La];
|
||
var e2 = -1;
|
||
return t2 = c(t2, z(mi())), A(Pe(n2, function(n3, r3, u2) {
|
||
return { criteria: c(t2, function(t3) {
|
||
return t3(n3);
|
||
}), index: ++e2, value: n3 };
|
||
}), function(n3, t3) {
|
||
return Cu(n3, t3, r2);
|
||
});
|
||
}
|
||
function Je(n2, t2) {
|
||
return Ye(n2, t2, function(t3, r2) {
|
||
return Nc(n2, r2);
|
||
});
|
||
}
|
||
function Ye(n2, t2, r2) {
|
||
for (var e2 = -1, u2 = t2.length, i2 = {}; ++e2 < u2; ) {
|
||
var o2 = t2[e2], f2 = _e2(n2, o2);
|
||
r2(f2, o2) && fu(i2, ku(o2, n2), f2);
|
||
}
|
||
return i2;
|
||
}
|
||
function Qe(n2) {
|
||
return function(t2) {
|
||
return _e2(t2, n2);
|
||
};
|
||
}
|
||
function Xe(n2, t2, r2, e2) {
|
||
var u2 = e2 ? d : y, i2 = -1, o2 = t2.length, f2 = n2;
|
||
for (n2 === t2 && (t2 = Tu(t2)), r2 && (f2 = c(n2, z(r2))); ++i2 < o2; ) for (var a2 = 0, l2 = t2[i2], s2 = r2 ? r2(l2) : l2; (a2 = u2(f2, s2, a2, e2)) > -1; ) f2 !== n2 && Ll.call(f2, a2, 1), Ll.call(n2, a2, 1);
|
||
return n2;
|
||
}
|
||
function nu(n2, t2) {
|
||
for (var r2 = n2 ? t2.length : 0, e2 = r2 - 1; r2--; ) {
|
||
var u2 = t2[r2];
|
||
if (r2 == e2 || u2 !== i2) {
|
||
var i2 = u2;
|
||
Ci(u2) ? Ll.call(n2, u2, 1) : yu(n2, u2);
|
||
}
|
||
}
|
||
return n2;
|
||
}
|
||
function tu(n2, t2) {
|
||
return n2 + Nl(Ql() * (t2 - n2 + 1));
|
||
}
|
||
function ru(n2, t2, r2, e2) {
|
||
for (var u2 = -1, i2 = Gl(Fl((t2 - n2) / (r2 || 1)), 0), o2 = il(i2); i2--; ) o2[e2 ? i2 : ++u2] = n2, n2 += r2;
|
||
return o2;
|
||
}
|
||
function eu(n2, t2) {
|
||
var r2 = "";
|
||
if (!n2 || t2 < 1 || t2 > Wn) return r2;
|
||
do
|
||
t2 % 2 && (r2 += n2), t2 = Nl(t2 / 2), t2 && (n2 += n2);
|
||
while (t2);
|
||
return r2;
|
||
}
|
||
function uu(n2, t2) {
|
||
return Ls(Vi(n2, t2, La), n2 + "");
|
||
}
|
||
function iu(n2) {
|
||
return Ir2(ra(n2));
|
||
}
|
||
function ou(n2, t2) {
|
||
var r2 = ra(n2);
|
||
return Xi(r2, Mr2(t2, 0, r2.length));
|
||
}
|
||
function fu(n2, t2, r2, e2) {
|
||
if (!fc(n2)) return n2;
|
||
t2 = ku(t2, n2);
|
||
for (var u2 = -1, i2 = t2.length, o2 = i2 - 1, f2 = n2; null != f2 && ++u2 < i2; ) {
|
||
var c2 = no(t2[u2]), a2 = r2;
|
||
if ("__proto__" === c2 || "constructor" === c2 || "prototype" === c2) return n2;
|
||
if (u2 != o2) {
|
||
var l2 = f2[c2];
|
||
a2 = e2 ? e2(l2, c2, f2) : X, a2 === X && (a2 = fc(l2) ? l2 : Ci(t2[u2 + 1]) ? [] : {});
|
||
}
|
||
Sr2(f2, c2, a2), f2 = f2[c2];
|
||
}
|
||
return n2;
|
||
}
|
||
function cu(n2) {
|
||
return Xi(ra(n2));
|
||
}
|
||
function au(n2, t2, r2) {
|
||
var e2 = -1, u2 = n2.length;
|
||
t2 < 0 && (t2 = -t2 > u2 ? 0 : u2 + t2), r2 = r2 > u2 ? u2 : r2, r2 < 0 && (r2 += u2), u2 = t2 > r2 ? 0 : r2 - t2 >>> 0, t2 >>>= 0;
|
||
for (var i2 = il(u2); ++e2 < u2; ) i2[e2] = n2[e2 + t2];
|
||
return i2;
|
||
}
|
||
function lu(n2, t2) {
|
||
var r2;
|
||
return ys(n2, function(n3, e2, u2) {
|
||
return r2 = t2(n3, e2, u2), !r2;
|
||
}), !!r2;
|
||
}
|
||
function su(n2, t2, r2) {
|
||
var e2 = 0, u2 = null == n2 ? e2 : n2.length;
|
||
if ("number" == typeof t2 && t2 === t2 && u2 <= Tn) {
|
||
for (; e2 < u2; ) {
|
||
var i2 = e2 + u2 >>> 1, o2 = n2[i2];
|
||
null !== o2 && !bc(o2) && (r2 ? o2 <= t2 : o2 < t2) ? e2 = i2 + 1 : u2 = i2;
|
||
}
|
||
return u2;
|
||
}
|
||
return hu(n2, t2, La, r2);
|
||
}
|
||
function hu(n2, t2, r2, e2) {
|
||
var u2 = 0, i2 = null == n2 ? 0 : n2.length;
|
||
if (0 === i2) return 0;
|
||
t2 = r2(t2);
|
||
for (var o2 = t2 !== t2, f2 = null === t2, c2 = bc(t2), a2 = t2 === X; u2 < i2; ) {
|
||
var l2 = Nl((u2 + i2) / 2), s2 = r2(n2[l2]), h2 = s2 !== X, p3 = null === s2, _2 = s2 === s2, v2 = bc(s2);
|
||
if (o2) var g2 = e2 || _2;
|
||
else g2 = a2 ? _2 && (e2 || h2) : f2 ? _2 && h2 && (e2 || !p3) : c2 ? _2 && h2 && !p3 && (e2 || !v2) : !p3 && !v2 && (e2 ? s2 <= t2 : s2 < t2);
|
||
g2 ? u2 = l2 + 1 : i2 = l2;
|
||
}
|
||
return Hl(i2, Bn);
|
||
}
|
||
function pu(n2, t2) {
|
||
for (var r2 = -1, e2 = n2.length, u2 = 0, i2 = []; ++r2 < e2; ) {
|
||
var o2 = n2[r2], f2 = t2 ? t2(o2) : o2;
|
||
if (!r2 || !Gf(f2, c2)) {
|
||
var c2 = f2;
|
||
i2[u2++] = 0 === o2 ? 0 : o2;
|
||
}
|
||
}
|
||
return i2;
|
||
}
|
||
function _u(n2) {
|
||
return "number" == typeof n2 ? n2 : bc(n2) ? Cn : +n2;
|
||
}
|
||
function vu(n2) {
|
||
if ("string" == typeof n2) return n2;
|
||
if (bh(n2)) return c(n2, vu) + "";
|
||
if (bc(n2)) return vs ? vs.call(n2) : "";
|
||
var t2 = n2 + "";
|
||
return "0" == t2 && 1 / n2 == -Sn ? "-0" : t2;
|
||
}
|
||
function gu(n2, t2, r2) {
|
||
var e2 = -1, u2 = o, i2 = n2.length, c2 = true, a2 = [], l2 = a2;
|
||
if (r2) c2 = false, u2 = f;
|
||
else if (i2 >= tn) {
|
||
var s2 = t2 ? null : ks(n2);
|
||
if (s2) return P(s2);
|
||
c2 = false, u2 = S, l2 = new yr2();
|
||
} else l2 = t2 ? [] : a2;
|
||
n: for (; ++e2 < i2; ) {
|
||
var h2 = n2[e2], p3 = t2 ? t2(h2) : h2;
|
||
if (h2 = r2 || 0 !== h2 ? h2 : 0, c2 && p3 === p3) {
|
||
for (var _2 = l2.length; _2--; ) if (l2[_2] === p3) continue n;
|
||
t2 && l2.push(p3), a2.push(h2);
|
||
} else u2(l2, p3, r2) || (l2 !== a2 && l2.push(p3), a2.push(h2));
|
||
}
|
||
return a2;
|
||
}
|
||
function yu(n2, t2) {
|
||
return t2 = ku(t2, n2), n2 = Gi(n2, t2), null == n2 || delete n2[no(jo(t2))];
|
||
}
|
||
function du(n2, t2, r2, e2) {
|
||
return fu(n2, t2, r2(_e2(n2, t2)), e2);
|
||
}
|
||
function bu(n2, t2, r2, e2) {
|
||
for (var u2 = n2.length, i2 = e2 ? u2 : -1; (e2 ? i2-- : ++i2 < u2) && t2(n2[i2], i2, n2); ) ;
|
||
return r2 ? au(n2, e2 ? 0 : i2, e2 ? i2 + 1 : u2) : au(n2, e2 ? i2 + 1 : 0, e2 ? u2 : i2);
|
||
}
|
||
function wu(n2, t2) {
|
||
var r2 = n2;
|
||
return r2 instanceof Ct2 && (r2 = r2.value()), l(t2, function(n3, t3) {
|
||
return t3.func.apply(t3.thisArg, a([n3], t3.args));
|
||
}, r2);
|
||
}
|
||
function mu(n2, t2, r2) {
|
||
var e2 = n2.length;
|
||
if (e2 < 2) return e2 ? gu(n2[0]) : [];
|
||
for (var u2 = -1, i2 = il(e2); ++u2 < e2; ) for (var o2 = n2[u2], f2 = -1; ++f2 < e2; ) f2 != u2 && (i2[u2] = Hr2(i2[u2] || o2, n2[f2], t2, r2));
|
||
return gu(ee2(i2, 1), t2, r2);
|
||
}
|
||
function xu(n2, t2, r2) {
|
||
for (var e2 = -1, u2 = n2.length, i2 = t2.length, o2 = {}; ++e2 < u2; ) {
|
||
r2(o2, n2[e2], e2 < i2 ? t2[e2] : X);
|
||
}
|
||
return o2;
|
||
}
|
||
function ju(n2) {
|
||
return Jf(n2) ? n2 : [];
|
||
}
|
||
function Au(n2) {
|
||
return "function" == typeof n2 ? n2 : La;
|
||
}
|
||
function ku(n2, t2) {
|
||
return bh(n2) ? n2 : Bi(n2, t2) ? [n2] : Cs(Ec(n2));
|
||
}
|
||
function Ou(n2, t2, r2) {
|
||
var e2 = n2.length;
|
||
return r2 = r2 === X ? e2 : r2, !t2 && r2 >= e2 ? n2 : au(n2, t2, r2);
|
||
}
|
||
function Iu(n2, t2) {
|
||
if (t2) return n2.slice();
|
||
var r2 = n2.length, e2 = zl ? zl(r2) : new n2.constructor(r2);
|
||
return n2.copy(e2), e2;
|
||
}
|
||
function Ru(n2) {
|
||
var t2 = new n2.constructor(n2.byteLength);
|
||
return new Rl(t2).set(new Rl(n2)), t2;
|
||
}
|
||
function zu(n2, t2) {
|
||
return new n2.constructor(t2 ? Ru(n2.buffer) : n2.buffer, n2.byteOffset, n2.byteLength);
|
||
}
|
||
function Eu(n2) {
|
||
var t2 = new n2.constructor(n2.source, Nt.exec(n2));
|
||
return t2.lastIndex = n2.lastIndex, t2;
|
||
}
|
||
function Su(n2) {
|
||
return _s ? ll(_s.call(n2)) : {};
|
||
}
|
||
function Wu(n2, t2) {
|
||
return new n2.constructor(t2 ? Ru(n2.buffer) : n2.buffer, n2.byteOffset, n2.length);
|
||
}
|
||
function Lu(n2, t2) {
|
||
if (n2 !== t2) {
|
||
var r2 = n2 !== X, e2 = null === n2, u2 = n2 === n2, i2 = bc(n2), o2 = t2 !== X, f2 = null === t2, c2 = t2 === t2, a2 = bc(t2);
|
||
if (!f2 && !a2 && !i2 && n2 > t2 || i2 && o2 && c2 && !f2 && !a2 || e2 && o2 && c2 || !r2 && c2 || !u2) return 1;
|
||
if (!e2 && !i2 && !a2 && n2 < t2 || a2 && r2 && u2 && !e2 && !i2 || f2 && r2 && u2 || !o2 && u2 || !c2) return -1;
|
||
}
|
||
return 0;
|
||
}
|
||
function Cu(n2, t2, r2) {
|
||
for (var e2 = -1, u2 = n2.criteria, i2 = t2.criteria, o2 = u2.length, f2 = r2.length; ++e2 < o2; ) {
|
||
var c2 = Lu(u2[e2], i2[e2]);
|
||
if (c2) {
|
||
if (e2 >= f2) return c2;
|
||
return c2 * ("desc" == r2[e2] ? -1 : 1);
|
||
}
|
||
}
|
||
return n2.index - t2.index;
|
||
}
|
||
function Uu(n2, t2, r2, e2) {
|
||
for (var u2 = -1, i2 = n2.length, o2 = r2.length, f2 = -1, c2 = t2.length, a2 = Gl(i2 - o2, 0), l2 = il(c2 + a2), s2 = !e2; ++f2 < c2; ) l2[f2] = t2[f2];
|
||
for (; ++u2 < o2; ) (s2 || u2 < i2) && (l2[r2[u2]] = n2[u2]);
|
||
for (; a2--; ) l2[f2++] = n2[u2++];
|
||
return l2;
|
||
}
|
||
function Bu(n2, t2, r2, e2) {
|
||
for (var u2 = -1, i2 = n2.length, o2 = -1, f2 = r2.length, c2 = -1, a2 = t2.length, l2 = Gl(i2 - f2, 0), s2 = il(l2 + a2), h2 = !e2; ++u2 < l2; ) s2[u2] = n2[u2];
|
||
for (var p3 = u2; ++c2 < a2; ) s2[p3 + c2] = t2[c2];
|
||
for (; ++o2 < f2; ) (h2 || u2 < i2) && (s2[p3 + r2[o2]] = n2[u2++]);
|
||
return s2;
|
||
}
|
||
function Tu(n2, t2) {
|
||
var r2 = -1, e2 = n2.length;
|
||
for (t2 || (t2 = il(e2)); ++r2 < e2; ) t2[r2] = n2[r2];
|
||
return t2;
|
||
}
|
||
function $u(n2, t2, r2, e2) {
|
||
var u2 = !r2;
|
||
r2 || (r2 = {});
|
||
for (var i2 = -1, o2 = t2.length; ++i2 < o2; ) {
|
||
var f2 = t2[i2], c2 = e2 ? e2(r2[f2], n2[f2], f2, r2, n2) : X;
|
||
c2 === X && (c2 = n2[f2]), u2 ? Br2(r2, f2, c2) : Sr2(r2, f2, c2);
|
||
}
|
||
return r2;
|
||
}
|
||
function Du(n2, t2) {
|
||
return $u(n2, Is(n2), t2);
|
||
}
|
||
function Mu(n2, t2) {
|
||
return $u(n2, Rs(n2), t2);
|
||
}
|
||
function Fu(n2, r2) {
|
||
return function(e2, u2) {
|
||
var i2 = bh(e2) ? t : Lr2, o2 = r2 ? r2() : {};
|
||
return i2(e2, n2, mi(u2, 2), o2);
|
||
};
|
||
}
|
||
function Nu(n2) {
|
||
return uu(function(t2, r2) {
|
||
var e2 = -1, u2 = r2.length, i2 = u2 > 1 ? r2[u2 - 1] : X, o2 = u2 > 2 ? r2[2] : X;
|
||
for (i2 = n2.length > 3 && "function" == typeof i2 ? (u2--, i2) : X, o2 && Ui(r2[0], r2[1], o2) && (i2 = u2 < 3 ? X : i2, u2 = 1), t2 = ll(t2); ++e2 < u2; ) {
|
||
var f2 = r2[e2];
|
||
f2 && n2(t2, f2, e2, i2);
|
||
}
|
||
return t2;
|
||
});
|
||
}
|
||
function Pu(n2, t2) {
|
||
return function(r2, e2) {
|
||
if (null == r2) return r2;
|
||
if (!Hf(r2)) return n2(r2, e2);
|
||
for (var u2 = r2.length, i2 = t2 ? u2 : -1, o2 = ll(r2); (t2 ? i2-- : ++i2 < u2) && e2(o2[i2], i2, o2) !== false; ) ;
|
||
return r2;
|
||
};
|
||
}
|
||
function qu(n2) {
|
||
return function(t2, r2, e2) {
|
||
for (var u2 = -1, i2 = ll(t2), o2 = e2(t2), f2 = o2.length; f2--; ) {
|
||
var c2 = o2[n2 ? f2 : ++u2];
|
||
if (r2(i2[c2], c2, i2) === false) break;
|
||
}
|
||
return t2;
|
||
};
|
||
}
|
||
function Zu(n2, t2, r2) {
|
||
function e2() {
|
||
return (this && this !== re && this instanceof e2 ? i2 : n2).apply(u2 ? r2 : this, arguments);
|
||
}
|
||
var u2 = t2 & _n, i2 = Gu(n2);
|
||
return e2;
|
||
}
|
||
function Ku(n2) {
|
||
return function(t2) {
|
||
t2 = Ec(t2);
|
||
var r2 = T(t2) ? G(t2) : X, e2 = r2 ? r2[0] : t2.charAt(0), u2 = r2 ? Ou(r2, 1).join("") : t2.slice(1);
|
||
return e2[n2]() + u2;
|
||
};
|
||
}
|
||
function Vu(n2) {
|
||
return function(t2) {
|
||
return l(Ra(ca(t2).replace($r, "")), n2, "");
|
||
};
|
||
}
|
||
function Gu(n2) {
|
||
return function() {
|
||
var t2 = arguments;
|
||
switch (t2.length) {
|
||
case 0:
|
||
return new n2();
|
||
case 1:
|
||
return new n2(t2[0]);
|
||
case 2:
|
||
return new n2(t2[0], t2[1]);
|
||
case 3:
|
||
return new n2(t2[0], t2[1], t2[2]);
|
||
case 4:
|
||
return new n2(t2[0], t2[1], t2[2], t2[3]);
|
||
case 5:
|
||
return new n2(t2[0], t2[1], t2[2], t2[3], t2[4]);
|
||
case 6:
|
||
return new n2(t2[0], t2[1], t2[2], t2[3], t2[4], t2[5]);
|
||
case 7:
|
||
return new n2(t2[0], t2[1], t2[2], t2[3], t2[4], t2[5], t2[6]);
|
||
}
|
||
var r2 = gs(n2.prototype), e2 = n2.apply(r2, t2);
|
||
return fc(e2) ? e2 : r2;
|
||
};
|
||
}
|
||
function Hu(t2, r2, e2) {
|
||
function u2() {
|
||
for (var o2 = arguments.length, f2 = il(o2), c2 = o2, a2 = wi(u2); c2--; ) f2[c2] = arguments[c2];
|
||
var l2 = o2 < 3 && f2[0] !== a2 && f2[o2 - 1] !== a2 ? [] : N(f2, a2);
|
||
return o2 -= l2.length, o2 < e2 ? oi(t2, r2, Qu, u2.placeholder, X, f2, l2, X, X, e2 - o2) : n(this && this !== re && this instanceof u2 ? i2 : t2, this, f2);
|
||
}
|
||
var i2 = Gu(t2);
|
||
return u2;
|
||
}
|
||
function Ju(n2) {
|
||
return function(t2, r2, e2) {
|
||
var u2 = ll(t2);
|
||
if (!Hf(t2)) {
|
||
var i2 = mi(r2, 3);
|
||
t2 = Pc(t2), r2 = function(n3) {
|
||
return i2(u2[n3], n3, u2);
|
||
};
|
||
}
|
||
var o2 = n2(t2, r2, e2);
|
||
return o2 > -1 ? u2[i2 ? t2[o2] : o2] : X;
|
||
};
|
||
}
|
||
function Yu(n2) {
|
||
return gi(function(t2) {
|
||
var r2 = t2.length, e2 = r2, u2 = Y2.prototype.thru;
|
||
for (n2 && t2.reverse(); e2--; ) {
|
||
var i2 = t2[e2];
|
||
if ("function" != typeof i2) throw new pl(en);
|
||
if (u2 && !o2 && "wrapper" == bi(i2)) var o2 = new Y2([], true);
|
||
}
|
||
for (e2 = o2 ? e2 : r2; ++e2 < r2; ) {
|
||
i2 = t2[e2];
|
||
var f2 = bi(i2), c2 = "wrapper" == f2 ? Os(i2) : X;
|
||
o2 = c2 && $i(c2[0]) && c2[1] == (mn | yn | bn | xn) && !c2[4].length && 1 == c2[9] ? o2[bi(c2[0])].apply(o2, c2[3]) : 1 == i2.length && $i(i2) ? o2[f2]() : o2.thru(i2);
|
||
}
|
||
return function() {
|
||
var n3 = arguments, e3 = n3[0];
|
||
if (o2 && 1 == n3.length && bh(e3)) return o2.plant(e3).value();
|
||
for (var u3 = 0, i3 = r2 ? t2[u3].apply(this, n3) : e3; ++u3 < r2; ) i3 = t2[u3].call(this, i3);
|
||
return i3;
|
||
};
|
||
});
|
||
}
|
||
function Qu(n2, t2, r2, e2, u2, i2, o2, f2, c2, a2) {
|
||
function l2() {
|
||
for (var y2 = arguments.length, d2 = il(y2), b2 = y2; b2--; ) d2[b2] = arguments[b2];
|
||
if (_2) var w2 = wi(l2), m2 = C(d2, w2);
|
||
if (e2 && (d2 = Uu(d2, e2, u2, _2)), i2 && (d2 = Bu(d2, i2, o2, _2)), y2 -= m2, _2 && y2 < a2) {
|
||
return oi(n2, t2, Qu, l2.placeholder, r2, d2, N(d2, w2), f2, c2, a2 - y2);
|
||
}
|
||
var x3 = h2 ? r2 : this, j2 = p3 ? x3[n2] : n2;
|
||
return y2 = d2.length, f2 ? d2 = Hi(d2, f2) : v2 && y2 > 1 && d2.reverse(), s2 && c2 < y2 && (d2.length = c2), this && this !== re && this instanceof l2 && (j2 = g2 || Gu(j2)), j2.apply(x3, d2);
|
||
}
|
||
var s2 = t2 & mn, h2 = t2 & _n, p3 = t2 & vn, _2 = t2 & (yn | dn), v2 = t2 & jn, g2 = p3 ? X : Gu(n2);
|
||
return l2;
|
||
}
|
||
function Xu(n2, t2) {
|
||
return function(r2, e2) {
|
||
return Oe(r2, n2, t2(e2), {});
|
||
};
|
||
}
|
||
function ni(n2, t2) {
|
||
return function(r2, e2) {
|
||
var u2;
|
||
if (r2 === X && e2 === X) return t2;
|
||
if (r2 !== X && (u2 = r2), e2 !== X) {
|
||
if (u2 === X) return e2;
|
||
"string" == typeof r2 || "string" == typeof e2 ? (r2 = vu(r2), e2 = vu(e2)) : (r2 = _u(r2), e2 = _u(e2)), u2 = n2(r2, e2);
|
||
}
|
||
return u2;
|
||
};
|
||
}
|
||
function ti(t2) {
|
||
return gi(function(r2) {
|
||
return r2 = c(r2, z(mi())), uu(function(e2) {
|
||
var u2 = this;
|
||
return t2(r2, function(t3) {
|
||
return n(t3, u2, e2);
|
||
});
|
||
});
|
||
});
|
||
}
|
||
function ri(n2, t2) {
|
||
t2 = t2 === X ? " " : vu(t2);
|
||
var r2 = t2.length;
|
||
if (r2 < 2) return r2 ? eu(t2, n2) : t2;
|
||
var e2 = eu(t2, Fl(n2 / V(t2)));
|
||
return T(t2) ? Ou(G(e2), 0, n2).join("") : e2.slice(0, n2);
|
||
}
|
||
function ei(t2, r2, e2, u2) {
|
||
function i2() {
|
||
for (var r3 = -1, c2 = arguments.length, a2 = -1, l2 = u2.length, s2 = il(l2 + c2), h2 = this && this !== re && this instanceof i2 ? f2 : t2; ++a2 < l2; ) s2[a2] = u2[a2];
|
||
for (; c2--; ) s2[a2++] = arguments[++r3];
|
||
return n(h2, o2 ? e2 : this, s2);
|
||
}
|
||
var o2 = r2 & _n, f2 = Gu(t2);
|
||
return i2;
|
||
}
|
||
function ui(n2) {
|
||
return function(t2, r2, e2) {
|
||
return e2 && "number" != typeof e2 && Ui(t2, r2, e2) && (r2 = e2 = X), t2 = Ac(t2), r2 === X ? (r2 = t2, t2 = 0) : r2 = Ac(r2), e2 = e2 === X ? t2 < r2 ? 1 : -1 : Ac(e2), ru(t2, r2, e2, n2);
|
||
};
|
||
}
|
||
function ii(n2) {
|
||
return function(t2, r2) {
|
||
return "string" == typeof t2 && "string" == typeof r2 || (t2 = Ic(t2), r2 = Ic(r2)), n2(t2, r2);
|
||
};
|
||
}
|
||
function oi(n2, t2, r2, e2, u2, i2, o2, f2, c2, a2) {
|
||
var l2 = t2 & yn, s2 = l2 ? o2 : X, h2 = l2 ? X : o2, p3 = l2 ? i2 : X, _2 = l2 ? X : i2;
|
||
t2 |= l2 ? bn : wn, t2 &= ~(l2 ? wn : bn), t2 & gn || (t2 &= ~(_n | vn));
|
||
var v2 = [n2, t2, u2, p3, s2, _2, h2, f2, c2, a2], g2 = r2.apply(X, v2);
|
||
return $i(n2) && Ss(g2, v2), g2.placeholder = e2, Yi(g2, n2, t2);
|
||
}
|
||
function fi(n2) {
|
||
var t2 = al[n2];
|
||
return function(n3, r2) {
|
||
if (n3 = Ic(n3), r2 = null == r2 ? 0 : Hl(kc(r2), 292), r2 && Zl(n3)) {
|
||
var e2 = (Ec(n3) + "e").split("e");
|
||
return e2 = (Ec(t2(e2[0] + "e" + (+e2[1] + r2))) + "e").split("e"), +(e2[0] + "e" + (+e2[1] - r2));
|
||
}
|
||
return t2(n3);
|
||
};
|
||
}
|
||
function ci(n2) {
|
||
return function(t2) {
|
||
var r2 = zs(t2);
|
||
return r2 == Gn ? M(t2) : r2 == tt ? q(t2) : I(t2, n2(t2));
|
||
};
|
||
}
|
||
function ai(n2, t2, r2, e2, u2, i2, o2, f2) {
|
||
var c2 = t2 & vn;
|
||
if (!c2 && "function" != typeof n2) throw new pl(en);
|
||
var a2 = e2 ? e2.length : 0;
|
||
if (a2 || (t2 &= ~(bn | wn), e2 = u2 = X), o2 = o2 === X ? o2 : Gl(kc(o2), 0), f2 = f2 === X ? f2 : kc(f2), a2 -= u2 ? u2.length : 0, t2 & wn) {
|
||
var l2 = e2, s2 = u2;
|
||
e2 = u2 = X;
|
||
}
|
||
var h2 = c2 ? X : Os(n2), p3 = [n2, t2, r2, e2, u2, l2, s2, i2, o2, f2];
|
||
if (h2 && qi(p3, h2), n2 = p3[0], t2 = p3[1], r2 = p3[2], e2 = p3[3], u2 = p3[4], f2 = p3[9] = p3[9] === X ? c2 ? 0 : n2.length : Gl(p3[9] - a2, 0), !f2 && t2 & (yn | dn) && (t2 &= ~(yn | dn)), t2 && t2 != _n) _2 = t2 == yn || t2 == dn ? Hu(n2, t2, f2) : t2 != bn && t2 != (_n | bn) || u2.length ? Qu.apply(X, p3) : ei(n2, t2, r2, e2);
|
||
else var _2 = Zu(n2, t2, r2);
|
||
return Yi((h2 ? ms : Ss)(_2, p3), n2, t2);
|
||
}
|
||
function li(n2, t2, r2, e2) {
|
||
return n2 === X || Gf(n2, gl[r2]) && !bl.call(e2, r2) ? t2 : n2;
|
||
}
|
||
function si(n2, t2, r2, e2, u2, i2) {
|
||
return fc(n2) && fc(t2) && (i2.set(t2, n2), Ke(n2, t2, X, si, i2), i2.delete(t2)), n2;
|
||
}
|
||
function hi(n2) {
|
||
return gc(n2) ? X : n2;
|
||
}
|
||
function pi(n2, t2, r2, e2, u2, i2) {
|
||
var o2 = r2 & hn, f2 = n2.length, c2 = t2.length;
|
||
if (f2 != c2 && !(o2 && c2 > f2)) return false;
|
||
var a2 = i2.get(n2), l2 = i2.get(t2);
|
||
if (a2 && l2) return a2 == t2 && l2 == n2;
|
||
var s2 = -1, p3 = true, _2 = r2 & pn ? new yr2() : X;
|
||
for (i2.set(n2, t2), i2.set(t2, n2); ++s2 < f2; ) {
|
||
var v2 = n2[s2], g2 = t2[s2];
|
||
if (e2) var y2 = o2 ? e2(g2, v2, s2, t2, n2, i2) : e2(v2, g2, s2, n2, t2, i2);
|
||
if (y2 !== X) {
|
||
if (y2) continue;
|
||
p3 = false;
|
||
break;
|
||
}
|
||
if (_2) {
|
||
if (!h(t2, function(n3, t3) {
|
||
if (!S(_2, t3) && (v2 === n3 || u2(v2, n3, r2, e2, i2))) return _2.push(t3);
|
||
})) {
|
||
p3 = false;
|
||
break;
|
||
}
|
||
} else if (v2 !== g2 && !u2(v2, g2, r2, e2, i2)) {
|
||
p3 = false;
|
||
break;
|
||
}
|
||
}
|
||
return i2.delete(n2), i2.delete(t2), p3;
|
||
}
|
||
function _i(n2, t2, r2, e2, u2, i2, o2) {
|
||
switch (r2) {
|
||
case ct:
|
||
if (n2.byteLength != t2.byteLength || n2.byteOffset != t2.byteOffset) return false;
|
||
n2 = n2.buffer, t2 = t2.buffer;
|
||
case ft:
|
||
return !(n2.byteLength != t2.byteLength || !i2(new Rl(n2), new Rl(t2)));
|
||
case Nn:
|
||
case Pn:
|
||
case Hn:
|
||
return Gf(+n2, +t2);
|
||
case Zn:
|
||
return n2.name == t2.name && n2.message == t2.message;
|
||
case nt:
|
||
case rt:
|
||
return n2 == t2 + "";
|
||
case Gn:
|
||
var f2 = M;
|
||
case tt:
|
||
var c2 = e2 & hn;
|
||
if (f2 || (f2 = P), n2.size != t2.size && !c2) return false;
|
||
var a2 = o2.get(n2);
|
||
if (a2) return a2 == t2;
|
||
e2 |= pn, o2.set(n2, t2);
|
||
var l2 = pi(f2(n2), f2(t2), e2, u2, i2, o2);
|
||
return o2.delete(n2), l2;
|
||
case et:
|
||
if (_s) return _s.call(n2) == _s.call(t2);
|
||
}
|
||
return false;
|
||
}
|
||
function vi(n2, t2, r2, e2, u2, i2) {
|
||
var o2 = r2 & hn, f2 = yi(n2), c2 = f2.length;
|
||
if (c2 != yi(t2).length && !o2) return false;
|
||
for (var a2 = c2; a2--; ) {
|
||
var l2 = f2[a2];
|
||
if (!(o2 ? l2 in t2 : bl.call(t2, l2))) return false;
|
||
}
|
||
var s2 = i2.get(n2), h2 = i2.get(t2);
|
||
if (s2 && h2) return s2 == t2 && h2 == n2;
|
||
var p3 = true;
|
||
i2.set(n2, t2), i2.set(t2, n2);
|
||
for (var _2 = o2; ++a2 < c2; ) {
|
||
l2 = f2[a2];
|
||
var v2 = n2[l2], g2 = t2[l2];
|
||
if (e2) var y2 = o2 ? e2(g2, v2, l2, t2, n2, i2) : e2(v2, g2, l2, n2, t2, i2);
|
||
if (!(y2 === X ? v2 === g2 || u2(v2, g2, r2, e2, i2) : y2)) {
|
||
p3 = false;
|
||
break;
|
||
}
|
||
_2 || (_2 = "constructor" == l2);
|
||
}
|
||
if (p3 && !_2) {
|
||
var d2 = n2.constructor, b2 = t2.constructor;
|
||
d2 != b2 && "constructor" in n2 && "constructor" in t2 && !("function" == typeof d2 && d2 instanceof d2 && "function" == typeof b2 && b2 instanceof b2) && (p3 = false);
|
||
}
|
||
return i2.delete(n2), i2.delete(t2), p3;
|
||
}
|
||
function gi(n2) {
|
||
return Ls(Vi(n2, X, _o), n2 + "");
|
||
}
|
||
function yi(n2) {
|
||
return de2(n2, Pc, Is);
|
||
}
|
||
function di(n2) {
|
||
return de2(n2, qc, Rs);
|
||
}
|
||
function bi(n2) {
|
||
for (var t2 = n2.name + "", r2 = fs[t2], e2 = bl.call(fs, t2) ? r2.length : 0; e2--; ) {
|
||
var u2 = r2[e2], i2 = u2.func;
|
||
if (null == i2 || i2 == n2) return u2.name;
|
||
}
|
||
return t2;
|
||
}
|
||
function wi(n2) {
|
||
return (bl.call(Z2, "placeholder") ? Z2 : n2).placeholder;
|
||
}
|
||
function mi() {
|
||
var n2 = Z2.iteratee || Ca;
|
||
return n2 = n2 === Ca ? De : n2, arguments.length ? n2(arguments[0], arguments[1]) : n2;
|
||
}
|
||
function xi(n2, t2) {
|
||
var r2 = n2.__data__;
|
||
return Ti(t2) ? r2["string" == typeof t2 ? "string" : "hash"] : r2.map;
|
||
}
|
||
function ji(n2) {
|
||
for (var t2 = Pc(n2), r2 = t2.length; r2--; ) {
|
||
var e2 = t2[r2], u2 = n2[e2];
|
||
t2[r2] = [e2, u2, Fi(u2)];
|
||
}
|
||
return t2;
|
||
}
|
||
function Ai(n2, t2) {
|
||
var r2 = B(n2, t2);
|
||
return Ue(r2) ? r2 : X;
|
||
}
|
||
function ki(n2) {
|
||
var t2 = bl.call(n2, Bl), r2 = n2[Bl];
|
||
try {
|
||
n2[Bl] = X;
|
||
var e2 = true;
|
||
} catch (n3) {
|
||
}
|
||
var u2 = xl.call(n2);
|
||
return e2 && (t2 ? n2[Bl] = r2 : delete n2[Bl]), u2;
|
||
}
|
||
function Oi(n2, t2, r2) {
|
||
for (var e2 = -1, u2 = r2.length; ++e2 < u2; ) {
|
||
var i2 = r2[e2], o2 = i2.size;
|
||
switch (i2.type) {
|
||
case "drop":
|
||
n2 += o2;
|
||
break;
|
||
case "dropRight":
|
||
t2 -= o2;
|
||
break;
|
||
case "take":
|
||
t2 = Hl(t2, n2 + o2);
|
||
break;
|
||
case "takeRight":
|
||
n2 = Gl(n2, t2 - o2);
|
||
}
|
||
}
|
||
return { start: n2, end: t2 };
|
||
}
|
||
function Ii(n2) {
|
||
var t2 = n2.match(Bt);
|
||
return t2 ? t2[1].split(Tt) : [];
|
||
}
|
||
function Ri(n2, t2, r2) {
|
||
t2 = ku(t2, n2);
|
||
for (var e2 = -1, u2 = t2.length, i2 = false; ++e2 < u2; ) {
|
||
var o2 = no(t2[e2]);
|
||
if (!(i2 = null != n2 && r2(n2, o2))) break;
|
||
n2 = n2[o2];
|
||
}
|
||
return i2 || ++e2 != u2 ? i2 : (u2 = null == n2 ? 0 : n2.length, !!u2 && oc(u2) && Ci(o2, u2) && (bh(n2) || dh(n2)));
|
||
}
|
||
function zi(n2) {
|
||
var t2 = n2.length, r2 = new n2.constructor(t2);
|
||
return t2 && "string" == typeof n2[0] && bl.call(n2, "index") && (r2.index = n2.index, r2.input = n2.input), r2;
|
||
}
|
||
function Ei(n2) {
|
||
return "function" != typeof n2.constructor || Mi(n2) ? {} : gs(El(n2));
|
||
}
|
||
function Si(n2, t2, r2) {
|
||
var e2 = n2.constructor;
|
||
switch (t2) {
|
||
case ft:
|
||
return Ru(n2);
|
||
case Nn:
|
||
case Pn:
|
||
return new e2(+n2);
|
||
case ct:
|
||
return zu(n2, r2);
|
||
case at:
|
||
case lt:
|
||
case st:
|
||
case ht:
|
||
case pt:
|
||
case _t:
|
||
case vt:
|
||
case gt:
|
||
case yt:
|
||
return Wu(n2, r2);
|
||
case Gn:
|
||
return new e2();
|
||
case Hn:
|
||
case rt:
|
||
return new e2(n2);
|
||
case nt:
|
||
return Eu(n2);
|
||
case tt:
|
||
return new e2();
|
||
case et:
|
||
return Su(n2);
|
||
}
|
||
}
|
||
function Wi(n2, t2) {
|
||
var r2 = t2.length;
|
||
if (!r2) return n2;
|
||
var e2 = r2 - 1;
|
||
return t2[e2] = (r2 > 1 ? "& " : "") + t2[e2], t2 = t2.join(r2 > 2 ? ", " : " "), n2.replace(Ut, "{\n/* [wrapped with " + t2 + "] */\n");
|
||
}
|
||
function Li(n2) {
|
||
return bh(n2) || dh(n2) || !!(Cl && n2 && n2[Cl]);
|
||
}
|
||
function Ci(n2, t2) {
|
||
var r2 = typeof n2;
|
||
return t2 = null == t2 ? Wn : t2, !!t2 && ("number" == r2 || "symbol" != r2 && Vt.test(n2)) && n2 > -1 && n2 % 1 == 0 && n2 < t2;
|
||
}
|
||
function Ui(n2, t2, r2) {
|
||
if (!fc(r2)) return false;
|
||
var e2 = typeof t2;
|
||
return !!("number" == e2 ? Hf(r2) && Ci(t2, r2.length) : "string" == e2 && t2 in r2) && Gf(r2[t2], n2);
|
||
}
|
||
function Bi(n2, t2) {
|
||
if (bh(n2)) return false;
|
||
var r2 = typeof n2;
|
||
return !("number" != r2 && "symbol" != r2 && "boolean" != r2 && null != n2 && !bc(n2)) || (zt.test(n2) || !Rt.test(n2) || null != t2 && n2 in ll(t2));
|
||
}
|
||
function Ti(n2) {
|
||
var t2 = typeof n2;
|
||
return "string" == t2 || "number" == t2 || "symbol" == t2 || "boolean" == t2 ? "__proto__" !== n2 : null === n2;
|
||
}
|
||
function $i(n2) {
|
||
var t2 = bi(n2), r2 = Z2[t2];
|
||
if ("function" != typeof r2 || !(t2 in Ct2.prototype)) return false;
|
||
if (n2 === r2) return true;
|
||
var e2 = Os(r2);
|
||
return !!e2 && n2 === e2[0];
|
||
}
|
||
function Di(n2) {
|
||
return !!ml && ml in n2;
|
||
}
|
||
function Mi(n2) {
|
||
var t2 = n2 && n2.constructor;
|
||
return n2 === ("function" == typeof t2 && t2.prototype || gl);
|
||
}
|
||
function Fi(n2) {
|
||
return n2 === n2 && !fc(n2);
|
||
}
|
||
function Ni(n2, t2) {
|
||
return function(r2) {
|
||
return null != r2 && (r2[n2] === t2 && (t2 !== X || n2 in ll(r2)));
|
||
};
|
||
}
|
||
function Pi(n2) {
|
||
var t2 = Cf(n2, function(n3) {
|
||
return r2.size === fn && r2.clear(), n3;
|
||
}), r2 = t2.cache;
|
||
return t2;
|
||
}
|
||
function qi(n2, t2) {
|
||
var r2 = n2[1], e2 = t2[1], u2 = r2 | e2, i2 = u2 < (_n | vn | mn), o2 = e2 == mn && r2 == yn || e2 == mn && r2 == xn && n2[7].length <= t2[8] || e2 == (mn | xn) && t2[7].length <= t2[8] && r2 == yn;
|
||
if (!i2 && !o2) return n2;
|
||
e2 & _n && (n2[2] = t2[2], u2 |= r2 & _n ? 0 : gn);
|
||
var f2 = t2[3];
|
||
if (f2) {
|
||
var c2 = n2[3];
|
||
n2[3] = c2 ? Uu(c2, f2, t2[4]) : f2, n2[4] = c2 ? N(n2[3], cn) : t2[4];
|
||
}
|
||
return f2 = t2[5], f2 && (c2 = n2[5], n2[5] = c2 ? Bu(c2, f2, t2[6]) : f2, n2[6] = c2 ? N(n2[5], cn) : t2[6]), f2 = t2[7], f2 && (n2[7] = f2), e2 & mn && (n2[8] = null == n2[8] ? t2[8] : Hl(n2[8], t2[8])), null == n2[9] && (n2[9] = t2[9]), n2[0] = t2[0], n2[1] = u2, n2;
|
||
}
|
||
function Zi(n2) {
|
||
var t2 = [];
|
||
if (null != n2) for (var r2 in ll(n2)) t2.push(r2);
|
||
return t2;
|
||
}
|
||
function Ki(n2) {
|
||
return xl.call(n2);
|
||
}
|
||
function Vi(t2, r2, e2) {
|
||
return r2 = Gl(r2 === X ? t2.length - 1 : r2, 0), function() {
|
||
for (var u2 = arguments, i2 = -1, o2 = Gl(u2.length - r2, 0), f2 = il(o2); ++i2 < o2; ) f2[i2] = u2[r2 + i2];
|
||
i2 = -1;
|
||
for (var c2 = il(r2 + 1); ++i2 < r2; ) c2[i2] = u2[i2];
|
||
return c2[r2] = e2(f2), n(t2, this, c2);
|
||
};
|
||
}
|
||
function Gi(n2, t2) {
|
||
return t2.length < 2 ? n2 : _e2(n2, au(t2, 0, -1));
|
||
}
|
||
function Hi(n2, t2) {
|
||
for (var r2 = n2.length, e2 = Hl(t2.length, r2), u2 = Tu(n2); e2--; ) {
|
||
var i2 = t2[e2];
|
||
n2[e2] = Ci(i2, r2) ? u2[i2] : X;
|
||
}
|
||
return n2;
|
||
}
|
||
function Ji(n2, t2) {
|
||
if (("constructor" !== t2 || "function" != typeof n2[t2]) && "__proto__" != t2) return n2[t2];
|
||
}
|
||
function Yi(n2, t2, r2) {
|
||
var e2 = t2 + "";
|
||
return Ls(n2, Wi(e2, ro(Ii(e2), r2)));
|
||
}
|
||
function Qi(n2) {
|
||
var t2 = 0, r2 = 0;
|
||
return function() {
|
||
var e2 = Jl(), u2 = In - (e2 - r2);
|
||
if (r2 = e2, u2 > 0) {
|
||
if (++t2 >= On) return arguments[0];
|
||
} else t2 = 0;
|
||
return n2.apply(X, arguments);
|
||
};
|
||
}
|
||
function Xi(n2, t2) {
|
||
var r2 = -1, e2 = n2.length, u2 = e2 - 1;
|
||
for (t2 = t2 === X ? e2 : t2; ++r2 < t2; ) {
|
||
var i2 = tu(r2, u2), o2 = n2[i2];
|
||
n2[i2] = n2[r2], n2[r2] = o2;
|
||
}
|
||
return n2.length = t2, n2;
|
||
}
|
||
function no(n2) {
|
||
if ("string" == typeof n2 || bc(n2)) return n2;
|
||
var t2 = n2 + "";
|
||
return "0" == t2 && 1 / n2 == -Sn ? "-0" : t2;
|
||
}
|
||
function to(n2) {
|
||
if (null != n2) {
|
||
try {
|
||
return dl.call(n2);
|
||
} catch (n3) {
|
||
}
|
||
try {
|
||
return n2 + "";
|
||
} catch (n3) {
|
||
}
|
||
}
|
||
return "";
|
||
}
|
||
function ro(n2, t2) {
|
||
return r($n, function(r2) {
|
||
var e2 = "_." + r2[0];
|
||
t2 & r2[1] && !o(n2, e2) && n2.push(e2);
|
||
}), n2.sort();
|
||
}
|
||
function eo(n2) {
|
||
if (n2 instanceof Ct2) return n2.clone();
|
||
var t2 = new Y2(n2.__wrapped__, n2.__chain__);
|
||
return t2.__actions__ = Tu(n2.__actions__), t2.__index__ = n2.__index__, t2.__values__ = n2.__values__, t2;
|
||
}
|
||
function uo(n2, t2, r2) {
|
||
t2 = (r2 ? Ui(n2, t2, r2) : t2 === X) ? 1 : Gl(kc(t2), 0);
|
||
var e2 = null == n2 ? 0 : n2.length;
|
||
if (!e2 || t2 < 1) return [];
|
||
for (var u2 = 0, i2 = 0, o2 = il(Fl(e2 / t2)); u2 < e2; ) o2[i2++] = au(n2, u2, u2 += t2);
|
||
return o2;
|
||
}
|
||
function io(n2) {
|
||
for (var t2 = -1, r2 = null == n2 ? 0 : n2.length, e2 = 0, u2 = []; ++t2 < r2; ) {
|
||
var i2 = n2[t2];
|
||
i2 && (u2[e2++] = i2);
|
||
}
|
||
return u2;
|
||
}
|
||
function oo() {
|
||
var n2 = arguments.length;
|
||
if (!n2) return [];
|
||
for (var t2 = il(n2 - 1), r2 = arguments[0], e2 = n2; e2--; ) t2[e2 - 1] = arguments[e2];
|
||
return a(bh(r2) ? Tu(r2) : [r2], ee2(t2, 1));
|
||
}
|
||
function fo(n2, t2, r2) {
|
||
var e2 = null == n2 ? 0 : n2.length;
|
||
return e2 ? (t2 = r2 || t2 === X ? 1 : kc(t2), au(n2, t2 < 0 ? 0 : t2, e2)) : [];
|
||
}
|
||
function co(n2, t2, r2) {
|
||
var e2 = null == n2 ? 0 : n2.length;
|
||
return e2 ? (t2 = r2 || t2 === X ? 1 : kc(t2), t2 = e2 - t2, au(n2, 0, t2 < 0 ? 0 : t2)) : [];
|
||
}
|
||
function ao(n2, t2) {
|
||
return n2 && n2.length ? bu(n2, mi(t2, 3), true, true) : [];
|
||
}
|
||
function lo(n2, t2) {
|
||
return n2 && n2.length ? bu(n2, mi(t2, 3), true) : [];
|
||
}
|
||
function so(n2, t2, r2, e2) {
|
||
var u2 = null == n2 ? 0 : n2.length;
|
||
return u2 ? (r2 && "number" != typeof r2 && Ui(n2, t2, r2) && (r2 = 0, e2 = u2), ne2(n2, t2, r2, e2)) : [];
|
||
}
|
||
function ho(n2, t2, r2) {
|
||
var e2 = null == n2 ? 0 : n2.length;
|
||
if (!e2) return -1;
|
||
var u2 = null == r2 ? 0 : kc(r2);
|
||
return u2 < 0 && (u2 = Gl(e2 + u2, 0)), g(n2, mi(t2, 3), u2);
|
||
}
|
||
function po(n2, t2, r2) {
|
||
var e2 = null == n2 ? 0 : n2.length;
|
||
if (!e2) return -1;
|
||
var u2 = e2 - 1;
|
||
return r2 !== X && (u2 = kc(r2), u2 = r2 < 0 ? Gl(e2 + u2, 0) : Hl(u2, e2 - 1)), g(n2, mi(t2, 3), u2, true);
|
||
}
|
||
function _o(n2) {
|
||
return (null == n2 ? 0 : n2.length) ? ee2(n2, 1) : [];
|
||
}
|
||
function vo(n2) {
|
||
return (null == n2 ? 0 : n2.length) ? ee2(n2, Sn) : [];
|
||
}
|
||
function go(n2, t2) {
|
||
return (null == n2 ? 0 : n2.length) ? (t2 = t2 === X ? 1 : kc(t2), ee2(n2, t2)) : [];
|
||
}
|
||
function yo(n2) {
|
||
for (var t2 = -1, r2 = null == n2 ? 0 : n2.length, e2 = {}; ++t2 < r2; ) {
|
||
var u2 = n2[t2];
|
||
e2[u2[0]] = u2[1];
|
||
}
|
||
return e2;
|
||
}
|
||
function bo(n2) {
|
||
return n2 && n2.length ? n2[0] : X;
|
||
}
|
||
function wo(n2, t2, r2) {
|
||
var e2 = null == n2 ? 0 : n2.length;
|
||
if (!e2) return -1;
|
||
var u2 = null == r2 ? 0 : kc(r2);
|
||
return u2 < 0 && (u2 = Gl(e2 + u2, 0)), y(n2, t2, u2);
|
||
}
|
||
function mo(n2) {
|
||
return (null == n2 ? 0 : n2.length) ? au(n2, 0, -1) : [];
|
||
}
|
||
function xo(n2, t2) {
|
||
return null == n2 ? "" : Kl.call(n2, t2);
|
||
}
|
||
function jo(n2) {
|
||
var t2 = null == n2 ? 0 : n2.length;
|
||
return t2 ? n2[t2 - 1] : X;
|
||
}
|
||
function Ao(n2, t2, r2) {
|
||
var e2 = null == n2 ? 0 : n2.length;
|
||
if (!e2) return -1;
|
||
var u2 = e2;
|
||
return r2 !== X && (u2 = kc(r2), u2 = u2 < 0 ? Gl(e2 + u2, 0) : Hl(u2, e2 - 1)), t2 === t2 ? K(n2, t2, u2) : g(n2, b, u2, true);
|
||
}
|
||
function ko(n2, t2) {
|
||
return n2 && n2.length ? Ge(n2, kc(t2)) : X;
|
||
}
|
||
function Oo(n2, t2) {
|
||
return n2 && n2.length && t2 && t2.length ? Xe(n2, t2) : n2;
|
||
}
|
||
function Io(n2, t2, r2) {
|
||
return n2 && n2.length && t2 && t2.length ? Xe(n2, t2, mi(r2, 2)) : n2;
|
||
}
|
||
function Ro(n2, t2, r2) {
|
||
return n2 && n2.length && t2 && t2.length ? Xe(n2, t2, X, r2) : n2;
|
||
}
|
||
function zo(n2, t2) {
|
||
var r2 = [];
|
||
if (!n2 || !n2.length) return r2;
|
||
var e2 = -1, u2 = [], i2 = n2.length;
|
||
for (t2 = mi(t2, 3); ++e2 < i2; ) {
|
||
var o2 = n2[e2];
|
||
t2(o2, e2, n2) && (r2.push(o2), u2.push(e2));
|
||
}
|
||
return nu(n2, u2), r2;
|
||
}
|
||
function Eo(n2) {
|
||
return null == n2 ? n2 : Xl.call(n2);
|
||
}
|
||
function So(n2, t2, r2) {
|
||
var e2 = null == n2 ? 0 : n2.length;
|
||
return e2 ? (r2 && "number" != typeof r2 && Ui(n2, t2, r2) ? (t2 = 0, r2 = e2) : (t2 = null == t2 ? 0 : kc(t2), r2 = r2 === X ? e2 : kc(r2)), au(n2, t2, r2)) : [];
|
||
}
|
||
function Wo(n2, t2) {
|
||
return su(n2, t2);
|
||
}
|
||
function Lo(n2, t2, r2) {
|
||
return hu(n2, t2, mi(r2, 2));
|
||
}
|
||
function Co(n2, t2) {
|
||
var r2 = null == n2 ? 0 : n2.length;
|
||
if (r2) {
|
||
var e2 = su(n2, t2);
|
||
if (e2 < r2 && Gf(n2[e2], t2)) return e2;
|
||
}
|
||
return -1;
|
||
}
|
||
function Uo(n2, t2) {
|
||
return su(n2, t2, true);
|
||
}
|
||
function Bo(n2, t2, r2) {
|
||
return hu(n2, t2, mi(r2, 2), true);
|
||
}
|
||
function To(n2, t2) {
|
||
if (null == n2 ? 0 : n2.length) {
|
||
var r2 = su(n2, t2, true) - 1;
|
||
if (Gf(n2[r2], t2)) return r2;
|
||
}
|
||
return -1;
|
||
}
|
||
function $o(n2) {
|
||
return n2 && n2.length ? pu(n2) : [];
|
||
}
|
||
function Do(n2, t2) {
|
||
return n2 && n2.length ? pu(n2, mi(t2, 2)) : [];
|
||
}
|
||
function Mo(n2) {
|
||
var t2 = null == n2 ? 0 : n2.length;
|
||
return t2 ? au(n2, 1, t2) : [];
|
||
}
|
||
function Fo(n2, t2, r2) {
|
||
return n2 && n2.length ? (t2 = r2 || t2 === X ? 1 : kc(t2), au(n2, 0, t2 < 0 ? 0 : t2)) : [];
|
||
}
|
||
function No(n2, t2, r2) {
|
||
var e2 = null == n2 ? 0 : n2.length;
|
||
return e2 ? (t2 = r2 || t2 === X ? 1 : kc(t2), t2 = e2 - t2, au(n2, t2 < 0 ? 0 : t2, e2)) : [];
|
||
}
|
||
function Po(n2, t2) {
|
||
return n2 && n2.length ? bu(n2, mi(t2, 3), false, true) : [];
|
||
}
|
||
function qo(n2, t2) {
|
||
return n2 && n2.length ? bu(n2, mi(t2, 3)) : [];
|
||
}
|
||
function Zo(n2) {
|
||
return n2 && n2.length ? gu(n2) : [];
|
||
}
|
||
function Ko(n2, t2) {
|
||
return n2 && n2.length ? gu(n2, mi(t2, 2)) : [];
|
||
}
|
||
function Vo(n2, t2) {
|
||
return t2 = "function" == typeof t2 ? t2 : X, n2 && n2.length ? gu(n2, X, t2) : [];
|
||
}
|
||
function Go(n2) {
|
||
if (!n2 || !n2.length) return [];
|
||
var t2 = 0;
|
||
return n2 = i(n2, function(n3) {
|
||
if (Jf(n3)) return t2 = Gl(n3.length, t2), true;
|
||
}), O(t2, function(t3) {
|
||
return c(n2, m(t3));
|
||
});
|
||
}
|
||
function Ho(t2, r2) {
|
||
if (!t2 || !t2.length) return [];
|
||
var e2 = Go(t2);
|
||
return null == r2 ? e2 : c(e2, function(t3) {
|
||
return n(r2, X, t3);
|
||
});
|
||
}
|
||
function Jo(n2, t2) {
|
||
return xu(n2 || [], t2 || [], Sr2);
|
||
}
|
||
function Yo(n2, t2) {
|
||
return xu(n2 || [], t2 || [], fu);
|
||
}
|
||
function Qo(n2) {
|
||
var t2 = Z2(n2);
|
||
return t2.__chain__ = true, t2;
|
||
}
|
||
function Xo(n2, t2) {
|
||
return t2(n2), n2;
|
||
}
|
||
function nf(n2, t2) {
|
||
return t2(n2);
|
||
}
|
||
function tf() {
|
||
return Qo(this);
|
||
}
|
||
function rf() {
|
||
return new Y2(this.value(), this.__chain__);
|
||
}
|
||
function ef() {
|
||
this.__values__ === X && (this.__values__ = jc(this.value()));
|
||
var n2 = this.__index__ >= this.__values__.length;
|
||
return { done: n2, value: n2 ? X : this.__values__[this.__index__++] };
|
||
}
|
||
function uf() {
|
||
return this;
|
||
}
|
||
function of(n2) {
|
||
for (var t2, r2 = this; r2 instanceof J2; ) {
|
||
var e2 = eo(r2);
|
||
e2.__index__ = 0, e2.__values__ = X, t2 ? u2.__wrapped__ = e2 : t2 = e2;
|
||
var u2 = e2;
|
||
r2 = r2.__wrapped__;
|
||
}
|
||
return u2.__wrapped__ = n2, t2;
|
||
}
|
||
function ff() {
|
||
var n2 = this.__wrapped__;
|
||
if (n2 instanceof Ct2) {
|
||
var t2 = n2;
|
||
return this.__actions__.length && (t2 = new Ct2(this)), t2 = t2.reverse(), t2.__actions__.push({ func: nf, args: [Eo], thisArg: X }), new Y2(t2, this.__chain__);
|
||
}
|
||
return this.thru(Eo);
|
||
}
|
||
function cf() {
|
||
return wu(this.__wrapped__, this.__actions__);
|
||
}
|
||
function af(n2, t2, r2) {
|
||
var e2 = bh(n2) ? u : Jr2;
|
||
return r2 && Ui(n2, t2, r2) && (t2 = X), e2(n2, mi(t2, 3));
|
||
}
|
||
function lf(n2, t2) {
|
||
return (bh(n2) ? i : te2)(n2, mi(t2, 3));
|
||
}
|
||
function sf(n2, t2) {
|
||
return ee2(yf(n2, t2), 1);
|
||
}
|
||
function hf(n2, t2) {
|
||
return ee2(yf(n2, t2), Sn);
|
||
}
|
||
function pf(n2, t2, r2) {
|
||
return r2 = r2 === X ? 1 : kc(r2), ee2(yf(n2, t2), r2);
|
||
}
|
||
function _f(n2, t2) {
|
||
return (bh(n2) ? r : ys)(n2, mi(t2, 3));
|
||
}
|
||
function vf(n2, t2) {
|
||
return (bh(n2) ? e : ds)(n2, mi(t2, 3));
|
||
}
|
||
function gf(n2, t2, r2, e2) {
|
||
n2 = Hf(n2) ? n2 : ra(n2), r2 = r2 && !e2 ? kc(r2) : 0;
|
||
var u2 = n2.length;
|
||
return r2 < 0 && (r2 = Gl(u2 + r2, 0)), dc(n2) ? r2 <= u2 && n2.indexOf(t2, r2) > -1 : !!u2 && y(n2, t2, r2) > -1;
|
||
}
|
||
function yf(n2, t2) {
|
||
return (bh(n2) ? c : Pe)(n2, mi(t2, 3));
|
||
}
|
||
function df(n2, t2, r2, e2) {
|
||
return null == n2 ? [] : (bh(t2) || (t2 = null == t2 ? [] : [t2]), r2 = e2 ? X : r2, bh(r2) || (r2 = null == r2 ? [] : [r2]), He(n2, t2, r2));
|
||
}
|
||
function bf(n2, t2, r2) {
|
||
var e2 = bh(n2) ? l : j, u2 = arguments.length < 3;
|
||
return e2(n2, mi(t2, 4), r2, u2, ys);
|
||
}
|
||
function wf(n2, t2, r2) {
|
||
var e2 = bh(n2) ? s : j, u2 = arguments.length < 3;
|
||
return e2(n2, mi(t2, 4), r2, u2, ds);
|
||
}
|
||
function mf(n2, t2) {
|
||
return (bh(n2) ? i : te2)(n2, Uf(mi(t2, 3)));
|
||
}
|
||
function xf(n2) {
|
||
return (bh(n2) ? Ir2 : iu)(n2);
|
||
}
|
||
function jf(n2, t2, r2) {
|
||
return t2 = (r2 ? Ui(n2, t2, r2) : t2 === X) ? 1 : kc(t2), (bh(n2) ? Rr2 : ou)(n2, t2);
|
||
}
|
||
function Af(n2) {
|
||
return (bh(n2) ? zr2 : cu)(n2);
|
||
}
|
||
function kf(n2) {
|
||
if (null == n2) return 0;
|
||
if (Hf(n2)) return dc(n2) ? V(n2) : n2.length;
|
||
var t2 = zs(n2);
|
||
return t2 == Gn || t2 == tt ? n2.size : Me(n2).length;
|
||
}
|
||
function Of(n2, t2, r2) {
|
||
var e2 = bh(n2) ? h : lu;
|
||
return r2 && Ui(n2, t2, r2) && (t2 = X), e2(n2, mi(t2, 3));
|
||
}
|
||
function If(n2, t2) {
|
||
if ("function" != typeof t2) throw new pl(en);
|
||
return n2 = kc(n2), function() {
|
||
if (--n2 < 1) return t2.apply(this, arguments);
|
||
};
|
||
}
|
||
function Rf(n2, t2, r2) {
|
||
return t2 = r2 ? X : t2, t2 = n2 && null == t2 ? n2.length : t2, ai(n2, mn, X, X, X, X, t2);
|
||
}
|
||
function zf(n2, t2) {
|
||
var r2;
|
||
if ("function" != typeof t2) throw new pl(en);
|
||
return n2 = kc(n2), function() {
|
||
return --n2 > 0 && (r2 = t2.apply(this, arguments)), n2 <= 1 && (t2 = X), r2;
|
||
};
|
||
}
|
||
function Ef(n2, t2, r2) {
|
||
t2 = r2 ? X : t2;
|
||
var e2 = ai(n2, yn, X, X, X, X, X, t2);
|
||
return e2.placeholder = Ef.placeholder, e2;
|
||
}
|
||
function Sf(n2, t2, r2) {
|
||
t2 = r2 ? X : t2;
|
||
var e2 = ai(n2, dn, X, X, X, X, X, t2);
|
||
return e2.placeholder = Sf.placeholder, e2;
|
||
}
|
||
function Wf(n2, t2, r2) {
|
||
function e2(t3) {
|
||
var r3 = h2, e3 = p3;
|
||
return h2 = p3 = X, d2 = t3, v2 = n2.apply(e3, r3);
|
||
}
|
||
function u2(n3) {
|
||
return d2 = n3, g2 = Ws(f2, t2), b2 ? e2(n3) : v2;
|
||
}
|
||
function i2(n3) {
|
||
var r3 = n3 - y2, e3 = n3 - d2, u3 = t2 - r3;
|
||
return w2 ? Hl(u3, _2 - e3) : u3;
|
||
}
|
||
function o2(n3) {
|
||
var r3 = n3 - y2, e3 = n3 - d2;
|
||
return y2 === X || r3 >= t2 || r3 < 0 || w2 && e3 >= _2;
|
||
}
|
||
function f2() {
|
||
var n3 = fh();
|
||
return o2(n3) ? c2(n3) : (g2 = Ws(f2, i2(n3)), X);
|
||
}
|
||
function c2(n3) {
|
||
return g2 = X, m2 && h2 ? e2(n3) : (h2 = p3 = X, v2);
|
||
}
|
||
function a2() {
|
||
g2 !== X && As(g2), d2 = 0, h2 = y2 = p3 = g2 = X;
|
||
}
|
||
function l2() {
|
||
return g2 === X ? v2 : c2(fh());
|
||
}
|
||
function s2() {
|
||
var n3 = fh(), r3 = o2(n3);
|
||
if (h2 = arguments, p3 = this, y2 = n3, r3) {
|
||
if (g2 === X) return u2(y2);
|
||
if (w2) return As(g2), g2 = Ws(f2, t2), e2(y2);
|
||
}
|
||
return g2 === X && (g2 = Ws(f2, t2)), v2;
|
||
}
|
||
var h2, p3, _2, v2, g2, y2, d2 = 0, b2 = false, w2 = false, m2 = true;
|
||
if ("function" != typeof n2) throw new pl(en);
|
||
return t2 = Ic(t2) || 0, fc(r2) && (b2 = !!r2.leading, w2 = "maxWait" in r2, _2 = w2 ? Gl(Ic(r2.maxWait) || 0, t2) : _2, m2 = "trailing" in r2 ? !!r2.trailing : m2), s2.cancel = a2, s2.flush = l2, s2;
|
||
}
|
||
function Lf(n2) {
|
||
return ai(n2, jn);
|
||
}
|
||
function Cf(n2, t2) {
|
||
if ("function" != typeof n2 || null != t2 && "function" != typeof t2) throw new pl(en);
|
||
var r2 = function() {
|
||
var e2 = arguments, u2 = t2 ? t2.apply(this, e2) : e2[0], i2 = r2.cache;
|
||
if (i2.has(u2)) return i2.get(u2);
|
||
var o2 = n2.apply(this, e2);
|
||
return r2.cache = i2.set(u2, o2) || i2, o2;
|
||
};
|
||
return r2.cache = new (Cf.Cache || sr2)(), r2;
|
||
}
|
||
function Uf(n2) {
|
||
if ("function" != typeof n2) throw new pl(en);
|
||
return function() {
|
||
var t2 = arguments;
|
||
switch (t2.length) {
|
||
case 0:
|
||
return !n2.call(this);
|
||
case 1:
|
||
return !n2.call(this, t2[0]);
|
||
case 2:
|
||
return !n2.call(this, t2[0], t2[1]);
|
||
case 3:
|
||
return !n2.call(this, t2[0], t2[1], t2[2]);
|
||
}
|
||
return !n2.apply(this, t2);
|
||
};
|
||
}
|
||
function Bf(n2) {
|
||
return zf(2, n2);
|
||
}
|
||
function Tf(n2, t2) {
|
||
if ("function" != typeof n2) throw new pl(en);
|
||
return t2 = t2 === X ? t2 : kc(t2), uu(n2, t2);
|
||
}
|
||
function $f(t2, r2) {
|
||
if ("function" != typeof t2) throw new pl(en);
|
||
return r2 = null == r2 ? 0 : Gl(kc(r2), 0), uu(function(e2) {
|
||
var u2 = e2[r2], i2 = Ou(e2, 0, r2);
|
||
return u2 && a(i2, u2), n(t2, this, i2);
|
||
});
|
||
}
|
||
function Df(n2, t2, r2) {
|
||
var e2 = true, u2 = true;
|
||
if ("function" != typeof n2) throw new pl(en);
|
||
return fc(r2) && (e2 = "leading" in r2 ? !!r2.leading : e2, u2 = "trailing" in r2 ? !!r2.trailing : u2), Wf(n2, t2, { leading: e2, maxWait: t2, trailing: u2 });
|
||
}
|
||
function Mf(n2) {
|
||
return Rf(n2, 1);
|
||
}
|
||
function Ff(n2, t2) {
|
||
return ph(Au(t2), n2);
|
||
}
|
||
function Nf() {
|
||
if (!arguments.length) return [];
|
||
var n2 = arguments[0];
|
||
return bh(n2) ? n2 : [n2];
|
||
}
|
||
function Pf(n2) {
|
||
return Fr2(n2, sn);
|
||
}
|
||
function qf(n2, t2) {
|
||
return t2 = "function" == typeof t2 ? t2 : X, Fr2(n2, sn, t2);
|
||
}
|
||
function Zf(n2) {
|
||
return Fr2(n2, an | sn);
|
||
}
|
||
function Kf(n2, t2) {
|
||
return t2 = "function" == typeof t2 ? t2 : X, Fr2(n2, an | sn, t2);
|
||
}
|
||
function Vf(n2, t2) {
|
||
return null == t2 || Pr2(n2, t2, Pc(t2));
|
||
}
|
||
function Gf(n2, t2) {
|
||
return n2 === t2 || n2 !== n2 && t2 !== t2;
|
||
}
|
||
function Hf(n2) {
|
||
return null != n2 && oc(n2.length) && !uc(n2);
|
||
}
|
||
function Jf(n2) {
|
||
return cc(n2) && Hf(n2);
|
||
}
|
||
function Yf(n2) {
|
||
return n2 === true || n2 === false || cc(n2) && we(n2) == Nn;
|
||
}
|
||
function Qf(n2) {
|
||
return cc(n2) && 1 === n2.nodeType && !gc(n2);
|
||
}
|
||
function Xf(n2) {
|
||
if (null == n2) return true;
|
||
if (Hf(n2) && (bh(n2) || "string" == typeof n2 || "function" == typeof n2.splice || mh(n2) || Oh(n2) || dh(n2))) return !n2.length;
|
||
var t2 = zs(n2);
|
||
if (t2 == Gn || t2 == tt) return !n2.size;
|
||
if (Mi(n2)) return !Me(n2).length;
|
||
for (var r2 in n2) if (bl.call(n2, r2)) return false;
|
||
return true;
|
||
}
|
||
function nc(n2, t2) {
|
||
return Se(n2, t2);
|
||
}
|
||
function tc(n2, t2, r2) {
|
||
r2 = "function" == typeof r2 ? r2 : X;
|
||
var e2 = r2 ? r2(n2, t2) : X;
|
||
return e2 === X ? Se(n2, t2, X, r2) : !!e2;
|
||
}
|
||
function rc(n2) {
|
||
if (!cc(n2)) return false;
|
||
var t2 = we(n2);
|
||
return t2 == Zn || t2 == qn || "string" == typeof n2.message && "string" == typeof n2.name && !gc(n2);
|
||
}
|
||
function ec(n2) {
|
||
return "number" == typeof n2 && Zl(n2);
|
||
}
|
||
function uc(n2) {
|
||
if (!fc(n2)) return false;
|
||
var t2 = we(n2);
|
||
return t2 == Kn || t2 == Vn || t2 == Fn || t2 == Xn;
|
||
}
|
||
function ic(n2) {
|
||
return "number" == typeof n2 && n2 == kc(n2);
|
||
}
|
||
function oc(n2) {
|
||
return "number" == typeof n2 && n2 > -1 && n2 % 1 == 0 && n2 <= Wn;
|
||
}
|
||
function fc(n2) {
|
||
var t2 = typeof n2;
|
||
return null != n2 && ("object" == t2 || "function" == t2);
|
||
}
|
||
function cc(n2) {
|
||
return null != n2 && "object" == typeof n2;
|
||
}
|
||
function ac(n2, t2) {
|
||
return n2 === t2 || Ce(n2, t2, ji(t2));
|
||
}
|
||
function lc(n2, t2, r2) {
|
||
return r2 = "function" == typeof r2 ? r2 : X, Ce(n2, t2, ji(t2), r2);
|
||
}
|
||
function sc(n2) {
|
||
return vc(n2) && n2 != +n2;
|
||
}
|
||
function hc(n2) {
|
||
if (Es(n2)) throw new fl(rn);
|
||
return Ue(n2);
|
||
}
|
||
function pc(n2) {
|
||
return null === n2;
|
||
}
|
||
function _c(n2) {
|
||
return null == n2;
|
||
}
|
||
function vc(n2) {
|
||
return "number" == typeof n2 || cc(n2) && we(n2) == Hn;
|
||
}
|
||
function gc(n2) {
|
||
if (!cc(n2) || we(n2) != Yn) return false;
|
||
var t2 = El(n2);
|
||
if (null === t2) return true;
|
||
var r2 = bl.call(t2, "constructor") && t2.constructor;
|
||
return "function" == typeof r2 && r2 instanceof r2 && dl.call(r2) == jl;
|
||
}
|
||
function yc(n2) {
|
||
return ic(n2) && n2 >= -Wn && n2 <= Wn;
|
||
}
|
||
function dc(n2) {
|
||
return "string" == typeof n2 || !bh(n2) && cc(n2) && we(n2) == rt;
|
||
}
|
||
function bc(n2) {
|
||
return "symbol" == typeof n2 || cc(n2) && we(n2) == et;
|
||
}
|
||
function wc(n2) {
|
||
return n2 === X;
|
||
}
|
||
function mc(n2) {
|
||
return cc(n2) && zs(n2) == it;
|
||
}
|
||
function xc(n2) {
|
||
return cc(n2) && we(n2) == ot;
|
||
}
|
||
function jc(n2) {
|
||
if (!n2) return [];
|
||
if (Hf(n2)) return dc(n2) ? G(n2) : Tu(n2);
|
||
if (Ul && n2[Ul]) return D(n2[Ul]());
|
||
var t2 = zs(n2);
|
||
return (t2 == Gn ? M : t2 == tt ? P : ra)(n2);
|
||
}
|
||
function Ac(n2) {
|
||
if (!n2) return 0 === n2 ? n2 : 0;
|
||
if (n2 = Ic(n2), n2 === Sn || n2 === -Sn) {
|
||
return (n2 < 0 ? -1 : 1) * Ln;
|
||
}
|
||
return n2 === n2 ? n2 : 0;
|
||
}
|
||
function kc(n2) {
|
||
var t2 = Ac(n2), r2 = t2 % 1;
|
||
return t2 === t2 ? r2 ? t2 - r2 : t2 : 0;
|
||
}
|
||
function Oc(n2) {
|
||
return n2 ? Mr2(kc(n2), 0, Un) : 0;
|
||
}
|
||
function Ic(n2) {
|
||
if ("number" == typeof n2) return n2;
|
||
if (bc(n2)) return Cn;
|
||
if (fc(n2)) {
|
||
var t2 = "function" == typeof n2.valueOf ? n2.valueOf() : n2;
|
||
n2 = fc(t2) ? t2 + "" : t2;
|
||
}
|
||
if ("string" != typeof n2) return 0 === n2 ? n2 : +n2;
|
||
n2 = R(n2);
|
||
var r2 = qt.test(n2);
|
||
return r2 || Kt.test(n2) ? Xr(n2.slice(2), r2 ? 2 : 8) : Pt.test(n2) ? Cn : +n2;
|
||
}
|
||
function Rc(n2) {
|
||
return $u(n2, qc(n2));
|
||
}
|
||
function zc(n2) {
|
||
return n2 ? Mr2(kc(n2), -Wn, Wn) : 0 === n2 ? n2 : 0;
|
||
}
|
||
function Ec(n2) {
|
||
return null == n2 ? "" : vu(n2);
|
||
}
|
||
function Sc(n2, t2) {
|
||
var r2 = gs(n2);
|
||
return null == t2 ? r2 : Cr2(r2, t2);
|
||
}
|
||
function Wc(n2, t2) {
|
||
return v(n2, mi(t2, 3), ue2);
|
||
}
|
||
function Lc(n2, t2) {
|
||
return v(n2, mi(t2, 3), oe2);
|
||
}
|
||
function Cc(n2, t2) {
|
||
return null == n2 ? n2 : bs(n2, mi(t2, 3), qc);
|
||
}
|
||
function Uc(n2, t2) {
|
||
return null == n2 ? n2 : ws(n2, mi(t2, 3), qc);
|
||
}
|
||
function Bc(n2, t2) {
|
||
return n2 && ue2(n2, mi(t2, 3));
|
||
}
|
||
function Tc(n2, t2) {
|
||
return n2 && oe2(n2, mi(t2, 3));
|
||
}
|
||
function $c(n2) {
|
||
return null == n2 ? [] : fe2(n2, Pc(n2));
|
||
}
|
||
function Dc(n2) {
|
||
return null == n2 ? [] : fe2(n2, qc(n2));
|
||
}
|
||
function Mc(n2, t2, r2) {
|
||
var e2 = null == n2 ? X : _e2(n2, t2);
|
||
return e2 === X ? r2 : e2;
|
||
}
|
||
function Fc(n2, t2) {
|
||
return null != n2 && Ri(n2, t2, xe);
|
||
}
|
||
function Nc(n2, t2) {
|
||
return null != n2 && Ri(n2, t2, je);
|
||
}
|
||
function Pc(n2) {
|
||
return Hf(n2) ? Or2(n2) : Me(n2);
|
||
}
|
||
function qc(n2) {
|
||
return Hf(n2) ? Or2(n2, true) : Fe(n2);
|
||
}
|
||
function Zc(n2, t2) {
|
||
var r2 = {};
|
||
return t2 = mi(t2, 3), ue2(n2, function(n3, e2, u2) {
|
||
Br2(r2, t2(n3, e2, u2), n3);
|
||
}), r2;
|
||
}
|
||
function Kc(n2, t2) {
|
||
var r2 = {};
|
||
return t2 = mi(t2, 3), ue2(n2, function(n3, e2, u2) {
|
||
Br2(r2, e2, t2(n3, e2, u2));
|
||
}), r2;
|
||
}
|
||
function Vc(n2, t2) {
|
||
return Gc(n2, Uf(mi(t2)));
|
||
}
|
||
function Gc(n2, t2) {
|
||
if (null == n2) return {};
|
||
var r2 = c(di(n2), function(n3) {
|
||
return [n3];
|
||
});
|
||
return t2 = mi(t2), Ye(n2, r2, function(n3, r3) {
|
||
return t2(n3, r3[0]);
|
||
});
|
||
}
|
||
function Hc(n2, t2, r2) {
|
||
t2 = ku(t2, n2);
|
||
var e2 = -1, u2 = t2.length;
|
||
for (u2 || (u2 = 1, n2 = X); ++e2 < u2; ) {
|
||
var i2 = null == n2 ? X : n2[no(t2[e2])];
|
||
i2 === X && (e2 = u2, i2 = r2), n2 = uc(i2) ? i2.call(n2) : i2;
|
||
}
|
||
return n2;
|
||
}
|
||
function Jc(n2, t2, r2) {
|
||
return null == n2 ? n2 : fu(n2, t2, r2);
|
||
}
|
||
function Yc(n2, t2, r2, e2) {
|
||
return e2 = "function" == typeof e2 ? e2 : X, null == n2 ? n2 : fu(n2, t2, r2, e2);
|
||
}
|
||
function Qc(n2, t2, e2) {
|
||
var u2 = bh(n2), i2 = u2 || mh(n2) || Oh(n2);
|
||
if (t2 = mi(t2, 4), null == e2) {
|
||
var o2 = n2 && n2.constructor;
|
||
e2 = i2 ? u2 ? new o2() : [] : fc(n2) && uc(o2) ? gs(El(n2)) : {};
|
||
}
|
||
return (i2 ? r : ue2)(n2, function(n3, r2, u3) {
|
||
return t2(e2, n3, r2, u3);
|
||
}), e2;
|
||
}
|
||
function Xc(n2, t2) {
|
||
return null == n2 || yu(n2, t2);
|
||
}
|
||
function na(n2, t2, r2) {
|
||
return null == n2 ? n2 : du(n2, t2, Au(r2));
|
||
}
|
||
function ta(n2, t2, r2, e2) {
|
||
return e2 = "function" == typeof e2 ? e2 : X, null == n2 ? n2 : du(n2, t2, Au(r2), e2);
|
||
}
|
||
function ra(n2) {
|
||
return null == n2 ? [] : E(n2, Pc(n2));
|
||
}
|
||
function ea(n2) {
|
||
return null == n2 ? [] : E(n2, qc(n2));
|
||
}
|
||
function ua(n2, t2, r2) {
|
||
return r2 === X && (r2 = t2, t2 = X), r2 !== X && (r2 = Ic(r2), r2 = r2 === r2 ? r2 : 0), t2 !== X && (t2 = Ic(t2), t2 = t2 === t2 ? t2 : 0), Mr2(Ic(n2), t2, r2);
|
||
}
|
||
function ia(n2, t2, r2) {
|
||
return t2 = Ac(t2), r2 === X ? (r2 = t2, t2 = 0) : r2 = Ac(r2), n2 = Ic(n2), Ae(n2, t2, r2);
|
||
}
|
||
function oa(n2, t2, r2) {
|
||
if (r2 && "boolean" != typeof r2 && Ui(n2, t2, r2) && (t2 = r2 = X), r2 === X && ("boolean" == typeof t2 ? (r2 = t2, t2 = X) : "boolean" == typeof n2 && (r2 = n2, n2 = X)), n2 === X && t2 === X ? (n2 = 0, t2 = 1) : (n2 = Ac(n2), t2 === X ? (t2 = n2, n2 = 0) : t2 = Ac(t2)), n2 > t2) {
|
||
var e2 = n2;
|
||
n2 = t2, t2 = e2;
|
||
}
|
||
if (r2 || n2 % 1 || t2 % 1) {
|
||
var u2 = Ql();
|
||
return Hl(n2 + u2 * (t2 - n2 + Qr("1e-" + ((u2 + "").length - 1))), t2);
|
||
}
|
||
return tu(n2, t2);
|
||
}
|
||
function fa(n2) {
|
||
return Qh(Ec(n2).toLowerCase());
|
||
}
|
||
function ca(n2) {
|
||
return n2 = Ec(n2), n2 && n2.replace(Gt, ve).replace(Dr, "");
|
||
}
|
||
function aa(n2, t2, r2) {
|
||
n2 = Ec(n2), t2 = vu(t2);
|
||
var e2 = n2.length;
|
||
r2 = r2 === X ? e2 : Mr2(kc(r2), 0, e2);
|
||
var u2 = r2;
|
||
return r2 -= t2.length, r2 >= 0 && n2.slice(r2, u2) == t2;
|
||
}
|
||
function la(n2) {
|
||
return n2 = Ec(n2), n2 && At.test(n2) ? n2.replace(xt, ge) : n2;
|
||
}
|
||
function sa(n2) {
|
||
return n2 = Ec(n2), n2 && Wt.test(n2) ? n2.replace(St, "\\$&") : n2;
|
||
}
|
||
function ha(n2, t2, r2) {
|
||
n2 = Ec(n2), t2 = kc(t2);
|
||
var e2 = t2 ? V(n2) : 0;
|
||
if (!t2 || e2 >= t2) return n2;
|
||
var u2 = (t2 - e2) / 2;
|
||
return ri(Nl(u2), r2) + n2 + ri(Fl(u2), r2);
|
||
}
|
||
function pa(n2, t2, r2) {
|
||
n2 = Ec(n2), t2 = kc(t2);
|
||
var e2 = t2 ? V(n2) : 0;
|
||
return t2 && e2 < t2 ? n2 + ri(t2 - e2, r2) : n2;
|
||
}
|
||
function _a(n2, t2, r2) {
|
||
n2 = Ec(n2), t2 = kc(t2);
|
||
var e2 = t2 ? V(n2) : 0;
|
||
return t2 && e2 < t2 ? ri(t2 - e2, r2) + n2 : n2;
|
||
}
|
||
function va(n2, t2, r2) {
|
||
return r2 || null == t2 ? t2 = 0 : t2 && (t2 = +t2), Yl(Ec(n2).replace(Lt, ""), t2 || 0);
|
||
}
|
||
function ga(n2, t2, r2) {
|
||
return t2 = (r2 ? Ui(n2, t2, r2) : t2 === X) ? 1 : kc(t2), eu(Ec(n2), t2);
|
||
}
|
||
function ya() {
|
||
var n2 = arguments, t2 = Ec(n2[0]);
|
||
return n2.length < 3 ? t2 : t2.replace(n2[1], n2[2]);
|
||
}
|
||
function da(n2, t2, r2) {
|
||
return r2 && "number" != typeof r2 && Ui(n2, t2, r2) && (t2 = r2 = X), (r2 = r2 === X ? Un : r2 >>> 0) ? (n2 = Ec(n2), n2 && ("string" == typeof t2 || null != t2 && !Ah(t2)) && (t2 = vu(t2), !t2 && T(n2)) ? Ou(G(n2), 0, r2) : n2.split(t2, r2)) : [];
|
||
}
|
||
function ba(n2, t2, r2) {
|
||
return n2 = Ec(n2), r2 = null == r2 ? 0 : Mr2(kc(r2), 0, n2.length), t2 = vu(t2), n2.slice(r2, r2 + t2.length) == t2;
|
||
}
|
||
function wa(n2, t2, r2) {
|
||
var e2 = Z2.templateSettings;
|
||
r2 && Ui(n2, t2, r2) && (t2 = X), n2 = Ec(n2), t2 = Sh({}, t2, e2, li);
|
||
var u2, i2, o2 = Sh({}, t2.imports, e2.imports, li), f2 = Pc(o2), c2 = E(o2, f2), a2 = 0, l2 = t2.interpolate || Ht, s2 = "__p += '", h2 = sl((t2.escape || Ht).source + "|" + l2.source + "|" + (l2 === It ? Ft : Ht).source + "|" + (t2.evaluate || Ht).source + "|$", "g"), p3 = "//# sourceURL=" + (bl.call(t2, "sourceURL") ? (t2.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++Zr + "]") + "\n";
|
||
n2.replace(h2, function(t3, r3, e3, o3, f3, c3) {
|
||
return e3 || (e3 = o3), s2 += n2.slice(a2, c3).replace(Jt, U), r3 && (u2 = true, s2 += "' +\n__e(" + r3 + ") +\n'"), f3 && (i2 = true, s2 += "';\n" + f3 + ";\n__p += '"), e3 && (s2 += "' +\n((__t = (" + e3 + ")) == null ? '' : __t) +\n'"), a2 = c3 + t3.length, t3;
|
||
}), s2 += "';\n";
|
||
var _2 = bl.call(t2, "variable") && t2.variable;
|
||
if (_2) {
|
||
if (Dt.test(_2)) throw new fl(un);
|
||
} else s2 = "with (obj) {\n" + s2 + "\n}\n";
|
||
s2 = (i2 ? s2.replace(dt2, "") : s2).replace(bt, "$1").replace(wt, "$1;"), s2 = "function(" + (_2 || "obj") + ") {\n" + (_2 ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (u2 ? ", __e = _.escape" : "") + (i2 ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + s2 + "return __p\n}";
|
||
var v2 = Xh(function() {
|
||
return cl(f2, p3 + "return " + s2).apply(X, c2);
|
||
});
|
||
if (v2.source = s2, rc(v2)) throw v2;
|
||
return v2;
|
||
}
|
||
function ma(n2) {
|
||
return Ec(n2).toLowerCase();
|
||
}
|
||
function xa(n2) {
|
||
return Ec(n2).toUpperCase();
|
||
}
|
||
function ja(n2, t2, r2) {
|
||
if (n2 = Ec(n2), n2 && (r2 || t2 === X)) return R(n2);
|
||
if (!n2 || !(t2 = vu(t2))) return n2;
|
||
var e2 = G(n2), u2 = G(t2);
|
||
return Ou(e2, W(e2, u2), L(e2, u2) + 1).join("");
|
||
}
|
||
function Aa(n2, t2, r2) {
|
||
if (n2 = Ec(n2), n2 && (r2 || t2 === X)) return n2.slice(0, H(n2) + 1);
|
||
if (!n2 || !(t2 = vu(t2))) return n2;
|
||
var e2 = G(n2);
|
||
return Ou(e2, 0, L(e2, G(t2)) + 1).join("");
|
||
}
|
||
function ka(n2, t2, r2) {
|
||
if (n2 = Ec(n2), n2 && (r2 || t2 === X)) return n2.replace(Lt, "");
|
||
if (!n2 || !(t2 = vu(t2))) return n2;
|
||
var e2 = G(n2);
|
||
return Ou(e2, W(e2, G(t2))).join("");
|
||
}
|
||
function Oa(n2, t2) {
|
||
var r2 = An, e2 = kn;
|
||
if (fc(t2)) {
|
||
var u2 = "separator" in t2 ? t2.separator : u2;
|
||
r2 = "length" in t2 ? kc(t2.length) : r2, e2 = "omission" in t2 ? vu(t2.omission) : e2;
|
||
}
|
||
n2 = Ec(n2);
|
||
var i2 = n2.length;
|
||
if (T(n2)) {
|
||
var o2 = G(n2);
|
||
i2 = o2.length;
|
||
}
|
||
if (r2 >= i2) return n2;
|
||
var f2 = r2 - V(e2);
|
||
if (f2 < 1) return e2;
|
||
var c2 = o2 ? Ou(o2, 0, f2).join("") : n2.slice(0, f2);
|
||
if (u2 === X) return c2 + e2;
|
||
if (o2 && (f2 += c2.length - f2), Ah(u2)) {
|
||
if (n2.slice(f2).search(u2)) {
|
||
var a2, l2 = c2;
|
||
for (u2.global || (u2 = sl(u2.source, Ec(Nt.exec(u2)) + "g")), u2.lastIndex = 0; a2 = u2.exec(l2); ) var s2 = a2.index;
|
||
c2 = c2.slice(0, s2 === X ? f2 : s2);
|
||
}
|
||
} else if (n2.indexOf(vu(u2), f2) != f2) {
|
||
var h2 = c2.lastIndexOf(u2);
|
||
h2 > -1 && (c2 = c2.slice(0, h2));
|
||
}
|
||
return c2 + e2;
|
||
}
|
||
function Ia(n2) {
|
||
return n2 = Ec(n2), n2 && jt.test(n2) ? n2.replace(mt, ye) : n2;
|
||
}
|
||
function Ra(n2, t2, r2) {
|
||
return n2 = Ec(n2), t2 = r2 ? X : t2, t2 === X ? $(n2) ? Q(n2) : _(n2) : n2.match(t2) || [];
|
||
}
|
||
function za(t2) {
|
||
var r2 = null == t2 ? 0 : t2.length, e2 = mi();
|
||
return t2 = r2 ? c(t2, function(n2) {
|
||
if ("function" != typeof n2[1]) throw new pl(en);
|
||
return [e2(n2[0]), n2[1]];
|
||
}) : [], uu(function(e3) {
|
||
for (var u2 = -1; ++u2 < r2; ) {
|
||
var i2 = t2[u2];
|
||
if (n(i2[0], this, e3)) return n(i2[1], this, e3);
|
||
}
|
||
});
|
||
}
|
||
function Ea(n2) {
|
||
return Nr2(Fr2(n2, an));
|
||
}
|
||
function Sa(n2) {
|
||
return function() {
|
||
return n2;
|
||
};
|
||
}
|
||
function Wa(n2, t2) {
|
||
return null == n2 || n2 !== n2 ? t2 : n2;
|
||
}
|
||
function La(n2) {
|
||
return n2;
|
||
}
|
||
function Ca(n2) {
|
||
return De("function" == typeof n2 ? n2 : Fr2(n2, an));
|
||
}
|
||
function Ua(n2) {
|
||
return qe(Fr2(n2, an));
|
||
}
|
||
function Ba(n2, t2) {
|
||
return Ze(n2, Fr2(t2, an));
|
||
}
|
||
function Ta(n2, t2, e2) {
|
||
var u2 = Pc(t2), i2 = fe2(t2, u2);
|
||
null != e2 || fc(t2) && (i2.length || !u2.length) || (e2 = t2, t2 = n2, n2 = this, i2 = fe2(t2, Pc(t2)));
|
||
var o2 = !(fc(e2) && "chain" in e2 && !e2.chain), f2 = uc(n2);
|
||
return r(i2, function(r2) {
|
||
var e3 = t2[r2];
|
||
n2[r2] = e3, f2 && (n2.prototype[r2] = function() {
|
||
var t3 = this.__chain__;
|
||
if (o2 || t3) {
|
||
var r3 = n2(this.__wrapped__);
|
||
return (r3.__actions__ = Tu(this.__actions__)).push({ func: e3, args: arguments, thisArg: n2 }), r3.__chain__ = t3, r3;
|
||
}
|
||
return e3.apply(n2, a([this.value()], arguments));
|
||
});
|
||
}), n2;
|
||
}
|
||
function $a() {
|
||
return re._ === this && (re._ = Al), this;
|
||
}
|
||
function Da() {
|
||
}
|
||
function Ma(n2) {
|
||
return n2 = kc(n2), uu(function(t2) {
|
||
return Ge(t2, n2);
|
||
});
|
||
}
|
||
function Fa(n2) {
|
||
return Bi(n2) ? m(no(n2)) : Qe(n2);
|
||
}
|
||
function Na(n2) {
|
||
return function(t2) {
|
||
return null == n2 ? X : _e2(n2, t2);
|
||
};
|
||
}
|
||
function Pa() {
|
||
return [];
|
||
}
|
||
function qa() {
|
||
return false;
|
||
}
|
||
function Za() {
|
||
return {};
|
||
}
|
||
function Ka() {
|
||
return "";
|
||
}
|
||
function Va() {
|
||
return true;
|
||
}
|
||
function Ga(n2, t2) {
|
||
if (n2 = kc(n2), n2 < 1 || n2 > Wn) return [];
|
||
var r2 = Un, e2 = Hl(n2, Un);
|
||
t2 = mi(t2), n2 -= Un;
|
||
for (var u2 = O(e2, t2); ++r2 < n2; ) t2(r2);
|
||
return u2;
|
||
}
|
||
function Ha(n2) {
|
||
return bh(n2) ? c(n2, no) : bc(n2) ? [n2] : Tu(Cs(Ec(n2)));
|
||
}
|
||
function Ja(n2) {
|
||
var t2 = ++wl;
|
||
return Ec(n2) + t2;
|
||
}
|
||
function Ya(n2) {
|
||
return n2 && n2.length ? Yr2(n2, La, me) : X;
|
||
}
|
||
function Qa(n2, t2) {
|
||
return n2 && n2.length ? Yr2(n2, mi(t2, 2), me) : X;
|
||
}
|
||
function Xa(n2) {
|
||
return w(n2, La);
|
||
}
|
||
function nl(n2, t2) {
|
||
return w(n2, mi(t2, 2));
|
||
}
|
||
function tl(n2) {
|
||
return n2 && n2.length ? Yr2(n2, La, Ne) : X;
|
||
}
|
||
function rl(n2, t2) {
|
||
return n2 && n2.length ? Yr2(n2, mi(t2, 2), Ne) : X;
|
||
}
|
||
function el(n2) {
|
||
return n2 && n2.length ? k(n2, La) : 0;
|
||
}
|
||
function ul(n2, t2) {
|
||
return n2 && n2.length ? k(n2, mi(t2, 2)) : 0;
|
||
}
|
||
x2 = null == x2 ? re : be.defaults(re.Object(), x2, be.pick(re, qr));
|
||
var il = x2.Array, ol = x2.Date, fl = x2.Error, cl = x2.Function, al = x2.Math, ll = x2.Object, sl = x2.RegExp, hl = x2.String, pl = x2.TypeError, _l = il.prototype, vl = cl.prototype, gl = ll.prototype, yl = x2["__core-js_shared__"], dl = vl.toString, bl = gl.hasOwnProperty, wl = 0, ml = function() {
|
||
var n2 = /[^.]+$/.exec(yl && yl.keys && yl.keys.IE_PROTO || "");
|
||
return n2 ? "Symbol(src)_1." + n2 : "";
|
||
}(), xl = gl.toString, jl = dl.call(ll), Al = re._, kl = sl("^" + dl.call(bl).replace(St, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"), Ol = ie ? x2.Buffer : X, Il = x2.Symbol, Rl = x2.Uint8Array, zl = Ol ? Ol.allocUnsafe : X, El = F(ll.getPrototypeOf, ll), Sl = ll.create, Wl = gl.propertyIsEnumerable, Ll = _l.splice, Cl = Il ? Il.isConcatSpreadable : X, Ul = Il ? Il.iterator : X, Bl = Il ? Il.toStringTag : X, Tl = function() {
|
||
try {
|
||
var n2 = Ai(ll, "defineProperty");
|
||
return n2({}, "", {}), n2;
|
||
} catch (n3) {
|
||
}
|
||
}(), $l = x2.clearTimeout !== re.clearTimeout && x2.clearTimeout, Dl = ol && ol.now !== re.Date.now && ol.now, Ml = x2.setTimeout !== re.setTimeout && x2.setTimeout, Fl = al.ceil, Nl = al.floor, Pl = ll.getOwnPropertySymbols, ql = Ol ? Ol.isBuffer : X, Zl = x2.isFinite, Kl = _l.join, Vl = F(ll.keys, ll), Gl = al.max, Hl = al.min, Jl = ol.now, Yl = x2.parseInt, Ql = al.random, Xl = _l.reverse, ns = Ai(x2, "DataView"), ts = Ai(x2, "Map"), rs = Ai(x2, "Promise"), es = Ai(x2, "Set"), us = Ai(x2, "WeakMap"), is = Ai(ll, "create"), os = us && new us(), fs = {}, cs = to(ns), as = to(ts), ls = to(rs), ss = to(es), hs = to(us), ps = Il ? Il.prototype : X, _s = ps ? ps.valueOf : X, vs = ps ? ps.toString : X, gs = /* @__PURE__ */ function() {
|
||
function n2() {
|
||
}
|
||
return function(t2) {
|
||
if (!fc(t2)) return {};
|
||
if (Sl) return Sl(t2);
|
||
n2.prototype = t2;
|
||
var r2 = new n2();
|
||
return n2.prototype = X, r2;
|
||
};
|
||
}();
|
||
Z2.templateSettings = { escape: kt, evaluate: Ot, interpolate: It, variable: "", imports: { _: Z2 } }, Z2.prototype = J2.prototype, Z2.prototype.constructor = Z2, Y2.prototype = gs(J2.prototype), Y2.prototype.constructor = Y2, Ct2.prototype = gs(J2.prototype), Ct2.prototype.constructor = Ct2, Xt2.prototype.clear = nr2, Xt2.prototype.delete = tr2, Xt2.prototype.get = rr2, Xt2.prototype.has = er2, Xt2.prototype.set = ur2, ir2.prototype.clear = or2, ir2.prototype.delete = fr2, ir2.prototype.get = cr2, ir2.prototype.has = ar2, ir2.prototype.set = lr2, sr2.prototype.clear = hr2, sr2.prototype.delete = pr2, sr2.prototype.get = _r2, sr2.prototype.has = vr2, sr2.prototype.set = gr2, yr2.prototype.add = yr2.prototype.push = dr2, yr2.prototype.has = br2, wr2.prototype.clear = mr2, wr2.prototype.delete = xr2, wr2.prototype.get = jr2, wr2.prototype.has = Ar2, wr2.prototype.set = kr2;
|
||
var ys = Pu(ue2), ds = Pu(oe2, true), bs = qu(), ws = qu(true), ms = os ? function(n2, t2) {
|
||
return os.set(n2, t2), n2;
|
||
} : La, xs = Tl ? function(n2, t2) {
|
||
return Tl(n2, "toString", {
|
||
configurable: true,
|
||
enumerable: false,
|
||
value: Sa(t2),
|
||
writable: true
|
||
});
|
||
} : La, js = uu, As = $l || function(n2) {
|
||
return re.clearTimeout(n2);
|
||
}, ks = es && 1 / P(new es([, -0]))[1] == Sn ? function(n2) {
|
||
return new es(n2);
|
||
} : Da, Os = os ? function(n2) {
|
||
return os.get(n2);
|
||
} : Da, Is = Pl ? function(n2) {
|
||
return null == n2 ? [] : (n2 = ll(n2), i(Pl(n2), function(t2) {
|
||
return Wl.call(n2, t2);
|
||
}));
|
||
} : Pa, Rs = Pl ? function(n2) {
|
||
for (var t2 = []; n2; ) a(t2, Is(n2)), n2 = El(n2);
|
||
return t2;
|
||
} : Pa, zs = we;
|
||
(ns && zs(new ns(new ArrayBuffer(1))) != ct || ts && zs(new ts()) != Gn || rs && zs(rs.resolve()) != Qn || es && zs(new es()) != tt || us && zs(new us()) != it) && (zs = function(n2) {
|
||
var t2 = we(n2), r2 = t2 == Yn ? n2.constructor : X, e2 = r2 ? to(r2) : "";
|
||
if (e2) switch (e2) {
|
||
case cs:
|
||
return ct;
|
||
case as:
|
||
return Gn;
|
||
case ls:
|
||
return Qn;
|
||
case ss:
|
||
return tt;
|
||
case hs:
|
||
return it;
|
||
}
|
||
return t2;
|
||
});
|
||
var Es = yl ? uc : qa, Ss = Qi(ms), Ws = Ml || function(n2, t2) {
|
||
return re.setTimeout(n2, t2);
|
||
}, Ls = Qi(xs), Cs = Pi(function(n2) {
|
||
var t2 = [];
|
||
return 46 === n2.charCodeAt(0) && t2.push(""), n2.replace(Et, function(n3, r2, e2, u2) {
|
||
t2.push(e2 ? u2.replace(Mt, "$1") : r2 || n3);
|
||
}), t2;
|
||
}), Us = uu(function(n2, t2) {
|
||
return Jf(n2) ? Hr2(n2, ee2(t2, 1, Jf, true)) : [];
|
||
}), Bs = uu(function(n2, t2) {
|
||
var r2 = jo(t2);
|
||
return Jf(r2) && (r2 = X), Jf(n2) ? Hr2(n2, ee2(t2, 1, Jf, true), mi(r2, 2)) : [];
|
||
}), Ts = uu(function(n2, t2) {
|
||
var r2 = jo(t2);
|
||
return Jf(r2) && (r2 = X), Jf(n2) ? Hr2(n2, ee2(t2, 1, Jf, true), X, r2) : [];
|
||
}), $s = uu(function(n2) {
|
||
var t2 = c(n2, ju);
|
||
return t2.length && t2[0] === n2[0] ? ke(t2) : [];
|
||
}), Ds = uu(function(n2) {
|
||
var t2 = jo(n2), r2 = c(n2, ju);
|
||
return t2 === jo(r2) ? t2 = X : r2.pop(), r2.length && r2[0] === n2[0] ? ke(r2, mi(t2, 2)) : [];
|
||
}), Ms = uu(function(n2) {
|
||
var t2 = jo(n2), r2 = c(n2, ju);
|
||
return t2 = "function" == typeof t2 ? t2 : X, t2 && r2.pop(), r2.length && r2[0] === n2[0] ? ke(r2, X, t2) : [];
|
||
}), Fs = uu(Oo), Ns = gi(function(n2, t2) {
|
||
var r2 = null == n2 ? 0 : n2.length, e2 = Tr2(n2, t2);
|
||
return nu(n2, c(t2, function(n3) {
|
||
return Ci(n3, r2) ? +n3 : n3;
|
||
}).sort(Lu)), e2;
|
||
}), Ps = uu(function(n2) {
|
||
return gu(ee2(n2, 1, Jf, true));
|
||
}), qs2 = uu(function(n2) {
|
||
var t2 = jo(n2);
|
||
return Jf(t2) && (t2 = X), gu(ee2(n2, 1, Jf, true), mi(t2, 2));
|
||
}), Zs = uu(function(n2) {
|
||
var t2 = jo(n2);
|
||
return t2 = "function" == typeof t2 ? t2 : X, gu(ee2(n2, 1, Jf, true), X, t2);
|
||
}), Ks = uu(function(n2, t2) {
|
||
return Jf(n2) ? Hr2(n2, t2) : [];
|
||
}), Vs = uu(function(n2) {
|
||
return mu(i(n2, Jf));
|
||
}), Gs = uu(function(n2) {
|
||
var t2 = jo(n2);
|
||
return Jf(t2) && (t2 = X), mu(i(n2, Jf), mi(t2, 2));
|
||
}), Hs = uu(function(n2) {
|
||
var t2 = jo(n2);
|
||
return t2 = "function" == typeof t2 ? t2 : X, mu(i(n2, Jf), X, t2);
|
||
}), Js = uu(Go), Ys = uu(function(n2) {
|
||
var t2 = n2.length, r2 = t2 > 1 ? n2[t2 - 1] : X;
|
||
return r2 = "function" == typeof r2 ? (n2.pop(), r2) : X, Ho(n2, r2);
|
||
}), Qs = gi(function(n2) {
|
||
var t2 = n2.length, r2 = t2 ? n2[0] : 0, e2 = this.__wrapped__, u2 = function(t3) {
|
||
return Tr2(t3, n2);
|
||
};
|
||
return !(t2 > 1 || this.__actions__.length) && e2 instanceof Ct2 && Ci(r2) ? (e2 = e2.slice(r2, +r2 + (t2 ? 1 : 0)), e2.__actions__.push({ func: nf, args: [u2], thisArg: X }), new Y2(e2, this.__chain__).thru(function(n3) {
|
||
return t2 && !n3.length && n3.push(X), n3;
|
||
})) : this.thru(u2);
|
||
}), Xs = Fu(function(n2, t2, r2) {
|
||
bl.call(n2, r2) ? ++n2[r2] : Br2(n2, r2, 1);
|
||
}), nh = Ju(ho), th = Ju(po), rh = Fu(function(n2, t2, r2) {
|
||
bl.call(n2, r2) ? n2[r2].push(t2) : Br2(n2, r2, [t2]);
|
||
}), eh = uu(function(t2, r2, e2) {
|
||
var u2 = -1, i2 = "function" == typeof r2, o2 = Hf(t2) ? il(t2.length) : [];
|
||
return ys(t2, function(t3) {
|
||
o2[++u2] = i2 ? n(r2, t3, e2) : Ie(t3, r2, e2);
|
||
}), o2;
|
||
}), uh = Fu(function(n2, t2, r2) {
|
||
Br2(n2, r2, t2);
|
||
}), ih = Fu(function(n2, t2, r2) {
|
||
n2[r2 ? 0 : 1].push(t2);
|
||
}, function() {
|
||
return [[], []];
|
||
}), oh = uu(function(n2, t2) {
|
||
if (null == n2) return [];
|
||
var r2 = t2.length;
|
||
return r2 > 1 && Ui(n2, t2[0], t2[1]) ? t2 = [] : r2 > 2 && Ui(t2[0], t2[1], t2[2]) && (t2 = [t2[0]]), He(n2, ee2(t2, 1), []);
|
||
}), fh = Dl || function() {
|
||
return re.Date.now();
|
||
}, ch = uu(function(n2, t2, r2) {
|
||
var e2 = _n;
|
||
if (r2.length) {
|
||
var u2 = N(r2, wi(ch));
|
||
e2 |= bn;
|
||
}
|
||
return ai(n2, e2, t2, r2, u2);
|
||
}), ah = uu(function(n2, t2, r2) {
|
||
var e2 = _n | vn;
|
||
if (r2.length) {
|
||
var u2 = N(r2, wi(ah));
|
||
e2 |= bn;
|
||
}
|
||
return ai(t2, e2, n2, r2, u2);
|
||
}), lh = uu(function(n2, t2) {
|
||
return Gr2(n2, 1, t2);
|
||
}), sh = uu(function(n2, t2, r2) {
|
||
return Gr2(n2, Ic(t2) || 0, r2);
|
||
});
|
||
Cf.Cache = sr2;
|
||
var hh = js(function(t2, r2) {
|
||
r2 = 1 == r2.length && bh(r2[0]) ? c(r2[0], z(mi())) : c(ee2(r2, 1), z(mi()));
|
||
var e2 = r2.length;
|
||
return uu(function(u2) {
|
||
for (var i2 = -1, o2 = Hl(u2.length, e2); ++i2 < o2; ) u2[i2] = r2[i2].call(this, u2[i2]);
|
||
return n(t2, this, u2);
|
||
});
|
||
}), ph = uu(function(n2, t2) {
|
||
return ai(n2, bn, X, t2, N(t2, wi(ph)));
|
||
}), _h = uu(function(n2, t2) {
|
||
return ai(n2, wn, X, t2, N(t2, wi(_h)));
|
||
}), vh = gi(function(n2, t2) {
|
||
return ai(n2, xn, X, X, X, t2);
|
||
}), gh = ii(me), yh = ii(function(n2, t2) {
|
||
return n2 >= t2;
|
||
}), dh = Re(/* @__PURE__ */ function() {
|
||
return arguments;
|
||
}()) ? Re : function(n2) {
|
||
return cc(n2) && bl.call(n2, "callee") && !Wl.call(n2, "callee");
|
||
}, bh = il.isArray, wh = ce ? z(ce) : ze, mh = ql || qa, xh = ae ? z(ae) : Ee, jh = le ? z(le) : Le, Ah = se ? z(se) : Be, kh = he ? z(he) : Te, Oh = pe ? z(pe) : $e, Ih = ii(Ne), Rh = ii(function(n2, t2) {
|
||
return n2 <= t2;
|
||
}), zh = Nu(function(n2, t2) {
|
||
if (Mi(t2) || Hf(t2)) return $u(t2, Pc(t2), n2), X;
|
||
for (var r2 in t2) bl.call(t2, r2) && Sr2(n2, r2, t2[r2]);
|
||
}), Eh = Nu(function(n2, t2) {
|
||
$u(t2, qc(t2), n2);
|
||
}), Sh = Nu(function(n2, t2, r2, e2) {
|
||
$u(t2, qc(t2), n2, e2);
|
||
}), Wh = Nu(function(n2, t2, r2, e2) {
|
||
$u(t2, Pc(t2), n2, e2);
|
||
}), Lh = gi(Tr2), Ch = uu(function(n2, t2) {
|
||
n2 = ll(n2);
|
||
var r2 = -1, e2 = t2.length, u2 = e2 > 2 ? t2[2] : X;
|
||
for (u2 && Ui(t2[0], t2[1], u2) && (e2 = 1); ++r2 < e2; ) for (var i2 = t2[r2], o2 = qc(i2), f2 = -1, c2 = o2.length; ++f2 < c2; ) {
|
||
var a2 = o2[f2], l2 = n2[a2];
|
||
(l2 === X || Gf(l2, gl[a2]) && !bl.call(n2, a2)) && (n2[a2] = i2[a2]);
|
||
}
|
||
return n2;
|
||
}), Uh = uu(function(t2) {
|
||
return t2.push(X, si), n(Mh, X, t2);
|
||
}), Bh = Xu(function(n2, t2, r2) {
|
||
null != t2 && "function" != typeof t2.toString && (t2 = xl.call(t2)), n2[t2] = r2;
|
||
}, Sa(La)), Th = Xu(function(n2, t2, r2) {
|
||
null != t2 && "function" != typeof t2.toString && (t2 = xl.call(t2)), bl.call(n2, t2) ? n2[t2].push(r2) : n2[t2] = [r2];
|
||
}, mi), $h = uu(Ie), Dh = Nu(function(n2, t2, r2) {
|
||
Ke(n2, t2, r2);
|
||
}), Mh = Nu(function(n2, t2, r2, e2) {
|
||
Ke(n2, t2, r2, e2);
|
||
}), Fh = gi(function(n2, t2) {
|
||
var r2 = {};
|
||
if (null == n2) return r2;
|
||
var e2 = false;
|
||
t2 = c(t2, function(t3) {
|
||
return t3 = ku(t3, n2), e2 || (e2 = t3.length > 1), t3;
|
||
}), $u(n2, di(n2), r2), e2 && (r2 = Fr2(r2, an | ln | sn, hi));
|
||
for (var u2 = t2.length; u2--; ) yu(r2, t2[u2]);
|
||
return r2;
|
||
}), Nh = gi(function(n2, t2) {
|
||
return null == n2 ? {} : Je(n2, t2);
|
||
}), Ph = ci(Pc), qh = ci(qc), Zh = Vu(function(n2, t2, r2) {
|
||
return t2 = t2.toLowerCase(), n2 + (r2 ? fa(t2) : t2);
|
||
}), Kh = Vu(function(n2, t2, r2) {
|
||
return n2 + (r2 ? "-" : "") + t2.toLowerCase();
|
||
}), Vh = Vu(function(n2, t2, r2) {
|
||
return n2 + (r2 ? " " : "") + t2.toLowerCase();
|
||
}), Gh = Ku("toLowerCase"), Hh = Vu(function(n2, t2, r2) {
|
||
return n2 + (r2 ? "_" : "") + t2.toLowerCase();
|
||
}), Jh = Vu(function(n2, t2, r2) {
|
||
return n2 + (r2 ? " " : "") + Qh(t2);
|
||
}), Yh = Vu(function(n2, t2, r2) {
|
||
return n2 + (r2 ? " " : "") + t2.toUpperCase();
|
||
}), Qh = Ku("toUpperCase"), Xh = uu(function(t2, r2) {
|
||
try {
|
||
return n(t2, X, r2);
|
||
} catch (n2) {
|
||
return rc(n2) ? n2 : new fl(n2);
|
||
}
|
||
}), np = gi(function(n2, t2) {
|
||
return r(t2, function(t3) {
|
||
t3 = no(t3), Br2(n2, t3, ch(n2[t3], n2));
|
||
}), n2;
|
||
}), tp = Yu(), rp = Yu(true), ep = uu(function(n2, t2) {
|
||
return function(r2) {
|
||
return Ie(r2, n2, t2);
|
||
};
|
||
}), up = uu(function(n2, t2) {
|
||
return function(r2) {
|
||
return Ie(n2, r2, t2);
|
||
};
|
||
}), ip = ti(c), op = ti(u), fp = ti(h), cp = ui(), ap = ui(true), lp = ni(function(n2, t2) {
|
||
return n2 + t2;
|
||
}, 0), sp = fi("ceil"), hp = ni(function(n2, t2) {
|
||
return n2 / t2;
|
||
}, 1), pp = fi("floor"), _p = ni(function(n2, t2) {
|
||
return n2 * t2;
|
||
}, 1), vp = fi("round"), gp = ni(function(n2, t2) {
|
||
return n2 - t2;
|
||
}, 0);
|
||
return Z2.after = If, Z2.ary = Rf, Z2.assign = zh, Z2.assignIn = Eh, Z2.assignInWith = Sh, Z2.assignWith = Wh, Z2.at = Lh, Z2.before = zf, Z2.bind = ch, Z2.bindAll = np, Z2.bindKey = ah, Z2.castArray = Nf, Z2.chain = Qo, Z2.chunk = uo, Z2.compact = io, Z2.concat = oo, Z2.cond = za, Z2.conforms = Ea, Z2.constant = Sa, Z2.countBy = Xs, Z2.create = Sc, Z2.curry = Ef, Z2.curryRight = Sf, Z2.debounce = Wf, Z2.defaults = Ch, Z2.defaultsDeep = Uh, Z2.defer = lh, Z2.delay = sh, Z2.difference = Us, Z2.differenceBy = Bs, Z2.differenceWith = Ts, Z2.drop = fo, Z2.dropRight = co, Z2.dropRightWhile = ao, Z2.dropWhile = lo, Z2.fill = so, Z2.filter = lf, Z2.flatMap = sf, Z2.flatMapDeep = hf, Z2.flatMapDepth = pf, Z2.flatten = _o, Z2.flattenDeep = vo, Z2.flattenDepth = go, Z2.flip = Lf, Z2.flow = tp, Z2.flowRight = rp, Z2.fromPairs = yo, Z2.functions = $c, Z2.functionsIn = Dc, Z2.groupBy = rh, Z2.initial = mo, Z2.intersection = $s, Z2.intersectionBy = Ds, Z2.intersectionWith = Ms, Z2.invert = Bh, Z2.invertBy = Th, Z2.invokeMap = eh, Z2.iteratee = Ca, Z2.keyBy = uh, Z2.keys = Pc, Z2.keysIn = qc, Z2.map = yf, Z2.mapKeys = Zc, Z2.mapValues = Kc, Z2.matches = Ua, Z2.matchesProperty = Ba, Z2.memoize = Cf, Z2.merge = Dh, Z2.mergeWith = Mh, Z2.method = ep, Z2.methodOf = up, Z2.mixin = Ta, Z2.negate = Uf, Z2.nthArg = Ma, Z2.omit = Fh, Z2.omitBy = Vc, Z2.once = Bf, Z2.orderBy = df, Z2.over = ip, Z2.overArgs = hh, Z2.overEvery = op, Z2.overSome = fp, Z2.partial = ph, Z2.partialRight = _h, Z2.partition = ih, Z2.pick = Nh, Z2.pickBy = Gc, Z2.property = Fa, Z2.propertyOf = Na, Z2.pull = Fs, Z2.pullAll = Oo, Z2.pullAllBy = Io, Z2.pullAllWith = Ro, Z2.pullAt = Ns, Z2.range = cp, Z2.rangeRight = ap, Z2.rearg = vh, Z2.reject = mf, Z2.remove = zo, Z2.rest = Tf, Z2.reverse = Eo, Z2.sampleSize = jf, Z2.set = Jc, Z2.setWith = Yc, Z2.shuffle = Af, Z2.slice = So, Z2.sortBy = oh, Z2.sortedUniq = $o, Z2.sortedUniqBy = Do, Z2.split = da, Z2.spread = $f, Z2.tail = Mo, Z2.take = Fo, Z2.takeRight = No, Z2.takeRightWhile = Po, Z2.takeWhile = qo, Z2.tap = Xo, Z2.throttle = Df, Z2.thru = nf, Z2.toArray = jc, Z2.toPairs = Ph, Z2.toPairsIn = qh, Z2.toPath = Ha, Z2.toPlainObject = Rc, Z2.transform = Qc, Z2.unary = Mf, Z2.union = Ps, Z2.unionBy = qs2, Z2.unionWith = Zs, Z2.uniq = Zo, Z2.uniqBy = Ko, Z2.uniqWith = Vo, Z2.unset = Xc, Z2.unzip = Go, Z2.unzipWith = Ho, Z2.update = na, Z2.updateWith = ta, Z2.values = ra, Z2.valuesIn = ea, Z2.without = Ks, Z2.words = Ra, Z2.wrap = Ff, Z2.xor = Vs, Z2.xorBy = Gs, Z2.xorWith = Hs, Z2.zip = Js, Z2.zipObject = Jo, Z2.zipObjectDeep = Yo, Z2.zipWith = Ys, Z2.entries = Ph, Z2.entriesIn = qh, Z2.extend = Eh, Z2.extendWith = Sh, Ta(Z2, Z2), Z2.add = lp, Z2.attempt = Xh, Z2.camelCase = Zh, Z2.capitalize = fa, Z2.ceil = sp, Z2.clamp = ua, Z2.clone = Pf, Z2.cloneDeep = Zf, Z2.cloneDeepWith = Kf, Z2.cloneWith = qf, Z2.conformsTo = Vf, Z2.deburr = ca, Z2.defaultTo = Wa, Z2.divide = hp, Z2.endsWith = aa, Z2.eq = Gf, Z2.escape = la, Z2.escapeRegExp = sa, Z2.every = af, Z2.find = nh, Z2.findIndex = ho, Z2.findKey = Wc, Z2.findLast = th, Z2.findLastIndex = po, Z2.findLastKey = Lc, Z2.floor = pp, Z2.forEach = _f, Z2.forEachRight = vf, Z2.forIn = Cc, Z2.forInRight = Uc, Z2.forOwn = Bc, Z2.forOwnRight = Tc, Z2.get = Mc, Z2.gt = gh, Z2.gte = yh, Z2.has = Fc, Z2.hasIn = Nc, Z2.head = bo, Z2.identity = La, Z2.includes = gf, Z2.indexOf = wo, Z2.inRange = ia, Z2.invoke = $h, Z2.isArguments = dh, Z2.isArray = bh, Z2.isArrayBuffer = wh, Z2.isArrayLike = Hf, Z2.isArrayLikeObject = Jf, Z2.isBoolean = Yf, Z2.isBuffer = mh, Z2.isDate = xh, Z2.isElement = Qf, Z2.isEmpty = Xf, Z2.isEqual = nc, Z2.isEqualWith = tc, Z2.isError = rc, Z2.isFinite = ec, Z2.isFunction = uc, Z2.isInteger = ic, Z2.isLength = oc, Z2.isMap = jh, Z2.isMatch = ac, Z2.isMatchWith = lc, Z2.isNaN = sc, Z2.isNative = hc, Z2.isNil = _c, Z2.isNull = pc, Z2.isNumber = vc, Z2.isObject = fc, Z2.isObjectLike = cc, Z2.isPlainObject = gc, Z2.isRegExp = Ah, Z2.isSafeInteger = yc, Z2.isSet = kh, Z2.isString = dc, Z2.isSymbol = bc, Z2.isTypedArray = Oh, Z2.isUndefined = wc, Z2.isWeakMap = mc, Z2.isWeakSet = xc, Z2.join = xo, Z2.kebabCase = Kh, Z2.last = jo, Z2.lastIndexOf = Ao, Z2.lowerCase = Vh, Z2.lowerFirst = Gh, Z2.lt = Ih, Z2.lte = Rh, Z2.max = Ya, Z2.maxBy = Qa, Z2.mean = Xa, Z2.meanBy = nl, Z2.min = tl, Z2.minBy = rl, Z2.stubArray = Pa, Z2.stubFalse = qa, Z2.stubObject = Za, Z2.stubString = Ka, Z2.stubTrue = Va, Z2.multiply = _p, Z2.nth = ko, Z2.noConflict = $a, Z2.noop = Da, Z2.now = fh, Z2.pad = ha, Z2.padEnd = pa, Z2.padStart = _a, Z2.parseInt = va, Z2.random = oa, Z2.reduce = bf, Z2.reduceRight = wf, Z2.repeat = ga, Z2.replace = ya, Z2.result = Hc, Z2.round = vp, Z2.runInContext = p2, Z2.sample = xf, Z2.size = kf, Z2.snakeCase = Hh, Z2.some = Of, Z2.sortedIndex = Wo, Z2.sortedIndexBy = Lo, Z2.sortedIndexOf = Co, Z2.sortedLastIndex = Uo, Z2.sortedLastIndexBy = Bo, Z2.sortedLastIndexOf = To, Z2.startCase = Jh, Z2.startsWith = ba, Z2.subtract = gp, Z2.sum = el, Z2.sumBy = ul, Z2.template = wa, Z2.times = Ga, Z2.toFinite = Ac, Z2.toInteger = kc, Z2.toLength = Oc, Z2.toLower = ma, Z2.toNumber = Ic, Z2.toSafeInteger = zc, Z2.toString = Ec, Z2.toUpper = xa, Z2.trim = ja, Z2.trimEnd = Aa, Z2.trimStart = ka, Z2.truncate = Oa, Z2.unescape = Ia, Z2.uniqueId = Ja, Z2.upperCase = Yh, Z2.upperFirst = Qh, Z2.each = _f, Z2.eachRight = vf, Z2.first = bo, Ta(Z2, function() {
|
||
var n2 = {};
|
||
return ue2(Z2, function(t2, r2) {
|
||
bl.call(Z2.prototype, r2) || (n2[r2] = t2);
|
||
}), n2;
|
||
}(), { chain: false }), Z2.VERSION = nn, r(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(n2) {
|
||
Z2[n2].placeholder = Z2;
|
||
}), r(["drop", "take"], function(n2, t2) {
|
||
Ct2.prototype[n2] = function(r2) {
|
||
r2 = r2 === X ? 1 : Gl(kc(r2), 0);
|
||
var e2 = this.__filtered__ && !t2 ? new Ct2(this) : this.clone();
|
||
return e2.__filtered__ ? e2.__takeCount__ = Hl(r2, e2.__takeCount__) : e2.__views__.push({ size: Hl(r2, Un), type: n2 + (e2.__dir__ < 0 ? "Right" : "") }), e2;
|
||
}, Ct2.prototype[n2 + "Right"] = function(t3) {
|
||
return this.reverse()[n2](t3).reverse();
|
||
};
|
||
}), r(["filter", "map", "takeWhile"], function(n2, t2) {
|
||
var r2 = t2 + 1, e2 = r2 == Rn || r2 == En;
|
||
Ct2.prototype[n2] = function(n3) {
|
||
var t3 = this.clone();
|
||
return t3.__iteratees__.push({ iteratee: mi(n3, 3), type: r2 }), t3.__filtered__ = t3.__filtered__ || e2, t3;
|
||
};
|
||
}), r(["head", "last"], function(n2, t2) {
|
||
var r2 = "take" + (t2 ? "Right" : "");
|
||
Ct2.prototype[n2] = function() {
|
||
return this[r2](1).value()[0];
|
||
};
|
||
}), r(["initial", "tail"], function(n2, t2) {
|
||
var r2 = "drop" + (t2 ? "" : "Right");
|
||
Ct2.prototype[n2] = function() {
|
||
return this.__filtered__ ? new Ct2(this) : this[r2](1);
|
||
};
|
||
}), Ct2.prototype.compact = function() {
|
||
return this.filter(La);
|
||
}, Ct2.prototype.find = function(n2) {
|
||
return this.filter(n2).head();
|
||
}, Ct2.prototype.findLast = function(n2) {
|
||
return this.reverse().find(n2);
|
||
}, Ct2.prototype.invokeMap = uu(function(n2, t2) {
|
||
return "function" == typeof n2 ? new Ct2(this) : this.map(function(r2) {
|
||
return Ie(r2, n2, t2);
|
||
});
|
||
}), Ct2.prototype.reject = function(n2) {
|
||
return this.filter(Uf(mi(n2)));
|
||
}, Ct2.prototype.slice = function(n2, t2) {
|
||
n2 = kc(n2);
|
||
var r2 = this;
|
||
return r2.__filtered__ && (n2 > 0 || t2 < 0) ? new Ct2(r2) : (n2 < 0 ? r2 = r2.takeRight(-n2) : n2 && (r2 = r2.drop(n2)), t2 !== X && (t2 = kc(t2), r2 = t2 < 0 ? r2.dropRight(-t2) : r2.take(t2 - n2)), r2);
|
||
}, Ct2.prototype.takeRightWhile = function(n2) {
|
||
return this.reverse().takeWhile(n2).reverse();
|
||
}, Ct2.prototype.toArray = function() {
|
||
return this.take(Un);
|
||
}, ue2(Ct2.prototype, function(n2, t2) {
|
||
var r2 = /^(?:filter|find|map|reject)|While$/.test(t2), e2 = /^(?:head|last)$/.test(t2), u2 = Z2[e2 ? "take" + ("last" == t2 ? "Right" : "") : t2], i2 = e2 || /^find/.test(t2);
|
||
u2 && (Z2.prototype[t2] = function() {
|
||
var t3 = this.__wrapped__, o2 = e2 ? [1] : arguments, f2 = t3 instanceof Ct2, c2 = o2[0], l2 = f2 || bh(t3), s2 = function(n3) {
|
||
var t4 = u2.apply(Z2, a([n3], o2));
|
||
return e2 && h2 ? t4[0] : t4;
|
||
};
|
||
l2 && r2 && "function" == typeof c2 && 1 != c2.length && (f2 = l2 = false);
|
||
var h2 = this.__chain__, p3 = !!this.__actions__.length, _2 = i2 && !h2, v2 = f2 && !p3;
|
||
if (!i2 && l2) {
|
||
t3 = v2 ? t3 : new Ct2(this);
|
||
var g2 = n2.apply(t3, o2);
|
||
return g2.__actions__.push({ func: nf, args: [s2], thisArg: X }), new Y2(g2, h2);
|
||
}
|
||
return _2 && v2 ? n2.apply(this, o2) : (g2 = this.thru(s2), _2 ? e2 ? g2.value()[0] : g2.value() : g2);
|
||
});
|
||
}), r(["pop", "push", "shift", "sort", "splice", "unshift"], function(n2) {
|
||
var t2 = _l[n2], r2 = /^(?:push|sort|unshift)$/.test(n2) ? "tap" : "thru", e2 = /^(?:pop|shift)$/.test(n2);
|
||
Z2.prototype[n2] = function() {
|
||
var n3 = arguments;
|
||
if (e2 && !this.__chain__) {
|
||
var u2 = this.value();
|
||
return t2.apply(bh(u2) ? u2 : [], n3);
|
||
}
|
||
return this[r2](function(r3) {
|
||
return t2.apply(bh(r3) ? r3 : [], n3);
|
||
});
|
||
};
|
||
}), ue2(Ct2.prototype, function(n2, t2) {
|
||
var r2 = Z2[t2];
|
||
if (r2) {
|
||
var e2 = r2.name + "";
|
||
bl.call(fs, e2) || (fs[e2] = []), fs[e2].push({ name: t2, func: r2 });
|
||
}
|
||
}), fs[Qu(X, vn).name] = [{ name: "wrapper", func: X }], Ct2.prototype.clone = $t2, Ct2.prototype.reverse = Yt2, Ct2.prototype.value = Qt2, Z2.prototype.at = Qs, Z2.prototype.chain = tf, Z2.prototype.commit = rf, Z2.prototype.next = ef, Z2.prototype.plant = of, Z2.prototype.reverse = ff, Z2.prototype.toJSON = Z2.prototype.valueOf = Z2.prototype.value = cf, Z2.prototype.first = Z2.prototype.head, Ul && (Z2.prototype[Ul] = uf), Z2;
|
||
}, be = de();
|
||
"function" == typeof define && "object" == typeof define.amd && define.amd ? (re._ = be, define(function() {
|
||
return be;
|
||
})) : ue ? ((ue.exports = be)._ = be, ee._ = be) : re._ = be;
|
||
}).call(exports);
|
||
}
|
||
});
|
||
|
||
// node_modules/lodash/fp.js
|
||
var require_fp = __commonJS({
|
||
"node_modules/lodash/fp.js"(exports, module) {
|
||
var _ = require_lodash_min().runInContext();
|
||
module.exports = require_baseConvert()(_, _);
|
||
}
|
||
});
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/pages/App/index.mjs
|
||
var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
|
||
var import_react11 = __toESM(require_react(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs
|
||
var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
|
||
var import_react2 = __toESM(require_react(), 1);
|
||
var import_upperFirst = __toESM(require_upperFirst(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs
|
||
var import_react = __toESM(require_react(), 1);
|
||
var import_isEqual = __toESM(require_isEqual(), 1);
|
||
var useContentTypeBuilderMenu = () => {
|
||
const { components, componentsGroupedByCategory, contentTypes, isInDevelopmentMode, sortedContentTypesList, modifiedData, initialData } = useDataManager();
|
||
const { toggleNotification } = useNotification();
|
||
const { formatMessage } = useIntl();
|
||
const { trackUsage } = useTracking();
|
||
const [searchValue, setSearchValue] = (0, import_react.useState)("");
|
||
const { onOpenModalCreateSchema, onOpenModalEditCategory } = useFormModalNavigation();
|
||
const { locale } = useIntl();
|
||
const { startsWith } = useFilter(locale, {
|
||
sensitivity: "base"
|
||
});
|
||
const formatter = useCollator(locale, {
|
||
sensitivity: "base"
|
||
});
|
||
const canOpenModalCreateCTorComponent = !Object.keys(contentTypes).some((ct) => contentTypes[ct].isTemporary === true) && !Object.keys(components).some((component) => components[component].isTemporary === true) && (0, import_isEqual.default)(modifiedData, initialData);
|
||
const handleClickOpenModalCreateCollectionType = () => {
|
||
if (canOpenModalCreateCTorComponent) {
|
||
trackUsage(`willCreateContentType`);
|
||
const nextState = {
|
||
modalType: "contentType",
|
||
kind: "collectionType",
|
||
actionType: "create",
|
||
forTarget: "contentType"
|
||
};
|
||
onOpenModalCreateSchema(nextState);
|
||
} else {
|
||
toggleNotificationCannotCreateSchema();
|
||
}
|
||
};
|
||
const handleClickOpenModalCreateSingleType = () => {
|
||
if (canOpenModalCreateCTorComponent) {
|
||
trackUsage(`willCreateSingleType`);
|
||
const nextState = {
|
||
modalType: "contentType",
|
||
kind: "singleType",
|
||
actionType: "create",
|
||
forTarget: "contentType"
|
||
};
|
||
onOpenModalCreateSchema(nextState);
|
||
} else {
|
||
toggleNotificationCannotCreateSchema();
|
||
}
|
||
};
|
||
const handleClickOpenModalCreateComponent = () => {
|
||
if (canOpenModalCreateCTorComponent) {
|
||
trackUsage("willCreateComponent");
|
||
const nextState = {
|
||
modalType: "component",
|
||
kind: null,
|
||
actionType: "create",
|
||
forTarget: "component"
|
||
};
|
||
onOpenModalCreateSchema(nextState);
|
||
} else {
|
||
toggleNotificationCannotCreateSchema();
|
||
}
|
||
};
|
||
const toggleNotificationCannotCreateSchema = () => {
|
||
toggleNotification({
|
||
type: "info",
|
||
message: formatMessage({
|
||
id: getTrad("notification.info.creating.notSaved"),
|
||
defaultMessage: "Please save your work before creating a new collection type or component"
|
||
})
|
||
});
|
||
};
|
||
const componentsData = Object.entries(componentsGroupedByCategory).map(([category, components2]) => ({
|
||
name: category,
|
||
title: category,
|
||
isEditable: isInDevelopmentMode,
|
||
// TODO: re-add functionality to edit category name
|
||
onClickEdit(e, data2) {
|
||
e.stopPropagation();
|
||
if (canOpenModalCreateCTorComponent) {
|
||
onOpenModalEditCategory(data2.name);
|
||
} else {
|
||
toggleNotificationCannotCreateSchema();
|
||
}
|
||
},
|
||
links: components2.map((component) => ({
|
||
name: component.uid,
|
||
to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,
|
||
title: component.schema.displayName
|
||
})).sort((a, b) => formatter.compare(a.title, b.title))
|
||
})).sort((a, b) => formatter.compare(a.title, b.title));
|
||
const displayedContentTypes = sortedContentTypesList.filter((obj) => obj.visible);
|
||
const data = [
|
||
{
|
||
name: "models",
|
||
title: {
|
||
id: `${getTrad("menu.section.models.name")}`,
|
||
defaultMessage: "Collection Types"
|
||
},
|
||
customLink: isInDevelopmentMode && {
|
||
id: `${getTrad("button.model.create")}`,
|
||
defaultMessage: "Create new collection type",
|
||
onClick: handleClickOpenModalCreateCollectionType
|
||
},
|
||
links: displayedContentTypes.filter((contentType) => contentType.kind === "collectionType")
|
||
},
|
||
{
|
||
name: "singleTypes",
|
||
title: {
|
||
id: `${getTrad("menu.section.single-types.name")}`,
|
||
defaultMessage: "Single Types"
|
||
},
|
||
customLink: isInDevelopmentMode && {
|
||
id: `${getTrad("button.single-types.create")}`,
|
||
defaultMessage: "Create new single type",
|
||
onClick: handleClickOpenModalCreateSingleType
|
||
},
|
||
links: displayedContentTypes.filter((singleType) => singleType.kind === "singleType")
|
||
},
|
||
{
|
||
name: "components",
|
||
title: {
|
||
id: `${getTrad("menu.section.components.name")}`,
|
||
defaultMessage: "Components"
|
||
},
|
||
customLink: isInDevelopmentMode && {
|
||
id: `${getTrad("button.component.create")}`,
|
||
defaultMessage: "Create a new component",
|
||
onClick: handleClickOpenModalCreateComponent
|
||
},
|
||
links: componentsData
|
||
}
|
||
].map((section) => {
|
||
const hasChild = section.links.some((l) => Array.isArray(l.links));
|
||
if (hasChild) {
|
||
let filteredLinksCount = 0;
|
||
return {
|
||
...section,
|
||
links: section.links.map((link) => {
|
||
const filteredLinks2 = link.links.filter((link2) => startsWith(link2.title, searchValue));
|
||
if (filteredLinks2.length === 0) {
|
||
return null;
|
||
}
|
||
filteredLinksCount += filteredLinks2.length;
|
||
return {
|
||
...link,
|
||
links: filteredLinks2.sort((a, b) => formatter.compare(a.title, b.title))
|
||
};
|
||
}).filter(Boolean),
|
||
linksCount: filteredLinksCount
|
||
};
|
||
}
|
||
const filteredLinks = section.links.filter((link) => startsWith(link.title, searchValue)).sort((a, b) => formatter.compare(a.title, b.title));
|
||
return {
|
||
...section,
|
||
links: filteredLinks,
|
||
linksCount: filteredLinks.length
|
||
};
|
||
});
|
||
return {
|
||
menu: data,
|
||
search: {
|
||
value: searchValue,
|
||
onChange: setSearchValue,
|
||
clear: () => setSearchValue("")
|
||
}
|
||
};
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs
|
||
var SubNavLinkCustom = dt(SubNavLink)`
|
||
div {
|
||
width: inherit;
|
||
span:nth-child(2) {
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
width: inherit;
|
||
}
|
||
}
|
||
`;
|
||
var ContentTypeBuilderNav = () => {
|
||
const { menu, search } = useContentTypeBuilderMenu();
|
||
const { formatMessage } = useIntl();
|
||
const pluginName = formatMessage({
|
||
id: getTrad("plugin.name"),
|
||
defaultMessage: "Content-Type Builder"
|
||
});
|
||
return (0, import_jsx_runtime.jsxs)(SubNav, {
|
||
"aria-label": pluginName,
|
||
children: [
|
||
(0, import_jsx_runtime.jsx)(SubNavHeader, {
|
||
searchable: true,
|
||
value: search.value,
|
||
onClear: () => search.clear(),
|
||
onChange: (e) => search.onChange(e.target.value),
|
||
label: pluginName,
|
||
searchLabel: formatMessage({
|
||
id: "global.search",
|
||
defaultMessage: "Search"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime.jsx)(SubNavSections, {
|
||
children: menu.map((section) => (0, import_jsx_runtime.jsxs)(import_react2.Fragment, {
|
||
children: [
|
||
(0, import_jsx_runtime.jsx)(SubNavSection, {
|
||
label: formatMessage({
|
||
id: section.title.id,
|
||
defaultMessage: section.title.defaultMessage
|
||
}),
|
||
collapsable: true,
|
||
badgeLabel: section.linksCount.toString(),
|
||
children: section.links.map((link) => {
|
||
if (link.links) {
|
||
return (0, import_jsx_runtime.jsx)(SubNavLinkSection, {
|
||
label: (0, import_upperFirst.default)(link.title),
|
||
children: link.links.map((subLink) => (0, import_jsx_runtime.jsx)(SubNavLink, {
|
||
tag: NavLink,
|
||
to: subLink.to,
|
||
active: subLink.active,
|
||
isSubSectionChild: true,
|
||
children: (0, import_upperFirst.default)(formatMessage({
|
||
id: subLink.name,
|
||
defaultMessage: subLink.title
|
||
}))
|
||
}, subLink.name))
|
||
}, link.name);
|
||
}
|
||
return (0, import_jsx_runtime.jsx)(SubNavLinkCustom, {
|
||
tag: NavLink,
|
||
to: link.to,
|
||
active: link.active,
|
||
width: "100%",
|
||
children: (0, import_upperFirst.default)(formatMessage({
|
||
id: link.name,
|
||
defaultMessage: link.title
|
||
}))
|
||
}, link.name);
|
||
})
|
||
}),
|
||
section.customLink && (0, import_jsx_runtime.jsx)(Box, {
|
||
paddingLeft: 7,
|
||
children: (0, import_jsx_runtime.jsx)(TextButton, {
|
||
onClick: section.customLink.onClick,
|
||
startIcon: (0, import_jsx_runtime.jsx)(ForwardRef$1h, {
|
||
width: "0.8rem",
|
||
height: "0.8rem"
|
||
}),
|
||
marginTop: 2,
|
||
cursor: "pointer",
|
||
children: formatMessage({
|
||
id: section.customLink.id,
|
||
defaultMessage: section.customLink.defaultMessage
|
||
})
|
||
})
|
||
})
|
||
]
|
||
}, section.name))
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs
|
||
var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
|
||
var import_react10 = __toESM(require_react(), 1);
|
||
var import_get9 = __toESM(require_get(), 1);
|
||
var import_groupBy = __toESM(require_groupBy(), 1);
|
||
var import_set2 = __toESM(require_set(), 1);
|
||
var import_size = __toESM(require_size(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/FormModal.mjs
|
||
var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
|
||
var React2 = __toESM(require_react(), 1);
|
||
var import_get4 = __toESM(require_get(), 1);
|
||
var import_has = __toESM(require_has(), 1);
|
||
var import_isEqual3 = __toESM(require_isEqual(), 1);
|
||
var import_set = __toESM(require_set(), 1);
|
||
var import_toLower = __toESM(require_toLower(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/utils/isAllowedContentTypesForRelations.mjs
|
||
var isAllowedContentTypesForRelations = (contentType) => {
|
||
return contentType.kind === "collectionType" && (contentType.restrictRelationsTo === null || Array.isArray(contentType.restrictRelationsTo) && contentType.restrictRelationsTo.length > 0);
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/utils/findAttribute.mjs
|
||
var findAttribute = (attributes, attributeToFind) => {
|
||
return attributes.find(({ name }) => name === attributeToFind);
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/utils/getYupInnerErrors.mjs
|
||
var extractValuesFromYupError = (errorType, errorParams) => {
|
||
if (!errorType || !errorParams) {
|
||
return {};
|
||
}
|
||
return {
|
||
[errorType]: errorParams[errorType]
|
||
};
|
||
};
|
||
var getYupInnerErrors = (error) => ((error == null ? void 0 : error.inner) || []).reduce((acc, currentError) => {
|
||
if (currentError.path) {
|
||
acc[currentError.path.split("[").join(".").split("]").join("")] = {
|
||
id: currentError.message,
|
||
defaultMessage: currentError.message,
|
||
values: extractValuesFromYupError(currentError == null ? void 0 : currentError.type, currentError == null ? void 0 : currentError.params)
|
||
};
|
||
}
|
||
return acc;
|
||
}, {});
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AllowedTypesSelect.mjs
|
||
var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
|
||
var import_upperFirst2 = __toESM(require_upperFirst(), 1);
|
||
var options = [
|
||
{
|
||
label: "All",
|
||
children: [
|
||
{
|
||
label: "images (JPEG, PNG, GIF, SVG, TIFF, ICO, DVU)",
|
||
value: "images"
|
||
},
|
||
{
|
||
label: "videos (MPEG, MP4, Quicktime, WMV, AVI, FLV)",
|
||
value: "videos"
|
||
},
|
||
{
|
||
label: "audios (MP3, WAV, OGG)",
|
||
value: "audios"
|
||
},
|
||
{
|
||
label: "files (CSV, ZIP, PDF, Excel, JSON, ...)",
|
||
value: "files"
|
||
}
|
||
]
|
||
}
|
||
];
|
||
var AllowedTypesSelect = ({ intlLabel, name, onChange, value = null }) => {
|
||
const { formatMessage } = useIntl();
|
||
const displayedValue = value === null || (value == null ? void 0 : value.length) === 0 ? formatMessage({
|
||
id: "global.none",
|
||
defaultMessage: "None"
|
||
}) : [
|
||
...value
|
||
].sort().map((v) => (0, import_upperFirst2.default)(v)).join(", ");
|
||
const label = intlLabel.id ? formatMessage({
|
||
id: intlLabel.id,
|
||
defaultMessage: intlLabel.defaultMessage
|
||
}) : name;
|
||
return (0, import_jsx_runtime2.jsxs)(Field.Root, {
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime2.jsx)(Field.Label, {
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime2.jsx)(MultiSelectNested, {
|
||
customizeContent: () => displayedValue,
|
||
onChange: (values) => {
|
||
if (values.length > 0) {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: values,
|
||
type: "allowed-types-select"
|
||
}
|
||
});
|
||
} else {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: null,
|
||
type: "allowed-types-select"
|
||
}
|
||
});
|
||
}
|
||
},
|
||
options,
|
||
value: value || []
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/AttributeOptions.mjs
|
||
var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/AttributeList.mjs
|
||
var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/AttributeOption.mjs
|
||
var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/OptionBoxWrapper.mjs
|
||
var OptionBoxWrapper = dt(Box)`
|
||
width: 100%;
|
||
height: 100%;
|
||
border: 1px solid ${({ theme }) => theme.colors.neutral200};
|
||
text-align: left;
|
||
&:hover {
|
||
cursor: pointer;
|
||
background: ${({ theme }) => theme.colors.primary100};
|
||
border: 1px solid ${({ theme }) => theme.colors.primary200};
|
||
}
|
||
`;
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/AttributeOption.mjs
|
||
var newAttributes = [];
|
||
var NewBadge = () => (0, import_jsx_runtime3.jsx)(Flex, {
|
||
grow: 1,
|
||
justifyContent: "flex-end",
|
||
children: (0, import_jsx_runtime3.jsxs)(Flex, {
|
||
gap: 1,
|
||
hasRadius: true,
|
||
background: "alternative100",
|
||
padding: `0.2rem 0.4rem`,
|
||
children: [
|
||
(0, import_jsx_runtime3.jsx)(ForwardRef$J, {
|
||
width: `1rem`,
|
||
height: `1rem`,
|
||
fill: "alternative600"
|
||
}),
|
||
(0, import_jsx_runtime3.jsx)(Typography, {
|
||
textColor: "alternative600",
|
||
variant: "sigma",
|
||
children: "New"
|
||
})
|
||
]
|
||
})
|
||
});
|
||
var AttributeOption = ({ type = "text" }) => {
|
||
const { formatMessage } = useIntl();
|
||
const { onClickSelectField } = useFormModalNavigation();
|
||
const handleClick = () => {
|
||
const step = type === "component" ? "1" : null;
|
||
onClickSelectField({
|
||
attributeType: type,
|
||
step
|
||
});
|
||
};
|
||
return (0, import_jsx_runtime3.jsx)(OptionBoxWrapper, {
|
||
padding: 4,
|
||
tag: "button",
|
||
hasRadius: true,
|
||
type: "button",
|
||
onClick: handleClick,
|
||
children: (0, import_jsx_runtime3.jsxs)(Flex, {
|
||
children: [
|
||
(0, import_jsx_runtime3.jsx)(AttributeIcon, {
|
||
type
|
||
}),
|
||
(0, import_jsx_runtime3.jsxs)(Box, {
|
||
paddingLeft: 4,
|
||
width: "100%",
|
||
children: [
|
||
(0, import_jsx_runtime3.jsxs)(Flex, {
|
||
justifyContent: "space-between",
|
||
children: [
|
||
(0, import_jsx_runtime3.jsx)(Typography, {
|
||
fontWeight: "bold",
|
||
textColor: "neutral800",
|
||
children: formatMessage({
|
||
id: getTrad(`attribute.${type}`),
|
||
defaultMessage: type
|
||
})
|
||
}),
|
||
newAttributes.includes(type) && (0, import_jsx_runtime3.jsx)(NewBadge, {})
|
||
]
|
||
}),
|
||
(0, import_jsx_runtime3.jsx)(Flex, {
|
||
children: (0, import_jsx_runtime3.jsx)(Typography, {
|
||
variant: "pi",
|
||
textColor: "neutral600",
|
||
children: formatMessage({
|
||
id: getTrad(`attribute.${type}.description`),
|
||
defaultMessage: "A type for modeling data"
|
||
})
|
||
})
|
||
})
|
||
]
|
||
})
|
||
]
|
||
})
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/AttributeList.mjs
|
||
var AttributeList = ({ attributes }) => (0, import_jsx_runtime4.jsx)(KeyboardNavigable, {
|
||
tagName: "button",
|
||
children: (0, import_jsx_runtime4.jsx)(Flex, {
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
gap: 8,
|
||
children: attributes.map((attributeRow, index) => {
|
||
return (
|
||
// eslint-disable-next-line react/no-array-index-key
|
||
(0, import_jsx_runtime4.jsx)(Grid.Root, {
|
||
gap: 3,
|
||
children: attributeRow.map((attribute) => (0, import_jsx_runtime4.jsx)(Grid.Item, {
|
||
col: 6,
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
children: (0, import_jsx_runtime4.jsx)(AttributeOption, {
|
||
type: attribute
|
||
})
|
||
}, attribute))
|
||
}, index)
|
||
);
|
||
})
|
||
})
|
||
});
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/CustomFieldsList.mjs
|
||
var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/CustomFieldOption.mjs
|
||
var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
|
||
var import_react3 = __toESM(require_react(), 1);
|
||
var CustomFieldOption = ({ customFieldUid, customField }) => {
|
||
const { type, intlLabel, intlDescription } = customField;
|
||
const { formatMessage } = useIntl();
|
||
const { onClickSelectCustomField } = useFormModalNavigation();
|
||
const handleClick = () => {
|
||
onClickSelectCustomField({
|
||
attributeType: type,
|
||
customFieldUid
|
||
});
|
||
};
|
||
return (0, import_jsx_runtime5.jsx)(OptionBoxWrapper, {
|
||
padding: 4,
|
||
tag: "button",
|
||
hasRadius: true,
|
||
type: "button",
|
||
onClick: handleClick,
|
||
children: (0, import_jsx_runtime5.jsxs)(Flex, {
|
||
children: [
|
||
(0, import_jsx_runtime5.jsx)(AttributeIcon, {
|
||
type,
|
||
customField: customFieldUid
|
||
}),
|
||
(0, import_jsx_runtime5.jsxs)(Box, {
|
||
paddingLeft: 4,
|
||
children: [
|
||
(0, import_jsx_runtime5.jsx)(Flex, {
|
||
children: (0, import_jsx_runtime5.jsx)(Typography, {
|
||
fontWeight: "bold",
|
||
textColor: "neutral800",
|
||
children: formatMessage(intlLabel)
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime5.jsx)(Flex, {
|
||
children: (0, import_jsx_runtime5.jsx)(Typography, {
|
||
variant: "pi",
|
||
textColor: "neutral600",
|
||
children: formatMessage(intlDescription)
|
||
})
|
||
})
|
||
]
|
||
})
|
||
]
|
||
})
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/EmptyAttributes.mjs
|
||
var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
|
||
var qs = __toESM(require_lib(), 1);
|
||
var EmptyCard = dt(Box)`
|
||
background: ${({ theme }) => `linear-gradient(180deg, rgba(234, 234, 239, 0) 0%, ${theme.colors.neutral150} 100%)`};
|
||
opacity: 0.33;
|
||
`;
|
||
var EmptyCardGrid = () => {
|
||
return (0, import_jsx_runtime6.jsx)(Flex, {
|
||
wrap: "wrap",
|
||
gap: 4,
|
||
children: [
|
||
...Array(4)
|
||
].map((_, idx) => {
|
||
return (0, import_jsx_runtime6.jsx)(EmptyCard, {
|
||
height: "138px",
|
||
width: "375px",
|
||
hasRadius: true
|
||
}, `empty-card-${idx}`);
|
||
})
|
||
});
|
||
};
|
||
var EmptyAttributes = () => {
|
||
const { formatMessage } = useIntl();
|
||
return (0, import_jsx_runtime6.jsxs)(Box, {
|
||
position: "relative",
|
||
children: [
|
||
(0, import_jsx_runtime6.jsx)(EmptyCardGrid, {}),
|
||
(0, import_jsx_runtime6.jsx)(Box, {
|
||
position: "absolute",
|
||
top: 6,
|
||
width: "100%",
|
||
children: (0, import_jsx_runtime6.jsxs)(Flex, {
|
||
alignItems: "center",
|
||
justifyContent: "center",
|
||
direction: "column",
|
||
children: [
|
||
(0, import_jsx_runtime6.jsx)(ForwardRef$J2, {
|
||
width: "160px",
|
||
height: "88px"
|
||
}),
|
||
(0, import_jsx_runtime6.jsx)(Box, {
|
||
paddingTop: 6,
|
||
paddingBottom: 4,
|
||
children: (0, import_jsx_runtime6.jsxs)(Box, {
|
||
textAlign: "center",
|
||
children: [
|
||
(0, import_jsx_runtime6.jsx)(Typography, {
|
||
variant: "delta",
|
||
tag: "p",
|
||
textColor: "neutral600",
|
||
children: formatMessage({
|
||
id: getTrad("modalForm.empty.heading"),
|
||
defaultMessage: "Nothing in here yet."
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime6.jsx)(Box, {
|
||
paddingTop: 4,
|
||
children: (0, import_jsx_runtime6.jsx)(Typography, {
|
||
variant: "delta",
|
||
tag: "p",
|
||
textColor: "neutral600",
|
||
children: formatMessage({
|
||
id: getTrad("modalForm.empty.sub-heading"),
|
||
defaultMessage: "Find what you are looking for through a wide range of extensions."
|
||
})
|
||
})
|
||
})
|
||
]
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime6.jsx)(LinkButton, {
|
||
tag: Link,
|
||
to: `/marketplace?${qs.stringify({
|
||
categories: [
|
||
"Custom fields"
|
||
]
|
||
})}`,
|
||
variant: "secondary",
|
||
startIcon: (0, import_jsx_runtime6.jsx)(ForwardRef$1h, {}),
|
||
children: formatMessage({
|
||
id: getTrad("modalForm.empty.button"),
|
||
defaultMessage: "Add custom fields"
|
||
})
|
||
})
|
||
]
|
||
})
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/CustomFieldsList.mjs
|
||
var CustomFieldsList = () => {
|
||
const { formatMessage } = useIntl();
|
||
const getAllCustomFields = useStrapiApp("CustomFieldsList", (state) => state.customFields.getAll);
|
||
const registeredCustomFields = Object.entries(getAllCustomFields());
|
||
if (!registeredCustomFields.length) {
|
||
return (0, import_jsx_runtime7.jsx)(EmptyAttributes, {});
|
||
}
|
||
const sortedCustomFields = registeredCustomFields.sort((a, b) => a[1].name > b[1].name ? 1 : -1);
|
||
return (0, import_jsx_runtime7.jsx)(KeyboardNavigable, {
|
||
tagName: "button",
|
||
children: (0, import_jsx_runtime7.jsxs)(Flex, {
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
gap: 3,
|
||
children: [
|
||
(0, import_jsx_runtime7.jsx)(Grid.Root, {
|
||
gap: 3,
|
||
children: sortedCustomFields.map(([uid, customField]) => (0, import_jsx_runtime7.jsx)(Grid.Item, {
|
||
col: 6,
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
children: (0, import_jsx_runtime7.jsx)(CustomFieldOption, {
|
||
customFieldUid: uid,
|
||
customField
|
||
}, uid)
|
||
}, uid))
|
||
}),
|
||
(0, import_jsx_runtime7.jsx)(Link2, {
|
||
href: "https://docs.strapi.io/developer-docs/latest/development/custom-fields.html",
|
||
isExternal: true,
|
||
children: formatMessage({
|
||
id: getTrad("modalForm.tabs.custom.howToLink"),
|
||
defaultMessage: "How to add custom fields"
|
||
})
|
||
})
|
||
]
|
||
})
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/AttributeOptions/AttributeOptions.mjs
|
||
var AttributeOptions = ({ attributes, forTarget, kind }) => {
|
||
const { formatMessage } = useIntl();
|
||
const defaultTabId = getTrad("modalForm.tabs.default");
|
||
const customTabId = getTrad("modalForm.tabs.custom");
|
||
const titleIdSuffix = forTarget.includes("component") ? "component" : kind;
|
||
const titleId = getTrad(`modalForm.sub-header.chooseAttribute.${titleIdSuffix}`);
|
||
return (0, import_jsx_runtime8.jsx)(Modal.Body, {
|
||
children: (0, import_jsx_runtime8.jsxs)(Tabs.Root, {
|
||
variant: "simple",
|
||
defaultValue: "default",
|
||
children: [
|
||
(0, import_jsx_runtime8.jsxs)(Flex, {
|
||
justifyContent: "space-between",
|
||
children: [
|
||
(0, import_jsx_runtime8.jsx)(Typography, {
|
||
variant: "beta",
|
||
tag: "h2",
|
||
children: formatMessage({
|
||
id: titleId,
|
||
defaultMessage: "Select a field"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime8.jsxs)(Tabs.List, {
|
||
children: [
|
||
(0, import_jsx_runtime8.jsx)(Tabs.Trigger, {
|
||
value: "default",
|
||
children: formatMessage({
|
||
id: defaultTabId,
|
||
defaultMessage: "Default"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime8.jsx)(Tabs.Trigger, {
|
||
value: "custom",
|
||
children: formatMessage({
|
||
id: customTabId,
|
||
defaultMessage: "Custom"
|
||
})
|
||
})
|
||
]
|
||
})
|
||
]
|
||
}),
|
||
(0, import_jsx_runtime8.jsx)(Divider, {
|
||
marginBottom: 6
|
||
}),
|
||
(0, import_jsx_runtime8.jsx)(Tabs.Content, {
|
||
value: "default",
|
||
children: (0, import_jsx_runtime8.jsx)(AttributeList, {
|
||
attributes
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime8.jsx)(Tabs.Content, {
|
||
value: "custom",
|
||
children: (0, import_jsx_runtime8.jsx)(CustomFieldsList, {})
|
||
})
|
||
]
|
||
})
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/BooleanDefaultValueSelect.mjs
|
||
var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
|
||
var BooleanDefaultValueSelect = ({ intlLabel, name, options: options2, onChange, value = null }) => {
|
||
const { formatMessage } = useIntl();
|
||
const label = intlLabel.id ? formatMessage({
|
||
id: intlLabel.id,
|
||
defaultMessage: intlLabel.defaultMessage
|
||
}, {
|
||
...intlLabel.values
|
||
}) : name;
|
||
const handleChange = (value2) => {
|
||
let nextValue = "";
|
||
if (value2 === "true") {
|
||
nextValue = true;
|
||
}
|
||
if (value2 === "false") {
|
||
nextValue = false;
|
||
}
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: nextValue,
|
||
type: "select-default-boolean"
|
||
}
|
||
});
|
||
};
|
||
return (0, import_jsx_runtime9.jsxs)(Field.Root, {
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime9.jsx)(Field.Label, {
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime9.jsx)(SingleSelect, {
|
||
onChange: handleChange,
|
||
value: (value === null ? "" : value).toString(),
|
||
children: options2.map(({ metadatas: { intlLabel: intlLabel2, disabled, hidden }, key, value: value2 }) => {
|
||
return (0, import_jsx_runtime9.jsx)(SingleSelectOption, {
|
||
value: value2,
|
||
disabled,
|
||
hidden,
|
||
children: intlLabel2.defaultMessage
|
||
}, key);
|
||
})
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/BooleanRadioGroup.mjs
|
||
var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
|
||
var import_react4 = __toESM(require_react(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs
|
||
var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/CustomRadioGroup/Styles.mjs
|
||
var Wrapper = dt(Flex)`
|
||
position: relative;
|
||
align-items: stretch;
|
||
|
||
label {
|
||
border-radius: 4px;
|
||
max-width: 50%;
|
||
cursor: pointer;
|
||
user-select: none;
|
||
flex: 1;
|
||
border-radius: 4px;
|
||
border: 1px solid ${({ theme }) => theme.colors.neutral200};
|
||
|
||
${inputFocusStyle()}
|
||
}
|
||
|
||
input {
|
||
position: absolute;
|
||
opacity: 0;
|
||
}
|
||
|
||
.option {
|
||
height: 100%;
|
||
border-radius: 4px;
|
||
will-change: transform, opacity;
|
||
background: ${({ theme }) => theme.colors.neutral0};
|
||
|
||
.checkmark {
|
||
position: relative;
|
||
display: block;
|
||
will-change: transform;
|
||
background: ${({ theme }) => theme.colors.neutral0};
|
||
width: ${({ theme }) => theme.spaces[5]};
|
||
height: ${({ theme }) => theme.spaces[5]};
|
||
border: solid 1px ${({ theme }) => theme.colors.neutral300};
|
||
border-radius: 50%;
|
||
|
||
&:before,
|
||
&:after {
|
||
content: '';
|
||
display: block;
|
||
border-radius: 50%;
|
||
width: ${({ theme }) => theme.spaces[3]};
|
||
height: ${({ theme }) => theme.spaces[3]};
|
||
position: absolute;
|
||
top: 3px;
|
||
left: 3px;
|
||
}
|
||
|
||
&:after {
|
||
transform: scale(0);
|
||
transition: inherit;
|
||
will-change: transform;
|
||
}
|
||
}
|
||
}
|
||
|
||
.container input:checked ~ div {
|
||
background: ${({ theme }) => theme.colors.primary100};
|
||
color: ${({ theme }) => theme.colors.primary600};
|
||
.checkmark {
|
||
border: solid 1px ${({ theme }) => theme.colors.primary600};
|
||
&::after {
|
||
background: ${({ theme }) => theme.colors.primary600};
|
||
transform: scale(1);
|
||
}
|
||
}
|
||
}
|
||
`;
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs
|
||
var CustomRadioGroup = ({ intlLabel, name, onChange, radios = [], value }) => {
|
||
const { formatMessage } = useIntl();
|
||
return (0, import_jsx_runtime10.jsxs)(Flex, {
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
gap: 2,
|
||
children: [
|
||
(0, import_jsx_runtime10.jsx)(Typography, {
|
||
variant: "pi",
|
||
fontWeight: "bold",
|
||
textColor: "neutral800",
|
||
htmlFor: name,
|
||
tag: "label",
|
||
children: formatMessage(intlLabel)
|
||
}),
|
||
(0, import_jsx_runtime10.jsx)(Wrapper, {
|
||
gap: 4,
|
||
alignItems: "stretch",
|
||
children: radios.map((radio) => {
|
||
return (0, import_jsx_runtime10.jsxs)("label", {
|
||
htmlFor: radio.value.toString(),
|
||
className: "container",
|
||
children: [
|
||
(0, import_jsx_runtime10.jsx)("input", {
|
||
id: radio.value.toString(),
|
||
name,
|
||
className: "option-input",
|
||
checked: radio.value === value,
|
||
value: radio.value,
|
||
onChange,
|
||
type: "radio"
|
||
}, radio.value),
|
||
(0, import_jsx_runtime10.jsx)(Box, {
|
||
className: "option",
|
||
padding: 4,
|
||
children: (0, import_jsx_runtime10.jsxs)(Flex, {
|
||
children: [
|
||
(0, import_jsx_runtime10.jsx)(Box, {
|
||
paddingRight: 4,
|
||
children: (0, import_jsx_runtime10.jsx)("span", {
|
||
className: "checkmark"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime10.jsxs)(Flex, {
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
gap: 2,
|
||
children: [
|
||
(0, import_jsx_runtime10.jsx)(Typography, {
|
||
fontWeight: "bold",
|
||
children: formatMessage(radio.title)
|
||
}),
|
||
(0, import_jsx_runtime10.jsx)(Typography, {
|
||
variant: "pi",
|
||
textColor: "neutral600",
|
||
children: formatMessage(radio.description)
|
||
})
|
||
]
|
||
})
|
||
]
|
||
})
|
||
})
|
||
]
|
||
}, radio.value);
|
||
})
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/BooleanRadioGroup.mjs
|
||
var BooleanRadioGroup = ({ onChange, name, intlLabel, ...rest }) => {
|
||
const handleChange = (e) => {
|
||
const checked = e.target.value !== "false";
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: checked,
|
||
type: "boolean-radio-group"
|
||
}
|
||
});
|
||
};
|
||
return (0, import_jsx_runtime11.jsx)(CustomRadioGroup, {
|
||
...rest,
|
||
name,
|
||
onChange: handleChange,
|
||
intlLabel
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/CheckboxWithNumberField.mjs
|
||
var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
|
||
var CheckboxWithNumberField = ({ error, intlLabel, modifiedData, name, onChange, value = null }) => {
|
||
const { formatMessage } = useIntl();
|
||
const label = intlLabel.id ? formatMessage({
|
||
id: intlLabel.id,
|
||
defaultMessage: intlLabel.defaultMessage
|
||
}, {
|
||
...intlLabel.values
|
||
}) : name;
|
||
const type = modifiedData.type === "biginteger" ? "text" : "number";
|
||
const disabled = !modifiedData.type;
|
||
const errorMessage = error ? formatMessage({
|
||
id: error,
|
||
defaultMessage: error
|
||
}) : "";
|
||
return (0, import_jsx_runtime12.jsxs)(Flex, {
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
gap: 2,
|
||
children: [
|
||
(0, import_jsx_runtime12.jsx)(CheckboxImpl, {
|
||
id: name,
|
||
name,
|
||
onCheckedChange: (value2) => {
|
||
const initValue = type === "text" ? "0" : 0;
|
||
const nextValue = value2 ? initValue : null;
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: nextValue
|
||
}
|
||
});
|
||
},
|
||
checked: value !== null,
|
||
children: label
|
||
}),
|
||
value !== null && (0, import_jsx_runtime12.jsx)(Box, {
|
||
paddingLeft: 6,
|
||
style: {
|
||
maxWidth: "200px"
|
||
},
|
||
children: type === "text" ? (0, import_jsx_runtime12.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime12.jsx)(TextInput, {
|
||
"aria-label": label,
|
||
disabled,
|
||
onChange,
|
||
value: value === null ? "" : value
|
||
}),
|
||
(0, import_jsx_runtime12.jsx)(Field.Error, {})
|
||
]
|
||
}) : (0, import_jsx_runtime12.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime12.jsx)(NumberInput, {
|
||
"aria-label": label,
|
||
disabled,
|
||
onValueChange: (value2) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: value2 ?? 0,
|
||
type
|
||
}
|
||
});
|
||
},
|
||
value: value || 0
|
||
}),
|
||
(0, import_jsx_runtime12.jsx)(Field.Error, {})
|
||
]
|
||
})
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/ContentTypeRadioGroup.mjs
|
||
var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
|
||
var ContentTypeRadioGroup = ({ onChange, ...rest }) => {
|
||
const { formatMessage } = useIntl();
|
||
const { toggleNotification } = useNotification();
|
||
const handleChange = (e) => {
|
||
toggleNotification({
|
||
type: "info",
|
||
message: formatMessage({
|
||
id: getTrad("contentType.kind.change.warning"),
|
||
defaultMessage: "You just changed the kind of a content type: API will be reset (routes, controllers, and services will be overwritten)."
|
||
})
|
||
});
|
||
onChange(e);
|
||
};
|
||
return (0, import_jsx_runtime13.jsx)(CustomRadioGroup, {
|
||
...rest,
|
||
onChange: handleChange
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DraftAndPublishToggle.mjs
|
||
var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
|
||
var import_react5 = __toESM(require_react(), 1);
|
||
var DraftAndPublishToggle = ({ description, disabled = false, intlLabel, isCreating, name, onChange, value = false }) => {
|
||
const { formatMessage } = useIntl();
|
||
const [showWarning, setShowWarning] = (0, import_react5.useState)(false);
|
||
const label = intlLabel.id ? formatMessage({
|
||
id: intlLabel.id,
|
||
defaultMessage: intlLabel.defaultMessage
|
||
}, {
|
||
...intlLabel.values
|
||
}) : name;
|
||
const hint = description ? formatMessage({
|
||
id: description.id,
|
||
defaultMessage: description.defaultMessage
|
||
}, {
|
||
...description.values
|
||
}) : "";
|
||
const handleConfirm = () => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: false
|
||
}
|
||
});
|
||
setShowWarning(false);
|
||
};
|
||
const handleChange = (checked) => {
|
||
if (!checked && !isCreating) {
|
||
setShowWarning(true);
|
||
return;
|
||
}
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: !!checked
|
||
}
|
||
});
|
||
};
|
||
return (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, {
|
||
children: [
|
||
(0, import_jsx_runtime14.jsxs)(Field.Root, {
|
||
hint,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime14.jsx)(CheckboxImpl, {
|
||
checked: value,
|
||
disabled,
|
||
onCheckedChange: handleChange,
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime14.jsx)(Field.Hint, {})
|
||
]
|
||
}),
|
||
(0, import_jsx_runtime14.jsx)(Dialog.Root, {
|
||
open: showWarning,
|
||
onOpenChange: (isOpen) => setShowWarning(isOpen),
|
||
children: (0, import_jsx_runtime14.jsx)(ConfirmDialog, {
|
||
endAction: (0, import_jsx_runtime14.jsx)(Button, {
|
||
onClick: handleConfirm,
|
||
variant: "danger",
|
||
width: "100%",
|
||
justifyContent: "center",
|
||
children: formatMessage({
|
||
id: getTrad("popUpWarning.draft-publish.button.confirm"),
|
||
defaultMessage: "Yes, disable"
|
||
})
|
||
}),
|
||
children: formatMessage({
|
||
id: getTrad("popUpWarning.draft-publish.message"),
|
||
defaultMessage: "If you disable the draft & publish, your drafts will be deleted."
|
||
})
|
||
})
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModalEndActions.mjs
|
||
var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
|
||
var FormModalEndActions = ({ categoryName, deleteCategory, deleteComponent, deleteContentType, isAttributeModal, isCustomFieldModal, isComponentAttribute, isComponentToDzModal, isContentTypeModal, isCreatingComponent, isCreatingComponentAttribute, isCreatingComponentInDz, isCreatingComponentWhileAddingAField, isCreatingContentType, isCreatingDz, isComponentModal, isDzAttribute, isEditingAttribute, isEditingCategory, isInFirstComponentStep, onSubmitAddComponentAttribute, onSubmitAddComponentToDz, onSubmitCreateContentType, onSubmitCreateComponent, onSubmitCreateDz, onSubmitEditAttribute, onSubmitEditCategory, onSubmitEditComponent, onSubmitEditContentType, onSubmitEditCustomFieldAttribute, onSubmitEditDz, onClickFinish }) => {
|
||
const { formatMessage } = useIntl();
|
||
if (isComponentToDzModal) {
|
||
if (isCreatingComponentInDz) {
|
||
return (0, import_jsx_runtime15.jsx)(Button, {
|
||
variant: "secondary",
|
||
type: "submit",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitAddComponentToDz(e, true);
|
||
},
|
||
startIcon: (0, import_jsx_runtime15.jsx)(ForwardRef$1h, {}),
|
||
children: formatMessage({
|
||
id: getTrad("form.button.add-first-field-to-created-component"),
|
||
defaultMessage: "Add first field to the component"
|
||
})
|
||
});
|
||
}
|
||
return (0, import_jsx_runtime15.jsx)(Button, {
|
||
variant: "default",
|
||
type: "submit",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitAddComponentToDz(e, false);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.finish",
|
||
defaultMessage: "Finish"
|
||
})
|
||
});
|
||
}
|
||
if (isAttributeModal && isDzAttribute && !isCreatingDz) {
|
||
return (0, import_jsx_runtime15.jsx)(Button, {
|
||
variant: "default",
|
||
type: "submit",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onClickFinish();
|
||
onSubmitEditDz(e, false);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.finish",
|
||
defaultMessage: "Finish"
|
||
})
|
||
});
|
||
}
|
||
if (isAttributeModal && isDzAttribute && isCreatingDz) {
|
||
return (0, import_jsx_runtime15.jsx)(import_jsx_runtime15.Fragment, {
|
||
children: (0, import_jsx_runtime15.jsx)(Button, {
|
||
variant: "secondary",
|
||
type: "submit",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitCreateDz(e, true);
|
||
},
|
||
startIcon: (0, import_jsx_runtime15.jsx)(ForwardRef$1h, {}),
|
||
children: formatMessage({
|
||
id: getTrad("form.button.add-components-to-dynamiczone"),
|
||
defaultMessage: "Add components to the zone"
|
||
})
|
||
})
|
||
});
|
||
}
|
||
if (isAttributeModal && isComponentAttribute) {
|
||
if (isInFirstComponentStep) {
|
||
return (0, import_jsx_runtime15.jsx)(Button, {
|
||
variant: "secondary",
|
||
type: "submit",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitAddComponentAttribute(e, true);
|
||
},
|
||
children: isCreatingComponentAttribute ? formatMessage({
|
||
id: getTrad("form.button.configure-component"),
|
||
defaultMessage: "Configure the component"
|
||
}) : formatMessage({
|
||
id: getTrad("form.button.select-component"),
|
||
defaultMessage: "Configure the component"
|
||
})
|
||
});
|
||
}
|
||
return (0, import_jsx_runtime15.jsxs)(Flex, {
|
||
gap: 2,
|
||
children: [
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
variant: "secondary",
|
||
type: "submit",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitAddComponentAttribute(e, true);
|
||
},
|
||
startIcon: (0, import_jsx_runtime15.jsx)(ForwardRef$1h, {}),
|
||
children: isCreatingComponentWhileAddingAField ? formatMessage({
|
||
id: getTrad("form.button.add-first-field-to-created-component"),
|
||
defaultMessage: "Add first field to the component"
|
||
}) : formatMessage({
|
||
id: getTrad("form.button.add-field"),
|
||
defaultMessage: "Add another field"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
variant: "default",
|
||
type: "button",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onClickFinish();
|
||
onSubmitAddComponentAttribute(e, false);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.finish",
|
||
defaultMessage: "Finish"
|
||
})
|
||
})
|
||
]
|
||
});
|
||
}
|
||
if (isAttributeModal && !isComponentAttribute && !isDzAttribute) {
|
||
return (0, import_jsx_runtime15.jsxs)(Flex, {
|
||
gap: 2,
|
||
children: [
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: isEditingAttribute ? "button" : "submit",
|
||
variant: "secondary",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitEditAttribute(e, true);
|
||
},
|
||
startIcon: (0, import_jsx_runtime15.jsx)(ForwardRef$1h, {}),
|
||
children: formatMessage({
|
||
id: getTrad("form.button.add-field"),
|
||
defaultMessage: "Add another field"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: isEditingAttribute ? "submit" : "button",
|
||
variant: "default",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onClickFinish();
|
||
onSubmitEditAttribute(e, false);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.finish",
|
||
defaultMessage: "Finish"
|
||
})
|
||
})
|
||
]
|
||
});
|
||
}
|
||
if (isContentTypeModal) {
|
||
return (0, import_jsx_runtime15.jsxs)(Flex, {
|
||
gap: 2,
|
||
children: [
|
||
!isCreatingContentType && (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, {
|
||
children: [
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: "button",
|
||
variant: "danger",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
deleteContentType();
|
||
},
|
||
children: formatMessage({
|
||
id: "global.delete",
|
||
defaultMessage: "Delete"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: "submit",
|
||
variant: "default",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitEditContentType(e, false);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.finish",
|
||
defaultMessage: "Finish"
|
||
})
|
||
})
|
||
]
|
||
}),
|
||
isCreatingContentType && (0, import_jsx_runtime15.jsx)(Button, {
|
||
type: "submit",
|
||
variant: "secondary",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitCreateContentType(e, true);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.continue",
|
||
defaultMessage: "Continue"
|
||
})
|
||
})
|
||
]
|
||
});
|
||
}
|
||
if (isComponentModal) {
|
||
return (0, import_jsx_runtime15.jsxs)(Flex, {
|
||
gap: 2,
|
||
children: [
|
||
!isCreatingComponent && (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, {
|
||
children: [
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: "button",
|
||
variant: "danger",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
deleteComponent();
|
||
},
|
||
children: formatMessage({
|
||
id: "global.delete",
|
||
defaultMessage: "Delete"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: "submit",
|
||
variant: "default",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitEditComponent(e, false);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.finish",
|
||
defaultMessage: "Finish"
|
||
})
|
||
})
|
||
]
|
||
}),
|
||
isCreatingComponent && (0, import_jsx_runtime15.jsx)(Button, {
|
||
type: "submit",
|
||
variant: "secondary",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitCreateComponent(e, true);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.continue",
|
||
defaultMessage: "Continue"
|
||
})
|
||
})
|
||
]
|
||
});
|
||
}
|
||
if (isEditingCategory) {
|
||
return (0, import_jsx_runtime15.jsxs)(Flex, {
|
||
gap: 2,
|
||
children: [
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: "button",
|
||
variant: "danger",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
if (categoryName) {
|
||
deleteCategory(categoryName);
|
||
}
|
||
},
|
||
children: formatMessage({
|
||
id: "global.delete",
|
||
defaultMessage: "Delete"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: "submit",
|
||
variant: "default",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitEditCategory(e);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.finish",
|
||
defaultMessage: "finish"
|
||
})
|
||
})
|
||
]
|
||
});
|
||
}
|
||
if (isCustomFieldModal) {
|
||
return (0, import_jsx_runtime15.jsxs)(Flex, {
|
||
gap: 2,
|
||
children: [
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: isEditingAttribute ? "button" : "submit",
|
||
variant: "secondary",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onSubmitEditCustomFieldAttribute(e, true);
|
||
},
|
||
startIcon: (0, import_jsx_runtime15.jsx)(ForwardRef$1h, {}),
|
||
children: formatMessage({
|
||
id: getTrad("form.button.add-field"),
|
||
defaultMessage: "Add another field"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime15.jsx)(Button, {
|
||
type: isEditingAttribute ? "submit" : "button",
|
||
variant: "default",
|
||
onClick: (e) => {
|
||
e.preventDefault();
|
||
onClickFinish();
|
||
onSubmitEditCustomFieldAttribute(e, false);
|
||
},
|
||
children: formatMessage({
|
||
id: "global.finish",
|
||
defaultMessage: "Finish"
|
||
})
|
||
})
|
||
]
|
||
});
|
||
}
|
||
return null;
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModalHeader.mjs
|
||
var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
|
||
var import_upperFirst3 = __toESM(require_upperFirst(), 1);
|
||
var FormModalHeader = ({ actionType = null, attributeName, attributeType, categoryName, contentTypeKind, dynamicZoneTarget, forTarget, modalType = null, targetUid, customFieldUid = null, showBackLink = false }) => {
|
||
var _a;
|
||
const { formatMessage } = useIntl();
|
||
const { modifiedData } = useDataManager();
|
||
const { onOpenModalAddField } = useFormModalNavigation();
|
||
let icon = "component";
|
||
let headers = [];
|
||
const schema = ((_a = modifiedData == null ? void 0 : modifiedData[forTarget]) == null ? void 0 : _a[targetUid]) || (modifiedData == null ? void 0 : modifiedData[forTarget]) || null;
|
||
const displayName = schema == null ? void 0 : schema.schema.displayName;
|
||
if (modalType === "contentType") {
|
||
icon = contentTypeKind;
|
||
}
|
||
if ([
|
||
"component",
|
||
"editCategory"
|
||
].includes(modalType || "")) {
|
||
icon = "component";
|
||
}
|
||
const isCreatingMainSchema = [
|
||
"component",
|
||
"contentType"
|
||
].includes(modalType || "");
|
||
if (isCreatingMainSchema) {
|
||
let headerId = getTrad(`modalForm.component.header-${actionType}`);
|
||
if (modalType === "contentType") {
|
||
headerId = getTrad(`modalForm.${contentTypeKind}.header-create`);
|
||
}
|
||
if (actionType === "edit") {
|
||
headerId = getTrad(`modalForm.header-edit`);
|
||
}
|
||
return (0, import_jsx_runtime16.jsx)(Modal.Header, {
|
||
children: (0, import_jsx_runtime16.jsxs)(Flex, {
|
||
children: [
|
||
(0, import_jsx_runtime16.jsx)(Box, {
|
||
children: (0, import_jsx_runtime16.jsx)(AttributeIcon, {
|
||
type: icon
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime16.jsx)(Box, {
|
||
paddingLeft: 3,
|
||
children: (0, import_jsx_runtime16.jsx)(Modal.Title, {
|
||
children: formatMessage({
|
||
id: headerId
|
||
}, {
|
||
name: displayName
|
||
})
|
||
})
|
||
})
|
||
]
|
||
})
|
||
});
|
||
}
|
||
headers = [
|
||
{
|
||
label: displayName,
|
||
info: {
|
||
category: (schema == null ? void 0 : schema.category) || null,
|
||
name: schema == null ? void 0 : schema.schema.displayName
|
||
}
|
||
}
|
||
];
|
||
if (modalType === "chooseAttribute") {
|
||
icon = [
|
||
"component",
|
||
"components"
|
||
].includes(forTarget) ? "component" : schema.schema.kind;
|
||
}
|
||
if (modalType === "addComponentToDynamicZone") {
|
||
icon = "dynamiczone";
|
||
headers.push({
|
||
label: dynamicZoneTarget
|
||
});
|
||
}
|
||
if (modalType === "attribute" || modalType === "customField") {
|
||
icon = attributeType;
|
||
headers.push({
|
||
label: attributeName
|
||
});
|
||
}
|
||
if (modalType === "editCategory") {
|
||
const label = formatMessage({
|
||
id: getTrad("modalForm.header.categories"),
|
||
defaultMessage: "Categories"
|
||
});
|
||
headers = [
|
||
{
|
||
label
|
||
},
|
||
{
|
||
label: categoryName
|
||
}
|
||
];
|
||
}
|
||
return (0, import_jsx_runtime16.jsx)(Modal.Header, {
|
||
children: (0, import_jsx_runtime16.jsxs)(Flex, {
|
||
gap: 3,
|
||
children: [
|
||
showBackLink && // This is a workaround and should use the LinkButton with a variant that currently doesn't exist
|
||
(0, import_jsx_runtime16.jsx)(Link2, {
|
||
"aria-label": formatMessage({
|
||
id: getTrad("modalForm.header.back"),
|
||
defaultMessage: "Back"
|
||
}),
|
||
startIcon: (0, import_jsx_runtime16.jsx)(ForwardRef$5j, {}),
|
||
onClick: () => onOpenModalAddField({
|
||
forTarget,
|
||
targetUid
|
||
}),
|
||
href: "#back",
|
||
isExternal: false
|
||
}),
|
||
(0, import_jsx_runtime16.jsx)(AttributeIcon, {
|
||
type: icon,
|
||
customField: customFieldUid
|
||
}),
|
||
(0, import_jsx_runtime16.jsx)(Breadcrumbs, {
|
||
label: headers.map(({ label }) => label).join(","),
|
||
children: headers.map(({ label, info }, index, arr) => {
|
||
label = (0, import_upperFirst3.default)(label);
|
||
if (!label) {
|
||
return null;
|
||
}
|
||
const key = `${label}.${index}`;
|
||
if (info == null ? void 0 : info.category) {
|
||
label = `${label} (${(0, import_upperFirst3.default)(info.category)} - ${(0, import_upperFirst3.default)(info.name)})`;
|
||
}
|
||
return (0, import_jsx_runtime16.jsx)(Crumb, {
|
||
isCurrent: index === arr.length - 1,
|
||
children: label
|
||
}, key);
|
||
})
|
||
})
|
||
]
|
||
})
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModalSubHeader.mjs
|
||
var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
|
||
var import_upperFirst4 = __toESM(require_upperFirst(), 1);
|
||
var getModalTitleSubHeader = ({ modalType, forTarget, kind, actionType, step }) => {
|
||
switch (modalType) {
|
||
case "chooseAttribute":
|
||
return getTrad(`modalForm.sub-header.chooseAttribute.${(forTarget == null ? void 0 : forTarget.includes("component")) ? "component" : kind || "collectionType"}`);
|
||
case "attribute": {
|
||
return getTrad(`modalForm.sub-header.attribute.${actionType}${step !== "null" && step !== null && actionType !== "edit" ? ".step" : ""}`);
|
||
}
|
||
case "customField": {
|
||
return getTrad(`modalForm.sub-header.attribute.${actionType}`);
|
||
}
|
||
case "addComponentToDynamicZone":
|
||
return getTrad("modalForm.sub-header.addComponentToDynamicZone");
|
||
default:
|
||
return getTrad("configurations");
|
||
}
|
||
};
|
||
var FormModalSubHeader = ({ actionType, modalType, forTarget, kind, step, attributeType, attributeName, customField }) => {
|
||
const { formatMessage } = useIntl();
|
||
const intlLabel = modalType === "customField" ? customField == null ? void 0 : customField.intlLabel : {
|
||
id: getTrad(`attribute.${attributeType}`)
|
||
};
|
||
return (0, import_jsx_runtime17.jsxs)(Flex, {
|
||
direction: "column",
|
||
alignItems: "flex-start",
|
||
paddingBottom: 1,
|
||
gap: 1,
|
||
children: [
|
||
(0, import_jsx_runtime17.jsx)(Typography, {
|
||
tag: "h2",
|
||
variant: "beta",
|
||
children: formatMessage({
|
||
id: getModalTitleSubHeader({
|
||
actionType,
|
||
forTarget,
|
||
kind,
|
||
step,
|
||
modalType
|
||
}),
|
||
defaultMessage: "Add new field"
|
||
}, {
|
||
type: intlLabel ? (0, import_upperFirst4.default)(formatMessage(intlLabel)) : "",
|
||
name: (0, import_upperFirst4.default)(attributeName),
|
||
step
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime17.jsx)(Typography, {
|
||
variant: "pi",
|
||
textColor: "neutral600",
|
||
children: formatMessage({
|
||
id: getTrad(`attribute.${attributeType}.description`),
|
||
defaultMessage: "A type for modeling data"
|
||
})
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/IconPicker/IconPicker.mjs
|
||
var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
|
||
var import_react6 = __toESM(require_react(), 1);
|
||
var IconPickerWrapper = dt(Flex)`
|
||
label {
|
||
${inputFocusStyle()}
|
||
border-radius: ${({ theme }) => theme.borderRadius};
|
||
border: 1px solid ${({ theme }) => theme.colors.neutral100};
|
||
}
|
||
`;
|
||
var IconPick = ({ iconKey, name, onChange, isSelected, ariaLabel }) => {
|
||
const Icon = COMPONENT_ICONS[iconKey];
|
||
return (0, import_jsx_runtime18.jsx)(Field.Root, {
|
||
name,
|
||
required: false,
|
||
children: (0, import_jsx_runtime18.jsxs)(Field.Label, {
|
||
children: [
|
||
(0, import_jsx_runtime18.jsxs)(VisuallyHidden, {
|
||
children: [
|
||
ariaLabel,
|
||
(0, import_jsx_runtime18.jsx)(Field.Input, {
|
||
type: "radio",
|
||
checked: isSelected,
|
||
onChange,
|
||
value: iconKey,
|
||
"aria-checked": isSelected
|
||
})
|
||
]
|
||
}),
|
||
(0, import_jsx_runtime18.jsx)(TooltipImpl, {
|
||
label: iconKey,
|
||
children: (0, import_jsx_runtime18.jsx)(Flex, {
|
||
padding: 2,
|
||
cursor: "pointer",
|
||
hasRadius: true,
|
||
background: isSelected ? "primary200" : void 0,
|
||
children: (0, import_jsx_runtime18.jsx)(Icon, {
|
||
width: "2rem",
|
||
height: "2rem",
|
||
fill: isSelected ? "primary600" : "neutral300"
|
||
})
|
||
})
|
||
})
|
||
]
|
||
})
|
||
});
|
||
};
|
||
var IconPicker = ({ intlLabel, name, onChange, value = "" }) => {
|
||
const { formatMessage } = useIntl();
|
||
const [showSearch, setShowSearch] = (0, import_react6.useState)(false);
|
||
const [search, setSearch] = (0, import_react6.useState)("");
|
||
const allIcons = Object.keys(COMPONENT_ICONS);
|
||
const [icons, setIcons] = (0, import_react6.useState)(allIcons);
|
||
const searchIconRef = (0, import_react6.useRef)(null);
|
||
const searchBarRef = (0, import_react6.useRef)(null);
|
||
const toggleSearch = () => {
|
||
setShowSearch(!showSearch);
|
||
};
|
||
const onChangeSearch = ({ target: { value: value2 } }) => {
|
||
setSearch(value2);
|
||
setIcons(() => allIcons.filter((icon) => icon.toLowerCase().includes(value2.toLowerCase())));
|
||
};
|
||
const onClearSearch = () => {
|
||
toggleSearch();
|
||
setSearch("");
|
||
setIcons(allIcons);
|
||
};
|
||
const removeIconSelected = () => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: ""
|
||
}
|
||
});
|
||
};
|
||
(0, import_react6.useEffect)(() => {
|
||
var _a;
|
||
if (showSearch) {
|
||
(_a = searchBarRef.current) == null ? void 0 : _a.focus();
|
||
}
|
||
}, [
|
||
showSearch
|
||
]);
|
||
return (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, {
|
||
children: [
|
||
(0, import_jsx_runtime18.jsxs)(Flex, {
|
||
justifyContent: "space-between",
|
||
paddingBottom: 2,
|
||
children: [
|
||
(0, import_jsx_runtime18.jsx)(Typography, {
|
||
variant: "pi",
|
||
fontWeight: "bold",
|
||
textColor: "neutral800",
|
||
tag: "label",
|
||
children: formatMessage(intlLabel)
|
||
}),
|
||
(0, import_jsx_runtime18.jsxs)(Flex, {
|
||
gap: 1,
|
||
children: [
|
||
showSearch ? (0, import_jsx_runtime18.jsx)(Searchbar, {
|
||
ref: searchBarRef,
|
||
name: "searchbar",
|
||
placeholder: formatMessage({
|
||
id: getTrad("ComponentIconPicker.search.placeholder"),
|
||
defaultMessage: "Search for an icon"
|
||
}),
|
||
onBlur: () => {
|
||
if (!search) {
|
||
toggleSearch();
|
||
}
|
||
},
|
||
onChange: onChangeSearch,
|
||
value: search,
|
||
onClear: onClearSearch,
|
||
clearLabel: formatMessage({
|
||
id: getTrad("IconPicker.search.clear.label"),
|
||
defaultMessage: "Clear the icon search"
|
||
}),
|
||
children: formatMessage({
|
||
id: getTrad("IconPicker.search.placeholder.label"),
|
||
defaultMessage: "Search for an icon"
|
||
})
|
||
}) : (0, import_jsx_runtime18.jsx)(IconButton, {
|
||
ref: searchIconRef,
|
||
onClick: toggleSearch,
|
||
withTooltip: false,
|
||
label: formatMessage({
|
||
id: getTrad("IconPicker.search.button.label"),
|
||
defaultMessage: "Search icon button"
|
||
}),
|
||
variant: "ghost",
|
||
children: (0, import_jsx_runtime18.jsx)(ForwardRef$X, {})
|
||
}),
|
||
value && (0, import_jsx_runtime18.jsx)(TooltipImpl, {
|
||
label: formatMessage({
|
||
id: getTrad("IconPicker.remove.tooltip"),
|
||
defaultMessage: "Remove the selected icon"
|
||
}),
|
||
children: (0, import_jsx_runtime18.jsx)(IconButton, {
|
||
onClick: removeIconSelected,
|
||
withTooltip: false,
|
||
label: formatMessage({
|
||
id: getTrad("IconPicker.remove.button"),
|
||
defaultMessage: "Remove the selected icon"
|
||
}),
|
||
variant: "ghost",
|
||
children: (0, import_jsx_runtime18.jsx)(ForwardRef$j, {})
|
||
})
|
||
})
|
||
]
|
||
})
|
||
]
|
||
}),
|
||
(0, import_jsx_runtime18.jsx)(IconPickerWrapper, {
|
||
position: "relative",
|
||
padding: 1,
|
||
background: "neutral100",
|
||
hasRadius: true,
|
||
wrap: "wrap",
|
||
gap: 2,
|
||
maxHeight: "126px",
|
||
overflow: "auto",
|
||
textAlign: "center",
|
||
children: icons.length > 0 ? icons.map((iconKey) => (0, import_jsx_runtime18.jsx)(IconPick, {
|
||
iconKey,
|
||
name,
|
||
onChange,
|
||
isSelected: iconKey === value,
|
||
ariaLabel: formatMessage({
|
||
id: getTrad("IconPicker.icon.label"),
|
||
defaultMessage: "Select {icon} icon"
|
||
}, {
|
||
icon: iconKey
|
||
})
|
||
}, iconKey)) : (0, import_jsx_runtime18.jsx)(Box, {
|
||
padding: 4,
|
||
grow: 2,
|
||
children: (0, import_jsx_runtime18.jsx)(Typography, {
|
||
variant: "delta",
|
||
textColor: "neutral600",
|
||
textAlign: "center",
|
||
children: formatMessage({
|
||
id: getTrad("IconPicker.emptyState.label"),
|
||
defaultMessage: "No icon found"
|
||
})
|
||
})
|
||
})
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/PluralName.mjs
|
||
var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
|
||
var import_react7 = __toESM(require_react(), 1);
|
||
var import_pluralize = __toESM(require_pluralize(), 1);
|
||
var PluralName = ({ description, error, intlLabel, modifiedData, name, onChange, value }) => {
|
||
const { formatMessage } = useIntl();
|
||
const onChangeRef = (0, import_react7.useRef)(onChange);
|
||
const displayName = (modifiedData == null ? void 0 : modifiedData.displayName) || "";
|
||
(0, import_react7.useEffect)(() => {
|
||
if (displayName) {
|
||
const value2 = nameToSlug(displayName);
|
||
try {
|
||
const plural = (0, import_pluralize.default)(value2, 2);
|
||
onChangeRef.current({
|
||
target: {
|
||
name,
|
||
value: plural
|
||
}
|
||
});
|
||
} catch (err) {
|
||
onChangeRef.current({
|
||
target: {
|
||
name,
|
||
value: value2
|
||
}
|
||
});
|
||
}
|
||
} else {
|
||
onChangeRef.current({
|
||
target: {
|
||
name,
|
||
value: ""
|
||
}
|
||
});
|
||
}
|
||
}, [
|
||
displayName,
|
||
name
|
||
]);
|
||
const errorMessage = error ? formatMessage({
|
||
id: error,
|
||
defaultMessage: error
|
||
}) : "";
|
||
const hint = description ? formatMessage({
|
||
id: description.id,
|
||
defaultMessage: description.defaultMessage
|
||
}, {
|
||
...description.values
|
||
}) : "";
|
||
const label = formatMessage(intlLabel);
|
||
return (0, import_jsx_runtime19.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
hint,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime19.jsx)(Field.Label, {
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime19.jsx)(TextInput, {
|
||
onChange,
|
||
value: value || ""
|
||
}),
|
||
(0, import_jsx_runtime19.jsx)(Field.Error, {})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/Relation/Relation.mjs
|
||
var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/Relation/RelationField/RelationField.mjs
|
||
var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/GenericInputs.mjs
|
||
var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
|
||
var React = __toESM(require_react(), 1);
|
||
var import_isEqual2 = __toESM(require_isEqual(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/utils/parseDateValue.mjs
|
||
var parseDateValue = (value) => {
|
||
if (value instanceof Date && isValidDate(value)) {
|
||
return value;
|
||
}
|
||
if (typeof value === "string" || typeof value === "number") {
|
||
const date = new Date(value);
|
||
if (isValidDate(date)) {
|
||
return date;
|
||
}
|
||
}
|
||
};
|
||
var isValidDate = (date) => !isNaN(date.getTime());
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/utils/timeFormat.mjs
|
||
var removeSeconds = (time) => {
|
||
const [hours, minutes] = time.split(":");
|
||
return `${hours}:${minutes}`;
|
||
};
|
||
var addSecondsAndMilliseconds = (time) => {
|
||
return time.split(":").length === 2 ? `${time}:00.000` : time;
|
||
};
|
||
var formatTimeForInput = (value) => {
|
||
if (!value) return;
|
||
return value.split(":").length > 2 ? removeSeconds(value) : value;
|
||
};
|
||
var formatTimeForOutput = (value) => {
|
||
if (!value) return void 0;
|
||
return addSecondsAndMilliseconds(value);
|
||
};
|
||
var handleTimeChange = ({ value }) => {
|
||
const formattedInputTime = formatTimeForInput(value);
|
||
return formattedInputTime;
|
||
};
|
||
var handleTimeChangeEvent = (onChange, name, type, time) => {
|
||
const formattedOutputTime = formatTimeForOutput(time);
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: formattedOutputTime,
|
||
type
|
||
}
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/GenericInputs.mjs
|
||
var GenericInput = ({ autoComplete, customInputs, description, disabled, intlLabel, labelAction, error, name, onChange, options: options2 = [], placeholder, required, step, type, value: defaultValue, isNullable, attribute, ...rest }) => {
|
||
const { formatMessage } = useIntl();
|
||
const getFieldHintValue = (attribute2, key) => {
|
||
if (!attribute2) return;
|
||
if (key === "minLength" && key in attribute2) {
|
||
return attribute2[key];
|
||
}
|
||
if (key === "maxLength" && key in attribute2) {
|
||
return attribute2[key];
|
||
}
|
||
if (key === "max" && key in attribute2) {
|
||
return attribute2[key];
|
||
}
|
||
if (key === "min" && key in attribute2) {
|
||
return attribute2[key];
|
||
}
|
||
};
|
||
const { hint } = useFieldHint({
|
||
description,
|
||
fieldSchema: {
|
||
minLength: getFieldHintValue(attribute, "minLength"),
|
||
maxLength: getFieldHintValue(attribute, "maxLength"),
|
||
max: getFieldHintValue(attribute, "max"),
|
||
min: getFieldHintValue(attribute, "min")
|
||
},
|
||
type: (attribute == null ? void 0 : attribute.type) || type
|
||
});
|
||
const [showPassword, setShowPassword] = React.useState(false);
|
||
const CustomInput = customInputs ? customInputs[type] : null;
|
||
const value = defaultValue ?? void 0;
|
||
const valueWithEmptyStringFallback = value ?? "";
|
||
function getErrorMessage(error2) {
|
||
if (!error2) {
|
||
return null;
|
||
}
|
||
if (typeof error2 === "string") {
|
||
return formatMessage({
|
||
id: error2,
|
||
defaultMessage: error2
|
||
});
|
||
}
|
||
const values = {
|
||
...error2.values
|
||
};
|
||
return formatMessage({
|
||
id: error2.id,
|
||
defaultMessage: (error2 == null ? void 0 : error2.defaultMessage) ?? error2.id
|
||
}, values);
|
||
}
|
||
const errorMessage = getErrorMessage(error) ?? void 0;
|
||
if (CustomInput) {
|
||
return (0, import_jsx_runtime20.jsx)(CustomInput, {
|
||
...rest,
|
||
attribute,
|
||
description,
|
||
hint,
|
||
disabled,
|
||
intlLabel,
|
||
labelAction,
|
||
error: errorMessage || "",
|
||
name,
|
||
onChange,
|
||
options: options2,
|
||
required,
|
||
placeholder,
|
||
type,
|
||
value
|
||
});
|
||
}
|
||
const label = intlLabel.id ? formatMessage({
|
||
id: intlLabel.id,
|
||
defaultMessage: intlLabel.defaultMessage
|
||
}, {
|
||
...intlLabel.values
|
||
}) : name;
|
||
const formattedPlaceholder = placeholder ? formatMessage({
|
||
id: placeholder.id,
|
||
defaultMessage: placeholder.defaultMessage
|
||
}, {
|
||
...placeholder.values
|
||
}) : "";
|
||
const getComponent = () => {
|
||
switch (type) {
|
||
case "json": {
|
||
return (0, import_jsx_runtime20.jsx)(JSONInput, {
|
||
value,
|
||
disabled,
|
||
onChange: (json) => {
|
||
const value2 = attribute && "required" in attribute && !(attribute == null ? void 0 : attribute.required) && !json.length ? null : json;
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: value2
|
||
}
|
||
}, false);
|
||
},
|
||
minHeight: "25.2rem",
|
||
maxHeight: "50.4rem"
|
||
});
|
||
}
|
||
case "bool": {
|
||
return (0, import_jsx_runtime20.jsx)(Toggle, {
|
||
checked: defaultValue === null ? null : defaultValue || false,
|
||
disabled,
|
||
offLabel: formatMessage({
|
||
id: "app.components.ToggleCheckbox.off-label",
|
||
defaultMessage: "False"
|
||
}),
|
||
onLabel: formatMessage({
|
||
id: "app.components.ToggleCheckbox.on-label",
|
||
defaultMessage: "True"
|
||
}),
|
||
onChange: (e) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: e.target.checked
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
case "checkbox": {
|
||
return (0, import_jsx_runtime20.jsx)(CheckboxImpl, {
|
||
disabled,
|
||
onCheckedChange: (value2) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: value2
|
||
}
|
||
});
|
||
},
|
||
checked: Boolean(value),
|
||
children: label
|
||
});
|
||
}
|
||
case "datetime": {
|
||
const dateValue = parseDateValue(value);
|
||
return (0, import_jsx_runtime20.jsx)(DateTimePicker, {
|
||
clearLabel: formatMessage({
|
||
id: "clearLabel",
|
||
defaultMessage: "Clear"
|
||
}),
|
||
disabled,
|
||
onChange: (date) => {
|
||
const formattedDate = date ? date.toISOString() : null;
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: formattedDate,
|
||
type
|
||
}
|
||
});
|
||
},
|
||
onClear: () => onChange({
|
||
target: {
|
||
name,
|
||
value: null,
|
||
type
|
||
}
|
||
}),
|
||
placeholder: formattedPlaceholder,
|
||
value: dateValue
|
||
});
|
||
}
|
||
case "date": {
|
||
const dateValue = parseDateValue(value);
|
||
return (0, import_jsx_runtime20.jsx)(DatePicker$1, {
|
||
clearLabel: formatMessage({
|
||
id: "clearLabel",
|
||
defaultMessage: "Clear"
|
||
}),
|
||
disabled,
|
||
onChange: (date) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: date ? formatISO(date, {
|
||
representation: "date"
|
||
}) : null,
|
||
type
|
||
}
|
||
});
|
||
},
|
||
onClear: () => onChange({
|
||
target: {
|
||
name,
|
||
value: null,
|
||
type
|
||
}
|
||
}),
|
||
placeholder: formattedPlaceholder,
|
||
value: dateValue
|
||
});
|
||
}
|
||
case "number": {
|
||
return (0, import_jsx_runtime20.jsx)(NumberInput, {
|
||
disabled,
|
||
onValueChange: (value2) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: value2,
|
||
type
|
||
}
|
||
});
|
||
},
|
||
placeholder: formattedPlaceholder,
|
||
step,
|
||
value
|
||
});
|
||
}
|
||
case "email": {
|
||
return (0, import_jsx_runtime20.jsx)(TextInput, {
|
||
autoComplete,
|
||
disabled,
|
||
onChange: (e) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: e.target.value,
|
||
type
|
||
}
|
||
});
|
||
},
|
||
placeholder: formattedPlaceholder,
|
||
type: "email",
|
||
value: valueWithEmptyStringFallback
|
||
});
|
||
}
|
||
case "timestamp":
|
||
case "text":
|
||
case "string": {
|
||
return (0, import_jsx_runtime20.jsx)(TextInput, {
|
||
autoComplete,
|
||
disabled,
|
||
onChange: (e) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: e.target.value,
|
||
type
|
||
}
|
||
});
|
||
},
|
||
placeholder: formattedPlaceholder,
|
||
type: "text",
|
||
value: valueWithEmptyStringFallback
|
||
});
|
||
}
|
||
case "password": {
|
||
return (0, import_jsx_runtime20.jsx)(TextInput, {
|
||
autoComplete,
|
||
disabled,
|
||
endAction: (0, import_jsx_runtime20.jsx)("button", {
|
||
"aria-label": formatMessage({
|
||
id: "Auth.form.password.show-password",
|
||
defaultMessage: "Show password"
|
||
}),
|
||
onClick: () => {
|
||
setShowPassword((prev) => !prev);
|
||
},
|
||
style: {
|
||
border: "none",
|
||
padding: 0,
|
||
background: "transparent"
|
||
},
|
||
type: "button",
|
||
children: showPassword ? (0, import_jsx_runtime20.jsx)(ForwardRef$3D, {
|
||
fill: "neutral500"
|
||
}) : (0, import_jsx_runtime20.jsx)(ForwardRef$3B, {
|
||
fill: "neutral500"
|
||
})
|
||
}),
|
||
onChange: (e) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: e.target.value,
|
||
type
|
||
}
|
||
});
|
||
},
|
||
placeholder: formattedPlaceholder,
|
||
type: showPassword ? "text" : "password",
|
||
value: valueWithEmptyStringFallback
|
||
});
|
||
}
|
||
case "select": {
|
||
return (0, import_jsx_runtime20.jsx)(SingleSelect, {
|
||
disabled,
|
||
onChange: (value2) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: value2,
|
||
type: "select"
|
||
}
|
||
});
|
||
},
|
||
placeholder: formattedPlaceholder,
|
||
value,
|
||
children: options2.map(({ metadatas: { intlLabel: intlLabel2, disabled: disabled2, hidden }, key, value: value2 }) => {
|
||
return (0, import_jsx_runtime20.jsx)(SingleSelectOption, {
|
||
value: value2,
|
||
disabled: disabled2,
|
||
hidden,
|
||
children: formatMessage(intlLabel2)
|
||
}, key);
|
||
})
|
||
});
|
||
}
|
||
case "textarea": {
|
||
return (0, import_jsx_runtime20.jsx)(Textarea, {
|
||
disabled,
|
||
onChange: (event) => onChange({
|
||
target: {
|
||
name,
|
||
value: event.target.value,
|
||
type
|
||
}
|
||
}),
|
||
placeholder: formattedPlaceholder,
|
||
value: valueWithEmptyStringFallback
|
||
});
|
||
}
|
||
case "time": {
|
||
const formattedValue = handleTimeChange({
|
||
value,
|
||
onChange,
|
||
name,
|
||
type
|
||
});
|
||
return (0, import_jsx_runtime20.jsx)(TimePicker$1, {
|
||
clearLabel: formatMessage({
|
||
id: "clearLabel",
|
||
defaultMessage: "Clear"
|
||
}),
|
||
disabled,
|
||
onChange: (time) => handleTimeChangeEvent(onChange, name, type, time),
|
||
onClear: () => handleTimeChangeEvent(onChange, name, type, void 0),
|
||
value: formattedValue
|
||
});
|
||
}
|
||
default: {
|
||
return (0, import_jsx_runtime20.jsx)(TextInput, {
|
||
disabled: true,
|
||
placeholder: "Not supported",
|
||
type: "text",
|
||
value: ""
|
||
});
|
||
}
|
||
}
|
||
};
|
||
return (0, import_jsx_runtime20.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
name,
|
||
hint,
|
||
required,
|
||
children: [
|
||
type !== "checkbox" ? (0, import_jsx_runtime20.jsx)(Field.Label, {
|
||
action: labelAction,
|
||
children: label
|
||
}) : null,
|
||
getComponent(),
|
||
(0, import_jsx_runtime20.jsx)(Field.Error, {}),
|
||
(0, import_jsx_runtime20.jsx)(Field.Hint, {})
|
||
]
|
||
});
|
||
};
|
||
var useFieldHint = ({ description, fieldSchema, type }) => {
|
||
const { formatMessage } = useIntl();
|
||
const buildDescription = () => (description == null ? void 0 : description.id) ? formatMessage({
|
||
id: description.id,
|
||
defaultMessage: description.defaultMessage
|
||
}, {
|
||
...description.values
|
||
}) : "";
|
||
const buildHint = () => {
|
||
const { maximum, minimum } = getMinMax(fieldSchema);
|
||
const units = getFieldUnits({
|
||
type,
|
||
minimum,
|
||
maximum
|
||
});
|
||
const minIsNumber = typeof minimum === "number";
|
||
const maxIsNumber = typeof maximum === "number";
|
||
const hasMinAndMax = maxIsNumber && minIsNumber;
|
||
const hasMinOrMax = maxIsNumber || minIsNumber;
|
||
if (!(description == null ? void 0 : description.id) && !hasMinOrMax) {
|
||
return "";
|
||
}
|
||
return formatMessage({
|
||
id: "content-manager.form.Input.hint.text",
|
||
defaultMessage: "{min, select, undefined {} other {min. {min}}}{divider}{max, select, undefined {} other {max. {max}}}{unit}{br}{description}"
|
||
}, {
|
||
min: minimum,
|
||
max: maximum,
|
||
description: buildDescription(),
|
||
unit: (units == null ? void 0 : units.message) && hasMinOrMax ? formatMessage(units.message, units.values) : null,
|
||
divider: hasMinAndMax ? formatMessage({
|
||
id: "content-manager.form.Input.hint.minMaxDivider",
|
||
defaultMessage: " / "
|
||
}) : null,
|
||
br: hasMinOrMax ? (0, import_jsx_runtime20.jsx)("br", {}) : null
|
||
});
|
||
};
|
||
return {
|
||
hint: buildHint()
|
||
};
|
||
};
|
||
var getFieldUnits = ({ type, minimum, maximum }) => {
|
||
if (type && [
|
||
"biginteger",
|
||
"integer",
|
||
"number"
|
||
].includes(type)) {
|
||
return {};
|
||
}
|
||
const maxValue = Math.max(minimum || 0, maximum || 0);
|
||
return {
|
||
message: {
|
||
id: "content-manager.form.Input.hint.character.unit",
|
||
defaultMessage: "{maxValue, plural, one { character} other { characters}}"
|
||
},
|
||
values: {
|
||
maxValue
|
||
}
|
||
};
|
||
};
|
||
var getMinMax = (fieldSchema) => {
|
||
if (!fieldSchema) {
|
||
return {
|
||
maximum: void 0,
|
||
minimum: void 0
|
||
};
|
||
}
|
||
const { minLength, maxLength, max, min } = fieldSchema;
|
||
let minimum;
|
||
let maximum;
|
||
const parsedMin = Number(min);
|
||
const parsedMinLength = Number(minLength);
|
||
if (!Number.isNaN(parsedMin)) {
|
||
minimum = parsedMin;
|
||
} else if (!Number.isNaN(parsedMinLength)) {
|
||
minimum = parsedMinLength;
|
||
}
|
||
const parsedMax = Number(max);
|
||
const parsedMaxLength = Number(maxLength);
|
||
if (!Number.isNaN(parsedMax)) {
|
||
maximum = parsedMax;
|
||
} else if (!Number.isNaN(parsedMaxLength)) {
|
||
maximum = parsedMaxLength;
|
||
}
|
||
return {
|
||
maximum,
|
||
minimum
|
||
};
|
||
};
|
||
var MemoizedGenericInput = React.memo(GenericInput, import_isEqual2.default);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs
|
||
var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
|
||
var RelationTargetPicker = ({ oneThatIsCreatingARelationWithAnother, target }) => {
|
||
const { contentTypes, sortedContentTypesList } = useDataManager();
|
||
const dispatch = useDispatch();
|
||
const allowedContentTypesForRelation = sortedContentTypesList.filter(isAllowedContentTypesForRelations);
|
||
const { plugin = null, schema: { displayName } = {
|
||
displayName: "error"
|
||
} } = (contentTypes == null ? void 0 : contentTypes[target]) ?? {};
|
||
const handleSelect = ({ uid, plugin: plugin2, title, restrictRelationsTo }) => () => {
|
||
const selectedContentTypeFriendlyName = plugin2 ? `${plugin2}_${title}` : title;
|
||
dispatch(actions2.onChangeRelationTarget({
|
||
target: {
|
||
value: uid,
|
||
oneThatIsCreatingARelationWithAnother,
|
||
selectedContentTypeFriendlyName,
|
||
targetContentTypeAllowedRelations: restrictRelationsTo
|
||
}
|
||
}));
|
||
};
|
||
return (0, import_jsx_runtime21.jsxs)(Menu.Root, {
|
||
children: [
|
||
(0, import_jsx_runtime21.jsx)(MenuTrigger, {
|
||
children: `${displayName} ${plugin ? `(from: ${plugin})` : ""}`
|
||
}),
|
||
(0, import_jsx_runtime21.jsx)(Menu.Content, {
|
||
zIndex: "popover",
|
||
children: allowedContentTypesForRelation.map(({ uid, title, restrictRelationsTo, plugin: plugin2 }) => (0, import_jsx_runtime21.jsxs)(Menu.Item, {
|
||
onSelect: handleSelect({
|
||
uid,
|
||
plugin: plugin2,
|
||
title,
|
||
restrictRelationsTo
|
||
}),
|
||
children: [
|
||
title,
|
||
" ",
|
||
plugin2 && (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, {
|
||
children: [
|
||
"(from: ",
|
||
plugin2,
|
||
")"
|
||
]
|
||
})
|
||
]
|
||
}, uid))
|
||
})
|
||
]
|
||
});
|
||
};
|
||
var MenuTrigger = dt(Menu.Trigger)`
|
||
max-width: 16.8rem;
|
||
span {
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
`;
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/Relation/RelationField/RelationField.mjs
|
||
var RelationFormBox = ({ disabled = false, error, header, isMain = false, name, onChange, oneThatIsCreatingARelationWithAnother = "", target = "", value = "" }) => {
|
||
return (0, import_jsx_runtime22.jsxs)(Box, {
|
||
background: "neutral100",
|
||
hasRadius: true,
|
||
borderColor: "neutral200",
|
||
children: [
|
||
(0, import_jsx_runtime22.jsx)(Flex, {
|
||
paddingTop: isMain ? 4 : 1,
|
||
paddingBottom: isMain ? 3 : 1,
|
||
justifyContent: "center",
|
||
children: isMain ? (0, import_jsx_runtime22.jsx)(Typography, {
|
||
variant: "pi",
|
||
fontWeight: "bold",
|
||
textColor: "neutral800",
|
||
children: header
|
||
}) : (0, import_jsx_runtime22.jsx)(RelationTargetPicker, {
|
||
target,
|
||
oneThatIsCreatingARelationWithAnother
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime22.jsx)(Divider, {
|
||
background: "neutral200"
|
||
}),
|
||
(0, import_jsx_runtime22.jsx)(Box, {
|
||
padding: 4,
|
||
children: (0, import_jsx_runtime22.jsx)(MemoizedGenericInput, {
|
||
disabled,
|
||
error: (error == null ? void 0 : error.id) || null,
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.defineRelation.fieldName"),
|
||
defaultMessage: "Field name"
|
||
},
|
||
name,
|
||
onChange,
|
||
type: "text",
|
||
value
|
||
})
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs
|
||
var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
|
||
var import_get = __toESM(require_get(), 1);
|
||
var import_truncate = __toESM(require_truncate(), 1);
|
||
var import_pluralize2 = __toESM(require_pluralize(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/Relation/RelationNaturePicker/Components.mjs
|
||
var Wrapper2 = dt(Box)`
|
||
position: relative;
|
||
width: 100%;
|
||
&::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: calc(50% - 0px);
|
||
height: 2px;
|
||
width: 100%;
|
||
background-color: ${({ theme }) => theme.colors.primary600};
|
||
z-index: 0;
|
||
}
|
||
`;
|
||
var IconWrapper = dt(Box)`
|
||
background: ${({ theme, $isSelected }) => theme.colors[$isSelected ? "primary100" : "neutral0"]};
|
||
border: 1px solid
|
||
${({ theme, $isSelected }) => theme.colors[$isSelected ? "primary700" : "neutral200"]};
|
||
border-radius: ${({ theme }) => theme.borderRadius};
|
||
z-index: 1;
|
||
flex: 0 0 2.4rem;
|
||
svg {
|
||
width: 2.4rem;
|
||
height: 2.4rem;
|
||
max-width: unset;
|
||
path {
|
||
fill: ${({ theme, $isSelected }) => theme.colors[$isSelected ? "primary700" : "neutral500"]};
|
||
}
|
||
}
|
||
cursor: pointer;
|
||
&:disabled {
|
||
cursor: not-allowed;
|
||
}
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
`;
|
||
var InfosWrapper = dt(Flex)`
|
||
position: absolute;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
`;
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs
|
||
var relations = {
|
||
oneWay: ForwardRef$1J,
|
||
oneToOne: ForwardRef$1L,
|
||
oneToMany: ForwardRef$1N,
|
||
manyToOne: ForwardRef$29,
|
||
manyToMany: ForwardRef$2b,
|
||
manyWay: ForwardRef$27
|
||
};
|
||
var RelationNaturePicker = ({ naturePickerType, oneThatIsCreatingARelationWithAnother, relationType, target }) => {
|
||
const dispatch = useDispatch();
|
||
const { formatMessage } = useIntl();
|
||
const { contentTypes, modifiedData } = useDataManager();
|
||
const ctRelations = [
|
||
"oneWay",
|
||
"oneToOne",
|
||
"oneToMany",
|
||
"manyToOne",
|
||
"manyToMany",
|
||
"manyWay"
|
||
];
|
||
const componentRelations = [
|
||
"oneWay",
|
||
"manyWay"
|
||
];
|
||
const dataType = naturePickerType === "contentType" ? (0, import_get.default)(modifiedData, [
|
||
naturePickerType,
|
||
"schema",
|
||
"kind"
|
||
], "") : naturePickerType;
|
||
const relationsType = dataType === "collectionType" ? ctRelations : componentRelations;
|
||
const areDisplayedNamesInverted = relationType === "manyToOne";
|
||
const targetLabel = (0, import_get.default)(contentTypes, [
|
||
target,
|
||
"schema",
|
||
"displayName"
|
||
], "unknown");
|
||
const leftTarget = areDisplayedNamesInverted ? targetLabel : oneThatIsCreatingARelationWithAnother;
|
||
const rightTarget = areDisplayedNamesInverted ? oneThatIsCreatingARelationWithAnother : targetLabel;
|
||
const leftDisplayedValue = (0, import_pluralize2.default)(leftTarget, relationType === "manyToMany" ? 2 : 1);
|
||
const restrictedRelations = (0, import_get.default)(contentTypes, [
|
||
target,
|
||
"schema",
|
||
"restrictRelationsTo"
|
||
], null);
|
||
const rightDisplayedValue = (0, import_pluralize2.default)(rightTarget, [
|
||
"manyToMany",
|
||
"oneToMany",
|
||
"manyToOne",
|
||
"manyWay"
|
||
].includes(relationType) ? 2 : 1);
|
||
if (!relationType) {
|
||
return null;
|
||
}
|
||
return (0, import_jsx_runtime23.jsxs)(Flex, {
|
||
style: {
|
||
flex: 1
|
||
},
|
||
children: [
|
||
(0, import_jsx_runtime23.jsx)(Wrapper2, {
|
||
children: (0, import_jsx_runtime23.jsx)(Flex, {
|
||
paddingLeft: 9,
|
||
paddingRight: 9,
|
||
paddingTop: 1,
|
||
justifyContent: "center",
|
||
children: (0, import_jsx_runtime23.jsx)(KeyboardNavigable, {
|
||
tagName: "button",
|
||
children: (0, import_jsx_runtime23.jsx)(Flex, {
|
||
gap: 3,
|
||
children: relationsType.map((relation) => {
|
||
const Asset = relations[relation];
|
||
const isEnabled = restrictedRelations === null || restrictedRelations.includes(relation);
|
||
return (0, import_jsx_runtime23.jsx)(IconWrapper, {
|
||
tag: "button",
|
||
$isSelected: relationType === relation,
|
||
disabled: !isEnabled,
|
||
onClick: () => {
|
||
if (isEnabled) {
|
||
dispatch(actions2.onChangeRelationType({
|
||
target: {
|
||
oneThatIsCreatingARelationWithAnother,
|
||
value: relation
|
||
}
|
||
}));
|
||
}
|
||
},
|
||
padding: 2,
|
||
type: "button",
|
||
"aria-label": formatMessage({
|
||
id: getTrad(`relation.${relation}`)
|
||
}),
|
||
"aria-pressed": relationType === relation,
|
||
"data-relation-type": relation,
|
||
children: (0, import_jsx_runtime23.jsx)(Asset, {
|
||
"aria-hidden": "true"
|
||
}, relation)
|
||
}, relation);
|
||
})
|
||
})
|
||
})
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime23.jsxs)(InfosWrapper, {
|
||
justifyContent: "center",
|
||
children: [
|
||
(0, import_jsx_runtime23.jsxs)(Typography, {
|
||
children: [
|
||
(0, import_truncate.default)(leftDisplayedValue, {
|
||
length: 24
|
||
}),
|
||
" "
|
||
]
|
||
}),
|
||
(0, import_jsx_runtime23.jsxs)(Typography, {
|
||
textColor: "primary600",
|
||
children: [
|
||
formatMessage({
|
||
id: getTrad(`relation.${relationType}`)
|
||
}),
|
||
" "
|
||
]
|
||
}),
|
||
(0, import_jsx_runtime23.jsx)(Typography, {
|
||
children: (0, import_truncate.default)(rightDisplayedValue, {
|
||
length: 24
|
||
})
|
||
})
|
||
]
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/Relation/Relation.mjs
|
||
var Relation = ({ formErrors, mainBoxHeader, modifiedData, naturePickerType, onChange }) => {
|
||
const relationType = getRelationType(modifiedData.relation, modifiedData.targetAttribute);
|
||
return (0, import_jsx_runtime24.jsxs)(Flex, {
|
||
style: {
|
||
position: "relative"
|
||
},
|
||
children: [
|
||
(0, import_jsx_runtime24.jsx)(RelationFormBox, {
|
||
isMain: true,
|
||
header: mainBoxHeader,
|
||
error: (formErrors == null ? void 0 : formErrors.name) || null,
|
||
name: "name",
|
||
onChange,
|
||
value: (modifiedData == null ? void 0 : modifiedData.name) || ""
|
||
}),
|
||
(0, import_jsx_runtime24.jsx)(RelationNaturePicker, {
|
||
naturePickerType,
|
||
oneThatIsCreatingARelationWithAnother: mainBoxHeader,
|
||
relationType,
|
||
target: modifiedData.target
|
||
}),
|
||
(0, import_jsx_runtime24.jsx)(RelationFormBox, {
|
||
disabled: [
|
||
"oneWay",
|
||
"manyWay"
|
||
].includes(relationType),
|
||
error: (formErrors == null ? void 0 : formErrors.targetAttribute) || null,
|
||
name: "targetAttribute",
|
||
onChange,
|
||
oneThatIsCreatingARelationWithAnother: mainBoxHeader,
|
||
target: modifiedData.target,
|
||
value: (modifiedData == null ? void 0 : modifiedData.targetAttribute) || ""
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/SelectCategory.mjs
|
||
var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
|
||
var import_react8 = __toESM(require_react(), 1);
|
||
var SelectCategory = ({ error = null, intlLabel, name, onChange, value = void 0, isCreating, dynamicZoneTarget }) => {
|
||
const { formatMessage } = useIntl();
|
||
const { allComponentsCategories } = useDataManager();
|
||
const [categories, setCategories] = (0, import_react8.useState)(allComponentsCategories);
|
||
const errorMessage = error ? formatMessage({
|
||
id: error,
|
||
defaultMessage: error
|
||
}) : "";
|
||
const label = formatMessage(intlLabel);
|
||
const handleChange = (value2) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: value2,
|
||
type: "select-category"
|
||
}
|
||
});
|
||
};
|
||
const handleCreateOption = (value2) => {
|
||
setCategories((prev) => [
|
||
...prev,
|
||
value2
|
||
]);
|
||
handleChange(value2);
|
||
};
|
||
return (0, import_jsx_runtime25.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime25.jsx)(Field.Label, {
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime25.jsx)(Combobox, {
|
||
// TODO: re-enable category edits, renaming categories of already existing components currently breaks other functionality
|
||
// See https://github.com/strapi/strapi/issues/20356
|
||
disabled: !isCreating && !dynamicZoneTarget,
|
||
onChange: handleChange,
|
||
onCreateOption: handleCreateOption,
|
||
value,
|
||
creatable: true,
|
||
children: categories.map((category) => (0, import_jsx_runtime25.jsx)(Option, {
|
||
value: category,
|
||
children: category
|
||
}, category))
|
||
}),
|
||
(0, import_jsx_runtime25.jsx)(Field.Error, {})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/SelectComponent.mjs
|
||
var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/utils/getMaxDepth.mjs
|
||
var findComponent = (componentUid, components) => {
|
||
return components.find((c) => c.component === componentUid);
|
||
};
|
||
var getChildrenMaxDepth = (componentUid, components, currentDepth = 0) => {
|
||
const component = findComponent(componentUid, components);
|
||
if (!component || !component.childComponents || component.childComponents.length === 0) {
|
||
return currentDepth;
|
||
}
|
||
let maxDepth = currentDepth;
|
||
component.childComponents.forEach((child) => {
|
||
const depth = getChildrenMaxDepth(child.component, components, currentDepth + 1);
|
||
if (depth > maxDepth) {
|
||
maxDepth = depth;
|
||
}
|
||
});
|
||
return maxDepth;
|
||
};
|
||
var getComponentDepth = (component, components) => {
|
||
const getDepth = (currentComponent, currentLevel) => {
|
||
const levels = [];
|
||
levels.push(currentLevel);
|
||
if (!currentComponent.uidsOfAllParents) {
|
||
return levels;
|
||
}
|
||
for (const parentUid of currentComponent.uidsOfAllParents) {
|
||
const parentComponent = findComponent(parentUid, components);
|
||
if (parentComponent) {
|
||
levels.push(...getDepth(parentComponent, currentLevel + 1));
|
||
}
|
||
}
|
||
return levels;
|
||
};
|
||
const nestedCompo = findComponent(component, components);
|
||
if (!nestedCompo) {
|
||
return 0;
|
||
}
|
||
const compoDepth = Math.max(...getDepth(nestedCompo, 1));
|
||
return compoDepth;
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/SelectComponent.mjs
|
||
var SelectComponent = ({ error = null, intlLabel, isAddingAComponentToAnotherComponent, isCreating, isCreatingComponentWhileAddingAField, componentToCreate, name, onChange, targetUid, forTarget, value }) => {
|
||
const { formatMessage } = useIntl();
|
||
const errorMessage = error ? formatMessage({
|
||
id: error,
|
||
defaultMessage: error
|
||
}) : "";
|
||
const label = formatMessage(intlLabel);
|
||
const { componentsGroupedByCategory, componentsThatHaveOtherComponentInTheirAttributes, nestedComponents } = useDataManager();
|
||
const isTargetAComponent = [
|
||
"component",
|
||
"components"
|
||
].includes(forTarget);
|
||
let options2 = Object.entries(componentsGroupedByCategory).reduce((acc, current) => {
|
||
const [categoryName, components] = current;
|
||
const compos = components.map((component) => {
|
||
return {
|
||
uid: component.uid,
|
||
label: component.schema.displayName,
|
||
categoryName
|
||
};
|
||
});
|
||
return [
|
||
...acc,
|
||
...compos
|
||
];
|
||
}, []);
|
||
if (isAddingAComponentToAnotherComponent) {
|
||
options2 = options2.filter(({ uid }) => {
|
||
const maxDepth = getChildrenMaxDepth(uid, componentsThatHaveOtherComponentInTheirAttributes);
|
||
const componentDepth = getComponentDepth(targetUid, nestedComponents);
|
||
const totalDepth = maxDepth + componentDepth;
|
||
return totalDepth <= MAX_COMPONENT_DEPTH;
|
||
});
|
||
}
|
||
if (isTargetAComponent) {
|
||
options2 = options2.filter((option) => {
|
||
return option.uid !== targetUid;
|
||
});
|
||
}
|
||
if (isCreatingComponentWhileAddingAField) {
|
||
options2 = [
|
||
{
|
||
uid: value,
|
||
label: componentToCreate == null ? void 0 : componentToCreate.displayName,
|
||
categoryName: componentToCreate == null ? void 0 : componentToCreate.category
|
||
}
|
||
];
|
||
}
|
||
return (0, import_jsx_runtime26.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime26.jsx)(Field.Label, {
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime26.jsx)(SingleSelect, {
|
||
disabled: isCreatingComponentWhileAddingAField || !isCreating,
|
||
onChange: (value2) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: value2,
|
||
type: "select-category"
|
||
}
|
||
});
|
||
},
|
||
value: value || "",
|
||
children: options2.map((option) => {
|
||
return (0, import_jsx_runtime26.jsx)(SingleSelectOption, {
|
||
value: option.uid,
|
||
children: `${option.categoryName} - ${option.label}`
|
||
}, option.uid);
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime26.jsx)(Field.Error, {})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/SelectComponents.mjs
|
||
var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
|
||
var SelectComponents = ({ dynamicZoneTarget, intlLabel, name, onChange, value }) => {
|
||
const { formatMessage } = useIntl();
|
||
const { componentsGroupedByCategory, modifiedData } = useDataManager();
|
||
const dzSchema = findAttribute(modifiedData.contentType.schema.attributes, dynamicZoneTarget);
|
||
const alreadyUsedComponents = (dzSchema == null ? void 0 : dzSchema.components) || [];
|
||
const filteredComponentsGroupedByCategory = Object.keys(componentsGroupedByCategory).reduce((acc, current) => {
|
||
const filteredComponents = componentsGroupedByCategory[current].filter(({ uid }) => {
|
||
return !alreadyUsedComponents.includes(uid);
|
||
});
|
||
if (filteredComponents.length > 0) {
|
||
acc[current] = filteredComponents;
|
||
}
|
||
return acc;
|
||
}, {});
|
||
const options2 = Object.entries(filteredComponentsGroupedByCategory).reduce((acc, current) => {
|
||
const [categoryName, components] = current;
|
||
const section = {
|
||
label: categoryName,
|
||
children: components.map(({ uid, schema: { displayName } }) => {
|
||
return {
|
||
label: displayName,
|
||
value: uid
|
||
};
|
||
})
|
||
};
|
||
acc.push(section);
|
||
return acc;
|
||
}, []);
|
||
const displayedValue = formatMessage({
|
||
id: getTrad("components.SelectComponents.displayed-value"),
|
||
defaultMessage: "{number, plural, =0 {# components} one {# component} other {# components}} selected"
|
||
}, {
|
||
number: (value == null ? void 0 : value.length) ?? 0
|
||
});
|
||
return (0, import_jsx_runtime27.jsxs)(Field.Root, {
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime27.jsx)(Field.Label, {
|
||
children: formatMessage(intlLabel)
|
||
}),
|
||
(0, import_jsx_runtime27.jsx)(MultiSelectNested, {
|
||
id: "select1",
|
||
customizeContent: () => displayedValue,
|
||
onChange: (values) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: values,
|
||
type: "select-components"
|
||
}
|
||
});
|
||
},
|
||
options: options2,
|
||
value: value || []
|
||
})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/SelectDateType.mjs
|
||
var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
|
||
var SelectDateType = ({ intlLabel, error = void 0, modifiedData, name, onChange, options: options2, value = "" }) => {
|
||
const { formatMessage } = useIntl();
|
||
const label = formatMessage(intlLabel);
|
||
const errorMessage = error ? formatMessage({
|
||
id: error,
|
||
defaultMessage: error
|
||
}) : "";
|
||
const handleChange = (nextValue) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: nextValue,
|
||
type: "select"
|
||
}
|
||
});
|
||
if (!value) {
|
||
return;
|
||
}
|
||
if (modifiedData.default !== void 0 && modifiedData.default !== null) {
|
||
onChange({
|
||
target: {
|
||
name: "default",
|
||
value: null
|
||
}
|
||
});
|
||
}
|
||
};
|
||
return (0, import_jsx_runtime28.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime28.jsx)(Field.Label, {
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime28.jsx)(SingleSelect, {
|
||
onChange: handleChange,
|
||
value: value || "",
|
||
children: options2.map(({ metadatas: { intlLabel: intlLabel2, disabled, hidden }, key, value: value2 }) => {
|
||
return (0, import_jsx_runtime28.jsx)(SingleSelectOption, {
|
||
value: value2,
|
||
disabled,
|
||
hidden,
|
||
children: formatMessage({
|
||
id: intlLabel2.id,
|
||
defaultMessage: intlLabel2.defaultMessage
|
||
}, intlLabel2.values)
|
||
}, key);
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime28.jsx)(Field.Error, {})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/SelectNumber.mjs
|
||
var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
|
||
var SelectNumber = ({ intlLabel, error = void 0, modifiedData, name, onChange, options: options2, value = "" }) => {
|
||
const { formatMessage } = useIntl();
|
||
const label = formatMessage(intlLabel);
|
||
const errorMessage = error ? formatMessage({
|
||
id: error,
|
||
defaultMessage: error
|
||
}) : "";
|
||
const handleChange = (nextValue) => {
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: nextValue,
|
||
type: "select"
|
||
}
|
||
});
|
||
if (!value) {
|
||
return;
|
||
}
|
||
if (nextValue === "biginteger" && value !== "biginteger") {
|
||
if (modifiedData.default !== void 0 && modifiedData.default !== null) {
|
||
onChange({
|
||
target: {
|
||
name: "default",
|
||
value: null
|
||
}
|
||
});
|
||
}
|
||
if (modifiedData.max !== void 0 && modifiedData.max !== null) {
|
||
onChange({
|
||
target: {
|
||
name: "max",
|
||
value: null
|
||
}
|
||
});
|
||
}
|
||
if (modifiedData.min !== void 0 && modifiedData.min !== null) {
|
||
onChange({
|
||
target: {
|
||
name: "min",
|
||
value: null
|
||
}
|
||
});
|
||
}
|
||
}
|
||
if (typeof nextValue === "string" && [
|
||
"decimal",
|
||
"float",
|
||
"integer"
|
||
].includes(nextValue) && value === "biginteger") {
|
||
if (modifiedData.default !== void 0 && modifiedData.default !== null) {
|
||
onChange({
|
||
target: {
|
||
name: "default",
|
||
value: null
|
||
}
|
||
});
|
||
}
|
||
if (modifiedData.max !== void 0 && modifiedData.max !== null) {
|
||
onChange({
|
||
target: {
|
||
name: "max",
|
||
value: null
|
||
}
|
||
});
|
||
}
|
||
if (modifiedData.min !== void 0 && modifiedData.min !== null) {
|
||
onChange({
|
||
target: {
|
||
name: "min",
|
||
value: null
|
||
}
|
||
});
|
||
}
|
||
}
|
||
};
|
||
return (0, import_jsx_runtime29.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime29.jsx)(Field.Label, {
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime29.jsx)(SingleSelect, {
|
||
onChange: handleChange,
|
||
value: value || "",
|
||
children: options2.map(({ metadatas: { intlLabel: intlLabel2, disabled, hidden }, key, value: value2 }) => {
|
||
return (0, import_jsx_runtime29.jsx)(SingleSelectOption, {
|
||
value: value2,
|
||
disabled,
|
||
hidden,
|
||
children: formatMessage(intlLabel2)
|
||
}, key);
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime29.jsx)(Field.Error, {})
|
||
]
|
||
});
|
||
};
|
||
SelectNumber.defaultProps = {
|
||
error: void 0,
|
||
value: ""
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/SingularName.mjs
|
||
var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
|
||
var import_react9 = __toESM(require_react(), 1);
|
||
var SingularName = ({ description = null, error = null, intlLabel, modifiedData, name, onChange, value = null }) => {
|
||
const { formatMessage } = useIntl();
|
||
const onChangeRef = (0, import_react9.useRef)(onChange);
|
||
const displayName = (modifiedData == null ? void 0 : modifiedData.displayName) || "";
|
||
(0, import_react9.useEffect)(() => {
|
||
if (displayName) {
|
||
onChangeRef.current({
|
||
target: {
|
||
name,
|
||
value: nameToSlug(displayName)
|
||
}
|
||
});
|
||
} else {
|
||
onChangeRef.current({
|
||
target: {
|
||
name,
|
||
value: ""
|
||
}
|
||
});
|
||
}
|
||
}, [
|
||
displayName,
|
||
name
|
||
]);
|
||
const errorMessage = error ? formatMessage({
|
||
id: error,
|
||
defaultMessage: error
|
||
}) : "";
|
||
const hint = description ? formatMessage({
|
||
id: description.id,
|
||
defaultMessage: description.defaultMessage
|
||
}, {
|
||
...description.values
|
||
}) : "";
|
||
const label = formatMessage(intlLabel);
|
||
return (0, import_jsx_runtime30.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
hint,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime30.jsx)(Field.Label, {
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime30.jsx)(TextInput, {
|
||
onChange,
|
||
value: value || ""
|
||
}),
|
||
(0, import_jsx_runtime30.jsx)(Field.Error, {}),
|
||
(0, import_jsx_runtime30.jsx)(Field.Hint, {})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/TabForm.mjs
|
||
var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
|
||
var import_get2 = __toESM(require_get(), 1);
|
||
var TabForm = ({ form, formErrors, genericInputProps, modifiedData, onChange }) => {
|
||
const { formatMessage } = useIntl();
|
||
return (0, import_jsx_runtime31.jsx)(import_jsx_runtime31.Fragment, {
|
||
children: form.map((section, sectionIndex) => {
|
||
if (section.items.length === 0) {
|
||
return null;
|
||
}
|
||
return (0, import_jsx_runtime31.jsxs)(Box, {
|
||
children: [
|
||
section.sectionTitle && (0, import_jsx_runtime31.jsx)(Box, {
|
||
paddingBottom: 4,
|
||
children: (0, import_jsx_runtime31.jsx)(Typography, {
|
||
variant: "delta",
|
||
tag: "h3",
|
||
children: formatMessage(section.sectionTitle)
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime31.jsx)(Grid.Root, {
|
||
gap: 4,
|
||
children: section.items.map((input, i) => {
|
||
const key = `${sectionIndex}.${i}`;
|
||
const value = (0, import_get2.default)(modifiedData, input.name, void 0);
|
||
const pluginOptionError = Object.keys(formErrors).find((key2) => key2 === input.name);
|
||
const errorId = pluginOptionError ? formErrors[pluginOptionError].id : (0, import_get2.default)(formErrors, [
|
||
...input.name.split(".").filter((key2) => key2 !== "componentToCreate"),
|
||
"id"
|
||
], null);
|
||
if (input.type === "pushRight") {
|
||
return (0, import_jsx_runtime31.jsx)(Grid.Item, {
|
||
col: input.size || 6,
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
children: (0, import_jsx_runtime31.jsx)("div", {})
|
||
}, input.name || key);
|
||
}
|
||
return (0, import_jsx_runtime31.jsx)(Grid.Item, {
|
||
col: input.size || 6,
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
children: (0, import_jsx_runtime31.jsx)(MemoizedGenericInput, {
|
||
...input,
|
||
...genericInputProps,
|
||
error: errorId,
|
||
onChange,
|
||
value
|
||
})
|
||
}, input.name || key);
|
||
})
|
||
})
|
||
]
|
||
}, sectionIndex);
|
||
})
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/TextareaEnum.mjs
|
||
var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
|
||
var TextareaEnum = ({ description = null, disabled = false, error = "", intlLabel, labelAction, name, onChange, placeholder = null, value = "" }) => {
|
||
const { formatMessage } = useIntl();
|
||
const errorMessage = error ? formatMessage({
|
||
id: error,
|
||
defaultMessage: error
|
||
}) : "";
|
||
const hint = description ? formatMessage({
|
||
id: description.id,
|
||
defaultMessage: description.defaultMessage
|
||
}, {
|
||
...description.values
|
||
}) : "";
|
||
const label = formatMessage(intlLabel);
|
||
const formattedPlaceholder = placeholder ? formatMessage({
|
||
id: placeholder.id,
|
||
defaultMessage: placeholder.defaultMessage
|
||
}, {
|
||
...placeholder.values
|
||
}) : "";
|
||
const inputValue = Array.isArray(value) ? value.join("\n") : "";
|
||
const handleChange = (e) => {
|
||
const arrayValue = e.target.value.split("\n");
|
||
onChange({
|
||
target: {
|
||
name,
|
||
value: arrayValue
|
||
}
|
||
});
|
||
};
|
||
return (0, import_jsx_runtime32.jsxs)(Field.Root, {
|
||
error: errorMessage,
|
||
hint,
|
||
name,
|
||
children: [
|
||
(0, import_jsx_runtime32.jsx)(Field.Label, {
|
||
action: labelAction,
|
||
children: label
|
||
}),
|
||
(0, import_jsx_runtime32.jsx)(Textarea, {
|
||
disabled,
|
||
onChange: handleChange,
|
||
placeholder: formattedPlaceholder,
|
||
value: inputValue
|
||
}),
|
||
(0, import_jsx_runtime32.jsx)(Field.Error, {}),
|
||
(0, import_jsx_runtime32.jsx)(Field.Hint, {})
|
||
]
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/attributes/nameField.mjs
|
||
var nameField = {
|
||
name: "name",
|
||
type: "text",
|
||
intlLabel: {
|
||
id: "global.name",
|
||
defaultMessage: "Name"
|
||
},
|
||
description: {
|
||
id: getTrad("modalForm.attribute.form.base.name.description"),
|
||
defaultMessage: "No space is allowed for the name of the attribute"
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/attributes/commonBaseForm.mjs
|
||
var commonBaseForm = {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField
|
||
]
|
||
}
|
||
]
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/component/componentForm.mjs
|
||
var componentForm = {
|
||
base(prefix = "") {
|
||
const sections = [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
name: `${prefix}displayName`,
|
||
type: "text",
|
||
intlLabel: {
|
||
id: getTrad("contentType.displayName.label"),
|
||
defaultMessage: "Display Name"
|
||
}
|
||
},
|
||
{
|
||
name: `${prefix}category`,
|
||
type: "select-category",
|
||
intlLabel: {
|
||
id: getTrad("modalForm.components.create-component.category.label"),
|
||
defaultMessage: "Select a category or enter a name to create a new one"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
name: `${prefix}icon`,
|
||
type: "icon-picker",
|
||
size: 12,
|
||
intlLabel: {
|
||
id: getTrad("modalForm.components.icon.label"),
|
||
defaultMessage: "Icon"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
];
|
||
return sections;
|
||
},
|
||
advanced() {
|
||
const sections = [];
|
||
return sections;
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/attributes/attributeOptions.mjs
|
||
var attributeOptions = {
|
||
default: {
|
||
name: "default",
|
||
type: "text",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.settings.default"),
|
||
defaultMessage: "Default value"
|
||
}
|
||
},
|
||
max: {
|
||
name: "max",
|
||
type: "checkbox-with-number-field",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.maximum"),
|
||
defaultMessage: "Maximum value"
|
||
}
|
||
},
|
||
maxLength: {
|
||
name: "maxLength",
|
||
type: "checkbox-with-number-field",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.maximumLength"),
|
||
defaultMessage: "Maximum length"
|
||
}
|
||
},
|
||
min: {
|
||
name: "min",
|
||
type: "checkbox-with-number-field",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.minimum"),
|
||
defaultMessage: "Minimum value"
|
||
}
|
||
},
|
||
minLength: {
|
||
name: "minLength",
|
||
type: "checkbox-with-number-field",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.minimumLength"),
|
||
defaultMessage: "Minimum length"
|
||
}
|
||
},
|
||
private: {
|
||
name: "private",
|
||
type: "checkbox",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.privateField"),
|
||
defaultMessage: "Private field"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.item.privateField.description"),
|
||
defaultMessage: "This field will not show up in the API response"
|
||
}
|
||
},
|
||
regex: {
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.text.regex"),
|
||
defaultMessage: "RegExp pattern"
|
||
},
|
||
name: "regex",
|
||
type: "text",
|
||
description: {
|
||
id: getTrad("form.attribute.item.text.regex.description"),
|
||
defaultMessage: "The text of the regular expression"
|
||
}
|
||
},
|
||
required: {
|
||
name: "required",
|
||
type: "checkbox",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.requiredField"),
|
||
defaultMessage: "Required field"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.item.requiredField.description"),
|
||
defaultMessage: "You won't be able to create an entry if this field is empty"
|
||
}
|
||
},
|
||
unique: {
|
||
name: "unique",
|
||
type: "checkbox",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.uniqueField"),
|
||
defaultMessage: "Unique field"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.item.uniqueField.description"),
|
||
defaultMessage: "You won't be able to create an entry if there is an existing entry with identical content"
|
||
}
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/attributes/advancedForm.mjs
|
||
var advancedForm = {
|
||
blocks() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
boolean() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
autoFocus: true,
|
||
type: "select-default-boolean",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.settings.default"),
|
||
defaultMessage: "Default value"
|
||
},
|
||
name: "default",
|
||
options: [
|
||
{
|
||
value: "true",
|
||
key: "true",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: "true",
|
||
defaultMessage: "true"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
value: "",
|
||
key: "null",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: "null",
|
||
defaultMessage: "null"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
value: "false",
|
||
key: "false",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: "false",
|
||
defaultMessage: "false"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
component({ repeatable }, step) {
|
||
if (step === "1") {
|
||
return {
|
||
sections: componentForm.advanced()
|
||
};
|
||
}
|
||
if (repeatable) {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.private,
|
||
attributeOptions.max,
|
||
attributeOptions.min
|
||
]
|
||
}
|
||
]
|
||
};
|
||
}
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
date({ type }) {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
...attributeOptions.default,
|
||
type: type || "date",
|
||
value: null,
|
||
withDefaultValue: false,
|
||
disabled: !type,
|
||
autoFocus: false
|
||
}
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.unique,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
dynamiczone() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.max,
|
||
attributeOptions.min
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
email() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
...attributeOptions.default,
|
||
type: "email"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.unique,
|
||
attributeOptions.maxLength,
|
||
attributeOptions.minLength,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
enumeration(data) {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
name: "default",
|
||
type: "select",
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.settings.default"),
|
||
defaultMessage: "Default value"
|
||
},
|
||
validations: {},
|
||
options: [
|
||
{
|
||
key: "__null_reset_value__",
|
||
value: "",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: "components.InputSelect.option.placeholder",
|
||
defaultMessage: "Choose here"
|
||
}
|
||
}
|
||
},
|
||
...(data.enum || []).filter((value, index) => data.enum.indexOf(value) === index && value).map((value) => {
|
||
return {
|
||
key: value,
|
||
value,
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: `${value}.no-override`,
|
||
defaultMessage: value
|
||
}
|
||
}
|
||
};
|
||
})
|
||
]
|
||
},
|
||
{
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.enumeration.graphql"),
|
||
defaultMessage: "Name override for GraphQL"
|
||
},
|
||
name: "enumName",
|
||
type: "text",
|
||
validations: {},
|
||
description: {
|
||
id: getTrad("form.attribute.item.enumeration.graphql.description"),
|
||
defaultMessage: "Allows you to override the default generated name for GraphQL"
|
||
}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
json() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
media() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.media.allowed-types"),
|
||
defaultMessage: "Select allowed types of media"
|
||
},
|
||
name: "allowedTypes",
|
||
type: "allowed-types-select",
|
||
size: 7,
|
||
value: "",
|
||
validations: {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
number(data) {
|
||
const inputStep = data.type === "decimal" || data.type === "float" ? "any" : 1;
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
autoFocus: true,
|
||
name: "default",
|
||
type: data.type === "biginteger" ? "text" : "number",
|
||
step: inputStep,
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.settings.default"),
|
||
defaultMessage: "Default value"
|
||
},
|
||
validations: {}
|
||
}
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.unique,
|
||
attributeOptions.max,
|
||
attributeOptions.min,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
password() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
attributeOptions.default
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.maxLength,
|
||
attributeOptions.minLength,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
relation() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
richtext() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
attributeOptions.default
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.maxLength,
|
||
attributeOptions.minLength,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
text() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
attributeOptions.default,
|
||
attributeOptions.regex
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.unique,
|
||
attributeOptions.maxLength,
|
||
attributeOptions.minLength,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
uid(data) {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
...attributeOptions.default,
|
||
disabled: Boolean(data.targetField),
|
||
type: "text"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: {
|
||
id: "global.settings",
|
||
defaultMessage: "Settings"
|
||
},
|
||
items: [
|
||
attributeOptions.required,
|
||
attributeOptions.maxLength,
|
||
attributeOptions.minLength,
|
||
attributeOptions.private
|
||
]
|
||
}
|
||
]
|
||
};
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/component/componentField.mjs
|
||
var componentField = {
|
||
intlLabel: {
|
||
id: "global.type",
|
||
defaultMessage: "Type"
|
||
},
|
||
name: "createComponent",
|
||
type: "boolean-radio-group",
|
||
size: 12,
|
||
radios: [
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.component.option.create"),
|
||
defaultMessage: "Create a new component"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.component.option.create.description"),
|
||
defaultMessage: "A component is shared across types and components, it will be available and accessible everywhere."
|
||
},
|
||
value: true
|
||
},
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.component.option.reuse-existing"),
|
||
defaultMessage: "Use an existing component"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.component.option.reuse-existing.description"),
|
||
defaultMessage: "Reuse a component already created to keep your data consistent across content-types."
|
||
},
|
||
value: false
|
||
}
|
||
]
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/attributes/baseForm.mjs
|
||
var baseForm = {
|
||
component(data, step) {
|
||
if (step === "1") {
|
||
const itemsToConcat = data.createComponent === true ? componentForm.base("componentToCreate.") : [];
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
componentField
|
||
]
|
||
},
|
||
...itemsToConcat
|
||
]
|
||
};
|
||
}
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField,
|
||
{
|
||
name: "component",
|
||
type: "select-component",
|
||
intlLabel: {
|
||
id: getTrad("modalForm.attributes.select-component"),
|
||
defaultMessage: "Select a component"
|
||
},
|
||
isMultiple: false
|
||
}
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
intlLabel: {
|
||
id: "global.type",
|
||
defaultMessage: "Type"
|
||
},
|
||
name: "repeatable",
|
||
type: "boolean-radio-group",
|
||
size: 12,
|
||
radios: [
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.component.option.repeatable"),
|
||
defaultMessage: "Repeatable component"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.component.option.repeatable.description"),
|
||
defaultMessage: "Best for multiple instances (array) of ingredients, meta tags, etc.."
|
||
},
|
||
value: true
|
||
},
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.component.option.single"),
|
||
defaultMessage: "Single component"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.component.option.single.description"),
|
||
defaultMessage: "Best for grouping fields like full address, main information, etc..."
|
||
},
|
||
value: false
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
date() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField,
|
||
{
|
||
intlLabel: {
|
||
id: "global.type",
|
||
defaultMessage: "Type"
|
||
},
|
||
name: "type",
|
||
type: "select-date",
|
||
options: [
|
||
{
|
||
key: "__null_reset_value__",
|
||
value: "",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: "components.InputSelect.option.placeholder",
|
||
defaultMessage: "Choose here"
|
||
},
|
||
hidden: true
|
||
}
|
||
},
|
||
{
|
||
key: "date",
|
||
value: "date",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.date.type.date"),
|
||
defaultMessage: "date (ex: 01/01/{currentYear})",
|
||
values: {
|
||
currentYear: (/* @__PURE__ */ new Date()).getFullYear()
|
||
}
|
||
}
|
||
}
|
||
},
|
||
{
|
||
key: "datetime",
|
||
value: "datetime",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.date.type.datetime"),
|
||
defaultMessage: "datetime (ex: 01/01/{currentYear} 00:00 AM)",
|
||
values: {
|
||
currentYear: (/* @__PURE__ */ new Date()).getFullYear()
|
||
}
|
||
}
|
||
}
|
||
},
|
||
{
|
||
key: "time",
|
||
value: "time",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.date.type.time"),
|
||
defaultMessage: "time (ex: 00:00 AM)"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
enumeration() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
name: "enum",
|
||
type: "textarea-enum",
|
||
size: 6,
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.enumeration.rules"),
|
||
defaultMessage: "Values (one line per value)"
|
||
},
|
||
placeholder: {
|
||
id: getTrad("form.attribute.item.enumeration.placeholder"),
|
||
defaultMessage: "Ex:\nmorning\nnoon\nevening"
|
||
},
|
||
validations: {
|
||
required: true
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
media() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
intlLabel: {
|
||
id: "global.type",
|
||
defaultMessage: "Type"
|
||
},
|
||
name: "multiple",
|
||
size: 12,
|
||
type: "boolean-radio-group",
|
||
radios: [
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.media.option.multiple"),
|
||
defaultMessage: "Multiple media"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.media.option.multiple.description"),
|
||
defaultMessage: "Best for sliders, carousels or multiple files download"
|
||
},
|
||
value: true
|
||
},
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.media.option.single"),
|
||
defaultMessage: "Single media"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.media.option.single.description"),
|
||
defaultMessage: "Best for avatar, profile picture or cover"
|
||
},
|
||
value: false
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
number() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField,
|
||
{
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.number.type"),
|
||
defaultMessage: "Number format"
|
||
},
|
||
name: "type",
|
||
type: "select-number",
|
||
options: [
|
||
{
|
||
key: "__null_reset_value__",
|
||
value: "",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: "components.InputSelect.option.placeholder",
|
||
defaultMessage: "Choose here"
|
||
},
|
||
hidden: true
|
||
}
|
||
},
|
||
{
|
||
key: "integer",
|
||
value: "integer",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.number.type.integer"),
|
||
defaultMessage: "integer (ex: 10)"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
key: "biginteger",
|
||
value: "biginteger",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.number.type.biginteger"),
|
||
defaultMessage: "biginteger (ex: 123456789)"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
key: "decimal",
|
||
value: "decimal",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.number.type.decimal"),
|
||
defaultMessage: "decimal (ex: 2.22)"
|
||
}
|
||
}
|
||
},
|
||
{
|
||
key: "float",
|
||
value: "float",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: getTrad("form.attribute.item.number.type.float"),
|
||
defaultMessage: "decimal (ex: 3.3333333)"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
relation() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
intlLabel: {
|
||
id: "FIXME",
|
||
defaultMessage: "FIXME"
|
||
},
|
||
name: "relation",
|
||
size: 12,
|
||
type: "relation"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
string() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
intlLabel: {
|
||
id: "global.type",
|
||
defaultMessage: "Type"
|
||
},
|
||
name: "type",
|
||
size: 12,
|
||
type: "radio-group",
|
||
radios: [
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.text.option.short-text"),
|
||
defaultMessage: "Sort text"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.text.option.short-text.description"),
|
||
defaultMessage: "Best for titles, names, links (URL). It also enables exact search on the field."
|
||
},
|
||
value: "string"
|
||
},
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.text.option.long-text"),
|
||
defaultMessage: "Long text"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.text.option.long-text.description"),
|
||
defaultMessage: "Best for descriptions, biography. Exact search is disabled."
|
||
},
|
||
value: "text"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
text() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
intlLabel: {
|
||
id: "global.type",
|
||
defaultMessage: "Type"
|
||
},
|
||
name: "type",
|
||
size: 12,
|
||
type: "radio-group",
|
||
radios: [
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.text.option.short-text"),
|
||
defaultMessage: "Sort text"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.text.option.short-text.description"),
|
||
defaultMessage: "Best for titles, names, links (URL). It also enables exact search on the field."
|
||
},
|
||
value: "string"
|
||
},
|
||
{
|
||
title: {
|
||
id: getTrad("form.attribute.text.option.long-text"),
|
||
defaultMessage: "Long text"
|
||
},
|
||
description: {
|
||
id: getTrad("form.attribute.text.option.long-text.description"),
|
||
defaultMessage: "Best for descriptions, biography. Exact search is disabled."
|
||
},
|
||
value: "text"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
uid(_data, step, attributes) {
|
||
const options2 = attributes.filter(({ type }) => [
|
||
"string",
|
||
"text"
|
||
].includes(type)).map(({ name }) => ({
|
||
key: name,
|
||
value: name,
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: `${name}.no-override`,
|
||
defaultMessage: name
|
||
}
|
||
}
|
||
}));
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
...nameField,
|
||
placeholder: {
|
||
id: getTrad("modalForm.attribute.form.base.name.placeholder"),
|
||
defaultMessage: "e.g. slug, seoUrl, canonicalUrl"
|
||
}
|
||
},
|
||
{
|
||
intlLabel: {
|
||
id: getTrad("modalForm.attribute.target-field"),
|
||
defaultMessage: "Attached field"
|
||
},
|
||
name: "targetField",
|
||
type: "select",
|
||
options: [
|
||
{
|
||
key: "__null_reset_value__",
|
||
value: "",
|
||
metadatas: {
|
||
intlLabel: {
|
||
id: "global.none",
|
||
defaultMessage: "None"
|
||
}
|
||
}
|
||
},
|
||
...options2
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/attributes/form.mjs
|
||
var attributesForm = {
|
||
advanced: advancedForm,
|
||
base: baseForm
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/attributes/types.mjs
|
||
var import_uniq = __toESM(require_uniq(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/utils/toRegressedEnumValue.mjs
|
||
var import_slugify = __toESM(require_slugify(), 1);
|
||
var toRegressedEnumValue = (value) => {
|
||
if (!value) {
|
||
return "";
|
||
}
|
||
return (0, import_slugify.default)(value, {
|
||
decamelize: false,
|
||
lowercase: false,
|
||
separator: "_"
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/attributes/validation/common.mjs
|
||
var import_fp = __toESM(require_fp(), 1);
|
||
var import_toNumber = __toESM(require_toNumber(), 1);
|
||
var NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;
|
||
var alreadyUsedAttributeNames = (usedNames) => {
|
||
return {
|
||
name: "attributeNameAlreadyUsed",
|
||
message: errorsTrads.unique.id,
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp.snakeCase)(value);
|
||
return !usedNames.some((existingKey) => {
|
||
return (0, import_fp.snakeCase)(existingKey) === snakeCaseKey;
|
||
});
|
||
}
|
||
};
|
||
};
|
||
var isNameAllowed = (reservedNames) => {
|
||
return {
|
||
name: "forbiddenAttributeName",
|
||
message: getTrad("error.attributeName.reserved-name"),
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp.snakeCase)(value);
|
||
return !reservedNames.some((existingKey) => {
|
||
return (0, import_fp.snakeCase)(existingKey) === snakeCaseKey;
|
||
});
|
||
}
|
||
};
|
||
};
|
||
var validators = {
|
||
default: () => create2().nullable(),
|
||
max: () => create3().integer().nullable(),
|
||
min: () => create3().integer().when("max", (max, schema) => {
|
||
if (max) {
|
||
return schema.max(max, getTrad("error.validation.minSupMax"));
|
||
}
|
||
return schema;
|
||
}).nullable(),
|
||
maxLength: () => create3().integer().positive(getTrad("error.validation.positive")).nullable(),
|
||
minLength: () => create3().integer().min(1).when("maxLength", (maxLength, schema) => {
|
||
if (maxLength) {
|
||
return schema.max(maxLength, getTrad("error.validation.minSupMax"));
|
||
}
|
||
return schema;
|
||
}).nullable(),
|
||
name(usedNames, reservedNames) {
|
||
return create2().test(alreadyUsedAttributeNames(usedNames)).test(isNameAllowed(reservedNames)).matches(NAME_REGEX, errorsTrads.regex.id).required(errorsTrads.required.id);
|
||
},
|
||
required: () => create(),
|
||
type: () => create2().required(errorsTrads.required.id),
|
||
unique: () => create().nullable()
|
||
};
|
||
var createTextShape = (usedAttributeNames, reservedNames) => {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
default: validators.default(),
|
||
unique: validators.unique(),
|
||
required: validators.required(),
|
||
maxLength: validators.maxLength(),
|
||
minLength: validators.minLength(),
|
||
regex: create2().test({
|
||
name: "isValidRegExpPattern",
|
||
message: getTrad("error.validation.regex"),
|
||
test(value) {
|
||
try {
|
||
return new RegExp(value || "") !== null;
|
||
} catch (e) {
|
||
return false;
|
||
}
|
||
}
|
||
}).nullable()
|
||
};
|
||
return shape;
|
||
};
|
||
var isMinSuperiorThanMax = () => ({
|
||
name: "isMinSuperiorThanMax",
|
||
message: getTrad("error.validation.minSupMax"),
|
||
test(min) {
|
||
if (!min) {
|
||
return true;
|
||
}
|
||
const { max } = this.parent;
|
||
if (!max) {
|
||
return true;
|
||
}
|
||
if (Number.isNaN((0, import_toNumber.default)(min))) {
|
||
return true;
|
||
}
|
||
return (0, import_toNumber.default)(max) >= (0, import_toNumber.default)(min);
|
||
}
|
||
});
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/attributes/types.mjs
|
||
var attributeTypes = {
|
||
date(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
datetime(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
time(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
default(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
biginteger(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
default: create2().nullable().matches(/^-?\d*$/),
|
||
unique: validators.unique(),
|
||
required: validators.required(),
|
||
max: create2().nullable().matches(/^-?\d*$/, errorsTrads.regex.id),
|
||
min: create2().nullable().test(isMinSuperiorThanMax()).matches(/^-?\d*$/, errorsTrads.regex.id)
|
||
};
|
||
return create4(shape);
|
||
},
|
||
boolean(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
default: create().nullable(),
|
||
required: validators.required(),
|
||
unique: validators.unique()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
component(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
required: validators.required(),
|
||
max: validators.max(),
|
||
min: validators.min(),
|
||
component: create2().required(errorsTrads.required.id)
|
||
};
|
||
return create4(shape);
|
||
},
|
||
decimal(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
default: create3(),
|
||
required: validators.required(),
|
||
max: create3(),
|
||
min: create3().test(isMinSuperiorThanMax())
|
||
};
|
||
return create4(shape);
|
||
},
|
||
dynamiczone(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
required: validators.required(),
|
||
max: validators.max(),
|
||
min: validators.min()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
email(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
default: create2().email().nullable(),
|
||
unique: validators.unique(),
|
||
required: validators.required(),
|
||
maxLength: validators.maxLength(),
|
||
minLength: validators.minLength()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
enumeration(usedAttributeNames, reservedNames) {
|
||
const GRAPHQL_ENUM_REGEX = /^[_A-Za-z][_0-9A-Za-z]*$/;
|
||
const shape = {
|
||
name: create2().test(alreadyUsedAttributeNames(usedAttributeNames)).test(isNameAllowed(reservedNames)).matches(GRAPHQL_ENUM_REGEX, errorsTrads.regex.id).required(errorsTrads.required.id),
|
||
type: validators.type(),
|
||
default: validators.default(),
|
||
unique: validators.unique(),
|
||
required: validators.required(),
|
||
enum: create5().of(create2()).min(1, errorsTrads.min.id).test({
|
||
name: "areEnumValuesUnique",
|
||
message: getTrad("error.validation.enum-duplicate"),
|
||
test(values) {
|
||
if (!values) {
|
||
return false;
|
||
}
|
||
const duplicates = (0, import_uniq.default)(values.map(toRegressedEnumValue).filter((value, index, values2) => values2.indexOf(value) !== index));
|
||
return !duplicates.length;
|
||
}
|
||
}).test({
|
||
name: "doesNotHaveEmptyValues",
|
||
message: getTrad("error.validation.enum-empty-string"),
|
||
test: (values) => {
|
||
if (!values) {
|
||
return false;
|
||
}
|
||
return !values.map(toRegressedEnumValue).some((val) => val === "");
|
||
}
|
||
}).test({
|
||
name: "doesMatchRegex",
|
||
message: getTrad("error.validation.enum-regex"),
|
||
test: (values) => {
|
||
if (!values) {
|
||
return false;
|
||
}
|
||
return values.map(toRegressedEnumValue).every((value) => GRAPHQL_ENUM_REGEX.test(value));
|
||
}
|
||
}),
|
||
enumName: create2().nullable()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
float(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
required: validators.required(),
|
||
default: create3(),
|
||
max: create3(),
|
||
min: create3().test(isMinSuperiorThanMax())
|
||
};
|
||
return create4(shape);
|
||
},
|
||
integer(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
default: create3().integer(),
|
||
unique: validators.unique(),
|
||
required: validators.required(),
|
||
max: validators.max(),
|
||
min: validators.min()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
json(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
required: validators.required(),
|
||
unique: validators.unique()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
media(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
multiple: create(),
|
||
required: validators.required(),
|
||
allowedTypes: create5().of(create2().oneOf([
|
||
"images",
|
||
"videos",
|
||
"files",
|
||
"audios"
|
||
])).min(1).nullable()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
password(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
default: validators.default(),
|
||
unique: validators.unique(),
|
||
required: validators.required(),
|
||
maxLength: validators.maxLength(),
|
||
minLength: validators.minLength()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
relation(usedAttributeNames, reservedNames, alreadyTakenTargetAttributes, { initialData, modifiedData }) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
target: create2().required(errorsTrads.required.id),
|
||
relation: create2().required(),
|
||
type: create2().required(),
|
||
targetAttribute: create6(() => {
|
||
const relationType = getRelationType(modifiedData.relation, modifiedData.targetAttribute);
|
||
if (relationType === "oneWay" || relationType === "manyWay") {
|
||
return create2().nullable();
|
||
}
|
||
const schema = create2().test(isNameAllowed(reservedNames));
|
||
const initialForbiddenName = [
|
||
...alreadyTakenTargetAttributes.map(({ name }) => name),
|
||
modifiedData.name
|
||
];
|
||
const forbiddenTargetAttributeName = initialForbiddenName.filter((val) => val !== initialData.targetAttribute);
|
||
return schema.matches(NAME_REGEX, errorsTrads.regex.id).test({
|
||
name: "forbiddenTargetAttributeName",
|
||
message: getTrad("error.validation.relation.targetAttribute-taken"),
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
return !forbiddenTargetAttributeName.includes(value);
|
||
}
|
||
}).required(errorsTrads.required.id);
|
||
})
|
||
};
|
||
return create4(shape);
|
||
},
|
||
richtext(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
default: validators.default(),
|
||
unique: validators.unique(),
|
||
required: validators.required(),
|
||
maxLength: validators.maxLength(),
|
||
minLength: validators.minLength()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
blocks(usedAttributeNames, reservedNames) {
|
||
const shape = {
|
||
name: validators.name(usedAttributeNames, reservedNames),
|
||
type: validators.type(),
|
||
default: validators.default(),
|
||
unique: validators.unique(),
|
||
required: validators.required(),
|
||
maxLength: validators.maxLength(),
|
||
minLength: validators.minLength()
|
||
};
|
||
return create4(shape);
|
||
},
|
||
string(usedAttributeNames, reservedNames) {
|
||
const shape = createTextShape(usedAttributeNames, reservedNames);
|
||
return create4(shape);
|
||
},
|
||
text(usedAttributeNames, reservedNames) {
|
||
const shape = createTextShape(usedAttributeNames, reservedNames);
|
||
return create4(shape);
|
||
},
|
||
uid(usedAttributeNames, reservedNames) {
|
||
const shape = createTextShape(usedAttributeNames, reservedNames);
|
||
return create4(shape);
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/category/regex.mjs
|
||
var CATEGORY_NAME_REGEX = /^[A-Za-z][-_0-9A-Za-z]*$/;
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/category/createCategorySchema.mjs
|
||
var createCategorySchema = (usedCategoryNames) => {
|
||
const shape = {
|
||
name: create2().matches(CATEGORY_NAME_REGEX, errorsTrads.regex.id).test({
|
||
name: "nameNotAllowed",
|
||
message: errorsTrads.unique.id,
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
return !usedCategoryNames.includes(value == null ? void 0 : value.toLowerCase());
|
||
}
|
||
}).required(errorsTrads.required.id)
|
||
};
|
||
return create4(shape);
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/category/form.mjs
|
||
var categoryForm = {
|
||
base: {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
autoFocus: true,
|
||
name: "name",
|
||
type: "text",
|
||
intlLabel: {
|
||
id: "global.name",
|
||
defaultMessage: "Name"
|
||
},
|
||
// validations: {
|
||
// required: true,
|
||
// },
|
||
description: {
|
||
id: getTrad("modalForm.editCategory.base.name.description"),
|
||
defaultMessage: "No space is allowed for the name of the category"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/component/createComponentSchema.mjs
|
||
var import_fp2 = __toESM(require_fp(), 1);
|
||
var createComponentSchema = (usedComponentNames, reservedNames, category, takenCollectionNames, currentCollectionName) => {
|
||
const shape = {
|
||
displayName: create2().test({
|
||
name: "nameAlreadyUsed",
|
||
message: errorsTrads.unique.id,
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const name = createComponentUid(value, category);
|
||
const snakeCaseKey = (0, import_fp2.snakeCase)(name);
|
||
const snakeCaseCollectionName = (0, import_fp2.snakeCase)(currentCollectionName);
|
||
return usedComponentNames.every((reserved) => {
|
||
return (0, import_fp2.snakeCase)(reserved) !== snakeCaseKey;
|
||
}) && takenCollectionNames.every((collectionName) => (0, import_fp2.snakeCase)(collectionName) !== snakeCaseCollectionName);
|
||
}
|
||
}).test({
|
||
name: "nameNotAllowed",
|
||
message: getTrad("error.contentTypeName.reserved-name"),
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp2.snakeCase)(value);
|
||
return reservedNames.every((reserved) => {
|
||
return (0, import_fp2.snakeCase)(reserved) !== snakeCaseKey;
|
||
});
|
||
}
|
||
}).required(errorsTrads.required.id),
|
||
category: create2().matches(CATEGORY_NAME_REGEX, errorsTrads.regex.id).required(errorsTrads.required.id),
|
||
icon: create2()
|
||
};
|
||
return create4(shape);
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/contentType/contentTypeForm.mjs
|
||
var nameField2 = {
|
||
name: "displayName",
|
||
type: "text",
|
||
intlLabel: {
|
||
id: getTrad("contentType.displayName.label"),
|
||
defaultMessage: "Display name"
|
||
}
|
||
};
|
||
var contentTypeForm = {
|
||
advanced: {
|
||
default() {
|
||
return {
|
||
sections: [
|
||
{
|
||
items: [
|
||
{
|
||
intlLabel: {
|
||
id: getTrad("contentType.draftAndPublish.label"),
|
||
defaultMessage: "Draft & publish"
|
||
},
|
||
description: {
|
||
id: getTrad("contentType.draftAndPublish.description"),
|
||
defaultMessage: "Allows writing a draft version of an entry, before it is published"
|
||
},
|
||
name: "draftAndPublish",
|
||
type: "toggle-draft-publish",
|
||
validations: {}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
}
|
||
},
|
||
base: {
|
||
create() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField2,
|
||
{
|
||
description: {
|
||
id: getTrad("contentType.apiId-singular.description"),
|
||
defaultMessage: "Used to generate the API routes and databases tables/collections"
|
||
},
|
||
intlLabel: {
|
||
id: getTrad("contentType.apiId-singular.label"),
|
||
defaultMessage: "API ID (Singular)"
|
||
},
|
||
name: "singularName",
|
||
type: "text-singular"
|
||
},
|
||
{
|
||
type: "pushRight",
|
||
size: 6,
|
||
intlLabel: {
|
||
id: "",
|
||
defaultMessage: ""
|
||
},
|
||
name: "pushRight"
|
||
},
|
||
{
|
||
description: {
|
||
id: getTrad("contentType.apiId-plural.description"),
|
||
defaultMessage: "Pluralized API ID"
|
||
},
|
||
intlLabel: {
|
||
id: getTrad("contentType.apiId-plural.label"),
|
||
defaultMessage: "API ID (Plural)"
|
||
},
|
||
name: "pluralName",
|
||
type: "text-plural"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
},
|
||
edit() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField2,
|
||
{
|
||
disabled: true,
|
||
description: {
|
||
id: getTrad("contentType.apiId-singular.description"),
|
||
defaultMessage: "Used to generate the API routes and databases tables/collections"
|
||
},
|
||
intlLabel: {
|
||
id: getTrad("contentType.apiId-singular.label"),
|
||
defaultMessage: "API ID (Singular)"
|
||
},
|
||
name: "singularName",
|
||
type: "text"
|
||
},
|
||
{
|
||
type: "pushRight",
|
||
size: 6,
|
||
intlLabel: {
|
||
id: "",
|
||
defaultMessage: ""
|
||
},
|
||
name: "pushRight"
|
||
},
|
||
{
|
||
disabled: true,
|
||
description: {
|
||
id: getTrad("contentType.apiId-plural.description"),
|
||
defaultMessage: "Pluralized API ID"
|
||
},
|
||
intlLabel: {
|
||
id: getTrad("contentType.apiId-plural.label"),
|
||
defaultMessage: "API ID (Plural)"
|
||
},
|
||
name: "pluralName",
|
||
type: "text"
|
||
},
|
||
{
|
||
intlLabel: {
|
||
id: "global.type",
|
||
defaultMessage: "Type"
|
||
},
|
||
name: "kind",
|
||
type: "content-type-radio-group",
|
||
size: 12,
|
||
radios: [
|
||
{
|
||
title: {
|
||
id: getTrad("form.button.collection-type.name"),
|
||
defaultMessage: "Collection Type"
|
||
},
|
||
description: {
|
||
id: getTrad("form.button.collection-type.description"),
|
||
defaultMessage: "Best for multiple instances like articles, products, comments, etc."
|
||
},
|
||
value: "collectionType"
|
||
},
|
||
{
|
||
title: {
|
||
id: getTrad("form.button.single-type.name"),
|
||
defaultMessage: "Single Type"
|
||
},
|
||
description: {
|
||
id: getTrad("form.button.single-type.description"),
|
||
defaultMessage: "Best for single instance like about us, homepage, etc."
|
||
},
|
||
value: "singleType"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
}
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/contentType/createContentTypeSchema.mjs
|
||
var import_fp3 = __toESM(require_fp(), 1);
|
||
var createContentTypeSchema = ({ usedContentTypeNames = [], reservedModels = [], singularNames = [], pluralNames = [], collectionNames = [] }) => {
|
||
const shape = {
|
||
displayName: create2().test({
|
||
name: "nameAlreadyUsed",
|
||
message: errorsTrads.unique.id,
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const name = createUid(value);
|
||
const snakeCaseKey = (0, import_fp3.snakeCase)(name);
|
||
return !usedContentTypeNames.some((value2) => {
|
||
return (0, import_fp3.snakeCase)(value2) === snakeCaseKey;
|
||
});
|
||
}
|
||
}).test({
|
||
name: "nameNotAllowed",
|
||
message: getTrad("error.contentTypeName.reserved-name"),
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp3.snakeCase)(value);
|
||
return !reservedModels.some((key) => {
|
||
return (0, import_fp3.snakeCase)(key) === snakeCaseKey;
|
||
});
|
||
}
|
||
}).required(errorsTrads.required.id),
|
||
pluralName: create2().test({
|
||
name: "pluralNameAlreadyUsed",
|
||
message: errorsTrads.unique.id,
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp3.snakeCase)(value);
|
||
return !pluralNames.some((key) => {
|
||
return (0, import_fp3.snakeCase)(key) === snakeCaseKey;
|
||
});
|
||
}
|
||
}).test({
|
||
name: "pluralNameAlreadyUsedAsSingular",
|
||
message: getTrad("error.contentType.pluralName-equals-singularName"),
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp3.snakeCase)(value);
|
||
return !singularNames.some((key) => {
|
||
return (0, import_fp3.snakeCase)(key) === snakeCaseKey;
|
||
});
|
||
}
|
||
}).test({
|
||
name: "pluralAndSingularAreUnique",
|
||
message: getTrad("error.contentType.pluralName-used"),
|
||
test(value, context) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
return (0, import_fp3.snakeCase)(context.parent.singularName) !== (0, import_fp3.snakeCase)(value);
|
||
}
|
||
}).test({
|
||
name: "pluralNameNotAllowed",
|
||
message: getTrad("error.contentTypeName.reserved-name"),
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp3.snakeCase)(value);
|
||
return !reservedModels.some((key) => {
|
||
return (0, import_fp3.snakeCase)(key) === snakeCaseKey;
|
||
});
|
||
}
|
||
}).test({
|
||
name: "pluralNameNotAlreadyUsedInCollectionName",
|
||
message: getTrad("error.contentType.pluralName-equals-collectionName"),
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp3.snakeCase)(value);
|
||
return !collectionNames.some((key) => {
|
||
return (0, import_fp3.snakeCase)(key) === snakeCaseKey;
|
||
});
|
||
}
|
||
}).required(errorsTrads.required.id),
|
||
singularName: create2().test({
|
||
name: "singularNameAlreadyUsed",
|
||
message: errorsTrads.unique.id,
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp3.snakeCase)(value);
|
||
return !singularNames.some((key) => {
|
||
return (0, import_fp3.snakeCase)(key) === snakeCaseKey;
|
||
});
|
||
}
|
||
}).test({
|
||
name: "singularNameAlreadyUsedAsPlural",
|
||
message: getTrad("error.contentType.singularName-equals-pluralName"),
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp3.snakeCase)(value);
|
||
return !pluralNames.some((key) => {
|
||
return (0, import_fp3.snakeCase)(key) === snakeCaseKey;
|
||
});
|
||
}
|
||
}).test({
|
||
name: "pluralAndSingularAreUnique",
|
||
message: getTrad("error.contentType.singularName-used"),
|
||
test(value, context) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
return (0, import_fp3.snakeCase)(context.parent.pluralName) !== (0, import_fp3.snakeCase)(value);
|
||
}
|
||
}).test({
|
||
name: "singularNameNotAllowed",
|
||
message: getTrad("error.contentTypeName.reserved-name"),
|
||
test(value) {
|
||
if (!value) {
|
||
return false;
|
||
}
|
||
const snakeCaseKey = (0, import_fp3.snakeCase)(value);
|
||
return !reservedModels.some((key) => {
|
||
return (0, import_fp3.snakeCase)(key) === snakeCaseKey;
|
||
});
|
||
}
|
||
}).required(errorsTrads.required.id),
|
||
draftAndPublish: create(),
|
||
kind: create2().oneOf([
|
||
"singleType",
|
||
"collectionType"
|
||
])
|
||
};
|
||
return create4(shape);
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/dynamiczoneForm.mjs
|
||
var dynamiczoneForm = {
|
||
advanced: {
|
||
default() {
|
||
return {
|
||
sections: componentForm.advanced()
|
||
};
|
||
}
|
||
},
|
||
base: {
|
||
createComponent() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
componentField
|
||
]
|
||
},
|
||
...componentForm.base("componentToCreate.")
|
||
]
|
||
};
|
||
},
|
||
default() {
|
||
return {
|
||
sections: [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
componentField
|
||
]
|
||
},
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
{
|
||
type: "pushRight",
|
||
size: 6,
|
||
intlLabel: {
|
||
id: "",
|
||
defaultMessage: ""
|
||
},
|
||
name: "pushRight"
|
||
},
|
||
{
|
||
name: "components",
|
||
type: "select-components",
|
||
intlLabel: {
|
||
id: getTrad("modalForm.attributes.select-components"),
|
||
defaultMessage: "Select the components"
|
||
},
|
||
isMultiple: true
|
||
}
|
||
]
|
||
}
|
||
]
|
||
};
|
||
}
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/forms/utils/addItemsToFormSection.mjs
|
||
var addItemsToFormSection = (formTypeOptions, sections) => {
|
||
formTypeOptions.forEach((item) => {
|
||
var _a;
|
||
if (!("sectionTitle" in item)) {
|
||
(_a = sections[0].items) == null ? void 0 : _a.push(item);
|
||
return;
|
||
}
|
||
sections.push(item);
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs
|
||
var import_fp4 = __toESM(require_fp(), 1);
|
||
var import_pluralize3 = __toESM(require_pluralize(), 1);
|
||
var createComponentCollectionName = (name, category) => {
|
||
return `components_${(0, import_fp4.snakeCase)(category)}_${(0, import_pluralize3.default)((0, import_fp4.snakeCase)(name))}`;
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs
|
||
var getUsedAttributeNames = (attributes, schemaData) => {
|
||
return attributes.filter(({ name }) => {
|
||
return name !== schemaData.initialData.name;
|
||
}).map(({ name }) => name);
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/forms/forms.mjs
|
||
var forms = {
|
||
customField: {
|
||
schema({ schemaAttributes, attributeType, customFieldValidator, reservedNames, schemaData, ctbFormsAPI }) {
|
||
const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);
|
||
let attributeShape;
|
||
if (attributeType === "relation") {
|
||
attributeShape = attributeTypes[attributeType](usedAttributeNames, reservedNames.attributes, [], {
|
||
initialData: {},
|
||
modifiedData: {}
|
||
});
|
||
} else {
|
||
attributeShape = attributeTypes[attributeType](usedAttributeNames, reservedNames.attributes);
|
||
}
|
||
return ctbFormsAPI.makeCustomFieldValidator(attributeShape, customFieldValidator, usedAttributeNames, reservedNames.attributes, schemaData);
|
||
},
|
||
form: {
|
||
base({ customField }) {
|
||
var _a;
|
||
const sections = [
|
||
{
|
||
sectionTitle: null,
|
||
items: [
|
||
nameField
|
||
]
|
||
}
|
||
];
|
||
if ((_a = customField.options) == null ? void 0 : _a.base) {
|
||
addItemsToFormSection(customField.options.base, sections);
|
||
}
|
||
return {
|
||
sections
|
||
};
|
||
},
|
||
advanced({ customField, data, step, extensions, ...rest }) {
|
||
var _a;
|
||
const sections = [
|
||
{
|
||
sectionTitle: null,
|
||
items: []
|
||
}
|
||
];
|
||
const injectedInputs = extensions.getAdvancedForm([
|
||
"attribute",
|
||
customField.type
|
||
], {
|
||
data,
|
||
type: customField.type,
|
||
step,
|
||
...rest
|
||
});
|
||
if ((_a = customField.options) == null ? void 0 : _a.advanced) {
|
||
addItemsToFormSection(customField.options.advanced, sections);
|
||
}
|
||
if (injectedInputs) {
|
||
const extendedSettings = {
|
||
sectionTitle: {
|
||
id: getTrad("modalForm.custom-fields.advanced.settings.extended"),
|
||
defaultMessage: "Extended settings"
|
||
},
|
||
items: injectedInputs
|
||
};
|
||
sections.push(extendedSettings);
|
||
}
|
||
return {
|
||
sections
|
||
};
|
||
}
|
||
}
|
||
},
|
||
attribute: {
|
||
schema(currentSchema, attributeType, reservedNames, alreadyTakenTargetContentTypeAttributes, options2, extensions) {
|
||
var _a;
|
||
const attributes = ((_a = currentSchema == null ? void 0 : currentSchema.schema) == null ? void 0 : _a.attributes) ?? [];
|
||
const usedAttributeNames = getUsedAttributeNames(attributes, options2);
|
||
try {
|
||
const attributeShape = attributeTypes[attributeType](usedAttributeNames, reservedNames.attributes, alreadyTakenTargetContentTypeAttributes, options2);
|
||
return extensions.makeValidator([
|
||
"attribute",
|
||
attributeType
|
||
], attributeShape, usedAttributeNames, reservedNames.attributes, alreadyTakenTargetContentTypeAttributes, options2);
|
||
} catch (err) {
|
||
console.error("Error yup build schema", err);
|
||
return attributeTypes.default(usedAttributeNames, reservedNames.attributes);
|
||
}
|
||
},
|
||
form: {
|
||
advanced({ data, type, step, extensions, ...rest }) {
|
||
try {
|
||
const baseForm2 = attributesForm.advanced[type](data, step).sections;
|
||
const itemsToAdd = extensions.getAdvancedForm([
|
||
"attribute",
|
||
type
|
||
], {
|
||
data,
|
||
type,
|
||
step,
|
||
...rest
|
||
});
|
||
const sections = baseForm2.reduce((acc, current) => {
|
||
if (current.sectionTitle === null) {
|
||
acc.push(current);
|
||
} else {
|
||
acc.push({
|
||
...current,
|
||
items: [
|
||
...current.items,
|
||
...itemsToAdd
|
||
]
|
||
});
|
||
}
|
||
return acc;
|
||
}, []);
|
||
return {
|
||
sections
|
||
};
|
||
} catch (err) {
|
||
console.error(err);
|
||
return {
|
||
sections: []
|
||
};
|
||
}
|
||
},
|
||
base({ data, type, step, attributes }) {
|
||
try {
|
||
return attributesForm.base[type](data, step, attributes);
|
||
} catch (err) {
|
||
return commonBaseForm;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
contentType: {
|
||
schema(alreadyTakenNames, isEditing, ctUid, reservedNames, extensions, contentTypes) {
|
||
const singularNames = Object.values(contentTypes).map((contentType) => {
|
||
return contentType.schema.singularName;
|
||
});
|
||
const pluralNames = Object.values(contentTypes).map((contentType) => {
|
||
var _a;
|
||
return ((_a = contentType == null ? void 0 : contentType.schema) == null ? void 0 : _a.pluralName) ?? "";
|
||
});
|
||
const takenNames = isEditing ? alreadyTakenNames.filter((uid) => uid !== ctUid) : alreadyTakenNames;
|
||
const takenSingularNames = isEditing ? singularNames.filter((singName) => {
|
||
const { schema } = contentTypes[ctUid];
|
||
return schema.singularName !== singName;
|
||
}) : singularNames;
|
||
const takenPluralNames = isEditing ? pluralNames.filter((pluralName) => {
|
||
const { schema } = contentTypes[ctUid];
|
||
return schema.pluralName !== pluralName;
|
||
}) : pluralNames;
|
||
const collectionNames = Object.values(contentTypes).map((contentType) => {
|
||
var _a;
|
||
return ((_a = contentType == null ? void 0 : contentType.schema) == null ? void 0 : _a.collectionName) ?? "";
|
||
});
|
||
const takenCollectionNames = isEditing ? collectionNames.filter((collectionName) => {
|
||
const { schema } = contentTypes[ctUid];
|
||
const currentCollectionName = schema.collectionName;
|
||
return collectionName !== currentCollectionName;
|
||
}) : collectionNames;
|
||
const contentTypeShape = createContentTypeSchema({
|
||
usedContentTypeNames: takenNames,
|
||
reservedModels: reservedNames.models,
|
||
singularNames: takenSingularNames,
|
||
pluralNames: takenPluralNames,
|
||
collectionNames: takenCollectionNames
|
||
});
|
||
return extensions.makeValidator([
|
||
"contentType"
|
||
], contentTypeShape, takenNames, reservedNames.models, takenSingularNames, takenPluralNames);
|
||
},
|
||
form: {
|
||
base({ actionType }) {
|
||
if (actionType === "create") {
|
||
return contentTypeForm.base.create();
|
||
}
|
||
return contentTypeForm.base.edit();
|
||
},
|
||
advanced({ extensions }) {
|
||
const baseForm2 = contentTypeForm.advanced.default().sections.map((section) => section.items).flat();
|
||
const itemsToAdd = extensions.getAdvancedForm([
|
||
"contentType"
|
||
]);
|
||
return {
|
||
sections: [
|
||
{
|
||
items: [
|
||
...baseForm2,
|
||
...itemsToAdd
|
||
]
|
||
}
|
||
]
|
||
};
|
||
}
|
||
}
|
||
},
|
||
component: {
|
||
schema(alreadyTakenAttributes, componentCategory, reservedNames, isEditing = false, components, componentDisplayName, compoUid = null) {
|
||
const takenNames = isEditing ? alreadyTakenAttributes.filter((uid) => uid !== compoUid) : alreadyTakenAttributes;
|
||
const collectionNames = Object.values(components).map((component) => {
|
||
var _a;
|
||
return (_a = component == null ? void 0 : component.schema) == null ? void 0 : _a.collectionName;
|
||
});
|
||
const currentCollectionName = createComponentCollectionName(componentDisplayName, componentCategory);
|
||
const takenCollectionNames = isEditing ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName) : collectionNames;
|
||
return createComponentSchema(takenNames, reservedNames.models, componentCategory, takenCollectionNames, currentCollectionName);
|
||
},
|
||
form: {
|
||
advanced() {
|
||
return {
|
||
sections: componentForm.advanced()
|
||
};
|
||
},
|
||
base() {
|
||
return {
|
||
sections: componentForm.base()
|
||
};
|
||
}
|
||
}
|
||
},
|
||
addComponentToDynamicZone: {
|
||
form: {
|
||
advanced() {
|
||
return dynamiczoneForm.advanced.default();
|
||
},
|
||
base({ data }) {
|
||
const isCreatingComponent = (data == null ? void 0 : data.createComponent) ?? false;
|
||
if (isCreatingComponent) {
|
||
return dynamiczoneForm.base.createComponent();
|
||
}
|
||
return dynamiczoneForm.base.default();
|
||
}
|
||
}
|
||
},
|
||
editCategory: {
|
||
schema(allCategories, initialData) {
|
||
const allowedCategories = allCategories.filter((cat) => cat !== initialData.name).map((cat) => cat.toLowerCase());
|
||
return createCategorySchema(allowedCategories);
|
||
},
|
||
form: {
|
||
advanced: () => ({
|
||
sections: []
|
||
}),
|
||
base() {
|
||
return categoryForm.base;
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/selectors.mjs
|
||
var formModalDomain = () => (state) => state[`${pluginId}_formModal`] || initialState2;
|
||
var makeSelectFormModal = () => createSelector(formModalDomain(), (substate) => {
|
||
return substate;
|
||
});
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/utils/canEditContentType.mjs
|
||
var import_get3 = __toESM(require_get(), 1);
|
||
var canEditContentType = (data, modifiedData) => {
|
||
const kind = (0, import_get3.default)(data, [
|
||
"contentType",
|
||
"schema",
|
||
"kind"
|
||
], "");
|
||
if (kind === "singleType" || kind === modifiedData.kind) {
|
||
return true;
|
||
}
|
||
const contentTypeAttributes = (0, import_get3.default)(data, [
|
||
"contentType",
|
||
"schema",
|
||
"attributes"
|
||
], []);
|
||
const relationAttributes = contentTypeAttributes.filter(({ relation, type, targetAttribute }) => {
|
||
const relationType = getRelationType(relation, targetAttribute);
|
||
return type === "relation" && ![
|
||
"oneWay",
|
||
"manyWay"
|
||
].includes(relationType || "");
|
||
});
|
||
return relationAttributes.length === 0;
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/utils/getAttributesToDisplay.mjs
|
||
var getAttributesToDisplay = (dataTarget = "", targetUid, nestedComponents) => {
|
||
const defaultAttributes = [
|
||
"text",
|
||
"boolean",
|
||
"blocks",
|
||
"json",
|
||
"number",
|
||
"email",
|
||
"date",
|
||
"password",
|
||
"media",
|
||
"enumeration",
|
||
"relation",
|
||
"richtext"
|
||
];
|
||
const isPickingAttributeForAContentType = dataTarget === "contentType";
|
||
if (isPickingAttributeForAContentType) {
|
||
return [
|
||
// Insert UID before the last item (richtext)
|
||
[
|
||
...defaultAttributes.slice(0, -1),
|
||
"uid",
|
||
...defaultAttributes.slice(-1)
|
||
],
|
||
[
|
||
"component",
|
||
"dynamiczone"
|
||
]
|
||
];
|
||
}
|
||
if (dataTarget) {
|
||
const componentDepth = getComponentDepth(targetUid, nestedComponents);
|
||
const isNestedInAnotherComponent = componentDepth >= MAX_COMPONENT_DEPTH;
|
||
const canAddComponentInAnotherComponent = !isPickingAttributeForAContentType && !isNestedInAnotherComponent;
|
||
if (canAddComponentInAnotherComponent) {
|
||
return [
|
||
defaultAttributes,
|
||
[
|
||
"component"
|
||
]
|
||
];
|
||
}
|
||
}
|
||
return [
|
||
defaultAttributes
|
||
];
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/utils/getFormInputNames.mjs
|
||
var getFormInputNames = (form) => form.reduce((acc, current) => {
|
||
const names = current.items.reduce((acc2, current2) => {
|
||
if (current2.name) {
|
||
acc2.push(current2.name);
|
||
}
|
||
return acc2;
|
||
}, []);
|
||
return [
|
||
...acc,
|
||
...names
|
||
];
|
||
}, []);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModal/FormModal.mjs
|
||
var FormComponent = dt.form`
|
||
overflow: auto;
|
||
`;
|
||
var FormModal = () => {
|
||
const { onCloseModal, onNavigateToChooseAttributeModal, onNavigateToAddCompoToDZModal, onNavigateToCreateComponentStep2, actionType, attributeName, attributeType, customFieldUid, categoryName, dynamicZoneTarget, forTarget, modalType, isOpen, kind, step, targetUid, showBackLink, activeTab, setActiveTab } = useFormModalNavigation();
|
||
const getPlugin = useStrapiApp("FormModal", (state) => state.getPlugin);
|
||
const getCustomField = useStrapiApp("FormModal", (state) => state.customFields.get);
|
||
const customField = getCustomField(customFieldUid);
|
||
const formModalSelector = React2.useMemo(makeSelectFormModal, []);
|
||
const dispatch = useDispatch();
|
||
const { toggleNotification } = useNotification();
|
||
const reducerState = useSelector((state) => formModalSelector(state), shallowEqual);
|
||
const navigate = useNavigate();
|
||
const { trackUsage } = useTracking();
|
||
const { formatMessage } = useIntl();
|
||
const ctbPlugin = getPlugin(pluginId);
|
||
const ctbFormsAPI = ctbPlugin == null ? void 0 : ctbPlugin.apis.forms;
|
||
const inputsFromPlugins = ctbFormsAPI.components.inputs;
|
||
const { addAttribute, addCustomFieldAttribute, addCreatedComponentToDynamicZone, allComponentsCategories, changeDynamicZoneComponents, contentTypes, components, createSchema, deleteCategory, deleteData, editCategory, editCustomFieldAttribute, submitData, modifiedData: allDataSchema, nestedComponents, setModifiedData, sortedContentTypesList, updateSchema, reservedNames } = useDataManager();
|
||
const { componentToCreate, formErrors, initialData, isCreatingComponentWhileAddingAField, modifiedData } = reducerState;
|
||
const pathToSchema = forTarget === "contentType" || forTarget === "component" ? [
|
||
forTarget
|
||
] : [
|
||
forTarget,
|
||
targetUid
|
||
];
|
||
React2.useEffect(() => {
|
||
if (isOpen) {
|
||
const collectionTypesForRelation = sortedContentTypesList.filter(isAllowedContentTypesForRelations);
|
||
if (modalType === "editCategory") {
|
||
setModifiedData();
|
||
}
|
||
if (actionType === "edit" && modalType === "attribute" && forTarget === "contentType") {
|
||
trackUsage("willEditFieldOfContentType");
|
||
}
|
||
const pathToAttributes = [
|
||
...pathToSchema,
|
||
"schema",
|
||
"attributes"
|
||
];
|
||
const foundDynamicZoneTarget = findAttribute((0, import_get4.default)(allDataSchema, pathToAttributes, []), dynamicZoneTarget) || null;
|
||
if (modalType === "editCategory" && actionType === "edit") {
|
||
dispatch(actions2.setDataToEdit({
|
||
data: {
|
||
name: categoryName
|
||
}
|
||
}));
|
||
}
|
||
if (modalType === "contentType" && actionType === "create") {
|
||
dispatch(actions2.setDataToEdit({
|
||
data: {
|
||
draftAndPublish: true
|
||
}
|
||
}));
|
||
}
|
||
if (modalType === "contentType" && actionType === "edit") {
|
||
const { displayName, draftAndPublish, kind: kind2, pluginOptions, pluralName, singularName } = (0, import_get4.default)(allDataSchema, [
|
||
...pathToSchema,
|
||
"schema"
|
||
], {
|
||
displayName: null,
|
||
pluginOptions: {},
|
||
singularName: null,
|
||
pluralName: null
|
||
});
|
||
dispatch(actions2.setDataToEdit({
|
||
data: {
|
||
displayName,
|
||
draftAndPublish,
|
||
kind: kind2,
|
||
pluginOptions,
|
||
pluralName,
|
||
singularName
|
||
}
|
||
}));
|
||
}
|
||
if (modalType === "component" && actionType === "edit") {
|
||
const data = (0, import_get4.default)(allDataSchema, pathToSchema, {});
|
||
dispatch(actions2.setDataToEdit({
|
||
data: {
|
||
displayName: data.schema.displayName,
|
||
category: data.category,
|
||
icon: data.schema.icon
|
||
}
|
||
}));
|
||
}
|
||
if (modalType === "addComponentToDynamicZone" && actionType === "edit") {
|
||
const attributeToEdit = {
|
||
...foundDynamicZoneTarget,
|
||
// We filter the available components
|
||
// Because this modal is only used for adding components
|
||
components: [],
|
||
name: dynamicZoneTarget,
|
||
createComponent: false,
|
||
componentToCreate: {
|
||
type: "component"
|
||
}
|
||
};
|
||
dispatch(actions2.setDynamicZoneDataSchema({
|
||
attributeToEdit
|
||
}));
|
||
}
|
||
if (attributeType) {
|
||
const attributeToEditNotFormatted = findAttribute((0, import_get4.default)(allDataSchema, pathToAttributes, []), attributeName);
|
||
const attributeToEdit = {
|
||
...attributeToEditNotFormatted,
|
||
name: attributeName
|
||
};
|
||
if (attributeType === "component" && actionType === "edit") {
|
||
if (!attributeToEdit.repeatable) {
|
||
(0, import_set.default)(attributeToEdit, "repeatable", false);
|
||
}
|
||
}
|
||
if (modalType === "customField") {
|
||
if (actionType === "edit") {
|
||
dispatch(actions2.setCustomFieldDataSchema({
|
||
isEditing: true,
|
||
modifiedDataToSetForEditing: attributeToEdit
|
||
}));
|
||
} else {
|
||
dispatch(actions2.setCustomFieldDataSchema({
|
||
customField,
|
||
isEditing: false,
|
||
modifiedDataToSetForEditing: attributeToEdit
|
||
}));
|
||
}
|
||
} else {
|
||
dispatch(actions2.setAttributeDataSchema({
|
||
attributeType,
|
||
nameToSetForRelation: (0, import_get4.default)(collectionTypesForRelation, [
|
||
"0",
|
||
"title"
|
||
], "error"),
|
||
targetUid: (0, import_get4.default)(collectionTypesForRelation, [
|
||
"0",
|
||
"uid"
|
||
], "error"),
|
||
isEditing: actionType === "edit",
|
||
modifiedDataToSetForEditing: attributeToEdit,
|
||
step
|
||
}));
|
||
}
|
||
}
|
||
} else {
|
||
dispatch(actions2.resetProps());
|
||
}
|
||
}, [
|
||
actionType,
|
||
attributeName,
|
||
attributeType,
|
||
categoryName,
|
||
dynamicZoneTarget,
|
||
forTarget,
|
||
isOpen,
|
||
modalType
|
||
]);
|
||
const isCreatingContentType = modalType === "contentType";
|
||
const isCreatingComponent = modalType === "component";
|
||
const isCreatingAttribute = modalType === "attribute";
|
||
const isCreatingCustomFieldAttribute = modalType === "customField";
|
||
const isComponentAttribute = attributeType === "component" && isCreatingAttribute;
|
||
const isCreating = actionType === "create";
|
||
const isCreatingComponentFromAView = (0, import_get4.default)(modifiedData, "createComponent", false) || isCreatingComponentWhileAddingAField;
|
||
const isInFirstComponentStep = step === "1";
|
||
const isEditingCategory = modalType === "editCategory";
|
||
const isPickingAttribute = modalType === "chooseAttribute";
|
||
const uid = createUid(modifiedData.displayName || "");
|
||
const attributes = (0, import_get4.default)(allDataSchema, [
|
||
...pathToSchema,
|
||
"schema",
|
||
"attributes"
|
||
], null);
|
||
const checkFormValidity = async () => {
|
||
var _a;
|
||
let schema;
|
||
const dataToValidate = isCreatingComponentFromAView && step === "1" ? (0, import_get4.default)(modifiedData, "componentToCreate", {}) : modifiedData;
|
||
if (isCreatingContentType) {
|
||
schema = forms.contentType.schema(
|
||
Object.keys(contentTypes),
|
||
actionType === "edit",
|
||
// currentUID
|
||
(0, import_get4.default)(allDataSchema, [
|
||
...pathToSchema,
|
||
"uid"
|
||
], null),
|
||
reservedNames,
|
||
ctbFormsAPI,
|
||
contentTypes
|
||
);
|
||
} else if (isCreatingComponent) {
|
||
schema = forms.component.schema(Object.keys(components), modifiedData.category || "", reservedNames, actionType === "edit", components, modifiedData.displayName || "", (0, import_get4.default)(allDataSchema, [
|
||
...pathToSchema,
|
||
"uid"
|
||
], null));
|
||
} else if (isCreatingCustomFieldAttribute) {
|
||
schema = forms.customField.schema({
|
||
schemaAttributes: (0, import_get4.default)(allDataSchema, [
|
||
...pathToSchema,
|
||
"schema",
|
||
"attributes"
|
||
], []),
|
||
attributeType: customField.type,
|
||
reservedNames,
|
||
schemaData: {
|
||
modifiedData,
|
||
initialData
|
||
},
|
||
ctbFormsAPI,
|
||
customFieldValidator: (_a = customField.options) == null ? void 0 : _a.validator
|
||
});
|
||
} else if (isComponentAttribute && isCreatingComponentFromAView && isInFirstComponentStep) {
|
||
schema = forms.component.schema(Object.keys(components), (0, import_get4.default)(modifiedData, "componentToCreate.category", ""), reservedNames, actionType === "edit", components, modifiedData.componentToCreate.displayName || "");
|
||
} else if (isCreatingAttribute && !isInFirstComponentStep) {
|
||
const type = attributeType === "relation" ? "relation" : modifiedData.type;
|
||
let alreadyTakenTargetContentTypeAttributes = [];
|
||
if (type === "relation") {
|
||
const targetContentTypeUID = (0, import_get4.default)(modifiedData, [
|
||
"target"
|
||
], null);
|
||
const targetContentTypeAttributes = (0, import_get4.default)(contentTypes, [
|
||
targetContentTypeUID,
|
||
"schema",
|
||
"attributes"
|
||
], []);
|
||
alreadyTakenTargetContentTypeAttributes = targetContentTypeAttributes.filter(({ name: attrName }) => {
|
||
if (actionType !== "edit") {
|
||
return true;
|
||
}
|
||
return attrName !== initialData.targetAttribute;
|
||
});
|
||
}
|
||
schema = forms.attribute.schema((0, import_get4.default)(allDataSchema, pathToSchema, {}), type, reservedNames, alreadyTakenTargetContentTypeAttributes, {
|
||
modifiedData,
|
||
initialData
|
||
}, ctbFormsAPI);
|
||
} else if (isEditingCategory) {
|
||
schema = forms.editCategory.schema(allComponentsCategories, initialData);
|
||
} else {
|
||
if (isInFirstComponentStep && isCreatingComponentFromAView) {
|
||
schema = forms.component.schema(Object.keys(components), (0, import_get4.default)(modifiedData, "componentToCreate.category", ""), reservedNames, actionType === "edit", components, modifiedData.componentToCreate.displayName || "");
|
||
} else {
|
||
return;
|
||
}
|
||
}
|
||
await schema.validate(dataToValidate, {
|
||
abortEarly: false
|
||
});
|
||
};
|
||
const handleChange = React2.useCallback(({ target: { name, value, type, ...rest } }) => {
|
||
const namesThatCanResetToNullValue = [
|
||
"enumName",
|
||
"max",
|
||
"min",
|
||
"maxLength",
|
||
"minLength",
|
||
"regex",
|
||
"default"
|
||
];
|
||
let val;
|
||
if (namesThatCanResetToNullValue.includes(name) && value === "") {
|
||
val = null;
|
||
} else {
|
||
val = value;
|
||
}
|
||
const clonedErrors = Object.assign({}, formErrors);
|
||
if (name === "max") {
|
||
delete clonedErrors.min;
|
||
}
|
||
if (name === "maxLength") {
|
||
delete clonedErrors.minLength;
|
||
}
|
||
delete clonedErrors[name];
|
||
dispatch(actions2.setErrors({
|
||
errors: clonedErrors
|
||
}));
|
||
dispatch(actions2.onChange({
|
||
keys: name.split("."),
|
||
value: val
|
||
}));
|
||
}, [
|
||
dispatch,
|
||
formErrors
|
||
]);
|
||
const handleSubmit = async (e, shouldContinue = isCreating) => {
|
||
e.preventDefault();
|
||
try {
|
||
await checkFormValidity();
|
||
sendButtonAddMoreFieldEvent(shouldContinue);
|
||
const ctTargetUid = forTarget === "components" ? targetUid : uid;
|
||
if (isCreatingContentType) {
|
||
if (isCreating) {
|
||
createSchema({
|
||
...modifiedData,
|
||
kind
|
||
}, modalType, uid);
|
||
navigate({
|
||
pathname: `/plugins/${pluginId}/content-types/${uid}`
|
||
});
|
||
onNavigateToChooseAttributeModal({
|
||
forTarget,
|
||
targetUid: ctTargetUid
|
||
});
|
||
} else {
|
||
if (canEditContentType(allDataSchema, modifiedData)) {
|
||
onCloseModal();
|
||
await submitData(modifiedData);
|
||
} else {
|
||
toggleNotification({
|
||
type: "danger",
|
||
message: formatMessage({
|
||
id: "notification.contentType.relations.conflict"
|
||
})
|
||
});
|
||
}
|
||
return;
|
||
}
|
||
} else if (modalType === "component") {
|
||
if (isCreating) {
|
||
const componentUid = createComponentUid(modifiedData.displayName, modifiedData.category);
|
||
const { category, ...rest } = modifiedData;
|
||
createSchema(rest, "component", componentUid, category);
|
||
navigate({
|
||
pathname: `/plugins/${pluginId}/component-categories/${category}/${componentUid}`
|
||
});
|
||
onNavigateToChooseAttributeModal({
|
||
forTarget,
|
||
targetUid: componentUid
|
||
});
|
||
} else {
|
||
updateSchema(modifiedData, modalType, targetUid);
|
||
onCloseModal();
|
||
return;
|
||
}
|
||
} else if (isEditingCategory) {
|
||
if ((0, import_toLower.default)(initialData.name) === (0, import_toLower.default)(modifiedData.name)) {
|
||
onCloseModal();
|
||
return;
|
||
}
|
||
editCategory(initialData.name, modifiedData);
|
||
return;
|
||
} else if (isCreatingCustomFieldAttribute) {
|
||
const customFieldAttributeUpdate = {
|
||
attributeToSet: {
|
||
...modifiedData,
|
||
customField: customFieldUid
|
||
},
|
||
forTarget,
|
||
targetUid,
|
||
initialAttribute: initialData
|
||
};
|
||
if (actionType === "edit") {
|
||
editCustomFieldAttribute(customFieldAttributeUpdate);
|
||
} else {
|
||
addCustomFieldAttribute(customFieldAttributeUpdate);
|
||
}
|
||
if (shouldContinue) {
|
||
onNavigateToChooseAttributeModal({
|
||
forTarget,
|
||
targetUid: ctTargetUid
|
||
});
|
||
} else {
|
||
onCloseModal();
|
||
}
|
||
return;
|
||
} else if (isCreatingAttribute && !isCreatingComponentFromAView) {
|
||
const isDynamicZoneAttribute = attributeType === "dynamiczone";
|
||
if (isDynamicZoneAttribute) {
|
||
addAttribute(modifiedData, forTarget, targetUid, actionType === "edit", initialData);
|
||
if (isCreating) {
|
||
dispatch(actions2.resetPropsAndSetTheFormForAddingACompoToADz());
|
||
setActiveTab("basic");
|
||
onNavigateToAddCompoToDZModal({
|
||
dynamicZoneTarget: modifiedData.name
|
||
});
|
||
} else {
|
||
onCloseModal();
|
||
}
|
||
return;
|
||
}
|
||
if (!isComponentAttribute) {
|
||
addAttribute(modifiedData, forTarget, targetUid, actionType === "edit", initialData);
|
||
if (shouldContinue) {
|
||
onNavigateToChooseAttributeModal({
|
||
forTarget,
|
||
targetUid: ctTargetUid
|
||
});
|
||
} else {
|
||
onCloseModal();
|
||
}
|
||
return;
|
||
}
|
||
if (isInFirstComponentStep) {
|
||
onNavigateToCreateComponentStep2();
|
||
dispatch(actions2.resetPropsAndSetFormForAddingAnExistingCompo({}));
|
||
return;
|
||
}
|
||
addAttribute(
|
||
modifiedData,
|
||
forTarget,
|
||
targetUid,
|
||
// This change the dispatched type
|
||
// either 'editAttribute' or 'addAttribute' in the DataManagerProvider
|
||
actionType === "edit",
|
||
// This is for the edit part
|
||
initialData,
|
||
// Passing true will add the component to the components object
|
||
// This way we can add fields to the added component (if it wasn't there already)
|
||
true
|
||
);
|
||
if (shouldContinue) {
|
||
onNavigateToChooseAttributeModal({
|
||
forTarget,
|
||
targetUid
|
||
});
|
||
} else {
|
||
onCloseModal();
|
||
}
|
||
} else if (isCreatingAttribute && isCreatingComponentFromAView) {
|
||
if (isInFirstComponentStep) {
|
||
trackUsage("willCreateComponentFromAttributesModal");
|
||
dispatch(actions2.resetPropsAndSaveCurrentData({}));
|
||
onNavigateToCreateComponentStep2();
|
||
return;
|
||
}
|
||
const { category, type, ...rest } = componentToCreate;
|
||
const componentUid = createComponentUid(componentToCreate.displayName, category);
|
||
createSchema(
|
||
// Component data
|
||
rest,
|
||
// Type will always be component
|
||
// It will dispatch the CREATE_COMPONENT_SCHEMA action
|
||
// So the component will be added in the main components object
|
||
// This might not be needed if we don't allow navigation between entries while editing
|
||
type,
|
||
componentUid,
|
||
category,
|
||
// This will add the created component in the datamanager modifiedData components key
|
||
// Like explained above we will be able to modify the created component structure
|
||
isCreatingComponentFromAView
|
||
);
|
||
addAttribute(modifiedData, forTarget, targetUid, false);
|
||
dispatch(actions2.resetProps());
|
||
if (shouldContinue) {
|
||
onNavigateToChooseAttributeModal({
|
||
forTarget: "components",
|
||
targetUid: componentUid
|
||
});
|
||
} else {
|
||
onCloseModal();
|
||
}
|
||
return;
|
||
} else {
|
||
if (isInFirstComponentStep) {
|
||
if (isCreatingComponentFromAView) {
|
||
const { category, type, ...rest } = modifiedData.componentToCreate;
|
||
const componentUid = createComponentUid(modifiedData.componentToCreate.displayName, category);
|
||
createSchema(
|
||
// Component data
|
||
rest,
|
||
// Type will always be component
|
||
// It will dispatch the CREATE_COMPONENT_SCHEMA action
|
||
// So the component will be added in the main components object
|
||
// This might not be needed if we don't allow navigation between entries while editing
|
||
type,
|
||
componentUid,
|
||
category,
|
||
// This will add the created component in the datamanager modifiedData components key
|
||
// Like explained above we will be able to modify the created component structure
|
||
isCreatingComponentFromAView
|
||
);
|
||
addCreatedComponentToDynamicZone(dynamicZoneTarget, [
|
||
componentUid
|
||
]);
|
||
onNavigateToChooseAttributeModal({
|
||
forTarget: "components",
|
||
targetUid: componentUid
|
||
});
|
||
} else {
|
||
changeDynamicZoneComponents(dynamicZoneTarget, modifiedData.components);
|
||
onCloseModal();
|
||
}
|
||
} else {
|
||
console.error("This case is not handled");
|
||
}
|
||
return;
|
||
}
|
||
dispatch(actions2.resetProps());
|
||
} catch (err) {
|
||
const errors = getYupInnerErrors(err);
|
||
dispatch(actions2.setErrors({
|
||
errors
|
||
}));
|
||
}
|
||
};
|
||
const handleConfirmClose = () => {
|
||
const confirm = window.confirm(formatMessage({
|
||
id: "window.confirm.close-modal.file",
|
||
defaultMessage: "Are you sure? Your changes will be lost."
|
||
}));
|
||
if (confirm) {
|
||
onCloseModal();
|
||
dispatch(actions2.resetProps());
|
||
}
|
||
};
|
||
const handleClosed = () => {
|
||
if (!(0, import_isEqual3.default)(modifiedData, initialData)) {
|
||
handleConfirmClose();
|
||
} else {
|
||
onCloseModal();
|
||
dispatch(actions2.resetProps());
|
||
}
|
||
};
|
||
const sendAdvancedTabEvent = (tab) => {
|
||
if (tab !== "advanced") {
|
||
return;
|
||
}
|
||
if (isCreatingContentType) {
|
||
trackUsage("didSelectContentTypeSettings");
|
||
return;
|
||
}
|
||
if (forTarget === "contentType") {
|
||
trackUsage("didSelectContentTypeFieldSettings");
|
||
}
|
||
};
|
||
const sendButtonAddMoreFieldEvent = (shouldContinue) => {
|
||
if (modalType === "attribute" && forTarget === "contentType" && attributeType !== "dynamiczone" && shouldContinue) {
|
||
trackUsage("willAddMoreFieldToContentType");
|
||
}
|
||
};
|
||
const shouldDisableAdvancedTab = () => {
|
||
if (modalType === "editCategory") {
|
||
return true;
|
||
}
|
||
if (modalType === "component") {
|
||
return true;
|
||
}
|
||
if ((0, import_has.default)(modifiedData, "createComponent")) {
|
||
return true;
|
||
}
|
||
return false;
|
||
};
|
||
const displayedAttributes = getAttributesToDisplay(
|
||
forTarget,
|
||
targetUid,
|
||
// We need the nested components so we know when to remove the component option
|
||
nestedComponents
|
||
);
|
||
if (!modalType) {
|
||
return null;
|
||
}
|
||
const formToDisplay = (0, import_get4.default)(forms, [
|
||
modalType,
|
||
"form"
|
||
], {
|
||
advanced: () => ({
|
||
sections: []
|
||
}),
|
||
base: () => ({
|
||
sections: []
|
||
})
|
||
});
|
||
const isAddingAComponentToAnotherComponent = forTarget === "components" || forTarget === "component";
|
||
const genericInputProps = {
|
||
customInputs: {
|
||
"allowed-types-select": AllowedTypesSelect,
|
||
"boolean-radio-group": BooleanRadioGroup,
|
||
"checkbox-with-number-field": CheckboxWithNumberField,
|
||
"icon-picker": IconPicker,
|
||
"content-type-radio-group": ContentTypeRadioGroup,
|
||
"radio-group": CustomRadioGroup,
|
||
relation: Relation,
|
||
"select-category": SelectCategory,
|
||
"select-component": SelectComponent,
|
||
"select-components": SelectComponents,
|
||
"select-default-boolean": BooleanDefaultValueSelect,
|
||
"select-number": SelectNumber,
|
||
"select-date": SelectDateType,
|
||
"toggle-draft-publish": DraftAndPublishToggle,
|
||
"text-plural": PluralName,
|
||
"text-singular": SingularName,
|
||
"textarea-enum": TextareaEnum,
|
||
...inputsFromPlugins
|
||
},
|
||
componentToCreate,
|
||
dynamicZoneTarget,
|
||
formErrors,
|
||
isAddingAComponentToAnotherComponent,
|
||
isCreatingComponentWhileAddingAField,
|
||
mainBoxHeader: (0, import_get4.default)(allDataSchema, [
|
||
...pathToSchema,
|
||
"schema",
|
||
"displayName"
|
||
], ""),
|
||
modifiedData,
|
||
naturePickerType: forTarget,
|
||
isCreating,
|
||
targetUid,
|
||
forTarget
|
||
};
|
||
const advancedForm2 = formToDisplay.advanced({
|
||
data: modifiedData,
|
||
type: attributeType,
|
||
step,
|
||
actionType,
|
||
attributes,
|
||
extensions: ctbFormsAPI,
|
||
forTarget,
|
||
contentTypeSchema: allDataSchema.contentType || {},
|
||
customField
|
||
}).sections;
|
||
const baseForm2 = formToDisplay.base({
|
||
data: modifiedData,
|
||
type: attributeType,
|
||
step,
|
||
actionType,
|
||
attributes,
|
||
extensions: ctbFormsAPI,
|
||
forTarget,
|
||
contentTypeSchema: allDataSchema.contentType || {},
|
||
customField
|
||
}).sections;
|
||
const baseFormInputNames = getFormInputNames(baseForm2);
|
||
const advancedFormInputNames = getFormInputNames(advancedForm2);
|
||
const doesBaseFormHasError = Object.keys(formErrors).some((key) => baseFormInputNames.includes(key));
|
||
const doesAdvancedFormHasError = Object.keys(formErrors).some((key) => advancedFormInputNames.includes(key));
|
||
const schemaKind = (0, import_get4.default)(contentTypes, [
|
||
targetUid,
|
||
"schema",
|
||
"kind"
|
||
]);
|
||
const checkIsEditingFieldName = () => actionType === "edit" && attributes.every(({ name }) => name !== (modifiedData == null ? void 0 : modifiedData.name));
|
||
const handleClickFinish = () => {
|
||
if (checkIsEditingFieldName()) {
|
||
trackUsage("didEditFieldNameOnContentType");
|
||
}
|
||
};
|
||
return (0, import_jsx_runtime33.jsx)(Modal.Root, {
|
||
open: isOpen,
|
||
onOpenChange: handleClosed,
|
||
children: (0, import_jsx_runtime33.jsxs)(Modal.Content, {
|
||
children: [
|
||
(0, import_jsx_runtime33.jsx)(FormModalHeader, {
|
||
actionType,
|
||
attributeName,
|
||
categoryName,
|
||
contentTypeKind: kind,
|
||
dynamicZoneTarget,
|
||
modalType,
|
||
forTarget,
|
||
targetUid,
|
||
attributeType,
|
||
customFieldUid,
|
||
showBackLink
|
||
}),
|
||
isPickingAttribute && (0, import_jsx_runtime33.jsx)(AttributeOptions, {
|
||
attributes: displayedAttributes,
|
||
forTarget,
|
||
kind: schemaKind || "collectionType"
|
||
}),
|
||
!isPickingAttribute && (0, import_jsx_runtime33.jsxs)(FormComponent, {
|
||
onSubmit: handleSubmit,
|
||
children: [
|
||
(0, import_jsx_runtime33.jsx)(Modal.Body, {
|
||
children: (0, import_jsx_runtime33.jsxs)(Tabs.Root, {
|
||
variant: "simple",
|
||
value: activeTab,
|
||
onValueChange: (value) => {
|
||
setActiveTab(value);
|
||
sendAdvancedTabEvent(value);
|
||
},
|
||
hasError: doesBaseFormHasError ? "basic" : doesAdvancedFormHasError ? "advanced" : void 0,
|
||
children: [
|
||
(0, import_jsx_runtime33.jsxs)(Flex, {
|
||
justifyContent: "space-between",
|
||
children: [
|
||
(0, import_jsx_runtime33.jsx)(FormModalSubHeader, {
|
||
actionType,
|
||
forTarget,
|
||
kind,
|
||
step,
|
||
modalType,
|
||
attributeType,
|
||
attributeName,
|
||
customField
|
||
}),
|
||
(0, import_jsx_runtime33.jsxs)(Tabs.List, {
|
||
children: [
|
||
(0, import_jsx_runtime33.jsx)(Tabs.Trigger, {
|
||
value: "basic",
|
||
children: formatMessage({
|
||
id: getTrad("popUpForm.navContainer.base"),
|
||
defaultMessage: "Basic settings"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime33.jsx)(Tabs.Trigger, {
|
||
value: "advanced",
|
||
disabled: shouldDisableAdvancedTab(),
|
||
children: formatMessage({
|
||
id: getTrad("popUpForm.navContainer.advanced"),
|
||
defaultMessage: "Advanced settings"
|
||
})
|
||
})
|
||
]
|
||
})
|
||
]
|
||
}),
|
||
(0, import_jsx_runtime33.jsx)(Divider, {
|
||
marginBottom: 6
|
||
}),
|
||
(0, import_jsx_runtime33.jsx)(Tabs.Content, {
|
||
value: "basic",
|
||
children: (0, import_jsx_runtime33.jsx)(Flex, {
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
gap: 6,
|
||
children: (0, import_jsx_runtime33.jsx)(TabForm, {
|
||
form: baseForm2,
|
||
formErrors,
|
||
genericInputProps,
|
||
modifiedData,
|
||
onChange: handleChange
|
||
})
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime33.jsx)(Tabs.Content, {
|
||
value: "advanced",
|
||
children: (0, import_jsx_runtime33.jsx)(Flex, {
|
||
direction: "column",
|
||
alignItems: "stretch",
|
||
gap: 6,
|
||
children: (0, import_jsx_runtime33.jsx)(TabForm, {
|
||
form: advancedForm2,
|
||
formErrors,
|
||
genericInputProps,
|
||
modifiedData,
|
||
onChange: handleChange
|
||
})
|
||
})
|
||
})
|
||
]
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime33.jsxs)(Modal.Footer, {
|
||
children: [
|
||
(0, import_jsx_runtime33.jsx)(Button, {
|
||
variant: "tertiary",
|
||
onClick: handleClosed,
|
||
children: formatMessage({
|
||
id: "app.components.Button.cancel",
|
||
defaultMessage: "Cancel"
|
||
})
|
||
}),
|
||
(0, import_jsx_runtime33.jsx)(FormModalEndActions, {
|
||
deleteCategory,
|
||
deleteContentType: deleteData,
|
||
deleteComponent: deleteData,
|
||
categoryName: initialData.name,
|
||
isAttributeModal: modalType === "attribute",
|
||
isCustomFieldModal: modalType === "customField",
|
||
isComponentToDzModal: modalType === "addComponentToDynamicZone",
|
||
isComponentAttribute: attributeType === "component",
|
||
isComponentModal: modalType === "component",
|
||
isContentTypeModal: modalType === "contentType",
|
||
isCreatingComponent: actionType === "create",
|
||
isCreatingDz: actionType === "create",
|
||
isCreatingComponentAttribute: modifiedData.createComponent || false,
|
||
isCreatingComponentInDz: modifiedData.createComponent || false,
|
||
isCreatingComponentWhileAddingAField,
|
||
isCreatingContentType: actionType === "create",
|
||
isEditingAttribute: actionType === "edit",
|
||
isDzAttribute: attributeType === "dynamiczone",
|
||
isEditingCategory: modalType === "editCategory",
|
||
isInFirstComponentStep: step === "1",
|
||
onSubmitAddComponentAttribute: handleSubmit,
|
||
onSubmitAddComponentToDz: handleSubmit,
|
||
onSubmitCreateComponent: handleSubmit,
|
||
onSubmitCreateContentType: handleSubmit,
|
||
onSubmitCreateDz: handleSubmit,
|
||
onSubmitEditAttribute: handleSubmit,
|
||
onSubmitEditCategory: handleSubmit,
|
||
onSubmitEditComponent: handleSubmit,
|
||
onSubmitEditContentType: handleSubmit,
|
||
onSubmitEditCustomFieldAttribute: handleSubmit,
|
||
onSubmitEditDz: handleSubmit,
|
||
onClickFinish: handleClickFinish
|
||
})
|
||
]
|
||
})
|
||
]
|
||
})
|
||
]
|
||
})
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/selectors.mjs
|
||
var dataManagerProviderDomain = () => (state) => state[`${pluginId}_dataManagerProvider`] || initialState;
|
||
var makeSelectDataManagerProvider = () => createSelector(dataManagerProviderDomain(), (substate) => {
|
||
return substate;
|
||
});
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/cleanData.mjs
|
||
var import_camelCase = __toESM(require_camelCase(), 1);
|
||
var import_get5 = __toESM(require_get(), 1);
|
||
var import_isEqual4 = __toESM(require_isEqual(), 1);
|
||
var import_omit = __toESM(require_omit(), 1);
|
||
var import_sortBy = __toESM(require_sortBy(), 1);
|
||
var getCreatedAndModifiedComponents = (allComponents, initialComponents) => {
|
||
const componentUIDsToReturn = Object.keys(allComponents).filter((compoUid) => {
|
||
const currentCompo = (0, import_get5.default)(allComponents, compoUid, {});
|
||
const initialCompo = (0, import_get5.default)(initialComponents, compoUid, {});
|
||
const hasComponentBeenCreated = (0, import_get5.default)(currentCompo, [
|
||
"isTemporary"
|
||
], false);
|
||
const hasComponentBeenModified = !(0, import_isEqual4.default)(currentCompo, initialCompo);
|
||
return hasComponentBeenCreated || hasComponentBeenModified;
|
||
});
|
||
return makeUnique(componentUIDsToReturn);
|
||
};
|
||
var formatComponent = (component, mainDataUID) => {
|
||
const formattedAttributes = formatAttributes((0, import_get5.default)(component, "schema.attributes", []), mainDataUID);
|
||
const compoUID = (0, import_get5.default)(component, "isTemporary", false) ? {
|
||
tmpUID: component.uid
|
||
} : {
|
||
uid: component.uid
|
||
};
|
||
const formattedComponent = Object.assign(
|
||
{},
|
||
compoUID,
|
||
{
|
||
category: component.category
|
||
},
|
||
// Omit the attributes since we want to format them
|
||
(0, import_omit.default)(component.schema, "attributes"),
|
||
// Add the formatted attributes
|
||
{
|
||
attributes: formattedAttributes
|
||
}
|
||
);
|
||
return formattedComponent;
|
||
};
|
||
var formatMainDataType = (data, isComponent = false) => {
|
||
const mainDataUID = (0, import_get5.default)(data, "uid", null);
|
||
const formattedAttributes = formatAttributes((0, import_get5.default)(data, "schema.attributes", []), mainDataUID);
|
||
const initObj = isComponent ? {
|
||
category: (0, import_get5.default)(data, "category", "")
|
||
} : {};
|
||
const formattedContentType = Object.assign(initObj, (0, import_omit.default)(data.schema, "attributes"), {
|
||
attributes: formattedAttributes
|
||
});
|
||
delete formattedContentType.uid;
|
||
delete formattedContentType.isTemporary;
|
||
delete formattedContentType.visible;
|
||
delete formattedContentType.restrictRelationsTo;
|
||
return formattedContentType;
|
||
};
|
||
var formatAttributes = (attributes, mainDataUID) => {
|
||
return attributes.reduce((acc, { name, ...rest }) => {
|
||
const currentAttribute = rest;
|
||
const hasARelationWithMainDataUID = currentAttribute.target === mainDataUID;
|
||
const isRelationType = currentAttribute.type === "relation";
|
||
const currentTargetAttribute = (0, import_get5.default)(currentAttribute, "targetAttribute", null);
|
||
if (!hasARelationWithMainDataUID) {
|
||
if (isRelationType) {
|
||
const relationAttr = Object.assign({}, currentAttribute, {
|
||
targetAttribute: formatRelationTargetAttribute(currentTargetAttribute)
|
||
});
|
||
acc[name] = removeNullKeys(relationAttr);
|
||
} else {
|
||
acc[name] = removeNullKeys(currentAttribute);
|
||
}
|
||
}
|
||
if (hasARelationWithMainDataUID) {
|
||
const target = currentAttribute.target;
|
||
const formattedRelationAttribute = Object.assign({}, currentAttribute, {
|
||
target,
|
||
targetAttribute: formatRelationTargetAttribute(currentTargetAttribute)
|
||
});
|
||
acc[name] = removeNullKeys(formattedRelationAttribute);
|
||
}
|
||
if (currentAttribute.customField) {
|
||
const customFieldAttribute = {
|
||
...currentAttribute,
|
||
type: "customField"
|
||
};
|
||
acc[name] = removeNullKeys(customFieldAttribute);
|
||
}
|
||
return acc;
|
||
}, {});
|
||
};
|
||
var formatRelationTargetAttribute = (targetAttribute) => targetAttribute === "-" ? null : targetAttribute;
|
||
var removeNullKeys = (obj) => Object.keys(obj).reduce((acc, current) => {
|
||
if (obj[current] !== null && current !== "plugin") {
|
||
acc[current] = obj[current];
|
||
}
|
||
return acc;
|
||
}, {});
|
||
var getComponentsToPost = (allComponents, initialComponents, mainDataUID) => {
|
||
const componentsToFormat = getCreatedAndModifiedComponents(allComponents, initialComponents);
|
||
const formattedComponents = componentsToFormat.map((compoUID) => {
|
||
const currentCompo = (0, import_get5.default)(allComponents, compoUID, {});
|
||
const formattedComponent = formatComponent(currentCompo, mainDataUID);
|
||
return formattedComponent;
|
||
});
|
||
return formattedComponents;
|
||
};
|
||
var sortContentType = (types) => (0, import_sortBy.default)(Object.keys(types).map((uid) => ({
|
||
visible: types[uid].schema.visible,
|
||
name: uid,
|
||
title: types[uid].schema.displayName,
|
||
plugin: types[uid].plugin || null,
|
||
uid,
|
||
to: `/plugins/${pluginId}/content-types/${uid}`,
|
||
kind: types[uid].schema.kind,
|
||
restrictRelationsTo: types[uid].schema.restrictRelationsTo
|
||
})).filter((obj) => obj !== null), (obj) => (0, import_camelCase.default)(obj.title));
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/createDataObject.mjs
|
||
var createDataObject = (arr) => arr.reduce((acc, current) => {
|
||
acc[current.uid] = current;
|
||
return acc;
|
||
}, {});
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/createModifiedDataSchema.mjs
|
||
var import_get6 = __toESM(require_get(), 1);
|
||
var createModifiedDataSchema = (contentTypeSchema, retrievedComponents, allComponentsSchema, isInContentTypeView) => {
|
||
const componentsAssociatedToContentType = retrievedComponents.reduce((acc, current) => {
|
||
const componentSchema = (0, import_get6.default)(allComponentsSchema, current, {});
|
||
acc[current] = componentSchema;
|
||
return acc;
|
||
}, {});
|
||
const keyName = isInContentTypeView ? "contentType" : "component";
|
||
const schema = {
|
||
[keyName]: contentTypeSchema,
|
||
components: componentsAssociatedToContentType
|
||
};
|
||
return schema;
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/formatSchemas.mjs
|
||
var formatSchemas = (schemas) => {
|
||
return Object.keys(schemas).reduce((acc, current) => {
|
||
const schema = schemas[current].schema;
|
||
acc[current] = {
|
||
...schemas[current],
|
||
schema: {
|
||
...schema,
|
||
attributes: toAttributesArray(schema.attributes)
|
||
}
|
||
};
|
||
return acc;
|
||
}, {});
|
||
};
|
||
var toAttributesArray = (attributes) => {
|
||
return Object.keys(attributes).reduce((acc, current) => {
|
||
acc.push({
|
||
...attributes[current],
|
||
name: current
|
||
});
|
||
return acc;
|
||
}, []);
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.mjs
|
||
var import_get7 = __toESM(require_get(), 1);
|
||
var retrieveComponentsThatHaveComponents = (allComponents) => {
|
||
const componentsThatHaveNestedComponents = Object.keys(allComponents).reduce((acc, current) => {
|
||
const currentComponent = (0, import_get7.default)(allComponents, [
|
||
current
|
||
]);
|
||
const compoWithChildren = getComponentWithChildComponents(currentComponent);
|
||
if (compoWithChildren.childComponents.length > 0) {
|
||
acc.push(compoWithChildren);
|
||
}
|
||
return acc;
|
||
}, []);
|
||
return componentsThatHaveNestedComponents;
|
||
};
|
||
var getComponentWithChildComponents = (component) => {
|
||
const attributes = (0, import_get7.default)(component, [
|
||
"schema",
|
||
"attributes"
|
||
], []);
|
||
return {
|
||
component: component.uid,
|
||
childComponents: attributes.filter((attribute) => {
|
||
const { type } = attribute;
|
||
return type === "component";
|
||
}).map((attribute) => {
|
||
return {
|
||
component: attribute.component
|
||
};
|
||
})
|
||
};
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/retrieveNestedComponents.mjs
|
||
var retrieveNestedComponents = (appComponents) => {
|
||
const nestedComponents = Object.keys(appComponents).reduce((acc, current) => {
|
||
var _a, _b;
|
||
const componentAttributes = ((_b = (_a = appComponents == null ? void 0 : appComponents[current]) == null ? void 0 : _a.schema) == null ? void 0 : _b.attributes) ?? [];
|
||
const currentComponentNestedCompos = getComponentsNestedWithinComponent(componentAttributes, current);
|
||
return [
|
||
...acc,
|
||
...currentComponentNestedCompos
|
||
];
|
||
}, []);
|
||
return mergeComponents(nestedComponents);
|
||
};
|
||
var getComponentsNestedWithinComponent = (componentAttributes, parentCompoUid) => {
|
||
return componentAttributes.reduce((acc, current) => {
|
||
const { type, component } = current;
|
||
if (type === "component") {
|
||
acc.push({
|
||
component,
|
||
parentCompoUid
|
||
});
|
||
}
|
||
return acc;
|
||
}, []);
|
||
};
|
||
var mergeComponents = (originalComponents) => {
|
||
const componentMap = /* @__PURE__ */ new Map();
|
||
originalComponents.forEach(({ component, parentCompoUid }) => {
|
||
if (!componentMap.has(component)) {
|
||
componentMap.set(component, /* @__PURE__ */ new Set());
|
||
}
|
||
componentMap.get(component).add(parentCompoUid);
|
||
});
|
||
const transformedComponents = Array.from(componentMap.entries()).map(([component, parentCompoUidSet]) => ({
|
||
component,
|
||
uidsOfAllParents: Array.from(parentCompoUidSet)
|
||
}));
|
||
return transformedComponents;
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/retrieveSpecificInfoFromComponents.mjs
|
||
var import_get8 = __toESM(require_get(), 1);
|
||
var retrieveSpecificInfoFromComponents = (allComponents, keysToRetrieve) => {
|
||
const allData = Object.keys(allComponents).map((compo) => {
|
||
return (0, import_get8.default)(allComponents, [
|
||
compo,
|
||
...keysToRetrieve
|
||
], "");
|
||
});
|
||
return makeUnique(allData);
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/serverRestartWatcher.mjs
|
||
var SERVER_HAS_NOT_BEEN_KILLED_MESSAGE = "did-not-kill-server";
|
||
var SERVER_HAS_BEEN_KILLED_MESSAGE = "server is down";
|
||
function serverRestartWatcher(response, didShutDownServer) {
|
||
return new Promise((resolve) => {
|
||
fetch(`${window.strapi.backendURL}/_health`, {
|
||
method: "HEAD",
|
||
mode: "no-cors",
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
"Keep-Alive": "false"
|
||
}
|
||
}).then((res) => {
|
||
if (res.status >= 400) {
|
||
throw new Error(SERVER_HAS_BEEN_KILLED_MESSAGE);
|
||
}
|
||
if (!didShutDownServer) {
|
||
throw new Error(SERVER_HAS_NOT_BEEN_KILLED_MESSAGE);
|
||
}
|
||
resolve(response);
|
||
}).catch((err) => {
|
||
setTimeout(() => {
|
||
return serverRestartWatcher(response, err.message !== SERVER_HAS_NOT_BEEN_KILLED_MESSAGE).then(resolve);
|
||
}, 100);
|
||
});
|
||
});
|
||
}
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/utils/validateSchema.mjs
|
||
var validateSchema = (schema) => {
|
||
const dynamicZoneAttributes = Object.values(schema.attributes).filter((attribute) => attribute.type === "dynamiczone");
|
||
return dynamicZoneAttributes.every((attribute) => Array.isArray(attribute.components) && attribute.components.length > 0);
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/DataManagerProvider/DataManagerProvider.mjs
|
||
var DataManagerProvider = ({ children }) => {
|
||
const dispatch = useDispatch();
|
||
const { components, contentTypes, isLoading, initialData, modifiedData, reservedNames } = useSelector(makeSelectDataManagerProvider());
|
||
const { toggleNotification } = useNotification();
|
||
const { lockAppWithAutoreload, unlockAppWithAutoreload } = useAutoReloadOverlayBlocker();
|
||
const { setCurrentStep, setStepState } = useGuidedTour("DataManagerProvider", (state) => state);
|
||
const getPlugin = useStrapiApp("DataManagerProvider", (state) => state.getPlugin);
|
||
const plugin = getPlugin(pluginId);
|
||
const autoReload = useAppInfo("DataManagerProvider", (state) => state.autoReload);
|
||
const { formatMessage } = useIntl();
|
||
const { trackUsage } = useTracking();
|
||
const refetchPermissions = useAuth("DataManagerProvider", (state) => state.refetchPermissions);
|
||
const { pathname } = useLocation();
|
||
const { onCloseModal } = useFormModalNavigation();
|
||
const contentTypeMatch = useMatch(`/plugins/${pluginId}/content-types/:uid`);
|
||
const componentMatch = useMatch(`/plugins/${pluginId}/component-categories/:categoryUid/:componentUid`);
|
||
const fetchClient = useFetchClient();
|
||
const { put, post, del } = fetchClient;
|
||
const isInDevelopmentMode = autoReload;
|
||
const isInContentTypeView = contentTypeMatch !== null;
|
||
const firstKeyToMainSchema = isInContentTypeView ? "contentType" : "component";
|
||
const currentUid = isInContentTypeView ? (0, import_get9.default)(contentTypeMatch, "params.uid", null) : (0, import_get9.default)(componentMatch, "params.componentUid", null);
|
||
const getDataRef = (0, import_react10.useRef)();
|
||
const endPoint = isInContentTypeView ? "content-types" : "components";
|
||
getDataRef.current = async () => {
|
||
try {
|
||
const [componentsResponse, contentTypesResponse, reservedNamesResponse] = await Promise.all([
|
||
fetchClient.get(`/content-type-builder/components`),
|
||
fetchClient.get(`/content-type-builder/content-types`),
|
||
fetchClient.get(`/content-type-builder/reserved-names`)
|
||
]);
|
||
const components2 = createDataObject(componentsResponse.data.data);
|
||
const formattedComponents = formatSchemas(components2);
|
||
const contentTypes2 = createDataObject(contentTypesResponse.data.data);
|
||
const formattedContentTypes = formatSchemas(contentTypes2);
|
||
dispatch(actions.init({
|
||
components: formattedComponents,
|
||
contentTypes: formattedContentTypes,
|
||
reservedNames: reservedNamesResponse.data
|
||
}));
|
||
} catch (err) {
|
||
console.error({
|
||
err
|
||
});
|
||
toggleNotification({
|
||
type: "danger",
|
||
message: formatMessage({
|
||
id: "notification.error",
|
||
defaultMessage: "An error occurred"
|
||
})
|
||
});
|
||
}
|
||
};
|
||
(0, import_react10.useEffect)(() => {
|
||
getDataRef.current();
|
||
return () => {
|
||
dispatch(actions.reloadPlugin());
|
||
};
|
||
}, []);
|
||
(0, import_react10.useEffect)(() => {
|
||
if (!isLoading && currentUid) {
|
||
setModifiedData();
|
||
}
|
||
}, [
|
||
isLoading,
|
||
pathname,
|
||
currentUid
|
||
]);
|
||
(0, import_react10.useEffect)(() => {
|
||
if (!autoReload) {
|
||
toggleNotification({
|
||
type: "info",
|
||
message: formatMessage({
|
||
id: getTrad("notification.info.autoreaload-disable")
|
||
})
|
||
});
|
||
}
|
||
}, [
|
||
autoReload,
|
||
toggleNotification,
|
||
formatMessage
|
||
]);
|
||
const addAttribute = (attributeToSet, forTarget, targetUid, isEditing = false, initialAttribute, shouldAddComponentToData = false) => {
|
||
if (isEditing) {
|
||
const payload = {
|
||
attributeToSet,
|
||
forTarget,
|
||
targetUid,
|
||
// NOTE: using ! here to avoid changing the code logic before bigger refactorings
|
||
initialAttribute,
|
||
shouldAddComponentToData
|
||
};
|
||
dispatch(actions.editAttribute(payload));
|
||
} else {
|
||
const payload = {
|
||
attributeToSet,
|
||
forTarget,
|
||
targetUid,
|
||
shouldAddComponentToData
|
||
};
|
||
dispatch(actions.addAttribute(payload));
|
||
}
|
||
};
|
||
const addCustomFieldAttribute = ({ attributeToSet, forTarget, targetUid }) => {
|
||
dispatch(actions.addCustomFieldAttribute({
|
||
attributeToSet,
|
||
forTarget,
|
||
targetUid
|
||
}));
|
||
};
|
||
const editCustomFieldAttribute = ({ attributeToSet, forTarget, targetUid, initialAttribute }) => {
|
||
dispatch(actions.editCustomFieldAttribute({
|
||
attributeToSet,
|
||
forTarget,
|
||
targetUid,
|
||
initialAttribute
|
||
}));
|
||
};
|
||
const addCreatedComponentToDynamicZone = (dynamicZoneTarget, componentsToAdd) => {
|
||
dispatch(actions.addCreatedComponentToDynamicZone({
|
||
dynamicZoneTarget,
|
||
componentsToAdd
|
||
}));
|
||
};
|
||
const createSchema = (data, schemaType, uid, componentCategory, shouldAddComponentToData = false) => {
|
||
if (schemaType === "contentType") {
|
||
const payload = {
|
||
data,
|
||
uid
|
||
};
|
||
dispatch(actions.createSchema(payload));
|
||
} else {
|
||
const payload = {
|
||
data,
|
||
uid,
|
||
componentCategory,
|
||
shouldAddComponentToData
|
||
};
|
||
dispatch(actions.createComponentSchema(payload));
|
||
}
|
||
};
|
||
const changeDynamicZoneComponents = (dynamicZoneTarget, newComponents) => {
|
||
dispatch(actions.changeDynamicZoneComponents({
|
||
dynamicZoneTarget,
|
||
newComponents
|
||
}));
|
||
};
|
||
const removeAttribute = (mainDataKey, attributeToRemoveName, componentUid = "") => {
|
||
if (mainDataKey === "components") {
|
||
dispatch(actions.removeFieldFromDisplayedComponent({
|
||
attributeToRemoveName,
|
||
componentUid
|
||
}));
|
||
} else {
|
||
if (mainDataKey === "contentType") {
|
||
trackUsage("willDeleteFieldOfContentType");
|
||
}
|
||
dispatch(actions.removeField({
|
||
mainDataKey,
|
||
attributeToRemoveName
|
||
}));
|
||
}
|
||
};
|
||
const deleteCategory = async (categoryUid) => {
|
||
try {
|
||
const requestURL = `/${pluginId}/component-categories/${categoryUid}`;
|
||
const userConfirm = window.confirm(formatMessage({
|
||
id: getTrad("popUpWarning.bodyMessage.category.delete")
|
||
}));
|
||
onCloseModal();
|
||
if (userConfirm) {
|
||
lockAppWithAutoreload == null ? void 0 : lockAppWithAutoreload();
|
||
await del(requestURL);
|
||
await serverRestartWatcher(true);
|
||
unlockAppWithAutoreload == null ? void 0 : unlockAppWithAutoreload();
|
||
await updatePermissions();
|
||
}
|
||
} catch (err) {
|
||
console.error({
|
||
err
|
||
});
|
||
toggleNotification({
|
||
type: "danger",
|
||
message: formatMessage({
|
||
id: "notification.error",
|
||
defaultMessage: "An error occurred"
|
||
})
|
||
});
|
||
} finally {
|
||
unlockAppWithAutoreload == null ? void 0 : unlockAppWithAutoreload();
|
||
}
|
||
};
|
||
const deleteData = async () => {
|
||
try {
|
||
const requestURL = `/${pluginId}/${endPoint}/${currentUid}`;
|
||
const isTemporary = (0, import_get9.default)(modifiedData, [
|
||
firstKeyToMainSchema,
|
||
"isTemporary"
|
||
], false);
|
||
const userConfirm = window.confirm(formatMessage({
|
||
id: getTrad(`popUpWarning.bodyMessage.${isInContentTypeView ? "contentType" : "component"}.delete`)
|
||
}));
|
||
onCloseModal();
|
||
if (userConfirm) {
|
||
if (isTemporary) {
|
||
dispatch(actions.deleteNotSavedType());
|
||
return;
|
||
}
|
||
lockAppWithAutoreload == null ? void 0 : lockAppWithAutoreload();
|
||
await del(requestURL);
|
||
await serverRestartWatcher(true);
|
||
await (unlockAppWithAutoreload == null ? void 0 : unlockAppWithAutoreload());
|
||
await getDataRef.current();
|
||
await updatePermissions();
|
||
}
|
||
} catch (err) {
|
||
console.error({
|
||
err
|
||
});
|
||
toggleNotification({
|
||
type: "danger",
|
||
message: formatMessage({
|
||
id: "notification.error",
|
||
defaultMessage: "An error occurred"
|
||
})
|
||
});
|
||
} finally {
|
||
unlockAppWithAutoreload == null ? void 0 : unlockAppWithAutoreload();
|
||
}
|
||
};
|
||
const editCategory = async (categoryUid, body) => {
|
||
try {
|
||
const requestURL = `/${pluginId}/component-categories/${categoryUid}`;
|
||
onCloseModal();
|
||
lockAppWithAutoreload == null ? void 0 : lockAppWithAutoreload();
|
||
await put(requestURL, body);
|
||
await serverRestartWatcher(true);
|
||
await (unlockAppWithAutoreload == null ? void 0 : unlockAppWithAutoreload());
|
||
await updatePermissions();
|
||
} catch (err) {
|
||
console.error({
|
||
err
|
||
});
|
||
toggleNotification({
|
||
type: "danger",
|
||
message: formatMessage({
|
||
id: "notification.error",
|
||
defaultMessage: "An error occurred"
|
||
})
|
||
});
|
||
} finally {
|
||
unlockAppWithAutoreload == null ? void 0 : unlockAppWithAutoreload();
|
||
}
|
||
};
|
||
const getAllComponentsThatHaveAComponentInTheirAttributes = () => {
|
||
const allCompos = Object.assign({}, components, modifiedData.components);
|
||
if (!isInContentTypeView) {
|
||
const currentEditedCompo = (0, import_get9.default)(modifiedData, "component", {});
|
||
(0, import_set2.default)(allCompos, (0, import_get9.default)(currentEditedCompo, [
|
||
"uid"
|
||
], ""), currentEditedCompo);
|
||
}
|
||
const composWithCompos = retrieveComponentsThatHaveComponents(allCompos);
|
||
return composWithCompos;
|
||
};
|
||
const getAllNestedComponents = () => {
|
||
const appNestedCompo = retrieveNestedComponents(components);
|
||
return appNestedCompo;
|
||
};
|
||
const removeComponentFromDynamicZone = (dzName, componentToRemoveIndex) => {
|
||
dispatch(actions.removeComponentFromDynamicZone({
|
||
dzName,
|
||
componentToRemoveIndex
|
||
}));
|
||
};
|
||
const setModifiedData = () => {
|
||
const currentSchemas = isInContentTypeView ? contentTypes : components;
|
||
const schemaToSet = (0, import_get9.default)(currentSchemas, currentUid ?? "", {
|
||
schema: {
|
||
attributes: []
|
||
}
|
||
});
|
||
const retrievedComponents = retrieveComponentsFromSchema(schemaToSet.schema.attributes, components);
|
||
const newSchemaToSet = createModifiedDataSchema(schemaToSet, retrievedComponents, components, isInContentTypeView);
|
||
const hasJustCreatedSchema = (0, import_get9.default)(schemaToSet, "isTemporary", false) && (0, import_size.default)((0, import_get9.default)(schemaToSet, "schema.attributes", [])) === 0;
|
||
dispatch(actions.setModifiedData({
|
||
schemaToSet: newSchemaToSet,
|
||
hasJustCreatedSchema
|
||
}));
|
||
};
|
||
const shouldRedirect = (0, import_react10.useMemo)(() => {
|
||
const dataSet = isInContentTypeView ? contentTypes : components;
|
||
if (currentUid === "create-content-type") {
|
||
return false;
|
||
}
|
||
return !Object.keys(dataSet).includes(currentUid || "") && !isLoading;
|
||
}, [
|
||
components,
|
||
contentTypes,
|
||
currentUid,
|
||
isInContentTypeView,
|
||
isLoading
|
||
]);
|
||
const redirectEndpoint = (0, import_react10.useMemo)(() => {
|
||
const allowedEndpoints = Object.keys(contentTypes).filter((uid) => (0, import_get9.default)(contentTypes, [
|
||
uid,
|
||
"schema",
|
||
"visible"
|
||
], true)).sort();
|
||
return (0, import_get9.default)(allowedEndpoints, "0", "create-content-type");
|
||
}, [
|
||
contentTypes
|
||
]);
|
||
if (shouldRedirect) {
|
||
return (0, import_jsx_runtime34.jsx)(Navigate, {
|
||
to: `/plugins/${pluginId}/content-types/${redirectEndpoint}`
|
||
});
|
||
}
|
||
const submitData = async (additionalContentTypeData) => {
|
||
var _a, _b, _c;
|
||
try {
|
||
const isCreating = (0, import_get9.default)(modifiedData, [
|
||
firstKeyToMainSchema,
|
||
"isTemporary"
|
||
], false);
|
||
const body = {
|
||
components: getComponentsToPost(modifiedData.components, components, currentUid)
|
||
};
|
||
if (isInContentTypeView) {
|
||
const PluginForms = (_a = plugin == null ? void 0 : plugin.apis) == null ? void 0 : _a.forms;
|
||
const contentType = PluginForms.mutateContentTypeSchema({
|
||
...formatMainDataType(modifiedData.contentType),
|
||
...additionalContentTypeData
|
||
}, initialData.contentType);
|
||
const isValidSchema = validateSchema(contentType);
|
||
if (!isValidSchema) {
|
||
toggleNotification({
|
||
type: "danger",
|
||
message: formatMessage({
|
||
id: getTrad("notification.error.dynamiczone-min.validation"),
|
||
defaultMessage: "At least one component is required in a dynamic zone to be able to save a content type"
|
||
})
|
||
});
|
||
return;
|
||
}
|
||
body.contentType = contentType;
|
||
trackUsage("willSaveContentType");
|
||
} else {
|
||
body.component = formatMainDataType(modifiedData.component, true);
|
||
trackUsage("willSaveComponent");
|
||
}
|
||
lockAppWithAutoreload == null ? void 0 : lockAppWithAutoreload();
|
||
const baseURL = `/${pluginId}/${endPoint}`;
|
||
const requestURL = isCreating ? baseURL : `${baseURL}/${currentUid}`;
|
||
if (isCreating) {
|
||
await post(requestURL, body);
|
||
} else {
|
||
await put(requestURL, body);
|
||
}
|
||
if (isCreating && (((_b = initialData.contentType) == null ? void 0 : _b.schema.kind) === "collectionType" || ((_c = initialData.contentType) == null ? void 0 : _c.schema.kind) === "singleType")) {
|
||
setStepState("contentTypeBuilder.success", true);
|
||
trackUsage("didCreateGuidedTourCollectionType");
|
||
setCurrentStep(null);
|
||
}
|
||
if (isInContentTypeView) {
|
||
trackUsage("didSaveContentType");
|
||
const oldName = (0, import_get9.default)(body, [
|
||
"contentType",
|
||
"schema",
|
||
"name"
|
||
], "");
|
||
const newName = (0, import_get9.default)(initialData, [
|
||
"contentType",
|
||
"schema",
|
||
"name"
|
||
], "");
|
||
if (!isCreating && oldName !== newName) {
|
||
trackUsage("didEditNameOfContentType");
|
||
}
|
||
} else {
|
||
trackUsage("didSaveComponent");
|
||
}
|
||
await serverRestartWatcher(true);
|
||
unlockAppWithAutoreload == null ? void 0 : unlockAppWithAutoreload();
|
||
await getDataRef.current();
|
||
await updatePermissions();
|
||
} catch (err) {
|
||
if (!isInContentTypeView) {
|
||
trackUsage("didNotSaveComponent");
|
||
}
|
||
console.error({
|
||
err: err.response
|
||
});
|
||
toggleNotification({
|
||
type: "danger",
|
||
message: formatMessage({
|
||
id: "notification.error",
|
||
defaultMessage: "An error occurred"
|
||
})
|
||
});
|
||
} finally {
|
||
unlockAppWithAutoreload == null ? void 0 : unlockAppWithAutoreload();
|
||
}
|
||
};
|
||
const updatePermissions = async () => {
|
||
await refetchPermissions();
|
||
};
|
||
const updateSchema = (data, schemaType, componentUID) => {
|
||
dispatch(actions.updateSchema({
|
||
data,
|
||
schemaType,
|
||
uid: componentUID
|
||
}));
|
||
};
|
||
return (0, import_jsx_runtime34.jsxs)(DataManagerContext.Provider, {
|
||
value: {
|
||
addAttribute,
|
||
addCustomFieldAttribute,
|
||
addCreatedComponentToDynamicZone,
|
||
allComponentsCategories: retrieveSpecificInfoFromComponents(components, [
|
||
"category"
|
||
]),
|
||
changeDynamicZoneComponents,
|
||
components,
|
||
componentsGroupedByCategory: (0, import_groupBy.default)(components, "category"),
|
||
componentsThatHaveOtherComponentInTheirAttributes: getAllComponentsThatHaveAComponentInTheirAttributes(),
|
||
contentTypes,
|
||
createSchema,
|
||
deleteCategory,
|
||
deleteData,
|
||
editCategory,
|
||
editCustomFieldAttribute,
|
||
isInDevelopmentMode,
|
||
initialData,
|
||
isInContentTypeView,
|
||
modifiedData,
|
||
nestedComponents: getAllNestedComponents(),
|
||
removeAttribute,
|
||
removeComponentFromDynamicZone,
|
||
reservedNames,
|
||
setModifiedData,
|
||
sortedContentTypesList: sortContentType(contentTypes),
|
||
submitData,
|
||
updateSchema
|
||
},
|
||
children: [
|
||
children,
|
||
isInDevelopmentMode && (0, import_jsx_runtime34.jsx)(FormModal, {})
|
||
]
|
||
});
|
||
};
|
||
var DataManagerProvider$1 = (0, import_react10.memo)(DataManagerProvider);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.mjs
|
||
var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
|
||
var React3 = __toESM(require_react(), 1);
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModalNavigationProvider/constants.mjs
|
||
var INITIAL_STATE_DATA = {
|
||
actionType: null,
|
||
attributeName: null,
|
||
attributeType: null,
|
||
categoryName: null,
|
||
dynamicZoneTarget: null,
|
||
forTarget: null,
|
||
modalType: null,
|
||
isOpen: false,
|
||
showBackLink: false,
|
||
kind: null,
|
||
step: null,
|
||
targetUid: null,
|
||
customFieldUid: null,
|
||
activeTab: "basic"
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/components/FormModalNavigationProvider/FormModalNavigationProvider.mjs
|
||
var FormModalNavigationProvider = ({ children }) => {
|
||
const [state, setFormModalNavigationState] = React3.useState(INITIAL_STATE_DATA);
|
||
const { trackUsage } = useTracking();
|
||
const onClickSelectCustomField = ({ attributeType, customFieldUid }) => {
|
||
setFormModalNavigationState((prevState) => {
|
||
return {
|
||
...prevState,
|
||
actionType: "create",
|
||
modalType: "customField",
|
||
attributeType,
|
||
customFieldUid,
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const onClickSelectField = ({ attributeType, step }) => {
|
||
if (state.forTarget === "contentType") {
|
||
trackUsage("didSelectContentTypeFieldType", {
|
||
type: attributeType
|
||
});
|
||
}
|
||
setFormModalNavigationState((prevState) => {
|
||
return {
|
||
...prevState,
|
||
actionType: "create",
|
||
modalType: "attribute",
|
||
step,
|
||
attributeType,
|
||
showBackLink: true,
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const onOpenModalAddComponentsToDZ = ({ dynamicZoneTarget, targetUid }) => {
|
||
setFormModalNavigationState((prevState) => {
|
||
return {
|
||
...prevState,
|
||
dynamicZoneTarget,
|
||
targetUid,
|
||
modalType: "addComponentToDynamicZone",
|
||
forTarget: "contentType",
|
||
step: "1",
|
||
actionType: "edit",
|
||
isOpen: true
|
||
};
|
||
});
|
||
};
|
||
const onOpenModalAddField = ({ forTarget, targetUid }) => {
|
||
setFormModalNavigationState((prevState) => {
|
||
return {
|
||
...prevState,
|
||
actionType: "create",
|
||
forTarget,
|
||
targetUid,
|
||
modalType: "chooseAttribute",
|
||
isOpen: true,
|
||
showBackLink: false,
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const onOpenModalCreateSchema = (nextState) => {
|
||
setFormModalNavigationState((prevState) => {
|
||
return {
|
||
...prevState,
|
||
...nextState,
|
||
isOpen: true,
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const onOpenModalEditCategory = (categoryName) => {
|
||
setFormModalNavigationState((prevState) => {
|
||
return {
|
||
...prevState,
|
||
categoryName,
|
||
actionType: "edit",
|
||
modalType: "editCategory",
|
||
isOpen: true,
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const onOpenModalEditCustomField = ({ forTarget, targetUid, attributeName, attributeType, customFieldUid }) => {
|
||
setFormModalNavigationState((prevState) => {
|
||
return {
|
||
...prevState,
|
||
modalType: "customField",
|
||
customFieldUid,
|
||
actionType: "edit",
|
||
forTarget,
|
||
targetUid,
|
||
attributeName,
|
||
attributeType,
|
||
isOpen: true,
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const onOpenModalEditField = ({ forTarget, targetUid, attributeName, attributeType, step }) => {
|
||
setFormModalNavigationState((prevState) => {
|
||
return {
|
||
...prevState,
|
||
modalType: "attribute",
|
||
actionType: "edit",
|
||
forTarget,
|
||
targetUid,
|
||
attributeName,
|
||
attributeType,
|
||
step,
|
||
isOpen: true
|
||
};
|
||
});
|
||
};
|
||
const onOpenModalEditSchema = ({ modalType, forTarget, targetUid, kind }) => {
|
||
setFormModalNavigationState((prevState) => {
|
||
return {
|
||
...prevState,
|
||
modalType,
|
||
actionType: "edit",
|
||
forTarget,
|
||
targetUid,
|
||
kind,
|
||
isOpen: true,
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const onCloseModal = () => {
|
||
setFormModalNavigationState(INITIAL_STATE_DATA);
|
||
};
|
||
const onNavigateToChooseAttributeModal = ({ forTarget, targetUid }) => {
|
||
setFormModalNavigationState((prev) => {
|
||
return {
|
||
...prev,
|
||
forTarget,
|
||
targetUid,
|
||
modalType: "chooseAttribute",
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const onNavigateToCreateComponentStep2 = () => {
|
||
setFormModalNavigationState((prev) => {
|
||
return {
|
||
...prev,
|
||
attributeType: "component",
|
||
modalType: "attribute",
|
||
step: "2",
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const onNavigateToAddCompoToDZModal = ({ dynamicZoneTarget }) => {
|
||
setFormModalNavigationState((prev) => {
|
||
return {
|
||
...prev,
|
||
dynamicZoneTarget,
|
||
modalType: "addComponentToDynamicZone",
|
||
actionType: "create",
|
||
step: "1",
|
||
attributeType: null,
|
||
attributeName: null,
|
||
activeTab: "basic"
|
||
};
|
||
});
|
||
};
|
||
const setActiveTab = (value) => {
|
||
setFormModalNavigationState((prev) => {
|
||
return {
|
||
...prev,
|
||
activeTab: value
|
||
};
|
||
});
|
||
};
|
||
return (0, import_jsx_runtime35.jsx)(FormModalNavigationContext.Provider, {
|
||
value: {
|
||
...state,
|
||
onClickSelectField,
|
||
onClickSelectCustomField,
|
||
onCloseModal,
|
||
onNavigateToChooseAttributeModal,
|
||
onNavigateToAddCompoToDZModal,
|
||
onOpenModalAddComponentsToDZ,
|
||
onNavigateToCreateComponentStep2,
|
||
onOpenModalAddField,
|
||
onOpenModalCreateSchema,
|
||
onOpenModalEditCategory,
|
||
onOpenModalEditField,
|
||
onOpenModalEditCustomField,
|
||
onOpenModalEditSchema,
|
||
setFormModalNavigationState,
|
||
setActiveTab
|
||
},
|
||
children
|
||
});
|
||
};
|
||
|
||
// node_modules/@strapi/content-type-builder/dist/admin/pages/App/index.mjs
|
||
var ListView = (0, import_react11.lazy)(() => import("./ListView-M4MMRMSH.js"));
|
||
var App = () => {
|
||
const { formatMessage } = useIntl();
|
||
const title = formatMessage({
|
||
id: `${pluginId}.plugin.name`,
|
||
defaultMessage: "Content Types Builder"
|
||
});
|
||
const startSection = useGuidedTour("App", (state) => state.startSection);
|
||
const startSectionRef = (0, import_react11.useRef)(startSection);
|
||
(0, import_react11.useEffect)(() => {
|
||
if (startSectionRef.current) {
|
||
startSectionRef.current("contentTypeBuilder");
|
||
}
|
||
}, []);
|
||
return (0, import_jsx_runtime36.jsxs)(Page.Protect, {
|
||
permissions: PERMISSIONS.main,
|
||
children: [
|
||
(0, import_jsx_runtime36.jsx)(Page.Title, {
|
||
children: title
|
||
}),
|
||
(0, import_jsx_runtime36.jsx)(AutoReloadOverlayBlockerProvider, {
|
||
children: (0, import_jsx_runtime36.jsx)(FormModalNavigationProvider, {
|
||
children: (0, import_jsx_runtime36.jsx)(DataManagerProvider$1, {
|
||
children: (0, import_jsx_runtime36.jsx)(Layouts.Root, {
|
||
sideNav: (0, import_jsx_runtime36.jsx)(ContentTypeBuilderNav, {}),
|
||
children: (0, import_jsx_runtime36.jsx)(import_react11.Suspense, {
|
||
fallback: (0, import_jsx_runtime36.jsx)(Page.Loading, {}),
|
||
children: (0, import_jsx_runtime36.jsxs)(Routes, {
|
||
children: [
|
||
(0, import_jsx_runtime36.jsx)(Route, {
|
||
path: "content-types/:uid",
|
||
element: (0, import_jsx_runtime36.jsx)(ListView, {})
|
||
}),
|
||
(0, import_jsx_runtime36.jsx)(Route, {
|
||
path: `component-categories/:categoryUid/:componentUid`,
|
||
element: (0, import_jsx_runtime36.jsx)(ListView, {})
|
||
})
|
||
]
|
||
})
|
||
})
|
||
})
|
||
})
|
||
})
|
||
})
|
||
]
|
||
});
|
||
};
|
||
export {
|
||
App as default
|
||
};
|
||
/*! Bundled license information:
|
||
|
||
lodash/lodash.min.js:
|
||
(**
|
||
* @license
|
||
* Lodash <https://lodash.com/>
|
||
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
||
* Released under MIT license <https://lodash.com/license>
|
||
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
||
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||
*)
|
||
*/
|
||
//# sourceMappingURL=App-H27Y6V6P.js.map
|