@plaudit/gutenberg-api-extensions 2.87.0 → 2.89.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 (36) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/blocks/basic-custom-block-bindings-support.d.ts +1 -5
  3. package/dist/blocks/basic-custom-block-bindings-support.js.map +1 -1
  4. package/dist/blocks/index.d.ts +2 -2
  5. package/dist/blocks/index.js.map +1 -1
  6. package/dist/blocks/layout/LaidOutProperty.d.ts +1 -1
  7. package/dist/controls/hooks/useSuggestions.js.map +1 -1
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.js +27 -2
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/compat-types.d.ts +34 -0
  12. package/dist/lib/compat-types.js +3 -0
  13. package/dist/lib/compat-types.js.map +1 -0
  14. package/dist/lib/gutenberg-api-extensions-state/custom-block-bindings-support-logic.d.ts +1 -1
  15. package/dist/lib/gutenberg-api-extensions-state.d.ts +3 -3
  16. package/dist/lib/helpers.d.ts +1 -0
  17. package/dist/lib/helpers.js +21 -2
  18. package/dist/lib/helpers.js.map +1 -1
  19. package/dist/lib/sectioned-cache-store.d.ts +42 -0
  20. package/dist/lib/sectioned-cache-store.js +78 -0
  21. package/dist/lib/sectioned-cache-store.js.map +1 -0
  22. package/dist/lib/useful-types.d.ts +5 -0
  23. package/package.json +13 -13
  24. package/src/blocks/basic-custom-block-bindings-support.tsx +1 -2
  25. package/src/blocks/index.ts +2 -2
  26. package/src/controls/hooks/useSuggestions.ts +1 -1
  27. package/src/index.ts +2 -2
  28. package/src/lib/compat-types.ts +21 -0
  29. package/src/lib/helpers.ts +23 -3
  30. package/src/lib/sectioned-cache-store.ts +120 -0
  31. package/src/lib/useful-types.ts +2 -0
  32. package/styles/editor.pcss +0 -16
  33. package/dist/editor/post-featured-image.d.ts +0 -4
  34. package/dist/editor/post-featured-image.js +0 -125
  35. package/dist/editor/post-featured-image.js.map +0 -1
  36. package/src/editor/post-featured-image.tsx +0 -161
package/CHANGELOG.md CHANGED
@@ -5,6 +5,22 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.89.0] - 2026-03-24
9
+ ### Added
10
+ - `SectionedCacheStore` to allow easier creation of WordPress-compatible LRU caches
11
+
12
+ ### Removed
13
+ - The code that added a focal point picker to post's featured image interface
14
+ - It has been moved to `plaudit-base`
15
+
16
+ ### Internals
17
+ - Updated to TypeScript v6
18
+ - A few things had to get shuffled around as a result
19
+
20
+ ## [2.88.0] - 2026-03-23
21
+ ### Added
22
+ - The `TemporalLRUCache` class to the list of exports
23
+
8
24
  ## [2.87.0] - 2026-03-03
9
25
  ### Added
10
26
  - The `message` CSNP "field"
@@ -1,9 +1,5 @@
1
1
  import { type registerBlockBindingsSource } from "@wordpress/blocks";
