@plaudit/gutenberg-api-extensions 2.65.1 → 2.66.1

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 (95) hide show
  1. package/build/blocks/SNPFlexibleItemsListComponent.d.ts +1 -1
  2. package/build/blocks/SNPTreeContext.d.ts +2 -9
  3. package/build/blocks/SNPTreeContext.js +1 -6
  4. package/build/blocks/SNPTreeContext.js.map +1 -1
  5. package/build/blocks/basic-custom-block-bindings-support.d.ts +3 -0
  6. package/build/blocks/basic-custom-block-bindings-support.js +6 -2
  7. package/build/blocks/basic-custom-block-bindings-support.js.map +1 -1
  8. package/build/blocks/common-native-property-constructors.d.ts +14 -2
  9. package/build/blocks/common-native-property-constructors.js +43 -3
  10. package/build/blocks/common-native-property-constructors.js.map +1 -1
  11. package/build/blocks/data-controller-manager.d.ts +1 -1
  12. package/build/blocks/data-controller.d.ts +1 -0
  13. package/build/blocks/data-controller.js +19 -6
  14. package/build/blocks/data-controller.js.map +1 -1
  15. package/build/blocks/index.d.ts +2 -1
  16. package/build/blocks/index.js +1 -1
  17. package/build/blocks/index.js.map +1 -1
  18. package/build/blocks/layered-styles-api.d.ts +2 -1
  19. package/build/blocks/layered-styles-api.js +1 -1
  20. package/build/blocks/layered-styles-api.js.map +1 -1
  21. package/build/blocks/layered-styles-impl.d.ts +1 -1
  22. package/build/blocks/layered-styles-impl.js.map +1 -1
  23. package/build/blocks/layout/PanelRoot.js +1 -1
  24. package/build/blocks/layout/PanelRoot.js.map +1 -1
  25. package/build/blocks/layout/TabsRoot.js +1 -1
  26. package/build/blocks/layout/TabsRoot.js.map +1 -1
  27. package/build/blocks/simple-native-property-api.d.ts +2 -3
  28. package/build/blocks/simple-native-property-api.js.map +1 -1
  29. package/build/blocks/simple-native-property-impl.d.ts +3 -0
  30. package/build/blocks/simple-native-property-impl.js +17 -11
  31. package/build/blocks/simple-native-property-impl.js.map +1 -1
  32. package/build/blocks/simple-native-property-internal-shared.d.ts +2 -2
  33. package/build/blocks/snp-api.d.ts +2 -31
  34. package/build/blocks/snp-api.js +1 -6
  35. package/build/blocks/snp-api.js.map +1 -1
  36. package/build/blocks/snp-data-store.d.ts +1 -1
  37. package/build/blocks/snp-data-store.js.map +1 -1
  38. package/build/controls/AsynchronousFormTokenField.d.ts +3 -0
  39. package/build/controls/AsynchronousFormTokenField.js +4 -3
  40. package/build/controls/AsynchronousFormTokenField.js.map +1 -1
  41. package/build/controls/ExtendedFormTokenField.d.ts +39 -0
  42. package/build/controls/ExtendedFormTokenField.js +133 -0
  43. package/build/controls/ExtendedFormTokenField.js.map +1 -0
  44. package/build/controls/ExtendedPostPicker.d.ts +5 -3
  45. package/build/controls/ExtendedPostPicker.js +28 -16
  46. package/build/controls/ExtendedPostPicker.js.map +1 -1
  47. package/build/controls/ExtendedTaxonomyPicker.d.ts +21 -0
  48. package/build/controls/ExtendedTaxonomyPicker.js +68 -0
  49. package/build/controls/ExtendedTaxonomyPicker.js.map +1 -0
  50. package/build/controls/MultiSelectControl.d.ts +1 -1
  51. package/build/controls/MultiSelectControl.js +19 -22
  52. package/build/controls/MultiSelectControl.js.map +1 -1
  53. package/build/controls/PromisableComponent.d.ts +1 -1
  54. package/build/controls/SortableFlexibleItemsControl.d.ts +2 -2
  55. package/build/controls/SortableFlexibleItemsControl.js.map +1 -1
  56. package/build/controls/hooks/useMultiSingleConversionLayer.d.ts +1 -2
  57. package/build/controls/hooks/useMultiSingleConversionLayer.js +1 -2
  58. package/build/controls/hooks/useMultiSingleConversionLayer.js.map +1 -1
  59. package/build/controls/hooks/useOutputMemoizingFilter.d.ts +1 -0
  60. package/build/controls/hooks/useOutputMemoizingFilter.js +15 -0
  61. package/build/controls/hooks/useOutputMemoizingFilter.js.map +1 -0
  62. package/build/controls/index.d.ts +2 -1
  63. package/build/controls/index.js +2 -1
  64. package/build/controls/index.js.map +1 -1
  65. package/build/editor/post-featured-image.d.ts +3 -0
  66. package/build/editor/post-featured-image.js +67 -34
  67. package/build/editor/post-featured-image.js.map +1 -1
  68. package/build/editor/simple-gutenberg-endpoints-api.d.ts +12 -3
  69. package/build/editor/simple-gutenberg-endpoints-api.js +19 -12
  70. package/build/editor/simple-gutenberg-endpoints-api.js.map +1 -1
  71. package/build/editor/simple-gutenberg-endpoints-impl.d.ts +24 -18
  72. package/build/editor/simple-gutenberg-endpoints-impl.js +77 -36
  73. package/build/editor/simple-gutenberg-endpoints-impl.js.map +1 -1
  74. package/build/index.d.ts +9 -3
  75. package/build/index.js +10 -8
  76. package/build/index.js.map +1 -1
  77. package/build/lib/gutenberg-api-extensions-state/general-logic.d.ts +1 -1
  78. package/build/lib/gutenberg-api-extensions-state/layered-block-styles-logic.d.ts +2 -2
  79. package/build/lib/gutenberg-api-extensions-state/snp-logic.d.ts +3 -4
  80. package/build/lib/gutenberg-api-extensions-state/snp-logic.js +7 -4
  81. package/build/lib/gutenberg-api-extensions-state/snp-logic.js.map +1 -1
  82. package/build/lib/gutenberg-api-extensions-state.d.ts +9 -26
  83. package/build/lib/gutenberg-api-extensions-state.js +6 -4
  84. package/build/lib/gutenberg-api-extensions-state.js.map +1 -1
  85. package/build/lib/helpers.d.ts +26 -2
  86. package/build/lib/helpers.js +54 -0
  87. package/build/lib/helpers.js.map +1 -1
  88. package/build/lib/suspense/promise-handlers.d.ts +2 -0
  89. package/build/lib/suspense/promise-handlers.js +24 -0
  90. package/build/lib/suspense/promise-handlers.js.map +1 -1
  91. package/build/lib/suspense.d.ts +1 -1
  92. package/build/lib/useful-types.d.ts +80 -3
  93. package/build/lib/useful-types.js +6 -1
  94. package/build/lib/useful-types.js.map +1 -1
  95. package/package.json +29 -15
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, FocalPointPicker, Spinner } from "@wordpress/components";
3
- import { dispatch, select } from "@wordpress/data";
3
+ import { dispatch, select, useSelect } from "@wordpress/data";
4
4
  import { PostFeaturedImageCheck, store as editorStore } from "@wordpress/editor";
