@wordpress/block-editor 15.3.1-next.6870dfe5b.0 → 15.3.1-next.6f42e1382.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/autocompleters/block.js +2 -4
  2. package/build/autocompleters/block.js.map +1 -1
  3. package/build/components/block-list/index.js +3 -1
  4. package/build/components/block-list/index.js.map +1 -1
  5. package/build/components/block-switcher/index.js +10 -5
  6. package/build/components/block-switcher/index.js.map +1 -1
  7. package/build/components/block-toolbar/index.js +5 -2
  8. package/build/components/block-toolbar/index.js.map +1 -1
  9. package/build/components/block-tools/insertion-point.js +10 -0
  10. package/build/components/block-tools/insertion-point.js.map +1 -1
  11. package/build/components/block-variation-transforms/index.js +9 -5
  12. package/build/components/block-variation-transforms/index.js.map +1 -1
  13. package/build/components/link-control/search-item.js +30 -12
  14. package/build/components/link-control/search-item.js.map +1 -1
  15. package/build/store/private-selectors.js +7 -20
  16. package/build/store/private-selectors.js.map +1 -1
  17. package/build/store/reducer.js +60 -0
  18. package/build/store/reducer.js.map +1 -1
  19. package/build/store/selectors.js +16 -30
  20. package/build/store/selectors.js.map +1 -1
  21. package/build/store/utils.js +18 -0
  22. package/build/store/utils.js.map +1 -1
  23. package/build-module/autocompleters/block.js +3 -5
  24. package/build-module/autocompleters/block.js.map +1 -1
  25. package/build-module/components/block-list/index.js +3 -1
  26. package/build-module/components/block-list/index.js.map +1 -1
  27. package/build-module/components/block-switcher/index.js +10 -5
  28. package/build-module/components/block-switcher/index.js.map +1 -1
  29. package/build-module/components/block-toolbar/index.js +5 -2
  30. package/build-module/components/block-toolbar/index.js.map +1 -1
  31. package/build-module/components/block-tools/insertion-point.js +11 -1
  32. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  33. package/build-module/components/block-variation-transforms/index.js +9 -5
  34. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  35. package/build-module/components/link-control/search-item.js +30 -12
  36. package/build-module/components/link-control/search-item.js.map +1 -1
  37. package/build-module/store/private-selectors.js +7 -20
  38. package/build-module/store/private-selectors.js.map +1 -1
  39. package/build-module/store/reducer.js +60 -0
  40. package/build-module/store/reducer.js.map +1 -1
  41. package/build-module/store/selectors.js +16 -30
  42. package/build-module/store/selectors.js.map +1 -1
  43. package/build-module/store/utils.js +17 -0
  44. package/build-module/store/utils.js.map +1 -1
  45. package/build-style/style-rtl.css +0 -1
  46. package/build-style/style.css +0 -1
  47. package/package.json +34 -34
  48. package/src/autocompleters/block.js +6 -11
  49. package/src/components/block-list/index.js +7 -1
  50. package/src/components/block-switcher/index.js +8 -1
  51. package/src/components/block-toolbar/index.js +11 -5
  52. package/src/components/block-tools/insertion-point.js +19 -1
  53. package/src/components/block-variation-transforms/index.js +38 -27
  54. package/src/components/link-control/search-item.js +31 -12
  55. package/src/components/link-control/style.scss +0 -1
  56. package/src/components/link-control/test/index.js +14 -2
  57. package/src/store/private-selectors.js +10 -23
  58. package/src/store/reducer.js +105 -0
  59. package/src/store/selectors.js +38 -59
  60. package/src/store/test/reducer.js +107 -0
  61. package/src/store/test/selectors.js +65 -192
  62. package/src/store/utils.js +21 -0
@@ -2013,6 +2013,11 @@ function getDerivedBlockEditingModesForTree(state, isNavMode = false, treeClient
2013
2013
  syncedPatternClientIds.push(clientId);
2014
2014
  }
2015
2015
  });
