@wordpress/customize-widgets 5.37.1-next.ba3aee3a2.0 → 5.38.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 5.38.0 (2026-01-16)
6
+
5
7
  ## 5.36.0 (2025-11-26)
6
8
 
7
9
  ## 5.35.0 (2025-11-12)
@@ -32,7 +32,7 @@ __export(use_sidebar_block_editor_exports, {
32
32
  default: () => useSidebarBlockEditor
33
33
  });
34
34
  module.exports = __toCommonJS(use_sidebar_block_editor_exports);
35
- var import_es6 = __toESM(require("fast-deep-equal/es6"));
35
+ var import_es6 = __toESM(require("fast-deep-equal/es6/index.js"));
36
36
  var import_element = require("@wordpress/element");
37
37
  var import_is_shallow_equal = require("@wordpress/is-shallow-equal");
38
38
  var import_widgets = require("@wordpress/widgets");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/sidebar-block-editor/use-sidebar-block-editor.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { isShallowEqual } from '@wordpress/is-shallow-equal';\nimport { getWidgetIdFromBlock, addWidgetIdToBlock } from '@wordpress/widgets';\n\n/**\n * Internal dependencies\n */\nimport { blockToWidget, widgetToBlock } from '../../utils';\n\nfunction widgetsToBlocks( widgets ) {\n\treturn widgets.map( ( widget ) => widgetToBlock( widget ) );\n}\n\nexport default function useSidebarBlockEditor( sidebar ) {\n\tconst [ blocks, setBlocks ] = useState( () =>\n\t\twidgetsToBlocks( sidebar.getWidgets() )\n\t);\n\n\tuseEffect( () => {\n\t\treturn sidebar.subscribe( ( prevWidgets, nextWidgets ) => {\n\t\t\tsetBlocks( ( prevBlocks ) => {\n\t\t\t\tconst prevWidgetsMap = new Map(\n\t\t\t\t\tprevWidgets.map( ( widget ) => [ widget.id, widget ] )\n\t\t\t\t);\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map( ( block ) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock( block ),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t] )\n\t\t\t\t);\n\n\t\t\t\tconst nextBlocks = nextWidgets.map( ( nextWidget ) => {\n\t\t\t\t\tconst prevWidget = prevWidgetsMap.get( nextWidget.id );\n\n\t\t\t\t\t// Bail out updates.\n\t\t\t\t\tif ( prevWidget && prevWidget === nextWidget ) {\n\t\t\t\t\t\treturn prevBlocksMap.get( nextWidget.id );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn widgetToBlock( nextWidget );\n\t\t\t\t} );\n\n\t\t\t\t// Bail out updates.\n\t\t\t\tif ( isShallowEqual( prevBlocks, nextBlocks ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\treturn nextBlocks;\n\t\t\t} );\n\t\t} );\n\t}, [ sidebar ] );\n\n\tconst onChangeBlocks = useCallback(\n\t\t( nextBlocks ) => {\n\t\t\tsetBlocks( ( prevBlocks ) => {\n\t\t\t\tif ( isShallowEqual( prevBlocks, nextBlocks ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map( ( block ) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock( block ),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t] )\n\t\t\t\t);\n\n\t\t\t\tconst nextWidgets = nextBlocks.map( ( nextBlock ) => {\n\t\t\t\t\tconst widgetId = getWidgetIdFromBlock( nextBlock );\n\n\t\t\t\t\t// Update existing widgets.\n\t\t\t\t\tif ( widgetId && prevBlocksMap.has( widgetId ) ) {\n\t\t\t\t\t\tconst prevBlock = prevBlocksMap.get( widgetId );\n\t\t\t\t\t\tconst prevWidget = sidebar.getWidget( widgetId );\n\n\t\t\t\t\t\t// Bail out updates by returning the previous widgets.\n\t\t\t\t\t\t// Deep equality is necessary until the block editor's internals changes.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfastDeepEqual( nextBlock, prevBlock ) &&\n\t\t\t\t\t\t\tprevWidget\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn prevWidget;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn blockToWidget( nextBlock, prevWidget );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add a new widget.\n\t\t\t\t\treturn blockToWidget( nextBlock );\n\t\t\t\t} );\n\n\t\t\t\t// Bail out updates if the updated widgets are the same.\n\t\t\t\tif ( isShallowEqual( sidebar.getWidgets(), nextWidgets ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\tconst addedWidgetIds = sidebar.setWidgets( nextWidgets );\n\n\t\t\t\treturn nextBlocks.reduce(\n\t\t\t\t\t( updatedNextBlocks, nextBlock, index ) => {\n\t\t\t\t\t\tconst addedWidgetId = addedWidgetIds[ index ];\n\n\t\t\t\t\t\tif ( addedWidgetId !== null ) {\n\t\t\t\t\t\t\t// Only create a new instance if necessary to prevent\n\t\t\t\t\t\t\t// the whole editor from re-rendering on every edit.\n\t\t\t\t\t\t\tif ( updatedNextBlocks === nextBlocks ) {\n\t\t\t\t\t\t\t\tupdatedNextBlocks = nextBlocks.slice();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tupdatedNextBlocks[ index ] = addWidgetIdToBlock(\n\t\t\t\t\t\t\t\tnextBlock,\n\t\t\t\t\t\t\t\taddedWidgetId\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn updatedNextBlocks;\n\t\t\t\t\t},\n\t\t\t\t\tnextBlocks\n\t\t\t\t);\n\t\t\t} );\n\t\t},\n\t\t[ sidebar ]\n\t);\n\n\treturn [ blocks, onChangeBlocks, onChangeBlocks ];\n}\n"],
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6/index.js';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { isShallowEqual } from '@wordpress/is-shallow-equal';\nimport { getWidgetIdFromBlock, addWidgetIdToBlock } from '@wordpress/widgets';\n\n/**\n * Internal dependencies\n */\nimport { blockToWidget, widgetToBlock } from '../../utils';\n\nfunction widgetsToBlocks( widgets ) {\n\treturn widgets.map( ( widget ) => widgetToBlock( widget ) );\n}\n\nexport default function useSidebarBlockEditor( sidebar ) {\n\tconst [ blocks, setBlocks ] = useState( () =>\n\t\twidgetsToBlocks( sidebar.getWidgets() )\n\t);\n\n\tuseEffect( () => {\n\t\treturn sidebar.subscribe( ( prevWidgets, nextWidgets ) => {\n\t\t\tsetBlocks( ( prevBlocks ) => {\n\t\t\t\tconst prevWidgetsMap = new Map(\n\t\t\t\t\tprevWidgets.map( ( widget ) => [ widget.id, widget ] )\n\t\t\t\t);\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map( ( block ) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock( block ),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t] )\n\t\t\t\t);\n\n\t\t\t\tconst nextBlocks = nextWidgets.map( ( nextWidget ) => {\n\t\t\t\t\tconst prevWidget = prevWidgetsMap.get( nextWidget.id );\n\n\t\t\t\t\t// Bail out updates.\n\t\t\t\t\tif ( prevWidget && prevWidget === nextWidget ) {\n\t\t\t\t\t\treturn prevBlocksMap.get( nextWidget.id );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn widgetToBlock( nextWidget );\n\t\t\t\t} );\n\n\t\t\t\t// Bail out updates.\n\t\t\t\tif ( isShallowEqual( prevBlocks, nextBlocks ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\treturn nextBlocks;\n\t\t\t} );\n\t\t} );\n\t}, [ sidebar ] );\n\n\tconst onChangeBlocks = useCallback(\n\t\t( nextBlocks ) => {\n\t\t\tsetBlocks( ( prevBlocks ) => {\n\t\t\t\tif ( isShallowEqual( prevBlocks, nextBlocks ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map( ( block ) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock( block ),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t] )\n\t\t\t\t);\n\n\t\t\t\tconst nextWidgets = nextBlocks.map( ( nextBlock ) => {\n\t\t\t\t\tconst widgetId = getWidgetIdFromBlock( nextBlock );\n\n\t\t\t\t\t// Update existing widgets.\n\t\t\t\t\tif ( widgetId && prevBlocksMap.has( widgetId ) ) {\n\t\t\t\t\t\tconst prevBlock = prevBlocksMap.get( widgetId );\n\t\t\t\t\t\tconst prevWidget = sidebar.getWidget( widgetId );\n\n\t\t\t\t\t\t// Bail out updates by returning the previous widgets.\n\t\t\t\t\t\t// Deep equality is necessary until the block editor's internals changes.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfastDeepEqual( nextBlock, prevBlock ) &&\n\t\t\t\t\t\t\tprevWidget\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn prevWidget;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn blockToWidget( nextBlock, prevWidget );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add a new widget.\n\t\t\t\t\treturn blockToWidget( nextBlock );\n\t\t\t\t} );\n\n\t\t\t\t// Bail out updates if the updated widgets are the same.\n\t\t\t\tif ( isShallowEqual( sidebar.getWidgets(), nextWidgets ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\tconst addedWidgetIds = sidebar.setWidgets( nextWidgets );\n\n\t\t\t\treturn nextBlocks.reduce(\n\t\t\t\t\t( updatedNextBlocks, nextBlock, index ) => {\n\t\t\t\t\t\tconst addedWidgetId = addedWidgetIds[ index ];\n\n\t\t\t\t\t\tif ( addedWidgetId !== null ) {\n\t\t\t\t\t\t\t// Only create a new instance if necessary to prevent\n\t\t\t\t\t\t\t// the whole editor from re-rendering on every edit.\n\t\t\t\t\t\t\tif ( updatedNextBlocks === nextBlocks ) {\n\t\t\t\t\t\t\t\tupdatedNextBlocks = nextBlocks.slice();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tupdatedNextBlocks[ index ] = addWidgetIdToBlock(\n\t\t\t\t\t\t\t\tnextBlock,\n\t\t\t\t\t\t\t\taddedWidgetId\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn updatedNextBlocks;\n\t\t\t\t\t},\n\t\t\t\t\tnextBlocks\n\t\t\t\t);\n\t\t\t} );\n\t\t},\n\t\t[ sidebar ]\n\t);\n\n\treturn [ blocks, onChangeBlocks, onChangeBlocks ];\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAA0B;AAK1B,qBAAiD;AACjD,8BAA+B;AAC/B,qBAAyD;AAKzD,mBAA6C;AAE7C,SAAS,gBAAiB,SAAU;AACnC,SAAO,QAAQ,IAAK,CAAE,eAAY,4BAAe,MAAO,CAAE;AAC3D;AAEe,SAAR,sBAAwC,SAAU;AACxD,QAAM,CAAE,QAAQ,SAAU,QAAI;AAAA,IAAU,MACvC,gBAAiB,QAAQ,WAAW,CAAE;AAAA,EACvC;AAEA,gCAAW,MAAM;AAChB,WAAO,QAAQ,UAAW,CAAE,aAAa,gBAAiB;AACzD,gBAAW,CAAE,eAAgB;AAC5B,cAAM,iBAAiB,IAAI;AAAA,UAC1B,YAAY,IAAK,CAAE,WAAY,CAAE,OAAO,IAAI,MAAO,CAAE;AAAA,QACtD;AACA,cAAM,gBAAgB,IAAI;AAAA,UACzB,WAAW,IAAK,CAAE,UAAW;AAAA,gBAC5B,qCAAsB,KAAM;AAAA,YAC5B;AAAA,UACD,CAAE;AAAA,QACH;AAEA,cAAM,aAAa,YAAY,IAAK,CAAE,eAAgB;AACrD,gBAAM,aAAa,eAAe,IAAK,WAAW,EAAG;AAGrD,cAAK,cAAc,eAAe,YAAa;AAC9C,mBAAO,cAAc,IAAK,WAAW,EAAG;AAAA,UACzC;AAEA,qBAAO,4BAAe,UAAW;AAAA,QAClC,CAAE;AAGF,gBAAK,wCAAgB,YAAY,UAAW,GAAI;AAC/C,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,MACR,CAAE;AAAA,IACH,CAAE;AAAA,EACH,GAAG,CAAE,OAAQ,CAAE;AAEf,QAAM,qBAAiB;AAAA,IACtB,CAAE,eAAgB;AACjB,gBAAW,CAAE,eAAgB;AAC5B,gBAAK,wCAAgB,YAAY,UAAW,GAAI;AAC/C,iBAAO;AAAA,QACR;AAEA,cAAM,gBAAgB,IAAI;AAAA,UACzB,WAAW,IAAK,CAAE,UAAW;AAAA,gBAC5B,qCAAsB,KAAM;AAAA,YAC5B;AAAA,UACD,CAAE;AAAA,QACH;AAEA,cAAM,cAAc,WAAW,IAAK,CAAE,cAAe;AACpD,gBAAM,eAAW,qCAAsB,SAAU;AAGjD,cAAK,YAAY,cAAc,IAAK,QAAS,GAAI;AAChD,kBAAM,YAAY,cAAc,IAAK,QAAS;AAC9C,kBAAM,aAAa,QAAQ,UAAW,QAAS;AAI/C,oBACC,WAAAA,SAAe,WAAW,SAAU,KACpC,YACC;AACD,qBAAO;AAAA,YACR;AAEA,uBAAO,4BAAe,WAAW,UAAW;AAAA,UAC7C;AAGA,qBAAO,4BAAe,SAAU;AAAA,QACjC,CAAE;AAGF,gBAAK,wCAAgB,QAAQ,WAAW,GAAG,WAAY,GAAI;AAC1D,iBAAO;AAAA,QACR;AAEA,cAAM,iBAAiB,QAAQ,WAAY,WAAY;AAEvD,eAAO,WAAW;AAAA,UACjB,CAAE,mBAAmB,WAAW,UAAW;AAC1C,kBAAM,gBAAgB,eAAgB,KAAM;AAE5C,gBAAK,kBAAkB,MAAO;AAG7B,kBAAK,sBAAsB,YAAa;AACvC,oCAAoB,WAAW,MAAM;AAAA,cACtC;AAEA,gCAAmB,KAAM,QAAI;AAAA,gBAC5B;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA,UACA;AAAA,QACD;AAAA,MACD,CAAE;AAAA,IACH;AAAA,IACA,CAAE,OAAQ;AAAA,EACX;AAEA,SAAO,CAAE,QAAQ,gBAAgB,cAAe;AACjD;",
6
6
  "names": ["fastDeepEqual"]
7
7
  }
@@ -1,5 +1,5 @@
1
1
  // packages/customize-widgets/src/components/sidebar-block-editor/use-sidebar-block-editor.js
2
- import fastDeepEqual from "fast-deep-equal/es6";
2
+ import fastDeepEqual from "fast-deep-equal/es6/index.js";
3
3
  import { useState, useEffect, useCallback } from "@wordpress/element";
4
4
  import { isShallowEqual } from "@wordpress/is-shallow-equal";
5
5
  import { getWidgetIdFromBlock, addWidgetIdToBlock } from "@wordpress/widgets";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/sidebar-block-editor/use-sidebar-block-editor.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { isShallowEqual } from '@wordpress/is-shallow-equal';\nimport { getWidgetIdFromBlock, addWidgetIdToBlock } from '@wordpress/widgets';\n\n/**\n * Internal dependencies\n */\nimport { blockToWidget, widgetToBlock } from '../../utils';\n\nfunction widgetsToBlocks( widgets ) {\n\treturn widgets.map( ( widget ) => widgetToBlock( widget ) );\n}\n\nexport default function useSidebarBlockEditor( sidebar ) {\n\tconst [ blocks, setBlocks ] = useState( () =>\n\t\twidgetsToBlocks( sidebar.getWidgets() )\n\t);\n\n\tuseEffect( () => {\n\t\treturn sidebar.subscribe( ( prevWidgets, nextWidgets ) => {\n\t\t\tsetBlocks( ( prevBlocks ) => {\n\t\t\t\tconst prevWidgetsMap = new Map(\n\t\t\t\t\tprevWidgets.map( ( widget ) => [ widget.id, widget ] )\n\t\t\t\t);\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map( ( block ) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock( block ),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t] )\n\t\t\t\t);\n\n\t\t\t\tconst nextBlocks = nextWidgets.map( ( nextWidget ) => {\n\t\t\t\t\tconst prevWidget = prevWidgetsMap.get( nextWidget.id );\n\n\t\t\t\t\t// Bail out updates.\n\t\t\t\t\tif ( prevWidget && prevWidget === nextWidget ) {\n\t\t\t\t\t\treturn prevBlocksMap.get( nextWidget.id );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn widgetToBlock( nextWidget );\n\t\t\t\t} );\n\n\t\t\t\t// Bail out updates.\n\t\t\t\tif ( isShallowEqual( prevBlocks, nextBlocks ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\treturn nextBlocks;\n\t\t\t} );\n\t\t} );\n\t}, [ sidebar ] );\n\n\tconst onChangeBlocks = useCallback(\n\t\t( nextBlocks ) => {\n\t\t\tsetBlocks( ( prevBlocks ) => {\n\t\t\t\tif ( isShallowEqual( prevBlocks, nextBlocks ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map( ( block ) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock( block ),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t] )\n\t\t\t\t);\n\n\t\t\t\tconst nextWidgets = nextBlocks.map( ( nextBlock ) => {\n\t\t\t\t\tconst widgetId = getWidgetIdFromBlock( nextBlock );\n\n\t\t\t\t\t// Update existing widgets.\n\t\t\t\t\tif ( widgetId && prevBlocksMap.has( widgetId ) ) {\n\t\t\t\t\t\tconst prevBlock = prevBlocksMap.get( widgetId );\n\t\t\t\t\t\tconst prevWidget = sidebar.getWidget( widgetId );\n\n\t\t\t\t\t\t// Bail out updates by returning the previous widgets.\n\t\t\t\t\t\t// Deep equality is necessary until the block editor's internals changes.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfastDeepEqual( nextBlock, prevBlock ) &&\n\t\t\t\t\t\t\tprevWidget\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn prevWidget;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn blockToWidget( nextBlock, prevWidget );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add a new widget.\n\t\t\t\t\treturn blockToWidget( nextBlock );\n\t\t\t\t} );\n\n\t\t\t\t// Bail out updates if the updated widgets are the same.\n\t\t\t\tif ( isShallowEqual( sidebar.getWidgets(), nextWidgets ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\tconst addedWidgetIds = sidebar.setWidgets( nextWidgets );\n\n\t\t\t\treturn nextBlocks.reduce(\n\t\t\t\t\t( updatedNextBlocks, nextBlock, index ) => {\n\t\t\t\t\t\tconst addedWidgetId = addedWidgetIds[ index ];\n\n\t\t\t\t\t\tif ( addedWidgetId !== null ) {\n\t\t\t\t\t\t\t// Only create a new instance if necessary to prevent\n\t\t\t\t\t\t\t// the whole editor from re-rendering on every edit.\n\t\t\t\t\t\t\tif ( updatedNextBlocks === nextBlocks ) {\n\t\t\t\t\t\t\t\tupdatedNextBlocks = nextBlocks.slice();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tupdatedNextBlocks[ index ] = addWidgetIdToBlock(\n\t\t\t\t\t\t\t\tnextBlock,\n\t\t\t\t\t\t\t\taddedWidgetId\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn updatedNextBlocks;\n\t\t\t\t\t},\n\t\t\t\t\tnextBlocks\n\t\t\t\t);\n\t\t\t} );\n\t\t},\n\t\t[ sidebar ]\n\t);\n\n\treturn [ blocks, onChangeBlocks, onChangeBlocks ];\n}\n"],
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6/index.js';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, useCallback } from '@wordpress/element';\nimport { isShallowEqual } from '@wordpress/is-shallow-equal';\nimport { getWidgetIdFromBlock, addWidgetIdToBlock } from '@wordpress/widgets';\n\n/**\n * Internal dependencies\n */\nimport { blockToWidget, widgetToBlock } from '../../utils';\n\nfunction widgetsToBlocks( widgets ) {\n\treturn widgets.map( ( widget ) => widgetToBlock( widget ) );\n}\n\nexport default function useSidebarBlockEditor( sidebar ) {\n\tconst [ blocks, setBlocks ] = useState( () =>\n\t\twidgetsToBlocks( sidebar.getWidgets() )\n\t);\n\n\tuseEffect( () => {\n\t\treturn sidebar.subscribe( ( prevWidgets, nextWidgets ) => {\n\t\t\tsetBlocks( ( prevBlocks ) => {\n\t\t\t\tconst prevWidgetsMap = new Map(\n\t\t\t\t\tprevWidgets.map( ( widget ) => [ widget.id, widget ] )\n\t\t\t\t);\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map( ( block ) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock( block ),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t] )\n\t\t\t\t);\n\n\t\t\t\tconst nextBlocks = nextWidgets.map( ( nextWidget ) => {\n\t\t\t\t\tconst prevWidget = prevWidgetsMap.get( nextWidget.id );\n\n\t\t\t\t\t// Bail out updates.\n\t\t\t\t\tif ( prevWidget && prevWidget === nextWidget ) {\n\t\t\t\t\t\treturn prevBlocksMap.get( nextWidget.id );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn widgetToBlock( nextWidget );\n\t\t\t\t} );\n\n\t\t\t\t// Bail out updates.\n\t\t\t\tif ( isShallowEqual( prevBlocks, nextBlocks ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\treturn nextBlocks;\n\t\t\t} );\n\t\t} );\n\t}, [ sidebar ] );\n\n\tconst onChangeBlocks = useCallback(\n\t\t( nextBlocks ) => {\n\t\t\tsetBlocks( ( prevBlocks ) => {\n\t\t\t\tif ( isShallowEqual( prevBlocks, nextBlocks ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\tconst prevBlocksMap = new Map(\n\t\t\t\t\tprevBlocks.map( ( block ) => [\n\t\t\t\t\t\tgetWidgetIdFromBlock( block ),\n\t\t\t\t\t\tblock,\n\t\t\t\t\t] )\n\t\t\t\t);\n\n\t\t\t\tconst nextWidgets = nextBlocks.map( ( nextBlock ) => {\n\t\t\t\t\tconst widgetId = getWidgetIdFromBlock( nextBlock );\n\n\t\t\t\t\t// Update existing widgets.\n\t\t\t\t\tif ( widgetId && prevBlocksMap.has( widgetId ) ) {\n\t\t\t\t\t\tconst prevBlock = prevBlocksMap.get( widgetId );\n\t\t\t\t\t\tconst prevWidget = sidebar.getWidget( widgetId );\n\n\t\t\t\t\t\t// Bail out updates by returning the previous widgets.\n\t\t\t\t\t\t// Deep equality is necessary until the block editor's internals changes.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tfastDeepEqual( nextBlock, prevBlock ) &&\n\t\t\t\t\t\t\tprevWidget\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn prevWidget;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn blockToWidget( nextBlock, prevWidget );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Add a new widget.\n\t\t\t\t\treturn blockToWidget( nextBlock );\n\t\t\t\t} );\n\n\t\t\t\t// Bail out updates if the updated widgets are the same.\n\t\t\t\tif ( isShallowEqual( sidebar.getWidgets(), nextWidgets ) ) {\n\t\t\t\t\treturn prevBlocks;\n\t\t\t\t}\n\n\t\t\t\tconst addedWidgetIds = sidebar.setWidgets( nextWidgets );\n\n\t\t\t\treturn nextBlocks.reduce(\n\t\t\t\t\t( updatedNextBlocks, nextBlock, index ) => {\n\t\t\t\t\t\tconst addedWidgetId = addedWidgetIds[ index ];\n\n\t\t\t\t\t\tif ( addedWidgetId !== null ) {\n\t\t\t\t\t\t\t// Only create a new instance if necessary to prevent\n\t\t\t\t\t\t\t// the whole editor from re-rendering on every edit.\n\t\t\t\t\t\t\tif ( updatedNextBlocks === nextBlocks ) {\n\t\t\t\t\t\t\t\tupdatedNextBlocks = nextBlocks.slice();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tupdatedNextBlocks[ index ] = addWidgetIdToBlock(\n\t\t\t\t\t\t\t\tnextBlock,\n\t\t\t\t\t\t\t\taddedWidgetId\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn updatedNextBlocks;\n\t\t\t\t\t},\n\t\t\t\t\tnextBlocks\n\t\t\t\t);\n\t\t\t} );\n\t\t},\n\t\t[ sidebar ]\n\t);\n\n\treturn [ blocks, onChangeBlocks, onChangeBlocks ];\n}\n"],
5
5
  "mappings": ";AAGA,OAAO,mBAAmB;AAK1B,SAAS,UAAU,WAAW,mBAAmB;AACjD,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB,0BAA0B;AAKzD,SAAS,eAAe,qBAAqB;AAE7C,SAAS,gBAAiB,SAAU;AACnC,SAAO,QAAQ,IAAK,CAAE,WAAY,cAAe,MAAO,CAAE;AAC3D;AAEe,SAAR,sBAAwC,SAAU;AACxD,QAAM,CAAE,QAAQ,SAAU,IAAI;AAAA,IAAU,MACvC,gBAAiB,QAAQ,WAAW,CAAE;AAAA,EACvC;AAEA,YAAW,MAAM;AAChB,WAAO,QAAQ,UAAW,CAAE,aAAa,gBAAiB;AACzD,gBAAW,CAAE,eAAgB;AAC5B,cAAM,iBAAiB,IAAI;AAAA,UAC1B,YAAY,IAAK,CAAE,WAAY,CAAE,OAAO,IAAI,MAAO,CAAE;AAAA,QACtD;AACA,cAAM,gBAAgB,IAAI;AAAA,UACzB,WAAW,IAAK,CAAE,UAAW;AAAA,YAC5B,qBAAsB,KAAM;AAAA,YAC5B;AAAA,UACD,CAAE;AAAA,QACH;AAEA,cAAM,aAAa,YAAY,IAAK,CAAE,eAAgB;AACrD,gBAAM,aAAa,eAAe,IAAK,WAAW,EAAG;AAGrD,cAAK,cAAc,eAAe,YAAa;AAC9C,mBAAO,cAAc,IAAK,WAAW,EAAG;AAAA,UACzC;AAEA,iBAAO,cAAe,UAAW;AAAA,QAClC,CAAE;AAGF,YAAK,eAAgB,YAAY,UAAW,GAAI;AAC/C,iBAAO;AAAA,QACR;AAEA,eAAO;AAAA,MACR,CAAE;AAAA,IACH,CAAE;AAAA,EACH,GAAG,CAAE,OAAQ,CAAE;AAEf,QAAM,iBAAiB;AAAA,IACtB,CAAE,eAAgB;AACjB,gBAAW,CAAE,eAAgB;AAC5B,YAAK,eAAgB,YAAY,UAAW,GAAI;AAC/C,iBAAO;AAAA,QACR;AAEA,cAAM,gBAAgB,IAAI;AAAA,UACzB,WAAW,IAAK,CAAE,UAAW;AAAA,YAC5B,qBAAsB,KAAM;AAAA,YAC5B;AAAA,UACD,CAAE;AAAA,QACH;AAEA,cAAM,cAAc,WAAW,IAAK,CAAE,cAAe;AACpD,gBAAM,WAAW,qBAAsB,SAAU;AAGjD,cAAK,YAAY,cAAc,IAAK,QAAS,GAAI;AAChD,kBAAM,YAAY,cAAc,IAAK,QAAS;AAC9C,kBAAM,aAAa,QAAQ,UAAW,QAAS;AAI/C,gBACC,cAAe,WAAW,SAAU,KACpC,YACC;AACD,qBAAO;AAAA,YACR;AAEA,mBAAO,cAAe,WAAW,UAAW;AAAA,UAC7C;AAGA,iBAAO,cAAe,SAAU;AAAA,QACjC,CAAE;AAGF,YAAK,eAAgB,QAAQ,WAAW,GAAG,WAAY,GAAI;AAC1D,iBAAO;AAAA,QACR;AAEA,cAAM,iBAAiB,QAAQ,WAAY,WAAY;AAEvD,eAAO,WAAW;AAAA,UACjB,CAAE,mBAAmB,WAAW,UAAW;AAC1C,kBAAM,gBAAgB,eAAgB,KAAM;AAE5C,gBAAK,kBAAkB,MAAO;AAG7B,kBAAK,sBAAsB,YAAa;AACvC,oCAAoB,WAAW,MAAM;AAAA,cACtC;AAEA,gCAAmB,KAAM,IAAI;AAAA,gBAC5B;AAAA,gBACA;AAAA,cACD;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA,UACA;AAAA,QACD;AAAA,MACD,CAAE;AAAA,IACH;AAAA,IACA,CAAE,OAAQ;AAAA,EACX;AAEA,SAAO,CAAE,QAAQ,gBAAgB,cAAe;AACjD;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/customize-widgets",
3
- "version": "5.37.1-next.ba3aee3a2.0",
3
+ "version": "5.38.0",
4
4
  "description": "Widgets blocks in Customizer Module for WordPress.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -40,27 +40,27 @@
40
40
  "react-native": "src/index",
41
41
  "wpScript": true,
42
42
  "dependencies": {
43
- "@wordpress/base-styles": "^6.13.2-next.ba3aee3a2.0",
44
- "@wordpress/block-editor": "^15.10.1-next.ba3aee3a2.0",
45
- "@wordpress/block-library": "^9.37.2-next.ba3aee3a2.0",
46
- "@wordpress/blocks": "^15.10.1-next.ba3aee3a2.0",
47
- "@wordpress/components": "^32.0.1-next.ba3aee3a2.0",
48
- "@wordpress/compose": "^7.37.1-next.ba3aee3a2.0",
49
- "@wordpress/core-data": "^7.37.1-next.ba3aee3a2.0",
50
- "@wordpress/data": "^10.37.1-next.ba3aee3a2.0",
51
- "@wordpress/dom": "^4.37.1-next.ba3aee3a2.0",
52
- "@wordpress/element": "^6.37.1-next.ba3aee3a2.0",
53
- "@wordpress/hooks": "^4.37.1-next.ba3aee3a2.0",
54
- "@wordpress/i18n": "^6.10.1-next.ba3aee3a2.0",
55
- "@wordpress/icons": "^11.4.1-next.ba3aee3a2.0",
56
- "@wordpress/interface": "^9.22.1-next.ba3aee3a2.0",
57
- "@wordpress/is-shallow-equal": "^5.37.1-next.ba3aee3a2.0",
58
- "@wordpress/keyboard-shortcuts": "^5.37.1-next.ba3aee3a2.0",
59
- "@wordpress/keycodes": "^4.38.1-next.ba3aee3a2.0",
60
- "@wordpress/media-utils": "^5.37.1-next.ba3aee3a2.0",
61
- "@wordpress/preferences": "^4.37.1-next.ba3aee3a2.0",
62
- "@wordpress/private-apis": "^1.37.1-next.ba3aee3a2.0",
63
- "@wordpress/widgets": "^4.37.1-next.ba3aee3a2.0",
43
+ "@wordpress/base-styles": "^6.14.0",
44
+ "@wordpress/block-editor": "^15.11.0",
45
+ "@wordpress/block-library": "^9.38.0",
46
+ "@wordpress/blocks": "^15.11.0",
47
+ "@wordpress/components": "^32.0.0",
48
+ "@wordpress/compose": "^7.38.0",
49
+ "@wordpress/core-data": "^7.38.0",
50
+ "@wordpress/data": "^10.38.0",
51
+ "@wordpress/dom": "^4.38.0",
52
+ "@wordpress/element": "^6.38.0",
53
+ "@wordpress/hooks": "^4.38.0",
54
+ "@wordpress/i18n": "^6.11.0",
55
+ "@wordpress/icons": "^11.5.0",
56
+ "@wordpress/interface": "^9.23.0",
57
+ "@wordpress/is-shallow-equal": "^5.38.0",
58
+ "@wordpress/keyboard-shortcuts": "^5.38.0",
59
+ "@wordpress/keycodes": "^4.38.0",
60
+ "@wordpress/media-utils": "^5.38.0",
61
+ "@wordpress/preferences": "^4.38.0",
62
+ "@wordpress/private-apis": "^1.38.0",
63
+ "@wordpress/widgets": "^4.38.0",
64
64
  "clsx": "^2.1.1",
65
65
  "fast-deep-equal": "^3.1.3"
66
66
  },
@@ -71,5 +71,5 @@
71
71
  "publishConfig": {
72
72
  "access": "public"
73
73
  },
74
- "gitHead": "67d2e486fcd40c753591cf911ca0659132f519ca"
74
+ "gitHead": "50c4c0f51e4797c217946ce42adfaa5eb026f33f"
75
75
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import fastDeepEqual from 'fast-deep-equal/es6';
4
+ import fastDeepEqual from 'fast-deep-equal/es6/index.js';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies