@wordpress/block-editor 15.6.1 → 15.7.0

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.
Files changed (158) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/background-image-control/index.js +2 -2
  3. package/build/components/background-image-control/index.js.map +2 -2
  4. package/build/components/block-quick-navigation/index.js +1 -0
  5. package/build/components/block-quick-navigation/index.js.map +2 -2
  6. package/build/components/block-toolbar/switch-section-style.js +2 -5
  7. package/build/components/block-toolbar/switch-section-style.js.map +2 -2
  8. package/build/components/global-styles/border-panel.js +2 -1
  9. package/build/components/global-styles/border-panel.js.map +2 -2
  10. package/build/components/global-styles/color-panel.js +2 -1
  11. package/build/components/global-styles/color-panel.js.map +2 -2
  12. package/build/components/global-styles/dimensions-panel.js +3 -2
  13. package/build/components/global-styles/dimensions-panel.js.map +2 -2
  14. package/build/components/global-styles/filters-panel.js +2 -1
  15. package/build/components/global-styles/filters-panel.js.map +2 -2
  16. package/build/components/global-styles/hooks.js +0 -179
  17. package/build/components/global-styles/hooks.js.map +3 -3
  18. package/build/components/global-styles/index.js +0 -29
  19. package/build/components/global-styles/index.js.map +2 -2
  20. package/build/components/global-styles/typography-panel.js +2 -1
  21. package/build/components/global-styles/typography-panel.js.map +2 -2
  22. package/build/components/global-styles/typography-utils.js +2 -49
  23. package/build/components/global-styles/typography-utils.js.map +2 -2
  24. package/build/components/global-styles/utils.js +0 -396
  25. package/build/components/global-styles/utils.js.map +3 -3
  26. package/build/components/inserter/media-tab/media-tab.js +33 -1
  27. package/build/components/inserter/media-tab/media-tab.js.map +3 -3
  28. package/build/components/inserter/tips.js +0 -2
  29. package/build/components/inserter/tips.js.map +2 -2
  30. package/build/components/media-placeholder/index.js +31 -1
  31. package/build/components/media-placeholder/index.js.map +3 -3
  32. package/build/components/media-replace-flow/index.js +29 -1
  33. package/build/components/media-replace-flow/index.js.map +3 -3
  34. package/build/components/{global-styles/context.js → media-upload-modal/index.js} +8 -23
  35. package/build/components/media-upload-modal/index.js.map +7 -0
  36. package/build/hooks/allowed-blocks.js +3 -8
  37. package/build/hooks/allowed-blocks.js.map +3 -3
  38. package/build/hooks/block-style-variation.js +10 -23
  39. package/build/hooks/block-style-variation.js.map +2 -2
  40. package/build/hooks/duotone.js +3 -3
  41. package/build/hooks/duotone.js.map +2 -2
  42. package/build/hooks/fit-text.js +2 -2
  43. package/build/hooks/fit-text.js.map +2 -2
  44. package/build/hooks/font-size.js +2 -2
  45. package/build/hooks/font-size.js.map +2 -2
  46. package/build/hooks/use-typography-props.js +2 -2
  47. package/build/hooks/use-typography-props.js.map +2 -2
  48. package/build/private-apis.js +3 -1
  49. package/build/private-apis.js.map +3 -3
  50. package/build-module/components/background-image-control/index.js +1 -1
  51. package/build-module/components/background-image-control/index.js.map +2 -2
  52. package/build-module/components/block-quick-navigation/index.js +1 -0
  53. package/build-module/components/block-quick-navigation/index.js.map +2 -2
  54. package/build-module/components/block-toolbar/switch-section-style.js +2 -5
  55. package/build-module/components/block-toolbar/switch-section-style.js.map +2 -2
  56. package/build-module/components/global-styles/border-panel.js +2 -1
  57. package/build-module/components/global-styles/border-panel.js.map +2 -2
  58. package/build-module/components/global-styles/color-panel.js +2 -1
  59. package/build-module/components/global-styles/color-panel.js.map +2 -2
  60. package/build-module/components/global-styles/dimensions-panel.js +2 -1
  61. package/build-module/components/global-styles/dimensions-panel.js.map +2 -2
  62. package/build-module/components/global-styles/filters-panel.js +2 -1
  63. package/build-module/components/global-styles/filters-panel.js.map +2 -2
  64. package/build-module/components/global-styles/hooks.js +1 -167
  65. package/build-module/components/global-styles/hooks.js.map +2 -2
  66. package/build-module/components/global-styles/index.js +1 -29
  67. package/build-module/components/global-styles/index.js.map +2 -2
  68. package/build-module/components/global-styles/typography-panel.js +2 -1
  69. package/build-module/components/global-styles/typography-panel.js.map +2 -2
  70. package/build-module/components/global-styles/typography-utils.js +1 -49
  71. package/build-module/components/global-styles/typography-utils.js.map +2 -2
  72. package/build-module/components/global-styles/utils.js +0 -372
  73. package/build-module/components/global-styles/utils.js.map +2 -2
  74. package/build-module/components/inserter/media-tab/media-tab.js +34 -2
  75. package/build-module/components/inserter/media-tab/media-tab.js.map +2 -2
  76. package/build-module/components/inserter/tips.js +0 -2
  77. package/build-module/components/inserter/tips.js.map +2 -2
  78. package/build-module/components/media-placeholder/index.js +31 -1
  79. package/build-module/components/media-placeholder/index.js.map +2 -2
  80. package/build-module/components/media-replace-flow/index.js +29 -1
  81. package/build-module/components/media-replace-flow/index.js.map +2 -2
  82. package/build-module/components/media-upload-modal/index.js +7 -0
  83. package/build-module/components/media-upload-modal/index.js.map +7 -0
  84. package/build-module/hooks/allowed-blocks.js +3 -8
  85. package/build-module/hooks/allowed-blocks.js.map +2 -2
  86. package/build-module/hooks/block-style-variation.js +8 -25
  87. package/build-module/hooks/block-style-variation.js.map +2 -2
  88. package/build-module/hooks/duotone.js +3 -3
  89. package/build-module/hooks/duotone.js.map +2 -2
  90. package/build-module/hooks/fit-text.js +2 -2
  91. package/build-module/hooks/fit-text.js.map +2 -2
  92. package/build-module/hooks/font-size.js +1 -1
  93. package/build-module/hooks/font-size.js.map +2 -2
  94. package/build-module/hooks/use-typography-props.js +1 -1
  95. package/build-module/hooks/use-typography-props.js.map +2 -2
  96. package/build-module/private-apis.js +3 -1
  97. package/build-module/private-apis.js.map +2 -2
  98. package/build-style/style-rtl.css +10 -6
  99. package/build-style/style.css +10 -6
  100. package/package.json +36 -35
  101. package/src/components/background-image-control/index.js +1 -1
  102. package/src/components/block-card/style.scss +1 -1
  103. package/src/components/block-navigation/style.scss +1 -1
  104. package/src/components/block-quick-navigation/index.js +1 -0
  105. package/src/components/block-quick-navigation/style.scss +5 -0
  106. package/src/components/block-switcher/style.scss +1 -1
  107. package/src/components/block-toolbar/switch-section-style.js +2 -5
  108. package/src/components/color-palette/test/__snapshots__/control.js.snap +1 -1
  109. package/src/components/global-styles/border-panel.js +2 -1
  110. package/src/components/global-styles/color-panel.js +2 -1
  111. package/src/components/global-styles/color-panel.native.js +1 -1
  112. package/src/components/global-styles/dimensions-panel.js +2 -1
  113. package/src/components/global-styles/filters-panel.js +2 -1
  114. package/src/components/global-styles/hooks.js +1 -200
  115. package/src/components/global-styles/index.js +1 -17
  116. package/src/components/global-styles/test/typography-utils.js +0 -806
  117. package/src/components/global-styles/typography-panel.js +2 -1
  118. package/src/components/global-styles/typography-utils.js +0 -133
  119. package/src/components/global-styles/utils.js +0 -568
  120. package/src/components/inserter/media-tab/media-tab.js +44 -2
  121. package/src/components/inserter/style.scss +2 -2
  122. package/src/components/inserter/tips.js +0 -2
  123. package/src/components/media-placeholder/index.js +41 -1
  124. package/src/components/media-replace-flow/index.js +39 -1
  125. package/src/components/media-upload-modal/index.js +18 -0
  126. package/src/components/multi-selection-inspector/style.scss +1 -1
  127. package/src/hooks/allowed-blocks.js +3 -11
  128. package/src/hooks/block-style-variation.js +8 -28
  129. package/src/hooks/duotone.js +3 -3
  130. package/src/hooks/fit-text.js +2 -2
  131. package/src/hooks/font-size.js +1 -1
  132. package/src/hooks/use-typography-props.js +1 -1
  133. package/src/private-apis.js +2 -0
  134. package/src/style.scss +1 -0
  135. package/tsconfig.json +2 -0
  136. package/build/components/global-styles/context.js.map +0 -7
  137. package/build/components/global-styles/get-block-css-selector.js +0 -78
  138. package/build/components/global-styles/get-block-css-selector.js.map +0 -7
  139. package/build/components/global-styles/get-global-styles-changes.js +0 -216
  140. package/build/components/global-styles/get-global-styles-changes.js.map +0 -7
  141. package/build/components/global-styles/use-global-styles-output.js +0 -998
  142. package/build/components/global-styles/use-global-styles-output.js.map +0 -7
  143. package/build-module/components/global-styles/context.js +0 -17
  144. package/build-module/components/global-styles/context.js.map +0 -7
  145. package/build-module/components/global-styles/get-block-css-selector.js +0 -54
  146. package/build-module/components/global-styles/get-block-css-selector.js.map +0 -7
  147. package/build-module/components/global-styles/get-global-styles-changes.js +0 -182
  148. package/build-module/components/global-styles/get-global-styles-changes.js.map +0 -7
  149. package/build-module/components/global-styles/use-global-styles-output.js +0 -979
  150. package/build-module/components/global-styles/use-global-styles-output.js.map +0 -7
  151. package/src/components/global-styles/README.md +0 -190
  152. package/src/components/global-styles/context.js +0 -16
  153. package/src/components/global-styles/get-block-css-selector.js +0 -114
  154. package/src/components/global-styles/get-global-styles-changes.js +0 -252
  155. package/src/components/global-styles/test/get-global-styles-changes.js +0 -290
  156. package/src/components/global-styles/test/use-global-styles-output.js +0 -1131
  157. package/src/components/global-styles/test/utils.js +0 -499
  158. package/src/components/global-styles/use-global-styles-output.js +0 -1487
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,165 +15,14 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var utils_exports = {};
30
20
  __export(utils_exports, {
31
- PRESET_METADATA: () => PRESET_METADATA,
32
- ROOT_BLOCK_SELECTOR: () => ROOT_BLOCK_SELECTOR,
33
- ROOT_CSS_PROPERTIES_SELECTOR: () => ROOT_CSS_PROPERTIES_SELECTOR,
34
- STYLE_PATH_TO_CSS_VAR_INFIX: () => STYLE_PATH_TO_CSS_VAR_INFIX,
35
- STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE: () => STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE,
36
- appendToSelector: () => appendToSelector,
37
- areGlobalStyleConfigsEqual: () => areGlobalStyleConfigsEqual,
38
- getBlockStyleVariationSelector: () => getBlockStyleVariationSelector,
39
- getPresetVariableFromValue: () => getPresetVariableFromValue,
40
- getResolvedRefValue: () => getResolvedRefValue,
41
- getResolvedThemeFilePath: () => getResolvedThemeFilePath,
42
- getResolvedValue: () => getResolvedValue,
43
- getValueFromVariable: () => getValueFromVariable,
44
- scopeFeatureSelectors: () => scopeFeatureSelectors,
45
21
  scopeSelector: () => scopeSelector,
46
22
  useToolsPanelDropdownMenuProps: () => useToolsPanelDropdownMenuProps
47
23
  });