2016
+ const contentOnlyTemplateLockedClientIds = Object.keys(state.blockListSettings).filter(clientId => state.blockListSettings[clientId]?.templateLock === 'contentOnly');
2017
+ // Use array.from for better back compat. Older versions of the iterator returned
2018
+ // from `keys()` didn't have the `filter` method.
2019
+ const unsyncedPatternClientIds = !!window?.__experimentalContentOnlyPatternInsertion ? Array.from(state.blocks.attributes.keys()).filter(clientId => state.blocks.attributes.get(clientId)?.metadata?.patternName) : [];
2020
+ const contentOnlyParents = [...contentOnlyTemplateLockedClientIds, ...unsyncedPatternClientIds];
2016
2021
  traverseBlockTree(state, treeClientId, block => {
2017
2022
  const {
2018
2023
  clientId,
@@ -2159,6 +2164,18 @@ function getDerivedBlockEditingModesForTree(state, isNavMode = false, treeClient
2159
2164
  derivedBlockEditingModes.set(clientId, 'disabled');
2160
2165
  }
2161
2166
  }
2167
+
2168
+ // Handle `templateLock=contentOnly` blocks and unsynced patterns.
2169
+ if (contentOnlyParents.length) {
2170
+ const hasContentOnlyParent = !!findParentInClientIdsList(state, clientId, contentOnlyParents);
2171
+ if (hasContentOnlyParent) {
2172
+ if (isContentBlock(blockName)) {
2173
+ derivedBlockEditingModes.set(clientId, 'contentOnly');
2174
+ } else {
2175
+ derivedBlockEditingModes.set(clientId, 'disabled');
2176
+ }
2177
+ }
2178
+ }
2162
2179
  });
2163
2180
  return derivedBlockEditingModes;
2164
2181
  }
@@ -2290,6 +2307,49 @@ export function withDerivedBlockEditingModes(reducer) {
2290
2307
  }
2291
2308
  break;
2292
2309
  }
2310
+ case 'UPDATE_BLOCK_LIST_SETTINGS':
2311
+ {
2312
+ // Handle the addition and removal of contentOnly template locked blocks.
2313
+ const addedBlocks = [];
2314
+ const removedClientIds = [];
2315
+ const updates = typeof action.clientId === 'string' ? {
2316
+ [action.clientId]: action.settings
2317
+ } : action.clientId;
2318
+ for (const clientId in updates) {
2319
+ const isNewContentOnlyBlock = state.blockListSettings[clientId]?.templateLock !== 'contentOnly' && nextState.blockListSettings[clientId]?.templateLock === 'contentOnly';
2320
+ const wasContentOnlyBlock = state.blockListSettings[clientId]?.templateLock === 'contentOnly' && nextState.blockListSettings[clientId]?.templateLock !== 'contentOnly';
2321
+ if (isNewContentOnlyBlock) {
2322
+ addedBlocks.push(nextState.blocks.tree.get(clientId));
2323
+ } else if (wasContentOnlyBlock) {
2324
+ removedClientIds.push(clientId);
2325
+ }
2326
+ }
2327
+ if (!addedBlocks.length && !removedClientIds.length) {
2328
+ break;
2329
+ }
2330
+ const nextDerivedBlockEditingModes = getDerivedBlockEditingModesUpdates({
2331
+ prevState: state,
2332
+ nextState,
2333
+ addedBlocks,
2334
+ removedClientIds,
2335
+ isNavMode: false
2336
+ });
2337
+ const nextDerivedNavModeBlockEditingModes = getDerivedBlockEditingModesUpdates({
2338
+ prevState: state,
2339
+ nextState,
2340
+ addedBlocks,
2341
+ removedClientIds,
2342
+ isNavMode: true
2343
+ });
2344
+ if (nextDerivedBlockEditingModes || nextDerivedNavModeBlockEditingModes) {
2345
+ return {
2346
+ ...nextState,
2347
+ derivedBlockEditingModes: nextDerivedBlockEditingModes !== null && nextDerivedBlockEditingModes !== void 0 ? nextDerivedBlockEditingModes : state.derivedBlockEditingModes,
2348
+ derivedNavModeBlockEditingModes: nextDerivedNavModeBlockEditingModes !== null && nextDerivedNavModeBlockEditingModes !== void 0 ? nextDerivedNavModeBlockEditingModes : state.derivedNavModeBlockEditingModes
2349
+ };
2350
+ }
2351
+ break;
2352
+ }
2293
2353
  case 'SET_BLOCK_EDITING_MODE':
2294
2354
  case 'UNSET_BLOCK_EDITING_MODE':
2295
2355
  case 'SET_HAS_CONTROLLED_INNER_BLOCKS':