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: block-editor.js
}
[26000] Fix | Delete
function useHasBorderRadiusControl(settings) {
[26001] Fix | Delete
return settings?.border?.radius;
[26002] Fix | Delete
}
[26003] Fix | Delete
function useHasBorderStyleControl(settings) {
[26004] Fix | Delete
return settings?.border?.style;
[26005] Fix | Delete
}
[26006] Fix | Delete
function useHasBorderWidthControl(settings) {
[26007] Fix | Delete
return settings?.border?.width;
[26008] Fix | Delete
}
[26009] Fix | Delete
function useHasShadowControl(settings) {
[26010] Fix | Delete
const shadows = useShadowPresets(settings);
[26011] Fix | Delete
return !!settings?.shadow && shadows.length > 0;
[26012] Fix | Delete
}
[26013] Fix | Delete
function BorderToolsPanel({
[26014] Fix | Delete
resetAllFilter,
[26015] Fix | Delete
onChange,
[26016] Fix | Delete
value,
[26017] Fix | Delete
panelId,
[26018] Fix | Delete
children,
[26019] Fix | Delete
label
[26020] Fix | Delete
}) {
[26021] Fix | Delete
const dropdownMenuProps = useToolsPanelDropdownMenuProps();
[26022] Fix | Delete
const resetAll = () => {
[26023] Fix | Delete
const updatedValue = resetAllFilter(value);
[26024] Fix | Delete
onChange(updatedValue);
[26025] Fix | Delete
};
[26026] Fix | Delete
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanel, {
[26027] Fix | Delete
label: label,
[26028] Fix | Delete
resetAll: resetAll,
[26029] Fix | Delete
panelId: panelId,
[26030] Fix | Delete
dropdownMenuProps: dropdownMenuProps,
[26031] Fix | Delete
children: children
[26032] Fix | Delete
});
[26033] Fix | Delete
}
[26034] Fix | Delete
const border_panel_DEFAULT_CONTROLS = {
[26035] Fix | Delete
radius: true,
[26036] Fix | Delete
color: true,
[26037] Fix | Delete
width: true,
[26038] Fix | Delete
shadow: true
[26039] Fix | Delete
};
[26040] Fix | Delete
function BorderPanel({
[26041] Fix | Delete
as: Wrapper = BorderToolsPanel,
[26042] Fix | Delete
value,
[26043] Fix | Delete
onChange,
[26044] Fix | Delete
inheritedValue = value,
[26045] Fix | Delete
settings,
[26046] Fix | Delete
panelId,
[26047] Fix | Delete
name,
[26048] Fix | Delete
defaultControls = border_panel_DEFAULT_CONTROLS
[26049] Fix | Delete
}) {
[26050] Fix | Delete
var _settings$shadow$pres, _ref, _ref2, _shadowPresets$custom;
[26051] Fix | Delete
const colors = useColorsPerOrigin(settings);
[26052] Fix | Delete
const decodeValue = (0,external_wp_element_namespaceObject.useCallback)(rawValue => getValueFromVariable({
[26053] Fix | Delete
settings
[26054] Fix | Delete
}, '', rawValue), [settings]);
[26055] Fix | Delete
const encodeColorValue = colorValue => {
[26056] Fix | Delete
const allColors = colors.flatMap(({
[26057] Fix | Delete
colors: originColors
[26058] Fix | Delete
}) => originColors);
[26059] Fix | Delete
const colorObject = allColors.find(({
[26060] Fix | Delete
color
[26061] Fix | Delete
}) => color === colorValue);
[26062] Fix | Delete
return colorObject ? 'var:preset|color|' + colorObject.slug : colorValue;
[26063] Fix | Delete
};
[26064] Fix | Delete
const border = (0,external_wp_element_namespaceObject.useMemo)(() => {
[26065] Fix | Delete
if ((0,external_wp_components_namespaceObject.__experimentalHasSplitBorders)(inheritedValue?.border)) {
[26066] Fix | Delete
const borderValue = {
[26067] Fix | Delete
...inheritedValue?.border
[26068] Fix | Delete
};
[26069] Fix | Delete
['top', 'right', 'bottom', 'left'].forEach(side => {
[26070] Fix | Delete
borderValue[side] = {
[26071] Fix | Delete
...borderValue[side],
[26072] Fix | Delete
color: decodeValue(borderValue[side]?.color)
[26073] Fix | Delete
};
[26074] Fix | Delete
});
[26075] Fix | Delete
return borderValue;
[26076] Fix | Delete
}
[26077] Fix | Delete
return {
[26078] Fix | Delete
...inheritedValue?.border,
[26079] Fix | Delete
color: inheritedValue?.border?.color ? decodeValue(inheritedValue?.border?.color) : undefined
[26080] Fix | Delete
};
[26081] Fix | Delete
}, [inheritedValue?.border, decodeValue]);
[26082] Fix | Delete
const setBorder = newBorder => onChange({
[26083] Fix | Delete
...value,
[26084] Fix | Delete
border: newBorder
[26085] Fix | Delete
});
[26086] Fix | Delete
const showBorderColor = useHasBorderColorControl(settings);
[26087] Fix | Delete
const showBorderStyle = useHasBorderStyleControl(settings);
[26088] Fix | Delete
const showBorderWidth = useHasBorderWidthControl(settings);
[26089] Fix | Delete
[26090] Fix | Delete
// Border radius.
[26091] Fix | Delete
const showBorderRadius = useHasBorderRadiusControl(settings);
[26092] Fix | Delete
const borderRadiusValues = decodeValue(border?.radius);
[26093] Fix | Delete
const setBorderRadius = newBorderRadius => setBorder({
[26094] Fix | Delete
...border,
[26095] Fix | Delete
radius: newBorderRadius
[26096] Fix | Delete
});
[26097] Fix | Delete
const hasBorderRadius = () => {
[26098] Fix | Delete
const borderValues = value?.border?.radius;
[26099] Fix | Delete
if (typeof borderValues === 'object') {
[26100] Fix | Delete
return Object.entries(borderValues).some(Boolean);
[26101] Fix | Delete
}
[26102] Fix | Delete
return !!borderValues;
[26103] Fix | Delete
};
[26104] Fix | Delete
const hasShadowControl = useHasShadowControl(settings);
[26105] Fix | Delete
[26106] Fix | Delete
// Shadow
[26107] Fix | Delete
const shadow = decodeValue(inheritedValue?.shadow);
[26108] Fix | Delete
const shadowPresets = (_settings$shadow$pres = settings?.shadow?.presets) !== null && _settings$shadow$pres !== void 0 ? _settings$shadow$pres : {};
[26109] Fix | Delete
const mergedShadowPresets = (_ref = (_ref2 = (_shadowPresets$custom = shadowPresets.custom) !== null && _shadowPresets$custom !== void 0 ? _shadowPresets$custom : shadowPresets.theme) !== null && _ref2 !== void 0 ? _ref2 : shadowPresets.default) !== null && _ref !== void 0 ? _ref : [];
[26110] Fix | Delete
const setShadow = newValue => {
[26111] Fix | Delete
const slug = mergedShadowPresets?.find(({
[26112] Fix | Delete
shadow: shadowName
[26113] Fix | Delete
}) => shadowName === newValue)?.slug;
[26114] Fix | Delete
onChange(setImmutably(value, ['shadow'], slug ? `var:preset|shadow|${slug}` : newValue || undefined));
[26115] Fix | Delete
};
[26116] Fix | Delete
const hasShadow = () => !!value?.shadow;
[26117] Fix | Delete
const resetShadow = () => setShadow(undefined);
[26118] Fix | Delete
const resetBorder = () => {
[26119] Fix | Delete
if (hasBorderRadius()) {
[26120] Fix | Delete
return setBorder({
[26121] Fix | Delete
radius: value?.border?.radius
[26122] Fix | Delete
});
[26123] Fix | Delete
}
[26124] Fix | Delete
setBorder(undefined);
[26125] Fix | Delete
};
[26126] Fix | Delete
const onBorderChange = newBorder => {
[26127] Fix | Delete
// Ensure we have a visible border style when a border width or
[26128] Fix | Delete
// color is being selected.
[26129] Fix | Delete
const updatedBorder = {
[26130] Fix | Delete
...newBorder
[26131] Fix | Delete
};
[26132] Fix | Delete
if ((0,external_wp_components_namespaceObject.__experimentalHasSplitBorders)(updatedBorder)) {
[26133] Fix | Delete
['top', 'right', 'bottom', 'left'].forEach(side => {
[26134] Fix | Delete
if (updatedBorder[side]) {
[26135] Fix | Delete
updatedBorder[side] = {
[26136] Fix | Delete
...updatedBorder[side],
[26137] Fix | Delete
color: encodeColorValue(updatedBorder[side]?.color)
[26138] Fix | Delete
};
[26139] Fix | Delete
}
[26140] Fix | Delete
});
[26141] Fix | Delete
} else if (updatedBorder) {
[26142] Fix | Delete
updatedBorder.color = encodeColorValue(updatedBorder.color);
[26143] Fix | Delete
}
[26144] Fix | Delete
[26145] Fix | Delete
// As radius is maintained separately to color, style, and width
[26146] Fix | Delete
// maintain its value. Undefined values here will be cleaned when
[26147] Fix | Delete
// global styles are saved.
[26148] Fix | Delete
setBorder({
[26149] Fix | Delete
radius: border?.radius,
[26150] Fix | Delete
...updatedBorder
[26151] Fix | Delete
});
[26152] Fix | Delete
};
[26153] Fix | Delete
const resetAllFilter = (0,external_wp_element_namespaceObject.useCallback)(previousValue => {
[26154] Fix | Delete
return {
[26155] Fix | Delete
...previousValue,
[26156] Fix | Delete
border: undefined,
[26157] Fix | Delete
shadow: undefined
[26158] Fix | Delete
};
[26159] Fix | Delete
}, []);
[26160] Fix | Delete
const showBorderByDefault = defaultControls?.color || defaultControls?.width;
[26161] Fix | Delete
const hasBorderControl = showBorderColor || showBorderStyle || showBorderWidth || showBorderRadius;
[26162] Fix | Delete
const label = useBorderPanelLabel({
[26163] Fix | Delete
blockName: name,
[26164] Fix | Delete
hasShadowControl,
[26165] Fix | Delete
hasBorderControl
[26166] Fix | Delete
});
[26167] Fix | Delete
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(Wrapper, {
[26168] Fix | Delete
resetAllFilter: resetAllFilter,
[26169] Fix | Delete
value: value,
[26170] Fix | Delete
onChange: onChange,
[26171] Fix | Delete
panelId: panelId,
[26172] Fix | Delete
label: label,
[26173] Fix | Delete
children: [(showBorderWidth || showBorderColor) && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
[26174] Fix | Delete
hasValue: () => (0,external_wp_components_namespaceObject.__experimentalIsDefinedBorder)(value?.border),
[26175] Fix | Delete
label: (0,external_wp_i18n_namespaceObject.__)('Border'),
[26176] Fix | Delete
onDeselect: () => resetBorder(),
[26177] Fix | Delete
isShownByDefault: showBorderByDefault,
[26178] Fix | Delete
panelId: panelId,
[26179] Fix | Delete
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalBorderBoxControl, {
[26180] Fix | Delete
colors: colors,
[26181] Fix | Delete
enableAlpha: true,
[26182] Fix | Delete
enableStyle: showBorderStyle,
[26183] Fix | Delete
onChange: onBorderChange,
[26184] Fix | Delete
popoverOffset: 40,
[26185] Fix | Delete
popoverPlacement: "left-start",
[26186] Fix | Delete
value: border,
[26187] Fix | Delete
__experimentalIsRenderedInSidebar: true,
[26188] Fix | Delete
size: "__unstable-large",
[26189] Fix | Delete
hideLabelFromVision: !hasShadowControl,
[26190] Fix | Delete
label: (0,external_wp_i18n_namespaceObject.__)('Border')
[26191] Fix | Delete
})
[26192] Fix | Delete
}), showBorderRadius && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
[26193] Fix | Delete
hasValue: hasBorderRadius,
[26194] Fix | Delete
label: (0,external_wp_i18n_namespaceObject.__)('Radius'),
[26195] Fix | Delete
onDeselect: () => setBorderRadius(undefined),
[26196] Fix | Delete
isShownByDefault: defaultControls.radius,
[26197] Fix | Delete
panelId: panelId,
[26198] Fix | Delete
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BorderRadiusControl, {
[26199] Fix | Delete
values: borderRadiusValues,
[26200] Fix | Delete
onChange: newValue => {
[26201] Fix | Delete
setBorderRadius(newValue || undefined);
[26202] Fix | Delete
}
[26203] Fix | Delete
})
[26204] Fix | Delete
}), hasShadowControl && /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsxs)(external_wp_components_namespaceObject.__experimentalToolsPanelItem, {
[26205] Fix | Delete
label: (0,external_wp_i18n_namespaceObject.__)('Shadow'),
[26206] Fix | Delete
hasValue: hasShadow,
[26207] Fix | Delete
onDeselect: resetShadow,
[26208] Fix | Delete
isShownByDefault: defaultControls.shadow,
[26209] Fix | Delete
panelId: panelId,
[26210] Fix | Delete
children: [hasBorderControl ? /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.BaseControl.VisualLabel, {
[26211] Fix | Delete
as: "legend",
[26212] Fix | Delete
children: (0,external_wp_i18n_namespaceObject.__)('Shadow')
[26213] Fix | Delete
}) : null, /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(external_wp_components_namespaceObject.__experimentalItemGroup, {
[26214] Fix | Delete
isBordered: true,
[26215] Fix | Delete
isSeparated: true,
[26216] Fix | Delete
children: /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(ShadowPopover, {
[26217] Fix | Delete
shadow: shadow,
[26218] Fix | Delete
onShadowChange: setShadow,
[26219] Fix | Delete
settings: settings
[26220] Fix | Delete
})
[26221] Fix | Delete
})]
[26222] Fix | Delete
})]
[26223] Fix | Delete
});
[26224] Fix | Delete
}
[26225] Fix | Delete
[26226] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/hooks/border.js
[26227] Fix | Delete
/**
[26228] Fix | Delete
* External dependencies
[26229] Fix | Delete
*/
[26230] Fix | Delete
[26231] Fix | Delete
[26232] Fix | Delete
/**
[26233] Fix | Delete
* WordPress dependencies
[26234] Fix | Delete
*/
[26235] Fix | Delete
[26236] Fix | Delete
[26237] Fix | Delete
[26238] Fix | Delete
[26239] Fix | Delete
[26240] Fix | Delete
[26241] Fix | Delete
/**
[26242] Fix | Delete
* Internal dependencies
[26243] Fix | Delete
*/
[26244] Fix | Delete
[26245] Fix | Delete
[26246] Fix | Delete
[26247] Fix | Delete
[26248] Fix | Delete
[26249] Fix | Delete
[26250] Fix | Delete
[26251] Fix | Delete
[26252] Fix | Delete
const BORDER_SUPPORT_KEY = '__experimentalBorder';
[26253] Fix | Delete
const SHADOW_SUPPORT_KEY = 'shadow';
[26254] Fix | Delete
const getColorByProperty = (colors, property, value) => {
[26255] Fix | Delete
let matchedColor;
[26256] Fix | Delete
colors.some(origin => origin.colors.some(color => {
[26257] Fix | Delete
if (color[property] === value) {
[26258] Fix | Delete
matchedColor = color;
[26259] Fix | Delete
return true;
[26260] Fix | Delete
}
[26261] Fix | Delete
return false;
[26262] Fix | Delete
}));
[26263] Fix | Delete
return matchedColor;
[26264] Fix | Delete
};
[26265] Fix | Delete
const getMultiOriginColor = ({
[26266] Fix | Delete
colors,
[26267] Fix | Delete
namedColor,
[26268] Fix | Delete
customColor
[26269] Fix | Delete
}) => {
[26270] Fix | Delete
// Search each origin (default, theme, or user) for matching color by name.
[26271] Fix | Delete
if (namedColor) {
[26272] Fix | Delete
const colorObject = getColorByProperty(colors, 'slug', namedColor);
[26273] Fix | Delete
if (colorObject) {
[26274] Fix | Delete
return colorObject;
[26275] Fix | Delete
}
[26276] Fix | Delete
}
[26277] Fix | Delete
[26278] Fix | Delete
// Skip if no custom color or matching named color.
[26279] Fix | Delete
if (!customColor) {
[26280] Fix | Delete
return {
[26281] Fix | Delete
color: undefined
[26282] Fix | Delete
};
[26283] Fix | Delete
}
[26284] Fix | Delete
[26285] Fix | Delete
// Attempt to find color via custom color value or build new object.
[26286] Fix | Delete
const colorObject = getColorByProperty(colors, 'color', customColor);
[26287] Fix | Delete
return colorObject ? colorObject : {
[26288] Fix | Delete
color: customColor
[26289] Fix | Delete
};
[26290] Fix | Delete
};
[26291] Fix | Delete
function getColorSlugFromVariable(value) {
[26292] Fix | Delete
const namedColor = /var:preset\|color\|(.+)/.exec(value);
[26293] Fix | Delete
if (namedColor && namedColor[1]) {
[26294] Fix | Delete
return namedColor[1];
[26295] Fix | Delete
}
[26296] Fix | Delete
return null;
[26297] Fix | Delete
}
[26298] Fix | Delete
function styleToAttributes(style) {
[26299] Fix | Delete
if ((0,external_wp_components_namespaceObject.__experimentalHasSplitBorders)(style?.border)) {
[26300] Fix | Delete
return {
[26301] Fix | Delete
style,
[26302] Fix | Delete
borderColor: undefined
[26303] Fix | Delete
};
[26304] Fix | Delete
}
[26305] Fix | Delete
const borderColorValue = style?.border?.color;
[26306] Fix | Delete
const borderColorSlug = borderColorValue?.startsWith('var:preset|color|') ? borderColorValue.substring('var:preset|color|'.length) : undefined;
[26307] Fix | Delete
const updatedStyle = {
[26308] Fix | Delete
...style
[26309] Fix | Delete
};
[26310] Fix | Delete
updatedStyle.border = {
[26311] Fix | Delete
...updatedStyle.border,
[26312] Fix | Delete
color: borderColorSlug ? undefined : borderColorValue
[26313] Fix | Delete
};
[26314] Fix | Delete
return {
[26315] Fix | Delete
style: utils_cleanEmptyObject(updatedStyle),
[26316] Fix | Delete
borderColor: borderColorSlug
[26317] Fix | Delete
};
[26318] Fix | Delete
}
[26319] Fix | Delete
function attributesToStyle(attributes) {
[26320] Fix | Delete
if ((0,external_wp_components_namespaceObject.__experimentalHasSplitBorders)(attributes.style?.border)) {
[26321] Fix | Delete
return attributes.style;
[26322] Fix | Delete
}
[26323] Fix | Delete
return {
[26324] Fix | Delete
...attributes.style,
[26325] Fix | Delete
border: {
[26326] Fix | Delete
...attributes.style?.border,
[26327] Fix | Delete
color: attributes.borderColor ? 'var:preset|color|' + attributes.borderColor : attributes.style?.border?.color
[26328] Fix | Delete
}
[26329] Fix | Delete
};
[26330] Fix | Delete
}
[26331] Fix | Delete
function BordersInspectorControl({
[26332] Fix | Delete
label,
[26333] Fix | Delete
children,
[26334] Fix | Delete
resetAllFilter
[26335] Fix | Delete
}) {
[26336] Fix | Delete
const attributesResetAllFilter = (0,external_wp_element_namespaceObject.useCallback)(attributes => {
[26337] Fix | Delete
const existingStyle = attributesToStyle(attributes);
[26338] Fix | Delete
const updatedStyle = resetAllFilter(existingStyle);
[26339] Fix | Delete
return {
[26340] Fix | Delete
...attributes,
[26341] Fix | Delete
...styleToAttributes(updatedStyle)
[26342] Fix | Delete
};
[26343] Fix | Delete
}, [resetAllFilter]);
[26344] Fix | Delete
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(inspector_controls, {
[26345] Fix | Delete
group: "border",
[26346] Fix | Delete
resetAllFilter: attributesResetAllFilter,
[26347] Fix | Delete
label: label,
[26348] Fix | Delete
children: children
[26349] Fix | Delete
});
[26350] Fix | Delete
}
[26351] Fix | Delete
function border_BorderPanel({
[26352] Fix | Delete
clientId,
[26353] Fix | Delete
name,
[26354] Fix | Delete
setAttributes,
[26355] Fix | Delete
settings
[26356] Fix | Delete
}) {
[26357] Fix | Delete
const isEnabled = useHasBorderPanel(settings);
[26358] Fix | Delete
function selector(select) {
[26359] Fix | Delete
const {
[26360] Fix | Delete
style,
[26361] Fix | Delete
borderColor
[26362] Fix | Delete
} = select(store).getBlockAttributes(clientId) || {};
[26363] Fix | Delete
return {
[26364] Fix | Delete
style,
[26365] Fix | Delete
borderColor
[26366] Fix | Delete
};
[26367] Fix | Delete
}
[26368] Fix | Delete
const {
[26369] Fix | Delete
style,
[26370] Fix | Delete
borderColor
[26371] Fix | Delete
} = (0,external_wp_data_namespaceObject.useSelect)(selector, [clientId]);
[26372] Fix | Delete
const value = (0,external_wp_element_namespaceObject.useMemo)(() => {
[26373] Fix | Delete
return attributesToStyle({
[26374] Fix | Delete
style,
[26375] Fix | Delete
borderColor
[26376] Fix | Delete
});
[26377] Fix | Delete
}, [style, borderColor]);
[26378] Fix | Delete
const onChange = newStyle => {
[26379] Fix | Delete
setAttributes(styleToAttributes(newStyle));
[26380] Fix | Delete
};
[26381] Fix | Delete
if (!isEnabled) {
[26382] Fix | Delete
return null;
[26383] Fix | Delete
}
[26384] Fix | Delete
const defaultControls = {
[26385] Fix | Delete
...(0,external_wp_blocks_namespaceObject.getBlockSupport)(name, [BORDER_SUPPORT_KEY, '__experimentalDefaultControls']),
[26386] Fix | Delete
...(0,external_wp_blocks_namespaceObject.getBlockSupport)(name, [SHADOW_SUPPORT_KEY, '__experimentalDefaultControls'])
[26387] Fix | Delete
};
[26388] Fix | Delete
return /*#__PURE__*/(0,external_ReactJSXRuntime_namespaceObject.jsx)(BorderPanel, {
[26389] Fix | Delete
as: BordersInspectorControl,
[26390] Fix | Delete
panelId: clientId,
[26391] Fix | Delete
settings: settings,
[26392] Fix | Delete
value: value,
[26393] Fix | Delete
onChange: onChange,
[26394] Fix | Delete
defaultControls: defaultControls
[26395] Fix | Delete
});
[26396] Fix | Delete
}
[26397] Fix | Delete
[26398] Fix | Delete
/**
[26399] Fix | Delete
* Determine whether there is block support for border properties.
[26400] Fix | Delete
*
[26401] Fix | Delete
* @param {string} blockName Block name.
[26402] Fix | Delete
* @param {string} feature Border feature to check support for.
[26403] Fix | Delete
*
[26404] Fix | Delete
* @return {boolean} Whether there is support.
[26405] Fix | Delete
*/
[26406] Fix | Delete
function hasBorderSupport(blockName, feature = 'any') {
[26407] Fix | Delete
if (external_wp_element_namespaceObject.Platform.OS !== 'web') {
[26408] Fix | Delete
return false;
[26409] Fix | Delete
}
[26410] Fix | Delete
const support = (0,external_wp_blocks_namespaceObject.getBlockSupport)(blockName, BORDER_SUPPORT_KEY);
[26411] Fix | Delete
if (support === true) {
[26412] Fix | Delete
return true;
[26413] Fix | Delete
}
[26414] Fix | Delete
if (feature === 'any') {
[26415] Fix | Delete
return !!(support?.color || support?.radius || support?.width || support?.style);
[26416] Fix | Delete
}
[26417] Fix | Delete
return !!support?.[feature];
[26418] Fix | Delete
}
[26419] Fix | Delete
[26420] Fix | Delete
/**
[26421] Fix | Delete
* Determine whether there is block support for shadow properties.
[26422] Fix | Delete
*
[26423] Fix | Delete
* @param {string} blockName Block name.
[26424] Fix | Delete
*
[26425] Fix | Delete
* @return {boolean} Whether there is support.
[26426] Fix | Delete
*/
[26427] Fix | Delete
function hasShadowSupport(blockName) {
[26428] Fix | Delete
return hasBlockSupport(blockName, SHADOW_SUPPORT_KEY);
[26429] Fix | Delete
}
[26430] Fix | Delete
function useBorderPanelLabel({
[26431] Fix | Delete
blockName,
[26432] Fix | Delete
hasBorderControl,
[26433] Fix | Delete
hasShadowControl
[26434] Fix | Delete
} = {}) {
[26435] Fix | Delete
const settings = useBlockSettings(blockName);
[26436] Fix | Delete
const controls = useHasBorderPanelControls(settings);
[26437] Fix | Delete
if (!hasBorderControl && !hasShadowControl && blockName) {
[26438] Fix | Delete
hasBorderControl = controls?.hasBorderColor || controls?.hasBorderStyle || controls?.hasBorderWidth || controls?.hasBorderRadius;
[26439] Fix | Delete
hasShadowControl = controls?.hasShadow;
[26440] Fix | Delete
}
[26441] Fix | Delete
if (hasBorderControl && hasShadowControl) {
[26442] Fix | Delete
return (0,external_wp_i18n_namespaceObject.__)('Border & Shadow');
[26443] Fix | Delete
}
[26444] Fix | Delete
if (hasShadowControl) {
[26445] Fix | Delete
return (0,external_wp_i18n_namespaceObject.__)('Shadow');
[26446] Fix | Delete
}
[26447] Fix | Delete
return (0,external_wp_i18n_namespaceObject.__)('Border');
[26448] Fix | Delete
}
[26449] Fix | Delete
[26450] Fix | Delete
/**
[26451] Fix | Delete
* Returns a new style object where the specified border attribute has been
[26452] Fix | Delete
* removed.
[26453] Fix | Delete
*
[26454] Fix | Delete
* @param {Object} style Styles from block attributes.
[26455] Fix | Delete
* @param {string} attribute The border style attribute to clear.
[26456] Fix | Delete
*
[26457] Fix | Delete
* @return {Object} Style object with the specified attribute removed.
[26458] Fix | Delete
*/
[26459] Fix | Delete
function removeBorderAttribute(style, attribute) {
[26460] Fix | Delete
return cleanEmptyObject({
[26461] Fix | Delete
...style,
[26462] Fix | Delete
border: {
[26463] Fix | Delete
...style?.border,
[26464] Fix | Delete
[attribute]: undefined
[26465] Fix | Delete
}
[26466] Fix | Delete
});
[26467] Fix | Delete
}
[26468] Fix | Delete
[26469] Fix | Delete
/**
[26470] Fix | Delete
* Filters registered block settings, extending attributes to include
[26471] Fix | Delete
* `borderColor` if needed.
[26472] Fix | Delete
*
[26473] Fix | Delete
* @param {Object} settings Original block settings.
[26474] Fix | Delete
*
[26475] Fix | Delete
* @return {Object} Updated block settings.
[26476] Fix | Delete
*/
[26477] Fix | Delete
function addAttributes(settings) {
[26478] Fix | Delete
if (!hasBorderSupport(settings, 'color')) {
[26479] Fix | Delete
return settings;
[26480] Fix | Delete
}
[26481] Fix | Delete
[26482] Fix | Delete
// Allow blocks to specify default value if needed.
[26483] Fix | Delete
if (settings.attributes.borderColor) {
[26484] Fix | Delete
return settings;
[26485] Fix | Delete
}
[26486] Fix | Delete
[26487] Fix | Delete
// Add new borderColor attribute to block settings.
[26488] Fix | Delete
return {
[26489] Fix | Delete
...settings,
[26490] Fix | Delete
attributes: {
[26491] Fix | Delete
...settings.attributes,
[26492] Fix | Delete
borderColor: {
[26493] Fix | Delete
type: 'string'
[26494] Fix | Delete
}
[26495] Fix | Delete
}
[26496] Fix | Delete
};
[26497] Fix | Delete
}
[26498] Fix | Delete
[26499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function