48
24
  module.exports = __toCommonJS(utils_exports);
49
- var import_es6 = __toESM(require("fast-deep-equal/es6"));
50
25
  var import_compose = require("@wordpress/compose");
51
- var import_style_engine = require("@wordpress/style-engine");
52
- var import_typography_utils = require("./typography-utils");
53
- var import_object = require("../../utils/object");
54
- const ROOT_BLOCK_SELECTOR = "body";
55
- const ROOT_CSS_PROPERTIES_SELECTOR = ":root";
56
- const PRESET_METADATA = [
57
- {
58
- path: ["color", "palette"],
59
- valueKey: "color",
60
- cssVarInfix: "color",
61
- classes: [
62
- { classSuffix: "color", propertyName: "color" },
63
- {
64
- classSuffix: "background-color",
65
- propertyName: "background-color"
66
- },
67
- {
68
- classSuffix: "border-color",
69
- propertyName: "border-color"
70
- }
71
- ]
72
- },
73
- {
74
- path: ["color", "gradients"],
75
- valueKey: "gradient",
76
- cssVarInfix: "gradient",
77
- classes: [
78
- {
79
- classSuffix: "gradient-background",
80
- propertyName: "background"
81
- }
82
- ]
83
- },
84
- {
85
- path: ["color", "duotone"],
86
- valueKey: "colors",
87
- cssVarInfix: "duotone",
88
- valueFunc: ({ slug }) => `url( '#wp-duotone-${slug}' )`,
89
- classes: []
90
- },
91
- {
92
- path: ["shadow", "presets"],
93
- valueKey: "shadow",
94
- cssVarInfix: "shadow",
95
- classes: []
96
- },
97
- {
98
- path: ["typography", "fontSizes"],
99
- valueFunc: (preset, settings) => (0, import_typography_utils.getTypographyFontSizeValue)(preset, settings),
100
- valueKey: "size",
101
- cssVarInfix: "font-size",
102
- classes: [{ classSuffix: "font-size", propertyName: "font-size" }]
103
- },
104
- {
105
- path: ["typography", "fontFamilies"],
106
- valueKey: "fontFamily",
107
- cssVarInfix: "font-family",
108
- classes: [
109
- { classSuffix: "font-family", propertyName: "font-family" }
110
- ]
111
- },
112
- {
113
- path: ["spacing", "spacingSizes"],
114
- valueKey: "size",
115
- cssVarInfix: "spacing",
116
- classes: []
117
- },
118
- {
119
- path: ["border", "radiusSizes"],
120
- valueKey: "size",
121
- cssVarInfix: "border-radius",
122
- classes: []
123
- }
124
- ];
125
- const STYLE_PATH_TO_CSS_VAR_INFIX = {
126
- "color.background": "color",
127
- "color.text": "color",
128
- "filter.duotone": "duotone",
129
- "elements.link.color.text": "color",
130
- "elements.link.:hover.color.text": "color",
131
- "elements.link.typography.fontFamily": "font-family",
132
- "elements.link.typography.fontSize": "font-size",
133
- "elements.button.color.text": "color",
134
- "elements.button.color.background": "color",
135
- "elements.caption.color.text": "color",
136
- "elements.button.typography.fontFamily": "font-family",
137
- "elements.button.typography.fontSize": "font-size",
138
- "elements.heading.color": "color",
139
- "elements.heading.color.background": "color",
140
- "elements.heading.typography.fontFamily": "font-family",
141
- "elements.heading.gradient": "gradient",
142
- "elements.heading.color.gradient": "gradient",
143
- "elements.h1.color": "color",
144
- "elements.h1.color.background": "color",
145
- "elements.h1.typography.fontFamily": "font-family",
146
- "elements.h1.color.gradient": "gradient",
147
- "elements.h2.color": "color",
148
- "elements.h2.color.background": "color",
149
- "elements.h2.typography.fontFamily": "font-family",
150
- "elements.h2.color.gradient": "gradient",
151
- "elements.h3.color": "color",
152
- "elements.h3.color.background": "color",
153
- "elements.h3.typography.fontFamily": "font-family",
154
- "elements.h3.color.gradient": "gradient",
155
- "elements.h4.color": "color",
156
- "elements.h4.color.background": "color",
157
- "elements.h4.typography.fontFamily": "font-family",
158
- "elements.h4.color.gradient": "gradient",
159
- "elements.h5.color": "color",
160
- "elements.h5.color.background": "color",
161
- "elements.h5.typography.fontFamily": "font-family",
162
- "elements.h5.color.gradient": "gradient",
163
- "elements.h6.color": "color",
164
- "elements.h6.color.background": "color",
165
- "elements.h6.typography.fontFamily": "font-family",
166
- "elements.h6.color.gradient": "gradient",
167
- "color.gradient": "gradient",
168
- shadow: "shadow",
169
- "typography.fontSize": "font-size",
170
- "typography.fontFamily": "font-family"
171
- };
172
- const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {
173
- "color.background": "backgroundColor",
174
- "color.text": "textColor",
175
- "color.gradient": "gradient",
176
- "typography.fontSize": "fontSize",
177
- "typography.fontFamily": "fontFamily"
178
- };
179
26
  function useToolsPanelDropdownMenuProps() {
180
27
  const isMobile = (0, import_compose.useViewportMatch)("medium", "<");
181
28
  return !isMobile ? {
@@ -186,143 +33,6 @@ function useToolsPanelDropdownMenuProps() {
186
33
  }
187
34
  } : {};
188
35
  }
189
- function findInPresetsBy(features, blockName, presetPath, presetProperty, presetValueValue) {
190
- const orderedPresetsByOrigin = [
191
- (0, import_object.getValueFromObjectPath)(features, [
192
- "blocks",
193
- blockName,
194
- ...presetPath
195
- ]),
196
- (0, import_object.getValueFromObjectPath)(features, presetPath)
197
- ];
198
- for (const presetByOrigin of orderedPresetsByOrigin) {
199
- if (presetByOrigin) {
200
- const origins = ["custom", "theme", "default"];
201
- for (const origin of origins) {
202
- const presets = presetByOrigin[origin];
203
- if (presets) {
204
- const presetObject = presets.find(
205
- (preset) => preset[presetProperty] === presetValueValue
206
- );
207
- if (presetObject) {
208
- if (presetProperty === "slug") {
209
- return presetObject;
210
- }
211
- const highestPresetObjectWithSameSlug = findInPresetsBy(
212
- features,
213
- blockName,
214
- presetPath,
215
- "slug",
216
- presetObject.slug
217
- );
218
- if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) {
219
- return presetObject;
220
- }
221
- return void 0;
222
- }
223
- }
224
- }
225
- }
226
- }
227
- }
228
- function getPresetVariableFromValue(features, blockName, variableStylePath, presetPropertyValue) {
229
- if (!presetPropertyValue) {
230
- return presetPropertyValue;
231
- }
232
- const cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[variableStylePath];
233
- const metadata = PRESET_METADATA.find(
234
- (data) => data.cssVarInfix === cssVarInfix
235
- );
236
- if (!metadata) {
237
- return presetPropertyValue;
238
- }
239
- const { valueKey, path } = metadata;
240
- const presetObject = findInPresetsBy(
241
- features,
242
- blockName,
243
- path,
244
- valueKey,
245
- presetPropertyValue
246
- );
247
- if (!presetObject) {
248
- return presetPropertyValue;
249
- }
250
- return `var:preset|${cssVarInfix}|${presetObject.slug}`;
251
- }
252
- function getValueFromPresetVariable(features, blockName, variable, [presetType, slug]) {
253
- const metadata = PRESET_METADATA.find(
254
- (data) => data.cssVarInfix === presetType
255
- );
256
- if (!metadata) {
257
- return variable;
258
- }
259
- const presetObject = findInPresetsBy(
260
- features.settings,
261
- blockName,
262
- metadata.path,
263
- "slug",
264
- slug
265
- );
266
- if (presetObject) {
267
- const { valueKey } = metadata;
268
- const result = presetObject[valueKey];
269
- return getValueFromVariable(features, blockName, result);
270
- }
271
- return variable;
272
- }
273
- function getValueFromCustomVariable(features, blockName, variable, path) {
274
- const result = (0, import_object.getValueFromObjectPath)(features.settings, [
275
- "blocks",
276
- blockName,
277
- "custom",
278
- ...path
279
- ]) ?? (0, import_object.getValueFromObjectPath)(features.settings, ["custom", ...path]);
280
- if (!result) {
281
- return variable;
282
- }
283
- return getValueFromVariable(features, blockName, result);
284
- }
285
- function getValueFromVariable(features, blockName, variable) {
286
- if (!variable || typeof variable !== "string") {
287
- if (typeof variable?.ref === "string") {
288
- variable = (0, import_object.getValueFromObjectPath)(features, variable.ref);
289
- if (!variable || !!variable?.ref) {
290
- return variable;
291
- }
292
- } else {
293
- return variable;
294
- }
295
- }
296
- const USER_VALUE_PREFIX = "var:";
297
- const THEME_VALUE_PREFIX = "var(--wp--";
298
- const THEME_VALUE_SUFFIX = ")";
299
- let parsedVar;
300
- if (variable.startsWith(USER_VALUE_PREFIX)) {
301
- parsedVar = variable.slice(USER_VALUE_PREFIX.length).split("|");
302
- } else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) {
303
- parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split("--");
304
- } else {
305
- return variable;
306
- }
307
- const [type, ...path] = parsedVar;
308
- if (type === "preset") {
309
- return getValueFromPresetVariable(
310
- features,
311
- blockName,
312
- variable,
313
- path
314
- );
315
- }
316
- if (type === "custom") {
317
- return getValueFromCustomVariable(
318
- features,
319
- blockName,
320
- variable,
321
- path
322
- );
323
- }
324
- return variable;
325
- }
326
36
  function scopeSelector(scope, selector) {
327
37
  if (!scope || !selector) {
328
38
  return selector;
@@ -337,114 +47,8 @@ function scopeSelector(scope, selector) {
337
47
  });
338
48
  return selectorsScoped.join(", ");
339
49
  }
