@wordpress/block-editor 10.0.5 → 10.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +40 -0
- package/build/components/font-sizes/fluid-utils.js +208 -0
- package/build/components/font-sizes/fluid-utils.js.map +1 -0
- package/build/components/font-sizes/index.js +8 -0
- package/build/components/font-sizes/index.js.map +1 -1
- package/build/hooks/font-size.js +60 -0
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/use-typography-props.js +17 -3
- package/build/hooks/use-typography-props.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +197 -0
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -0
- package/build-module/components/font-sizes/index.js +1 -0
- package/build-module/components/font-sizes/index.js.map +1 -1
- package/build-module/hooks/font-size.js +59 -1
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/use-typography-props.js +17 -4
- package/build-module/hooks/use-typography-props.js.map +1 -1
- package/package.json +3 -3
- package/src/components/font-sizes/fluid-utils.js +221 -0
- package/src/components/font-sizes/index.js +1 -0
- package/src/components/font-sizes/test/fluid-utils.js +168 -0
- package/src/hooks/font-size.js +75 -0
- package/src/hooks/test/use-typography-props.js +22 -0
- package/src/hooks/use-typography-props.js +18 -3
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fluid utilities must match the backend equivalent.
|
|
3
|
+
* See: gutenberg_get_typography_font_size_value() in lib/block-supports/typography.php
|
|
4
|
+
* ---------------------------------------------------------------
|
|
5
|
+
*/
|
|
6
|
+
// Defaults.
|
|
7
|
+
const DEFAULT_MAXIMUM_VIEWPORT_WIDTH = '1600px';
|
|
8
|
+
const DEFAULT_MINIMUM_VIEWPORT_WIDTH = '768px';
|
|
9
|
+
const DEFAULT_SCALE_FACTOR = 1;
|
|
10
|
+
const DEFAULT_MINIMUM_FONT_SIZE_FACTOR = 0.75;
|
|
11
|
+
const DEFAULT_MAXIMUM_FONT_SIZE_FACTOR = 1.5;
|
|
12
|
+
/**
|
|
13
|
+
* Computes a fluid font-size value that uses clamp(). A minimum and maxinmum
|
|
14
|
+
* font size OR a single font size can be specified.
|
|
15
|
+
*
|
|
16
|
+
* If a single font size is specified, it is scaled up and down by
|
|
17
|
+
* minimumFontSizeFactor and maximumFontSizeFactor to arrive at the minimum and
|
|
18
|
+
* maximum sizes.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```js
|
|
22
|
+
* // Calculate fluid font-size value from a minimum and maximum value.
|
|
23
|
+
* const fontSize = getComputedFluidTypographyValue( {
|
|
24
|
+
* minimumFontSize: '20px',
|
|
25
|
+
* maximumFontSize: '45px'
|
|
26
|
+
* } );
|
|
27
|
+
* // Calculate fluid font-size value from a single font size.
|
|
28
|
+
* const fontSize = getComputedFluidTypographyValue( {
|
|
29
|
+
* fontSize: '30px',
|
|
30
|
+
* } );
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @param {Object} args
|
|
34
|
+
* @param {?string} args.minimumViewPortWidth Minimum viewport size from which type will have fluidity. Optional if fontSize is specified.
|
|
35
|
+
* @param {?string} args.maximumViewPortWidth Maximum size up to which type will have fluidity. Optional if fontSize is specified.
|
|
36
|
+
* @param {string|number} [args.fontSize] Size to derive maximumFontSize and minimumFontSize from, if necessary. Optional if minimumFontSize and maximumFontSize are specified.
|
|
37
|
+
* @param {?string} args.maximumFontSize Maximum font size for any clamp() calculation. Optional.
|
|
38
|
+
* @param {?string} args.minimumFontSize Minimum font size for any clamp() calculation. Optional.
|
|
39
|
+
* @param {?number} args.scaleFactor A scale factor to determine how fast a font scales within boundaries. Optional.
|
|
40
|
+
* @param {?number} args.minimumFontSizeFactor How much to scale defaultFontSize by to derive minimumFontSize. Optional.
|
|
41
|
+
* @param {?number} args.maximumFontSizeFactor How much to scale defaultFontSize by to derive maximumFontSize. Optional.
|
|
42
|
+
*
|
|
43
|
+
* @return {string|null} A font-size value using clamp().
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
export function getComputedFluidTypographyValue(_ref) {
|
|
47
|
+
let {
|
|
48
|
+
minimumFontSize,
|
|
49
|
+
maximumFontSize,
|
|
50
|
+
fontSize,
|
|
51
|
+
minimumViewPortWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH,
|
|
52
|
+
maximumViewPortWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH,
|
|
53
|
+
scaleFactor = DEFAULT_SCALE_FACTOR,
|
|
54
|
+
minimumFontSizeFactor = DEFAULT_MINIMUM_FONT_SIZE_FACTOR,
|
|
55
|
+
maximumFontSizeFactor = DEFAULT_MAXIMUM_FONT_SIZE_FACTOR
|
|
56
|
+
} = _ref;
|
|
57
|
+
|
|
58
|
+
// Calculate missing minimumFontSize and maximumFontSize from
|
|
59
|
+
// defaultFontSize if provided.
|
|
60
|
+
if (fontSize && (!minimumFontSize || !maximumFontSize)) {
|
|
61
|
+
// Parse default font size.
|
|
62
|
+
const fontSizeParsed = getTypographyValueAndUnit(fontSize); // Protect against invalid units.
|
|
63
|
+
|
|
64
|
+
if (!(fontSizeParsed !== null && fontSizeParsed !== void 0 && fontSizeParsed.unit)) {
|
|
65
|
+
return null;
|
|
66
|
+
} // If no minimumFontSize is provided, derive using min scale factor.
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
if (!minimumFontSize) {
|
|
70
|
+
minimumFontSize = fontSizeParsed.value * minimumFontSizeFactor + fontSizeParsed.unit;
|
|
71
|
+
} // If no maximumFontSize is provided, derive using max scale factor.
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
if (!maximumFontSize) {
|
|
75
|
+
maximumFontSize = fontSizeParsed.value * maximumFontSizeFactor + fontSizeParsed.unit;
|
|
76
|
+
}
|
|
77
|
+
} // Return early if one of the provided inputs is not provided.
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
if (!minimumFontSize || !maximumFontSize) {
|
|
81
|
+
return null;
|
|
82
|
+
} // Grab the minimum font size and normalize it in order to use the value for calculations.
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
const minimumFontSizeParsed = getTypographyValueAndUnit(minimumFontSize); // We get a 'preferred' unit to keep units consistent when calculating,
|
|
86
|
+
// otherwise the result will not be accurate.
|
|
87
|
+
|
|
88
|
+
const fontSizeUnit = (minimumFontSizeParsed === null || minimumFontSizeParsed === void 0 ? void 0 : minimumFontSizeParsed.unit) || 'rem'; // Grab the maximum font size and normalize it in order to use the value for calculations.
|
|
89
|
+
|
|
90
|
+
const maximumFontSizeParsed = getTypographyValueAndUnit(maximumFontSize, {
|
|
91
|
+
coerceTo: fontSizeUnit
|
|
92
|
+
}); // Protect against unsupported units.
|
|
93
|
+
|
|
94
|
+
if (!minimumFontSizeParsed || !maximumFontSizeParsed) {
|
|
95
|
+
return null;
|
|
96
|
+
} // Use rem for accessible fluid target font scaling.
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
const minimumFontSizeRem = getTypographyValueAndUnit(minimumFontSize, {
|
|
100
|
+
coerceTo: 'rem'
|
|
101
|
+
}); // Viewport widths defined for fluid typography. Normalize units
|
|
102
|
+
|
|
103
|
+
const maximumViewPortWidthParsed = getTypographyValueAndUnit(maximumViewPortWidth, {
|
|
104
|
+
coerceTo: fontSizeUnit
|
|
105
|
+
});
|
|
106
|
+
const minumumViewPortWidthParsed = getTypographyValueAndUnit(minimumViewPortWidth, {
|
|
107
|
+
coerceTo: fontSizeUnit
|
|
108
|
+
}); // Protect against unsupported units.
|
|
109
|
+
|
|
110
|
+
if (!maximumViewPortWidthParsed || !minumumViewPortWidthParsed || !minimumFontSizeRem) {
|
|
111
|
+
return null;
|
|
112
|
+
} // Build CSS rule.
|
|
113
|
+
// Borrowed from https://websemantics.uk/tools/responsive-font-calculator/.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
const minViewPortWidthOffsetValue = roundToPrecision(minumumViewPortWidthParsed.value / 100, 3);
|
|
117
|
+
const viewPortWidthOffset = minViewPortWidthOffsetValue + fontSizeUnit;
|
|
118
|
+
let linearFactor = 100 * ((maximumFontSizeParsed.value - minimumFontSizeParsed.value) / (maximumViewPortWidthParsed.value - minumumViewPortWidthParsed.value));
|
|
119
|
+
linearFactor = roundToPrecision(linearFactor, 3) || 1;
|
|
120
|
+
const linearFactorScaled = linearFactor * scaleFactor;
|
|
121
|
+
const fluidTargetFontSize = `${minimumFontSizeRem.value}${minimumFontSizeRem.unit} + ((1vw - ${viewPortWidthOffset}) * ${linearFactorScaled})`;
|
|
122
|
+
return `clamp(${minimumFontSize}, ${fluidTargetFontSize}, ${maximumFontSize})`;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Internal method that checks a string for a unit and value and returns an array consisting of `'value'` and `'unit'`, e.g., [ '42', 'rem' ].
|
|
126
|
+
* A raw font size of `value + unit` is expected. If the value is an integer, it will convert to `value + 'px'`.
|
|
127
|
+
*
|
|
128
|
+
* @param {string|number} rawValue Raw size value from theme.json.
|
|
129
|
+
* @param {Object|undefined} options Calculation options.
|
|
130
|
+
*
|
|
131
|
+
* @return {{ unit: string, value: number }|null} An object consisting of `'value'` and `'unit'` properties.
|
|
132
|
+
*/
|
|
133
|
+
|
|
134
|
+
export function getTypographyValueAndUnit(rawValue) {
|
|
135
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
136
|
+
|
|
137
|
+
if (typeof rawValue !== 'string' && typeof rawValue !== 'number') {
|
|
138
|
+
return null;
|
|
139
|
+
} // Converts numeric values to pixel values by default.
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
if (isFinite(rawValue)) {
|
|
143
|
+
rawValue = `${rawValue}px`;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const {
|
|
147
|
+
coerceTo,
|
|
148
|
+
rootSizeValue,
|
|
149
|
+
acceptableUnits
|
|
150
|
+
} = {
|
|
151
|
+
coerceTo: '',
|
|
152
|
+
// Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( "html" ) ).fontSize`.
|
|
153
|
+
rootSizeValue: 16,
|
|
154
|
+
acceptableUnits: ['rem', 'px', 'em'],
|
|
155
|
+
...options
|
|
156
|
+
};
|
|
157
|
+
const acceptableUnitsGroup = acceptableUnits === null || acceptableUnits === void 0 ? void 0 : acceptableUnits.join('|');
|
|
158
|
+
const regexUnits = new RegExp(`^(\\d*\\.?\\d+)(${acceptableUnitsGroup}){1,1}$`);
|
|
159
|
+
const matches = rawValue.match(regexUnits); // We need a number value and a unit.
|
|
160
|
+
|
|
161
|
+
if (!matches || matches.length < 3) {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
let [, value, unit] = matches;
|
|
166
|
+
let returnValue = parseFloat(value);
|
|
167
|
+
|
|
168
|
+
if ('px' === coerceTo && ('em' === unit || 'rem' === unit)) {
|
|
169
|
+
returnValue = returnValue * rootSizeValue;
|
|
170
|
+
unit = coerceTo;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if ('px' === unit && ('em' === coerceTo || 'rem' === coerceTo)) {
|
|
174
|
+
returnValue = returnValue / rootSizeValue;
|
|
175
|
+
unit = coerceTo;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return {
|
|
179
|
+
value: returnValue,
|
|
180
|
+
unit
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Returns a value rounded to defined precision.
|
|
185
|
+
* Returns `undefined` if the value is not a valid finite number.
|
|
186
|
+
*
|
|
187
|
+
* @param {number} value Raw value.
|
|
188
|
+
* @param {number} digits The number of digits to appear after the decimal point
|
|
189
|
+
*
|
|
190
|
+
* @return {number|undefined} Value rounded to standard precision.
|
|
191
|
+
*/
|
|
192
|
+
|
|
193
|
+
export function roundToPrecision(value) {
|
|
194
|
+
let digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 3;
|
|
195
|
+
return Number.isFinite(value) ? parseFloat(value.toFixed(digits)) : undefined;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=fluid-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/font-sizes/fluid-utils.js"],"names":["DEFAULT_MAXIMUM_VIEWPORT_WIDTH","DEFAULT_MINIMUM_VIEWPORT_WIDTH","DEFAULT_SCALE_FACTOR","DEFAULT_MINIMUM_FONT_SIZE_FACTOR","DEFAULT_MAXIMUM_FONT_SIZE_FACTOR","getComputedFluidTypographyValue","minimumFontSize","maximumFontSize","fontSize","minimumViewPortWidth","maximumViewPortWidth","scaleFactor","minimumFontSizeFactor","maximumFontSizeFactor","fontSizeParsed","getTypographyValueAndUnit","unit","value","minimumFontSizeParsed","fontSizeUnit","maximumFontSizeParsed","coerceTo","minimumFontSizeRem","maximumViewPortWidthParsed","minumumViewPortWidthParsed","minViewPortWidthOffsetValue","roundToPrecision","viewPortWidthOffset","linearFactor","linearFactorScaled","fluidTargetFontSize","rawValue","options","isFinite","rootSizeValue","acceptableUnits","acceptableUnitsGroup","join","regexUnits","RegExp","matches","match","length","returnValue","parseFloat","digits","Number","toFixed","undefined"],"mappings":"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","sourcesContent":["/**\n * The fluid utilities must match the backend equivalent.\n * See: gutenberg_get_typography_font_size_value() in lib/block-supports/typography.php\n * ---------------------------------------------------------------\n */\n\n// Defaults.\nconst DEFAULT_MAXIMUM_VIEWPORT_WIDTH = '1600px';\nconst DEFAULT_MINIMUM_VIEWPORT_WIDTH = '768px';\nconst DEFAULT_SCALE_FACTOR = 1;\nconst DEFAULT_MINIMUM_FONT_SIZE_FACTOR = 0.75;\nconst DEFAULT_MAXIMUM_FONT_SIZE_FACTOR = 1.5;\n\n/**\n * Computes a fluid font-size value that uses clamp(). A minimum and maxinmum\n * font size OR a single font size can be specified.\n *\n * If a single font size is specified, it is scaled up and down by\n * minimumFontSizeFactor and maximumFontSizeFactor to arrive at the minimum and\n * maximum sizes.\n *\n * @example\n * ```js\n * // Calculate fluid font-size value from a minimum and maximum value.\n * const fontSize = getComputedFluidTypographyValue( {\n * minimumFontSize: '20px',\n * maximumFontSize: '45px'\n * } );\n * // Calculate fluid font-size value from a single font size.\n * const fontSize = getComputedFluidTypographyValue( {\n * fontSize: '30px',\n * } );\n * ```\n *\n * @param {Object} args\n * @param {?string} args.minimumViewPortWidth Minimum viewport size from which type will have fluidity. Optional if fontSize is specified.\n * @param {?string} args.maximumViewPortWidth Maximum size up to which type will have fluidity. Optional if fontSize is specified.\n * @param {string|number} [args.fontSize] Size to derive maximumFontSize and minimumFontSize from, if necessary. Optional if minimumFontSize and maximumFontSize are specified.\n * @param {?string} args.maximumFontSize Maximum font size for any clamp() calculation. Optional.\n * @param {?string} args.minimumFontSize Minimum font size for any clamp() calculation. Optional.\n * @param {?number} args.scaleFactor A scale factor to determine how fast a font scales within boundaries. Optional.\n * @param {?number} args.minimumFontSizeFactor How much to scale defaultFontSize by to derive minimumFontSize. Optional.\n * @param {?number} args.maximumFontSizeFactor How much to scale defaultFontSize by to derive maximumFontSize. Optional.\n *\n * @return {string|null} A font-size value using clamp().\n */\nexport function getComputedFluidTypographyValue( {\n\tminimumFontSize,\n\tmaximumFontSize,\n\tfontSize,\n\tminimumViewPortWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH,\n\tmaximumViewPortWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH,\n\tscaleFactor = DEFAULT_SCALE_FACTOR,\n\tminimumFontSizeFactor = DEFAULT_MINIMUM_FONT_SIZE_FACTOR,\n\tmaximumFontSizeFactor = DEFAULT_MAXIMUM_FONT_SIZE_FACTOR,\n} ) {\n\t// Calculate missing minimumFontSize and maximumFontSize from\n\t// defaultFontSize if provided.\n\tif ( fontSize && ( ! minimumFontSize || ! maximumFontSize ) ) {\n\t\t// Parse default font size.\n\t\tconst fontSizeParsed = getTypographyValueAndUnit( fontSize );\n\n\t\t// Protect against invalid units.\n\t\tif ( ! fontSizeParsed?.unit ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// If no minimumFontSize is provided, derive using min scale factor.\n\t\tif ( ! minimumFontSize ) {\n\t\t\tminimumFontSize =\n\t\t\t\tfontSizeParsed.value * minimumFontSizeFactor +\n\t\t\t\tfontSizeParsed.unit;\n\t\t}\n\n\t\t// If no maximumFontSize is provided, derive using max scale factor.\n\t\tif ( ! maximumFontSize ) {\n\t\t\tmaximumFontSize =\n\t\t\t\tfontSizeParsed.value * maximumFontSizeFactor +\n\t\t\t\tfontSizeParsed.unit;\n\t\t}\n\t}\n\n\t// Return early if one of the provided inputs is not provided.\n\tif ( ! minimumFontSize || ! maximumFontSize ) {\n\t\treturn null;\n\t}\n\n\t// Grab the minimum font size and normalize it in order to use the value for calculations.\n\tconst minimumFontSizeParsed = getTypographyValueAndUnit( minimumFontSize );\n\n\t// We get a 'preferred' unit to keep units consistent when calculating,\n\t// otherwise the result will not be accurate.\n\tconst fontSizeUnit = minimumFontSizeParsed?.unit || 'rem';\n\n\t// Grab the maximum font size and normalize it in order to use the value for calculations.\n\tconst maximumFontSizeParsed = getTypographyValueAndUnit( maximumFontSize, {\n\t\tcoerceTo: fontSizeUnit,\n\t} );\n\n\t// Protect against unsupported units.\n\tif ( ! minimumFontSizeParsed || ! maximumFontSizeParsed ) {\n\t\treturn null;\n\t}\n\n\t// Use rem for accessible fluid target font scaling.\n\tconst minimumFontSizeRem = getTypographyValueAndUnit( minimumFontSize, {\n\t\tcoerceTo: 'rem',\n\t} );\n\n\t// Viewport widths defined for fluid typography. Normalize units\n\tconst maximumViewPortWidthParsed = getTypographyValueAndUnit(\n\t\tmaximumViewPortWidth,\n\t\t{ coerceTo: fontSizeUnit }\n\t);\n\tconst minumumViewPortWidthParsed = getTypographyValueAndUnit(\n\t\tminimumViewPortWidth,\n\t\t{ coerceTo: fontSizeUnit }\n\t);\n\n\t// Protect against unsupported units.\n\tif (\n\t\t! maximumViewPortWidthParsed ||\n\t\t! minumumViewPortWidthParsed ||\n\t\t! minimumFontSizeRem\n\t) {\n\t\treturn null;\n\t}\n\n\t// Build CSS rule.\n\t// Borrowed from https://websemantics.uk/tools/responsive-font-calculator/.\n\tconst minViewPortWidthOffsetValue = roundToPrecision(\n\t\tminumumViewPortWidthParsed.value / 100,\n\t\t3\n\t);\n\n\tconst viewPortWidthOffset = minViewPortWidthOffsetValue + fontSizeUnit;\n\tlet linearFactor =\n\t\t100 *\n\t\t( ( maximumFontSizeParsed.value - minimumFontSizeParsed.value ) /\n\t\t\t( maximumViewPortWidthParsed.value -\n\t\t\t\tminumumViewPortWidthParsed.value ) );\n\tlinearFactor = roundToPrecision( linearFactor, 3 ) || 1;\n\tconst linearFactorScaled = linearFactor * scaleFactor;\n\tconst fluidTargetFontSize = `${ minimumFontSizeRem.value }${ minimumFontSizeRem.unit } + ((1vw - ${ viewPortWidthOffset }) * ${ linearFactorScaled })`;\n\n\treturn `clamp(${ minimumFontSize }, ${ fluidTargetFontSize }, ${ maximumFontSize })`;\n}\n\n/**\n * Internal method that checks a string for a unit and value and returns an array consisting of `'value'` and `'unit'`, e.g., [ '42', 'rem' ].\n * A raw font size of `value + unit` is expected. If the value is an integer, it will convert to `value + 'px'`.\n *\n * @param {string|number} rawValue Raw size value from theme.json.\n * @param {Object|undefined} options Calculation options.\n *\n * @return {{ unit: string, value: number }|null} An object consisting of `'value'` and `'unit'` properties.\n */\nexport function getTypographyValueAndUnit( rawValue, options = {} ) {\n\tif ( typeof rawValue !== 'string' && typeof rawValue !== 'number' ) {\n\t\treturn null;\n\t}\n\n\t// Converts numeric values to pixel values by default.\n\tif ( isFinite( rawValue ) ) {\n\t\trawValue = `${ rawValue }px`;\n\t}\n\n\tconst { coerceTo, rootSizeValue, acceptableUnits } = {\n\t\tcoerceTo: '',\n\t\t// Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( \"html\" ) ).fontSize`.\n\t\trootSizeValue: 16,\n\t\tacceptableUnits: [ 'rem', 'px', 'em' ],\n\t\t...options,\n\t};\n\n\tconst acceptableUnitsGroup = acceptableUnits?.join( '|' );\n\tconst regexUnits = new RegExp(\n\t\t`^(\\\\d*\\\\.?\\\\d+)(${ acceptableUnitsGroup }){1,1}$`\n\t);\n\n\tconst matches = rawValue.match( regexUnits );\n\n\t// We need a number value and a unit.\n\tif ( ! matches || matches.length < 3 ) {\n\t\treturn null;\n\t}\n\n\tlet [ , value, unit ] = matches;\n\n\tlet returnValue = parseFloat( value );\n\n\tif ( 'px' === coerceTo && ( 'em' === unit || 'rem' === unit ) ) {\n\t\treturnValue = returnValue * rootSizeValue;\n\t\tunit = coerceTo;\n\t}\n\n\tif ( 'px' === unit && ( 'em' === coerceTo || 'rem' === coerceTo ) ) {\n\t\treturnValue = returnValue / rootSizeValue;\n\t\tunit = coerceTo;\n\t}\n\n\treturn {\n\t\tvalue: returnValue,\n\t\tunit,\n\t};\n}\n\n/**\n * Returns a value rounded to defined precision.\n * Returns `undefined` if the value is not a valid finite number.\n *\n * @param {number} value Raw value.\n * @param {number} digits The number of digits to appear after the decimal point\n *\n * @return {number|undefined} Value rounded to standard precision.\n */\nexport function roundToPrecision( value, digits = 3 ) {\n\treturn Number.isFinite( value )\n\t\t? parseFloat( value.toFixed( digits ) )\n\t\t: undefined;\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { getFontSize, getFontSizeClass, getFontSizeObjectByValue } from './utils';
|
|
2
|
+
export { getComputedFluidTypographyValue } from './fluid-utils';
|
|
2
3
|
export { default as FontSizePicker } from './font-size-picker';
|
|
3
4
|
export { default as withFontSizes } from './with-font-sizes';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/font-sizes/index.js"],"names":["getFontSize","getFontSizeClass","getFontSizeObjectByValue","default","FontSizePicker","withFontSizes"],"mappings":"AAAA,SACCA,WADD,EAECC,gBAFD,EAGCC,wBAHD,QAIO,SAJP;AAKA,SAASC,OAAO,IAAIC,cAApB,QAA0C,oBAA1C;AACA,SAASD,OAAO,IAAIE,aAApB,QAAyC,mBAAzC","sourcesContent":["export {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n} from './utils';\nexport { default as FontSizePicker } from './font-size-picker';\nexport { default as withFontSizes } from './with-font-sizes';\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/font-sizes/index.js"],"names":["getFontSize","getFontSizeClass","getFontSizeObjectByValue","getComputedFluidTypographyValue","default","FontSizePicker","withFontSizes"],"mappings":"AAAA,SACCA,WADD,EAECC,gBAFD,EAGCC,wBAHD,QAIO,SAJP;AAKA,SAASC,+BAAT,QAAgD,eAAhD;AACA,SAASC,OAAO,IAAIC,cAApB,QAA0C,oBAA1C;AACA,SAASD,OAAO,IAAIE,aAApB,QAAyC,mBAAzC","sourcesContent":["export {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n} from './utils';\nexport { getComputedFluidTypographyValue } from './fluid-utils';\nexport { default as FontSizePicker } from './font-size-picker';\nexport { default as withFontSizes } from './with-font-sizes';\n"]}
|
|
@@ -7,14 +7,16 @@ import { addFilter } from '@wordpress/hooks';
|
|
|
7
7
|
import { hasBlockSupport } from '@wordpress/blocks';
|
|
8
8
|
import TokenList from '@wordpress/token-list';
|
|
9
9
|
import { createHigherOrderComponent } from '@wordpress/compose';
|
|
10
|
+
import { select } from '@wordpress/data';
|
|
10
11
|
/**
|
|
11
12
|
* Internal dependencies
|
|
12
13
|
*/
|
|
13
14
|
|
|
14
|
-
import { getFontSize, getFontSizeClass, getFontSizeObjectByValue, FontSizePicker } from '../components/font-sizes';
|
|
15
|
+
import { getFontSize, getFontSizeClass, getFontSizeObjectByValue, FontSizePicker, getComputedFluidTypographyValue } from '../components/font-sizes';
|
|
15
16
|
import { TYPOGRAPHY_SUPPORT_KEY } from './typography';
|
|
16
17
|
import { cleanEmptyObject, transformStyles, shouldSkipSerialization } from './utils';
|
|
17
18
|
import useSetting from '../components/use-setting';
|
|
19
|
+
import { store as blockEditorStore } from '../store';
|
|
18
20
|
export const FONT_SIZE_SUPPORT_KEY = 'typography.fontSize';
|
|
19
21
|
/**
|
|
20
22
|
* Filters registered block settings, extending attributes to include
|
|
@@ -249,9 +251,65 @@ export function addTransforms(result, source, index, results) {
|
|
|
249
251
|
};
|
|
250
252
|
return transformStyles(activeSupports, MIGRATION_PATHS, result, source, index, results);
|
|
251
253
|
}
|
|
254
|
+
/**
|
|
255
|
+
* Allow custom font sizes to appear fluid when fluid typography is enabled at
|
|
256
|
+
* the theme level.
|
|
257
|
+
*
|
|
258
|
+
* Adds a custom getEditWrapperProps() callback to all block types that support
|
|
259
|
+
* font sizes. Then, if fluid typography is enabled, this callback will swap any
|
|
260
|
+
* custom font size in style.fontSize with a fluid font size (i.e. one that uses
|
|
261
|
+
* clamp()).
|
|
262
|
+
*
|
|
263
|
+
* It's important that this hook runs after 'core/style/addEditProps' sets
|
|
264
|
+
* style.fontSize as otherwise fontSize will be overwritten.
|
|
265
|
+
*
|
|
266
|
+
* @param {Object} blockType Block settings object.
|
|
267
|
+
*/
|
|
268
|
+
|
|
269
|
+
function addEditPropsForFluidCustomFontSizes(blockType) {
|
|
270
|
+
if (!hasBlockSupport(blockType, FONT_SIZE_SUPPORT_KEY) || shouldSkipSerialization(blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize')) {
|
|
271
|
+
return blockType;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
const existingGetEditWrapperProps = blockType.getEditWrapperProps;
|
|
275
|
+
|
|
276
|
+
blockType.getEditWrapperProps = attributes => {
|
|
277
|
+
var _wrapperProps$style, _select$getSettings$_, _select$getSettings$_2;
|
|
278
|
+
|
|
279
|
+
const wrapperProps = existingGetEditWrapperProps ? existingGetEditWrapperProps(attributes) : {};
|
|
280
|
+
const fontSize = wrapperProps === null || wrapperProps === void 0 ? void 0 : (_wrapperProps$style = wrapperProps.style) === null || _wrapperProps$style === void 0 ? void 0 : _wrapperProps$style.fontSize; // TODO: This sucks! We should be using useSetting( 'typography.fluid' )
|
|
281
|
+
// or even useSelect( blockEditorStore ). We can't do either here
|
|
282
|
+
// because getEditWrapperProps is a plain JavaScript function called by
|
|
283
|
+
// BlockListBlock and not a React component rendered within
|
|
284
|
+
// BlockListContext.Provider. If we set fontSize using editor.
|
|
285
|
+
// BlockListBlock instead of using getEditWrapperProps then the value is
|
|
286
|
+
// clobbered when the core/style/addEditProps filter runs.
|
|
287
|
+
|
|
288
|
+
const isFluidTypographyEnabled = !!((_select$getSettings$_ = select(blockEditorStore).getSettings().__experimentalFeatures) !== null && _select$getSettings$_ !== void 0 && (_select$getSettings$_2 = _select$getSettings$_.typography) !== null && _select$getSettings$_2 !== void 0 && _select$getSettings$_2.fluid);
|
|
289
|
+
const newFontSize = fontSize && isFluidTypographyEnabled ? getComputedFluidTypographyValue({
|
|
290
|
+
fontSize
|
|
291
|
+
}) : null;
|
|
292
|
+
|
|
293
|
+
if (newFontSize === null) {
|
|
294
|
+
return wrapperProps;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
return { ...wrapperProps,
|
|
298
|
+
style: { ...(wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.style),
|
|
299
|
+
fontSize: newFontSize
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
return blockType;
|
|
305
|
+
}
|
|
306
|
+
|
|
252
307
|
addFilter('blocks.registerBlockType', 'core/font/addAttribute', addAttributes);
|
|
253
308
|
addFilter('blocks.getSaveContent.extraProps', 'core/font/addSaveProps', addSaveProps);
|
|
254
309
|
addFilter('blocks.registerBlockType', 'core/font/addEditProps', addEditProps);
|
|
255
310
|
addFilter('editor.BlockListBlock', 'core/font-size/with-font-size-inline-styles', withFontSizeInlineStyles);
|
|
256
311
|
addFilter('blocks.switchToBlockType.transformedBlock', 'core/font-size/addTransforms', addTransforms);
|
|
312
|
+
addFilter('blocks.registerBlockType', 'core/font-size/addEditPropsForFluidCustomFontSizes', addEditPropsForFluidCustomFontSizes, // Run after 'core/style/addEditProps' so that the style object has already
|
|
313
|
+
// been translated into inline CSS.
|
|
314
|
+
11);
|
|
257
315
|
//# sourceMappingURL=font-size.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/font-size.js"],"names":["addFilter","hasBlockSupport","TokenList","createHigherOrderComponent","getFontSize","getFontSizeClass","getFontSizeObjectByValue","FontSizePicker","TYPOGRAPHY_SUPPORT_KEY","cleanEmptyObject","transformStyles","shouldSkipSerialization","useSetting","FONT_SIZE_SUPPORT_KEY","addAttributes","settings","attributes","fontSize","Object","assign","type","addSaveProps","props","blockType","classes","className","add","newClassName","value","undefined","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","FontSizeEdit","style","setAttributes","fontSizes","onChange","fontSizeSlug","slug","typography","fontSizeObject","fontSizeValue","size","hasFontSizeValue","resetFontSize","useIsFontSizeDisabled","name","blockName","hasFontSizes","length","withFontSizeInlineStyles","BlockListBlock","wrapperProps","newProps","MIGRATION_PATHS","addTransforms","result","source","index","results","destinationBlockType","activeSupports"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport TokenList from '@wordpress/token-list';\nimport { createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n\tFontSizePicker,\n} from '../components/font-sizes';\nimport { TYPOGRAPHY_SUPPORT_KEY } from './typography';\nimport {\n\tcleanEmptyObject,\n\ttransformStyles,\n\tshouldSkipSerialization,\n} from './utils';\nimport useSetting from '../components/use-setting';\n\nexport const FONT_SIZE_SUPPORT_KEY = 'typography.fontSize';\n\n/**\n * Filters registered block settings, extending attributes to include\n * `fontSize` and `fontWeight` attributes.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify a default value if needed.\n\tif ( ! settings.attributes.fontSize ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tfontSize: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject font size.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nfunction addSaveProps( props, blockType, attributes ) {\n\tif ( ! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn props;\n\t}\n\n\tif (\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn props;\n\t}\n\n\t// Use TokenList to dedupe classes.\n\tconst classes = new TokenList( props.className );\n\tclasses.add( getFontSizeClass( attributes.fontSize ) );\n\tconst newClassName = classes.value;\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to expand the block edit wrapper\n * by applying the desired styles and classnames.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * Inspector control panel containing the font size related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Font size edit element.\n */\nexport function FontSizeEdit( props ) {\n\tconst {\n\t\tattributes: { fontSize, style },\n\t\tsetAttributes,\n\t} = props;\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\n\tconst onChange = ( value ) => {\n\t\tconst fontSizeSlug = getFontSizeObjectByValue( fontSizes, value ).slug;\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t...style,\n\t\t\t\ttypography: {\n\t\t\t\t\t...style?.typography,\n\t\t\t\t\tfontSize: fontSizeSlug ? undefined : value,\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tfontSize: fontSizeSlug,\n\t\t} );\n\t};\n\n\tconst fontSizeObject = getFontSize(\n\t\tfontSizes,\n\t\tfontSize,\n\t\tstyle?.typography?.fontSize\n\t);\n\n\tconst fontSizeValue =\n\t\tfontSizeObject?.size || style?.typography?.fontSize || fontSize;\n\n\treturn (\n\t\t<FontSizePicker\n\t\t\tonChange={ onChange }\n\t\t\tvalue={ fontSizeValue }\n\t\t\twithReset={ false }\n\t\t\tsize=\"__unstable-large\"\n\t\t\t__nextHasNoMarginBottom\n\t\t/>\n\t);\n}\n\n/**\n * Checks if there is a current value set for the font size block support.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a font size value set.\n */\nexport function hasFontSizeValue( props ) {\n\tconst { fontSize, style } = props.attributes;\n\treturn !! fontSize || !! style?.typography?.fontSize;\n}\n\n/**\n * Resets the font size block support attribute. This can be used when\n * disabling the font size support controls for a block via a progressive\n * discovery panel.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetFontSize( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tfontSize: undefined,\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\ttypography: {\n\t\t\t\t...style?.typography,\n\t\t\t\tfontSize: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if font-size settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether setting is disabled.\n */\nexport function useIsFontSizeDisabled( { name: blockName } = {} ) {\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\tconst hasFontSizes = !! fontSizes?.length;\n\n\treturn (\n\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) || ! hasFontSizes\n\t);\n}\n\n/**\n * Add inline styles for font sizes.\n * Ideally, this is not needed and themes load the font-size classes on the\n * editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withFontSizeInlineStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\t\tconst {\n\t\t\tname: blockName,\n\t\t\tattributes: { fontSize, style },\n\t\t\twrapperProps,\n\t\t} = props;\n\n\t\t// Only add inline styles if the block supports font sizes,\n\t\t// doesn't skip serialization of font sizes,\n\t\t// doesn't already have an inline font size,\n\t\t// and does have a class to extract the font size from.\n\t\tif (\n\t\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) ||\n\t\t\tshouldSkipSerialization(\n\t\t\t\tblockName,\n\t\t\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t\t\t\t'fontSize'\n\t\t\t) ||\n\t\t\t! fontSize ||\n\t\t\tstyle?.typography?.fontSize\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst fontSizeValue = getFontSize(\n\t\t\tfontSizes,\n\t\t\tfontSize,\n\t\t\tstyle?.typography?.fontSize\n\t\t).size;\n\n\t\tconst newProps = {\n\t\t\t...props,\n\t\t\twrapperProps: {\n\t\t\t\t...wrapperProps,\n\t\t\t\tstyle: {\n\t\t\t\t\tfontSize: fontSizeValue,\n\t\t\t\t\t...wrapperProps?.style,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...newProps } />;\n\t},\n\t'withFontSizeInlineStyles'\n);\n\nconst MIGRATION_PATHS = {\n\tfontSize: [ [ 'fontSize' ], [ 'style', 'typography', 'fontSize' ] ],\n};\n\nexport function addTransforms( result, source, index, results ) {\n\tconst destinationBlockType = result.name;\n\tconst activeSupports = {\n\t\tfontSize: hasBlockSupport(\n\t\t\tdestinationBlockType,\n\t\t\tFONT_SIZE_SUPPORT_KEY\n\t\t),\n\t};\n\treturn transformStyles(\n\t\tactiveSupports,\n\t\tMIGRATION_PATHS,\n\t\tresult,\n\t\tsource,\n\t\tindex,\n\t\tresults\n\t);\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/font/addSaveProps',\n\taddSaveProps\n);\n\naddFilter( 'blocks.registerBlockType', 'core/font/addEditProps', addEditProps );\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/font-size/with-font-size-inline-styles',\n\twithFontSizeInlineStyles\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/font-size/addTransforms',\n\taddTransforms\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/font-size.js"],"names":["addFilter","hasBlockSupport","TokenList","createHigherOrderComponent","select","getFontSize","getFontSizeClass","getFontSizeObjectByValue","FontSizePicker","getComputedFluidTypographyValue","TYPOGRAPHY_SUPPORT_KEY","cleanEmptyObject","transformStyles","shouldSkipSerialization","useSetting","store","blockEditorStore","FONT_SIZE_SUPPORT_KEY","addAttributes","settings","attributes","fontSize","Object","assign","type","addSaveProps","props","blockType","classes","className","add","newClassName","value","undefined","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","FontSizeEdit","style","setAttributes","fontSizes","onChange","fontSizeSlug","slug","typography","fontSizeObject","fontSizeValue","size","hasFontSizeValue","resetFontSize","useIsFontSizeDisabled","name","blockName","hasFontSizes","length","withFontSizeInlineStyles","BlockListBlock","wrapperProps","newProps","MIGRATION_PATHS","addTransforms","result","source","index","results","destinationBlockType","activeSupports","addEditPropsForFluidCustomFontSizes","isFluidTypographyEnabled","getSettings","__experimentalFeatures","fluid","newFontSize"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport TokenList from '@wordpress/token-list';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { select } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetFontSize,\n\tgetFontSizeClass,\n\tgetFontSizeObjectByValue,\n\tFontSizePicker,\n\tgetComputedFluidTypographyValue,\n} from '../components/font-sizes';\nimport { TYPOGRAPHY_SUPPORT_KEY } from './typography';\nimport {\n\tcleanEmptyObject,\n\ttransformStyles,\n\tshouldSkipSerialization,\n} from './utils';\nimport useSetting from '../components/use-setting';\nimport { store as blockEditorStore } from '../store';\n\nexport const FONT_SIZE_SUPPORT_KEY = 'typography.fontSize';\n\n/**\n * Filters registered block settings, extending attributes to include\n * `fontSize` and `fontWeight` attributes.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify a default value if needed.\n\tif ( ! settings.attributes.fontSize ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tfontSize: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject font size.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nfunction addSaveProps( props, blockType, attributes ) {\n\tif ( ! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn props;\n\t}\n\n\tif (\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn props;\n\t}\n\n\t// Use TokenList to dedupe classes.\n\tconst classes = new TokenList( props.className );\n\tclasses.add( getFontSizeClass( attributes.fontSize ) );\n\tconst newClassName = classes.value;\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to expand the block edit wrapper\n * by applying the desired styles and classnames.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif ( ! hasBlockSupport( settings, FONT_SIZE_SUPPORT_KEY ) ) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * Inspector control panel containing the font size related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Font size edit element.\n */\nexport function FontSizeEdit( props ) {\n\tconst {\n\t\tattributes: { fontSize, style },\n\t\tsetAttributes,\n\t} = props;\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\n\tconst onChange = ( value ) => {\n\t\tconst fontSizeSlug = getFontSizeObjectByValue( fontSizes, value ).slug;\n\n\t\tsetAttributes( {\n\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t...style,\n\t\t\t\ttypography: {\n\t\t\t\t\t...style?.typography,\n\t\t\t\t\tfontSize: fontSizeSlug ? undefined : value,\n\t\t\t\t},\n\t\t\t} ),\n\t\t\tfontSize: fontSizeSlug,\n\t\t} );\n\t};\n\n\tconst fontSizeObject = getFontSize(\n\t\tfontSizes,\n\t\tfontSize,\n\t\tstyle?.typography?.fontSize\n\t);\n\n\tconst fontSizeValue =\n\t\tfontSizeObject?.size || style?.typography?.fontSize || fontSize;\n\n\treturn (\n\t\t<FontSizePicker\n\t\t\tonChange={ onChange }\n\t\t\tvalue={ fontSizeValue }\n\t\t\twithReset={ false }\n\t\t\tsize=\"__unstable-large\"\n\t\t\t__nextHasNoMarginBottom\n\t\t/>\n\t);\n}\n\n/**\n * Checks if there is a current value set for the font size block support.\n *\n * @param {Object} props Block props.\n * @return {boolean} Whether or not the block has a font size value set.\n */\nexport function hasFontSizeValue( props ) {\n\tconst { fontSize, style } = props.attributes;\n\treturn !! fontSize || !! style?.typography?.fontSize;\n}\n\n/**\n * Resets the font size block support attribute. This can be used when\n * disabling the font size support controls for a block via a progressive\n * discovery panel.\n *\n * @param {Object} props Block props.\n * @param {Object} props.attributes Block's attributes.\n * @param {Object} props.setAttributes Function to set block's attributes.\n */\nexport function resetFontSize( { attributes = {}, setAttributes } ) {\n\tconst { style } = attributes;\n\n\tsetAttributes( {\n\t\tfontSize: undefined,\n\t\tstyle: cleanEmptyObject( {\n\t\t\t...style,\n\t\t\ttypography: {\n\t\t\t\t...style?.typography,\n\t\t\t\tfontSize: undefined,\n\t\t\t},\n\t\t} ),\n\t} );\n}\n\n/**\n * Custom hook that checks if font-size settings have been disabled.\n *\n * @param {string} name The name of the block.\n * @return {boolean} Whether setting is disabled.\n */\nexport function useIsFontSizeDisabled( { name: blockName } = {} ) {\n\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\tconst hasFontSizes = !! fontSizes?.length;\n\n\treturn (\n\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) || ! hasFontSizes\n\t);\n}\n\n/**\n * Add inline styles for font sizes.\n * Ideally, this is not needed and themes load the font-size classes on the\n * editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nconst withFontSizeInlineStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst fontSizes = useSetting( 'typography.fontSizes' );\n\t\tconst {\n\t\t\tname: blockName,\n\t\t\tattributes: { fontSize, style },\n\t\t\twrapperProps,\n\t\t} = props;\n\n\t\t// Only add inline styles if the block supports font sizes,\n\t\t// doesn't skip serialization of font sizes,\n\t\t// doesn't already have an inline font size,\n\t\t// and does have a class to extract the font size from.\n\t\tif (\n\t\t\t! hasBlockSupport( blockName, FONT_SIZE_SUPPORT_KEY ) ||\n\t\t\tshouldSkipSerialization(\n\t\t\t\tblockName,\n\t\t\t\tTYPOGRAPHY_SUPPORT_KEY,\n\t\t\t\t'fontSize'\n\t\t\t) ||\n\t\t\t! fontSize ||\n\t\t\tstyle?.typography?.fontSize\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst fontSizeValue = getFontSize(\n\t\t\tfontSizes,\n\t\t\tfontSize,\n\t\t\tstyle?.typography?.fontSize\n\t\t).size;\n\n\t\tconst newProps = {\n\t\t\t...props,\n\t\t\twrapperProps: {\n\t\t\t\t...wrapperProps,\n\t\t\t\tstyle: {\n\t\t\t\t\tfontSize: fontSizeValue,\n\t\t\t\t\t...wrapperProps?.style,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...newProps } />;\n\t},\n\t'withFontSizeInlineStyles'\n);\n\nconst MIGRATION_PATHS = {\n\tfontSize: [ [ 'fontSize' ], [ 'style', 'typography', 'fontSize' ] ],\n};\n\nexport function addTransforms( result, source, index, results ) {\n\tconst destinationBlockType = result.name;\n\tconst activeSupports = {\n\t\tfontSize: hasBlockSupport(\n\t\t\tdestinationBlockType,\n\t\t\tFONT_SIZE_SUPPORT_KEY\n\t\t),\n\t};\n\treturn transformStyles(\n\t\tactiveSupports,\n\t\tMIGRATION_PATHS,\n\t\tresult,\n\t\tsource,\n\t\tindex,\n\t\tresults\n\t);\n}\n\n/**\n * Allow custom font sizes to appear fluid when fluid typography is enabled at\n * the theme level.\n *\n * Adds a custom getEditWrapperProps() callback to all block types that support\n * font sizes. Then, if fluid typography is enabled, this callback will swap any\n * custom font size in style.fontSize with a fluid font size (i.e. one that uses\n * clamp()).\n *\n * It's important that this hook runs after 'core/style/addEditProps' sets\n * style.fontSize as otherwise fontSize will be overwritten.\n *\n * @param {Object} blockType Block settings object.\n */\nfunction addEditPropsForFluidCustomFontSizes( blockType ) {\n\tif (\n\t\t! hasBlockSupport( blockType, FONT_SIZE_SUPPORT_KEY ) ||\n\t\tshouldSkipSerialization( blockType, TYPOGRAPHY_SUPPORT_KEY, 'fontSize' )\n\t) {\n\t\treturn blockType;\n\t}\n\n\tconst existingGetEditWrapperProps = blockType.getEditWrapperProps;\n\n\tblockType.getEditWrapperProps = ( attributes ) => {\n\t\tconst wrapperProps = existingGetEditWrapperProps\n\t\t\t? existingGetEditWrapperProps( attributes )\n\t\t\t: {};\n\n\t\tconst fontSize = wrapperProps?.style?.fontSize;\n\n\t\t// TODO: This sucks! We should be using useSetting( 'typography.fluid' )\n\t\t// or even useSelect( blockEditorStore ). We can't do either here\n\t\t// because getEditWrapperProps is a plain JavaScript function called by\n\t\t// BlockListBlock and not a React component rendered within\n\t\t// BlockListContext.Provider. If we set fontSize using editor.\n\t\t// BlockListBlock instead of using getEditWrapperProps then the value is\n\t\t// clobbered when the core/style/addEditProps filter runs.\n\t\tconst isFluidTypographyEnabled =\n\t\t\t!! select( blockEditorStore ).getSettings().__experimentalFeatures\n\t\t\t\t?.typography?.fluid;\n\n\t\tconst newFontSize =\n\t\t\tfontSize && isFluidTypographyEnabled\n\t\t\t\t? getComputedFluidTypographyValue( { fontSize } )\n\t\t\t\t: null;\n\n\t\tif ( newFontSize === null ) {\n\t\t\treturn wrapperProps;\n\t\t}\n\n\t\treturn {\n\t\t\t...wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...wrapperProps?.style,\n\t\t\t\tfontSize: newFontSize,\n\t\t\t},\n\t\t};\n\t};\n\n\treturn blockType;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/font/addSaveProps',\n\taddSaveProps\n);\n\naddFilter( 'blocks.registerBlockType', 'core/font/addEditProps', addEditProps );\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/font-size/with-font-size-inline-styles',\n\twithFontSizeInlineStyles\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/font-size/addTransforms',\n\taddTransforms\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/font-size/addEditPropsForFluidCustomFontSizes',\n\taddEditPropsForFluidCustomFontSizes,\n\t// Run after 'core/style/addEditProps' so that the style object has already\n\t// been translated into inline CSS.\n\t11\n);\n"]}
|
|
@@ -8,7 +8,8 @@ import classnames from 'classnames';
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { getInlineStyles } from './style';
|
|
11
|
-
import { getFontSizeClass } from '../components/font-sizes';
|
|
11
|
+
import { getFontSizeClass } from '../components/font-sizes';
|
|
12
|
+
import { getComputedFluidTypographyValue } from '../components/font-sizes/fluid-utils'; // This utility is intended to assist where the serialization of the typography
|
|
12
13
|
// block support is being skipped for a block but the typography related CSS
|
|
13
14
|
// styles still need to be generated so they can be applied to inner elements.
|
|
14
15
|
|
|
@@ -16,15 +17,27 @@ import { getFontSizeClass } from '../components/font-sizes'; // This utility is
|
|
|
16
17
|
* Provides the CSS class names and inline styles for a block's typography support
|
|
17
18
|
* attributes.
|
|
18
19
|
*
|
|
19
|
-
* @param {Object}
|
|
20
|
+
* @param {Object} attributes Block attributes.
|
|
21
|
+
* @param {boolean} isFluidFontSizeActive Whether the function should try to convert font sizes to fluid values.
|
|
20
22
|
*
|
|
21
23
|
* @return {Object} Typography block support derived CSS classes & styles.
|
|
22
24
|
*/
|
|
23
25
|
|
|
24
|
-
export function getTypographyClassesAndStyles(attributes) {
|
|
26
|
+
export function getTypographyClassesAndStyles(attributes, isFluidFontSizeActive) {
|
|
25
27
|
var _attributes$style;
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
let typographyStyles = (attributes === null || attributes === void 0 ? void 0 : (_attributes$style = attributes.style) === null || _attributes$style === void 0 ? void 0 : _attributes$style.typography) || {};
|
|
30
|
+
|
|
31
|
+
if (isFluidFontSizeActive) {
|
|
32
|
+
var _attributes$style2, _attributes$style2$ty;
|
|
33
|
+
|
|
34
|
+
typographyStyles = { ...typographyStyles,
|
|
35
|
+
fontSize: getComputedFluidTypographyValue({
|
|
36
|
+
fontSize: attributes === null || attributes === void 0 ? void 0 : (_attributes$style2 = attributes.style) === null || _attributes$style2 === void 0 ? void 0 : (_attributes$style2$ty = _attributes$style2.typography) === null || _attributes$style2$ty === void 0 ? void 0 : _attributes$style2$ty.fontSize
|
|
37
|
+
})
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
28
41
|
const style = getInlineStyles({
|
|
29
42
|
typography: typographyStyles
|
|
30
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/use-typography-props.js"],"names":["kebabCase","classnames","getInlineStyles","getFontSizeClass","getTypographyClassesAndStyles","attributes","typographyStyles","style","typography","fontFamilyClassName","fontFamily","className"
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/use-typography-props.js"],"names":["kebabCase","classnames","getInlineStyles","getFontSizeClass","getComputedFluidTypographyValue","getTypographyClassesAndStyles","attributes","isFluidFontSizeActive","typographyStyles","style","typography","fontSize","fontFamilyClassName","fontFamily","className"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,QAA1B;AACA,OAAOC,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,eAAT,QAAgC,SAAhC;AACA,SAASC,gBAAT,QAAiC,0BAAjC;AACA,SAASC,+BAAT,QAAgD,sCAAhD,C,CAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,6BAAT,CACNC,UADM,EAENC,qBAFM,EAGL;AAAA;;AACD,MAAIC,gBAAgB,GAAG,CAAAF,UAAU,SAAV,IAAAA,UAAU,WAAV,iCAAAA,UAAU,CAAEG,KAAZ,wEAAmBC,UAAnB,KAAiC,EAAxD;;AAEA,MAAKH,qBAAL,EAA6B;AAAA;;AAC5BC,IAAAA,gBAAgB,GAAG,EAClB,GAAGA,gBADe;AAElBG,MAAAA,QAAQ,EAAEP,+BAA+B,CAAE;AAC1CO,QAAAA,QAAQ,EAAEL,UAAF,aAAEA,UAAF,6CAAEA,UAAU,CAAEG,KAAd,gFAAE,mBAAmBC,UAArB,0DAAE,sBAA+BC;AADC,OAAF;AAFvB,KAAnB;AAMA;;AAED,QAAMF,KAAK,GAAGP,eAAe,CAAE;AAAEQ,IAAAA,UAAU,EAAEF;AAAd,GAAF,CAA7B;AACA,QAAMI,mBAAmB,GAAG,CAAC,EAAEN,UAAF,aAAEA,UAAF,eAAEA,UAAU,CAAEO,UAAd,CAAD,GACxB,OAAOb,SAAS,CAAEM,UAAU,CAACO,UAAb,CAA2B,cADnB,GAEzB,EAFH;AAIA,QAAMC,SAAS,GAAGb,UAAU,CAC3BW,mBAD2B,EAE3BT,gBAAgB,CAAEG,UAAF,aAAEA,UAAF,uBAAEA,UAAU,CAAEK,QAAd,CAFW,CAA5B;AAKA,SAAO;AACNG,IAAAA,SADM;AAENL,IAAAA;AAFM,GAAP;AAIA","sourcesContent":["/**\n * External dependencies\n */\nimport { kebabCase } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * Internal dependencies\n */\nimport { getInlineStyles } from './style';\nimport { getFontSizeClass } from '../components/font-sizes';\nimport { getComputedFluidTypographyValue } from '../components/font-sizes/fluid-utils';\n\n// This utility is intended to assist where the serialization of the typography\n// block support is being skipped for a block but the typography related CSS\n// styles still need to be generated so they can be applied to inner elements.\n\n/**\n * Provides the CSS class names and inline styles for a block's typography support\n * attributes.\n *\n * @param {Object} attributes Block attributes.\n * @param {boolean} isFluidFontSizeActive Whether the function should try to convert font sizes to fluid values.\n *\n * @return {Object} Typography block support derived CSS classes & styles.\n */\nexport function getTypographyClassesAndStyles(\n\tattributes,\n\tisFluidFontSizeActive\n) {\n\tlet typographyStyles = attributes?.style?.typography || {};\n\n\tif ( isFluidFontSizeActive ) {\n\t\ttypographyStyles = {\n\t\t\t...typographyStyles,\n\t\t\tfontSize: getComputedFluidTypographyValue( {\n\t\t\t\tfontSize: attributes?.style?.typography?.fontSize,\n\t\t\t} ),\n\t\t};\n\t}\n\n\tconst style = getInlineStyles( { typography: typographyStyles } );\n\tconst fontFamilyClassName = !! attributes?.fontFamily\n\t\t? `has-${ kebabCase( attributes.fontFamily ) }-font-family`\n\t\t: '';\n\n\tconst className = classnames(\n\t\tfontFamilyClassName,\n\t\tgetFontSizeClass( attributes?.fontSize )\n\t);\n\n\treturn {\n\t\tclassName,\n\t\tstyle,\n\t};\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/block-editor",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.6",
|
|
4
4
|
"description": "Generic block editor.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@wordpress/api-fetch": "^6.14.1",
|
|
38
38
|
"@wordpress/blob": "^3.17.1",
|
|
39
39
|
"@wordpress/blocks": "^11.16.4",
|
|
40
|
-
"@wordpress/components": "^21.0.
|
|
40
|
+
"@wordpress/components": "^21.0.5",
|
|
41
41
|
"@wordpress/compose": "^5.15.2",
|
|
42
42
|
"@wordpress/data": "^7.1.3",
|
|
43
43
|
"@wordpress/date": "^4.17.1",
|
|
@@ -78,5 +78,5 @@
|
|
|
78
78
|
"publishConfig": {
|
|
79
79
|
"access": "public"
|
|
80
80
|
},
|
|
81
|
-
"gitHead": "
|
|
81
|
+
"gitHead": "e0bb20cabd2152c8f0f6758e1b4e17fa24c5e588"
|
|
82
82
|
}
|