@plaudit/gutenberg-api-extensions 2.19.1 → 2.21.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 (28) hide show
  1. package/build/blocks/common-native-property-constructors.d.ts +23 -7
  2. package/build/blocks/common-native-property-constructors.js +25 -3
  3. package/build/blocks/common-native-property-constructors.js.map +1 -1
  4. package/build/blocks/index.d.ts +5 -2
  5. package/build/blocks/index.js +7 -6
  6. package/build/blocks/index.js.map +1 -1
  7. package/build/blocks/{layered-styles.d.ts → layered-styles-api.d.ts} +9 -5
  8. package/build/blocks/layered-styles-api.js +75 -0
  9. package/build/blocks/layered-styles-api.js.map +1 -0
  10. package/build/blocks/layered-styles-impl.d.ts +3 -0
  11. package/build/blocks/layered-styles-impl.js +53 -0
  12. package/build/blocks/layered-styles-impl.js.map +1 -0
  13. package/build/blocks/{simple-native-property.d.ts → simple-native-property-api.d.ts} +18 -12
  14. package/build/blocks/simple-native-property-api.js +48 -0
  15. package/build/blocks/simple-native-property-api.js.map +1 -0
  16. package/build/blocks/simple-native-property-impl.d.ts +1 -0
  17. package/build/blocks/{simple-native-property.js → simple-native-property-impl.js} +88 -84
  18. package/build/blocks/simple-native-property-impl.js.map +1 -0
  19. package/build/editor/post-featured-image.d.ts +1 -0
  20. package/build/editor/post-featured-image.js +85 -0
  21. package/build/editor/post-featured-image.js.map +1 -0
  22. package/build/index.d.ts +1 -0
  23. package/build/index.js +10 -0
  24. package/build/index.js.map +1 -1
  25. package/package.json +19 -14
  26. package/build/blocks/layered-styles.js +0 -63
  27. package/build/blocks/layered-styles.js.map +0 -1
  28. package/build/blocks/simple-native-property.js.map +0 -1
@@ -3,46 +3,18 @@ import { createHigherOrderComponent } from "@wordpress/compose";
3
3
  import { addFilter } from "@wordpress/hooks";
4
4
  import { hydrateSimpleNativeProperty } from "./common-native-property-constructors";
5
5
  import { InspectorPanel } from "../controls";
6
+ import { makeLayeredStylesDataStore } from "./layered-styles-impl";
6
7
  import React from "react";