2
- export type DbSource = {
3
- label: string;
4
- value: string;
5
- help?: string;
6
- };
2
+ import type { DbSource } from "../lib/useful-types";
7
3
  type CBBParams = {
8
4
  dbSources?: DbSource[];
9
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"basic-custom-block-bindings-support.js","sourceRoot":"","sources":["../../src/blocks/basic-custom-block-bindings-support.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"basic-custom-block-bindings-support.js","sourceRoot":"","sources":["../../src/blocks/basic-custom-block-bindings-support.tsx"],"names":[],"mappings":";;;;;AA8BA,8EAGC;AAED,8EAuMC;;AA1OD,qEAA2C;AAC3C,8CAA4F;AAC5F,0DAAyF;AACzF,sDAI+B;AAC/B,gDAA8D;AAC9D,0CAAoE;AACpE,8CAAuD;AACvD,gDAAiD;AACjD,4CAA2C;AAE3C,6FAA4F;AAC5F,+FAAkF;AAClF,0FAAkF;AAGlF,iCAAkD;AAClD,+DAAkE;AAElE,MAAM,6BAA6B,GAAiC;IACnE,gBAAgB,EAAE,CAAC,SAAS,CAAC;IAC7B,cAAc,EAAE,CAAC,SAAS,CAAC;IAC3B,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;IAC3C,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC;CACnD,CAAC;AAGF,SAAgB,iCAAiC,CAAC,IAAiE;IAClH,iCAAiC,EAAE,CAAC;IACpC,IAAA,eAAQ,EAAC,kCAAkC,CAAC,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC;AACtF,CAAC;AAED,SAAgB,iCAAiC;IAChD,IAAI,iCAAiC,CAAC,MAAM,EAAE,CAAC;QAC9C,OAAO;IACR,CAAC;IACD,iCAAiC,CAAC,MAAM,GAAG,IAAI,CAAC;IAEhD,IAAA,mEAAkC,EACjC,6CAA6C,EAC7C,IAAI,CAAC,EAAE,CAAC,IAAA,mBAAQ,EAAmD,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iDAAiD,EAAC,CAAC,EACnJ,EAAC,gBAAgB,EAAE,EAAE,EAAC,CACtB,CAAC;IAEF,IAAA,iBAAS,EAAC,kBAAkB,EAAE,sEAAsE,EACnG,IAAA,oCAA0B,EAAC,SAAS,CAAC,EAAE,CAAC,CAAC,cAAoC,EAAE,EAAE;QAChF,MAAM,qBAAqB,GAAG,6BAA6B,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACjF,IAAI,CAAC,qBAAqB,EAAE,MAAM,EAAE,CAAC;YACpC,OAAO,uBAAC,SAAS,OAAK,cAAc,GAAI,CAAC;QAC1C,CAAC;QACD,MAAM,EAAC,sBAAsB,EAAE,mBAAmB,EAAC,GAAG,IAAA,oCAAqB,GAAE,CAAC;QAC9E,MAAM,WAAW,GAAG,IAAA,aAAM,EAAC,cAAW,CAAC,CAAC,cAAc,EAAE,CAAC;QACzD,MAAM,cAAc,GAAG,IAAA,iBAAO,EAC7B,GAAG,EAAE;YACJ,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAiE,EAAE;gBAC3G,OAAO;oBACN;wBACC,KAAK,EAAE,OAAO;wBACd,QAAQ;4BACP,OAAO,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;wBACrF,CAAC;wBACD,UAAU;4BACT,mBAAmB,CAAC,EAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAC,CAAC,CAAC;wBAC7C,CAAC;qBACD;oBACD;wBACC,KAAK,EAAE,OAAO;wBACd,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC;wBACrE,WAAW;wBACX,OAAO;qBACP;iBACD,CAAC;YACH,CAAC,CAAC,CAAC;QACJ,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC1F,OAAO,6DACN,uBAAC,SAAS,OAAK,cAAc,GAAI,EACjC,uBAAC,wCAAyB,cACzB,uBAAC,qCAAU,IACV,KAAK,EAAC,uBAAuB,EAAC,QAAQ,EAAE,sBAAsB,EAC9D,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAC5D,uBAAC,yCAAc,OAA+B,aAAa,YAC1D,uBAAC,gBAAgB,OAAK,SAAS,GAAI,IADf,aAAa,CAAC,KAAK,CAEvB,CACjB,CAAC,GACD,GACyB,IAC1B,CAAC;IACL,CAAC,EAAE,wDAAwD,CAAC,CAC5D,CAAC;IAiBF,MAAM,gBAAgB,GAAG,IAAA,cAAI,EAAC,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAwB,EAAE,EAAE;QAC7F,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAA,gCAAuB,GAAE,CAAC;aAC9D,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,wBAAwB,IAAI,GAAG,KAAK,gBAAgB,CAAC;aAC/E,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAC,KAAK,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC,CAAC;QACjD,MAAM,EAAC,mBAAmB,EAAC,GAAG,IAAA,oCAAqB,GAAE,CAAC;QAEtD,OAAO,sCAAU,SAAS,EAAC,qCAAqC,EAAC,KAAK,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAC,aAC9H,6CAAS,KAAK,GAAU,EACxB,uBAAC,0BAAa,IAEb,KAAK,EAAC,QAAQ,EACd,uBAAuB,EAAE,IAAI,EAC7B,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAC,CAAC,OAAO,CAAC,EAAE,EAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAC,EAAC,CAAC,EACxE,OAAO,EAAE;wBACR;4BACC,QAAQ,EAAE,IAAI;4BACd,KAAK,EAAE,yBAAyB;4BAChC,KAAK,EAAE,EAAE;yBACT;wBACD,GAAG,cAAc;qBACjB,EACD,KAAK,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,IAZtB,QAAQ,CAaX,EACF,uBAAC,oCAAa,IAAC,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,YACjE,uBAAC,gBAAQ,IAAC,QAAQ,EAAE,0CAAG,uBAAC,oBAAO,KAAE,gCAA4B,YAC5D,uBAAC,eAAe,IAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAI,GACnE,GACI,IACN,CAAA;IACZ,CAAC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,IAAA,cAAI,EAAC,CAAC,EAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAuC,EAAE,EAAE;QAEpG,MAAM,EAAC,iBAAiB,EAAE,MAAM,EAAE,EAAC,SAAS,CAAA,qBAAqB,EAAC,EAAC,GAAG,IAAA,wBAAiB,EAAC,CAAC,MAAM,EAAkB,EAAE;YAClH,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;gBACnB,MAAM,eAAe,GAAG,EAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC;gBAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,uCAAc,CAAC,CAAC,GAAG,CAAC,6CAA6C,EAAE,eAAe,CAAiC,CAAC;gBACjJ,OAAO;oBACN,iBAAiB,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;wBAC7C,OAAO,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;4BACzC,CAAC,CAAC,EAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAC;4BAC5E,CAAC,CAAC,EAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAC,CAAC;oBAC7C,CAAC,CAAC;oBACF,MAAM,EAAE,MAAM,CAAC,sCAAkB,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;iBAChF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,EAAC,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAC,CAAC;YAC5C,CAAC;QACF,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QACjC,MAAM,EAAC,mBAAmB,EAAC,GAAG,IAAA,oCAAqB,GAAE,CAAC;QAEtD,MAAM,YAAY,GAAG,IAAA,iBAAO,EAAyC,GAAG,EAAE;YACzE,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACtC,MAAM,GAAG,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,CAAC;YACD,OAAO,EAAE,CAAC;QACX,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,uBAAC,0BAAa,IAE3B,KAAK,EAAC,OAAO,EACb,uBAAuB,EAAE,IAAI;gBAC7B,mGAAmG;gBACnG,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAC,GAAG,EAAC,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAChG,OAAO,EAAE;oBACR;wBACC,QAAQ,EAAE,IAAI;wBACd,KAAK,EAAE,gBAAgB;wBACvB,KAAK,EAAE,EAAE;qBACT;oBACD,GAAG,iBAAiB;iBACpB,EACD,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAb3B,OAAO,CAcV,CAAC,CAAC;YAEJ,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;oBAC/B,QAAQ,CAAC,IAAI,CAAC,uBAAC,wBAAW,IAEzB,KAAK,EAAC,UAAU,EAChB,uBAAuB,EAAE,IAAI,EAC7B,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAC,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EACzH,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EACpC,IAAI,EAAC,wHAAwH,IALzH,UAAU,CAMb,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACP,QAAQ,CAAC,IAAI,CAAC,uBAAC,0BAAa,IAE3B,KAAK,EAAC,UAAU,EAChB,uBAAuB,EAAE,IAAI,EAC7B,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAC,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EACzH,OAAO,EAAE;4BACR;gCACC,QAAQ,EAAE,IAAI;gCACd,KAAK,EAAE,mBAAmB;gCAC1B,KAAK,EAAE,EAAE;6BACT;4BACD,GAAG,YAAY;yBACf,EACD,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAZhC,UAAU,CAab,CAAC,CAAC;gBACL,CAAC;YACF,CAAC;YAED,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC;gBAC7C,QAAQ,CAAC,IAAI,CAAC,uBAAC,0BAAa,IAE3B,KAAK,EAAC,WAAW,EACjB,uBAAuB,EAAE,IAAI,EAC7B,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,EAAC,GAAG,KAAK,CAAC,IAAI,EAAE,SAAS,EAAC,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAC,CAAC,EAC3H,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,CAAC,CAAE,CAAC,KAAK,EACtD,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,IANrE,WAAW,CAOd,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrC,MAAM,EAAC,SAAS,EAAE,GAAG,WAAW,EAAC,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC/C,mBAAmB,CAAC,EAAC,CAAC,OAAO,CAAC,EAAE,EAAC,GAAG,KAAK,EAAE,IAAI,EAAE,WAAW,EAAC,EAAC,CAAC,CAAC;YACjE,CAAC;QACF,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,8DAAO,uBAAuB,CAAqB,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC,CAAC;AACJ,CAAC;AACD,WAAiB,iCAAiC;IACtC,wCAAM,GAAY,KAAK,CAAC;AACpC,CAAC,EAFgB,iCAAiC,iDAAjC,iCAAiC,QAEjD;AAED,SAAS,QAAQ,CAAC,EAAC,KAAK,EAAgB;IACvC,MAAM,WAAW,GAAG,8BAAG,KAAK,EAAE,EAAC,KAAK,EAAE,SAAS,EAAC,gEAAqD,CAAC;IACtG,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,uBAAC,oBAAO,IAAC,IAAI,EAAE,KAAK,CAAC,OAAO,YAAG,WAAW,GAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AAC5K,CAAC"}
@@ -5,8 +5,8 @@ export * from "./simple-native-property-api";
5
5
  export * from "./snp-data-store";
6
6
  export * from "./utilities";
7
7
  export type { SuspendableOptionsHandler } from "./hooks/useSuspendableOptions";
8
- export { type DbSource, installCustomBlockBindingsSupport, registerCustomBlockBindingsSource } from "./basic-custom-block-bindings-support";
9
- export type { BlockName } from "../lib/useful-types";
8
+ export { installCustomBlockBindingsSupport, registerCustomBlockBindingsSource } from "./basic-custom-block-bindings-support";
9
+ export type { DbSource, BlockName } from "../lib/useful-types";
10
10
  /**
11
11
  * @deprecated use installGutenbergExtensions() instead
12
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAiBA,0EAEC;AAnBD,uDAAqC;AACrC,iDAA+B;AAC/B,4DAA0C;AAC1C,+DAA6C;AAC7C,mDAAiC;AACjC,8CAA4B;AAI5B,6FAA0I;AAAnH,wJAAA,iCAAiC,OAAA;AAAE,wJAAA,iCAAiC,OAAA;AAG3F,oCAAoD;AAEpD;;GAEG;AACH,SAAgB,+BAA+B;IAC9C,IAAA,kCAA0B,GAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAiBA,0EAEC;AAnBD,uDAAqC;AACrC,iDAA+B;AAC/B,4DAA0C;AAC1C,+DAA6C;AAC7C,mDAAiC;AACjC,8CAA4B;AAI5B,6FAA2H;AAAnH,wJAAA,iCAAiC,OAAA;AAAE,wJAAA,iCAAiC,OAAA;AAG5E,oCAAoD;AAEpD;;GAEG;AACH,SAAgB,+BAA+B;IAC9C,IAAA,kCAA0B,GAAE,CAAC;AAC9B,CAAC"}
@@ -3,4 +3,4 @@ export type LaidOutPropertyProps = {
3
3
  property: HydratedSimpleNativeProperty;
4
4
  inToolsPanel?: boolean;
5
5
  };
6
- export declare const LaidOutProperty: import("react").NamedExoticComponent<LaidOutPropertyProps>;
6
+ export declare const LaidOutProperty: import("react").MemoExoticComponent<({ property, inToolsPanel }: LaidOutPropertyProps) => import("react/jsx-runtime").JSX.Element | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"useSuggestions.js","sourceRoot":"","sources":["../../../src/controls/hooks/useSuggestions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSuggestions.js","sourceRoot":"","sources":["../../../src/controls/hooks/useSuggestions.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,7 +3,9 @@ import { type store as apiStore } from "./lib/gutenberg-api-extensions-state";
3
3
  export * from "./blocks";
4
4
  export * from "./controls";
5
5
  export * from "./editor/simple-gutenberg-endpoints-api";
6
+ export { TemporalLRUCache, useAdoptedStyleSheet } from "./lib/helpers";
6
7
  export * from "./lib/plaudit-icons";
8
+ export * as SectionedCacheStore from "./lib/sectioned-cache-store";
7
9
  export * from "./lib/suspense";
8
10
  export type * from "./lib/useful-types";
9
11
  export declare function installGutenbergExtensions(): void;
package/dist/index.js CHANGED
@@ -10,26 +10,51 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
12
  }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
13
18
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
20
  };
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
16
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SectionedCacheStore = exports.useAdoptedStyleSheet = exports.TemporalLRUCache = void 0;
17
40
  exports.installGutenbergExtensions = installGutenbergExtensions;
18
41
  const simple_native_property_impl_1 = require("./blocks/simple-native-property-impl");
19
- const post_featured_image_1 = require("./editor/post-featured-image");
20
42
  const simple_gutenberg_endpoints_impl_1 = require("./editor/simple-gutenberg-endpoints-impl");
21
43
  const gutenberg_api_extensions_state_1 = require("./lib/gutenberg-api-extensions-state");
22
44
  __exportStar(require("./blocks"), exports);
23
45
  __exportStar(require("./controls"), exports);
24
46
  __exportStar(require("./editor/simple-gutenberg-endpoints-api"), exports);
47
+ var helpers_1 = require("./lib/helpers");
48
+ Object.defineProperty(exports, "TemporalLRUCache", { enumerable: true, get: function () { return helpers_1.TemporalLRUCache; } });
49
+ Object.defineProperty(exports, "useAdoptedStyleSheet", { enumerable: true, get: function () { return helpers_1.useAdoptedStyleSheet; } });
25
50
  __exportStar(require("./lib/plaudit-icons"), exports);
51
+ exports.SectionedCacheStore = __importStar(require("./lib/sectioned-cache-store"));
26
52
  __exportStar(require("./lib/suspense"), exports);
27
53
  function installGutenbergExtensions() {
28
54
  if (!installGutenbergExtensions.called) {
29
55
  installGutenbergExtensions.called = true;
30
56
  (0, gutenberg_api_extensions_state_1.registerStore)();
31
57
  (0, simple_native_property_impl_1.installSimpleNativePropertiesSupport)();
32
- (0, post_featured_image_1.installPostFeaturedImageCardFocusTargeting)();
33
58
  (0, simple_gutenberg_endpoints_impl_1.installSimpleGutenbergApisSupport)();
34
59
  }
35
60
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAYA,gEAQC;AApBD,sFAA0F;AAC1F,sEAAwF;AACxF,8FAAwH;AACxH,yFAA2F;AAE3F,2CAAyB;AACzB,6CAA2B;AAC3B,0EAAwD;AACxD,sDAAoC;AACpC,iDAA+B;AAG/B,SAAgB,0BAA0B;IACzC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;QACxC,0BAA0B,CAAC,MAAM,GAAG,IAAI,CAAC;QACzC,IAAA,8CAAa,GAAE,CAAC;QAChB,IAAA,kEAAoC,GAAE,CAAC;QACvC,IAAA,gEAA0C,GAAE,CAAC;QAC7C,IAAA,mEAAiC,GAAE,CAAC;IACrC,CAAC;AACF,CAAC;AACD,WAAiB,0BAA0B;IAC/B,iCAAM,GAAY,KAAK,CAAC;AACpC,CAAC,EAFgB,0BAA0B,0CAA1B,0BAA0B,QAE1C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,gEAOC;AApBD,sFAA0F;AAC1F,8FAAwH;AACxH,yFAA2F;AAE3F,2CAAyB;AACzB,6CAA2B;AAC3B,0EAAwD;AACxD,yCAAqE;AAA7D,2GAAA,gBAAgB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AAC9C,sDAAoC;AACpC,mFAAmE;AACnE,iDAA+B;AAG/B,SAAgB,0BAA0B;IACzC,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC;QACxC,0BAA0B,CAAC,MAAM,GAAG,IAAI,CAAC;QACzC,IAAA,8CAAa,GAAE,CAAC;QAChB,IAAA,kEAAoC,GAAE,CAAC;QACvC,IAAA,mEAAiC,GAAE,CAAC;IACrC,CAAC;AACF,CAAC;AACD,WAAiB,0BAA0B;IAC/B,iCAAM,GAAY,KAAK,CAAC;AACpC,CAAC,EAFgB,0BAA0B,0CAA1B,0BAA0B,QAE1C"}
@@ -0,0 +1,34 @@
1
+ import { DbSource } from "./useful-types";
2
+ declare module '@wordpress/blocks' {
3
+ type BaseRegisterBlockBindingsSourceFunctionArgs = {
4
+ bindings?: {
5
+ [key: string]: string | {
6
+ [key in string]: unknown;
7
+ };
8
+ };
9
+ clientId?: string;
10
+ context: {
11
+ [key in string]: any;
12
+ };
13
+ select: unknown;
14
+ };
15
+ type ExtendedRegisterBlockBindingsSourceFunctionArgs = BaseRegisterBlockBindingsSourceFunctionArgs & {
16
+ dispatch: {
17
+ [key in string]: (...args: unknown[]) => unknown;
18
+ };
19
+ };
20
+ type RegisterBlockBindingsSourceArgs = {
21
+ name: string;
22
+ label: string;
23
+ usesContext?: string[];
24
+ getValues?(args: BaseRegisterBlockBindingsSourceFunctionArgs): unknown;
25
+ setValues?: unknown;
26
+ getFieldsList?(args: BaseRegisterBlockBindingsSourceFunctionArgs): unknown;
27
+ canUserEditValue(args: BaseRegisterBlockBindingsSourceFunctionArgs): boolean;
28
+ dbSources?: DbSource[];
29
+ };
30
+ function registerBlockBindingsSource(args: RegisterBlockBindingsSourceArgs): void;
31
+ function getBlockBindingsSources(): {
32
+ [key: string]: RegisterBlockBindingsSourceArgs;
33
+ };
34
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=compat-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat-types.js","sourceRoot":"","sources":["../../src/lib/compat-types.ts"],"names":[],"mappings":""}
@@ -22,7 +22,7 @@ export declare const customBlockBindingsSupportLogicActions: {
22
22
  type: string;
23
23
  name: string;
24
24
  value: {
25
- dbSources: (DBSource[] & DbSource[]) | undefined;
25
+ dbSources: DbSource[] | undefined;
26
26
  };
27
27
  };
28
28
  };
@@ -28,12 +28,12 @@ export declare const store: import("@wordpress/data").StoreDescriptor<import("@w
28
28
  properties: import("../blocks").PDSimpleNativeProperty[];
29
29
  };
30
30
  registerCustomBlockBindingsSource(args: Parameters<typeof import("@wordpress/blocks").registerBlockBindingsSource>[0] & {
31
- dbSources?: import("../blocks").DbSource[];
31
+ dbSources?: import("./useful-types").DbSource[];
32
32
  }): {
33
33
  type: string;
34
34
  name: string;
35
35
  value: {
36
- dbSources: (DBSource[] & import("../blocks").DbSource[]) | undefined;
36
+ dbSources: import("./useful-types").DbSource[] | undefined;
37
37
  };
38
38
  };
39
39
  }, {
@@ -43,7 +43,7 @@ export declare const store: import("@wordpress/data").StoreDescriptor<import("@w
43
43
  snpLogic: SNPLogicState;
44
44
  generalLogic: GeneralLogicState;
45
45
  }, name: string) => {
46
- dbSources?: import("../blocks").DbSource[];
46
+ dbSources?: import("./useful-types").DbSource[];
47
47
  } | undefined;
48
48
  } & {
49
49
  blockStylesLayer: (state: {
@@ -18,6 +18,7 @@ type SelectorsArg<S extends {}> = {
18
18
  };
19
19
  };
20
20
  export declare function combineSelectors<S extends SelectorsArg<any>>(selectors: S): CombinedSelectors<typeof selectors>;
21
+ export declare function useAdoptedStyleSheet(): CSSStyleSheet;
21
22
  export declare class TemporalLRUCache<K, V extends NonNullable<any> | undefined> {
22
23
  private readonly capacity;
23
24
  private readonly minDroppableAccessTime;
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TemporalLRUCache = void 0;
4
4
  exports.clone = clone;
5
5
  exports.combineSelectors = combineSelectors;
6
+ exports.useAdoptedStyleSheet = useAdoptedStyleSheet;
7
+ const element_1 = require("@wordpress/element");
6
8
  function clone(value) {
7
9
  if (value === null || value === undefined) {
8
10
  return value;
@@ -22,6 +24,23 @@ function combineSelectors(selectors) {
22
24
  });
23
25
  }));
24
26
  }
27
+ function useAdoptedStyleSheet() {
28
+ const sheet = (0, element_1.useRef)();
29
+ if (sheet.current === undefined) {
30
+ sheet.current = new CSSStyleSheet();
31
+ }
32
+ (0, element_1.useEffect)(() => {
33
+ if (sheet.current !== undefined && !document.adoptedStyleSheets.includes(sheet.current)) {
34
+ document.adoptedStyleSheets.push(sheet.current);
35
+ }
36
+ return () => {
37
+ if (sheet.current !== undefined) {
38
+ document.adoptedStyleSheets.splice(document.adoptedStyleSheets.indexOf(sheet.current), 1);
39
+ }
40
+ };
41
+ });
42
+ return sheet.current;
43
+ }
25
44
  class TemporalLRUCache {
26
45
  capacity;
27
46
  minDroppableAccessTime;
@@ -50,12 +69,12 @@ class TemporalLRUCache {
50
69
  }
51
70
  cancelTimeout() {
52
71
  if (this.timeout !== undefined) {
53
- window.clearTimeout(this.timeout);
72
+ clearTimeout(this.timeout);
54
73
  this.timeout = undefined;
55
74
  }
56
75
  }
57
76
  beginTimeout() {
58
- this.timeout = window.setTimeout(() => {
77
+ this.timeout = setTimeout(() => {
59
78
  const now = Date.now();
60
79
  const droppableItems = [...this.cache.entries()]
61
80
  .filter(([_, v]) => now - v[1] >= this.minDroppableAccessTime)
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { createReduxStore } from "@wordpress/data";
2
+ import { TemporalLRUCache } from "./helpers";
3
+ import { type WrappedPromise } from "./suspense/promise-handlers";
4
+ type SelectorsBuilder<PROPS, DATA, SELECTORS extends {
5
+ [name in string]: (...args: any[]) => any;
6
+ }> = (handleCacheMiss: (props: PROPS) => Promise<SectionedCacheFetchResult<DATA>>) => SELECTORS;
7
+ type SectionedCacheFetchResult<DATA> = {
8
+ error?: false;
9
+ data: DATA;
10
+ } | {
11
+ error: true;
12
+ data: string;
13
+ };
14
+ type GetCacheForPropsFunction<PROPS, DATA, KEY> = (props: PROPS) => TemporalLRUCache<KEY, WrappedPromise<SectionedCacheFetchResult<DATA>>>;
15
+ type WarmingPromiseGetter<PROPS, DATA, KEY> = (storeChanged: () => void, props: FetchWarmingDataArgs<PROPS, DATA, KEY>[0], ...args: DropFirst<FetchWarmingDataArgs<PROPS, DATA, KEY>>) => WrappedPromise<void> | undefined;
16
+ type SectionedCacheStoreArgs<PROPS, DATA, KEY, SELECTORS extends {
17
+ [name in string]: (...args: any[]) => any;
18
+ }> = {
19
+ keyify: (props: PROPS) => KEY;
20
+ name: string;
21
+ selectorsBuilder: SelectorsBuilder<PROPS, DATA, SELECTORS>;
22
+ getCacheForProps?: GetCacheForPropsFunction<PROPS, DATA, KEY>;
23
+ getIndividualItemFetchPromise: (props: PROPS) => Promise<SectionedCacheFetchResult<DATA>>;
24
+ getWarmingPromise: WarmingPromiseGetter<PROPS, DATA, KEY>;
25
+ };
26
+ type AddBSStateArg<S extends {
27
+ [name in string]: (...args: any[]) => any;
28
+ }> = {
29
+ [name in keyof S]: (state: any, ...args: Parameters<S[name]>) => ReturnType<S[name]>;
30
+ };
31
+ export declare function create<PROPS, DATA, KEY, SELECTORS extends {
32
+ [name in string]: (...args: any[]) => any;
33
+ }>(args: SectionedCacheStoreArgs<PROPS, DATA, KEY, SELECTORS>): ReturnType<typeof createReduxStore<{}, {}, AddBSStateArg<SELECTORS>>>;
34
+ type DropFirst<A extends any[]> = A extends [any, ...infer R] ? R : never;
35
+ type FetchWarmingDataArgs<PROPS, DATA, KEY> = [props: PROPS, getCacheForProps: GetCacheForPropsFunction<PROPS, DATA, KEY>, keyify: (props: PROPS) => KEY];
36
+ type MakeSimpleWarmingPromisesGetterArgs<PROPS, DATA, KEY> = {
37
+ warmingPromisesKeyify: (props: PROPS) => string | number | undefined;
38
+ fetchWarmingData: (...args: FetchWarmingDataArgs<PROPS, DATA, KEY>) => Promise<void>;
39
+ shouldWarm?: ((props: PROPS) => boolean);
40
+ };
41
+ export declare function makeSimpleWarmingPromisesGetter<PROPS, DATA, KEY>({ warmingPromisesKeyify, fetchWarmingData, shouldWarm }: MakeSimpleWarmingPromisesGetterArgs<PROPS, DATA, KEY>): WarmingPromiseGetter<PROPS, DATA, KEY>;
42
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.create = create;
4
+ exports.makeSimpleWarmingPromisesGetter = makeSimpleWarmingPromisesGetter;
5
+ const helpers_1 = require("./helpers");
6
+ const promise_handlers_1 = require("./suspense/promise-handlers");
7
+ function create(args) {
8
+ const { getCacheForProps = makeDefaultCacheForPropsGetter(), getIndividualItemFetchPromise, getWarmingPromise, keyify, name, selectorsBuilder } = args;
9
+ return {
10
+ name,
11
+ instantiate: () => {
12
+ const listeners = new Set();
13
+ const storeChanged = () => {
14
+ for (const listener of listeners) {
15
+ listener();
16
+ }
17
+ };
18
+ const warmCache = (props) => {
19
+ const warmingPromise = getWarmingPromise(storeChanged, props, getCacheForProps, keyify);
20
+ if (warmingPromise !== undefined) {
21
+ return (0, promise_handlers_1.use)(warmingPromise);
22
+ }
23
+ };
24
+ const fetchItemContents = async (props) => {
25
+ try {
26
+ return await getIndividualItemFetchPromise(props);
27
+ }
28
+ catch (err) {
29
+ return { error: true, data: err?.toString() ?? "EMPTY_RESPONSE" };
30
+ }
31
+ };
32
+ const handleCacheMiss = (props) => {
33
+ const key = keyify(props);
34
+ warmCache(props);
35
+ const cache = getCacheForProps(props);
36
+ const existingPromise = cache.get(key);
37
+ if (existingPromise !== null) {
38
+ return existingPromise;
39
+ }
40
+ const res = (0, promise_handlers_1.wrapPromise)(fetchItemContents(props));
41
+ res.finally(storeChanged);
42
+ cache.set(key, res);
43
+ return res;
44
+ };
45
+ const selectors = selectorsBuilder(handleCacheMiss);
46
+ return {
47
+ getSelectors: () => selectors,
48
+ getSuspendSelectors: () => selectors,
49
+ getActions: () => ({}),
50
+ subscribe: (listener) => {
51
+ listeners.add(listener);
52
+ return () => listeners.delete(listener);
53
+ }
54
+ };
55
+ }
56
+ };
57
+ }
58
+ function makeDefaultCacheForPropsGetter() {
59
+ const cache = new helpers_1.TemporalLRUCache(10);
60
+ return () => cache;
61
+ }
62
+ function makeSimpleWarmingPromisesGetter({ warmingPromisesKeyify, fetchWarmingData, shouldWarm = () => true }) {
63
+ const warmingPromises = {};
64
+ return (storeChanged, props, ...args) => {
65
+ const key = warmingPromisesKeyify(props);
66
+ if (key === undefined) {
67
+ return;
68
+ }
69
+ if (!warmingPromises[key]) {
70
+ if (!shouldWarm(props)) {
71
+ return; // We don't want to go back to the server for the entire dataset unless we're going to be working with most of it
72
+ }
73
+ warmingPromises[key] = (0, promise_handlers_1.wrapPromise)(fetchWarmingData(props, ...args).finally(storeChanged));
74
+ }
75
+ return warmingPromises[key];
76
+ };
77
+ }
78
+ //# sourceMappingURL=sectioned-cache-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sectioned-cache-store.js","sourceRoot":"","sources":["../../src/lib/sectioned-cache-store.ts"],"names":[],"mappings":"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"}
@@ -76,4 +76,9 @@ type WPTaxonomyQueryFirstOrderClause = {
76
76
  terms: number | number[];
77
77
  field: 'term_taxonomy_id';
78
78
  });
79
+ export type DbSource = {
80
+ label: string;
81
+ value: string;
82
+ help?: string;
83
+ };
79
84
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plaudit/gutenberg-api-extensions",
3
- "version": "2.87.0",
3
+ "version": "2.89.0",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "files": [
6
6
  "./dist",
@@ -25,18 +25,18 @@
25
25
  "@types/react": "^18.3.28",
26
26
  "@types/wordpress__block-editor": "^15.0.5",
27
27
  "@types/wordpress__blocks": "^15.10.2",
28
- "@wordpress/block-editor": "^15.13.1",
29
- "@wordpress/blocks": "^15.13.0",
28
+ "@wordpress/block-editor": "^15.15.0",
29
+ "@wordpress/blocks": "^15.15.0",
30
30
  "@wordpress/components": "^30.9.0",
31
- "@wordpress/compose": "^7.40.0",
32
- "@wordpress/core-data": "^7.40.1",
33
- "@wordpress/data": "^10.40.0",
34
- "@wordpress/editor": "^14.40.1",
35
- "@wordpress/element": "^6.40.0",
36
- "@wordpress/hooks": "^4.40.0",
37
- "@wordpress/i18n": "^6.13.0",
38
- "@wordpress/icons": "^11.7.0",
39
- "framer-motion": "^12.34.5",
31
+ "@wordpress/compose": "^7.42.0",
32
+ "@wordpress/core-data": "^7.42.0",
33
+ "@wordpress/data": "^10.42.0",
34
+ "@wordpress/editor": "^14.42.0",
35
+ "@wordpress/element": "^6.42.0",
36
+ "@wordpress/hooks": "^4.42.0",
37
+ "@wordpress/i18n": "^6.15.0",
38
+ "@wordpress/icons": "^11.8.0",
39
+ "framer-motion": "^12.38.0",
40
40
  "html-react-parser": "^5.2.17",
41
41
  "immer": "^11.1.4",
42
42
  "react": "^18.3.1",
@@ -45,7 +45,7 @@
45
45
  "redux": "^5.0.1"
46
46
  },
47
47
  "devDependencies": {
48
- "typescript": "^5.9.3"
48
+ "typescript": "^6.0.2"
49
49
  },
50
50
  "scripts": {
51
51
  "build": "tsc",
@@ -15,7 +15,7 @@ import {addFilter} from "@wordpress/hooks";
15
15
  import {registerSimpleGutenbergApiEndpoint} from "../editor/simple-gutenberg-endpoints-api";
16
16
  import {store as endpointsStore} from "../editor/simple-gutenberg-endpoints-impl";
17
17
  import {store as apiExtensionsStore} from "../lib/gutenberg-api-extensions-state";
18
- import type {ActualBlockEditProps, BlockName} from "../lib/useful-types";
18
+ import type {ActualBlockEditProps, BlockName, DbSource} from "../lib/useful-types";
19
19
 
20
20
  import {type ReactElement, Suspense} from "react";
21
21
  import {ErrorBoundary, FallbackProps} from "react-error-boundary";
@@ -27,7 +27,6 @@ const BLOCK_BINDINGS_ALLOWED_BLOCKS: {[key: BlockName]: string[]} = {
27
27
  'core/button': ['url', 'text', 'linkTarget', 'rel']
28
28
  };
29
29
 
30
- export type DbSource = {label: string, value: string, help?: string};
31
30
  type CBBParams = {dbSources?: DbSource[]/*, supportsContext?: boolean*/};
32
31
  export function registerCustomBlockBindingsSource(args: Parameters<typeof registerBlockBindingsSource>[0]&CBBParams) {
33
32
  installCustomBlockBindingsSupport();
@@ -7,8 +7,8 @@ export * from "./utilities";
7
7
 
8
8
  export type {SuspendableOptionsHandler} from "./hooks/useSuspendableOptions";
9
9
 
10
- export {type DbSource, installCustomBlockBindingsSupport, registerCustomBlockBindingsSource} from "./basic-custom-block-bindings-support";
11
- export type {BlockName} from "../lib/useful-types"; // This is for backwards compatibility
10
+ export {installCustomBlockBindingsSupport, registerCustomBlockBindingsSource} from "./basic-custom-block-bindings-support";
11
+ export type {DbSource, BlockName} from "../lib/useful-types"; // This is for backwards compatibility
12
12
 
13
13
  import {installGutenbergExtensions} from "../index";
14
14
 
@@ -15,7 +15,7 @@ type SuggestionState<T> = {
15
15
  requestId: number
16
16
  };
17
17
  function useSimpleDebouncer(delay: number) {
18
- const timerId = useRef<ReturnType<typeof window['setTimeout']>|undefined>(undefined);
18
+ const timerId = useRef<ReturnType<typeof setTimeout>>(undefined);
19
19
  return useCallback((action: () => void) => {
20
20
  if (timerId.current !== undefined) {
21
21
  clearTimeout(timerId.current);
package/src/index.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import {installSimpleNativePropertiesSupport} from "./blocks/simple-native-property-impl";
2
- import {installPostFeaturedImageCardFocusTargeting} from "./editor/post-featured-image";
3
2
  import {installSimpleGutenbergApisSupport, type store as endpointStore} from "./editor/simple-gutenberg-endpoints-impl";
4
3
  import {registerStore, type store as apiStore} from "./lib/gutenberg-api-extensions-state";
5
4
 
6
5
  export * from "./blocks";
7
6
  export * from "./controls";
8
7
  export * from "./editor/simple-gutenberg-endpoints-api";
8
+ export {TemporalLRUCache, useAdoptedStyleSheet} from "./lib/helpers";
9
9
  export * from "./lib/plaudit-icons";
10
+ export * as SectionedCacheStore from "./lib/sectioned-cache-store";
10
11
  export * from "./lib/suspense";
11
12
  export type * from "./lib/useful-types";
12
13
 
@@ -15,7 +16,6 @@ export function installGutenbergExtensions() {
15
16
  installGutenbergExtensions.called = true;
16
17
  registerStore();
17
18
  installSimpleNativePropertiesSupport();
18
- installPostFeaturedImageCardFocusTargeting();
19
19
  installSimpleGutenbergApisSupport();
20
20
  }
21
21
  }
@@ -0,0 +1,21 @@
1
+ import {DbSource} from "./useful-types";
2
+
3
+ declare module '@wordpress/blocks' {
4
+ type BaseRegisterBlockBindingsSourceFunctionArgs = {
5
+ bindings?: {[key: string]: string|{[key in string]: unknown}}, clientId?: string,
6
+ context: {[key in string]: any}, select: unknown
7
+ };
8
+ type ExtendedRegisterBlockBindingsSourceFunctionArgs = BaseRegisterBlockBindingsSourceFunctionArgs&{dispatch: {[key in string]: (...args: unknown[]) => unknown}};
9
+
10
+ type RegisterBlockBindingsSourceArgs = {
11
+ name: string, label: string, usesContext?: string[],
12
+ getValues?(args: BaseRegisterBlockBindingsSourceFunctionArgs): unknown,
13
+ setValues?: unknown,
14
+ getFieldsList?(args: BaseRegisterBlockBindingsSourceFunctionArgs): unknown,
15
+ canUserEditValue(args: BaseRegisterBlockBindingsSourceFunctionArgs): boolean,
16
+ dbSources?: DbSource[]
17
+ };
18
+ function registerBlockBindingsSource(args: RegisterBlockBindingsSourceArgs): void;
19
+
20
+ function getBlockBindingsSources(): {[key: string]: RegisterBlockBindingsSourceArgs};
21
+ }
@@ -1,3 +1,5 @@
1
+ import {useEffect, useRef} from "@wordpress/element";
2
+
1
3
  import type {SubsequentArgsOfFunc} from "./useful-types";
2
4
 
3
5
  export function clone<T>(value: T): T {
@@ -37,9 +39,27 @@ export function combineSelectors<S extends SelectorsArg<any>>(selectors: S) {
37
39
  })) as CombinedSelectors<typeof selectors>;
38
40
  }
39
41
 
42
+ export function useAdoptedStyleSheet() {
43
+ const sheet = useRef<CSSStyleSheet>();
44
+ if (sheet.current === undefined) {
45
+ sheet.current = new CSSStyleSheet();
46
+ }
47
+ useEffect(() => {
48
+ if (sheet.current !== undefined && !document.adoptedStyleSheets.includes(sheet.current)) {
49
+ document.adoptedStyleSheets.push(sheet.current);
50
+ }
51
+ return () => {
52
+ if (sheet.current !== undefined) {
53
+ document.adoptedStyleSheets.splice(document.adoptedStyleSheets.indexOf(sheet.current), 1);
54
+ }
55
+ }
56
+ });
57
+ return sheet.current;
58
+ }
59
+
40
60
  export class TemporalLRUCache<K, V extends NonNullable<any>|undefined> {
41
61
  private readonly cache: Map<K, [V, number]> = new Map();
42
- private timeout?: ReturnType<Window['setTimeout']>;
62
+ private timeout?: ReturnType<typeof setTimeout>;
43
63
 
44
64
  public constructor(
45
65
  private readonly capacity: number,
@@ -68,12 +88,12 @@ export class TemporalLRUCache<K, V extends NonNullable<any>|undefined> {
68
88
 
69
89
  cancelTimeout() {
70
90
  if (this.timeout !== undefined) {
71
- window.clearTimeout(this.timeout);
91
+ clearTimeout(this.timeout);
72
92
  this.timeout = undefined;
73
93
  }
74
94
  }
75
95
  private beginTimeout() {
76
- this.timeout = window.setTimeout(() => {
96
+ this.timeout = setTimeout(() => {
77
97
  const now = Date.now();
78
98
  const droppableItems = [...this.cache.entries()]
79
99
  .filter(([_, v]) => now - v[1] >= this.minDroppableAccessTime)
@@ -0,0 +1,120 @@
1
+ import {createReduxStore} from "@wordpress/data";
2
+
3
+ import {TemporalLRUCache} from "./helpers";
4
+ import {use, type WrappedPromise, wrapPromise} from "./suspense/promise-handlers";
5
+
6
+ type SelectorsBuilder<
7
+ PROPS,
8
+ DATA,
9
+ SELECTORS extends { [name in string]: (...args: any[]) => any }
10
+ > = (handleCacheMiss: (props: PROPS) => Promise<SectionedCacheFetchResult<DATA>>) => SELECTORS;
11
+ type SectionedCacheFetchResult<DATA> = {error?: false, data: DATA}|{error: true, data: string};
12
+ type GetCacheForPropsFunction<PROPS, DATA, KEY> = (props: PROPS) => TemporalLRUCache<KEY, WrappedPromise<SectionedCacheFetchResult<DATA>>>;
13
+ type WarmingPromiseGetter<PROPS, DATA, KEY> = (
14
+ storeChanged: () => void, props: FetchWarmingDataArgs<PROPS, DATA, KEY>[0], ...args: DropFirst<FetchWarmingDataArgs<PROPS, DATA, KEY>>
15
+ ) => WrappedPromise<void>|undefined;
16
+
17
+ type SectionedCacheStoreArgs<
18
+ PROPS,
19
+ DATA,
20
+ KEY,
21
+ SELECTORS extends { [name in string]: (...args: any[]) => any }
22
+ > = {
23
+ keyify: (props: PROPS) => KEY
24
+ name: string
25
+ selectorsBuilder: SelectorsBuilder<PROPS, DATA, SELECTORS>
26
+ getCacheForProps?: GetCacheForPropsFunction<PROPS, DATA, KEY>
27
+ getIndividualItemFetchPromise: (props: PROPS) => Promise<SectionedCacheFetchResult<DATA>>
28
+ getWarmingPromise: WarmingPromiseGetter<PROPS, DATA, KEY>
29
+ }
30
+ type AddBSStateArg<S extends {[name in string]: (...args: any[]) => any}> = {[name in keyof S]: (state: any, ...args: Parameters<S[name]>) => ReturnType<S[name]>};
31
+ export function create<PROPS, DATA, KEY, SELECTORS extends { [name in string]: (...args: any[]) => any }>(
32
+ args: SectionedCacheStoreArgs<PROPS, DATA, KEY, SELECTORS>
33
+ ) {
34
+ type ReduxSelectors = AddBSStateArg<SELECTORS>;
35
+ const {getCacheForProps = makeDefaultCacheForPropsGetter(), getIndividualItemFetchPromise, getWarmingPromise, keyify, name, selectorsBuilder} = args;
36
+ return {
37
+ name,
38
+ instantiate: () => {
39
+ const listeners = new Set<() => void>();
40
+
41
+ const storeChanged = () => {
42
+ for (const listener of listeners) {
43
+ listener();
44
+ }
45
+ }
46
+
47
+ const warmCache = (props: PROPS) => {
48
+ const warmingPromise = getWarmingPromise(storeChanged, props, getCacheForProps, keyify);
49
+ if (warmingPromise !== undefined) {
50
+ return use(warmingPromise);
51
+ }
52
+ }
53
+
54
+ const fetchItemContents = async (props: PROPS) => {
55
+ try {
56
+ return await getIndividualItemFetchPromise(props);
57
+ } catch (err) {
58
+ return ({error: true, data: (err?.toString() as string|undefined) ?? "EMPTY_RESPONSE"} as const) satisfies SectionedCacheFetchResult<DATA>;
59
+ }
60
+ }
61
+
62
+ const handleCacheMiss = (props: PROPS): Promise<SectionedCacheFetchResult<DATA>> => {
63
+ const key = keyify(props);
64
+ warmCache(props);
65
+ const cache = getCacheForProps(props);
66
+ const existingPromise = cache.get(key);
67
+ if (existingPromise !== null) {
68
+ return existingPromise;
69
+ }
70
+ const res = wrapPromise(fetchItemContents(props));
71
+ res.finally(storeChanged);
72
+ cache.set(key, res);
73
+ return res;
74
+ }
75
+
76
+ const selectors = selectorsBuilder(handleCacheMiss);
77
+
78
+ return {
79
+ getSelectors: () => selectors,
80
+ getSuspendSelectors: () => selectors,
81
+ getActions: () => ({}),
82
+ subscribe: (listener: () => void) => {
83
+ listeners.add(listener);
84
+ return () => listeners.delete(listener);
85
+ }
86
+ };
87
+ }
88
+ } satisfies ReturnType<typeof createReduxStore<{}, {}, ReduxSelectors>> as ReturnType<typeof createReduxStore<{}, {}, ReduxSelectors>>;
89
+ }
90
+
91
+ function makeDefaultCacheForPropsGetter<PROPS, DATA, KEY>() {
92
+ const cache: ReturnType<GetCacheForPropsFunction<PROPS, DATA, KEY>> = new TemporalLRUCache(10);
93
+ return () => cache;
94
+ }
95
+
96
+ type DropFirst<A extends any[]> = A extends [any, ...infer R] ? R : never;
97
+ type FetchWarmingDataArgs<PROPS, DATA, KEY> = [props: PROPS, getCacheForProps: GetCacheForPropsFunction<PROPS, DATA, KEY>, keyify: (props: PROPS) => KEY];
98
+ type MakeSimpleWarmingPromisesGetterArgs<PROPS, DATA, KEY> = {
99
+ warmingPromisesKeyify: (props: PROPS) => string|number|undefined, // Returning undefined short-circuits the rest of the function, skipping any waiting at all
100
+ fetchWarmingData: (...args: FetchWarmingDataArgs<PROPS, DATA, KEY>) => Promise<void>,
101
+ shouldWarm?: ((props: PROPS) => boolean)
102
+ };
103
+ export function makeSimpleWarmingPromisesGetter<PROPS, DATA, KEY>(
104
+ {warmingPromisesKeyify, fetchWarmingData, shouldWarm = () => true}: MakeSimpleWarmingPromisesGetterArgs<PROPS, DATA, KEY>
105
+ ): WarmingPromiseGetter<PROPS, DATA, KEY> {
106
+ const warmingPromises: Record<string|number, WrappedPromise<void>> = {};
107
+ return (storeChanged, props, ...args) => {
108
+ const key = warmingPromisesKeyify(props);
109
+ if (key === undefined) {
110
+ return;
111
+ }
112
+ if (!warmingPromises[key]) {
113
+ if (!shouldWarm(props)) {
114
+ return; // We don't want to go back to the server for the entire dataset unless we're going to be working with most of it
115
+ }
116
+ warmingPromises[key] = wrapPromise(fetchWarmingData(props, ...args).finally(storeChanged));
117
+ }
118
+ return warmingPromises[key];
119
+ };
120
+ }
@@ -47,3 +47,5 @@ export type WPTaxonomyQuery = {
47
47
  }|WPTaxonomyQueryFirstOrderClause;
48
48
  type WPTaxonomyQueryFirstOrderClause = {include_children?: boolean, operator?: 'AND'|'IN'|'NOT IN'|'EXISTS'|'NOT EXISTS'}&
49
49
  (({taxonomy: string}&({terms: number|number[], field?: 'term_id'}|{terms: string|string[], field: 'slug'|'name'}))|{taxonomy?: string, terms: number|number[], field: 'term_taxonomy_id'});
50
+
51
+ export type DbSource = {label: string, value: string, help?: string};
@@ -1,19 +1,3 @@
1
- .plauditPostFeaturedImageWithFocalPoint__wrapper {
2
- position: relative;
3
-
4
- &:hover .plauditPostFeaturedImageWithFocalPoint__toggle, &:hover .editor-post-featured-image__actions {
5
- opacity: 1;
6
- }
7
- }
8
- .plauditPostFeaturedImageWithFocalPoint__toggle {
9
- position: absolute;
10
- z-index: 10000;
11
- top: 0;
12
- right: 0;
13
- opacity: 0;
14
- padding: 8px;
15
- }
16
-
17
1
  .plaudit-snp-laid-out-properties-wrapper {
18
2
  min-width: 240px;
19
3
  }
@@ -1,4 +0,0 @@
1
- export declare function installPostFeaturedImageCardFocusTargeting(): void;
2
- export declare namespace installPostFeaturedImageCardFocusTargeting {
3
- let called: boolean;
4
- }
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.installPostFeaturedImageCardFocusTargeting = installPostFeaturedImageCardFocusTargeting;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const components_1 = require("@wordpress/components");
6
- const data_1 = require("@wordpress/data");
7
- const editor_1 = require("@wordpress/editor");
8
- const element_1 = require("@wordpress/element");
9
- const hooks_1 = require("@wordpress/hooks");
10
- const i18n_1 = require("@wordpress/i18n");
11
- function getMediaDetails(media, postId) {
12
- if (!media) {
13
- return {};
14
- }
15
- const sizes = (media?.media_details?.['sizes'] ?? {});
16
- const activeSize = sizes[getImageSize('large', media, postId)];
17
- if (activeSize !== undefined) {
18
- return {
19
- mediaWidth: activeSize.width,
20
- mediaHeight: activeSize.height,
21
- mediaSourceUrl: activeSize.source_url,
22
- };
23
- }
24
- // Use fallbackSize when defaultSize is not available.
25
- const fallbackSize = sizes[getImageSize('thumbnail', media, postId)];
26
- if (fallbackSize !== undefined) {
27
- return {
28
- mediaWidth: fallbackSize.width,
29
- mediaHeight: fallbackSize.height,
30
- mediaSourceUrl: fallbackSize.source_url,
31
- };
32
- }
33
- // Use full image size when fallbackSize and defaultSize are not available.
34
- return {
35
- mediaWidth: media.media_details['width'],
36
- mediaHeight: media.media_details['height'],
37
- mediaSourceUrl: media.source_url,
38
- };
39
- }
40
- function getLivePosition(selectFunction = data_1.select) {
41
- const { x = 50, y = 50 } = (selectFunction(editor_1.store).getEditedPostAttribute('meta')?.["plaudit_card-image_pos"] ?? {});
42
- return { x: x / 100, y: y / 100 };
43
- }
44
- function setLivePosition({ x, y }) {
45
- (0, data_1.dispatch)(editor_1.store)
46
- .editPost({
47
- meta: { "plaudit_card-image_pos": { x: Math.round(x * 100), y: Math.round(y * 100) } }
48
- })
49
- .catch(e => {
50
- console.error(e);
51
- });
52
- }
53
- function getRawLivePosition() {
54
- return { x: 50, y: 50, ...((0, data_1.select)(editor_1.store).getEditedPostAttribute('meta')?.["plaudit_card-image_pos"] ?? {}) };
55
- }
56
- function getImageSize(defaultSize, media, postId) {
57
- let filteredSize = (0, hooks_1.applyFilters)('editor.PostFeaturedImage.imageSize', defaultSize, media.id, postId);
58
- if (typeof filteredSize !== 'string') {
59
- console.error(`The 'editor.PostFeaturedImage.imageSize' filter returned a non-string size (${filteredSize}).`, `Using '${defaultSize}' as a fallback.`);
60
- return defaultSize;
61
- }
62
- return filteredSize;
63
- }
64
- function wrapPostFeaturedImage(OriginalComponent) {
65
- return (props) => {
66
- const [inFocusMode, setInFocusMode] = (0, element_1.useState)(false);
67
- // This useMemo call makes it so that we only update restorablePosition when the state changes.
68
- const restorablePosition = (0, element_1.useMemo)(getLivePosition, [inFocusMode]);
69
- const { mediaSourceUrl } = getMediaDetails(props.media, props.currentPostId);
70
- if (!mediaSourceUrl) {
71
- if ((0, data_1.select)(editor_1.store).getEditedPostAttribute('featured_media')) {
72
- return (0, jsx_runtime_1.jsx)(components_1.Spinner, {});
73
- }
74
- return (0, jsx_runtime_1.jsx)(OriginalComponent, { ...props });
75
- }
76
- else if (!inFocusMode) {
77
- return (0, jsx_runtime_1.jsx)(NotInFocusMode, { OriginalComponent: OriginalComponent, props: props, setInFocusMode: setInFocusMode });
78
- }
79
- return (0, jsx_runtime_1.jsx)(InFocusMode, { mediaSourceUrl: mediaSourceUrl, props: props, restorablePosition: restorablePosition, setInFocusMode: setInFocusMode });
80
- };
81
- }
82
- const NotInFocusMode = (0, element_1.memo)(({ OriginalComponent, props, setInFocusMode }) => {
83
- const { x, y } = getRawLivePosition();
84
- (0, element_1.useEffect)(() => {
85
- let sheet = document.adoptedStyleSheets.find(s => s.identifier === '__POST_FEATURED_IMAGE__');
86
- if (!sheet) {
87
- sheet = new CSSStyleSheet();
88
- sheet.identifier = '__POST_FEATURED_IMAGE__';
89
- }
90
- sheet.replace(`.plauditPostFeaturedImageWithFocalPoint__wrapper .editor-post-featured-image__preview-image {object-fit: ${x}% ${y}% !important;}`)
91
- .catch(e => {
92
- console.error(e);
93
- });
94
- return () => {
95
- const sheet = document.adoptedStyleSheets.findIndex(s => s.identifier === '__POST_FEATURED_IMAGE__');
96
- if (sheet) {
97
- document.adoptedStyleSheets.splice(sheet, 1);
98
- }
99
- };
100
- }, [x, y]);
101
- return (0, jsx_runtime_1.jsx)(editor_1.PostFeaturedImageCheck, { children: (0, jsx_runtime_1.jsxs)("div", { className: "plauditPostFeaturedImageWithFocalPoint__wrapper", children: [(0, jsx_runtime_1.jsx)("div", { className: "plauditPostFeaturedImageWithFocalPoint__toggle", children: (0, jsx_runtime_1.jsx)(components_1.Button, { onClick: (0, element_1.useCallback)(() => setInFocusMode(true), [setInFocusMode]), className: "editor-post-featured-image__action", text: (0, i18n_1.__)("Change Focal Point", 'plaudit') }) }), (0, jsx_runtime_1.jsx)(OriginalComponent, { ...props })] }) });
102
- });
103
- const InFocusMode = (0, element_1.memo)(({ mediaSourceUrl, props, restorablePosition, setInFocusMode }) => {
104
- // 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
105
- const { x, y } = (0, data_1.useSelect)(getLivePosition, []);
106
- const [position, setPosition] = (0, element_1.useState)({ x, y });
107
- (0, element_1.useEffect)(() => setPosition(getLivePosition()), [x, y]);
108
- return (0, jsx_runtime_1.jsxs)(editor_1.PostFeaturedImageCheck, { children: [props.noticeUI, (0, jsx_runtime_1.jsxs)("div", { className: "editor-post-featured-image", children: [(0, jsx_runtime_1.jsx)(components_1.FocalPointPicker, { onChange: (0, element_1.useCallback)(pos => {
109
- setPosition(pos);
110
- setLivePosition(pos);
111
- }, [setPosition]), url: mediaSourceUrl, value: position }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(components_1.Button, { text: (0, i18n_1.__)("Done", 'plaudit'), onClick: (0, element_1.useCallback)(() => setInFocusMode(false), [setInFocusMode]), variant: "primary" }), (0, jsx_runtime_1.jsx)(components_1.Button, { text: (0, i18n_1.__)('Cancel', 'plaudit'), onClick: (0, element_1.useCallback)(() => {
112
- setLivePosition(restorablePosition);
113
- setInFocusMode(false);
114
- }, [setInFocusMode]), isDestructive: true })] })] })] });
115
- });
116
- function installPostFeaturedImageCardFocusTargeting() {
117
- if (!installPostFeaturedImageCardFocusTargeting.called) {
118
- installPostFeaturedImageCardFocusTargeting.called = true;
119
- (0, hooks_1.addFilter)('editor.PostFeaturedImage', 'plaudit-gutenberg-api-extensions/inject-post-featured-image-card-focus-targeting', wrapPostFeaturedImage);
120
- }
121
- }
122
- (function (installPostFeaturedImageCardFocusTargeting) {
123
- installPostFeaturedImageCardFocusTargeting.called = false;
124
- })(installPostFeaturedImageCardFocusTargeting || (exports.installPostFeaturedImageCardFocusTargeting = installPostFeaturedImageCardFocusTargeting = {}));
125
- //# sourceMappingURL=post-featured-image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"post-featured-image.js","sourceRoot":"","sources":["../../src/editor/post-featured-image.tsx"],"names":[],"mappings":"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"}
@@ -1,161 +0,0 @@
1
- import {Button, FocalPointPicker, Spinner} from "@wordpress/components";
2
- import type {Attachment} from "@wordpress/core-data";
3
- import {dispatch, select, useSelect, type SelectFunction} from "@wordpress/data";
4
- import {PostFeaturedImageCheck, store as editorStore} from "@wordpress/editor";
5
- import {memo, useCallback, useEffect, useMemo, useState} from "@wordpress/element";
6
- import {addFilter, applyFilters} from "@wordpress/hooks";
7
- import {__} from "@wordpress/i18n";
8
-
9
- import type {ComponentType} from "react";
10
-
11
- type MediaDetailsArgs = Omit<Attachment, 'media_details'>&{media_details: Record<string, any>};
12
- function getMediaDetails(media: MediaDetailsArgs, postId: any) {
13
- if (!media) {
14
- return {};
15
- }
16
-
17
- const sizes = (media?.media_details?.['sizes'] ?? {}) as Record<string, {width: any, height: any, source_url: string}>;
18
-
19
- const activeSize = sizes[getImageSize('large', media, postId)];
20
- if (activeSize !== undefined) {
21
- return {
22
- mediaWidth: activeSize.width,
23
- mediaHeight: activeSize.height,
24
- mediaSourceUrl: activeSize.source_url,
25
- };
26
- }
27
-
28
- // Use fallbackSize when defaultSize is not available.
29
- const fallbackSize = sizes[getImageSize('thumbnail', media, postId)];
30
- if (fallbackSize !== undefined) {
31
- return {
32
- mediaWidth: fallbackSize.width,
33
- mediaHeight: fallbackSize.height,
34
- mediaSourceUrl: fallbackSize.source_url,
35
- };
36
- }
37
-
38
- // Use full image size when fallbackSize and defaultSize are not available.
39
- return {
40
- mediaWidth: media.media_details['width'],
41
- mediaHeight: media.media_details['height'],
42
- mediaSourceUrl: media.source_url,
43
- };
44
- }
45
-
46
- type Position = {x: number, y: number};
47
- function getLivePosition(selectFunction: SelectFunction = select): Position {
48
- const {x = 50, y = 50} = (selectFunction(editorStore).getEditedPostAttribute('meta')?.["plaudit_card-image_pos"] ?? {}) as Record<string, any>;
49
- return {x: x / 100, y: y / 100};
50
- }
51
- function setLivePosition({x, y}: Position) {
52
- dispatch(editorStore)
53
- .editPost({
54
- meta: {"plaudit_card-image_pos": {x: Math.round(x * 100), y: Math.round(y * 100)}}
55
- })
56
- .catch(e => {
57
- console.error(e);
58
- });
59
- }
60
-
61
- function getRawLivePosition() {
62
- return {x: 50, y: 50, ...((select(editorStore).getEditedPostAttribute('meta')?.["plaudit_card-image_pos"] ?? {}) as Partial<Position>)};
63
- }
64
-
65
- function getImageSize(defaultSize: string, media: MediaDetailsArgs, postId: any): string {
66
- let filteredSize = applyFilters('editor.PostFeaturedImage.imageSize', defaultSize, media.id, postId);
67
- if (typeof filteredSize !== 'string') {
68
- console.error(`The 'editor.PostFeaturedImage.imageSize' filter returned a non-string size (${filteredSize}).`, `Using '${defaultSize}' as a fallback.`);
69
- return defaultSize;
70
- }
71
- return filteredSize;
72
- }
73
-
74
- function wrapPostFeaturedImage(OriginalComponent: ComponentType) {
75
- return (props: Record<string, any>) => {
76
- const [inFocusMode, setInFocusMode] = useState(false);
77
- // This useMemo call makes it so that we only update restorablePosition when the state changes.
78
- const restorablePosition = useMemo(getLivePosition, [inFocusMode]);
79
-
80
- const {mediaSourceUrl} = getMediaDetails(props.media, props.currentPostId);
81
-
82
- if (!mediaSourceUrl) {
83
- if (select(editorStore).getEditedPostAttribute('featured_media')) {
84
- return <Spinner/>;
85
- }
86
- return <OriginalComponent {...props} />;
87
- } else if (!inFocusMode) {
88
- return <NotInFocusMode OriginalComponent={OriginalComponent} props={props} setInFocusMode={setInFocusMode} />;
89
- }
90
- return <InFocusMode mediaSourceUrl={mediaSourceUrl} props={props} restorablePosition={restorablePosition} setInFocusMode={setInFocusMode} />;
91
- };
92
- }
93
-
94
- type NotInFocusModeProps = {OriginalComponent: ComponentType, props: Record<string, any>, setInFocusMode(value: boolean): void};
95
- const NotInFocusMode = memo(({OriginalComponent, props, setInFocusMode}: NotInFocusModeProps) => {
96
- const {x, y} = getRawLivePosition();
97
- useEffect(() => {
98
- let sheet = document.adoptedStyleSheets.find(s => (s as any).identifier === '__POST_FEATURED_IMAGE__');
99
- if (!sheet) {
100
- sheet = new CSSStyleSheet();
101
- (sheet as any).identifier = '__POST_FEATURED_IMAGE__';
102
- }
103
- sheet.replace(`.plauditPostFeaturedImageWithFocalPoint__wrapper .editor-post-featured-image__preview-image {object-fit: ${x}% ${y}% !important;}`)
104
- .catch(e => {
105
- console.error(e);
106
- });
107
- return () => {
108
- const sheet = document.adoptedStyleSheets.findIndex(s => (s as any).identifier === '__POST_FEATURED_IMAGE__');
109
- if (sheet) {
110
- document.adoptedStyleSheets.splice(sheet, 1);
111
- }
112
- };
113
- }, [x, y]);
114
- return <PostFeaturedImageCheck>
115
- <div className="plauditPostFeaturedImageWithFocalPoint__wrapper">
116
- <div className="plauditPostFeaturedImageWithFocalPoint__toggle">
117
- <Button onClick={useCallback(() => setInFocusMode(true), [setInFocusMode])} className="editor-post-featured-image__action" text={__("Change Focal Point", 'plaudit')} />
118
- </div>
119
- <OriginalComponent {...props} />
120
- </div>
121
- </PostFeaturedImageCheck>;
122
- });
123
-
124
- type InFocusModeProps = {mediaSourceUrl: string, props: Record<string, any>, restorablePosition: Position, setInFocusMode(value: boolean): void};
125
- const InFocusMode = memo(({mediaSourceUrl, props, restorablePosition, setInFocusMode}: InFocusModeProps) => {
126
- // 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
127
- const {x, y} = useSelect(getLivePosition, []);
128
- const [position, setPosition] = useState({x, y});
129
- useEffect(() => setPosition(getLivePosition()), [x, y]);
130
-
131
- return <PostFeaturedImageCheck>
132
- {props.noticeUI}
133
- <div className="editor-post-featured-image">
134
- <FocalPointPicker
135
- onChange={useCallback(pos => {
136
- setPosition(pos);
137
- setLivePosition(pos);
138
- }, [setPosition])}
139
- url={mediaSourceUrl}
140
- value={position}
141
- />
142
- <div>
143
- <Button text={__("Done", 'plaudit')} onClick={useCallback(() => setInFocusMode(false), [setInFocusMode])} variant="primary" />
144
- <Button text={__('Cancel', 'plaudit')} onClick={useCallback(() => {
145
- setLivePosition(restorablePosition);
146
- setInFocusMode(false);
147
- }, [setInFocusMode])} isDestructive />
148
- </div>
149
- </div>
150
- </PostFeaturedImageCheck>;
151
- })
152
-
153
- export function installPostFeaturedImageCardFocusTargeting() {
154
- if (!installPostFeaturedImageCardFocusTargeting.called) {
155
- installPostFeaturedImageCardFocusTargeting.called = true;
156
- addFilter('editor.PostFeaturedImage', 'plaudit-gutenberg-api-extensions/inject-post-featured-image-card-focus-targeting', wrapPostFeaturedImage);
157
- }
158
- }
159
- export namespace installPostFeaturedImageCardFocusTargeting {
160
- export let called: boolean = false;
161
- }