Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu.../js/dist
File: components.js
(0,external_wp_i18n_namespaceObject.__)('%1$s (%2$s of %3$s)'), transformedValue, termPosition, termsCount);
[60000] Fix | Delete
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
[60001] Fix | Delete
className: tokenClasses,
[60002] Fix | Delete
onMouseEnter: onMouseEnter,
[60003] Fix | Delete
onMouseLeave: onMouseLeave,
[60004] Fix | Delete
title: title,
[60005] Fix | Delete
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)("span", {
[60006] Fix | Delete
className: "components-form-token-field__token-text",
[60007] Fix | Delete
id: `components-form-token-field__token-text-${instanceId}`,
[60008] Fix | Delete
children: [/*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(visually_hidden_component, {
[60009] Fix | Delete
as: "span",
[60010] Fix | Delete
children: termPositionAndCount
[60011] Fix | Delete
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)("span", {
[60012] Fix | Delete
"aria-hidden": "true",
[60013] Fix | Delete
children: transformedValue
[60014] Fix | Delete
})]
[60015] Fix | Delete
}), /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(build_module_button, {
[60016] Fix | Delete
className: "components-form-token-field__remove-token",
[60017] Fix | Delete
icon: close_small,
[60018] Fix | Delete
onClick: !disabled ? onClick : undefined,
[60019] Fix | Delete
disabled: disabled,
[60020] Fix | Delete
label: messages.remove,
[60021] Fix | Delete
"aria-describedby": `components-form-token-field__token-text-${instanceId}`
[60022] Fix | Delete
})]
[60023] Fix | Delete
});
[60024] Fix | Delete
}
[60025] Fix | Delete
[60026] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/components/build-module/form-token-field/styles.js
[60027] Fix | Delete
[60028] Fix | Delete
/**
[60029] Fix | Delete
* External dependencies
[60030] Fix | Delete
*/
[60031] Fix | Delete
[60032] Fix | Delete
[60033] Fix | Delete
[60034] Fix | Delete
/**
[60035] Fix | Delete
* Internal dependencies
[60036] Fix | Delete
*/
[60037] Fix | Delete
[60038] Fix | Delete
[60039] Fix | Delete
[60040] Fix | Delete
const deprecatedPaddings = ({
[60041] Fix | Delete
__next40pxDefaultSize,
[60042] Fix | Delete
hasTokens
[60043] Fix | Delete
}) => !__next40pxDefaultSize && /*#__PURE__*/emotion_react_browser_esm_css("padding-top:", space(hasTokens ? 1 : 0.5), ";padding-bottom:", space(hasTokens ? 1 : 0.5), ";" + ( true ? "" : 0), true ? "" : 0);
[60044] Fix | Delete
const TokensAndInputWrapperFlex = /*#__PURE__*/emotion_styled_base_browser_esm(flex_component, true ? {
[60045] Fix | Delete
target: "ehq8nmi0"
[60046] Fix | Delete
} : 0)("padding:7px;", boxSizingReset, " ", deprecatedPaddings, ";" + ( true ? "" : 0));
[60047] Fix | Delete
[60048] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/components/build-module/form-token-field/index.js
[60049] Fix | Delete
/**
[60050] Fix | Delete
* External dependencies
[60051] Fix | Delete
*/
[60052] Fix | Delete
[60053] Fix | Delete
/**
[60054] Fix | Delete
* WordPress dependencies
[60055] Fix | Delete
*/
[60056] Fix | Delete
[60057] Fix | Delete
[60058] Fix | Delete
[60059] Fix | Delete
[60060] Fix | Delete
[60061] Fix | Delete
[60062] Fix | Delete
/**
[60063] Fix | Delete
* Internal dependencies
[60064] Fix | Delete
*/
[60065] Fix | Delete
[60066] Fix | Delete
[60067] Fix | Delete
[60068] Fix | Delete
[60069] Fix | Delete
[60070] Fix | Delete
[60071] Fix | Delete
[60072] Fix | Delete
[60073] Fix | Delete
[60074] Fix | Delete
[60075] Fix | Delete
[60076] Fix | Delete
const form_token_field_identity = value => value;
[60077] Fix | Delete
[60078] Fix | Delete
/**
[60079] Fix | Delete
* A `FormTokenField` is a field similar to the tags and categories fields in the interim editor chrome,
[60080] Fix | Delete
* or the "to" field in Mail on OS X. Tokens can be entered by typing them or selecting them from a list of suggested tokens.
[60081] Fix | Delete
*
[60082] Fix | Delete
* Up to one hundred suggestions that match what the user has typed so far will be shown from which the user can pick from (auto-complete).
[60083] Fix | Delete
* Tokens are separated by the "," character. Suggestions can be selected with the up or down arrows and added with the tab or enter key.
[60084] Fix | Delete
*
[60085] Fix | Delete
* The `value` property is handled in a manner similar to controlled form components.
[60086] Fix | Delete
* See [Forms](https://react.dev/reference/react-dom/components#form-components) in the React Documentation for more information.
[60087] Fix | Delete
*/
[60088] Fix | Delete
function FormTokenField(props) {
[60089] Fix | Delete
const {
[60090] Fix | Delete
autoCapitalize,
[60091] Fix | Delete
autoComplete,
[60092] Fix | Delete
maxLength,
[60093] Fix | Delete
placeholder,
[60094] Fix | Delete
label = (0,external_wp_i18n_namespaceObject.__)('Add item'),
[60095] Fix | Delete
className,
[60096] Fix | Delete
suggestions = [],
[60097] Fix | Delete
maxSuggestions = 100,
[60098] Fix | Delete
value = [],
[60099] Fix | Delete
displayTransform = form_token_field_identity,
[60100] Fix | Delete
saveTransform = token => token.trim(),
[60101] Fix | Delete
onChange = () => {},
[60102] Fix | Delete
onInputChange = () => {},
[60103] Fix | Delete
onFocus = undefined,
[60104] Fix | Delete
isBorderless = false,
[60105] Fix | Delete
disabled = false,
[60106] Fix | Delete
tokenizeOnSpace = false,
[60107] Fix | Delete
messages = {
[60108] Fix | Delete
added: (0,external_wp_i18n_namespaceObject.__)('Item added.'),
[60109] Fix | Delete
removed: (0,external_wp_i18n_namespaceObject.__)('Item removed.'),
[60110] Fix | Delete
remove: (0,external_wp_i18n_namespaceObject.__)('Remove item'),
[60111] Fix | Delete
__experimentalInvalid: (0,external_wp_i18n_namespaceObject.__)('Invalid item')
[60112] Fix | Delete
},
[60113] Fix | Delete
__experimentalRenderItem,
[60114] Fix | Delete
__experimentalExpandOnFocus = false,
[60115] Fix | Delete
__experimentalValidateInput = () => true,
[60116] Fix | Delete
__experimentalShowHowTo = true,
[60117] Fix | Delete
__next40pxDefaultSize = false,
[60118] Fix | Delete
__experimentalAutoSelectFirstMatch = false,
[60119] Fix | Delete
__nextHasNoMarginBottom = false,
[60120] Fix | Delete
tokenizeOnBlur = false
[60121] Fix | Delete
} = useDeprecated36pxDefaultSizeProp(props);
[60122] Fix | Delete
const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(FormTokenField);
[60123] Fix | Delete
[60124] Fix | Delete
// We reset to these initial values again in the onBlur
[60125] Fix | Delete
const [incompleteTokenValue, setIncompleteTokenValue] = (0,external_wp_element_namespaceObject.useState)('');
[60126] Fix | Delete
const [inputOffsetFromEnd, setInputOffsetFromEnd] = (0,external_wp_element_namespaceObject.useState)(0);
[60127] Fix | Delete
const [isActive, setIsActive] = (0,external_wp_element_namespaceObject.useState)(false);
[60128] Fix | Delete
const [isExpanded, setIsExpanded] = (0,external_wp_element_namespaceObject.useState)(false);
[60129] Fix | Delete
const [selectedSuggestionIndex, setSelectedSuggestionIndex] = (0,external_wp_element_namespaceObject.useState)(-1);
[60130] Fix | Delete
const [selectedSuggestionScroll, setSelectedSuggestionScroll] = (0,external_wp_element_namespaceObject.useState)(false);
[60131] Fix | Delete
const prevSuggestions = (0,external_wp_compose_namespaceObject.usePrevious)(suggestions);
[60132] Fix | Delete
const prevValue = (0,external_wp_compose_namespaceObject.usePrevious)(value);
[60133] Fix | Delete
const input = (0,external_wp_element_namespaceObject.useRef)(null);
[60134] Fix | Delete
const tokensAndInput = (0,external_wp_element_namespaceObject.useRef)(null);
[60135] Fix | Delete
const debouncedSpeak = (0,external_wp_compose_namespaceObject.useDebounce)(external_wp_a11y_namespaceObject.speak, 500);
[60136] Fix | Delete
(0,external_wp_element_namespaceObject.useEffect)(() => {
[60137] Fix | Delete
// Make sure to focus the input when the isActive state is true.
[60138] Fix | Delete
if (isActive && !hasFocus()) {
[60139] Fix | Delete
focus();
[60140] Fix | Delete
}
[60141] Fix | Delete
}, [isActive]);
[60142] Fix | Delete
(0,external_wp_element_namespaceObject.useEffect)(() => {
[60143] Fix | Delete
const suggestionsDidUpdate = !external_wp_isShallowEqual_default()(suggestions, prevSuggestions || []);
[60144] Fix | Delete
if (suggestionsDidUpdate || value !== prevValue) {
[60145] Fix | Delete
updateSuggestions(suggestionsDidUpdate);
[60146] Fix | Delete
}
[60147] Fix | Delete
[60148] Fix | Delete
// TODO: updateSuggestions() should first be refactored so its actual deps are clearer.
[60149] Fix | Delete
// eslint-disable-next-line react-hooks/exhaustive-deps
[60150] Fix | Delete
}, [suggestions, prevSuggestions, value, prevValue]);
[60151] Fix | Delete
(0,external_wp_element_namespaceObject.useEffect)(() => {
[60152] Fix | Delete
updateSuggestions();
[60153] Fix | Delete
// eslint-disable-next-line react-hooks/exhaustive-deps
[60154] Fix | Delete
}, [incompleteTokenValue]);
[60155] Fix | Delete
(0,external_wp_element_namespaceObject.useEffect)(() => {
[60156] Fix | Delete
updateSuggestions();
[60157] Fix | Delete
// eslint-disable-next-line react-hooks/exhaustive-deps
[60158] Fix | Delete
}, [__experimentalAutoSelectFirstMatch]);
[60159] Fix | Delete
if (disabled && isActive) {
[60160] Fix | Delete
setIsActive(false);
[60161] Fix | Delete
setIncompleteTokenValue('');
[60162] Fix | Delete
}
[60163] Fix | Delete
function focus() {
[60164] Fix | Delete
input.current?.focus();
[60165] Fix | Delete
}
[60166] Fix | Delete
function hasFocus() {
[60167] Fix | Delete
return input.current === input.current?.ownerDocument.activeElement;
[60168] Fix | Delete
}
[60169] Fix | Delete
function onFocusHandler(event) {
[60170] Fix | Delete
// If focus is on the input or on the container, set the isActive state to true.
[60171] Fix | Delete
if (hasFocus() || event.target === tokensAndInput.current) {
[60172] Fix | Delete
setIsActive(true);
[60173] Fix | Delete
setIsExpanded(__experimentalExpandOnFocus || isExpanded);
[60174] Fix | Delete
} else {
[60175] Fix | Delete
/*
[60176] Fix | Delete
* Otherwise, focus is on one of the token "remove" buttons and we
[60177] Fix | Delete
* set the isActive state to false to prevent the input to be
[60178] Fix | Delete
* re-focused, see componentDidUpdate().
[60179] Fix | Delete
*/
[60180] Fix | Delete
setIsActive(false);
[60181] Fix | Delete
}
[60182] Fix | Delete
if ('function' === typeof onFocus) {
[60183] Fix | Delete
onFocus(event);
[60184] Fix | Delete
}
[60185] Fix | Delete
}
[60186] Fix | Delete
function onBlur(event) {
[60187] Fix | Delete
if (inputHasValidValue() && __experimentalValidateInput(incompleteTokenValue)) {
[60188] Fix | Delete
setIsActive(false);
[60189] Fix | Delete
if (tokenizeOnBlur && inputHasValidValue()) {
[60190] Fix | Delete
addNewToken(incompleteTokenValue);
[60191] Fix | Delete
}
[60192] Fix | Delete
} else {
[60193] Fix | Delete
// Reset to initial state
[60194] Fix | Delete
setIncompleteTokenValue('');
[60195] Fix | Delete
setInputOffsetFromEnd(0);
[60196] Fix | Delete
setIsActive(false);
[60197] Fix | Delete
if (__experimentalExpandOnFocus) {
[60198] Fix | Delete
// If `__experimentalExpandOnFocus` is true, don't close the suggestions list when
[60199] Fix | Delete
// the user clicks on it (`tokensAndInput` will be the element that caused the blur).
[60200] Fix | Delete
const hasFocusWithin = event.relatedTarget === tokensAndInput.current;
[60201] Fix | Delete
setIsExpanded(hasFocusWithin);
[60202] Fix | Delete
} else {
[60203] Fix | Delete
// Else collapse the suggestion list. This will result in the suggestion list closing
[60204] Fix | Delete
// after a suggestion has been submitted since that causes a blur.
[60205] Fix | Delete
setIsExpanded(false);
[60206] Fix | Delete
}
[60207] Fix | Delete
setSelectedSuggestionIndex(-1);
[60208] Fix | Delete
setSelectedSuggestionScroll(false);
[60209] Fix | Delete
}
[60210] Fix | Delete
}
[60211] Fix | Delete
function onKeyDown(event) {
[60212] Fix | Delete
let preventDefault = false;
[60213] Fix | Delete
if (event.defaultPrevented) {
[60214] Fix | Delete
return;
[60215] Fix | Delete
}
[60216] Fix | Delete
switch (event.key) {
[60217] Fix | Delete
case 'Backspace':
[60218] Fix | Delete
preventDefault = handleDeleteKey(deleteTokenBeforeInput);
[60219] Fix | Delete
break;
[60220] Fix | Delete
case 'Enter':
[60221] Fix | Delete
preventDefault = addCurrentToken();
[60222] Fix | Delete
break;
[60223] Fix | Delete
case 'ArrowLeft':
[60224] Fix | Delete
preventDefault = handleLeftArrowKey();
[60225] Fix | Delete
break;
[60226] Fix | Delete
case 'ArrowUp':
[60227] Fix | Delete
preventDefault = handleUpArrowKey();
[60228] Fix | Delete
break;
[60229] Fix | Delete
case 'ArrowRight':
[60230] Fix | Delete
preventDefault = handleRightArrowKey();
[60231] Fix | Delete
break;
[60232] Fix | Delete
case 'ArrowDown':
[60233] Fix | Delete
preventDefault = handleDownArrowKey();
[60234] Fix | Delete
break;
[60235] Fix | Delete
case 'Delete':
[60236] Fix | Delete
preventDefault = handleDeleteKey(deleteTokenAfterInput);
[60237] Fix | Delete
break;
[60238] Fix | Delete
case 'Space':
[60239] Fix | Delete
if (tokenizeOnSpace) {
[60240] Fix | Delete
preventDefault = addCurrentToken();
[60241] Fix | Delete
}
[60242] Fix | Delete
break;
[60243] Fix | Delete
case 'Escape':
[60244] Fix | Delete
preventDefault = handleEscapeKey(event);
[60245] Fix | Delete
break;
[60246] Fix | Delete
default:
[60247] Fix | Delete
break;
[60248] Fix | Delete
}
[60249] Fix | Delete
if (preventDefault) {
[60250] Fix | Delete
event.preventDefault();
[60251] Fix | Delete
}
[60252] Fix | Delete
}
[60253] Fix | Delete
function onKeyPress(event) {
[60254] Fix | Delete
let preventDefault = false;
[60255] Fix | Delete
switch (event.key) {
[60256] Fix | Delete
case ',':
[60257] Fix | Delete
preventDefault = handleCommaKey();
[60258] Fix | Delete
break;
[60259] Fix | Delete
default:
[60260] Fix | Delete
break;
[60261] Fix | Delete
}
[60262] Fix | Delete
if (preventDefault) {
[60263] Fix | Delete
event.preventDefault();
[60264] Fix | Delete
}
[60265] Fix | Delete
}
[60266] Fix | Delete
function onContainerTouched(event) {
[60267] Fix | Delete
// Prevent clicking/touching the tokensAndInput container from blurring
[60268] Fix | Delete
// the input and adding the current token.
[60269] Fix | Delete
if (event.target === tokensAndInput.current && isActive) {
[60270] Fix | Delete
event.preventDefault();
[60271] Fix | Delete
}
[60272] Fix | Delete
}
[60273] Fix | Delete
function onTokenClickRemove(event) {
[60274] Fix | Delete
deleteToken(event.value);
[60275] Fix | Delete
focus();
[60276] Fix | Delete
}
[60277] Fix | Delete
function onSuggestionHovered(suggestion) {
[60278] Fix | Delete
const index = getMatchingSuggestions().indexOf(suggestion);
[60279] Fix | Delete
if (index >= 0) {
[60280] Fix | Delete
setSelectedSuggestionIndex(index);
[60281] Fix | Delete
setSelectedSuggestionScroll(false);
[60282] Fix | Delete
}
[60283] Fix | Delete
}
[60284] Fix | Delete
function onSuggestionSelected(suggestion) {
[60285] Fix | Delete
addNewToken(suggestion);
[60286] Fix | Delete
}
[60287] Fix | Delete
function onInputChangeHandler(event) {
[60288] Fix | Delete
const text = event.value;
[60289] Fix | Delete
const separator = tokenizeOnSpace ? /[ ,\t]+/ : /[,\t]+/;
[60290] Fix | Delete
const items = text.split(separator);
[60291] Fix | Delete
const tokenValue = items[items.length - 1] || '';
[60292] Fix | Delete
if (items.length > 1) {
[60293] Fix | Delete
addNewTokens(items.slice(0, -1));
[60294] Fix | Delete
}
[60295] Fix | Delete
setIncompleteTokenValue(tokenValue);
[60296] Fix | Delete
onInputChange(tokenValue);
[60297] Fix | Delete
}
[60298] Fix | Delete
function handleDeleteKey(_deleteToken) {
[60299] Fix | Delete
let preventDefault = false;
[60300] Fix | Delete
if (hasFocus() && isInputEmpty()) {
[60301] Fix | Delete
_deleteToken();
[60302] Fix | Delete
preventDefault = true;
[60303] Fix | Delete
}
[60304] Fix | Delete
return preventDefault;
[60305] Fix | Delete
}
[60306] Fix | Delete
function handleLeftArrowKey() {
[60307] Fix | Delete
let preventDefault = false;
[60308] Fix | Delete
if (isInputEmpty()) {
[60309] Fix | Delete
moveInputBeforePreviousToken();
[60310] Fix | Delete
preventDefault = true;
[60311] Fix | Delete
}
[60312] Fix | Delete
return preventDefault;
[60313] Fix | Delete
}
[60314] Fix | Delete
function handleRightArrowKey() {
[60315] Fix | Delete
let preventDefault = false;
[60316] Fix | Delete
if (isInputEmpty()) {
[60317] Fix | Delete
moveInputAfterNextToken();
[60318] Fix | Delete
preventDefault = true;
[60319] Fix | Delete
}
[60320] Fix | Delete
return preventDefault;
[60321] Fix | Delete
}
[60322] Fix | Delete
function handleUpArrowKey() {
[60323] Fix | Delete
setSelectedSuggestionIndex(index => {
[60324] Fix | Delete
return (index === 0 ? getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length : index) - 1;
[60325] Fix | Delete
});
[60326] Fix | Delete
setSelectedSuggestionScroll(true);
[60327] Fix | Delete
return true; // PreventDefault.
[60328] Fix | Delete
}
[60329] Fix | Delete
function handleDownArrowKey() {
[60330] Fix | Delete
setSelectedSuggestionIndex(index => {
[60331] Fix | Delete
return (index + 1) % getMatchingSuggestions(incompleteTokenValue, suggestions, value, maxSuggestions, saveTransform).length;
[60332] Fix | Delete
});
[60333] Fix | Delete
setSelectedSuggestionScroll(true);
[60334] Fix | Delete
return true; // PreventDefault.
[60335] Fix | Delete
}
[60336] Fix | Delete
function handleEscapeKey(event) {
[60337] Fix | Delete
if (event.target instanceof HTMLInputElement) {
[60338] Fix | Delete
setIncompleteTokenValue(event.target.value);
[60339] Fix | Delete
setIsExpanded(false);
[60340] Fix | Delete
setSelectedSuggestionIndex(-1);
[60341] Fix | Delete
setSelectedSuggestionScroll(false);
[60342] Fix | Delete
}
[60343] Fix | Delete
return true; // PreventDefault.
[60344] Fix | Delete
}
[60345] Fix | Delete
function handleCommaKey() {
[60346] Fix | Delete
if (inputHasValidValue()) {
[60347] Fix | Delete
addNewToken(incompleteTokenValue);
[60348] Fix | Delete
}
[60349] Fix | Delete
return true; // PreventDefault.
[60350] Fix | Delete
}
[60351] Fix | Delete
function moveInputToIndex(index) {
[60352] Fix | Delete
setInputOffsetFromEnd(value.length - Math.max(index, -1) - 1);
[60353] Fix | Delete
}
[60354] Fix | Delete
function moveInputBeforePreviousToken() {
[60355] Fix | Delete
setInputOffsetFromEnd(prevInputOffsetFromEnd => {
[60356] Fix | Delete
return Math.min(prevInputOffsetFromEnd + 1, value.length);
[60357] Fix | Delete
});
[60358] Fix | Delete
}
[60359] Fix | Delete
function moveInputAfterNextToken() {
[60360] Fix | Delete
setInputOffsetFromEnd(prevInputOffsetFromEnd => {
[60361] Fix | Delete
return Math.max(prevInputOffsetFromEnd - 1, 0);
[60362] Fix | Delete
});
[60363] Fix | Delete
}
[60364] Fix | Delete
function deleteTokenBeforeInput() {
[60365] Fix | Delete
const index = getIndexOfInput() - 1;
[60366] Fix | Delete
if (index > -1) {
[60367] Fix | Delete
deleteToken(value[index]);
[60368] Fix | Delete
}
[60369] Fix | Delete
}
[60370] Fix | Delete
function deleteTokenAfterInput() {
[60371] Fix | Delete
const index = getIndexOfInput();
[60372] Fix | Delete
if (index < value.length) {
[60373] Fix | Delete
deleteToken(value[index]);
[60374] Fix | Delete
// Update input offset since it's the offset from the last token.
[60375] Fix | Delete
moveInputToIndex(index);
[60376] Fix | Delete
}
[60377] Fix | Delete
}
[60378] Fix | Delete
function addCurrentToken() {
[60379] Fix | Delete
let preventDefault = false;
[60380] Fix | Delete
const selectedSuggestion = getSelectedSuggestion();
[60381] Fix | Delete
if (selectedSuggestion) {
[60382] Fix | Delete
addNewToken(selectedSuggestion);
[60383] Fix | Delete
preventDefault = true;
[60384] Fix | Delete
} else if (inputHasValidValue()) {
[60385] Fix | Delete
addNewToken(incompleteTokenValue);
[60386] Fix | Delete
preventDefault = true;
[60387] Fix | Delete
}
[60388] Fix | Delete
return preventDefault;
[60389] Fix | Delete
}
[60390] Fix | Delete
function addNewTokens(tokens) {
[60391] Fix | Delete
const tokensToAdd = [...new Set(tokens.map(saveTransform).filter(Boolean).filter(token => !valueContainsToken(token)))];
[60392] Fix | Delete
if (tokensToAdd.length > 0) {
[60393] Fix | Delete
const newValue = [...value];
[60394] Fix | Delete
newValue.splice(getIndexOfInput(), 0, ...tokensToAdd);
[60395] Fix | Delete
onChange(newValue);
[60396] Fix | Delete
}
[60397] Fix | Delete
}
[60398] Fix | Delete
function addNewToken(token) {
[60399] Fix | Delete
if (!__experimentalValidateInput(token)) {
[60400] Fix | Delete
(0,external_wp_a11y_namespaceObject.speak)(messages.__experimentalInvalid, 'assertive');
[60401] Fix | Delete
return;
[60402] Fix | Delete
}
[60403] Fix | Delete
addNewTokens([token]);
[60404] Fix | Delete
(0,external_wp_a11y_namespaceObject.speak)(messages.added, 'assertive');
[60405] Fix | Delete
setIncompleteTokenValue('');
[60406] Fix | Delete
setSelectedSuggestionIndex(-1);
[60407] Fix | Delete
setSelectedSuggestionScroll(false);
[60408] Fix | Delete
setIsExpanded(!__experimentalExpandOnFocus);
[60409] Fix | Delete
if (isActive && !tokenizeOnBlur) {
[60410] Fix | Delete
focus();
[60411] Fix | Delete
}
[60412] Fix | Delete
}
[60413] Fix | Delete
function deleteToken(token) {
[60414] Fix | Delete
const newTokens = value.filter(item => {
[60415] Fix | Delete
return getTokenValue(item) !== getTokenValue(token);
[60416] Fix | Delete
});
[60417] Fix | Delete
onChange(newTokens);
[60418] Fix | Delete
(0,external_wp_a11y_namespaceObject.speak)(messages.removed, 'assertive');
[60419] Fix | Delete
}
[60420] Fix | Delete
function getTokenValue(token) {
[60421] Fix | Delete
if ('object' === typeof token) {
[60422] Fix | Delete
return token.value;
[60423] Fix | Delete
}
[60424] Fix | Delete
return token;
[60425] Fix | Delete
}
[60426] Fix | Delete
function getMatchingSuggestions(searchValue = incompleteTokenValue, _suggestions = suggestions, _value = value, _maxSuggestions = maxSuggestions, _saveTransform = saveTransform) {
[60427] Fix | Delete
let match = _saveTransform(searchValue);
[60428] Fix | Delete
const startsWithMatch = [];
[60429] Fix | Delete
const containsMatch = [];
[60430] Fix | Delete
const normalizedValue = _value.map(item => {
[60431] Fix | Delete
if (typeof item === 'string') {
[60432] Fix | Delete
return item;
[60433] Fix | Delete
}
[60434] Fix | Delete
return item.value;
[60435] Fix | Delete
});
[60436] Fix | Delete
if (match.length === 0) {
[60437] Fix | Delete
_suggestions = _suggestions.filter(suggestion => !normalizedValue.includes(suggestion));
[60438] Fix | Delete
} else {
[60439] Fix | Delete
match = match.toLocaleLowerCase();
[60440] Fix | Delete
_suggestions.forEach(suggestion => {
[60441] Fix | Delete
const index = suggestion.toLocaleLowerCase().indexOf(match);
[60442] Fix | Delete
if (normalizedValue.indexOf(suggestion) === -1) {
[60443] Fix | Delete
if (index === 0) {
[60444] Fix | Delete
startsWithMatch.push(suggestion);
[60445] Fix | Delete
} else if (index > 0) {
[60446] Fix | Delete
containsMatch.push(suggestion);
[60447] Fix | Delete
}
[60448] Fix | Delete
}
[60449] Fix | Delete
});
[60450] Fix | Delete
_suggestions = startsWithMatch.concat(containsMatch);
[60451] Fix | Delete
}
[60452] Fix | Delete
return _suggestions.slice(0, _maxSuggestions);
[60453] Fix | Delete
}
[60454] Fix | Delete
function getSelectedSuggestion() {
[60455] Fix | Delete
if (selectedSuggestionIndex !== -1) {
[60456] Fix | Delete
return getMatchingSuggestions()[selectedSuggestionIndex];
[60457] Fix | Delete
}
[60458] Fix | Delete
return undefined;
[60459] Fix | Delete
}
[60460] Fix | Delete
function valueContainsToken(token) {
[60461] Fix | Delete
return value.some(item => {
[60462] Fix | Delete
return getTokenValue(token) === getTokenValue(item);
[60463] Fix | Delete
});
[60464] Fix | Delete
}
[60465] Fix | Delete
function getIndexOfInput() {
[60466] Fix | Delete
return value.length - inputOffsetFromEnd;
[60467] Fix | Delete
}
[60468] Fix | Delete
function isInputEmpty() {
[60469] Fix | Delete
return incompleteTokenValue.length === 0;
[60470] Fix | Delete
}
[60471] Fix | Delete
function inputHasValidValue() {
[60472] Fix | Delete
return saveTransform(incompleteTokenValue).length > 0;
[60473] Fix | Delete
}
[60474] Fix | Delete
function updateSuggestions(resetSelectedSuggestion = true) {
[60475] Fix | Delete
const inputHasMinimumChars = incompleteTokenValue.trim().length > 1;
[60476] Fix | Delete
const matchingSuggestions = getMatchingSuggestions(incompleteTokenValue);
[60477] Fix | Delete
const hasMatchingSuggestions = matchingSuggestions.length > 0;
[60478] Fix | Delete
const shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;
[60479] Fix | Delete
setIsExpanded(shouldExpandIfFocuses || inputHasMinimumChars && hasMatchingSuggestions);
[60480] Fix | Delete
if (resetSelectedSuggestion) {
[60481] Fix | Delete
if (__experimentalAutoSelectFirstMatch && inputHasMinimumChars && hasMatchingSuggestions) {
[60482] Fix | Delete
setSelectedSuggestionIndex(0);
[60483] Fix | Delete
setSelectedSuggestionScroll(true);
[60484] Fix | Delete
} else {
[60485] Fix | Delete
setSelectedSuggestionIndex(-1);
[60486] Fix | Delete
setSelectedSuggestionScroll(false);
[60487] Fix | Delete
}
[60488] Fix | Delete
}
[60489] Fix | Delete
if (inputHasMinimumChars) {
[60490] Fix | Delete
const message = hasMatchingSuggestions ? (0,external_wp_i18n_namespaceObject.sprintf)( /* translators: %d: number of results. */
[60491] Fix | Delete
(0,external_wp_i18n_namespaceObject._n)('%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', matchingSuggestions.length), matchingSuggestions.length) : (0,external_wp_i18n_namespaceObject.__)('No results.');
[60492] Fix | Delete
debouncedSpeak(message, 'assertive');
[60493] Fix | Delete
}
[60494] Fix | Delete
}
[60495] Fix | Delete
function renderTokensAndInput() {
[60496] Fix | Delete
const components = value.map(renderToken);
[60497] Fix | Delete
components.splice(getIndexOfInput(), 0, renderInput());
[60498] Fix | Delete
return components;
[60499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function