@wordpress/edit-widgets 4.5.0 → 4.8.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 (45) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/blocks/widget-area/edit/inner-blocks.js.map +1 -1
  3. package/build/components/header/index.js.map +1 -1
  4. package/build/components/layout/interface.js.map +1 -1
  5. package/build/components/save-button/index.js.map +1 -1
  6. package/build/components/secondary-sidebar/index.js.map +1 -1
  7. package/build/components/sidebar/index.js.map +1 -1
  8. package/build/components/widget-areas-block-editor-provider/index.js +12 -14
  9. package/build/components/widget-areas-block-editor-provider/index.js.map +1 -1
  10. package/build/filters/move-to-widget-area.js.map +1 -1
  11. package/build/hooks/use-last-selected-widget-area.js.map +1 -1
  12. package/build/hooks/use-widget-library-insertion-point.js.map +1 -1
  13. package/build/store/actions.js.map +1 -1
  14. package/build/store/resolvers.js.map +1 -1
  15. package/build/store/selectors.js.map +1 -1
  16. package/build-module/blocks/widget-area/edit/inner-blocks.js.map +1 -1
  17. package/build-module/components/header/index.js.map +1 -1
  18. package/build-module/components/layout/interface.js.map +1 -1
  19. package/build-module/components/save-button/index.js.map +1 -1
  20. package/build-module/components/secondary-sidebar/index.js.map +1 -1
  21. package/build-module/components/sidebar/index.js.map +1 -1
  22. package/build-module/components/widget-areas-block-editor-provider/index.js +12 -13
  23. package/build-module/components/widget-areas-block-editor-provider/index.js.map +1 -1
  24. package/build-module/filters/move-to-widget-area.js.map +1 -1
  25. package/build-module/hooks/use-last-selected-widget-area.js.map +1 -1
  26. package/build-module/hooks/use-widget-library-insertion-point.js.map +1 -1
  27. package/build-module/store/actions.js.map +1 -1
  28. package/build-module/store/resolvers.js.map +1 -1
  29. package/build-module/store/selectors.js.map +1 -1
  30. package/build-style/style-rtl.css +4 -6
  31. package/build-style/style.css +4 -6
  32. package/package.json +26 -26
  33. package/src/blocks/widget-area/edit/inner-blocks.js +2 -1
  34. package/src/components/header/index.js +4 -8
  35. package/src/components/layout/interface.js +2 -5
  36. package/src/components/save-button/index.js +2 -3
  37. package/src/components/secondary-sidebar/index.js +2 -3
  38. package/src/components/sidebar/index.js +2 -5
  39. package/src/components/widget-areas-block-editor-provider/index.js +2 -9
  40. package/src/filters/move-to-widget-area.js +19 -24
  41. package/src/hooks/use-last-selected-widget-area.js +4 -6
  42. package/src/hooks/use-widget-library-insertion-point.js +2 -3
  43. package/src/store/actions.js +262 -258
  44. package/src/store/resolvers.js +69 -60
  45. package/src/store/selectors.js +22 -22
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/edit-widgets/src/store/selectors.js"],"names":["keyBy","createRegistrySelector","getWidgetIdFromBlock","store","coreStore","blockEditorStore","buildWidgetsQuery","buildWidgetAreasQuery","buildWidgetAreaPostId","KIND","POST_TYPE","WIDGET_AREA_ENTITY_TYPE","STORE_NAME","editWidgetsStoreName","getWidgets","select","widgets","getEntityRecords","getWidget","state","id","getWidgetAreas","query","getWidgetAreaForWidgetId","widgetId","widgetAreas","find","widgetArea","post","getEditedEntityRecord","blockWidgetIds","blocks","map","block","includes","getParentWidgetAreaBlock","clientId","getBlock","getBlockName","getBlockParents","blockParents","widgetAreaClientId","parentClientId","getEditedWidgetAreas","ids","filter","hasEditsForEntityRecord","getReferenceWidgetBlocks","referenceWidgetName","results","_widgetArea","name","attributes","push","isSavingWidgetAreas","widgetAreasIds","isSaving","isSavingEntityRecord","widgetIds","Object","keys","undefined","getIsWidgetAreaOpen","widgetAreasOpenState","isInserterOpened","blockInserterPanel","__experimentalGetInsertionPoint","rootClientId","insertionIndex","canInsertBlockInWidgetArea","blockName","getBlocks","firstWidgetArea","canInsertBlockType","isListViewOpened","listViewPanel"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAT,QAAsB,QAAtB;AAEA;AACA;AACA;;AACA,SAASC,sBAAT,QAAuC,iBAAvC;AACA,SAASC,oBAAT,QAAqC,oBAArC;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASD,KAAK,IAAIE,gBAAlB,QAA0C,yBAA1C;AAEA;AACA;AACA;;AACA,SACCC,iBADD,EAECC,qBAFD,EAGCC,qBAHD,EAICC,IAJD,EAKCC,SALD,EAMCC,uBAND,QAOO,SAPP;AAQA,SAASC,UAAU,IAAIC,oBAAvB,QAAmD,aAAnD;AAEA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,UAAU,GAAGb,sBAAsB,CAAIc,MAAF,IAAc,MAAM;AACrE,QAAMC,OAAO,GAAGD,MAAM,CAAEX,SAAF,CAAN,CAAoBa,gBAApB,CACf,MADe,EAEf,QAFe,EAGfX,iBAAiB,EAHF,CAAhB;AAMA,SAAON,KAAK,CAAEgB,OAAF,EAAW,IAAX,CAAZ;AACA,CAR+C,CAAzC;AAUP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAME,SAAS,GAAGjB,sBAAsB,CAC5Cc,MAAF,IAAc,CAAEI,KAAF,EAASC,EAAT,KAAiB;AAC9B,QAAMJ,OAAO,GAAGD,MAAM,CAAEF,oBAAF,CAAN,CAA+BC,UAA/B,EAAhB;AACA,SAAOE,OAAO,CAAEI,EAAF,CAAd;AACA,CAJ6C,CAAxC;AAOP;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,cAAc,GAAGpB,sBAAsB,CAAIc,MAAF,IAAc,MAAM;AACzE,QAAMO,KAAK,GAAGf,qBAAqB,EAAnC;AACA,SAAOQ,MAAM,CAAEX,SAAF,CAAN,CAAoBa,gBAApB,CACNR,IADM,EAENE,uBAFM,EAGNW,KAHM,CAAP;AAKA,CAPmD,CAA7C;AASP;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,wBAAwB,GAAGtB,sBAAsB,CAC3Dc,MAAF,IAAc,CAAEI,KAAF,EAASK,QAAT,KAAuB;AACpC,QAAMC,WAAW,GAAGV,MAAM,CAAEF,oBAAF,CAAN,CAA+BQ,cAA/B,EAApB;AACA,SAAOI,WAAW,CAACC,IAAZ,CAAoBC,UAAF,IAAkB;AAC1C,UAAMC,IAAI,GAAGb,MAAM,CAAEX,SAAF,CAAN,CAAoByB,qBAApB,CACZpB,IADY,EAEZC,SAFY,EAGZF,qBAAqB,CAAEmB,UAAU,CAACP,EAAb,CAHT,CAAb;AAKA,UAAMU,cAAc,GAAGF,IAAI,CAACG,MAAL,CAAYC,GAAZ,CAAmBC,KAAF,IACvC/B,oBAAoB,CAAE+B,KAAF,CADE,CAAvB;AAGA,WAAOH,cAAc,CAACI,QAAf,CAAyBV,QAAzB,CAAP;AACA,GAVM,CAAP;AAWA,CAd4D,CAAvD;AAiBP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMW,wBAAwB,GAAGlC,sBAAsB,CAC3Dc,MAAF,IAAc,CAAEI,KAAF,EAASiB,QAAT,KAAuB;AACpC,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,YAAZ;AAA0BC,IAAAA;AAA1B,MAA8CxB,MAAM,CACzDV,gBADyD,CAA1D;AAGA,QAAMmC,YAAY,GAAGD,eAAe,CAAEH,QAAF,CAApC;AACA,QAAMK,kBAAkB,GAAGD,YAAY,CAACd,IAAb,CACxBgB,cAAF,IACCJ,YAAY,CAAEI,cAAF,CAAZ,KAAmC,kBAFV,CAA3B;AAIA,SAAOL,QAAQ,CAAEI,kBAAF,CAAf;AACA,CAX4D,CAAvD;AAcP;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAME,oBAAoB,GAAG1C,sBAAsB,CACvDc,MAAF,IAAc,CAAEI,KAAF,EAASyB,GAAT,KAAkB;AAC/B,MAAInB,WAAW,GAAGV,MAAM,CAAEF,oBAAF,CAAN,CAA+BQ,cAA/B,EAAlB;;AACA,MAAK,CAAEI,WAAP,EAAqB;AACpB,WAAO,EAAP;AACA;;AACD,MAAKmB,GAAL,EAAW;AACVnB,IAAAA,WAAW,GAAGA,WAAW,CAACoB,MAAZ,CAAoB;AAAA,UAAE;AAAEzB,QAAAA;AAAF,OAAF;AAAA,aACjCwB,GAAG,CAACV,QAAJ,CAAcd,EAAd,CADiC;AAAA,KAApB,CAAd;AAGA;;AACD,SAAOK,WAAW,CAChBoB,MADK,CACG;AAAA,QAAE;AAAEzB,MAAAA;AAAF,KAAF;AAAA,WACRL,MAAM,CAAEX,SAAF,CAAN,CAAoB0C,uBAApB,CACCrC,IADD,EAECC,SAFD,EAGCF,qBAAqB,CAAEY,EAAF,CAHtB,CADQ;AAAA,GADH,EAQLY,GARK,CAQA;AAAA,QAAE;AAAEZ,MAAAA;AAAF,KAAF;AAAA,WACLL,MAAM,CAAEX,SAAF,CAAN,CAAoByB,qBAApB,CACCpB,IADD,EAECE,uBAFD,EAGCS,EAHD,CADK;AAAA,GARA,CAAP;AAeA,CA1BwD,CAAnD;AA6BP;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAM2B,wBAAwB,GAAG9C,sBAAsB,CAC3Dc,MAAF,IAAc,UAAEI,KAAF,EAAyC;AAAA,MAAhC6B,mBAAgC,uEAAV,IAAU;AACtD,QAAMC,OAAO,GAAG,EAAhB;AACA,QAAMxB,WAAW,GAAGV,MAAM,CAAEF,oBAAF,CAAN,CAA+BQ,cAA/B,EAApB;;AACA,OAAM,MAAM6B,WAAZ,IAA2BzB,WAA3B,EAAyC;AACxC,UAAMG,IAAI,GAAGb,MAAM,CAAEX,SAAF,CAAN,CAAoByB,qBAApB,CACZpB,IADY,EAEZC,SAFY,EAGZF,qBAAqB,CAAE0C,WAAW,CAAC9B,EAAd,CAHT,CAAb;;AAKA,SAAM,MAAMa,KAAZ,IAAqBL,IAAI,CAACG,MAA1B,EAAmC;AAAA;;AAClC,UACCE,KAAK,CAACkB,IAAN,KAAe,oBAAf,KACE,CAAEH,mBAAF,IACD,sBAAAf,KAAK,CAACmB,UAAN,wEAAkBJ,mBAAlB,MACCA,mBAHF,CADD,EAKE;AACDC,QAAAA,OAAO,CAACI,IAAR,CAAcpB,KAAd;AACA;AACD;AACD;;AACD,SAAOgB,OAAP;AACA,CAtB4D,CAAvD;AAyBP;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMK,mBAAmB,GAAGrD,sBAAsB,CAAIc,MAAF,IAAc,MAAM;AAAA;;AAC9E,QAAMwC,cAAc,4BAAGxC,MAAM,CAAEF,oBAAF,CAAN,CACrBQ,cADqB,EAAH,0DAAG,sBAEpBW,GAFoB,CAEf;AAAA,QAAE;AAAEZ,MAAAA;AAAF,KAAF;AAAA,WAAcA,EAAd;AAAA,GAFe,CAAvB;;AAGA,MAAK,CAAEmC,cAAP,EAAwB;AACvB,WAAO,KAAP;AACA;;AAED,OAAM,MAAMnC,EAAZ,IAAkBmC,cAAlB,EAAmC;AAClC,UAAMC,QAAQ,GAAGzC,MAAM,CAAEX,SAAF,CAAN,CAAoBqD,oBAApB,CAChBhD,IADgB,EAEhBE,uBAFgB,EAGhBS,EAHgB,CAAjB;;AAKA,QAAKoC,QAAL,EAAgB;AACf,aAAO,IAAP;AACA;AACD;;AAED,QAAME,SAAS,GAAG,CACjB,GAAGC,MAAM,CAACC,IAAP,CAAa7C,MAAM,CAAEF,oBAAF,CAAN,CAA+BC,UAA/B,EAAb,CADc,EAEjB+C,SAFiB,CAEN;AAFM,GAAlB;;AAIA,OAAM,MAAMzC,EAAZ,IAAkBsC,SAAlB,EAA8B;AAC7B,UAAMF,QAAQ,GAAGzC,MAAM,CAAEX,SAAF,CAAN,CAAoBqD,oBAApB,CAChB,MADgB,EAEhB,QAFgB,EAGhBrC,EAHgB,CAAjB;;AAKA,QAAKoC,QAAL,EAAgB;AACf,aAAO,IAAP;AACA;AACD;;AAED,SAAO,KAAP;AACA,CAnCwD,CAAlD;AAqCP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMM,mBAAmB,GAAG,CAAE3C,KAAF,EAASiB,QAAT,KAAuB;AACzD,QAAM;AAAE2B,IAAAA;AAAF,MAA2B5C,KAAjC;AACA,SAAO,CAAC,CAAE4C,oBAAoB,CAAE3B,QAAF,CAA9B;AACA,CAHM;AAKP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS4B,gBAAT,CAA2B7C,KAA3B,EAAmC;AACzC,SAAO,CAAC,CAAEA,KAAK,CAAC8C,kBAAhB;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,+BAAT,CAA0C/C,KAA1C,EAAkD;AACxD,QAAM;AAAEgD,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAAmCjD,KAAK,CAAC8C,kBAA/C;AACA,SAAO;AAAEE,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,GAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,0BAA0B,GAAGpE,sBAAsB,CAC7Dc,MAAF,IAAc,CAAEI,KAAF,EAASmD,SAAT,KAAwB;AACrC;AACA,QAAM7C,WAAW,GAAGV,MAAM,CAAEV,gBAAF,CAAN,CAA2BkE,SAA3B,EAApB,CAFqC,CAIrC;AACA;AACA;;AACA,QAAM,CAAEC,eAAF,IAAsB/C,WAA5B;AACA,SAAOV,MAAM,CAAEV,gBAAF,CAAN,CAA2BoE,kBAA3B,CACNH,SADM,EAENE,eAAe,CAACpC,QAFV,CAAP;AAIA,CAb8D,CAAzD;AAgBP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASsC,gBAAT,CAA2BvD,KAA3B,EAAmC;AACzC,SAAOA,KAAK,CAACwD,aAAb;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { keyBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport { getWidgetIdFromBlock } from '@wordpress/widgets';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tbuildWidgetsQuery,\n\tbuildWidgetAreasQuery,\n\tbuildWidgetAreaPostId,\n\tKIND,\n\tPOST_TYPE,\n\tWIDGET_AREA_ENTITY_TYPE,\n} from './utils';\nimport { STORE_NAME as editWidgetsStoreName } from './constants';\n\n/**\n * Returns all API widgets.\n *\n * @return {Object[]} API List of widgets.\n */\nexport const getWidgets = createRegistrySelector( ( select ) => () => {\n\tconst widgets = select( coreStore ).getEntityRecords(\n\t\t'root',\n\t\t'widget',\n\t\tbuildWidgetsQuery()\n\t);\n\n\treturn keyBy( widgets, 'id' );\n} );\n\n/**\n * Returns API widget data for a particular widget ID.\n *\n * @param {number} id Widget ID.\n *\n * @return {Object} API widget data for a particular widget ID.\n */\nexport const getWidget = createRegistrySelector(\n\t( select ) => ( state, id ) => {\n\t\tconst widgets = select( editWidgetsStoreName ).getWidgets();\n\t\treturn widgets[ id ];\n\t}\n);\n\n/**\n * Returns all API widget areas.\n *\n * @return {Object[]} API List of widget areas.\n */\nexport const getWidgetAreas = createRegistrySelector( ( select ) => () => {\n\tconst query = buildWidgetAreasQuery();\n\treturn select( coreStore ).getEntityRecords(\n\t\tKIND,\n\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\tquery\n\t);\n} );\n\n/**\n * Returns widgetArea containing a block identify by given widgetId\n *\n * @param {string} widgetId The ID of the widget.\n * @return {Object} Containing widget area.\n */\nexport const getWidgetAreaForWidgetId = createRegistrySelector(\n\t( select ) => ( state, widgetId ) => {\n\t\tconst widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\treturn widgetAreas.find( ( widgetArea ) => {\n\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\tKIND,\n\t\t\t\tPOST_TYPE,\n\t\t\t\tbuildWidgetAreaPostId( widgetArea.id )\n\t\t\t);\n\t\t\tconst blockWidgetIds = post.blocks.map( ( block ) =>\n\t\t\t\tgetWidgetIdFromBlock( block )\n\t\t\t);\n\t\t\treturn blockWidgetIds.includes( widgetId );\n\t\t} );\n\t}\n);\n\n/**\n * Given a child client id, returns the parent widget area block.\n *\n * @param {string} clientId The client id of a block in a widget area.\n *\n * @return {WPBlock} The widget area block.\n */\nexport const getParentWidgetAreaBlock = createRegistrySelector(\n\t( select ) => ( state, clientId ) => {\n\t\tconst { getBlock, getBlockName, getBlockParents } = select(\n\t\t\tblockEditorStore\n\t\t);\n\t\tconst blockParents = getBlockParents( clientId );\n\t\tconst widgetAreaClientId = blockParents.find(\n\t\t\t( parentClientId ) =>\n\t\t\t\tgetBlockName( parentClientId ) === 'core/widget-area'\n\t\t);\n\t\treturn getBlock( widgetAreaClientId );\n\t}\n);\n\n/**\n * Returns all edited widget area entity records.\n *\n * @return {Object[]} List of edited widget area entity records.\n */\nexport const getEditedWidgetAreas = createRegistrySelector(\n\t( select ) => ( state, ids ) => {\n\t\tlet widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\tif ( ! widgetAreas ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( ids ) {\n\t\t\twidgetAreas = widgetAreas.filter( ( { id } ) =>\n\t\t\t\tids.includes( id )\n\t\t\t);\n\t\t}\n\t\treturn widgetAreas\n\t\t\t.filter( ( { id } ) =>\n\t\t\t\tselect( coreStore ).hasEditsForEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tPOST_TYPE,\n\t\t\t\t\tbuildWidgetAreaPostId( id )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.map( ( { id } ) =>\n\t\t\t\tselect( coreStore ).getEditedEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\t\t\t\tid\n\t\t\t\t)\n\t\t\t);\n\t}\n);\n\n/**\n * Returns all blocks representing reference widgets.\n *\n * @param {string} referenceWidgetName Optional. If given, only reference widgets with this name will be returned.\n * @return {Array} List of all blocks representing reference widgets\n */\nexport const getReferenceWidgetBlocks = createRegistrySelector(\n\t( select ) => ( state, referenceWidgetName = null ) => {\n\t\tconst results = [];\n\t\tconst widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\tfor ( const _widgetArea of widgetAreas ) {\n\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\tKIND,\n\t\t\t\tPOST_TYPE,\n\t\t\t\tbuildWidgetAreaPostId( _widgetArea.id )\n\t\t\t);\n\t\t\tfor ( const block of post.blocks ) {\n\t\t\t\tif (\n\t\t\t\t\tblock.name === 'core/legacy-widget' &&\n\t\t\t\t\t( ! referenceWidgetName ||\n\t\t\t\t\t\tblock.attributes?.referenceWidgetName ===\n\t\t\t\t\t\t\treferenceWidgetName )\n\t\t\t\t) {\n\t\t\t\t\tresults.push( block );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t}\n);\n\n/**\n * Returns true if any widget area is currently being saved.\n *\n * @return {boolean} True if any widget area is currently being saved. False otherwise.\n */\nexport const isSavingWidgetAreas = createRegistrySelector( ( select ) => () => {\n\tconst widgetAreasIds = select( editWidgetsStoreName )\n\t\t.getWidgetAreas()\n\t\t?.map( ( { id } ) => id );\n\tif ( ! widgetAreasIds ) {\n\t\treturn false;\n\t}\n\n\tfor ( const id of widgetAreasIds ) {\n\t\tconst isSaving = select( coreStore ).isSavingEntityRecord(\n\t\t\tKIND,\n\t\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\t\tid\n\t\t);\n\t\tif ( isSaving ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tconst widgetIds = [\n\t\t...Object.keys( select( editWidgetsStoreName ).getWidgets() ),\n\t\tundefined, // account for new widgets without an ID\n\t];\n\tfor ( const id of widgetIds ) {\n\t\tconst isSaving = select( coreStore ).isSavingEntityRecord(\n\t\t\t'root',\n\t\t\t'widget',\n\t\t\tid\n\t\t);\n\t\tif ( isSaving ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n} );\n\n/**\n * Gets whether the widget area is opened.\n *\n * @param {Array} state The open state of the widget areas.\n * @param {string} clientId The clientId of the widget area.\n *\n * @return {boolean} True if the widget area is open.\n */\nexport const getIsWidgetAreaOpen = ( state, clientId ) => {\n\tconst { widgetAreasOpenState } = state;\n\treturn !! widgetAreasOpenState[ clientId ];\n};\n\n/**\n * Returns true if the inserter is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the inserter is opened.\n */\nexport function isInserterOpened( state ) {\n\treturn !! state.blockInserterPanel;\n}\n\n/**\n * Get the insertion point for the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID and index to insert at.\n */\nexport function __experimentalGetInsertionPoint( state ) {\n\tconst { rootClientId, insertionIndex } = state.blockInserterPanel;\n\treturn { rootClientId, insertionIndex };\n}\n\n/**\n * Returns true if a block can be inserted into a widget area.\n *\n * @param {Array} state The open state of the widget areas.\n * @param {string} blockName The name of the block being inserted.\n *\n * @return {boolean} True if the block can be inserted in a widget area.\n */\nexport const canInsertBlockInWidgetArea = createRegistrySelector(\n\t( select ) => ( state, blockName ) => {\n\t\t// Widget areas are always top-level blocks, which getBlocks will return.\n\t\tconst widgetAreas = select( blockEditorStore ).getBlocks();\n\n\t\t// Makes an assumption that a block that can be inserted into one\n\t\t// widget area can be inserted into any widget area. Uses the first\n\t\t// widget area for testing whether the block can be inserted.\n\t\tconst [ firstWidgetArea ] = widgetAreas;\n\t\treturn select( blockEditorStore ).canInsertBlockType(\n\t\t\tblockName,\n\t\t\tfirstWidgetArea.clientId\n\t\t);\n\t}\n);\n\n/**\n * Returns true if the list view is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the list view is opened.\n */\nexport function isListViewOpened( state ) {\n\treturn state.listViewPanel;\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/edit-widgets/src/store/selectors.js"],"names":["keyBy","createRegistrySelector","getWidgetIdFromBlock","store","coreStore","blockEditorStore","buildWidgetsQuery","buildWidgetAreasQuery","buildWidgetAreaPostId","KIND","POST_TYPE","WIDGET_AREA_ENTITY_TYPE","STORE_NAME","editWidgetsStoreName","getWidgets","select","widgets","getEntityRecords","getWidget","state","id","getWidgetAreas","query","getWidgetAreaForWidgetId","widgetId","widgetAreas","find","widgetArea","post","getEditedEntityRecord","blockWidgetIds","blocks","map","block","includes","getParentWidgetAreaBlock","clientId","getBlock","getBlockName","getBlockParents","blockParents","widgetAreaClientId","parentClientId","getEditedWidgetAreas","ids","filter","hasEditsForEntityRecord","getReferenceWidgetBlocks","referenceWidgetName","results","_widgetArea","name","attributes","push","isSavingWidgetAreas","widgetAreasIds","isSaving","isSavingEntityRecord","widgetIds","Object","keys","undefined","getIsWidgetAreaOpen","widgetAreasOpenState","isInserterOpened","blockInserterPanel","__experimentalGetInsertionPoint","rootClientId","insertionIndex","canInsertBlockInWidgetArea","blockName","getBlocks","firstWidgetArea","canInsertBlockType","isListViewOpened","listViewPanel"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAT,QAAsB,QAAtB;AAEA;AACA;AACA;;AACA,SAASC,sBAAT,QAAuC,iBAAvC;AACA,SAASC,oBAAT,QAAqC,oBAArC;AACA,SAASC,KAAK,IAAIC,SAAlB,QAAmC,sBAAnC;AACA,SAASD,KAAK,IAAIE,gBAAlB,QAA0C,yBAA1C;AAEA;AACA;AACA;;AACA,SACCC,iBADD,EAECC,qBAFD,EAGCC,qBAHD,EAICC,IAJD,EAKCC,SALD,EAMCC,uBAND,QAOO,SAPP;AAQA,SAASC,UAAU,IAAIC,oBAAvB,QAAmD,aAAnD;AAEA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,UAAU,GAAGb,sBAAsB,CAAIc,MAAF,IAAc,MAAM;AACrE,QAAMC,OAAO,GAAGD,MAAM,CAAEX,SAAF,CAAN,CAAoBa,gBAApB,CACf,MADe,EAEf,QAFe,EAGfX,iBAAiB,EAHF,CAAhB;AAMA,SAAON,KAAK,CAAEgB,OAAF,EAAW,IAAX,CAAZ;AACA,CAR+C,CAAzC;AAUP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAME,SAAS,GAAGjB,sBAAsB,CAC5Cc,MAAF,IAAc,CAAEI,KAAF,EAASC,EAAT,KAAiB;AAC9B,QAAMJ,OAAO,GAAGD,MAAM,CAAEF,oBAAF,CAAN,CAA+BC,UAA/B,EAAhB;AACA,SAAOE,OAAO,CAAEI,EAAF,CAAd;AACA,CAJ6C,CAAxC;AAOP;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,cAAc,GAAGpB,sBAAsB,CAAIc,MAAF,IAAc,MAAM;AACzE,QAAMO,KAAK,GAAGf,qBAAqB,EAAnC;AACA,SAAOQ,MAAM,CAAEX,SAAF,CAAN,CAAoBa,gBAApB,CACNR,IADM,EAENE,uBAFM,EAGNW,KAHM,CAAP;AAKA,CAPmD,CAA7C;AASP;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,wBAAwB,GAAGtB,sBAAsB,CAC3Dc,MAAF,IAAc,CAAEI,KAAF,EAASK,QAAT,KAAuB;AACpC,QAAMC,WAAW,GAAGV,MAAM,CAAEF,oBAAF,CAAN,CAA+BQ,cAA/B,EAApB;AACA,SAAOI,WAAW,CAACC,IAAZ,CAAoBC,UAAF,IAAkB;AAC1C,UAAMC,IAAI,GAAGb,MAAM,CAAEX,SAAF,CAAN,CAAoByB,qBAApB,CACZpB,IADY,EAEZC,SAFY,EAGZF,qBAAqB,CAAEmB,UAAU,CAACP,EAAb,CAHT,CAAb;AAKA,UAAMU,cAAc,GAAGF,IAAI,CAACG,MAAL,CAAYC,GAAZ,CAAmBC,KAAF,IACvC/B,oBAAoB,CAAE+B,KAAF,CADE,CAAvB;AAGA,WAAOH,cAAc,CAACI,QAAf,CAAyBV,QAAzB,CAAP;AACA,GAVM,CAAP;AAWA,CAd4D,CAAvD;AAiBP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMW,wBAAwB,GAAGlC,sBAAsB,CAC3Dc,MAAF,IAAc,CAAEI,KAAF,EAASiB,QAAT,KAAuB;AACpC,QAAM;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,YAAZ;AAA0BC,IAAAA;AAA1B,MACLxB,MAAM,CAAEV,gBAAF,CADP;AAEA,QAAMmC,YAAY,GAAGD,eAAe,CAAEH,QAAF,CAApC;AACA,QAAMK,kBAAkB,GAAGD,YAAY,CAACd,IAAb,CACxBgB,cAAF,IACCJ,YAAY,CAAEI,cAAF,CAAZ,KAAmC,kBAFV,CAA3B;AAIA,SAAOL,QAAQ,CAAEI,kBAAF,CAAf;AACA,CAV4D,CAAvD;AAaP;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAME,oBAAoB,GAAG1C,sBAAsB,CACvDc,MAAF,IAAc,CAAEI,KAAF,EAASyB,GAAT,KAAkB;AAC/B,MAAInB,WAAW,GAAGV,MAAM,CAAEF,oBAAF,CAAN,CAA+BQ,cAA/B,EAAlB;;AACA,MAAK,CAAEI,WAAP,EAAqB;AACpB,WAAO,EAAP;AACA;;AACD,MAAKmB,GAAL,EAAW;AACVnB,IAAAA,WAAW,GAAGA,WAAW,CAACoB,MAAZ,CAAoB;AAAA,UAAE;AAAEzB,QAAAA;AAAF,OAAF;AAAA,aACjCwB,GAAG,CAACV,QAAJ,CAAcd,EAAd,CADiC;AAAA,KAApB,CAAd;AAGA;;AACD,SAAOK,WAAW,CAChBoB,MADK,CACG;AAAA,QAAE;AAAEzB,MAAAA;AAAF,KAAF;AAAA,WACRL,MAAM,CAAEX,SAAF,CAAN,CAAoB0C,uBAApB,CACCrC,IADD,EAECC,SAFD,EAGCF,qBAAqB,CAAEY,EAAF,CAHtB,CADQ;AAAA,GADH,EAQLY,GARK,CAQA;AAAA,QAAE;AAAEZ,MAAAA;AAAF,KAAF;AAAA,WACLL,MAAM,CAAEX,SAAF,CAAN,CAAoByB,qBAApB,CACCpB,IADD,EAECE,uBAFD,EAGCS,EAHD,CADK;AAAA,GARA,CAAP;AAeA,CA1BwD,CAAnD;AA6BP;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAM2B,wBAAwB,GAAG9C,sBAAsB,CAC3Dc,MAAF,IACC,UAAEI,KAAF,EAAyC;AAAA,MAAhC6B,mBAAgC,uEAAV,IAAU;AACxC,QAAMC,OAAO,GAAG,EAAhB;AACA,QAAMxB,WAAW,GAAGV,MAAM,CAAEF,oBAAF,CAAN,CAA+BQ,cAA/B,EAApB;;AACA,OAAM,MAAM6B,WAAZ,IAA2BzB,WAA3B,EAAyC;AACxC,UAAMG,IAAI,GAAGb,MAAM,CAAEX,SAAF,CAAN,CAAoByB,qBAApB,CACZpB,IADY,EAEZC,SAFY,EAGZF,qBAAqB,CAAE0C,WAAW,CAAC9B,EAAd,CAHT,CAAb;;AAKA,SAAM,MAAMa,KAAZ,IAAqBL,IAAI,CAACG,MAA1B,EAAmC;AAAA;;AAClC,UACCE,KAAK,CAACkB,IAAN,KAAe,oBAAf,KACE,CAAEH,mBAAF,IACD,sBAAAf,KAAK,CAACmB,UAAN,wEAAkBJ,mBAAlB,MACCA,mBAHF,CADD,EAKE;AACDC,QAAAA,OAAO,CAACI,IAAR,CAAcpB,KAAd;AACA;AACD;AACD;;AACD,SAAOgB,OAAP;AACA,CAvB2D,CAAvD;AA0BP;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMK,mBAAmB,GAAGrD,sBAAsB,CAAIc,MAAF,IAAc,MAAM;AAAA;;AAC9E,QAAMwC,cAAc,4BAAGxC,MAAM,CAAEF,oBAAF,CAAN,CACrBQ,cADqB,EAAH,0DAAG,sBAEpBW,GAFoB,CAEf;AAAA,QAAE;AAAEZ,MAAAA;AAAF,KAAF;AAAA,WAAcA,EAAd;AAAA,GAFe,CAAvB;;AAGA,MAAK,CAAEmC,cAAP,EAAwB;AACvB,WAAO,KAAP;AACA;;AAED,OAAM,MAAMnC,EAAZ,IAAkBmC,cAAlB,EAAmC;AAClC,UAAMC,QAAQ,GAAGzC,MAAM,CAAEX,SAAF,CAAN,CAAoBqD,oBAApB,CAChBhD,IADgB,EAEhBE,uBAFgB,EAGhBS,EAHgB,CAAjB;;AAKA,QAAKoC,QAAL,EAAgB;AACf,aAAO,IAAP;AACA;AACD;;AAED,QAAME,SAAS,GAAG,CACjB,GAAGC,MAAM,CAACC,IAAP,CAAa7C,MAAM,CAAEF,oBAAF,CAAN,CAA+BC,UAA/B,EAAb,CADc,EAEjB+C,SAFiB,CAEN;AAFM,GAAlB;;AAIA,OAAM,MAAMzC,EAAZ,IAAkBsC,SAAlB,EAA8B;AAC7B,UAAMF,QAAQ,GAAGzC,MAAM,CAAEX,SAAF,CAAN,CAAoBqD,oBAApB,CAChB,MADgB,EAEhB,QAFgB,EAGhBrC,EAHgB,CAAjB;;AAKA,QAAKoC,QAAL,EAAgB;AACf,aAAO,IAAP;AACA;AACD;;AAED,SAAO,KAAP;AACA,CAnCwD,CAAlD;AAqCP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMM,mBAAmB,GAAG,CAAE3C,KAAF,EAASiB,QAAT,KAAuB;AACzD,QAAM;AAAE2B,IAAAA;AAAF,MAA2B5C,KAAjC;AACA,SAAO,CAAC,CAAE4C,oBAAoB,CAAE3B,QAAF,CAA9B;AACA,CAHM;AAKP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAAS4B,gBAAT,CAA2B7C,KAA3B,EAAmC;AACzC,SAAO,CAAC,CAAEA,KAAK,CAAC8C,kBAAhB;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,+BAAT,CAA0C/C,KAA1C,EAAkD;AACxD,QAAM;AAAEgD,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,MAAmCjD,KAAK,CAAC8C,kBAA/C;AACA,SAAO;AAAEE,IAAAA,YAAF;AAAgBC,IAAAA;AAAhB,GAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,0BAA0B,GAAGpE,sBAAsB,CAC7Dc,MAAF,IAAc,CAAEI,KAAF,EAASmD,SAAT,KAAwB;AACrC;AACA,QAAM7C,WAAW,GAAGV,MAAM,CAAEV,gBAAF,CAAN,CAA2BkE,SAA3B,EAApB,CAFqC,CAIrC;AACA;AACA;;AACA,QAAM,CAAEC,eAAF,IAAsB/C,WAA5B;AACA,SAAOV,MAAM,CAAEV,gBAAF,CAAN,CAA2BoE,kBAA3B,CACNH,SADM,EAENE,eAAe,CAACpC,QAFV,CAAP;AAIA,CAb8D,CAAzD;AAgBP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASsC,gBAAT,CAA2BvD,KAA3B,EAAmC;AACzC,SAAOA,KAAK,CAACwD,aAAb;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { keyBy } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createRegistrySelector } from '@wordpress/data';\nimport { getWidgetIdFromBlock } from '@wordpress/widgets';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport {\n\tbuildWidgetsQuery,\n\tbuildWidgetAreasQuery,\n\tbuildWidgetAreaPostId,\n\tKIND,\n\tPOST_TYPE,\n\tWIDGET_AREA_ENTITY_TYPE,\n} from './utils';\nimport { STORE_NAME as editWidgetsStoreName } from './constants';\n\n/**\n * Returns all API widgets.\n *\n * @return {Object[]} API List of widgets.\n */\nexport const getWidgets = createRegistrySelector( ( select ) => () => {\n\tconst widgets = select( coreStore ).getEntityRecords(\n\t\t'root',\n\t\t'widget',\n\t\tbuildWidgetsQuery()\n\t);\n\n\treturn keyBy( widgets, 'id' );\n} );\n\n/**\n * Returns API widget data for a particular widget ID.\n *\n * @param {number} id Widget ID.\n *\n * @return {Object} API widget data for a particular widget ID.\n */\nexport const getWidget = createRegistrySelector(\n\t( select ) => ( state, id ) => {\n\t\tconst widgets = select( editWidgetsStoreName ).getWidgets();\n\t\treturn widgets[ id ];\n\t}\n);\n\n/**\n * Returns all API widget areas.\n *\n * @return {Object[]} API List of widget areas.\n */\nexport const getWidgetAreas = createRegistrySelector( ( select ) => () => {\n\tconst query = buildWidgetAreasQuery();\n\treturn select( coreStore ).getEntityRecords(\n\t\tKIND,\n\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\tquery\n\t);\n} );\n\n/**\n * Returns widgetArea containing a block identify by given widgetId\n *\n * @param {string} widgetId The ID of the widget.\n * @return {Object} Containing widget area.\n */\nexport const getWidgetAreaForWidgetId = createRegistrySelector(\n\t( select ) => ( state, widgetId ) => {\n\t\tconst widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\treturn widgetAreas.find( ( widgetArea ) => {\n\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\tKIND,\n\t\t\t\tPOST_TYPE,\n\t\t\t\tbuildWidgetAreaPostId( widgetArea.id )\n\t\t\t);\n\t\t\tconst blockWidgetIds = post.blocks.map( ( block ) =>\n\t\t\t\tgetWidgetIdFromBlock( block )\n\t\t\t);\n\t\t\treturn blockWidgetIds.includes( widgetId );\n\t\t} );\n\t}\n);\n\n/**\n * Given a child client id, returns the parent widget area block.\n *\n * @param {string} clientId The client id of a block in a widget area.\n *\n * @return {WPBlock} The widget area block.\n */\nexport const getParentWidgetAreaBlock = createRegistrySelector(\n\t( select ) => ( state, clientId ) => {\n\t\tconst { getBlock, getBlockName, getBlockParents } =\n\t\t\tselect( blockEditorStore );\n\t\tconst blockParents = getBlockParents( clientId );\n\t\tconst widgetAreaClientId = blockParents.find(\n\t\t\t( parentClientId ) =>\n\t\t\t\tgetBlockName( parentClientId ) === 'core/widget-area'\n\t\t);\n\t\treturn getBlock( widgetAreaClientId );\n\t}\n);\n\n/**\n * Returns all edited widget area entity records.\n *\n * @return {Object[]} List of edited widget area entity records.\n */\nexport const getEditedWidgetAreas = createRegistrySelector(\n\t( select ) => ( state, ids ) => {\n\t\tlet widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\tif ( ! widgetAreas ) {\n\t\t\treturn [];\n\t\t}\n\t\tif ( ids ) {\n\t\t\twidgetAreas = widgetAreas.filter( ( { id } ) =>\n\t\t\t\tids.includes( id )\n\t\t\t);\n\t\t}\n\t\treturn widgetAreas\n\t\t\t.filter( ( { id } ) =>\n\t\t\t\tselect( coreStore ).hasEditsForEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tPOST_TYPE,\n\t\t\t\t\tbuildWidgetAreaPostId( id )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.map( ( { id } ) =>\n\t\t\t\tselect( coreStore ).getEditedEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\t\t\t\tid\n\t\t\t\t)\n\t\t\t);\n\t}\n);\n\n/**\n * Returns all blocks representing reference widgets.\n *\n * @param {string} referenceWidgetName Optional. If given, only reference widgets with this name will be returned.\n * @return {Array} List of all blocks representing reference widgets\n */\nexport const getReferenceWidgetBlocks = createRegistrySelector(\n\t( select ) =>\n\t\t( state, referenceWidgetName = null ) => {\n\t\t\tconst results = [];\n\t\t\tconst widgetAreas = select( editWidgetsStoreName ).getWidgetAreas();\n\t\t\tfor ( const _widgetArea of widgetAreas ) {\n\t\t\t\tconst post = select( coreStore ).getEditedEntityRecord(\n\t\t\t\t\tKIND,\n\t\t\t\t\tPOST_TYPE,\n\t\t\t\t\tbuildWidgetAreaPostId( _widgetArea.id )\n\t\t\t\t);\n\t\t\t\tfor ( const block of post.blocks ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tblock.name === 'core/legacy-widget' &&\n\t\t\t\t\t\t( ! referenceWidgetName ||\n\t\t\t\t\t\t\tblock.attributes?.referenceWidgetName ===\n\t\t\t\t\t\t\t\treferenceWidgetName )\n\t\t\t\t\t) {\n\t\t\t\t\t\tresults.push( block );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn results;\n\t\t}\n);\n\n/**\n * Returns true if any widget area is currently being saved.\n *\n * @return {boolean} True if any widget area is currently being saved. False otherwise.\n */\nexport const isSavingWidgetAreas = createRegistrySelector( ( select ) => () => {\n\tconst widgetAreasIds = select( editWidgetsStoreName )\n\t\t.getWidgetAreas()\n\t\t?.map( ( { id } ) => id );\n\tif ( ! widgetAreasIds ) {\n\t\treturn false;\n\t}\n\n\tfor ( const id of widgetAreasIds ) {\n\t\tconst isSaving = select( coreStore ).isSavingEntityRecord(\n\t\t\tKIND,\n\t\t\tWIDGET_AREA_ENTITY_TYPE,\n\t\t\tid\n\t\t);\n\t\tif ( isSaving ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\tconst widgetIds = [\n\t\t...Object.keys( select( editWidgetsStoreName ).getWidgets() ),\n\t\tundefined, // account for new widgets without an ID\n\t];\n\tfor ( const id of widgetIds ) {\n\t\tconst isSaving = select( coreStore ).isSavingEntityRecord(\n\t\t\t'root',\n\t\t\t'widget',\n\t\t\tid\n\t\t);\n\t\tif ( isSaving ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n} );\n\n/**\n * Gets whether the widget area is opened.\n *\n * @param {Array} state The open state of the widget areas.\n * @param {string} clientId The clientId of the widget area.\n *\n * @return {boolean} True if the widget area is open.\n */\nexport const getIsWidgetAreaOpen = ( state, clientId ) => {\n\tconst { widgetAreasOpenState } = state;\n\treturn !! widgetAreasOpenState[ clientId ];\n};\n\n/**\n * Returns true if the inserter is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the inserter is opened.\n */\nexport function isInserterOpened( state ) {\n\treturn !! state.blockInserterPanel;\n}\n\n/**\n * Get the insertion point for the inserter.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object} The root client ID and index to insert at.\n */\nexport function __experimentalGetInsertionPoint( state ) {\n\tconst { rootClientId, insertionIndex } = state.blockInserterPanel;\n\treturn { rootClientId, insertionIndex };\n}\n\n/**\n * Returns true if a block can be inserted into a widget area.\n *\n * @param {Array} state The open state of the widget areas.\n * @param {string} blockName The name of the block being inserted.\n *\n * @return {boolean} True if the block can be inserted in a widget area.\n */\nexport const canInsertBlockInWidgetArea = createRegistrySelector(\n\t( select ) => ( state, blockName ) => {\n\t\t// Widget areas are always top-level blocks, which getBlocks will return.\n\t\tconst widgetAreas = select( blockEditorStore ).getBlocks();\n\n\t\t// Makes an assumption that a block that can be inserted into one\n\t\t// widget area can be inserted into any widget area. Uses the first\n\t\t// widget area for testing whether the block can be inserted.\n\t\tconst [ firstWidgetArea ] = widgetAreas;\n\t\treturn select( blockEditorStore ).canInsertBlockType(\n\t\t\tblockName,\n\t\t\tfirstWidgetArea.clientId\n\t\t);\n\t}\n);\n\n/**\n * Returns true if the list view is opened.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the list view is opened.\n */\nexport function isListViewOpened( state ) {\n\treturn state.listViewPanel;\n}\n"]}
@@ -416,7 +416,6 @@ body.is-fullscreen-mode .interface-interface-skeleton {
416
416
  }
417
417
  @media (min-width: 480px) {
418
418
  .interface-more-menu-dropdown__content .components-popover__content {
419
- width: auto;
420
419
  max-width: 480px;
421
420
  }
422
421
  }
@@ -781,7 +780,7 @@ body.is-dragging-components-draggable .wp-block[data-type="core/widget-area"] .c
781
780
  visibility: hidden;
782
781
  }
783
782
  .components-button.edit-widgets-sidebar__panel-tab.is-active {
784
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent, inset 0 -4px 0 0 var(--wp-admin-theme-color);
783
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent, inset 0 -1.5px 0 0 var(--wp-admin-theme-color);
785
784
  font-weight: 600;
786
785
  position: relative;
787
786
  }
@@ -792,13 +791,13 @@ body.is-dragging-components-draggable .wp-block[data-type="core/widget-area"] .c
792
791
  bottom: 1px;
793
792
  left: 0;
794
793
  right: 0;
795
- border-bottom: 4px solid transparent;
794
+ border-bottom: 1.5px solid transparent;
796
795
  }
797
796
  .components-button.edit-widgets-sidebar__panel-tab:focus {
798
797
  box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
799
798
  }
800
799
  .components-button.edit-widgets-sidebar__panel-tab.is-active:focus {
801
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color), inset 0 -4px 0 0 var(--wp-admin-theme-color);
800
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color), inset 0 -1.5px 0 0 var(--wp-admin-theme-color);
802
801
  }
803
802
 
804
803
  .edit-widgets-widget-areas__top-container {
@@ -903,8 +902,7 @@ body.is-fullscreen-mode .edit-widgets-notices__snackbar {
903
902
  .edit-widgets-welcome-guide__image > img {
904
903
  display: block;
905
904
  max-width: 100%;
906
- -o-object-fit: cover;
907
- object-fit: cover;
905
+ object-fit: cover;
908
906
  }
909
907
  .edit-widgets-welcome-guide__heading {
910
908
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
@@ -416,7 +416,6 @@ body.is-fullscreen-mode .interface-interface-skeleton {
416
416
  }
417
417
  @media (min-width: 480px) {
418
418
  .interface-more-menu-dropdown__content .components-popover__content {
419
- width: auto;
420
419
  max-width: 480px;
421
420
  }
422
421
  }
@@ -781,7 +780,7 @@ body.is-dragging-components-draggable .wp-block[data-type="core/widget-area"] .c
781
780
  visibility: hidden;
782
781
  }
783
782
  .components-button.edit-widgets-sidebar__panel-tab.is-active {
784
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent, inset 0 -4px 0 0 var(--wp-admin-theme-color);
783
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) transparent, inset 0 -1.5px 0 0 var(--wp-admin-theme-color);
785
784
  font-weight: 600;
786
785
  position: relative;
787
786
  }
@@ -792,13 +791,13 @@ body.is-dragging-components-draggable .wp-block[data-type="core/widget-area"] .c
792
791
  bottom: 1px;
793
792
  right: 0;
794
793
  left: 0;
795
- border-bottom: 4px solid transparent;
794
+ border-bottom: 1.5px solid transparent;
796
795
  }
797
796
  .components-button.edit-widgets-sidebar__panel-tab:focus {
798
797
  box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
799
798
  }
800
799
  .components-button.edit-widgets-sidebar__panel-tab.is-active:focus {
801
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color), inset 0 -4px 0 0 var(--wp-admin-theme-color);
800
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color), inset 0 -1.5px 0 0 var(--wp-admin-theme-color);
802
801
  }
803
802
 
804
803
  .edit-widgets-widget-areas__top-container {
@@ -903,8 +902,7 @@ body.is-fullscreen-mode .edit-widgets-notices__snackbar {
903
902
  .edit-widgets-welcome-guide__image > img {
904
903
  display: block;
905
904
  max-width: 100%;
906
- -o-object-fit: cover;
907
- object-fit: cover;
905
+ object-fit: cover;
908
906
  }
909
907
  .edit-widgets-welcome-guide__heading {
910
908
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/edit-widgets",
3
- "version": "4.5.0",
3
+ "version": "4.8.0",
4
4
  "description": "Widgets Page module for WordPress..",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -27,30 +27,30 @@
27
27
  "react-native": "src/index",
28
28
  "dependencies": {
29
29
  "@babel/runtime": "^7.16.0",
30
- "@wordpress/api-fetch": "^6.5.0",
31
- "@wordpress/block-editor": "^9.0.0",
32
- "@wordpress/block-library": "^7.5.0",
33
- "@wordpress/blocks": "^11.7.0",
34
- "@wordpress/components": "^19.10.0",
35
- "@wordpress/compose": "^5.6.0",
36
- "@wordpress/core-data": "^4.6.0",
37
- "@wordpress/data": "^6.8.0",
38
- "@wordpress/deprecated": "^3.8.0",
39
- "@wordpress/dom": "^3.8.0",
40
- "@wordpress/element": "^4.6.0",
41
- "@wordpress/hooks": "^3.8.0",
42
- "@wordpress/i18n": "^4.8.0",
43
- "@wordpress/icons": "^8.4.0",
44
- "@wordpress/interface": "^4.7.0",
45
- "@wordpress/keyboard-shortcuts": "^3.6.0",
46
- "@wordpress/keycodes": "^3.8.0",
47
- "@wordpress/media-utils": "^3.6.0",
48
- "@wordpress/notices": "^3.8.0",
49
- "@wordpress/plugins": "^4.6.0",
50
- "@wordpress/preferences": "^2.0.0",
51
- "@wordpress/reusable-blocks": "^3.6.0",
52
- "@wordpress/url": "^3.9.0",
53
- "@wordpress/widgets": "^2.6.0",
30
+ "@wordpress/api-fetch": "^6.8.0",
31
+ "@wordpress/block-editor": "^9.3.0",
32
+ "@wordpress/block-library": "^7.8.0",
33
+ "@wordpress/blocks": "^11.10.0",
34
+ "@wordpress/components": "^19.13.0",
35
+ "@wordpress/compose": "^5.9.0",
36
+ "@wordpress/core-data": "^4.9.0",
37
+ "@wordpress/data": "^6.11.0",
38
+ "@wordpress/deprecated": "^3.11.0",
39
+ "@wordpress/dom": "^3.11.0",
40
+ "@wordpress/element": "^4.9.0",
41
+ "@wordpress/hooks": "^3.11.0",
42
+ "@wordpress/i18n": "^4.11.0",
43
+ "@wordpress/icons": "^9.2.0",
44
+ "@wordpress/interface": "^4.10.0",
45
+ "@wordpress/keyboard-shortcuts": "^3.9.0",
46
+ "@wordpress/keycodes": "^3.11.0",
47
+ "@wordpress/media-utils": "^4.2.0",
48
+ "@wordpress/notices": "^3.11.0",
49
+ "@wordpress/plugins": "^4.9.0",
50
+ "@wordpress/preferences": "^2.3.0",
51
+ "@wordpress/reusable-blocks": "^3.9.0",
52
+ "@wordpress/url": "^3.12.0",
53
+ "@wordpress/widgets": "^2.9.0",
54
54
  "classnames": "^2.3.1",
55
55
  "lodash": "^4.17.21"
56
56
  },
@@ -61,5 +61,5 @@
61
61
  "publishConfig": {
62
62
  "access": "public"
63
63
  },
64
- "gitHead": "4631d515033397fcfeda77e5755960253caef9bf"
64
+ "gitHead": "48d5f37dfb52d2e77c8eeb662f9874cf141b8c6b"
65
65
  }
@@ -41,7 +41,8 @@ export default function WidgetAreaInnerBlocks( { id } ) {
41
41
  className={ classnames(
42
42
  'wp-block-widget-area__inner-blocks block-editor-inner-blocks editor-styles-wrapper',
43
43
  {
44
- 'wp-block-widget-area__highlight-drop-zone': shouldHighlightDropZone,
44
+ 'wp-block-widget-area__highlight-drop-zone':
45
+ shouldHighlightDropZone,
45
46
  }
46
47
  ) }
47
48
  >
@@ -35,19 +35,15 @@ function Header() {
35
35
  [ widgetAreaClientId ]
36
36
  );
37
37
  const { isInserterOpen, isListViewOpen } = useSelect( ( select ) => {
38
- const { isInserterOpened, isListViewOpened } = select(
39
- editWidgetsStore
40
- );
38
+ const { isInserterOpened, isListViewOpened } =
39
+ select( editWidgetsStore );
41
40
  return {
42
41
  isInserterOpen: isInserterOpened(),
43
42
  isListViewOpen: isListViewOpened(),
44
43
  };
45
44
  }, [] );
46
- const {
47
- setIsWidgetAreaOpen,
48
- setIsInserterOpened,
49
- setIsListViewOpened,
50
- } = useDispatch( editWidgetsStore );
45
+ const { setIsWidgetAreaOpen, setIsInserterOpened, setIsListViewOpened } =
46
+ useDispatch( editWidgetsStore );
51
47
  const { selectBlock } = useDispatch( blockEditorStore );
52
48
  const handleClick = () => {
53
49
  if ( isInserterOpen ) {
@@ -36,11 +36,8 @@ const interfaceLabels = {
36
36
  function Interface( { blockEditorSettings } ) {
37
37
  const isMobileViewport = useViewportMatch( 'medium', '<' );
38
38
  const isHugeViewport = useViewportMatch( 'huge', '>=' );
39
- const {
40
- setIsInserterOpened,
41
- setIsListViewOpened,
42
- closeGeneralSidebar,
43
- } = useDispatch( editWidgetsStore );
39
+ const { setIsInserterOpened, setIsListViewOpened, closeGeneralSidebar } =
40
+ useDispatch( editWidgetsStore );
44
41
  const {
45
42
  hasBlockBreadCrumbsEnabled,
46
43
  hasSidebarEnabled,
@@ -12,9 +12,8 @@ import { store as editWidgetsStore } from '../../store';
12
12
 
13
13
  function SaveButton() {
14
14
  const { hasEditedWidgetAreaIds, isSaving } = useSelect( ( select ) => {
15
- const { getEditedWidgetAreas, isSavingWidgetAreas } = select(
16
- editWidgetsStore
17
- );
15
+ const { getEditedWidgetAreas, isSavingWidgetAreas } =
16
+ select( editWidgetsStore );
18
17
 
19
18
  return {
20
19
  hasEditedWidgetAreaIds: getEditedWidgetAreas()?.length > 0,
@@ -15,9 +15,8 @@ import ListViewSidebar from './list-view-sidebar';
15
15
 
16
16
  export default function SecondarySidebar() {
17
17
  const { isInserterOpen, isListViewOpen } = useSelect( ( select ) => {
18
- const { isInserterOpened, isListViewOpened } = select(
19
- editWidgetsStore
20
- );
18
+ const { isInserterOpened, isListViewOpened } =
19
+ select( editWidgetsStore );
21
20
  return {
22
21
  isInserterOpen: isInserterOpened(),
23
22
  isListViewOpen: isListViewOpened(),
@@ -69,11 +69,8 @@ export default function Sidebar() {
69
69
  isGeneralSidebarOpen,
70
70
  selectedWidgetAreaBlock,
71
71
  } = useSelect( ( select ) => {
72
- const {
73
- getSelectedBlock,
74
- getBlock,
75
- getBlockParentsByBlockName,
76
- } = select( blockEditorStore );
72
+ const { getSelectedBlock, getBlock, getBlockParentsByBlockName } =
73
+ select( blockEditorStore );
77
74
  const { getActiveComplementaryArea } = select( interfaceStore );
78
75
 
79
76
  const selectedBlock = getSelectedBlock();
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { defaultTo } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -41,10 +36,8 @@ export default function WidgetAreasBlockEditorProvider( {
41
36
  keepCaretInsideBlock,
42
37
  } = useSelect(
43
38
  ( select ) => ( {
44
- hasUploadPermissions: defaultTo(
45
- select( coreStore ).canUser( 'create', 'media' ),
46
- true
47
- ),
39
+ hasUploadPermissions:
40
+ select( coreStore ).canUser( 'create', 'media' ) ?? true,
48
41
  widgetAreas: select( editWidgetsStore ).getWidgetAreas(),
49
42
  widgets: select( editWidgetsStore ).getWidgets(),
50
43
  reusableBlocks: ALLOW_REUSABLE_BLOCKS
@@ -16,33 +16,28 @@ import { store as editWidgetsStore } from '../store';
16
16
  const withMoveToWidgetAreaToolbarItem = createHigherOrderComponent(
17
17
  ( BlockEdit ) => ( props ) => {
18
18
  const { clientId, name: blockName } = props;
19
- const {
20
- widgetAreas,
21
- currentWidgetAreaId,
22
- canInsertBlockInWidgetArea,
23
- } = useSelect(
24
- ( select ) => {
25
- // Component won't display for a widget area, so don't run selectors.
26
- if ( blockName === 'core/widget-area' ) {
27
- return {};
28
- }
19
+ const { widgetAreas, currentWidgetAreaId, canInsertBlockInWidgetArea } =
20
+ useSelect(
21
+ ( select ) => {
22
+ // Component won't display for a widget area, so don't run selectors.
23
+ if ( blockName === 'core/widget-area' ) {
24
+ return {};
25
+ }
29
26
 
30
- const selectors = select( editWidgetsStore );
27
+ const selectors = select( editWidgetsStore );
31
28
 
32
- const widgetAreaBlock = selectors.getParentWidgetAreaBlock(
33
- clientId
34
- );
29
+ const widgetAreaBlock =
30
+ selectors.getParentWidgetAreaBlock( clientId );
35
31
 
36
- return {
37
- widgetAreas: selectors.getWidgetAreas(),
38
- currentWidgetAreaId: widgetAreaBlock?.attributes?.id,
39
- canInsertBlockInWidgetArea: selectors.canInsertBlockInWidgetArea(
40
- blockName
41
- ),
42
- };
43
- },
44
- [ clientId, blockName ]
45
- );
32
+ return {
33
+ widgetAreas: selectors.getWidgetAreas(),
34
+ currentWidgetAreaId: widgetAreaBlock?.attributes?.id,
35
+ canInsertBlockInWidgetArea:
36
+ selectors.canInsertBlockInWidgetArea( blockName ),
37
+ };
38
+ },
39
+ [ clientId, blockName ]
40
+ );
46
41
 
47
42
  const { moveBlockToWidgetArea } = useDispatch( editWidgetsStore );
48
43
  const hasMultipleWidgetAreas = widgetAreas?.length > 1;
@@ -19,9 +19,8 @@ import { buildWidgetAreasPostId, KIND, POST_TYPE } from '../store/utils';
19
19
  */
20
20
  const useLastSelectedWidgetArea = () =>
21
21
  useSelect( ( select ) => {
22
- const { getBlockSelectionEnd, getBlockName } = select(
23
- blockEditorStore
24
- );
22
+ const { getBlockSelectionEnd, getBlockName } =
23
+ select( blockEditorStore );
25
24
  const selectionEndClientId = getBlockSelectionEnd();
26
25
 
27
26
  // If the selected block is a widget area, return its clientId.
@@ -30,9 +29,8 @@ const useLastSelectedWidgetArea = () =>
30
29
  }
31
30
 
32
31
  const { getParentWidgetAreaBlock } = select( widgetsEditorStore );
33
- const widgetAreaBlock = getParentWidgetAreaBlock(
34
- selectionEndClientId
35
- );
32
+ const widgetAreaBlock =
33
+ getParentWidgetAreaBlock( selectionEndClientId );
36
34
  const widgetAreaBlockClientId = widgetAreaBlock?.clientId;
37
35
 
38
36
  if ( widgetAreaBlockClientId ) {
@@ -32,9 +32,8 @@ const useWidgetLibraryInsertionPoint = () => {
32
32
  getBlockIndex,
33
33
  } = select( blockEditorStore );
34
34
 
35
- const insertionPoint = select(
36
- editWidgetsStore
37
- ).__experimentalGetInsertionPoint();
35
+ const insertionPoint =
36
+ select( editWidgetsStore ).__experimentalGetInsertionPoint();
38
37
 
39
38
  // "Browse all" in the quick inserter will set the rootClientId to the current block.
40
39
  // Otherwise, it will just be undefined, and we'll have to handle it differently below.