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
* @property {?string} minViewportWidth Minimum viewport size from which type will have fluidity. Optional if size is specified.
[16500] Fix | Delete
* @property {?string} maxViewportWidth Maximum size up to which type will have fluidity. Optional if size is specified.
[16501] Fix | Delete
* @property {?number} scaleFactor A scale factor to determine how fast a font scales within boundaries. Optional.
[16502] Fix | Delete
* @property {?number} minFontSizeFactor How much to scale defaultFontSize by to derive minimumFontSize. Optional.
[16503] Fix | Delete
* @property {?string} minFontSize The smallest a calculated font size may be. Optional.
[16504] Fix | Delete
*/
[16505] Fix | Delete
[16506] Fix | Delete
/**
[16507] Fix | Delete
* Returns a font-size value based on a given font-size preset.
[16508] Fix | Delete
* Takes into account fluid typography parameters and attempts to return a css formula depending on available, valid values.
[16509] Fix | Delete
*
[16510] Fix | Delete
* @param {Preset} preset
[16511] Fix | Delete
* @param {Object} settings
[16512] Fix | Delete
* @param {boolean|TypographySettings} settings.typography.fluid Whether fluid typography is enabled, and, optionally, fluid font size options.
[16513] Fix | Delete
* @param {Object?} settings.typography.layout Layout options.
[16514] Fix | Delete
*
[16515] Fix | Delete
* @return {string|*} A font-size value or the value of preset.size.
[16516] Fix | Delete
*/
[16517] Fix | Delete
function getTypographyFontSizeValue(preset, settings) {
[16518] Fix | Delete
const {
[16519] Fix | Delete
size: defaultSize
[16520] Fix | Delete
} = preset;
[16521] Fix | Delete
if (!isFluidTypographyEnabled(settings?.typography)) {
[16522] Fix | Delete
return defaultSize;
[16523] Fix | Delete
}
[16524] Fix | Delete
/*
[16525] Fix | Delete
* Checks whether a font size has explicitly bypassed fluid calculations.
[16526] Fix | Delete
* Also catches falsy values and 0/'0'.
[16527] Fix | Delete
* Fluid calculations cannot be performed on `0`.
[16528] Fix | Delete
*/
[16529] Fix | Delete
if (!defaultSize || '0' === defaultSize || false === preset?.fluid) {
[16530] Fix | Delete
return defaultSize;
[16531] Fix | Delete
}
[16532] Fix | Delete
let fluidTypographySettings = getFluidTypographyOptionsFromSettings(settings);
[16533] Fix | Delete
fluidTypographySettings = typeof fluidTypographySettings?.fluid === 'object' ? fluidTypographySettings?.fluid : {};
[16534] Fix | Delete
const fluidFontSizeValue = getComputedFluidTypographyValue({
[16535] Fix | Delete
minimumFontSize: preset?.fluid?.min,
[16536] Fix | Delete
maximumFontSize: preset?.fluid?.max,
[16537] Fix | Delete
fontSize: defaultSize,
[16538] Fix | Delete
minimumFontSizeLimit: fluidTypographySettings?.minFontSize,
[16539] Fix | Delete
maximumViewportWidth: fluidTypographySettings?.maxViewportWidth,
[16540] Fix | Delete
minimumViewportWidth: fluidTypographySettings?.minViewportWidth
[16541] Fix | Delete
});
[16542] Fix | Delete
if (!!fluidFontSizeValue) {
[16543] Fix | Delete
return fluidFontSizeValue;
[16544] Fix | Delete
}
[16545] Fix | Delete
return defaultSize;
[16546] Fix | Delete
}
[16547] Fix | Delete
function isFluidTypographyEnabled(typographySettings) {
[16548] Fix | Delete
const fluidSettings = typographySettings?.fluid;
[16549] Fix | Delete
return true === fluidSettings || fluidSettings && typeof fluidSettings === 'object' && Object.keys(fluidSettings).length > 0;
[16550] Fix | Delete
}
[16551] Fix | Delete
[16552] Fix | Delete
/**
[16553] Fix | Delete
* Returns fluid typography settings from theme.json setting object.
[16554] Fix | Delete
*
[16555] Fix | Delete
* @param {Object} settings Theme.json settings
[16556] Fix | Delete
* @param {Object} settings.typography Theme.json typography settings
[16557] Fix | Delete
* @param {Object} settings.layout Theme.json layout settings
[16558] Fix | Delete
* @return {TypographySettings} Fluid typography settings
[16559] Fix | Delete
*/
[16560] Fix | Delete
function getFluidTypographyOptionsFromSettings(settings) {
[16561] Fix | Delete
const typographySettings = settings?.typography;
[16562] Fix | Delete
const layoutSettings = settings?.layout;
[16563] Fix | Delete
const defaultMaxViewportWidth = getTypographyValueAndUnit(layoutSettings?.wideSize) ? layoutSettings?.wideSize : null;
[16564] Fix | Delete
return isFluidTypographyEnabled(typographySettings) && defaultMaxViewportWidth ? {
[16565] Fix | Delete
fluid: {
[16566] Fix | Delete
maxViewportWidth: defaultMaxViewportWidth,
[16567] Fix | Delete
...typographySettings.fluid
[16568] Fix | Delete
}
[16569] Fix | Delete
} : {
[16570] Fix | Delete
fluid: typographySettings?.fluid
[16571] Fix | Delete
};
[16572] Fix | Delete
}
[16573] Fix | Delete
[16574] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/global-styles/utils.js
[16575] Fix | Delete
/**
[16576] Fix | Delete
* External dependencies
[16577] Fix | Delete
*/
[16578] Fix | Delete
[16579] Fix | Delete
[16580] Fix | Delete
/**
[16581] Fix | Delete
* WordPress dependencies
[16582] Fix | Delete
*/
[16583] Fix | Delete
[16584] Fix | Delete
[16585] Fix | Delete
/**
[16586] Fix | Delete
* Internal dependencies
[16587] Fix | Delete
*/
[16588] Fix | Delete
[16589] Fix | Delete
[16590] Fix | Delete
[16591] Fix | Delete
/* Supporting data. */
[16592] Fix | Delete
const ROOT_BLOCK_SELECTOR = 'body';
[16593] Fix | Delete
const ROOT_CSS_PROPERTIES_SELECTOR = ':root';
[16594] Fix | Delete
const PRESET_METADATA = [{
[16595] Fix | Delete
path: ['color', 'palette'],
[16596] Fix | Delete
valueKey: 'color',
[16597] Fix | Delete
cssVarInfix: 'color',
[16598] Fix | Delete
classes: [{
[16599] Fix | Delete
classSuffix: 'color',
[16600] Fix | Delete
propertyName: 'color'
[16601] Fix | Delete
}, {
[16602] Fix | Delete
classSuffix: 'background-color',
[16603] Fix | Delete
propertyName: 'background-color'
[16604] Fix | Delete
}, {
[16605] Fix | Delete
classSuffix: 'border-color',
[16606] Fix | Delete
propertyName: 'border-color'
[16607] Fix | Delete
}]
[16608] Fix | Delete
}, {
[16609] Fix | Delete
path: ['color', 'gradients'],
[16610] Fix | Delete
valueKey: 'gradient',
[16611] Fix | Delete
cssVarInfix: 'gradient',
[16612] Fix | Delete
classes: [{
[16613] Fix | Delete
classSuffix: 'gradient-background',
[16614] Fix | Delete
propertyName: 'background'
[16615] Fix | Delete
}]
[16616] Fix | Delete
}, {
[16617] Fix | Delete
path: ['color', 'duotone'],
[16618] Fix | Delete
valueKey: 'colors',
[16619] Fix | Delete
cssVarInfix: 'duotone',
[16620] Fix | Delete
valueFunc: ({
[16621] Fix | Delete
slug
[16622] Fix | Delete
}) => `url( '#wp-duotone-${slug}' )`,
[16623] Fix | Delete
classes: []
[16624] Fix | Delete
}, {
[16625] Fix | Delete
path: ['shadow', 'presets'],
[16626] Fix | Delete
valueKey: 'shadow',
[16627] Fix | Delete
cssVarInfix: 'shadow',
[16628] Fix | Delete
classes: []
[16629] Fix | Delete
}, {
[16630] Fix | Delete
path: ['typography', 'fontSizes'],
[16631] Fix | Delete
valueFunc: (preset, settings) => getTypographyFontSizeValue(preset, settings),
[16632] Fix | Delete
valueKey: 'size',
[16633] Fix | Delete
cssVarInfix: 'font-size',
[16634] Fix | Delete
classes: [{
[16635] Fix | Delete
classSuffix: 'font-size',
[16636] Fix | Delete
propertyName: 'font-size'
[16637] Fix | Delete
}]
[16638] Fix | Delete
}, {
[16639] Fix | Delete
path: ['typography', 'fontFamilies'],
[16640] Fix | Delete
valueKey: 'fontFamily',
[16641] Fix | Delete
cssVarInfix: 'font-family',
[16642] Fix | Delete
classes: [{
[16643] Fix | Delete
classSuffix: 'font-family',
[16644] Fix | Delete
propertyName: 'font-family'
[16645] Fix | Delete
}]
[16646] Fix | Delete
}, {
[16647] Fix | Delete
path: ['spacing', 'spacingSizes'],
[16648] Fix | Delete
valueKey: 'size',
[16649] Fix | Delete
cssVarInfix: 'spacing',
[16650] Fix | Delete
valueFunc: ({
[16651] Fix | Delete
size
[16652] Fix | Delete
}) => size,
[16653] Fix | Delete
classes: []
[16654] Fix | Delete
}];
[16655] Fix | Delete
const STYLE_PATH_TO_CSS_VAR_INFIX = {
[16656] Fix | Delete
'color.background': 'color',
[16657] Fix | Delete
'color.text': 'color',
[16658] Fix | Delete
'filter.duotone': 'duotone',
[16659] Fix | Delete
'elements.link.color.text': 'color',
[16660] Fix | Delete
'elements.link.:hover.color.text': 'color',
[16661] Fix | Delete
'elements.link.typography.fontFamily': 'font-family',
[16662] Fix | Delete
'elements.link.typography.fontSize': 'font-size',
[16663] Fix | Delete
'elements.button.color.text': 'color',
[16664] Fix | Delete
'elements.button.color.background': 'color',
[16665] Fix | Delete
'elements.caption.color.text': 'color',
[16666] Fix | Delete
'elements.button.typography.fontFamily': 'font-family',
[16667] Fix | Delete
'elements.button.typography.fontSize': 'font-size',
[16668] Fix | Delete
'elements.heading.color': 'color',
[16669] Fix | Delete
'elements.heading.color.background': 'color',
[16670] Fix | Delete
'elements.heading.typography.fontFamily': 'font-family',
[16671] Fix | Delete
'elements.heading.gradient': 'gradient',
[16672] Fix | Delete
'elements.heading.color.gradient': 'gradient',
[16673] Fix | Delete
'elements.h1.color': 'color',
[16674] Fix | Delete
'elements.h1.color.background': 'color',
[16675] Fix | Delete
'elements.h1.typography.fontFamily': 'font-family',
[16676] Fix | Delete
'elements.h1.color.gradient': 'gradient',
[16677] Fix | Delete
'elements.h2.color': 'color',
[16678] Fix | Delete
'elements.h2.color.background': 'color',
[16679] Fix | Delete
'elements.h2.typography.fontFamily': 'font-family',
[16680] Fix | Delete
'elements.h2.color.gradient': 'gradient',
[16681] Fix | Delete
'elements.h3.color': 'color',
[16682] Fix | Delete
'elements.h3.color.background': 'color',
[16683] Fix | Delete
'elements.h3.typography.fontFamily': 'font-family',
[16684] Fix | Delete
'elements.h3.color.gradient': 'gradient',
[16685] Fix | Delete
'elements.h4.color': 'color',
[16686] Fix | Delete
'elements.h4.color.background': 'color',
[16687] Fix | Delete
'elements.h4.typography.fontFamily': 'font-family',
[16688] Fix | Delete
'elements.h4.color.gradient': 'gradient',
[16689] Fix | Delete
'elements.h5.color': 'color',
[16690] Fix | Delete
'elements.h5.color.background': 'color',
[16691] Fix | Delete
'elements.h5.typography.fontFamily': 'font-family',
[16692] Fix | Delete
'elements.h5.color.gradient': 'gradient',
[16693] Fix | Delete
'elements.h6.color': 'color',
[16694] Fix | Delete
'elements.h6.color.background': 'color',
[16695] Fix | Delete
'elements.h6.typography.fontFamily': 'font-family',
[16696] Fix | Delete
'elements.h6.color.gradient': 'gradient',
[16697] Fix | Delete
'color.gradient': 'gradient',
[16698] Fix | Delete
shadow: 'shadow',
[16699] Fix | Delete
'typography.fontSize': 'font-size',
[16700] Fix | Delete
'typography.fontFamily': 'font-family'
[16701] Fix | Delete
};
[16702] Fix | Delete
[16703] Fix | Delete
// A static list of block attributes that store global style preset slugs.
[16704] Fix | Delete
const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {
[16705] Fix | Delete
'color.background': 'backgroundColor',
[16706] Fix | Delete
'color.text': 'textColor',
[16707] Fix | Delete
'color.gradient': 'gradient',
[16708] Fix | Delete
'typography.fontSize': 'fontSize',
[16709] Fix | Delete
'typography.fontFamily': 'fontFamily'
[16710] Fix | Delete
};
[16711] Fix | Delete
function useToolsPanelDropdownMenuProps() {
[16712] Fix | Delete
const isMobile = (0,external_wp_compose_namespaceObject.useViewportMatch)('medium', '<');
[16713] Fix | Delete
return !isMobile ? {
[16714] Fix | Delete
popoverProps: {
[16715] Fix | Delete
placement: 'left-start',
[16716] Fix | Delete
// For non-mobile, inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)
[16717] Fix | Delete
offset: 259
[16718] Fix | Delete
}
[16719] Fix | Delete
} : {};
[16720] Fix | Delete
}
[16721] Fix | Delete
function findInPresetsBy(features, blockName, presetPath, presetProperty, presetValueValue) {
[16722] Fix | Delete
// Block presets take priority above root level presets.
[16723] Fix | Delete
const orderedPresetsByOrigin = [getValueFromObjectPath(features, ['blocks', blockName, ...presetPath]), getValueFromObjectPath(features, presetPath)];
[16724] Fix | Delete
for (const presetByOrigin of orderedPresetsByOrigin) {
[16725] Fix | Delete
if (presetByOrigin) {
[16726] Fix | Delete
// Preset origins ordered by priority.
[16727] Fix | Delete
const origins = ['custom', 'theme', 'default'];
[16728] Fix | Delete
for (const origin of origins) {
[16729] Fix | Delete
const presets = presetByOrigin[origin];
[16730] Fix | Delete
if (presets) {
[16731] Fix | Delete
const presetObject = presets.find(preset => preset[presetProperty] === presetValueValue);
[16732] Fix | Delete
if (presetObject) {
[16733] Fix | Delete
if (presetProperty === 'slug') {
[16734] Fix | Delete
return presetObject;
[16735] Fix | Delete
}
[16736] Fix | Delete
// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.
[16737] Fix | Delete
const highestPresetObjectWithSameSlug = findInPresetsBy(features, blockName, presetPath, 'slug', presetObject.slug);
[16738] Fix | Delete
if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) {
[16739] Fix | Delete
return presetObject;
[16740] Fix | Delete
}
[16741] Fix | Delete
return undefined;
[16742] Fix | Delete
}
[16743] Fix | Delete
}
[16744] Fix | Delete
}
[16745] Fix | Delete
}
[16746] Fix | Delete
}
[16747] Fix | Delete
}
[16748] Fix | Delete
function getPresetVariableFromValue(features, blockName, variableStylePath, presetPropertyValue) {
[16749] Fix | Delete
if (!presetPropertyValue) {
[16750] Fix | Delete
return presetPropertyValue;
[16751] Fix | Delete
}
[16752] Fix | Delete
const cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[variableStylePath];
[16753] Fix | Delete
const metadata = PRESET_METADATA.find(data => data.cssVarInfix === cssVarInfix);
[16754] Fix | Delete
if (!metadata) {
[16755] Fix | Delete
// The property doesn't have preset data
[16756] Fix | Delete
// so the value should be returned as it is.
[16757] Fix | Delete
return presetPropertyValue;
[16758] Fix | Delete
}
[16759] Fix | Delete
const {
[16760] Fix | Delete
valueKey,
[16761] Fix | Delete
path
[16762] Fix | Delete
} = metadata;
[16763] Fix | Delete
const presetObject = findInPresetsBy(features, blockName, path, valueKey, presetPropertyValue);
[16764] Fix | Delete
if (!presetObject) {
[16765] Fix | Delete
// Value wasn't found in the presets,
[16766] Fix | Delete
// so it must be a custom value.
[16767] Fix | Delete
return presetPropertyValue;
[16768] Fix | Delete
}
[16769] Fix | Delete
return `var:preset|${cssVarInfix}|${presetObject.slug}`;
[16770] Fix | Delete
}
[16771] Fix | Delete
function getValueFromPresetVariable(features, blockName, variable, [presetType, slug]) {
[16772] Fix | Delete
const metadata = PRESET_METADATA.find(data => data.cssVarInfix === presetType);
[16773] Fix | Delete
if (!metadata) {
[16774] Fix | Delete
return variable;
[16775] Fix | Delete
}
[16776] Fix | Delete
const presetObject = findInPresetsBy(features.settings, blockName, metadata.path, 'slug', slug);
[16777] Fix | Delete
if (presetObject) {
[16778] Fix | Delete
const {
[16779] Fix | Delete
valueKey
[16780] Fix | Delete
} = metadata;
[16781] Fix | Delete
const result = presetObject[valueKey];
[16782] Fix | Delete
return getValueFromVariable(features, blockName, result);
[16783] Fix | Delete
}
[16784] Fix | Delete
return variable;
[16785] Fix | Delete
}
[16786] Fix | Delete
function getValueFromCustomVariable(features, blockName, variable, path) {
[16787] Fix | Delete
var _getValueFromObjectPa;
[16788] Fix | Delete
const result = (_getValueFromObjectPa = getValueFromObjectPath(features.settings, ['blocks', blockName, 'custom', ...path])) !== null && _getValueFromObjectPa !== void 0 ? _getValueFromObjectPa : getValueFromObjectPath(features.settings, ['custom', ...path]);
[16789] Fix | Delete
if (!result) {
[16790] Fix | Delete
return variable;
[16791] Fix | Delete
}
[16792] Fix | Delete
// A variable may reference another variable so we need recursion until we find the value.
[16793] Fix | Delete
return getValueFromVariable(features, blockName, result);
[16794] Fix | Delete
}
[16795] Fix | Delete
[16796] Fix | Delete
/**
[16797] Fix | Delete
* Attempts to fetch the value of a theme.json CSS variable.
[16798] Fix | Delete
*
[16799] Fix | Delete
* @param {Object} features GlobalStylesContext config, e.g., user, base or merged. Represents the theme.json tree.
[16800] Fix | Delete
* @param {string} blockName The name of a block as represented in the styles property. E.g., 'root' for root-level, and 'core/${blockName}' for blocks.
[16801] Fix | Delete
* @param {string|*} variable An incoming style value. A CSS var value is expected, but it could be any value.
[16802] Fix | Delete
* @return {string|*|{ref}} The value of the CSS var, if found. If not found, the passed variable argument.
[16803] Fix | Delete
*/
[16804] Fix | Delete
function getValueFromVariable(features, blockName, variable) {
[16805] Fix | Delete
if (!variable || typeof variable !== 'string') {
[16806] Fix | Delete
if (variable?.ref && typeof variable?.ref === 'string') {
[16807] Fix | Delete
const refPath = variable.ref.split('.');
[16808] Fix | Delete
variable = getValueFromObjectPath(features, refPath);
[16809] Fix | Delete
// Presence of another ref indicates a reference to another dynamic value.
[16810] Fix | Delete
// Pointing to another dynamic value is not supported.
[16811] Fix | Delete
if (!variable || !!variable?.ref) {
[16812] Fix | Delete
return variable;
[16813] Fix | Delete
}
[16814] Fix | Delete
} else {
[16815] Fix | Delete
return variable;
[16816] Fix | Delete
}
[16817] Fix | Delete
}
[16818] Fix | Delete
const USER_VALUE_PREFIX = 'var:';
[16819] Fix | Delete
const THEME_VALUE_PREFIX = 'var(--wp--';
[16820] Fix | Delete
const THEME_VALUE_SUFFIX = ')';
[16821] Fix | Delete
let parsedVar;
[16822] Fix | Delete
if (variable.startsWith(USER_VALUE_PREFIX)) {
[16823] Fix | Delete
parsedVar = variable.slice(USER_VALUE_PREFIX.length).split('|');
[16824] Fix | Delete
} else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) {
[16825] Fix | Delete
parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split('--');
[16826] Fix | Delete
} else {
[16827] Fix | Delete
// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`
[16828] Fix | Delete
return variable;
[16829] Fix | Delete
}
[16830] Fix | Delete
const [type, ...path] = parsedVar;
[16831] Fix | Delete
if (type === 'preset') {
[16832] Fix | Delete
return getValueFromPresetVariable(features, blockName, variable, path);
[16833] Fix | Delete
}
[16834] Fix | Delete
if (type === 'custom') {
[16835] Fix | Delete
return getValueFromCustomVariable(features, blockName, variable, path);
[16836] Fix | Delete
}
[16837] Fix | Delete
return variable;
[16838] Fix | Delete
}
[16839] Fix | Delete
[16840] Fix | Delete
/**
[16841] Fix | Delete
* Function that scopes a selector with another one. This works a bit like
[16842] Fix | Delete
* SCSS nesting except the `&` operator isn't supported.
[16843] Fix | Delete
*
[16844] Fix | Delete
* @example
[16845] Fix | Delete
* ```js
[16846] Fix | Delete
* const scope = '.a, .b .c';
[16847] Fix | Delete
* const selector = '> .x, .y';
[16848] Fix | Delete
* const merged = scopeSelector( scope, selector );
[16849] Fix | Delete
* // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'
[16850] Fix | Delete
* ```
[16851] Fix | Delete
*
[16852] Fix | Delete
* @param {string} scope Selector to scope to.
[16853] Fix | Delete
* @param {string} selector Original selector.
[16854] Fix | Delete
*
[16855] Fix | Delete
* @return {string} Scoped selector.
[16856] Fix | Delete
*/
[16857] Fix | Delete
function scopeSelector(scope, selector) {
[16858] Fix | Delete
if (!scope || !selector) {
[16859] Fix | Delete
return selector;
[16860] Fix | Delete
}
[16861] Fix | Delete
const scopes = scope.split(',');
[16862] Fix | Delete
const selectors = selector.split(',');
[16863] Fix | Delete
const selectorsScoped = [];
[16864] Fix | Delete
scopes.forEach(outer => {
[16865] Fix | Delete
selectors.forEach(inner => {
[16866] Fix | Delete
selectorsScoped.push(`${outer.trim()} ${inner.trim()}`);
[16867] Fix | Delete
});
[16868] Fix | Delete
});
[16869] Fix | Delete
return selectorsScoped.join(', ');
[16870] Fix | Delete
}
[16871] Fix | Delete
[16872] Fix | Delete
/**
[16873] Fix | Delete
* Scopes a collection of selectors for features and subfeatures.
[16874] Fix | Delete
*
[16875] Fix | Delete
* @example
[16876] Fix | Delete
* ```js
[16877] Fix | Delete
* const scope = '.custom-scope';
[16878] Fix | Delete
* const selectors = {
[16879] Fix | Delete
* color: '.wp-my-block p',
[16880] Fix | Delete
* typography: { fontSize: '.wp-my-block caption' },
[16881] Fix | Delete
* };
[16882] Fix | Delete
* const result = scopeFeatureSelector( scope, selectors );
[16883] Fix | Delete
* // result is {
[16884] Fix | Delete
* // color: '.custom-scope .wp-my-block p',
[16885] Fix | Delete
* // typography: { fonSize: '.custom-scope .wp-my-block caption' },
[16886] Fix | Delete
* // }
[16887] Fix | Delete
* ```
[16888] Fix | Delete
*
[16889] Fix | Delete
* @param {string} scope Selector to scope collection of selectors with.
[16890] Fix | Delete
* @param {Object} selectors Collection of feature selectors e.g.
[16891] Fix | Delete
*
[16892] Fix | Delete
* @return {Object|undefined} Scoped collection of feature selectors.
[16893] Fix | Delete
*/
[16894] Fix | Delete
function scopeFeatureSelectors(scope, selectors) {
[16895] Fix | Delete
if (!scope || !selectors) {
[16896] Fix | Delete
return;
[16897] Fix | Delete
}
[16898] Fix | Delete
const featureSelectors = {};
[16899] Fix | Delete
Object.entries(selectors).forEach(([feature, selector]) => {
[16900] Fix | Delete
if (typeof selector === 'string') {
[16901] Fix | Delete
featureSelectors[feature] = scopeSelector(scope, selector);
[16902] Fix | Delete
}
[16903] Fix | Delete
if (typeof selector === 'object') {
[16904] Fix | Delete
featureSelectors[feature] = {};
[16905] Fix | Delete
Object.entries(selector).forEach(([subfeature, subfeatureSelector]) => {
[16906] Fix | Delete
featureSelectors[feature][subfeature] = scopeSelector(scope, subfeatureSelector);
[16907] Fix | Delete
});
[16908] Fix | Delete
}
[16909] Fix | Delete
});
[16910] Fix | Delete
return featureSelectors;
[16911] Fix | Delete
}
[16912] Fix | Delete
[16913] Fix | Delete
/**
[16914] Fix | Delete
* Appends a sub-selector to an existing one.
[16915] Fix | Delete
*
[16916] Fix | Delete
* Given the compounded `selector` "h1, h2, h3"
[16917] Fix | Delete
* and the `toAppend` selector ".some-class" the result will be
[16918] Fix | Delete
* "h1.some-class, h2.some-class, h3.some-class".
[16919] Fix | Delete
*
[16920] Fix | Delete
* @param {string} selector Original selector.
[16921] Fix | Delete
* @param {string} toAppend Selector to append.
[16922] Fix | Delete
*
[16923] Fix | Delete
* @return {string} The new selector.
[16924] Fix | Delete
*/
[16925] Fix | Delete
function appendToSelector(selector, toAppend) {
[16926] Fix | Delete
if (!selector.includes(',')) {
[16927] Fix | Delete
return selector + toAppend;
[16928] Fix | Delete
}
[16929] Fix | Delete
const selectors = selector.split(',');
[16930] Fix | Delete
const newSelectors = selectors.map(sel => sel + toAppend);
[16931] Fix | Delete
return newSelectors.join(',');
[16932] Fix | Delete
}
[16933] Fix | Delete
[16934] Fix | Delete
/**
[16935] Fix | Delete
* Compares global style variations according to their styles and settings properties.
[16936] Fix | Delete
*
[16937] Fix | Delete
* @example
[16938] Fix | Delete
* ```js
[16939] Fix | Delete
* const globalStyles = { styles: { typography: { fontSize: '10px' } }, settings: {} };
[16940] Fix | Delete
* const variation = { styles: { typography: { fontSize: '10000px' } }, settings: {} };
[16941] Fix | Delete
* const isEqual = areGlobalStyleConfigsEqual( globalStyles, variation );
[16942] Fix | Delete
* // false
[16943] Fix | Delete
* ```
[16944] Fix | Delete
*
[16945] Fix | Delete
* @param {Object} original A global styles object.
[16946] Fix | Delete
* @param {Object} variation A global styles object.
[16947] Fix | Delete
*
[16948] Fix | Delete
* @return {boolean} Whether `original` and `variation` match.
[16949] Fix | Delete
*/
[16950] Fix | Delete
function areGlobalStyleConfigsEqual(original, variation) {
[16951] Fix | Delete
if (typeof original !== 'object' || typeof variation !== 'object') {
[16952] Fix | Delete
return original === variation;
[16953] Fix | Delete
}
[16954] Fix | Delete
return es6_default()(original?.styles, variation?.styles) && es6_default()(original?.settings, variation?.settings);
[16955] Fix | Delete
}
[16956] Fix | Delete
[16957] Fix | Delete
/**
[16958] Fix | Delete
* Generates the selector for a block style variation by creating the
[16959] Fix | Delete
* appropriate CSS class and adding it to the ancestor portion of the block's
[16960] Fix | Delete
* selector.
[16961] Fix | Delete
*
[16962] Fix | Delete
* For example, take the Button block which has a compound selector:
[16963] Fix | Delete
* `.wp-block-button .wp-block-button__link`. With a variation named 'custom',
[16964] Fix | Delete
* the class `.is-style-custom` should be added to the `.wp-block-button`
[16965] Fix | Delete
* ancestor only.
[16966] Fix | Delete
*
[16967] Fix | Delete
* This function will take into account comma separated and complex selectors.
[16968] Fix | Delete
*
[16969] Fix | Delete
* @param {string} variation Name for the variation.
[16970] Fix | Delete
* @param {string} blockSelector CSS selector for the block.
[16971] Fix | Delete
*
[16972] Fix | Delete
* @return {string} CSS selector for the block style variation.
[16973] Fix | Delete
*/
[16974] Fix | Delete
function getBlockStyleVariationSelector(variation, blockSelector) {
[16975] Fix | Delete
const variationClass = `.is-style-${variation}`;
[16976] Fix | Delete
if (!blockSelector) {
[16977] Fix | Delete
return variationClass;
[16978] Fix | Delete
}
[16979] Fix | Delete
const ancestorRegex = /((?::\([^)]+\))?\s*)([^\s:]+)/;
[16980] Fix | Delete
const addVariationClass = (_match, group1, group2) => {
[16981] Fix | Delete
return group1 + group2 + variationClass;
[16982] Fix | Delete
};
[16983] Fix | Delete
const result = blockSelector.split(',').map(part => part.replace(ancestorRegex, addVariationClass));
[16984] Fix | Delete
return result.join(',');
[16985] Fix | Delete
}
[16986] Fix | Delete
[16987] Fix | Delete
;// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/global-styles/context.js
[16988] Fix | Delete
/**
[16989] Fix | Delete
* WordPress dependencies
[16990] Fix | Delete
*/
[16991] Fix | Delete
[16992] Fix | Delete
const DEFAULT_GLOBAL_STYLES_CONTEXT = {
[16993] Fix | Delete
user: {},
[16994] Fix | Delete
base: {},
[16995] Fix | Delete
merged: {},
[16996] Fix | Delete
setUserConfig: () => {}
[16997] Fix | Delete
};
[16998] Fix | Delete
const GlobalStylesContext = (0,external_wp_element_namespaceObject.createContext)(DEFAULT_GLOBAL_STYLES_CONTEXT);
[16999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function