@plaudit/gutenberg-api-extensions 2.40.2 → 2.41.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 (62) hide show
  1. package/build/blocks/common-native-property-constructors.d.ts +6 -4
  2. package/build/blocks/common-native-property-constructors.js +99 -92
  3. package/build/blocks/common-native-property-constructors.js.map +1 -1
  4. package/build/blocks/data-store-list-holder.d.ts +2 -3
  5. package/build/blocks/data-store-list-holder.js.map +1 -1
  6. package/build/blocks/object-data-store.d.ts +6 -11
  7. package/build/blocks/object-data-store.js.map +1 -1
  8. package/build/blocks/simple-native-property-impl.js.map +1 -1
  9. package/build/blocks/snp-group-component.d.ts +2 -3
  10. package/build/blocks/snp-group-component.js.map +1 -1
  11. package/build/controls/AsynchronousFormTokenField.d.ts +17 -8
  12. package/build/controls/AsynchronousFormTokenField.js +20 -107
  13. package/build/controls/AsynchronousFormTokenField.js.map +1 -1
  14. package/build/controls/ExtendedPostPicker.d.ts +16 -8
  15. package/build/controls/ExtendedPostPicker.js +27 -23
  16. package/build/controls/ExtendedPostPicker.js.map +1 -1
  17. package/build/controls/ExtendedRadioControl.js +10 -9
  18. package/build/controls/ExtendedRadioControl.js.map +1 -1
  19. package/build/controls/ImageControl.js +20 -11
  20. package/build/controls/ImageControl.js.map +1 -1
  21. package/build/controls/LazySuggestionsComboboxControl.js +21 -85
  22. package/build/controls/LazySuggestionsComboboxControl.js.map +1 -1
  23. package/build/controls/MultiSelectControl.d.ts +1 -1
  24. package/build/controls/MultiSelectControl.js +26 -20
  25. package/build/controls/MultiSelectControl.js.map +1 -1
  26. package/build/controls/PromisableComponent.d.ts +10 -0
  27. package/build/controls/PromisableComponent.js +23 -0
  28. package/build/controls/PromisableComponent.js.map +1 -0
  29. package/build/controls/ProperLinkControl.d.ts +3 -1
  30. package/build/controls/ProperLinkControl.js +8 -4
  31. package/build/controls/ProperLinkControl.js.map +1 -1
  32. package/build/controls/SimpleToggle.js +3 -1
  33. package/build/controls/SimpleToggle.js.map +1 -1
  34. package/build/controls/SortableItemsControl.js +35 -74
  35. package/build/controls/SortableItemsControl.js.map +1 -1
  36. package/build/controls/hooks/useDragHandler.d.ts +9 -0
  37. package/build/controls/hooks/useDragHandler.js +55 -0
  38. package/build/controls/hooks/useDragHandler.js.map +1 -0
  39. package/build/controls/hooks/useMultiSingleConversionLayer.d.ts +4 -0
  40. package/build/controls/hooks/useMultiSingleConversionLayer.js +13 -0
  41. package/build/controls/hooks/useMultiSingleConversionLayer.js.map +1 -0
  42. package/build/controls/hooks/useNonRenderingCounter.d.ts +3 -0
  43. package/build/controls/hooks/useNonRenderingCounter.js +6 -0
  44. package/build/controls/hooks/useNonRenderingCounter.js.map +1 -0
  45. package/build/controls/hooks/useSuggestions.d.ts +15 -0
  46. package/build/controls/hooks/useSuggestions.js +74 -0
  47. package/build/controls/hooks/useSuggestions.js.map +1 -0
  48. package/build/controls/hooks/useTokenManager.d.ts +11 -0
  49. package/build/controls/hooks/useTokenManager.js +147 -0
  50. package/build/controls/hooks/useTokenManager.js.map +1 -0
  51. package/build/controls/index.d.ts +1 -1
  52. package/build/controls/index.js +1 -1
  53. package/build/controls/index.js.map +1 -1
  54. package/build/controls/shared.d.ts +1 -0
  55. package/build/controls/shared.js +6 -0
  56. package/build/controls/shared.js.map +1 -1
  57. package/build/controls/types.d.ts +3 -0
  58. package/package.json +1 -1
  59. package/styles/editor.pcss +7 -0
  60. package/build/controls/PromiseableComponent.d.ts +0 -14
  61. package/build/controls/PromiseableComponent.js +0 -24
  62. package/build/controls/PromiseableComponent.js.map +0 -1