340
- function scopeFeatureSelectors(scope, selectors) {
341
- if (!scope || !selectors) {
342
- return;
343
- }
344
- const featureSelectors = {};
345
- Object.entries(selectors).forEach(([feature, selector]) => {
346
- if (typeof selector === "string") {
347
- featureSelectors[feature] = scopeSelector(scope, selector);
348
- }
349
- if (typeof selector === "object") {
350
- featureSelectors[feature] = {};
351
- Object.entries(selector).forEach(
352
- ([subfeature, subfeatureSelector]) => {
353
- featureSelectors[feature][subfeature] = scopeSelector(
354
- scope,
355
- subfeatureSelector
356
- );
357
- }
358
- );
359
- }
360
- });
361
- return featureSelectors;
362
- }
363
- function appendToSelector(selector, toAppend) {
364
- if (!selector.includes(",")) {
365
- return selector + toAppend;
366
- }
367
- const selectors = selector.split(",");
368
- const newSelectors = selectors.map((sel) => sel + toAppend);
369
- return newSelectors.join(",");
370
- }
371
- function areGlobalStyleConfigsEqual(original, variation) {
372
- if (typeof original !== "object" || typeof variation !== "object") {
373
- return original === variation;
374
- }
375
- return (0, import_es6.default)(original?.styles, variation?.styles) && (0, import_es6.default)(original?.settings, variation?.settings);
376
- }
377
- function getBlockStyleVariationSelector(variation, blockSelector) {
378
- const variationClass = `.is-style-${variation}`;
379
- if (!blockSelector) {
380
- return variationClass;
381
- }
382
- const ancestorRegex = /((?::\([^)]+\))?\s*)([^\s:]+)/;
383
- const addVariationClass = (_match, group1, group2) => {
384
- return group1 + group2 + variationClass;
385
- };
386
- const result = blockSelector.split(",").map((part) => part.replace(ancestorRegex, addVariationClass));
387
- return result.join(",");
388
- }
389
- function getResolvedThemeFilePath(file, themeFileURIs) {
390
- if (!file || !themeFileURIs || !Array.isArray(themeFileURIs)) {
391
- return file;
392
- }
393
- const uri = themeFileURIs.find(
394
- (themeFileUri) => themeFileUri?.name === file
395
- );
396
- if (!uri?.href) {
397
- return file;
398
- }
399
- return uri?.href;
400
- }
401
- function getResolvedRefValue(ruleValue, tree) {
402
- if (!ruleValue || !tree) {
403
- return ruleValue;
404
- }
405
- if (typeof ruleValue !== "string" && ruleValue?.ref) {
406
- const resolvedRuleValue = (0, import_style_engine.getCSSValueFromRawStyle)(
407
- (0, import_object.getValueFromObjectPath)(tree, ruleValue.ref)
408
- );
409
- if (resolvedRuleValue?.ref) {
410
- return void 0;
411
- }
412
- if (resolvedRuleValue === void 0) {
413
- return ruleValue;
414
- }
415
- return resolvedRuleValue;
416
- }
417
- return ruleValue;
418
- }
419
- function getResolvedValue(ruleValue, tree) {
420
- if (!ruleValue || !tree) {
421
- return ruleValue;
422
- }
423
- const resolvedValue = getResolvedRefValue(ruleValue, tree);
424
- if (resolvedValue?.url) {
425
- resolvedValue.url = getResolvedThemeFilePath(
426
- resolvedValue.url,
427
- tree?._links?.["wp:theme-file"]
428
- );
429
- }
430
- return resolvedValue;
431
- }
432
50
  // Annotate the CommonJS export names for ESM import in node:
433
51
  0 && (module.exports = {
434
- PRESET_METADATA,
435
- ROOT_BLOCK_SELECTOR,
436
- ROOT_CSS_PROPERTIES_SELECTOR,
437
- STYLE_PATH_TO_CSS_VAR_INFIX,
438
- STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE,
439
- appendToSelector,
440
- areGlobalStyleConfigsEqual,
441
- getBlockStyleVariationSelector,
442
- getPresetVariableFromValue,
443
- getResolvedRefValue,
444
- getResolvedThemeFilePath,
445
- getResolvedValue,
446
- getValueFromVariable,
447
- scopeFeatureSelectors,
448
52
  scopeSelector,
449
53
  useToolsPanelDropdownMenuProps
450
54
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/global-styles/utils.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { getCSSValueFromRawStyle } from '@wordpress/style-engine';\n\n/**\n * Internal dependencies\n */\nimport { getTypographyFontSizeValue } from './typography-utils';\nimport { getValueFromObjectPath } from '../../utils/object';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_CSS_PROPERTIES_SELECTOR = ':root';\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'duotone' ],\n\t\tvalueKey: 'colors',\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'shadow', 'presets' ],\n\t\tvalueKey: 'shadow',\n\t\tcssVarInfix: 'shadow',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueFunc: ( preset, settings ) =>\n\t\t\tgetTypographyFontSizeValue( preset, settings ),\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'spacing', 'spacingSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'spacing',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'border', 'radiusSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'border-radius',\n\t\tclasses: [],\n\t},\n];\n\nexport const STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'filter.duotone': 'duotone',\n\t'elements.link.color.text': 'color',\n\t'elements.link.:hover.color.text': 'color',\n\t'elements.link.typography.fontFamily': 'font-family',\n\t'elements.link.typography.fontSize': 'font-size',\n\t'elements.button.color.text': 'color',\n\t'elements.button.color.background': 'color',\n\t'elements.caption.color.text': 'color',\n\t'elements.button.typography.fontFamily': 'font-family',\n\t'elements.button.typography.fontSize': 'font-size',\n\t'elements.heading.color': 'color',\n\t'elements.heading.color.background': 'color',\n\t'elements.heading.typography.fontFamily': 'font-family',\n\t'elements.heading.gradient': 'gradient',\n\t'elements.heading.color.gradient': 'gradient',\n\t'elements.h1.color': 'color',\n\t'elements.h1.color.background': 'color',\n\t'elements.h1.typography.fontFamily': 'font-family',\n\t'elements.h1.color.gradient': 'gradient',\n\t'elements.h2.color': 'color',\n\t'elements.h2.color.background': 'color',\n\t'elements.h2.typography.fontFamily': 'font-family',\n\t'elements.h2.color.gradient': 'gradient',\n\t'elements.h3.color': 'color',\n\t'elements.h3.color.background': 'color',\n\t'elements.h3.typography.fontFamily': 'font-family',\n\t'elements.h3.color.gradient': 'gradient',\n\t'elements.h4.color': 'color',\n\t'elements.h4.color.background': 'color',\n\t'elements.h4.typography.fontFamily': 'font-family',\n\t'elements.h4.color.gradient': 'gradient',\n\t'elements.h5.color': 'color',\n\t'elements.h5.color.background': 'color',\n\t'elements.h5.typography.fontFamily': 'font-family',\n\t'elements.h5.color.gradient': 'gradient',\n\t'elements.h6.color': 'color',\n\t'elements.h6.color.background': 'color',\n\t'elements.h6.typography.fontFamily': 'font-family',\n\t'elements.h6.color.gradient': 'gradient',\n\t'color.gradient': 'gradient',\n\tshadow: 'shadow',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\n// A static list of block attributes that store global style preset slugs.\nexport const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {\n\t'color.background': 'backgroundColor',\n\t'color.text': 'textColor',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'fontSize',\n\t'typography.fontFamily': 'fontFamily',\n};\n\nexport function useToolsPanelDropdownMenuProps() {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn ! isMobile\n\t\t? {\n\t\t\t\tpopoverProps: {\n\t\t\t\t\tplacement: 'left-start',\n\t\t\t\t\t// For non-mobile, inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)\n\t\t\t\t\toffset: 259,\n\t\t\t\t},\n\t\t }\n\t\t: {};\n}\n\nfunction findInPresetsBy(\n\tfeatures,\n\tblockName,\n\tpresetPath,\n\tpresetProperty,\n\tpresetValueValue\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tgetValueFromObjectPath( features, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t...presetPath,\n\t\t] ),\n\t\tgetValueFromObjectPath( features, presetPath ),\n\t];\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = presets.find(\n\t\t\t\t\t\t( preset ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tfeatures,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getPresetVariableFromValue(\n\tfeatures,\n\tblockName,\n\tvariableStylePath,\n\tpresetPropertyValue\n) {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === cssVarInfix\n\t);\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures,\n\tblockName,\n\tvariable,\n\t[ presetType, slug ]\n) {\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === presetType\n\t);\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures.settings,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable( features, blockName, variable, path ) {\n\tconst result =\n\t\tgetValueFromObjectPath( features.settings, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t'custom',\n\t\t\t...path,\n\t\t] ) ??\n\t\tgetValueFromObjectPath( features.settings, [ 'custom', ...path ] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result );\n}\n\n/**\n * Attempts to fetch the value of a theme.json CSS variable.\n *\n * @param {Object} features GlobalStylesContext config, e.g., user, base or merged. Represents the theme.json tree.\n * @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.\n * @param {string|*} variable An incoming style value. A CSS var value is expected, but it could be any value.\n * @return {string|*|{ref}} The value of the CSS var, if found. If not found, the passed variable argument.\n */\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\tif ( typeof variable?.ref === 'string' ) {\n\t\t\tvariable = getValueFromObjectPath( features, variable.ref );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! variable || !! variable?.ref ) {\n\t\t\t\treturn variable;\n\t\t\t}\n\t\t} else {\n\t\t\treturn variable;\n\t\t}\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n\n/**\n * Function that scopes a selector with another one. This works a bit like\n * SCSS nesting except the `&` operator isn't supported.\n *\n * @example\n * ```js\n * const scope = '.a, .b .c';\n * const selector = '> .x, .y';\n * const merged = scopeSelector( scope, selector );\n * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'\n * ```\n *\n * @param {string} scope Selector to scope to.\n * @param {string} selector Original selector.\n *\n * @return {string} Scoped selector.\n */\nexport function scopeSelector( scope, selector ) {\n\tif ( ! scope || ! selector ) {\n\t\treturn selector;\n\t}\n\n\tconst scopes = scope.split( ',' );\n\tconst selectors = selector.split( ',' );\n\n\tconst selectorsScoped = [];\n\tscopes.forEach( ( outer ) => {\n\t\tselectors.forEach( ( inner ) => {\n\t\t\tselectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );\n\t\t} );\n\t} );\n\n\treturn selectorsScoped.join( ', ' );\n}\n\n/**\n * Scopes a collection of selectors for features and subfeatures.\n *\n * @example\n * ```js\n * const scope = '.custom-scope';\n * const selectors = {\n * color: '.wp-my-block p',\n * typography: { fontSize: '.wp-my-block caption' },\n * };\n * const result = scopeFeatureSelector( scope, selectors );\n * // result is {\n * // color: '.custom-scope .wp-my-block p',\n * // typography: { fonSize: '.custom-scope .wp-my-block caption' },\n * // }\n * ```\n *\n * @param {string} scope Selector to scope collection of selectors with.\n * @param {Object} selectors Collection of feature selectors e.g.\n *\n * @return {Object|undefined} Scoped collection of feature selectors.\n */\nexport function scopeFeatureSelectors( scope, selectors ) {\n\tif ( ! scope || ! selectors ) {\n\t\treturn;\n\t}\n\n\tconst featureSelectors = {};\n\n\tObject.entries( selectors ).forEach( ( [ feature, selector ] ) => {\n\t\tif ( typeof selector === 'string' ) {\n\t\t\tfeatureSelectors[ feature ] = scopeSelector( scope, selector );\n\t\t}\n\n\t\tif ( typeof selector === 'object' ) {\n\t\t\tfeatureSelectors[ feature ] = {};\n\n\t\t\tObject.entries( selector ).forEach(\n\t\t\t\t( [ subfeature, subfeatureSelector ] ) => {\n\t\t\t\t\tfeatureSelectors[ feature ][ subfeature ] = scopeSelector(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tsubfeatureSelector\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn featureSelectors;\n}\n\n/**\n * Appends a sub-selector to an existing one.\n *\n * Given the compounded `selector` \"h1, h2, h3\"\n * and the `toAppend` selector \".some-class\" the result will be\n * \"h1.some-class, h2.some-class, h3.some-class\".\n *\n * @param {string} selector Original selector.\n * @param {string} toAppend Selector to append.\n *\n * @return {string} The new selector.\n */\nexport function appendToSelector( selector, toAppend ) {\n\tif ( ! selector.includes( ',' ) ) {\n\t\treturn selector + toAppend;\n\t}\n\tconst selectors = selector.split( ',' );\n\tconst newSelectors = selectors.map( ( sel ) => sel + toAppend );\n\treturn newSelectors.join( ',' );\n}\n\n/**\n * Compares global style variations according to their styles and settings properties.\n *\n * @example\n * ```js\n * const globalStyles = { styles: { typography: { fontSize: '10px' } }, settings: {} };\n * const variation = { styles: { typography: { fontSize: '10000px' } }, settings: {} };\n * const isEqual = areGlobalStyleConfigsEqual( globalStyles, variation );\n * // false\n * ```\n *\n * @param {Object} original A global styles object.\n * @param {Object} variation A global styles object.\n *\n * @return {boolean} Whether `original` and `variation` match.\n */\nexport function areGlobalStyleConfigsEqual( original, variation ) {\n\tif ( typeof original !== 'object' || typeof variation !== 'object' ) {\n\t\treturn original === variation;\n\t}\n\treturn (\n\t\tfastDeepEqual( original?.styles, variation?.styles ) &&\n\t\tfastDeepEqual( original?.settings, variation?.settings )\n\t);\n}\n\n/**\n * Generates the selector for a block style variation by creating the\n * appropriate CSS class and adding it to the ancestor portion of the block's\n * selector.\n *\n * For example, take the Button block which has a compound selector:\n * `.wp-block-button .wp-block-button__link`. With a variation named 'custom',\n * the class `.is-style-custom` should be added to the `.wp-block-button`\n * ancestor only.\n *\n * This function will take into account comma separated and complex selectors.\n *\n * @param {string} variation Name for the variation.\n * @param {string} blockSelector CSS selector for the block.\n *\n * @return {string} CSS selector for the block style variation.\n */\nexport function getBlockStyleVariationSelector( variation, blockSelector ) {\n\tconst variationClass = `.is-style-${ variation }`;\n\n\tif ( ! blockSelector ) {\n\t\treturn variationClass;\n\t}\n\n\tconst ancestorRegex = /((?::\\([^)]+\\))?\\s*)([^\\s:]+)/;\n\tconst addVariationClass = ( _match, group1, group2 ) => {\n\t\treturn group1 + group2 + variationClass;\n\t};\n\n\tconst result = blockSelector\n\t\t.split( ',' )\n\t\t.map( ( part ) => part.replace( ancestorRegex, addVariationClass ) );\n\n\treturn result.join( ',' );\n}\n\n/**\n * Looks up a theme file URI based on a relative path.\n *\n * @param {string} file A relative path.\n * @param {Array<Object>} themeFileURIs A collection of absolute theme file URIs and their corresponding file paths.\n * @return {string} A resolved theme file URI, if one is found in the themeFileURIs collection.\n */\nexport function getResolvedThemeFilePath( file, themeFileURIs ) {\n\tif ( ! file || ! themeFileURIs || ! Array.isArray( themeFileURIs ) ) {\n\t\treturn file;\n\t}\n\n\tconst uri = themeFileURIs.find(\n\t\t( themeFileUri ) => themeFileUri?.name === file\n\t);\n\n\tif ( ! uri?.href ) {\n\t\treturn file;\n\t}\n\n\treturn uri?.href;\n}\n\n/**\n * Resolves ref values in theme JSON.\n *\n * @param {Object|string} ruleValue A block style value that may contain a reference to a theme.json value.\n * @param {Object} tree A theme.json object.\n * @return {*} The resolved value or incoming ruleValue.\n */\nexport function getResolvedRefValue( ruleValue, tree ) {\n\tif ( ! ruleValue || ! tree ) {\n\t\treturn ruleValue;\n\t}\n\n\t/*\n\t * Where the rule value is an object with a 'ref' property pointing\n\t * to a path, this converts that path into the value at that path.\n\t * For example: { \"ref\": \"style.color.background\" } => \"#fff\".\n\t */\n\tif ( typeof ruleValue !== 'string' && ruleValue?.ref ) {\n\t\tconst resolvedRuleValue = getCSSValueFromRawStyle(\n\t\t\tgetValueFromObjectPath( tree, ruleValue.ref )\n\t\t);\n\n\t\t/*\n\t\t * Presence of another ref indicates a reference to another dynamic value.\n\t\t * Pointing to another dynamic value is not supported.\n\t\t */\n\t\tif ( resolvedRuleValue?.ref ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( resolvedRuleValue === undefined ) {\n\t\t\treturn ruleValue;\n\t\t}\n\n\t\treturn resolvedRuleValue;\n\t}\n\treturn ruleValue;\n}\n\n/**\n * Resolves ref and relative path values in theme JSON.\n *\n * @param {Object|string} ruleValue A block style value that may contain a reference to a theme.json value.\n * @param {Object} tree A theme.json object.\n * @return {*} The resolved value or incoming ruleValue.\n */\nexport function getResolvedValue( ruleValue, tree ) {\n\tif ( ! ruleValue || ! tree ) {\n\t\treturn ruleValue;\n\t}\n\n\t// Resolve ref values.\n\tconst resolvedValue = getResolvedRefValue( ruleValue, tree );\n\n\t// Resolve relative paths.\n\tif ( resolvedValue?.url ) {\n\t\tresolvedValue.url = getResolvedThemeFilePath(\n\t\t\tresolvedValue.url,\n\t\t\ttree?._links?.[ 'wp:theme-file' ]\n\t\t);\n\t}\n\n\treturn resolvedValue;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAA0B;AAK1B,qBAAiC;AACjC,0BAAwC;AAKxC,8BAA2C;AAC3C,oBAAuC;AAGhC,MAAM,sBAAsB;AAC5B,MAAM,+BAA+B;AAErC,MAAM,kBAAkB;AAAA,EAC9B;AAAA,IACC,MAAM,CAAE,SAAS,SAAU;AAAA,IAC3B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,SAAS;AAAA,MACR,EAAE,aAAa,SAAS,cAAc,QAAQ;AAAA,MAC9C;AAAA,QACC,aAAa;AAAA,QACb,cAAc;AAAA,MACf;AAAA,MACA;AAAA,QACC,aAAa;AAAA,QACb,cAAc;AAAA,MACf;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,IACC,MAAM,CAAE,SAAS,WAAY;AAAA,IAC7B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,SAAS;AAAA,MACR;AAAA,QACC,aAAa;AAAA,QACb,cAAc;AAAA,MACf;AAAA,IACD;AAAA,EACD;AAAA,EACA;AAAA,IACC,MAAM,CAAE,SAAS,SAAU;AAAA,IAC3B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,WAAW,CAAE,EAAE,KAAK,MAAO,qBAAsB,IAAK;AAAA,IACtD,SAAS,CAAC;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM,CAAE,UAAU,SAAU;AAAA,IAC5B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,SAAS,CAAC;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM,CAAE,cAAc,WAAY;AAAA,IAClC,WAAW,CAAE,QAAQ,iBACpB,oDAA4B,QAAQ,QAAS;AAAA,IAC9C,UAAU;AAAA,IACV,aAAa;AAAA,IACb,SAAS,CAAE,EAAE,aAAa,aAAa,cAAc,YAAY,CAAE;AAAA,EACpE;AAAA,EACA;AAAA,IACC,MAAM,CAAE,cAAc,cAAe;AAAA,IACrC,UAAU;AAAA,IACV,aAAa;AAAA,IACb,SAAS;AAAA,MACR,EAAE,aAAa,eAAe,cAAc,cAAc;AAAA,IAC3D;AAAA,EACD;AAAA,EACA;AAAA,IACC,MAAM,CAAE,WAAW,cAAe;AAAA,IAClC,UAAU;AAAA,IACV,aAAa;AAAA,IACb,SAAS,CAAC;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM,CAAE,UAAU,aAAc;AAAA,IAChC,UAAU;AAAA,IACV,aAAa;AAAA,IACb,SAAS,CAAC;AAAA,EACX;AACD;AAEO,MAAM,8BAA8B;AAAA,EAC1C,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,4BAA4B;AAAA,EAC5B,mCAAmC;AAAA,EACnC,uCAAuC;AAAA,EACvC,qCAAqC;AAAA,EACrC,8BAA8B;AAAA,EAC9B,oCAAoC;AAAA,EACpC,+BAA+B;AAAA,EAC/B,yCAAyC;AAAA,EACzC,uCAAuC;AAAA,EACvC,0BAA0B;AAAA,EAC1B,qCAAqC;AAAA,EACrC,0CAA0C;AAAA,EAC1C,6BAA6B;AAAA,EAC7B,mCAAmC;AAAA,EACnC,qBAAqB;AAAA,EACrB,gCAAgC;AAAA,EAChC,qCAAqC;AAAA,EACrC,8BAA8B;AAAA,EAC9B,qBAAqB;AAAA,EACrB,gCAAgC;AAAA,EAChC,qCAAqC;AAAA,EACrC,8BAA8B;AAAA,EAC9B,qBAAqB;AAAA,EACrB,gCAAgC;AAAA,EAChC,qCAAqC;AAAA,EACrC,8BAA8B;AAAA,EAC9B,qBAAqB;AAAA,EACrB,gCAAgC;AAAA,EAChC,qCAAqC;AAAA,EACrC,8BAA8B;AAAA,EAC9B,qBAAqB;AAAA,EACrB,gCAAgC;AAAA,EAChC,qCAAqC;AAAA,EACrC,8BAA8B;AAAA,EAC9B,qBAAqB;AAAA,EACrB,gCAAgC;AAAA,EAChC,qCAAqC;AAAA,EACrC,8BAA8B;AAAA,EAC9B,kBAAkB;AAAA,EAClB,QAAQ;AAAA,EACR,uBAAuB;AAAA,EACvB,yBAAyB;AAC1B;AAGO,MAAM,uCAAuC;AAAA,EACnD,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,yBAAyB;AAC1B;AAEO,SAAS,iCAAiC;AAChD,QAAM,eAAW,iCAAkB,UAAU,GAAI;AACjD,SAAO,CAAE,WACN;AAAA,IACA,cAAc;AAAA,MACb,WAAW;AAAA;AAAA,MAEX,QAAQ;AAAA,IACT;AAAA,EACA,IACA,CAAC;AACL;AAEA,SAAS,gBACR,UACA,WACA,YACA,gBACA,kBACC;AAED,QAAM,yBAAyB;AAAA,QAC9B,sCAAwB,UAAU;AAAA,MACjC;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACJ,CAAE;AAAA,QACF,sCAAwB,UAAU,UAAW;AAAA,EAC9C;AAEA,aAAY,kBAAkB,wBAAyB;AACtD,QAAK,gBAAiB;AAErB,YAAM,UAAU,CAAE,UAAU,SAAS,SAAU;AAC/C,iBAAY,UAAU,SAAU;AAC/B,cAAM,UAAU,eAAgB,MAAO;AACvC,YAAK,SAAU;AACd,gBAAM,eAAe,QAAQ;AAAA,YAC5B,CAAE,WACD,OAAQ,cAAe,MAAM;AAAA,UAC/B;AACA,cAAK,cAAe;AACnB,gBAAK,mBAAmB,QAAS;AAChC,qBAAO;AAAA,YACR;AAEA,kBAAM,kCAAkC;AAAA,cACvC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,aAAa;AAAA,YACd;AACA,gBACC,gCACC,cACD,MAAM,aAAc,cAAe,GAClC;AACD,qBAAO;AAAA,YACR;AACA,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;AAEO,SAAS,2BACf,UACA,WACA,mBACA,qBACC;AACD,MAAK,CAAE,qBAAsB;AAC5B,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,4BAA6B,iBAAkB;AAEnE,QAAM,WAAW,gBAAgB;AAAA,IAChC,CAAE,SAAU,KAAK,gBAAgB;AAAA,EAClC;AAEA,MAAK,CAAE,UAAW;AAGjB,WAAO;AAAA,EACR;AACA,QAAM,EAAE,UAAU,KAAK,IAAI;AAE3B,QAAM,eAAe;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,MAAK,CAAE,cAAe;AAGrB,WAAO;AAAA,EACR;AAEA,SAAO,cAAe,WAAY,IAAK,aAAa,IAAK;AAC1D;AAEA,SAAS,2BACR,UACA,WACA,UACA,CAAE,YAAY,IAAK,GAClB;AACD,QAAM,WAAW,gBAAgB;AAAA,IAChC,CAAE,SAAU,KAAK,gBAAgB;AAAA,EAClC;AACA,MAAK,CAAE,UAAW;AACjB,WAAO;AAAA,EACR;AAEA,QAAM,eAAe;AAAA,IACpB,SAAS;AAAA,IACT;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACD;AAEA,MAAK,cAAe;AACnB,UAAM,EAAE,SAAS,IAAI;AACrB,UAAM,SAAS,aAAc,QAAS;AACtC,WAAO,qBAAsB,UAAU,WAAW,MAAO;AAAA,EAC1D;AAEA,SAAO;AACR;AAEA,SAAS,2BAA4B,UAAU,WAAW,UAAU,MAAO;AAC1E,QAAM,aACL,sCAAwB,SAAS,UAAU;AAAA,IAC1C;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACJ,CAAE,SACF,sCAAwB,SAAS,UAAU,CAAE,UAAU,GAAG,IAAK,CAAE;AAClE,MAAK,CAAE,QAAS;AACf,WAAO;AAAA,EACR;AAEA,SAAO,qBAAsB,UAAU,WAAW,MAAO;AAC1D;AAUO,SAAS,qBAAsB,UAAU,WAAW,UAAW;AACrE,MAAK,CAAE,YAAY,OAAO,aAAa,UAAW;AACjD,QAAK,OAAO,UAAU,QAAQ,UAAW;AACxC,qBAAW,sCAAwB,UAAU,SAAS,GAAI;AAG1D,UAAK,CAAE,YAAY,CAAC,CAAE,UAAU,KAAM;AACrC,eAAO;AAAA,MACR;AAAA,IACD,OAAO;AACN,aAAO;AAAA,IACR;AAAA,EACD;AACA,QAAM,oBAAoB;AAC1B,QAAM,qBAAqB;AAC3B,QAAM,qBAAqB;AAE3B,MAAI;AAEJ,MAAK,SAAS,WAAY,iBAAkB,GAAI;AAC/C,gBAAY,SAAS,MAAO,kBAAkB,MAAO,EAAE,MAAO,GAAI;AAAA,EACnE,WACC,SAAS,WAAY,kBAAmB,KACxC,SAAS,SAAU,kBAAmB,GACrC;AACD,gBAAY,SACV,MAAO,mBAAmB,QAAQ,CAAC,mBAAmB,MAAO,EAC7D,MAAO,IAAK;AAAA,EACf,OAAO;AAEN,WAAO;AAAA,EACR;AAEA,QAAM,CAAE,MAAM,GAAG,IAAK,IAAI;AAC1B,MAAK,SAAS,UAAW;AACxB,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACA,MAAK,SAAS,UAAW;AACxB,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACA,SAAO;AACR;AAmBO,SAAS,cAAe,OAAO,UAAW;AAChD,MAAK,CAAE,SAAS,CAAE,UAAW;AAC5B,WAAO;AAAA,EACR;AAEA,QAAM,SAAS,MAAM,MAAO,GAAI;AAChC,QAAM,YAAY,SAAS,MAAO,GAAI;AAEtC,QAAM,kBAAkB,CAAC;AACzB,SAAO,QAAS,CAAE,UAAW;AAC5B,cAAU,QAAS,CAAE,UAAW;AAC/B,sBAAgB,KAAM,GAAI,MAAM,KAAK,CAAE,IAAK,MAAM,KAAK,CAAE,EAAG;AAAA,IAC7D,CAAE;AAAA,EACH,CAAE;AAEF,SAAO,gBAAgB,KAAM,IAAK;AACnC;AAwBO,SAAS,sBAAuB,OAAO,WAAY;AACzD,MAAK,CAAE,SAAS,CAAE,WAAY;AAC7B;AAAA,EACD;AAEA,QAAM,mBAAmB,CAAC;AAE1B,SAAO,QAAS,SAAU,EAAE,QAAS,CAAE,CAAE,SAAS,QAAS,MAAO;AACjE,QAAK,OAAO,aAAa,UAAW;AACnC,uBAAkB,OAAQ,IAAI,cAAe,OAAO,QAAS;AAAA,IAC9D;AAEA,QAAK,OAAO,aAAa,UAAW;AACnC,uBAAkB,OAAQ,IAAI,CAAC;AAE/B,aAAO,QAAS,QAAS,EAAE;AAAA,QAC1B,CAAE,CAAE,YAAY,kBAAmB,MAAO;AACzC,2BAAkB,OAAQ,EAAG,UAAW,IAAI;AAAA,YAC3C;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD,CAAE;AAEF,SAAO;AACR;AAcO,SAAS,iBAAkB,UAAU,UAAW;AACtD,MAAK,CAAE,SAAS,SAAU,GAAI,GAAI;AACjC,WAAO,WAAW;AAAA,EACnB;AACA,QAAM,YAAY,SAAS,MAAO,GAAI;AACtC,QAAM,eAAe,UAAU,IAAK,CAAE,QAAS,MAAM,QAAS;AAC9D,SAAO,aAAa,KAAM,GAAI;AAC/B;AAkBO,SAAS,2BAA4B,UAAU,WAAY;AACjE,MAAK,OAAO,aAAa,YAAY,OAAO,cAAc,UAAW;AACpE,WAAO,aAAa;AAAA,EACrB;AACA,aACC,WAAAA,SAAe,UAAU,QAAQ,WAAW,MAAO,SACnD,WAAAA,SAAe,UAAU,UAAU,WAAW,QAAS;AAEzD;AAmBO,SAAS,+BAAgC,WAAW,eAAgB;AAC1E,QAAM,iBAAiB,aAAc,SAAU;AAE/C,MAAK,CAAE,eAAgB;AACtB,WAAO;AAAA,EACR;AAEA,QAAM,gBAAgB;AACtB,QAAM,oBAAoB,CAAE,QAAQ,QAAQ,WAAY;AACvD,WAAO,SAAS,SAAS;AAAA,EAC1B;AAEA,QAAM,SAAS,cACb,MAAO,GAAI,EACX,IAAK,CAAE,SAAU,KAAK,QAAS,eAAe,iBAAkB,CAAE;AAEpE,SAAO,OAAO,KAAM,GAAI;AACzB;AASO,SAAS,yBAA0B,MAAM,eAAgB;AAC/D,MAAK,CAAE,QAAQ,CAAE,iBAAiB,CAAE,MAAM,QAAS,aAAc,GAAI;AACpE,WAAO;AAAA,EACR;AAEA,QAAM,MAAM,cAAc;AAAA,IACzB,CAAE,iBAAkB,cAAc,SAAS;AAAA,EAC5C;AAEA,MAAK,CAAE,KAAK,MAAO;AAClB,WAAO;AAAA,EACR;AAEA,SAAO,KAAK;AACb;AASO,SAAS,oBAAqB,WAAW,MAAO;AACtD,MAAK,CAAE,aAAa,CAAE,MAAO;AAC5B,WAAO;AAAA,EACR;AAOA,MAAK,OAAO,cAAc,YAAY,WAAW,KAAM;AACtD,UAAM,wBAAoB;AAAA,UACzB,sCAAwB,MAAM,UAAU,GAAI;AAAA,IAC7C;AAMA,QAAK,mBAAmB,KAAM;AAC7B,aAAO;AAAA,IACR;AAEA,QAAK,sBAAsB,QAAY;AACtC,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR;AACA,SAAO;AACR;AASO,SAAS,iBAAkB,WAAW,MAAO;AACnD,MAAK,CAAE,aAAa,CAAE,MAAO;AAC5B,WAAO;AAAA,EACR;AAGA,QAAM,gBAAgB,oBAAqB,WAAW,IAAK;AAG3D,MAAK,eAAe,KAAM;AACzB,kBAAc,MAAM;AAAA,MACnB,cAAc;AAAA,MACd,MAAM,SAAU,eAAgB;AAAA,IACjC;AAAA,EACD;AAEA,SAAO;AACR;",
6
- "names": ["fastDeepEqual"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\n\nexport function useToolsPanelDropdownMenuProps() {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn ! isMobile\n\t\t? {\n\t\t\t\tpopoverProps: {\n\t\t\t\t\tplacement: 'left-start',\n\t\t\t\t\t// For non-mobile, inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)\n\t\t\t\t\toffset: 259,\n\t\t\t\t},\n\t\t }\n\t\t: {};\n}\n\n/**\n * Function that scopes a selector with another one. This works a bit like\n * SCSS nesting except the `&` operator isn't supported.\n *\n * @example\n * ```js\n * const scope = '.a, .b .c';\n * const selector = '> .x, .y';\n * const merged = scopeSelector( scope, selector );\n * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'\n * ```\n *\n * @param {string} scope Selector to scope to.\n * @param {string} selector Original selector.\n *\n * @return {string} Scoped selector.\n */\nexport function scopeSelector( scope, selector ) {\n\tif ( ! scope || ! selector ) {\n\t\treturn selector;\n\t}\n\n\tconst scopes = scope.split( ',' );\n\tconst selectors = selector.split( ',' );\n\n\tconst selectorsScoped = [];\n\tscopes.forEach( ( outer ) => {\n\t\tselectors.forEach( ( inner ) => {\n\t\t\tselectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );\n\t\t} );\n\t} );\n\n\treturn selectorsScoped.join( ', ' );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAiC;AAE1B,SAAS,iCAAiC;AAChD,QAAM,eAAW,iCAAkB,UAAU,GAAI;AACjD,SAAO,CAAE,WACN;AAAA,IACA,cAAc;AAAA,MACb,WAAW;AAAA;AAAA,MAEX,QAAQ;AAAA,IACT;AAAA,EACA,IACA,CAAC;AACL;AAmBO,SAAS,cAAe,OAAO,UAAW;AAChD,MAAK,CAAE,SAAS,CAAE,UAAW;AAC5B,WAAO;AAAA,EACR;AAEA,QAAM,SAAS,MAAM,MAAO,GAAI;AAChC,QAAM,YAAY,SAAS,MAAO,GAAI;AAEtC,QAAM,kBAAkB,CAAC;AACzB,SAAO,QAAS,CAAE,UAAW;AAC5B,cAAU,QAAS,CAAE,UAAW;AAC/B,sBAAgB,KAAM,GAAI,MAAM,KAAK,CAAE,IAAK,MAAM,KAAK,CAAE,EAAG;AAAA,IAC7D,CAAE;AAAA,EACH,CAAE;AAEF,SAAO,gBAAgB,KAAM,IAAK;AACnC;",
6
+ "names": []
7
7
  }
@@ -36,15 +36,47 @@ var import_i18n = require("@wordpress/i18n");
36
36
  var import_compose = require("@wordpress/compose");
37
37
  var import_components = require("@wordpress/components");
38
38
  var import_element = require("@wordpress/element");
39
+ var import_data = require("@wordpress/data");
39
40
  var import_media_panel = require("./media-panel");
40
41
  var import_check = __toESM(require("../../media-upload/check"));
41
42
  var import_media_upload = __toESM(require("../../media-upload"));
43
+ var import_media_upload_modal = __toESM(require("../../media-upload-modal"));
42
44
  var import_hooks = require("./hooks");
43
45
  var import_utils = require("./utils");
44
46
  var import_mobile_tab_navigation = __toESM(require("../mobile-tab-navigation"));
45
47
  var import_category_tabs = __toESM(require("../category-tabs"));
46
48
  var import_no_results = __toESM(require("../no-results"));
49
+ var import_store = require("../../../store");
47
50
  const ALLOWED_MEDIA_TYPES = ["image", "video", "audio"];
51
+ function ConditionalMediaUpload({ render, ...props }) {
52
+ const [isModalOpen, setIsModalOpen] = (0, import_element.useState)(false);
53
+ const mediaUpload = (0, import_data.useSelect)((select) => {
54
+ const { getSettings } = select(import_store.store);
55
+ return getSettings().mediaUpload;
56
+ }, []);
57
+ if (window.__experimentalDataViewsMediaModal) {
58
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
59
+ render && render({ open: () => setIsModalOpen(true) }),
60
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
61
+ import_media_upload_modal.default,
62
+ {
63
+ ...props,
64
+ isOpen: isModalOpen,
65
+ onClose: () => {
66
+ setIsModalOpen(false);
67
+ props.onClose?.();
68
+ },
69
+ onSelect: (media) => {
70
+ setIsModalOpen(false);
71
+ props.onSelect?.(media);
72
+ },
73
+ onUpload: mediaUpload
74
+ }
75
+ )
76
+ ] });
77
+ }
78
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_media_upload.default, { ...props, render });
79
+ }
48
80
  function MediaTab({
49
81
  rootClientId,
50
82
  selectedCategory,
@@ -87,7 +119,7 @@ function MediaTab({
87
119
  }
88
120
  ),
89
121
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_check.default, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
90
- import_media_upload.default,
122
+ ConditionalMediaUpload,
91
123
  {
92
124
  multiple: false,
93
125
  onSelect: onSelectMedia,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/components/inserter/media-tab/media-tab.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Button } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { MediaCategoryPanel } from './media-panel';\nimport MediaUploadCheck from '../../media-upload/check';\nimport MediaUpload from '../../media-upload';\nimport { useMediaCategories } from './hooks';\nimport { getBlockAndPreviewFromMedia } from './utils';\nimport MobileTabNavigation from '../mobile-tab-navigation';\nimport CategoryTabs from '../category-tabs';\nimport InserterNoResults from '../no-results';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image', 'video', 'audio' ];\n\nfunction MediaTab( {\n\trootClientId,\n\tselectedCategory,\n\tonSelectCategory,\n\tonInsert,\n\tchildren,\n} ) {\n\tconst mediaCategories = useMediaCategories( rootClientId );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tconst baseCssClass = 'block-editor-inserter__media-tabs';\n\tconst onSelectMedia = useCallback(\n\t\t( media ) => {\n\t\t\tif ( ! media?.url ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst [ block ] = getBlockAndPreviewFromMedia( media, media.type );\n\t\t\tonInsert( block );\n\t\t},\n\t\t[ onInsert ]\n\t);\n\tconst categories = useMemo(\n\t\t() =>\n\t\t\tmediaCategories.map( ( mediaCategory ) => ( {\n\t\t\t\t...mediaCategory,\n\t\t\t\tlabel: mediaCategory.labels.name,\n\t\t\t} ) ),\n\t\t[ mediaCategories ]\n\t);\n\n\tif ( ! categories.length ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className={ `${ baseCssClass }-container` }>\n\t\t\t\t\t<CategoryTabs\n\t\t\t\t\t\tcategories={ categories }\n\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\tonSelectCategory={ onSelectCategory }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</CategoryTabs>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\tmultiple={ false }\n\t\t\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t// Safari doesn't emit a focus event on button elements when\n\t\t\t\t\t\t\t\t\t\t// clicked and we need to manually focus the button here.\n\t\t\t\t\t\t\t\t\t\t// The reason is that core's Media Library modal explicitly triggers a\n\t\t\t\t\t\t\t\t\t\t// focus event and therefore a `blur` event is triggered on a different\n\t\t\t\t\t\t\t\t\t\t// element, which doesn't contain the `data-unstable-ignore-focus-outside-for-relatedtarget`\n\t\t\t\t\t\t\t\t\t\t// attribute making the Inserter dialog to close.\n\t\t\t\t\t\t\t\t\t\tevent.target.focus();\n\t\t\t\t\t\t\t\t\t\topen();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__media-library-button\"\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tdata-unstable-ignore-focus-outside-for-relatedtarget=\".media-modal\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<MediaCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default MediaTab;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoDS;AAjDT,kBAAmB;AACnB,qBAAiC;AACjC,wBAAuB;AACvB,qBAAqC;AAKrC,yBAAmC;AACnC,mBAA6B;AAC7B,0BAAwB;AACxB,mBAAmC;AACnC,mBAA4C;AAC5C,mCAAgC;AAChC,2BAAyB;AACzB,wBAA8B;AAE9B,MAAM,sBAAsB,CAAE,SAAS,SAAS,OAAQ;AAExD,SAAS,SAAU;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,sBAAkB,iCAAoB,YAAa;AACzD,QAAM,eAAW,iCAAkB,UAAU,GAAI;AACjD,QAAM,eAAe;AACrB,QAAM,oBAAgB;AAAA,IACrB,CAAE,UAAW;AACZ,UAAK,CAAE,OAAO,KAAM;AACnB;AAAA,MACD;AACA,YAAM,CAAE,KAAM,QAAI,0CAA6B,OAAO,MAAM,IAAK;AACjE,eAAU,KAAM;AAAA,IACjB;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AACA,QAAM,iBAAa;AAAA,IAClB,MACC,gBAAgB,IAAK,CAAE,mBAAqB;AAAA,MAC3C,GAAG;AAAA,MACH,OAAO,cAAc,OAAO;AAAA,IAC7B,EAAI;AAAA,IACL,CAAE,eAAgB;AAAA,EACnB;AAEA,MAAK,CAAE,WAAW,QAAS;AAC1B,WAAO,4CAAC,kBAAAA,SAAA,EAAkB;AAAA,EAC3B;AAEA,SACC,4EACG;AAAA,KAAE,YACH,6CAAC,SAAI,WAAY,GAAI,YAAa,cACjC;AAAA;AAAA,QAAC,qBAAAC;AAAA,QAAA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UAEE;AAAA;AAAA,MACH;AAAA,MACA,4CAAC,aAAAC,SAAA,EACA;AAAA,QAAC,oBAAAC;AAAA,QAAA;AAAA,UACA,UAAW;AAAA,UACX,UAAW;AAAA,UACX,cAAe;AAAA,UACf,QAAS,CAAE,EAAE,KAAK,MACjB;AAAA,YAAC;AAAA;AAAA,cACA,uBAAqB;AAAA,cACrB,SAAU,CAAE,UAAW;AAOtB,sBAAM,OAAO,MAAM;AACnB,qBAAK;AAAA,cACN;AAAA,cACA,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,wDAAqD;AAAA,cAEnD,8BAAI,oBAAqB;AAAA;AAAA,UAC5B;AAAA;AAAA,MAEF,GACD;AAAA,OACD;AAAA,IAEC,YACD,4CAAC,6BAAAC,SAAA,EAAoB,YAClB,WAAE,aACH;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD,GAEF;AAAA,KAEF;AAEF;AAEA,IAAO,oBAAQ;",
6
- "names": ["InserterNoResults", "CategoryTabs", "MediaUploadCheck", "MediaUpload", "MobileTabNavigation"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Button } from '@wordpress/components';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { MediaCategoryPanel } from './media-panel';\nimport MediaUploadCheck from '../../media-upload/check';\nimport MediaUpload from '../../media-upload';\nimport MediaUploadModal from '../../media-upload-modal';\nimport { useMediaCategories } from './hooks';\nimport { getBlockAndPreviewFromMedia } from './utils';\nimport MobileTabNavigation from '../mobile-tab-navigation';\nimport CategoryTabs from '../category-tabs';\nimport InserterNoResults from '../no-results';\nimport { store as blockEditorStore } from '../../../store';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image', 'video', 'audio' ];\n\n/**\n * Conditional Media component that uses MediaUploadModal when experiment is enabled,\n * otherwise falls back to MediaUpload.\n *\n * @param {Object} root0 Component props.\n * @param {Function} root0.render Render prop function that receives { open } object.\n * @return {JSX.Element} The component.\n */\nfunction ConditionalMediaUpload( { render, ...props } ) {\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().mediaUpload;\n\t}, [] );\n\n\tif ( window.__experimentalDataViewsMediaModal ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ render && render( { open: () => setIsModalOpen( true ) } ) }\n\t\t\t\t<MediaUploadModal\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tisOpen={ isModalOpen }\n\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tprops.onClose?.();\n\t\t\t\t\t} }\n\t\t\t\t\tonSelect={ ( media ) => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\tprops.onSelect?.( media );\n\t\t\t\t\t} }\n\t\t\t\t\tonUpload={ mediaUpload }\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn <MediaUpload { ...props } render={ render } />;\n}\n\nfunction MediaTab( {\n\trootClientId,\n\tselectedCategory,\n\tonSelectCategory,\n\tonInsert,\n\tchildren,\n} ) {\n\tconst mediaCategories = useMediaCategories( rootClientId );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tconst baseCssClass = 'block-editor-inserter__media-tabs';\n\tconst onSelectMedia = useCallback(\n\t\t( media ) => {\n\t\t\tif ( ! media?.url ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst [ block ] = getBlockAndPreviewFromMedia( media, media.type );\n\t\t\tonInsert( block );\n\t\t},\n\t\t[ onInsert ]\n\t);\n\tconst categories = useMemo(\n\t\t() =>\n\t\t\tmediaCategories.map( ( mediaCategory ) => ( {\n\t\t\t\t...mediaCategory,\n\t\t\t\tlabel: mediaCategory.labels.name,\n\t\t\t} ) ),\n\t\t[ mediaCategories ]\n\t);\n\n\tif ( ! categories.length ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className={ `${ baseCssClass }-container` }>\n\t\t\t\t\t<CategoryTabs\n\t\t\t\t\t\tcategories={ categories }\n\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\tonSelectCategory={ onSelectCategory }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</CategoryTabs>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<ConditionalMediaUpload\n\t\t\t\t\t\t\tmultiple={ false }\n\t\t\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t// Safari doesn't emit a focus event on button elements when\n\t\t\t\t\t\t\t\t\t\t// clicked and we need to manually focus the button here.\n\t\t\t\t\t\t\t\t\t\t// The reason is that core's Media Library modal explicitly triggers a\n\t\t\t\t\t\t\t\t\t\t// focus event and therefore a `blur` event is triggered on a different\n\t\t\t\t\t\t\t\t\t\t// element, which doesn't contain the `data-unstable-ignore-focus-outside-for-relatedtarget`\n\t\t\t\t\t\t\t\t\t\t// attribute making the Inserter dialog to close.\n\t\t\t\t\t\t\t\t\t\tevent.target.focus();\n\t\t\t\t\t\t\t\t\t\topen();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__media-library-button\"\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tdata-unstable-ignore-focus-outside-for-relatedtarget=\".media-modal\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<MediaCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default MediaTab;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA0CG;AAvCH,kBAAmB;AACnB,qBAAiC;AACjC,wBAAuB;AACvB,qBAA+C;AAC/C,kBAA0B;AAK1B,yBAAmC;AACnC,mBAA6B;AAC7B,0BAAwB;AACxB,gCAA6B;AAC7B,mBAAmC;AACnC,mBAA4C;AAC5C,mCAAgC;AAChC,2BAAyB;AACzB,wBAA8B;AAC9B,mBAA0C;AAE1C,MAAM,sBAAsB,CAAE,SAAS,SAAS,OAAQ;AAUxD,SAAS,uBAAwB,EAAE,QAAQ,GAAG,MAAM,GAAI;AACvD,QAAM,CAAE,aAAa,cAAe,QAAI,yBAAU,KAAM;AACxD,QAAM,kBAAc,uBAAW,CAAE,WAAY;AAC5C,UAAM,EAAE,YAAY,IAAI,OAAQ,aAAAA,KAAiB;AACjD,WAAO,YAAY,EAAE;AAAA,EACtB,GAAG,CAAC,CAAE;AAEN,MAAK,OAAO,mCAAoC;AAC/C,WACC,4EACG;AAAA,gBAAU,OAAQ,EAAE,MAAM,MAAM,eAAgB,IAAK,EAAE,CAAE;AAAA,MAC3D;AAAA,QAAC,0BAAAC;AAAA,QAAA;AAAA,UACE,GAAG;AAAA,UACL,QAAS;AAAA,UACT,SAAU,MAAM;AACf,2BAAgB,KAAM;AACtB,kBAAM,UAAU;AAAA,UACjB;AAAA,UACA,UAAW,CAAE,UAAW;AACvB,2BAAgB,KAAM;AACtB,kBAAM,WAAY,KAAM;AAAA,UACzB;AAAA,UACA,UAAW;AAAA;AAAA,MACZ;AAAA,OACD;AAAA,EAEF;AAEA,SAAO,4CAAC,oBAAAC,SAAA,EAAc,GAAG,OAAQ,QAAkB;AACpD;AAEA,SAAS,SAAU;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,sBAAkB,iCAAoB,YAAa;AACzD,QAAM,eAAW,iCAAkB,UAAU,GAAI;AACjD,QAAM,eAAe;AACrB,QAAM,oBAAgB;AAAA,IACrB,CAAE,UAAW;AACZ,UAAK,CAAE,OAAO,KAAM;AACnB;AAAA,MACD;AACA,YAAM,CAAE,KAAM,QAAI,0CAA6B,OAAO,MAAM,IAAK;AACjE,eAAU,KAAM;AAAA,IACjB;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AACA,QAAM,iBAAa;AAAA,IAClB,MACC,gBAAgB,IAAK,CAAE,mBAAqB;AAAA,MAC3C,GAAG;AAAA,MACH,OAAO,cAAc,OAAO;AAAA,IAC7B,EAAI;AAAA,IACL,CAAE,eAAgB;AAAA,EACnB;AAEA,MAAK,CAAE,WAAW,QAAS;AAC1B,WAAO,4CAAC,kBAAAC,SAAA,EAAkB;AAAA,EAC3B;AAEA,SACC,4EACG;AAAA,KAAE,YACH,6CAAC,SAAI,WAAY,GAAI,YAAa,cACjC;AAAA;AAAA,QAAC,qBAAAC;AAAA,QAAA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UAEE;AAAA;AAAA,MACH;AAAA,MACA,4CAAC,aAAAC,SAAA,EACA;AAAA,QAAC;AAAA;AAAA,UACA,UAAW;AAAA,UACX,UAAW;AAAA,UACX,cAAe;AAAA,UACf,QAAS,CAAE,EAAE,KAAK,MACjB;AAAA,YAAC;AAAA;AAAA,cACA,uBAAqB;AAAA,cACrB,SAAU,CAAE,UAAW;AAOtB,sBAAM,OAAO,MAAM;AACnB,qBAAK;AAAA,cACN;AAAA,cACA,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,wDAAqD;AAAA,cAEnD,8BAAI,oBAAqB;AAAA;AAAA,UAC5B;AAAA;AAAA,MAEF,GACD;AAAA,OACD;AAAA,IAEC,YACD,4CAAC,6BAAAC,SAAA,EAAoB,YAClB,WAAE,aACH;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD,GAEF;AAAA,KAEF;AAEF;AAEA,IAAO,oBAAQ;",
6
+ "names": ["blockEditorStore", "MediaUploadModal", "MediaUpload", "InserterNoResults", "CategoryTabs", "MediaUploadCheck", "MobileTabNavigation"]
7
7
  }
@@ -49,8 +49,6 @@ const globalTips = [
49
49
  ];
50
50
  function Tips() {
51
51
  const [randomIndex] = (0, import_element.useState)(
52
- // Disable Reason: I'm not generating an HTML id.
53
- // eslint-disable-next-line no-restricted-syntax
54
52
  Math.floor(Math.random() * globalTips.length)
55
53
  );
56
54
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.Tip, { children: globalTips[randomIndex] });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/inserter/tips.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { createInterpolateElement, useState } from '@wordpress/element';\nimport { Tip } from '@wordpress/components';\n\nconst globalTips = [\n\tcreateInterpolateElement(\n\t\t__(\n\t\t\t'While writing, you can press <kbd>/</kbd> to quickly insert new blocks.'\n\t\t),\n\t\t{ kbd: <kbd /> }\n\t),\n\tcreateInterpolateElement(\n\t\t__(\n\t\t\t'Indent a list by pressing <kbd>space</kbd> at the beginning of a line.'\n\t\t),\n\t\t{ kbd: <kbd /> }\n\t),\n\tcreateInterpolateElement(\n\t\t__(\n\t\t\t'Outdent a list by pressing <kbd>backspace</kbd> at the beginning of a line.'\n\t\t),\n\t\t{ kbd: <kbd /> }\n\t),\n\t__( 'Drag files into the editor to automatically insert media blocks.' ),\n\t__( \"Change a block's type by pressing the block icon on the toolbar.\" ),\n];\n\nfunction Tips() {\n\tconst [ randomIndex ] = useState(\n\t\t// Disable Reason: I'm not generating an HTML id.\n\t\t// eslint-disable-next-line no-restricted-syntax\n\t\tMath.floor( Math.random() * globalTips.length )\n\t);\n\n\treturn <Tip>{ globalTips[ randomIndex ] }</Tip>;\n}\n\nexport default Tips;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAYS;AATT,kBAAmB;AACnB,qBAAmD;AACnD,wBAAoB;AAEpB,MAAM,aAAa;AAAA,MAClB;AAAA,QACC;AAAA,MACC;AAAA,IACD;AAAA,IACA,EAAE,KAAK,4CAAC,SAAI,EAAG;AAAA,EAChB;AAAA,MACA;AAAA,QACC;AAAA,MACC;AAAA,IACD;AAAA,IACA,EAAE,KAAK,4CAAC,SAAI,EAAG;AAAA,EAChB;AAAA,MACA;AAAA,QACC;AAAA,MACC;AAAA,IACD;AAAA,IACA,EAAE,KAAK,4CAAC,SAAI,EAAG;AAAA,EAChB;AAAA,MACA,gBAAI,kEAAmE;AAAA,MACvE,gBAAI,kEAAmE;AACxE;AAEA,SAAS,OAAO;AACf,QAAM,CAAE,WAAY,QAAI;AAAA;AAAA;AAAA,IAGvB,KAAK,MAAO,KAAK,OAAO,IAAI,WAAW,MAAO;AAAA,EAC/C;AAEA,SAAO,4CAAC,yBAAM,qBAAY,WAAY,GAAG;AAC1C;AAEA,IAAO,eAAQ;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { createInterpolateElement, useState } from '@wordpress/element';\nimport { Tip } from '@wordpress/components';\n\nconst globalTips = [\n\tcreateInterpolateElement(\n\t\t__(\n\t\t\t'While writing, you can press <kbd>/</kbd> to quickly insert new blocks.'\n\t\t),\n\t\t{ kbd: <kbd /> }\n\t),\n\tcreateInterpolateElement(\n\t\t__(\n\t\t\t'Indent a list by pressing <kbd>space</kbd> at the beginning of a line.'\n\t\t),\n\t\t{ kbd: <kbd /> }\n\t),\n\tcreateInterpolateElement(\n\t\t__(\n\t\t\t'Outdent a list by pressing <kbd>backspace</kbd> at the beginning of a line.'\n\t\t),\n\t\t{ kbd: <kbd /> }\n\t),\n\t__( 'Drag files into the editor to automatically insert media blocks.' ),\n\t__( \"Change a block's type by pressing the block icon on the toolbar.\" ),\n];\n\nfunction Tips() {\n\tconst [ randomIndex ] = useState(\n\t\tMath.floor( Math.random() * globalTips.length )\n\t);\n\n\treturn <Tip>{ globalTips[ randomIndex ] }</Tip>;\n}\n\nexport default Tips;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAYS;AATT,kBAAmB;AACnB,qBAAmD;AACnD,wBAAoB;AAEpB,MAAM,aAAa;AAAA,MAClB;AAAA,QACC;AAAA,MACC;AAAA,IACD;AAAA,IACA,EAAE,KAAK,4CAAC,SAAI,EAAG;AAAA,EAChB;AAAA,MACA;AAAA,QACC;AAAA,MACC;AAAA,IACD;AAAA,IACA,EAAE,KAAK,4CAAC,SAAI,EAAG;AAAA,EAChB;AAAA,MACA;AAAA,QACC;AAAA,MACC;AAAA,IACD;AAAA,IACA,EAAE,KAAK,4CAAC,SAAI,EAAG;AAAA,EAChB;AAAA,MACA,gBAAI,kEAAmE;AAAA,MACvE,gBAAI,kEAAmE;AACxE;AAEA,SAAS,OAAO;AACf,QAAM,CAAE,WAAY,QAAI;AAAA,IACvB,KAAK,MAAO,KAAK,OAAO,IAAI,WAAW,MAAO;AAAA,EAC/C;AAEA,SAAO,4CAAC,yBAAM,qBAAY,WAAY,GAAG;AAC1C;AAEA,IAAO,eAAQ;",
6
6
  "names": []
7
7
  }