5
- import { useEffect, useMemo, useState } from "@wordpress/element";
5
+ import { memo, useCallback, useEffect, useMemo, useState } from "@wordpress/element";
6
6
  import { addFilter, applyFilters } from "@wordpress/hooks";
7
7
  import { __ } from "@wordpress/i18n";
8
8
  function getMediaDetails(media, postId) {
@@ -34,15 +34,22 @@ function getMediaDetails(media, postId) {
34
34
  mediaSourceUrl: media.source_url,
35
35
  };
36
36
  }
37
- function getLivePosition() {
38
- const { x = 50, y = 50 } = (select(editorStore).getEditedPostAttribute('meta')?.["plaudit_card-image_pos"] ?? {});
37
+ function getLivePosition(selectFunction = select) {
38
+ const { x = 50, y = 50 } = (selectFunction(editorStore).getEditedPostAttribute('meta')?.["plaudit_card-image_pos"] ?? {});
39
39
  return { x: x / 100, y: y / 100 };
40
40
  }
41
41
  function setLivePosition({ x, y }) {
42
- dispatch(editorStore).editPost({
42
+ dispatch(editorStore)
43
+ .editPost({
43
44
  meta: { "plaudit_card-image_pos": { x: Math.round(x * 100), y: Math.round(y * 100) } }
45
+ })
46
+ .catch(e => {
47
+ console.error(e);
44
48
  });
45
49
  }
50
+ function getRawLivePosition() {
51
+ return { x: 50, y: 50, ...(select(editorStore).getEditedPostAttribute('meta')?.["plaudit_card-image_pos"] ?? {}) };
52
+ }
46
53
  function getImageSize(defaultSize, media, postId) {
47
54
  let filteredSize = applyFilters('editor.PostFeaturedImage.imageSize', defaultSize, media.id, postId);
48
55
  if (typeof filteredSize !== 'string') {
@@ -51,39 +58,65 @@ function getImageSize(defaultSize, media, postId) {
51
58
  }
52
59
  return filteredSize;
53
60
  }
54
- export function installPostFeaturedImageCardFocusTargeting() {
55
- if (select('plaudit/gutenberg-api-extensions').featureProp("post-featured-image-card-focus-targeting", "installed")) {
56
- return;
57
- }
58
- dispatch('plaudit/gutenberg-api-extensions').setFeatureProp("post-featured-image-card-focus-targeting", "installed", true);
59
- function wrapPostFeaturedImage(OriginalComponent) {
60
- return (props) => {
61
- const [inFocusMode, setInFocusMode] = useState(false);
62
- const { currentPostId, media, noticeUI } = props;
63
- const restorablePosition = useMemo(() => getLivePosition(), [inFocusMode]);
64
- // This assembly makes it so that we both get updates if something else triggers a position change while making the focus picker doesn't reset itself
65
- const { x, y } = getLivePosition();
66
- const [position, setPosition] = useState({ x, y });
67
- useEffect(() => setPosition(getLivePosition()), [x, y]);
68
- const { mediaSourceUrl } = getMediaDetails(media, currentPostId);
69
- if (!mediaSourceUrl && select(editorStore).getEditedPostAttribute('featured_media')) {
61
+ function wrapPostFeaturedImage(OriginalComponent) {
62
+ return (props) => {
63
+ const [inFocusMode, setInFocusMode] = useState(false);
64
+ // This useMemo call makes it so that we only update restorablePosition when the state changes.
65
+ const restorablePosition = useMemo(getLivePosition, [inFocusMode]);
66
+ const { mediaSourceUrl } = getMediaDetails(props.media, props.currentPostId);
67
+ if (!mediaSourceUrl) {
68
+ if (select(editorStore).getEditedPostAttribute('featured_media')) {
70
69
  return _jsx(Spinner, {});
71
70
  }
72
- if (!mediaSourceUrl) {
73
- return _jsx(OriginalComponent, { ...props });
74
- }
75
- if (!inFocusMode) {
76
- return _jsx(PostFeaturedImageCheck, { children: _jsxs("div", { className: "plauditPostFeaturedImageWithFocalPoint__wrapper", children: [_jsx("div", { className: "plauditPostFeaturedImageWithFocalPoint__toggle", children: _jsx(Button, { onClick: () => setInFocusMode(true), className: "editor-post-featured-image__action", text: __("Change Focal Point", 'plaudit') }) }), _jsx(OriginalComponent, { ...props })] }) });
71
+ return _jsx(OriginalComponent, { ...props });
72
+ }
73
+ else if (!inFocusMode) {
74
+ return _jsx(NotInFocusMode, { OriginalComponent: OriginalComponent, props: props, setInFocusMode: setInFocusMode });
75
+ }
76
+ return _jsx(InFocusMode, { mediaSourceUrl: mediaSourceUrl, props: props, restorablePosition: restorablePosition, setInFocusMode: setInFocusMode });
77
+ };
78
+ }
79
+ const NotInFocusMode = memo(({ OriginalComponent, props, setInFocusMode }) => {
80
+ const { x, y } = getRawLivePosition();
81
+ useEffect(() => {
82
+ let sheet = document.adoptedStyleSheets.find(s => s.identifier === '__POST_FEATURED_IMAGE__');
83
+ if (!sheet) {
84
+ sheet = new CSSStyleSheet();
85
+ sheet.identifier = '__POST_FEATURED_IMAGE__';
86
+ }
87
+ sheet.replace(`.plauditPostFeaturedImageWithFocalPoint__wrapper .editor-post-featured-image__preview-image {object-fit: ${x}% ${y}% !important;}`)
88
+ .catch(e => {
89
+ console.error(e);
90
+ });
91
+ return () => {
92
+ const sheet = document.adoptedStyleSheets.findIndex(s => s.identifier === '__POST_FEATURED_IMAGE__');
93
+ if (sheet) {
94
+ document.adoptedStyleSheets.splice(sheet, 1);
77
95
  }
78
- return _jsxs(PostFeaturedImageCheck, { children: [noticeUI, _jsxs("div", { className: "editor-post-featured-image", children: [_jsx(FocalPointPicker, { onChange: pos => {
79
- setPosition(pos);
80
- setLivePosition(pos);
81
- }, url: mediaSourceUrl, value: position }), _jsxs("div", { children: [_jsx(Button, { text: __("Done", 'plaudit'), onClick: () => setInFocusMode(false), variant: "primary" }), _jsx(Button, { text: __('Cancel', 'plaudit'), onClick: () => {
82
- setLivePosition(restorablePosition);
83
- setInFocusMode(false);
84
- }, isDestructive: true })] })] })] });
85
96
  };
97
+ }, [x, y]);
98
+ return _jsx(PostFeaturedImageCheck, { children: _jsxs("div", { className: "plauditPostFeaturedImageWithFocalPoint__wrapper", children: [_jsx("div", { className: "plauditPostFeaturedImageWithFocalPoint__toggle", children: _jsx(Button, { onClick: useCallback(() => setInFocusMode(true), [setInFocusMode]), className: "editor-post-featured-image__action", text: __("Change Focal Point", 'plaudit') }) }), _jsx(OriginalComponent, { ...props })] }) });
99
+ });
100
+ const InFocusMode = memo(({ mediaSourceUrl, props, restorablePosition, setInFocusMode }) => {
101
+ // This assembly makes it so that we both get updates if something else triggers a position change while making the focus picker doesn't reset itself
102
+ const { x, y } = useSelect(selectFunction => getLivePosition(selectFunction), []);
103
+ const [position, setPosition] = useState({ x, y });
104
+ useEffect(() => setPosition(getLivePosition()), [x, y]);
105
+ return _jsxs(PostFeaturedImageCheck, { children: [props.noticeUI, _jsxs("div", { className: "editor-post-featured-image", children: [_jsx(FocalPointPicker, { onChange: useCallback(pos => {
106
+ setPosition(pos);
107
+ setLivePosition(pos);
108
+ }, [setPosition]), url: mediaSourceUrl, value: position }), _jsxs("div", { children: [_jsx(Button, { text: __("Done", 'plaudit'), onClick: useCallback(() => setInFocusMode(false), [setInFocusMode]), variant: "primary" }), _jsx(Button, { text: __('Cancel', 'plaudit'), onClick: useCallback(() => {
109
+ setLivePosition(restorablePosition);
110
+ setInFocusMode(false);
111
+ }, [setInFocusMode]), isDestructive: true })] })] })] });
112
+ });
113
+ export function installPostFeaturedImageCardFocusTargeting() {
114
+ if (!installPostFeaturedImageCardFocusTargeting.called) {
115
+ installPostFeaturedImageCardFocusTargeting.called = true;
116
+ addFilter('editor.PostFeaturedImage', 'plaudit-gutenberg-api-extensions/inject-post-featured-image-card-focus-targeting', wrapPostFeaturedImage);
86
117
  }
87
- addFilter('editor.PostFeaturedImage', 'plaudit-gutenberg-api-extensions/inject-post-featured-image-card-focus-targeting', wrapPostFeaturedImage);
88
118
  }
119
+ (function (installPostFeaturedImageCardFocusTargeting) {
120
+ installPostFeaturedImageCardFocusTargeting.called = false;
121
+ })(installPostFeaturedImageCardFocusTargeting || (installPostFeaturedImageCardFocusTargeting = {}));
89
122
  //# sourceMappingURL=post-featured-image.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-featured-image.js","sourceRoot":"","sources":["../../src/editor/post-featured-image.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-featured-image.js","sourceRoot":"","sources":["../../src/editor/post-featured-image.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,15 @@
1
1
  import apiFetch from "@wordpress/api-fetch";
2
- export type ApiCallArgs = [string, string][] | Record<string, string> | string | undefined;
3
- export declare function registerSimpleGutenbergApiEndpoint<T>(name: string, endpoint: ((args: ApiCallArgs, key: string) => T) | Parameters<typeof apiFetch<T>>[0], options?: {
4
- namespace?: string;
2
+ export type ApiCallArgs = [string, any][] | Record<string, any> | URLSearchParams | string | undefined;
3
+ export declare function registerSimpleGutenbergApiEndpoint<T>(name: string, endpoint: ((args: ApiCallArgs, key: string) => Promise<T>) | Parameters<typeof apiFetch<T>>[0], options?: {
5
4
  transformer?: (response: Awaited<T>, args: ApiCallArgs, key: string) => unknown;
5
+ maxCachedResults?: number;
6
6
  }): void;
7
+ /**
8
+ * @param name the name of the endpoint
9
+ * @param args MUST be a value derived from useDeferredValue()
10
+ * @param config shared configuration logic
11
+ */
12
+ export declare function useEndpointResolver<R>(name: string, args: ApiCallArgs, config?: {
13
+ immediateReturnOnEmpty?: boolean;
14
+ dependencies?: readonly unknown[];
15
+ }): R | undefined;
@@ -1,15 +1,22 @@
1
- import apiFetch from "@wordpress/api-fetch";
2
- import { addFilter } from "@wordpress/hooks";
1
+ import { dispatch, useSuspenseSelect } from "@wordpress/data";
2
+ import { installSimpleGutenbergApisSupport, store as endpointsStore } from "../editor/simple-gutenberg-endpoints-impl";
3
3
  export function registerSimpleGutenbergApiEndpoint(name, endpoint, options) {
4
- const namespace = options?.namespace ? options.namespace : `simple-gutenberg-api-endpoint-${name}`;
5
- if (typeof endpoint === 'function') {
6
- addFilter(`plaudit-common.simple-gutenberg-apis.endpoint.${name}.fetcher`, namespace, endpoint);
7
- }
8
- else {
9
- addFilter(`plaudit-common.simple-gutenberg-apis.endpoint.${name}.fetcher`, namespace, () => apiFetch(endpoint));
10
- }
11
- if (options?.transformer) {
12
- addFilter(`plaudit-common.simple-gutenberg-apis.endpoint.${name}.transformer`, namespace, options.transformer);
13
- }
4
+ installSimpleGutenbergApisSupport();
5
+ dispatch(endpointsStore).registerEndpoint(name, endpoint, options);
6
+ }
7
+ /**
8
+ * @param name the name of the endpoint
9
+ * @param args MUST be a value derived from useDeferredValue()
10
+ * @param config shared configuration logic
11
+ */
12
+ export function useEndpointResolver(name, args, config = {}) {
13
+ const { immediateReturnOnEmpty = true, dependencies = [] } = config;
14
+ return useSuspenseSelect(select => {
15
+ if (!args && immediateReturnOnEmpty) {
16
+ return undefined;
17
+ }
18
+ const selector = select(endpointsStore);
19
+ return selector.get(name, args);
20
+ }, [args, immediateReturnOnEmpty, ...dependencies]);
14
21
  }
15
22
  //# sourceMappingURL=simple-gutenberg-endpoints-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-gutenberg-endpoints-api.js","sourceRoot":"","sources":["../../src/editor/simple-gutenberg-endpoints-api.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAG3C,MAAM,UAAU,kCAAkC,CACjD,IAAY,EAAE,QAAmF,EACjG,OAA+G;IAE/G,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,iCAAiC,IAAI,EAAE,CAAC;IACnG,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACpC,SAAS,CAAC,iDAAiD,IAAI,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACP,SAAS,CAAC,iDAAiD,IAAI,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjH,CAAC;IACD,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;QAC1B,SAAS,CAAC,iDAAiD,IAAI,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAChH,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"simple-gutenberg-endpoints-api.js","sourceRoot":"","sources":["../../src/editor/simple-gutenberg-endpoints-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAE5D,OAAO,EAAC,iCAAiC,EAAE,KAAK,IAAI,cAAc,EAAC,MAAM,2CAA2C,CAAC;AAGrH,MAAM,UAAU,kCAAkC,CACjD,IAAY,EAAE,QAA4F,EAC1G,OAAsH;IAEtH,iCAAiC,EAAE,CAAC;IACpC,QAAQ,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAClC,IAAY,EAAE,IAAiB,EAAE,SAAgF,EAAE;IAEnH,MAAM,EAAC,sBAAsB,GAAG,IAAI,EAAE,YAAY,GAAG,EAAE,EAAC,GAAG,MAAM,CAAC;IAClE,OAAO,iBAAiB,CAAC,MAAM,CAAC,EAAE;QACjC,IAAI,CAAC,IAAI,IAAI,sBAAsB,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QACxC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAgB,CAAC;IAChD,CAAC,EAAE,CAAC,IAAI,EAAE,sBAAsB,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;AACrD,CAAC"}
@@ -1,23 +1,29 @@
1
+ import apiFetch from "@wordpress/api-fetch";
2
+ import { type createReduxStore } from "@wordpress/data";
1
3
  import type { ApiCallArgs } from "./simple-gutenberg-endpoints-api";
2
- type ResponseCacheEntry = {
3
- args: ApiCallArgs;
4
- value: unknown;
4
+ type EndpointOptions<P, R> = {
5
+ transformer?: (response: P, args: ApiCallArgs, name: string) => R;
6
+ maxCachedResults?: number;
5
7
  };
6
- type State = {
7
- [key in string]: {
8
- [argsKey in string]: ResponseCacheEntry;
9
- };
10
- };
11
- type SetterAction<K extends keyof State> = {
12
- type: 'SET';
13
- key: K;
14
- args: ApiCallArgs;
15
- value: State[K][string];
8
+ export type ApiEndpointOptions<T> = {
9
+ transformer?: (response: Awaited<T>, args: ApiCallArgs, name: string) => unknown;
10
+ maxCachedResults?: number;
16
11
  };
17
12
  export declare function installSimpleGutenbergApisSupport(): void;
18
- export declare const store: import("@wordpress/data/build-types/types").StoreDescriptor<import("@wordpress/data/build-types/types").ReduxStoreConfig<State, {
19
- set<K extends keyof State>(key: K, args: ApiCallArgs, value: State[K][string]): SetterAction<K>;
20
- }, {
21
- get(state: State, key: keyof State, args?: ApiCallArgs): unknown;
22
- }>>;
13
+ export declare namespace installSimpleGutenbergApisSupport {
14
+ let called: boolean;
15
+ }
16
+ type Selectors = {
17
+ get(name: string, args?: ApiCallArgs): unknown;
18
+ resolve(name: string, args?: ApiCallArgs): Promise<unknown>;
19
+ };
20
+ type Actions = {
21
+ registerEndpoint(name: string, endpoint: ((args: ApiCallArgs, name: string) => Promise<unknown>) | Parameters<typeof apiFetch>[0], options?: EndpointOptions<any, unknown>): void;
22
+ };
23
+ type AddBSStateArg<S extends {
24
+ [name in string]: (...args: any[]) => any;
25
+ }> = {
26
+ [name in keyof S]: (state: any, ...args: Parameters<S[name]>) => ReturnType<S[name]>;
27
+ };
28
+ export declare const store: ReturnType<typeof createReduxStore<{}, Actions, AddBSStateArg<Selectors>>>;
23
29
  export {};
@@ -1,46 +1,87 @@
1
- import { createReduxStore, dispatch, register, select } from '@wordpress/data';
2
- import { applyFilters, hasFilter } from "@wordpress/hooks";
1
+ import apiFetch from "@wordpress/api-fetch";
2
+ import { register } from "@wordpress/data";
3
+ import { applyFilters } from "@wordpress/hooks";
4
+ import { clone, TemporalLRUCache } from "../lib/helpers";
5
+ import { use, useImmediately, useToPromise, wrapPromise } from "../lib/suspense/promise-handlers";
3
6
  function argsToKey(args) {
4
- return args ? new URLSearchParams(args).toString() : "";
7
+ return args instanceof URLSearchParams || typeof args !== 'object' ? args?.toString() ?? "" : JSON.stringify(args);
5
8
  }
6
9
  export function installSimpleGutenbergApisSupport() {
7
- if (select('plaudit/gutenberg-api-extensions').featureProp("simple-gutenberg-apis-support", "installed")) {
8
- return;
10
+ if (!installSimpleGutenbergApisSupport.called) {
11
+ installSimpleGutenbergApisSupport.called = true;
12
+ register(store);
9
13
  }
10
- dispatch('plaudit/gutenberg-api-extensions').setFeatureProp("simple-gutenberg-apis-support", "installed", true);
11
- register(store);
12
14
  }
13
- //TODO: Should I merge this into the library-wide store?
14
- const DEFAULT_STATE = {};
15
- const actions = {
16
- set(key, args, value) {
17
- return { type: 'SET', key, args, value };
18
- }
19
- };
20
- export const store = createReduxStore('simple-gutenberg-apis', {
21
- initialState: DEFAULT_STATE,
22
- reducer(state, action) {
23
- switch (action.type) {
24
- case "SET":
25
- return { ...state, [action.key]: { ...state[action.key], [argsToKey(action.args)]: action.value } };
26
- }
27
- return state;
28
- },
29
- actions,
30
- selectors: {
31
- get(state, key, args) {
32
- return state[key]?.[argsToKey(args)]?.value;
15
+ (function (installSimpleGutenbergApisSupport) {
16
+ installSimpleGutenbergApisSupport.called = false;
17
+ })(installSimpleGutenbergApisSupport || (installSimpleGutenbergApisSupport = {}));
18
+ export const store = {
19
+ name: 'plaudit/simple-gutenberg-apis',
20
+ instantiate: () => {
21
+ const listeners = new Set();
22
+ const endpoints = {};
23
+ function storeChanged() {
24
+ for (const listener of listeners) {
25
+ listener();
26
+ }
33
27
  }
34
- },
35
- resolvers: {
36
- get: (key, args) => async ({ dispatch }) => {
37
- const filterPrefix = `plaudit-common.simple-gutenberg-apis.endpoint.${key}.`;
38
- if (!hasFilter(filterPrefix + "fetcher")) {
39
- throw new Error(`Attempted to fetch data from an unmapped endpoint: ${key}`);
28
+ function handleCacheMiss(name, args) {
29
+ const endpoint = endpoints[name];
30
+ if (!endpoint) {
31
+ throw new Error(`Attempted to fetch data from an unmapped endpoint: ${name}`);
32
+ }
33
+ const key = argsToKey(args);
34
+ const existingPromise = endpoint.responseCache.get(key)?.promise;
35
+ if (existingPromise) {
36
+ return existingPromise;
40
37
  }
41
- const rawResponse = await applyFilters(filterPrefix + "fetcher", args, key);
42
- dispatch.set(key, args, { args, value: await applyFilters(filterPrefix + "transformer", rawResponse, args, key) });
38
+ const res = wrapPromise((typeof endpoint.endpoint === 'function' ? endpoint.endpoint(args, name) : apiFetch(endpoint.endpoint))
39
+ .then(rawResponse => {
40
+ return applyFilters(`plaudit-common.simple-gutenberg-apis.endpoint.${name}.response`, endpoint.transformer?.(rawResponse, args, name) ?? rawResponse, args, name);
41
+ }));
42
+ res.finally(() => storeChanged());
43
+ endpoint.responseCache.set(key, { args, promise: res });
44
+ return res;
43
45
  }
46
+ const actions = {
47
+ registerEndpoint(name, endpoint, options) {
48
+ if (endpoints[name]?.responseCache instanceof TemporalLRUCache) {
49
+ endpoints[name].responseCache.cancelTimeout();
50
+ }
51
+ endpoints[name] = {
52
+ endpoint: clone(endpoint),
53
+ ...options,
54
+ responseCache: new TemporalLRUCache(options?.maxCachedResults ?? Number.MAX_SAFE_INTEGER)
55
+ };
56
+ storeChanged();
57
+ }
58
+ };
59
+ const selectors = {
60
+ get(name, args) {
61
+ return useImmediately(handleCacheMiss(name, args));
62
+ },
63
+ resolve(name, args) {
64
+ return handleCacheMiss(name, args);
65
+ }
66
+ };
67
+ const suspendSelectors = {
68
+ get(name, args) {
69
+ return use(handleCacheMiss(name, args));
70
+ },
71
+ resolve(name, args) {
72
+ return useToPromise(handleCacheMiss(name, args));
73
+ }
74
+ };
75
+ // noinspection JSUnusedGlobalSymbols
76
+ return {
77
+ getSelectors: () => selectors,
78
+ getSuspendSelectors: () => suspendSelectors, // This adds support for useSuspenseSelect. WordPress' typedefs are incomplete.
79
+ getActions: () => actions, // This is correctly typed, but WordPress' typedefs are broken.
80
+ subscribe: (listener) => {
81
+ listeners.add(listener);
82
+ return () => listeners.delete(listener);
83
+ }
84
+ };
44
85
  }
45
- });
86
+ };
46
87
  //# sourceMappingURL=simple-gutenberg-endpoints-impl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-gutenberg-endpoints-impl.js","sourceRoot":"","sources":["../../src/editor/simple-gutenberg-endpoints-impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAC,YAAY,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAC;AASzD,SAAS,SAAS,CAAC,IAAiB;IACnC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AACD,MAAM,UAAU,iCAAiC;IAChD,IAAI,MAAM,CAAC,kCAAkC,CAAC,CAAC,WAAW,CAAC,+BAA+B,EAAE,WAAW,CAAC,EAAE,CAAC;QAC1G,OAAO;IACR,CAAC;IACD,QAAQ,CAAC,kCAAkC,CAAC,CAAC,cAAc,CAAC,+BAA+B,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAChH,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,wDAAwD;AACxD,MAAM,aAAa,GAAU,EAAE,CAAC;AAChC,MAAM,OAAO,GAAG;IACf,GAAG,CAAwB,GAAM,EAAE,IAAiB,EAAE,KAAuB;QAC5E,OAAO,EAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC;IACxC,CAAC;CACD,CAAC;AACF,MAAM,CAAC,MAAM,KAAK,GAAG,gBAAgB,CAAC,uBAAuB,EAAE;IAC9D,YAAY,EAAE,aAAa;IAC3B,OAAO,CAAC,KAAY,EAAE,MAA2E;QAChG,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,KAAK;gBACT,OAAO,EAAC,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAC,EAAC,CAAC;QAClG,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO;IACP,SAAS,EAAE;QACV,GAAG,CAAC,KAAY,EAAE,GAAgB,EAAE,IAAkB;YACrD,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC;QAC7C,CAAC;KACD;IACD,SAAS,EAAE;QACV,GAAG,EAAE,CAAC,GAAgB,EAAE,IAAkB,EAAE,EAAE,CAAC,KAAK,EAAE,EAAC,QAAQ,EAA6B,EAAE,EAAE;YAC/F,MAAM,YAAY,GAAG,iDAAiD,GAAG,GAAG,CAAC;YAC7E,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,sDAAsD,GAAG,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,YAAY,GAAG,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YAC5E,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC,YAAY,GAAG,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,EAAC,CAAC,CAAC;QAClH,CAAC;KACD;CACD,CAAC,CAAC"}
1
+ {"version":3,"file":"simple-gutenberg-endpoints-impl.js","sourceRoot":"","sources":["../../src/editor/simple-gutenberg-endpoints-impl.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { store } from "./lib/gutenberg-api-extensions-state";
1
+ import { store as endpointStore } from "./editor/simple-gutenberg-endpoints-impl";
2
+ import { type store as apiStore } from "./lib/gutenberg-api-extensions-state";
2
3
  export * from "./blocks";
3
4
  export * from "./controls";
4
5
  export * from "./editor/simple-gutenberg-endpoints-api";
@@ -6,7 +7,12 @@ export * from "./lib/plaudit-icons";
6
7
  export * from "./lib/suspense";
7
8
  export type * from "./lib/useful-types";
8
9
  export declare function installGutenbergExtensions(): void;
10
+ export declare namespace installGutenbergExtensions {
11
+ let called: boolean;
12
+ }
9
13
  declare module "@wordpress/data" {
10
- function select(key: 'plaudit/gutenberg-api-extensions'): ReturnType<typeof select<typeof store>>;
11
- function dispatch(key: 'plaudit/gutenberg-api-extensions'): ReturnType<typeof dispatch<typeof store>>;
14
+ function select(key: 'plaudit/gutenberg-api-extensions'): ReturnType<typeof select<typeof apiStore>>;
15
+ function dispatch(key: 'plaudit/gutenberg-api-extensions'): ReturnType<typeof dispatch<typeof apiStore>>;
16
+ function select(key: 'plaudit/simple-gutenberg-apis'): ReturnType<typeof select<typeof endpointStore>>;
17
+ function dispatch(key: 'plaudit/simple-gutenberg-apis'): ReturnType<typeof dispatch<typeof endpointStore>>;
12
18
  }
package/build/index.js CHANGED
@@ -1,20 +1,22 @@
1
- import { dispatch, select } from "@wordpress/data";
2
1
  import { installSimpleNativePropertiesSupport } from "./blocks/simple-native-property-impl";
3
2
  import { installPostFeaturedImageCardFocusTargeting } from "./editor/post-featured-image";
4
3
  import { installSimpleGutenbergApisSupport } from "./editor/simple-gutenberg-endpoints-impl";
5
- import { store } from "./lib/gutenberg-api-extensions-state";
4
+ import { registerStore } from "./lib/gutenberg-api-extensions-state";
6
5
  export * from "./blocks";
7
6
  export * from "./controls";
8
7
  export * from "./editor/simple-gutenberg-endpoints-api";
9
8
  export * from "./lib/plaudit-icons";
10
9
  export * from "./lib/suspense";
11
10
  export function installGutenbergExtensions() {
12
- if (select(store).featureProp("gutenberg-api-extensions", "installed")) {
13
- return;
11
+ if (!installGutenbergExtensions.called) {
12
+ installGutenbergExtensions.called = true;
13
+ registerStore();
14
+ installSimpleNativePropertiesSupport();
15
+ installPostFeaturedImageCardFocusTargeting();
16
+ installSimpleGutenbergApisSupport();
14
17
  }
15
- dispatch(store).setFeatureProp("gutenberg-api-extensions", "installed", true);
16
- installSimpleNativePropertiesSupport();
17
- installPostFeaturedImageCardFocusTargeting();
18
- installSimpleGutenbergApisSupport();
19
18
  }
19
+ (function (installGutenbergExtensions) {
20
+ installGutenbergExtensions.called = false;
21
+ })(installGutenbergExtensions || (installGutenbergExtensions = {}));
20
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAC,oCAAoC,EAAC,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAC,0CAA0C,EAAC,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAC,iCAAiC,EAAC,MAAM,0CAA0C,CAAC;AAC3F,OAAO,EAAC,KAAK,EAAC,MAAM,sCAAsC,CAAC;AAE3D,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,yCAAyC,CAAC;AACxD,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAG/B,MAAM,UAAU,0BAA0B;IACzC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,0BAA0B,EAAE,WAAW,CAAC,EAAE,CAAC;QACxE,OAAO;IACR,CAAC;IACD,QAAQ,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,0BAA0B,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAE9E,oCAAoC,EAAE,CAAC;IACvC,0CAA0C,EAAE,CAAC;IAC7C,iCAAiC,EAAE,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oCAAoC,EAAC,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAC,0CAA0C,EAAC,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAC,iCAAiC,EAAyB,MAAM,0CAA0C,CAAC;AACnH,OAAO,EAAC,aAAa,EAAyB,MAAM,sCAAsC,CAAC;AAE3F,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,yCAAyC,CAAC;AACxD,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAG/B,MAAM,UAAU,0BAA0B;IACzC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;QACxC,0BAA0B,CAAC,MAAM,GAAG,IAAI,CAAC;QACzC,aAAa,EAAE,CAAC;QAChB,oCAAoC,EAAE,CAAC;QACvC,0CAA0C,EAAE,CAAC;QAC7C,iCAAiC,EAAE,CAAC;IACrC,CAAC;AACF,CAAC;AACD,WAAiB,0BAA0B;IAC/B,iCAAM,GAAY,KAAK,CAAC;AACpC,CAAC,EAFgB,0BAA0B,KAA1B,0BAA0B,QAE1C"}
@@ -1,4 +1,4 @@
1
- import type { BlockName, RegisterBlockAttrs } from "../../blocks/snp-api";
1
+ import type { BlockName, RegisterBlockAttrs } from "../useful-types";
2
2
  export type GeneralLogicActions = {
3
3
  type: 'RECORD_BASELINE_BLOCK_ATTRS';
4
4
  attrs: RegisterBlockAttrs<Record<string, any>>;
@@ -1,6 +1,6 @@
1
- import type { BlockName, PDSimpleNativeProperty } from "../../blocks";
1
+ import type { PDSimpleNativeProperty } from "../../blocks";
2
2
  import type { NamedBlockAction } from "../gutenberg-api-extensions-state";
3
- import type { WordPressMetaActions } from "../useful-types";
3
+ import type { BlockName, WordPressMetaActions } from "../useful-types";
4
4
  export type LayeredBlockStylesLogicActions = NamedBlockAction<'ADD_LAYERED_BLOCK_STYLES', {
5
5
  properties: PDSimpleNativeProperty[];
6
6
  }> | NamedBlockAction<'SET_LAYERED_BLOCK_STYLES', {
@@ -1,8 +1,7 @@
1
- import type { BlockName, PropertiesParameter, SimpleNativePanel, SimpleNativeTab } from "../../blocks";
1
+ import type { PropertiesParameter, SimpleNativePanel, SimpleNativeTab } from "../../blocks";
2
2
  import type { ExtraPropTransformsConfig, PerBlockExtraPropTransforms, PreppedSimpleNativePanelsAndTabs } from "../../blocks/simple-native-property-internal-shared";
3
- import { RegisterBlockAttrs } from "../../blocks/snp-api";
4
- import { type BareProperties, type NamedBlockAction } from "../gutenberg-api-extensions-state";
5
- import type { WordPressMetaActions } from "../useful-types";
3
+ import { BareProperties, NamedBlockAction } from "../gutenberg-api-extensions-state";
4
+ import { BlockName, RegisterBlockAttrs, WordPressMetaActions } from "../useful-types";
6
5
  export type SNPLogicState = {
7
6
  desiccatedProperties: {
8
7
  [blockName in BlockName]?: Array<SimpleNativePanel | SimpleNativeTab>;
@@ -2,8 +2,8 @@ import { getBlockType } from "@wordpress/blocks";
2
2
  import { dispatch } from "@wordpress/data";
3
3
  import { produce } from "immer";
4
4
  import { hydrateSimpleNativeProperty } from "../../blocks/common-native-property-constructors";
5
- import { isBlockJsonNativePropsConfig } from "../../blocks/snp-api";
6
5
  import { store } from "../gutenberg-api-extensions-state";
6
+ import { isBlockJsonNativePropsConfig } from "../useful-types";
7
7
  export const snpLogicActions = {
8
8
  addProperties(blockName, properties) {
9
9
  return { type: 'ADD_PROPERTIES', blockName, properties };
@@ -176,10 +176,11 @@ export function prepSimpleNativePanelsAndTabs(block, items) {
176
176
  if (!panels.length && !ungroupedTabs.length) {
177
177
  return false;
178
178
  }
179
+ let panelOrTabKeyIndex = 0;
179
180
  const groupedTabs = {};
180
181
  for (const tab of ungroupedTabs) {
181
182
  const tabGroupName = tab.group ?? 'default';
182
- const groupedTabsForName = groupedTabs[tabGroupName] ?? (groupedTabs[tabGroupName] = {});
183
+ const groupedTabsForName = (groupedTabs[tabGroupName] ?? (groupedTabs[tabGroupName] = [`${block}-${panelOrTabKeyIndex++}`, {}]))[1];
183
184
  // If a tab with that title already exists, we append its properties to the existing ones
184
185
  const existingGroupedTabsForName = groupedTabsForName[tab.title];
185
186
  groupedTabsForName[tab.title] = {
@@ -191,8 +192,10 @@ export function prepSimpleNativePanelsAndTabs(block, items) {
191
192
  }
192
193
  return {
193
194
  // Because JavaScript's Array sorting methods are stable, we can just sort once at the end
194
- panels: panels.map(panel => hydrateSimpleNativePanel(panel, { forLayeredStyles: panel.group === "layered-styles", blockName: block }))
195
- .sort(({ position: aPosition = 10 }, { position: bPosition = 10 }) => aPosition - bPosition),
195
+ panels: panels
196
+ .map(panel => hydrateSimpleNativePanel(panel, { forLayeredStyles: panel.group === "layered-styles", blockName: block }))
197
+ .sort(({ position: aPosition = 10 }, { position: bPosition = 10 }) => aPosition - bPosition)
198
+ .map(panel => [`${block}-${panelOrTabKeyIndex++}`, panel]),
196
199
  // We sort tab groups by name in order to force SNP styles to be added after layered-styles
197
200
  // We don't need to check for equality in the group comparator because Object-keys are guaranteed to be distinct
198
201
  tabs: Object.fromEntries(Object.entries(groupedTabs)
@@ -1 +1 @@
1
- {"version":3,"file":"snp-logic.js","sourceRoot":"","sources":["../../../src/lib/gutenberg-api-extensions-state/snp-logic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snp-logic.js","sourceRoot":"","sources":["../../../src/lib/gutenberg-api-extensions-state/snp-logic.ts"],"names":[],"mappings":"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"}