@@ -1,10 +1,9 @@
1
+ import type { Dict } from "../controls";
1
2
  import type { GroupPropertyConfig } from "./common-native-property-constructors";
2
3
  import type { CSNPControlComponentProps } from "./shared-internal-types";
3
4
  import type { DataStore, SimpleNativeProperty } from "./simple-native-property-api";
4
5
  import React from "react";
5
- export type SNPGroupComponentProps = CSNPControlComponentProps<GroupPropertyConfig, {
6
- [key: string]: any;
7
- }, {
6
+ export type SNPGroupComponentProps = CSNPControlComponentProps<GroupPropertyConfig, Dict<any>, {
8
7
  hydratedProperties: SimpleNativeProperty[];
9
8
  parentDataStore: DataStore;
10
9
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"snp-group-component.js","sourceRoot":"","sources":["../../src/blocks/snp-group-component.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAG1C,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAC;AAE1E,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,UAAU,iBAAiB,CAAC,EAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAyB;IACvH,MAAM,YAAY,GAAG,MAAM,CAA4B,SAAS,CAAC,CAAC;IAClE,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACxC,YAAY,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;IACxG,CAAC;SAAM,CAAC;QACP,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,qCAAc,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,+BAA+B,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,6BAA6B;QAC1K,oCAAS,MAAM,CAAC,KAAK,CAAU;QAC9B,2BAA2B,CAAC,kBAAkB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,CAChE,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"snp-group-component.js","sourceRoot":"","sources":["../../src/blocks/snp-group-component.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAI1C,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAC,2BAA2B,EAAC,MAAM,+BAA+B,CAAC;AAE1E,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,MAAM,UAAU,iBAAiB,CAAC,EAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAyB;IACvH,MAAM,YAAY,GAAG,MAAM,CAA4B,SAAS,CAAC,CAAC;IAClE,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACxC,YAAY,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;IACxG,CAAC;SAAM,CAAC;QACP,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,qCAAc,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,+BAA+B,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,6BAA6B;QAC1K,oCAAS,MAAM,CAAC,KAAK,CAAU;QAC9B,2BAA2B,CAAC,kBAAkB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,CAChE,CAAC;AACb,CAAC"}
@@ -3,19 +3,28 @@ import React from "react";
3
3
  export declare const enum ValidationState {
4
4
  Valid = "success",
5
5
  Invalid = "error",
6
- Validating = "validating"
6
+ Validating = "validating",
7
+ Waiting = "waiting"
7
8
  }
8
- export interface AsynchronousFormTokenFieldProps {
9
- label: string;
9
+ type AsynchronousFormTokenFieldPropsBase = {
10
+ label?: string;
10
11
  help?: string;
11
- value?: string[];
12
- onChange: (value: string[]) => void;
13
12
  validationQuery(tokens: string[]): Promise<Array<TokenItem>>;
14
13
  suggestionQuery(input: string): Promise<Array<string>>;
15
14
  makeTokenFromSuggestion(suggestion: string): TokenItem;
16
- validValues: Map<string, ValidationState>;
17
15
  validator?: (value: string) => boolean;
18
- multiple?: boolean;
19
16
  expandOnFocus?: boolean;
20
- }
17
+ };
18
+ type AsynchronousFormTokenFieldPropsSingle = AsynchronousFormTokenFieldPropsBase & {
19
+ value?: string;
20
+ onChange: (value: string) => void;
21
+ multiple: false;
22
+ };
23
+ type AsynchronousFormTokenFieldPropsMultiple = AsynchronousFormTokenFieldPropsBase & {
24
+ value?: string[];
25
+ onChange: (value: string[]) => void;
26
+ multiple?: true | undefined;
27
+ };
28
+ export type AsynchronousFormTokenFieldProps = AsynchronousFormTokenFieldPropsSingle | AsynchronousFormTokenFieldPropsMultiple;
21
29
  export declare function AsynchronousFormTokenField(props: AsynchronousFormTokenFieldProps): React.JSX.Element;
30
+ export {};
@@ -1,130 +1,43 @@
1
1
  import { Spinner, FormTokenField } from '@wordpress/components';
2
- import { debounce } from "@wordpress/compose";
3
2
  import { __ } from "@wordpress/i18n";
4
- import { useEffect, useMemo, useState } from '@wordpress/element';
5
- import React from "react";
3
+ import { useMultiSingleConversionLayer } from "./hooks/useMultiSingleConversionLayer";
4
+ import { useSuggestions } from "./hooks/useSuggestions";
5
+ import { useTokenManager } from "./hooks/useTokenManager";
6
+ import React, { useCallback } from "react";
6
7
  // The strange values correspond to the literals that are expected by TokenItem.status, which allows the assignment code to be cleaner
7
8
  export var ValidationState;
8
9
  (function (ValidationState) {
9
10
  ValidationState["Valid"] = "success";
10
11
  ValidationState["Invalid"] = "error";
11
12
  ValidationState["Validating"] = "validating";
13
+ ValidationState["Waiting"] = "waiting";
12
14
  })(ValidationState || (ValidationState = {}));
13
15
  export function AsynchronousFormTokenField(props) {
14
- const [isInitializing, setIsInitializing] = useState(true);
15
- const [isLoading, setIsLoading] = useState(false);
16
- const [isValidating, setIsValidating] = useState(false);
17
- const [currentTokens, setCurrentTokens] = useState([]);
18
- const [suggestions, setSuggestions] = useState([]);
19
- const { help, expandOnFocus = false, validValues } = props;
20
- const myValidationRequestQueue = useMemo(() => ({
21
- queue: Promise.resolve(true), currentRequest: 0,
22
- trigger(currentTokens) {
23
- const tokensInNeedOfValidation = currentTokens.filter(token => token.status === ValidationState.Validating);
24
- if (tokensInNeedOfValidation.length > 0) {
25
- setIsValidating(true);
26
- const myNumber = ++myValidationRequestQueue.currentRequest;
27
- myValidationRequestQueue.queue = myValidationRequestQueue.queue.then(async () => {
28
- const tokensBeingValidatedList = tokensInNeedOfValidation.map(token => token.value).filter(value => !validValues.has(value));
29
- if (tokensBeingValidatedList.length > 0) {
30
- const tokensBeingValidated = new Set(tokensBeingValidatedList);
31
- for (const value of tokensBeingValidatedList) {
32
- validValues.set(value, ValidationState.Validating);
33
- }
34
- const validatedTokens = await props.validationQuery(tokensBeingValidatedList);
35
- for (const validToken of validatedTokens) {
36
- tokensBeingValidated.delete(validToken.value);
37
- validValues.set(validToken.value, ValidationState.Valid);
38
- }
39
- for (const value of tokensBeingValidated) {
40
- if (validValues.get(value) === ValidationState.Validating) {
41
- validValues.set(value, ValidationState.Invalid);
42
- }
43
- }
44
- }
45
- if (myNumber === myValidationRequestQueue.currentRequest) {
46
- let changed = false;
47
- for (const token of currentTokens) {
48
- if (token.status === ValidationState.Validating) {
49
- const status = validValues.get(token.value);
50
- if (status !== undefined && token.status !== status) {
51
- changed = true;
52
- token.status = status;
53
- }
54
- }
55
- }
56
- if (changed) {
57
- setCurrentTokens(currentTokens);
58
- }
59
- setIsValidating(false);
60
- }
61
- return true;
62
- });
63
- }
64
- }
65
- }), []);
66
- const mySuggestionRequestQueue = useMemo(() => ({
67
- queue: Promise.resolve(true),
68
- currentRequest: 0,
69
- trigger: debounce(input => {
70
- if (typeof input !== 'string') {
71
- return;
72
- }
73
- if (!expandOnFocus && input.length < 2) {
74
- setSuggestions([]);
75
- }
76
- else {
77
- setIsLoading(true);
78
- const myNumber = ++mySuggestionRequestQueue.currentRequest;
79
- mySuggestionRequestQueue.queue = mySuggestionRequestQueue.queue.then(async () => {
80
- if (myNumber === mySuggestionRequestQueue.currentRequest) {
81
- setSuggestions(await props.suggestionQuery(input));
82
- setIsLoading(false);
83
- }
84
- return true;
85
- });
86
- }
87
- }, 500)
88
- }), []);
89
- useEffect(() => {
90
- props.validationQuery(props.value ?? []).then(data => {
91
- const tokenLabels = new Map();
92
- for (const rep of data) {
93
- tokenLabels.set(rep.value, rep.title);
94
- validValues.set(rep.value, ValidationState.Valid);
95
- }
96
- if (props.value) {
97
- for (const value of props.value) {
98
- if (!validValues.has(value)) {
99
- validValues.set(value, ValidationState.Invalid);
100
- }
101
- }
102
- }
103
- setCurrentTokens(props.value?.map(value => ({ value, title: tokenLabels.get(value) ?? value, status: validValues.get(value) })) ?? []);
104
- setIsInitializing(false);
105
- });
106
- }, []);
107
- useEffect(() => myValidationRequestQueue.trigger(currentTokens), [currentTokens]);
16
+ const [value, setValue] = props.multiple === false
17
+ ? useMultiSingleConversionLayer(props.value, props.onChange, props.makeTokenFromSuggestion, false)
18
+ : useMultiSingleConversionLayer(props.value, props.onChange, props.makeTokenFromSuggestion, true);
19
+ const { currentTokens, dispatchValueUpdate, hasValidationError, isInitializing, isValidating, tokenTitleMappings } = useTokenManager(value, setValue, props.validationQuery, props.makeTokenFromSuggestion);
20
+ const { hasLoadingError, isLoading, suggestions, input, setInput } = useSuggestions(undefined, { expandOnFocus: props.expandOnFocus, getSuggestions: props.suggestionQuery });
21
+ const displayTransform = useCallback((token) => tokenTitleMappings[token] ?? token, [tokenTitleMappings]);
22
+ const onFocus = useCallback(() => setInput(input), [input]);
23
+ const { help, expandOnFocus = false } = props;
108
24
  if (isInitializing) {
109
25
  return React.createElement(Spinner, null);
110
26
  }
111
- const tokenTitleMappings = new Map(currentTokens.map(currentToken => [currentToken.value, currentToken.title]));
112
27
  //TODO: If focus is in field but user hasn't started typing, show a message telling them to start typing
113
28
  return React.createElement(React.Fragment, null,
114
- React.createElement(FormTokenField, { value: currentTokens, label: props.label, placeholder: "Start typing to see suggestions", suggestions: suggestions, onChange: tokens => {
115
- const tokenItems = tokens.map(token => typeof token === 'string' ? props.makeTokenFromSuggestion(token) : token);
116
- props.onChange(tokenItems.map(token => token.value));
117
- setCurrentTokens(tokenItems);
118
- }, __experimentalValidateInput: props.validator, __experimentalAutoSelectFirstMatch: true, __experimentalExpandOnFocus: expandOnFocus, displayTransform: token => tokenTitleMappings.get(token) ?? token, onInputChange: mySuggestionRequestQueue.trigger, onFocus: () => {
119
- if (expandOnFocus) {
120
- mySuggestionRequestQueue.trigger("");
121
- }
122
- } }),
29
+ React.createElement(FormTokenField, { value: currentTokens, label: props.label, placeholder: "Start typing to see suggestions", suggestions: suggestions, onChange: dispatchValueUpdate, maxLength: props.multiple === false ? 1 : undefined, __experimentalValidateInput: props.validator, __experimentalAutoSelectFirstMatch: true, __experimentalExpandOnFocus: expandOnFocus, displayTransform: displayTransform, onInputChange: setInput, onFocus: onFocus }),
123
30
  help && React.createElement("div", null,
124
31
  React.createElement("span", { className: "components-form-token-field__help" }, help)),
32
+ hasLoadingError && React.createElement("div", null,
33
+ React.createElement(Spinner, null),
34
+ React.createElement("span", { className: "components-form-token-field__help" }, __("An Error Occurred While Loading Suggestions"))),
125
35
  isLoading && React.createElement("div", null,
126
36
  React.createElement(Spinner, null),
127
37
  React.createElement("span", { className: "components-form-token-field__help" }, __("Updating Suggestions"))),
38
+ hasValidationError && React.createElement("div", null,
39
+ React.createElement(Spinner, null),
40
+ React.createElement("span", { className: "components-form-token-field__help" }, __("An Error Occurred While Validating"))),
128
41
  isValidating && React.createElement("div", null,
129
42
  React.createElement(Spinner, null),
130
43
  React.createElement("span", { className: "components-form-token-field__help" }, __("Validating"))));
@@ -1 +1 @@
1
- {"version":3,"file":"AsynchronousFormTokenField.js","sourceRoot":"","sources":["../../src/controls/AsynchronousFormTokenField.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsynchronousFormTokenField.js","sourceRoot":"","sources":["../../src/controls/AsynchronousFormTokenField.tsx"],"names":[],"mappings":"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"}
@@ -1,13 +1,21 @@
1
1
  import React from "react";
2
- type ExtendedPostPickerProps = {
3
- onChange: (value: string[]) => void;
4
- label: string;
2
+ type ExtendedPostPickerPropsBase = {
3
+ label?: string;
5
4
  help?: string;
6
- postTypes: string[];
7
- placeholder: string;
5
+ postTypes?: string[];
6
+ placeholder?: string;
7
+ };
8
+ type ExtendedPostPickerPropsSingle = ExtendedPostPickerPropsBase & {
9
+ onChange: (value: string) => void;
10
+ value?: string;
11
+ multiple: false;
12
+ };
13
+ type ExtendedPostPickerPropsMultiple = ExtendedPostPickerPropsBase & {
14
+ onChange: (value: string[]) => void;
8
15
  value?: string[];
9
- multiple?: boolean;
16
+ multiple?: true | undefined;
10
17
  };
11
- export type ExtendedPostPickerConstructorProps = Partial<Omit<ExtendedPostPickerProps, 'onChange' | 'value' | 'label'>> & Pick<ExtendedPostPickerProps, 'onChange' | 'value' | 'label'>;
12
- export declare function ExtendedPostPicker(props: ExtendedPostPickerConstructorProps): React.JSX.Element;
18
+ export type ExtendedPostPickerProps = ExtendedPostPickerPropsSingle | ExtendedPostPickerPropsMultiple;
19
+ export type ExtendedPostPickerConstructorProps = ExtendedPostPickerProps;
20
+ export declare function ExtendedPostPicker(props: ExtendedPostPickerProps): React.JSX.Element;
13
21
  export {};
@@ -1,28 +1,32 @@
1
- import { useMemo } from "@wordpress/element";
2
1
  import { AsynchronousFormTokenField, ValidationState } from "./AsynchronousFormTokenField";
3
- import { requestPostsFromAPI } from "./shared";
4
- import React from "react";
2
+ import { isNumeric, requestPostsFromAPI } from "./shared";
3
+ import React, { useCallback } from "react";
5
4
  export function ExtendedPostPicker(props) {
6
- const validPostIds = useMemo(() => new Map(), []);
7
- return React.createElement(AsynchronousFormTokenField, { ...props, value: props.value ?? [], makeTokenFromSuggestion: token => {
8
- if (isNumeric(token)) {
9
- return { value: token, status: validPostIds.get(token) ?? ValidationState.Validating, title: token };
10
- }
11
- else {
12
- const tokenId = /\(#([0-9]+)\)$/.exec(token)?.[1];
13
- if (tokenId) {
14
- return { value: tokenId, status: validPostIds.get(tokenId) ?? ValidationState.Validating, title: token };
15
- }
16
- return { value: token, status: ValidationState.Invalid, title: token };
17
- }
18
- }, suggestionQuery: input => requestPostsFromAPI({ search: input, postTypes: props.postTypes?.join(',') })
19
- .then(posts => posts.map(post => `${post.title} (#${post.id})`)), validationQuery: idsBeingValidated => requestPostsFromAPI({ ids: idsBeingValidated.join(','), postTypes: props.postTypes?.join(',') })
20
- .then(posts => posts.map(post => ({ value: post.id, title: post.title, status: ValidationState.Valid }))), validValues: validPostIds, validator: token => /\(#([0-9]+)\)$/.exec(token)?.[1] !== undefined });
5
+ const { multiple, value, postTypes, ...remainder } = props;
6
+ const suggestionQuery = useCallback((input) => requestPostsFromAPI({ search: input, postTypes: postTypes?.join(',') })
7
+ .then(posts => posts.map(post => `${post.title} (#${post.id})`)), [postTypes]);
8
+ const validationQuery = useCallback((idsBeingValidated) => requestPostsFromAPI({ ids: idsBeingValidated.join(','), postTypes: postTypes?.join(',') })
9
+ .then(posts => posts.map((post) => ({ value: post.id, title: post.title, status: ValidationState.Valid }))), [postTypes]);
10
+ if (props.multiple === false) {
11
+ return React.createElement(AsynchronousFormTokenField, { ...remainder, value: props.value, multiple: props.multiple, onChange: props.onChange, makeTokenFromSuggestion: makeTokenFromSuggestion, suggestionQuery: suggestionQuery, validationQuery: validationQuery, validator: validator });
12
+ }
13
+ else {
14
+ return React.createElement(AsynchronousFormTokenField, { ...remainder, value: props.value, multiple: props.multiple, onChange: props.onChange, makeTokenFromSuggestion: makeTokenFromSuggestion, suggestionQuery: suggestionQuery, validationQuery: validationQuery, validator: validator });
15
+ }
21
16
  }
22
- function isNumeric(str) {
23
- if (typeof str !== "string")
24
- return true; // we only process strings!
25
- return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
26
- !isNaN(parseFloat(str)); // ...and ensure strings of whitespace fail
17
+ function makeTokenFromSuggestion(token) {
18
+ if (isNumeric(token)) {
19
+ return { value: token, status: ValidationState.Validating, title: token };
20
+ }
21
+ else {
22
+ const tokenId = /\(#([0-9]+)\)$/.exec(token)?.[1];
23
+ if (tokenId) {
24
+ return { value: tokenId, status: ValidationState.Validating, title: token };
25
+ }
26
+ return { value: token, status: ValidationState.Invalid, title: token };
27
+ }
28
+ }
29
+ function validator(token) {
30
+ return /\(#([0-9]+)\)$/.exec(token)?.[1] !== undefined;
27
31
  }
28
32
  //# sourceMappingURL=ExtendedPostPicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtendedPostPicker.js","sourceRoot":"","sources":["../../src/controls/ExtendedPostPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAC,0BAA0B,EAAE,eAAe,EAAC,MAAM,8BAA8B,CAAC;AACzF,OAAO,EAAC,mBAAmB,EAAC,MAAM,UAAU,CAAC;AAE7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,MAAM,UAAU,kBAAkB,CAAC,KAAyC;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAA2B,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO,oBAAC,0BAA0B,OAC7B,KAAK,EACT,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,EACxB,uBAAuB,EAAE,KAAK,CAAC,EAAE;YAChC,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;YACpG,CAAC;iBAAM,CAAC;gBACP,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,OAAO,EAAE,CAAC;oBACb,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;gBACxG,CAAC;gBACD,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC;YACtE,CAAC;QACF,CAAC,EACD,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC;aACnG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EACjE,eAAe,EAAE,iBAAiB,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAC,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAC,CAAC;aAClI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,EAAC,CAAC,CAAC,CAAC,EACxG,WAAW,EAAE,YAAY,EACzB,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,GAClE,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAkB;IACpC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,2BAA2B;IACrE,OAAO,CAAC,KAAK,CAAC,GAAU,CAAC,IAAI,mGAAmG;QAC/H,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,2CAA2C;AACrE,CAAC"}
1
+ {"version":3,"file":"ExtendedPostPicker.js","sourceRoot":"","sources":["../../src/controls/ExtendedPostPicker.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { BaseControl, __experimentalVStack as VStack } from "@wordpress/components";
2
2
  import { useInstanceId } from "@wordpress/compose";
3
- import { useState } from "@wordpress/element";
3
+ import { useCallback, useState } from "@wordpress/element";
4
4
  import React from "react";
5
5
  /**
6
6
  * This is a variant of WordPress'
@@ -10,11 +10,16 @@ export function ExtendedRadioControl(props) {
10
10
  const instanceId = useInstanceId(ExtendedRadioControl);
11
11
  const id = `inspector-radio-control-${instanceId}`;
12
12
  const [valueIsCustom, setValueIsCustom] = useState(() => options.find(option => option.value === selected) === undefined);
13
- const onChangeValue = (event) => {
13
+ const [customValue, setCustomValue] = useState(valueIsCustom ? selected : "");
14
+ const onChangeValue = useCallback((event) => {
14
15
  setValueIsCustom(options.find(option => option.value === event.target.value) === undefined);
15
16
  onChange(event.target.value);
16
- };
17
- const [customValue, setCustomValue] = useState(valueIsCustom ? selected : "");
17
+ }, [onChange, options, setValueIsCustom]);
18
+ const onChangeCustom = useCallback((e) => {
19
+ onChangeValue(e);
20
+ setValueIsCustom(true);
21
+ setCustomValue(e.target.value);
22
+ }, [onChangeValue, setValueIsCustom, setCustomValue]);
18
23
  if (!options?.length) {
19
24
  return null;
20
25
  }
@@ -28,10 +33,6 @@ export function ExtendedRadioControl(props) {
28
33
  allowCustom && React.createElement("div", { key: `${id}-${options.length}`, className: "components-radio-control__option" },
29
34
  React.createElement("input", { id: `${id}-${options.length}`, className: "components-radio-control__input", type: "radio", name: id, value: customValue ?? '', onChange: onChangeValue, checked: valueIsCustom, "aria-describedby": !!help ? `${id}__help` : undefined, ...additionalProps }),
30
35
  React.createElement("label", { id: `${id}-custom-label`, className: "components-radio-control__label", htmlFor: `${id}-${options.length}` }, "Custom:"),
31
- React.createElement("input", { "aria-labelledby": `${id}-custom-label`, type: "text", value: customValue ?? '', onChange: e => {
32
- onChangeValue(e);
33
- setValueIsCustom(true);
34
- setCustomValue(e.target.value);
35
- } })))));
36
+ React.createElement("input", { "aria-labelledby": `${id}-custom-label`, type: "text", value: customValue ?? '', onChange: onChangeCustom })))));
36
37
  }
37
38
  //# sourceMappingURL=ExtendedRadioControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtendedRadioControl.js","sourceRoot":"","sources":["../../src/controls/ExtendedRadioControl.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExtendedRadioControl.js","sourceRoot":"","sources":["../../src/controls/ExtendedRadioControl.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { MediaUpload, MediaUploadCheck } from "@wordpress/block-editor";
2
2
  import { BaseControl, Button, FocalPointPicker, ResponsiveWrapper, useBaseControlProps } from "@wordpress/components";
3
3
  import { useSelect } from "@wordpress/data";
4
+ import { useCallback, useMemo } from "@wordpress/element";
4
5
  import { __ } from "@wordpress/i18n";
5
6
  import React from "react";
6
7
  export function ImageControl(props) {
@@ -12,14 +13,20 @@ export function ImageControl(props) {
12
13
  ? React.createElement(ImageControlWithUploadedImage, { ...props, media: media })
13
14
  : React.createElement(ImageControlWithoutUploadedImage, { ...props, media: media })));
14
15
  }
16
+ const ALLOWED_TYPES = ['image'];
15
17
  function ImageControlWithUploadedImage(props) {
16
18
  const { includeFocalPointPicker, media, onChange, value } = props;
19
+ const onFPPChange = useCallback((pos) => onChange(mergeInUpdatedValuePart(value, 'pos', { x: pos.x * 100, y: pos.y * 100 })), [onChange, value]);
20
+ const onSelect = useCallback((media) => onChange(mergeInUpdatedValuePart(value, 'media', media)), [onChange, value]);
21
+ const renderOpenButton = useCallback(({ open }) => React.createElement(Button, { onClick: open, variant: "secondary" }, __('Replace image', 'plaudit')), []);
22
+ const clear = useCallback(() => onChange(undefined), [onChange]);
23
+ const fppValue = useMemo(() => ({
24
+ x: (value?.pos?.x ?? 50) / 100,
25
+ y: (value?.pos?.y ?? 50) / 100
26
+ }), [value?.pos?.x, value?.pos?.y]);
17
27
  let fppOrMedia;
18
28
  if (includeFocalPointPicker !== false) {
19
- fppOrMedia = React.createElement(FocalPointPicker, { onChange: pos => onChange(mergeInUpdatedValuePart(value, 'pos', { x: pos.x * 100, y: pos.y * 100 })), url: value?.media?.url ?? '', value: {
20
- x: (value?.pos?.x ?? 50) / 100,
21
- y: (value?.pos?.y ?? 50) / 100
22
- } });
29
+ fppOrMedia = React.createElement(FocalPointPicker, { onChange: onFPPChange, url: value?.media?.url ?? '', value: fppValue });
23
30
  }
24
31
  else {
25
32
  fppOrMedia = React.createElement(ResponsiveWrapper, { naturalWidth: parseFloat(media.media_details["width"]), naturalHeight: parseFloat(media.media_details["height"]) },
@@ -28,17 +35,19 @@ function ImageControlWithUploadedImage(props) {
28
35
  return React.createElement(React.Fragment, null,
29
36
  value?.media?.url && fppOrMedia,
30
37
  React.createElement(MediaUploadCheck, null,
31
- React.createElement(MediaUpload, { title: __('Replace image', 'plaudit'), value: value?.media?.id ?? 0, onSelect: media => onChange({ ...value, media: { id: media.id, url: media['url'] } }), allowedTypes: ['image'], render: ({ open }) => (React.createElement(Button, { onClick: open, variant: "secondary" }, __('Replace image', 'plaudit'))) }),
32
- React.createElement(Button, { onClick: () => onChange(undefined), isDestructive: true }, __('Remove image', 'plaudit'))));
38
+ React.createElement(MediaUpload, { title: __('Replace image', 'plaudit'), value: value?.media?.id ?? 0, onSelect: onSelect, allowedTypes: ALLOWED_TYPES, render: renderOpenButton }),
39
+ React.createElement(Button, { onClick: clear, isDestructive: true }, __('Remove image', 'plaudit'))));
33
40
  }
34
41
  function ImageControlWithoutUploadedImage(props) {
35
42
  const { media, onChange, value } = props;
43
+ const onSelect = useCallback((media) => onChange(mergeInUpdatedValuePart(value, 'media', media)), [onChange, value]);
44
+ const renderOpenButton = useCallback(({ open }) => (React.createElement(Button, { className: !value?.media?.id ? 'editor-post-featured-image__toggle' : 'editor-post-featured-image__preview', onClick: open },
45
+ !value?.media?.id && __('Choose an image', 'plaudit'),
46
+ media &&
47
+ React.createElement(ResponsiveWrapper, { naturalWidth: parseFloat(media.media_details["width"]), naturalHeight: parseFloat(media.media_details["height"]) },
48
+ React.createElement("img", { src: media.source_url, alt: "The currently-selected image." })))), [media, value?.media?.id]);
36
49
  return React.createElement(MediaUploadCheck, null,
37
- React.createElement(MediaUpload, { onSelect: media => onChange(mergeInUpdatedValuePart(value, 'media', media)), value: value?.media?.id ?? 0, allowedTypes: ['image'], render: ({ open }) => (React.createElement(Button, { className: !value?.media?.id ? 'editor-post-featured-image__toggle' : 'editor-post-featured-image__preview', onClick: open },
38
- !value?.media?.id && __('Choose an image', 'plaudit'),
39
- media &&
40
- React.createElement(ResponsiveWrapper, { naturalWidth: parseFloat(media.media_details["width"]), naturalHeight: parseFloat(media.media_details["height"]) },
41
- React.createElement("img", { src: media.source_url, alt: "The currently-selected image." })))) }));
50
+ React.createElement(MediaUpload, { onSelect: onSelect, value: value?.media?.id ?? 0, allowedTypes: ALLOWED_TYPES, render: renderOpenButton }));
42
51
  }
43
52
  function mergeInUpdatedValuePart(value, partName, part) {
44
53
  if (part === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"ImageControl.js","sourceRoot":"","sources":["../../src/controls/ImageControl.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImageControl.js","sourceRoot":"","sources":["../../src/controls/ImageControl.tsx"],"names":[],"mappings":"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"}