7
- export function registerSimpleNativeProperties(config) {
8
- const simpleNativePanelsAndTabs = window.plauditSimpleNativePanelsAndTabs ?? (window.plauditSimpleNativePanelsAndTabs = {});
9
- if (Array.isArray(config.block)) {
10
- for (const b of config.block) {
11
- addProperties(b, config.properties, simpleNativePanelsAndTabs);
8
+ import { registerSimpleNativeProperties } from "./simple-native-property-api";
9
+ function makeAttributesDataStore(blockEditProps) {
10
+ return {
11
+ getAttribute(name) {
12
+ return blockEditProps.attributes[name];
13
+ },
14
+ setAttribute(name, value) {
15
+ blockEditProps.setAttributes(name === 'className' ? { className: value?.toString() } : { [name]: value });
12
16
  }
13
- }
14
- else {
15
- addProperties(config.block, config.properties, simpleNativePanelsAndTabs);
16
- }
17
- }
18
- function addProperties(block, properties, simpleNativePanelsAndTabs) {
19
- const panels = (simpleNativePanelsAndTabs[block] ?? (simpleNativePanelsAndTabs[block] = []));
20
- if ('title' in properties) {
21
- panels.push(properties);
22
- return;
23
- }
24
- let rawProperties = [];
25
- for (const prop of properties) {
26
- if ('title' in prop) {
27
- if (rawProperties.length) {
28
- panels.push({
29
- title: "",
30
- properties: rawProperties
31
- });
32
- rawProperties = [];
33
- }
34
- panels.push(prop);
35
- }
36
- else {
37
- rawProperties.push(prop);
38
- }
39
- }
40
- if (rawProperties.length) {
41
- panels.push({
42
- title: "",
43
- properties: rawProperties
44
- });
45
- }
17
+ };
46
18
  }
47
19
  function isCombinerCondition(condition) {
48
20
  return condition.op === "and" || condition.op === "or" || condition.op === "not" || condition.op === "nand" || condition.op === "nor";
@@ -54,11 +26,11 @@ export function installSimpleNativePropertiesSupport() {
54
26
  window.plauditSimpleNativePropertiesSupportInstalled = true;
55
27
  const ROOT_LEVEL_PANELS = [undefined, "default", "advanced", "settings", "styles"];
56
28
  const simpleNativePanelsAndTabs = window.plauditSimpleNativePanelsAndTabs ?? (window.plauditSimpleNativePanelsAndTabs = {});
57
- function performConditionTest(blockEditProps, condition) {
29
+ function performConditionTest(dataStore, blockEditProps, condition) {
58
30
  if (isCombinerCondition(condition)) {
59
- return testConditionStruct(blockEditProps, condition.conditions, condition.op);
31
+ return testConditionStruct(dataStore, blockEditProps, condition.conditions, condition.op);
60
32
  }
61
- const attrValue = getExistingValue(blockEditProps, { name: condition.property });
33
+ const attrValue = getExistingValue(dataStore, blockEditProps, { name: condition.property });
62
34
  if (!('value' in condition)) { // We negate this in order to ensure that unchecked values in the switch will throw a compile-time error
63
35
  return condition.op === "empty" ? !attrValue : !!attrValue;
64
36
  }
@@ -78,18 +50,18 @@ export function installSimpleNativePropertiesSupport() {
78
50
  }
79
51
  throw new Error(`Unsupported operator in condition: ${condition}`);
80
52
  }
81
- function testConditionStruct(blockEditProps, conditions, combiner = "and") {
53
+ function testConditionStruct(dataStore, blockEditProps, conditions, combiner = "and") {
82
54
  switch (combiner) {
83
55
  case "and":
84
56
  for (const condition of conditions) {
85
- if (!(Array.isArray(condition) ? testConditionStruct(blockEditProps, conditions, "and") : performConditionTest(blockEditProps, condition))) {
57
+ if (!(Array.isArray(condition) ? testConditionStruct(dataStore, blockEditProps, conditions, "and") : performConditionTest(dataStore, blockEditProps, condition))) {
86
58
  return false;
87
59
  }
88
60
  }
89
61
  return true;
90
62
  case "or":
91
63
  for (const condition of conditions) {
92
- if ((Array.isArray(condition) ? testConditionStruct(blockEditProps, conditions, "and") : performConditionTest(blockEditProps, condition))) {
64
+ if ((Array.isArray(condition) ? testConditionStruct(dataStore, blockEditProps, conditions, "and") : performConditionTest(dataStore, blockEditProps, condition))) {
93
65
  return true;
94
66
  }
95
67
  }
@@ -97,28 +69,28 @@ export function installSimpleNativePropertiesSupport() {
97
69
  case "not":
98
70
  case "nand":
99
71
  for (const condition of conditions) {
100
- if (!(Array.isArray(condition) ? testConditionStruct(blockEditProps, conditions, "and") : performConditionTest(blockEditProps, condition))) {
72
+ if (!(Array.isArray(condition) ? testConditionStruct(dataStore, blockEditProps, conditions, "and") : performConditionTest(dataStore, blockEditProps, condition))) {
101
73
  return true;
102
74
  }
103
75
  }
104
76
  return false;
105
77
  case "nor":
106
78
  for (const condition of conditions) {
107
- if ((Array.isArray(condition) ? testConditionStruct(blockEditProps, conditions, "and") : performConditionTest(blockEditProps, condition))) {
79
+ if ((Array.isArray(condition) ? testConditionStruct(dataStore, blockEditProps, conditions, "and") : performConditionTest(dataStore, blockEditProps, condition))) {
108
80
  return false;
109
81
  }
110
82
  }
111
83
  return true;
112
84
  }
113
85
  }
114
- function testCondition(blockEditProps, condition) {
86
+ function testCondition(dataStore, blockEditProps, condition) {
115
87
  if (condition === undefined) {
116
88
  return true;
117
89
  }
118
90
  if (Array.isArray(condition)) {
119
- return condition.length === 0 || testConditionStruct(blockEditProps, condition, "or");
91
+ return condition.length === 0 || testConditionStruct(dataStore, blockEditProps, condition, "or");
120
92
  }
121
- return condition(blockEditProps);
93
+ return condition(dataStore, blockEditProps);
122
94
  }
123
95
  function attachSNP(property, injectableProperties) {
124
96
  property = hydrateSimpleNativeProperty(property);
@@ -195,43 +167,61 @@ export function installSimpleNativePropertiesSupport() {
195
167
  }
196
168
  return atts;
197
169
  });
198
- function setDottedAttribute(blockEditProps, attr, value) {
170
+ const backedUpBlockAttributes = {};
171
+ function setBackedUpAttributeValue(blockEditProps, attr, value) {
172
+ const backedUpAttributes = (backedUpBlockAttributes[blockEditProps.clientId] ?? (backedUpBlockAttributes[blockEditProps.clientId] = new Map()));
173
+ backedUpAttributes.set(attr, value);
174
+ }
175
+ function removeBackedUpAttributeValue(blockEditProps, attr) {
176
+ return backedUpBlockAttributes[blockEditProps.clientId]?.delete(attr);
177
+ }
178
+ function hasBackedUpAttributeValue(blockEditProps, attr) {
179
+ return backedUpBlockAttributes[blockEditProps.clientId]?.has(attr);
180
+ }
181
+ function getBackedUpAttributeValue(blockEditProps, prop, def) {
182
+ return def !== undefined
183
+ ? (hasBackedUpAttributeValue(blockEditProps, prop) ? backedUpBlockAttributes[blockEditProps.clientId]?.get(prop) : def)
184
+ : backedUpBlockAttributes[blockEditProps.clientId]?.get(prop);
185
+ }
186
+ function setDottedAttribute(dataStore, blockEditProps, attr, value) {
199
187
  const attrPath = attr.split('.');
200
188
  if (attrPath.length === 1) {
201
- return blockEditProps.setAttributes({ [attr]: value });
189
+ return dataStore.setAttribute(attr, value);
202
190
  }
203
- const payload = { ...blockEditProps.attributes[attrPath[0]] };
191
+ const payload = { ...dataStore.getAttribute(attrPath[0]) };
204
192
  let currentLayer = payload;
205
193
  for (let i = 1; i < attrPath.length - 1; i++) {
206
194
  const attrPathNode = attrPath[i];
195
+ //TODO: This is almost certainly broken for depths greater than 2, but working out the reverse stack walk isn't worth it rn
207
196
  currentLayer = currentLayer[attrPathNode] = {};
208
197
  }
209
198
  currentLayer[attrPath[attrPath.length - 1]] = value;
210
- blockEditProps.setAttributes({ [attrPath[0]]: payload });
199
+ dataStore.setAttribute(attrPath[0], payload);
211
200
  }
212
- function getExistingValue(blockEditProps, prop) {
201
+ function getExistingValue(dataStore, blockEditProps, prop) {
202
+ const defaultToUse = getBackedUpAttributeValue(blockEditProps, prop.name);
213
203
  const propPath = prop.name.split('.');
214
204
  if (propPath.length === 1) {
215
- let existingValue = blockEditProps.attributes[prop.name];
216
- if (existingValue === undefined && prop.default !== undefined) {
217
- existingValue = prop.default;
218
- blockEditProps.setAttributes({ [prop.name]: prop.default });
205
+ let existingValue = dataStore.getAttribute(prop.name);
206
+ if (existingValue === undefined && defaultToUse !== undefined) {
207
+ existingValue = defaultToUse;
208
+ dataStore.setAttribute(prop.name, defaultToUse);
219
209
  }
220
210
  return existingValue;
221
211
  }
222
212
  else {
223
- let graphExistingValue = blockEditProps.attributes[propPath[0]];
213
+ let graphExistingValue = dataStore.getAttribute(propPath[0]);
224
214
  if (graphExistingValue === undefined) {
225
- blockEditProps.attributes[propPath[0]] = graphExistingValue = {};
215
+ dataStore.setAttribute(propPath[0], graphExistingValue = {});
226
216
  }
227
217
  for (let i = 1; i < propPath.length; i++) {
228
218
  if (graphExistingValue[propPath[i]] === undefined) {
229
219
  for (; i < propPath.length - 1; i++) {
230
220
  graphExistingValue = graphExistingValue[propPath[i]] = {};
231
221
  }
232
- graphExistingValue[propPath[propPath.length - 1]] = prop.default;
233
- if (prop.default !== undefined) {
234
- blockEditProps.setAttributes({ [propPath[0]]: blockEditProps.attributes[propPath[0]] });
222
+ graphExistingValue[propPath[propPath.length - 1]] = defaultToUse;
223
+ if (defaultToUse !== undefined) {
224
+ dataStore.setAttribute(propPath[0], dataStore.getAttribute(propPath[0]));
235
225
  }
236
226
  break;
237
227
  }
@@ -239,48 +229,58 @@ export function installSimpleNativePropertiesSupport() {
239
229
  graphExistingValue = graphExistingValue[propPath[i]];
240
230
  }
241
231
  }
242
- return graphExistingValue ?? prop.default;
232
+ return graphExistingValue ?? defaultToUse;
243
233
  }
244
234
  }
245
- function renderPropertyComponent(blockEditProps, prop) {
235
+ function renderPropertyComponent(dataStore, blockEditProps, prop) {
246
236
  if (Array.isArray(prop)) {
247
- return prop.map(p => renderPropertyComponent(blockEditProps, p))
237
+ return prop.map(p => renderPropertyComponent(dataStore, blockEditProps, p))
248
238
  .filter((ele) => ele !== undefined);
249
239
  }
250
240
  const prp = hydrateSimpleNativeProperty(prop);
251
- let existingValue = getExistingValue(blockEditProps, prp);
241
+ let existingValue = getBackedUpAttributeValue(blockEditProps, prp.name, getExistingValue(dataStore, blockEditProps, prp));
252
242
  let ele;
253
243
  if (prp.type === "array") { // If the value is not an array or is a sparse array, then it will cause unrecoverable errors upon conversion to PHP
254
244
  if (existingValue !== undefined && (!Array.isArray(existingValue) || existingValue.length > existingValue.filter(() => true).length)) {
255
245
  throw new Error(`Invalid value passed to an array-type property: ${existingValue}`);
256
246
  }
257
- ele = prp.control(existingValue, value => setDottedAttribute(blockEditProps, prp.name, value));
247
+ ele = prp.control(existingValue, value => setDottedAttribute(dataStore, blockEditProps, prp.name, value));
258
248
  }
259
249
  else if (prp.type === "object") {
260
250
  if (existingValue !== undefined && (Array.isArray(existingValue) || typeof existingValue !== 'object')) {
261
251
  throw new Error(`Invalid value passed to an object-type property: ${existingValue}`);
262
252
  }
263
- ele = prp.control(existingValue, value => setDottedAttribute(blockEditProps, prp.name, value));
253
+ ele = prp.control(existingValue, value => setDottedAttribute(dataStore, blockEditProps, prp.name, value));
264
254
  }
265
255
  else if (prp.type === "boolean") {
266
256
  if (typeof existingValue !== 'boolean' && existingValue !== undefined) {
267
257
  existingValue = !!existingValue;
268
258
  }
269
- ele = prp.control(existingValue, value => setDottedAttribute(blockEditProps, prp.name, value));
259
+ ele = prp.control(existingValue, value => setDottedAttribute(dataStore, blockEditProps, prp.name, value));
270
260
  }
271
261
  else if (prp.type === "string") {
272
262
  if (typeof existingValue !== 'string' && existingValue !== undefined) {
273
263
  existingValue = existingValue.toString();
274
264
  }
275
- ele = prp.control(existingValue, value => setDottedAttribute(blockEditProps, prp.name, value));
265
+ ele = prp.control(existingValue, value => setDottedAttribute(dataStore, blockEditProps, prp.name, value));
276
266
  }
277
267
  else {
278
268
  if (typeof existingValue !== 'number' && existingValue !== undefined) {
279
269
  existingValue = parseFloat(existingValue);
280
270
  }
281
- ele = prp.control(existingValue, value => setDottedAttribute(blockEditProps, prp.name, value));
271
+ ele = prp.control(existingValue, value => setDottedAttribute(dataStore, blockEditProps, prp.name, value));
272
+ }
273
+ if (testCondition(dataStore, blockEditProps, prp.condition)) {
274
+ if (removeBackedUpAttributeValue(blockEditProps, prp.name)) {
275
+ setDottedAttribute(dataStore, blockEditProps, prp.name, existingValue);
276
+ }
277
+ return [`plaudit-snp-${prp.name}`, ele];
278
+ }
279
+ if (existingValue !== prp.default) {
280
+ setBackedUpAttributeValue(blockEditProps, prp.name, existingValue);
281
+ setDottedAttribute(dataStore, blockEditProps, prp.name, prp.default);
282
282
  }
283
- return testCondition(blockEditProps, prp.condition) ? [`plaudit-snp-${prp.name}`, ele] : undefined;
283
+ return undefined;
284
284
  }
285
285
  function isElementAndKey(thing) {
286
286
  return typeof thing[0] === 'string';
@@ -310,8 +310,8 @@ export function installSimpleNativePropertiesSupport() {
310
310
  }
311
311
  return [grid, wrappedItems];
312
312
  }
313
- function makeDivForLaidOutProperties(properties, blockEditProps) {
314
- const fieldAndRows = properties.map(prop => renderPropertyComponent(blockEditProps, prop))
313
+ function makeDivForLaidOutProperties(properties, dataStore, blockEditProps) {
314
+ const fieldAndRows = properties.map(prop => renderPropertyComponent(dataStore, blockEditProps, prop))
315
315
  .filter((ele) => ele !== undefined);
316
316
  const [gridTemplateAreas, items] = buildGridTemplateAreas(fieldAndRows);
317
317
  return {
@@ -329,32 +329,36 @@ export function installSimpleNativePropertiesSupport() {
329
329
  let keyIndex = 0;
330
330
  for (const panelOrTab of blockSimpleNativePanelsAndTabs) {
331
331
  if ('properties' in panelOrTab) {
332
- const { div, items } = makeDivForLaidOutProperties(panelOrTab.properties, blockEditProps);
332
+ const panelOrTabGroup = panelOrTab.group === 'layered-styles' ? 'styles' : panelOrTab.group;
333
+ const dataStore = panelOrTab.group === 'layered-styles' ? makeLayeredStylesDataStore(blockEditProps) : makeAttributesDataStore(blockEditProps);
334
+ const { div, items } = makeDivForLaidOutProperties(panelOrTab.properties, dataStore, blockEditProps);
333
335
  normalPanels.push(React.createElement(React.Fragment, null,
334
- React.createElement(InspectorPanel, { ...panelOrTab, condition: () => items.length > 0 && testCondition(blockEditProps, panelOrTab.condition), raw: ('raw' in panelOrTab && !!panelOrTab.raw) || !ROOT_LEVEL_PANELS.includes(panelOrTab.group), key: `plaudit-simple-native-property-${keyIndex++}` }, div)));
336
+ React.createElement(InspectorPanel, { ...panelOrTab, group: panelOrTabGroup, condition: () => items.length > 0 && testCondition(dataStore, blockEditProps, panelOrTab.condition), raw: ('raw' in panelOrTab && !!panelOrTab.raw) || !ROOT_LEVEL_PANELS.includes(panelOrTabGroup), key: `plaudit-simple-native-property-${keyIndex++}` }, div)));
335
337
  }
336
338
  else {
337
- const group = (groupedTabs[panelOrTab.group ?? "default"] ?? (groupedTabs[panelOrTab.group ?? "default"] = {}));
339
+ const panelOrTabGroup = panelOrTab.group === 'layered-styles' ? 'styles' : panelOrTab.group;
340
+ const dataStore = panelOrTab.group === 'layered-styles' ? makeLayeredStylesDataStore(blockEditProps) : makeAttributesDataStore(blockEditProps);
341
+ const group = (groupedTabs[panelOrTabGroup ?? "default"] ?? (groupedTabs[panelOrTabGroup ?? "default"] = {}));
338
342
  const tabItems = group[panelOrTab.title] ?? (group[panelOrTab.title] = []);
339
343
  let unwrappedProperties = [];
340
344
  for (const panelOrProperty of panelOrTab.items) {
341
345
  if ('properties' in panelOrProperty) {
342
346
  if (unwrappedProperties.length) {
343
- const { div, items } = makeDivForLaidOutProperties(unwrappedProperties, blockEditProps);
347
+ const { div, items } = makeDivForLaidOutProperties(unwrappedProperties, dataStore, blockEditProps);
344
348
  if (items.length) {
345
349
  tabItems.push(React.createElement(PanelBody, { opened: true, key: `plaudit-simple-native-property-${keyIndex++}` }, div));
346
350
  }
347
351
  unwrappedProperties = [];
348
352
  }
349
- const { div, items } = makeDivForLaidOutProperties(unwrappedProperties, blockEditProps);
350
- tabItems.push(React.createElement(PanelBody, { ...panelOrProperty, key: `plaudit-simple-native-property-${keyIndex++}` }, (items.length > 0 && testCondition(blockEditProps, panelOrProperty.condition)) && div));
353
+ const { div, items } = makeDivForLaidOutProperties(unwrappedProperties, dataStore, blockEditProps);
354
+ tabItems.push(React.createElement(PanelBody, { ...panelOrProperty, key: `plaudit-simple-native-property-${keyIndex++}` }, (items.length > 0 && testCondition(dataStore, blockEditProps, panelOrProperty.condition)) && div));
351
355
  }
352
356
  else {
353
357
  unwrappedProperties.push(panelOrProperty);
354
358
  }
355
359
  }
356
360
  if (unwrappedProperties.length) {
357
- const { div, items } = makeDivForLaidOutProperties(unwrappedProperties, blockEditProps);
361
+ const { div, items } = makeDivForLaidOutProperties(unwrappedProperties, dataStore, blockEditProps);
358
362
  if (items.length) {
359
363
  tabItems.push(React.createElement(PanelBody, { opened: true, key: `plaudit-simple-native-property-${keyIndex++}` }, div));
360
364
  }
@@ -365,9 +369,9 @@ export function installSimpleNativePropertiesSupport() {
365
369
  React.createElement(BlockEdit, { ...blockEditProps }),
366
370
  ...normalPanels,
367
371
  ...Object.entries(groupedTabs).map(([group, tabs]) => {
368
- return React.createElement(InspectorPanel, { tabbed: true, group: group, tabs: Object.entries(tabs)
372
+ return React.createElement(InspectorPanel, { tabbed: true, group: group === 'layered-styles' ? 'styles' : group, tabs: Object.entries(tabs)
369
373
  .map(([title, items]) => ({ name: `${title.replaceAll(/\W+/gi, "-")}-${keyIndex++}`, title, items })) });
370
374
  }));
371
375
  }, 'plauditGutenbergApiExtensionsSimpleNativeProperties'));
372
376
  }
373
- //# sourceMappingURL=simple-native-property.js.map
377
+ //# sourceMappingURL=simple-native-property-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-native-property-impl.js","sourceRoot":"","sources":["../../src/blocks/simple-native-property-impl.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function installPostFeaturedImageCardFocusTargeting(): void;
@@ -0,0 +1,85 @@
1
+ import { Button, FocalPointPicker, Spinner } from "@wordpress/components";
2
+ import { dispatch, select as dataSelect } from "@wordpress/data";
3
+ import { PostFeaturedImageCheck, store as editorStore } from "@wordpress/editor";
4
+ import { useEffect, useState } from "@wordpress/element";
5
+ import { addFilter, applyFilters } from "@wordpress/hooks";
6
+ import { __ } from "@wordpress/i18n";
7
+ import React from "react";
8
+ function getMediaDetails(media, postId) {
9
+ if (!media) {
10
+ return {};
11
+ }
12
+ const sizes = (media?.media_details?.['sizes'] ?? {});
13
+ const defaultSize = applyFilters('editor.PostFeaturedImage.imageSize', 'large', media.id, postId);
14
+ if (defaultSize in sizes) {
15
+ return {
16
+ mediaWidth: sizes[defaultSize].width,
17
+ mediaHeight: sizes[defaultSize].height,
18
+ mediaSourceUrl: sizes[defaultSize].source_url,
19
+ };
20
+ }
21
+ // Use fallbackSize when defaultSize is not available.
22
+ const fallbackSize = applyFilters('editor.PostFeaturedImage.imageSize', 'thumbnail', media.id, postId);
23
+ if (fallbackSize in sizes) {
24
+ return {
25
+ mediaWidth: sizes[fallbackSize].width,
26
+ mediaHeight: sizes[fallbackSize].height,
27
+ mediaSourceUrl: sizes[fallbackSize].source_url,
28
+ };
29
+ }
30
+ // Use full image size when fallbackSize and defaultSize are not available.
31
+ return {
32
+ mediaWidth: media.media_details['width'],
33
+ mediaHeight: media.media_details['height'],
34
+ mediaSourceUrl: media.source_url,
35
+ };
36
+ }
37
+ export function installPostFeaturedImageCardFocusTargeting() {
38
+ if (window.plauditPostFeaturedImageCardFocusTargeting) {
39
+ return;
40
+ }
41
+ window.plauditPostFeaturedImageCardFocusTargeting = true;
42
+ function wrapPostFeaturedImage(OriginalComponent) {
43
+ return (props) => {
44
+ const [inFocusMode, setInFocusMode] = useState(false);
45
+ const { currentPostId, media, noticeUI } = props;
46
+ const { x = 50, y = 50 } = (dataSelect('core/editor')['getEditedPostAttribute']('meta')?.["plaudit_card-image_pos"] ?? {});
47
+ const [position, setPosition] = useState({ x: x / 100, y: y / 100 });
48
+ useEffect(() => {
49
+ const { x = 50, y = 50 } = (dataSelect('core/editor')['getEditedPostAttribute']('meta')?.["plaudit_card-image_pos"] ?? {});
50
+ setPosition({ x: x / 100, y: y / 100 });
51
+ }, [x, y]);
52
+ const { mediaSourceUrl } = getMediaDetails(media, currentPostId);
53
+ if (!mediaSourceUrl && dataSelect('core/editor')['getEditedPostAttribute']('featured_media')) {
54
+ return React.createElement(Spinner, null);
55
+ }
56
+ if (!mediaSourceUrl) {
57
+ return React.createElement(OriginalComponent, { ...props });
58
+ }
59
+ if (!inFocusMode) {
60
+ return React.createElement(PostFeaturedImageCheck, null,
61
+ React.createElement(OriginalComponent, { ...props }),
62
+ React.createElement("div", null,
63
+ React.createElement(Button, { onClick: () => setInFocusMode(true), variant: "secondary", text: __("Change Image Focal Point", 'plaudit') })));
64
+ }
65
+ return React.createElement(PostFeaturedImageCheck, null,
66
+ noticeUI,
67
+ React.createElement("div", { className: "editor-post-featured-image" },
68
+ React.createElement(FocalPointPicker, { onChange: pos => setPosition(pos), url: mediaSourceUrl, value: position }),
69
+ React.createElement("div", null,
70
+ React.createElement(Button, { text: __("Done", 'plaudit'), onClick: () => {
71
+ dispatch(editorStore)['editPost']({
72
+ meta: { "plaudit_card-image_pos": { x: Math.round(position.x * 100), y: Math.round(position.y * 100) } }
73
+ });
74
+ setInFocusMode(false);
75
+ }, variant: "primary" }),
76
+ React.createElement(Button, { text: __('Cancel', 'plaudit'), onClick: () => {
77
+ const { x = 50, y = 50 } = (dataSelect('core/editor')['getEditedPostAttribute']('meta')?.["plaudit_card-image_pos"] ?? {});
78
+ setPosition({ x: x / 100, y: y / 100 });
79
+ setInFocusMode(false);
80
+ }, isDestructive: true }))));
81
+ };
82
+ }
83
+ addFilter('editor.PostFeaturedImage', 'plaudit-gutenberg-api-extensions/inject-post-featured-image-card-focus-targeting', wrapPostFeaturedImage);
84
+ }
85
+ //# sourceMappingURL=post-featured-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post-featured-image.js","sourceRoot":"","sources":["../../src/editor/post-featured-image.tsx"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./blocks";
2
2
  export * from "./controls";
3
3
  export * from "./lib/plaudit-icons";
4
+ export declare function installGutenbergExtensions(): void;
package/build/index.js CHANGED
@@ -1,4 +1,14 @@
1
1
  export * from "./blocks";
2
2
  export * from "./controls";
3
3
  export * from "./lib/plaudit-icons";
4
+ import { installSimpleNativePropertiesSupport } from "./blocks/simple-native-property-impl";
5
+ import { installPostFeaturedImageCardFocusTargeting } from "./editor/post-featured-image";
6
+ export function installGutenbergExtensions() {
7
+ if (window.plauditGutenbergExtensionsInstalled) {
8
+ return;
9
+ }
10
+ window.plauditGutenbergExtensionsInstalled = true;
11
+ installSimpleNativePropertiesSupport();
12
+ installPostFeaturedImageCardFocusTargeting();
13
+ }
4
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AAEpC,OAAO,EAAC,oCAAoC,EAAC,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAC,0CAA0C,EAAC,MAAM,8BAA8B,CAAC;AAExF,MAAM,UAAU,0BAA0B;IACzC,IAAK,MAAc,CAAC,mCAAmC,EAAE,CAAC;QACzD,OAAO;IACR,CAAC;IACA,MAAc,CAAC,mCAAmC,GAAG,IAAI,CAAC;IAC3D,oCAAoC,EAAE,CAAC;IACvC,0CAA0C,EAAE,CAAC;AAC9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plaudit/gutenberg-api-extensions",
3
- "version": "2.19.1",
3
+ "version": "2.21.0",
4
4
  "scripts": {
5
5
  "prepublishOnly": "rm -rf build && mkdir build && tsc",
6
6
  "build": "tsc",
@@ -11,6 +11,9 @@
11
11
  ],
12
12
  "sideEffects": false,
13
13
  "exports": {
14
+ ".": {
15
+ "default": "./build/index.js"
16
+ },
14
17
  "./lib/plaudit-icons": {
15
18
  "default": "./build/lib/plaudit-icons.js"
16
19
  },
@@ -19,28 +22,30 @@
19
22
  },
20
23
  "./controls": {
21
24
  "default": "./build/controls/index.js"
22
- },
23
- ".": {
24
- "default": "./build/index.js"
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@wordpress/block-editor": "^12.20.0",
29
- "@wordpress/blocks": "^12.29.0",
30
- "@wordpress/components": "^27.0.0",
31
- "@wordpress/compose": "^6.29.0",
32
- "@wordpress/core-data": "^6.29.0",
33
- "@wordpress/data": "^9.22.0",
34
- "@wordpress/element": "^5.29.0",
35
- "@wordpress/hooks": "^3.52.0",
36
- "@wordpress/i18n": "^4.52.0",
28
+ "@wordpress/block-editor": "^12.21.0",
29
+ "@wordpress/blocks": "^12.30.0",
30
+ "@wordpress/components": "^27.1.0",
31
+ "@wordpress/compose": "^6.30.0",
32
+ "@wordpress/core-data": "^6.30.0",
33
+ "@wordpress/data": "^9.23.0",
34
+ "@wordpress/editor": "^13.30.0",
35
+ "@wordpress/element": "^5.30.0",
36
+ "@wordpress/hooks": "^3.53.0",
37
+ "@wordpress/i18n": "^4.53.0",
37
38
  "react": "^18.2.0",
38
39
  "react-dom": "^18.2.0"
39
40
  },
40
41
  "devDependencies": {
41
- "@types/react": "^18.2.61",
42
+ "@types/react": "^18.2.64",
42
43
  "@types/wordpress__block-editor": "^11.5.11",
43
44
  "@types/wordpress__blocks": "^12.5.13",
45
+ "@types/wordpress__editor": "^13.6.7",
44
46
  "typescript": "^5.3.3"
47
+ },
48
+ "overrides": {
49
+ "@types/react": "$@types/react"
45
50
  }
46
51
  }
@@ -1,63 +0,0 @@
1
- import { createHigherOrderComponent } from "@wordpress/compose";
2
- import { addFilter } from "@wordpress/hooks";
3
- import React from "react";
4
- import { InspectorPanel, PickOneFromColors, PickOneFromRadios, PickOneFromSelect, PickOneFromToggleGroup } from "../controls";
5
- export function registerLayeredBlockStyles(config) {
6
- const layeredBlockStyles = window.plauditLayeredBlockStyles ?? (window.plauditLayeredBlockStyles = new Map());
7
- layeredBlockStyles.set(config.block, config);
8
- }
9
- export function installLayeredBlockStylesSupport() {
10
- if (window.plauditLayeredBlockStylesInstalled) {
11
- return;
12
- }
13
- window.plauditLayeredBlockStylesInstalled = true;
14
- const layeredBlockStyles = window.plauditLayeredBlockStyles ?? (window.plauditLayeredBlockStyles = new Map());
15
- function layeredStyleValueGetter(layer, block) {
16
- const currentLayerClassPrefix = `style-${layer.name}-`;
17
- return block.attributes['className']?.split(/\s+/).filter(cn => cn.startsWith(currentLayerClassPrefix))[0]?.substring(currentLayerClassPrefix.length) ?? layer.default ?? '';
18
- }
19
- function layeredStyleValueSetter(attrs, layers, block) {
20
- const [key, value] = Object.entries(attrs)[0];
21
- if (!key.startsWith("layeredStyles__")) {
22
- return;
23
- }
24
- const layerName = key.substring(15);
25
- const currentLayerClassPrefix = `style-${layerName}-`;
26
- const classNames = block.attributes['className'] ? block.attributes['className'].split(/\s+/).filter(cn => !cn.startsWith(currentLayerClassPrefix)) : [];
27
- const layerClassPrefixes = layers.map(layer => `style-${layer.name}-`);
28
- const layerClasses = classNames.filter(cn => layerClassPrefixes.some(lcp => cn.startsWith(lcp)));
29
- const nonLayerClasses = classNames.filter(cn => !layerClasses.includes(cn));
30
- layerClasses.push(`${currentLayerClassPrefix}${value}`);
31
- layerClasses.sort();
32
- block.setAttributes({ className: [...nonLayerClasses, ...layerClasses].join(' ') });
33
- }
34
- function convertLayersToRadios(layer, layers, props) {
35
- const value = layeredStyleValueGetter(layer, props);
36
- const sharedProps = {
37
- label: layer.title,
38
- attribute: `layeredStyles__${layer.name}`,
39
- attributes: { [`layeredStyles__${layer.name}`]: value },
40
- setAttributes: attrs => layeredStyleValueSetter(attrs, layers, props)
41
- };
42
- switch (layer.picker) {
43
- case undefined:
44
- case 'toggle-control':
45
- return React.createElement(PickOneFromToggleGroup, { ...layer, ...sharedProps });
46
- case 'color':
47
- return React.createElement(PickOneFromColors, { ...layer, ...sharedProps });
48
- case 'radio':
49
- return React.createElement(PickOneFromRadios, { ...layer, ...sharedProps });
50
- case 'select':
51
- return React.createElement(PickOneFromSelect, { ...layer, ...sharedProps });
52
- }
53
- }
54
- addFilter('editor.BlockEdit', 'plaudit/gutenberg-api-extensions/layered-styles', createHigherOrderComponent(BlockEdit => (props) => {
55
- if (!layeredBlockStyles.has(props['name'])) {
56
- return React.createElement(BlockEdit, { ...props });
57
- }
58
- return React.createElement(React.Fragment, null,
59
- React.createElement(BlockEdit, { ...props }),
60
- React.createElement(InspectorPanel, { title: "Layered Styles", initialOpen: true, group: "styles" }, ...layeredBlockStyles.get(props['name']).layers.map(layer => convertLayersToRadios(layer, layeredBlockStyles.get(props['name']).layers, props))));
61
- }, 'plauditGutenbergApiExtensionsLayeredStyles'));
62
- }
63
- //# sourceMappingURL=layered-styles.js.map