@wordpress/customize-widgets 3.19.0 → 4.0.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,12 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 4.0.0 (2022-12-14)
6
+
7
+ ### Breaking Changes
8
+
9
+ - Updated dependencies to require React 18 ([45235](https://github.com/WordPress/gutenberg/pull/45235))
10
+
5
11
  ## 3.19.0 (2022-11-16)
6
12
 
7
13
  ## 3.18.0 (2022-11-02)
@@ -9,6 +9,8 @@ var _element = require("@wordpress/element");
9
9
 
10
10
  var _keyboardShortcuts = require("@wordpress/keyboard-shortcuts");
11
11
 
12
+ var _keycodes = require("@wordpress/keycodes");
13
+
12
14
  var _data = require("@wordpress/data");
13
15
 
14
16
  var _i18n = require("@wordpress/i18n");
@@ -59,7 +61,15 @@ function KeyboardShortcutsRegister() {
59
61
  keyCombination: {
60
62
  modifier: 'primaryShift',
61
63
  character: 'z'
62
- }
64
+ },
65
+ // Disable on Apple OS because it conflicts with the browser's
66
+ // history shortcut. It's a fine alias for both Windows and Linux.
67
+ // Since there's no conflict for Ctrl+Shift+Z on both Windows and
68
+ // Linux, we keep it as the default for consistency.
69
+ aliases: (0, _keycodes.isAppleOS)() ? [] : [{
70
+ modifier: 'primary',
71
+ character: 'y'
72
+ }]
63
73
  });
64
74
  registerShortcut({
65
75
  name: 'core/customize-widgets/save',
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/customize-widgets/src/components/keyboard-shortcuts/index.js"],"names":["KeyboardShortcuts","undo","redo","save","event","preventDefault","KeyboardShortcutsRegister","registerShortcut","unregisterShortcut","keyboardShortcutsStore","name","category","description","keyCombination","modifier","character","Register"],"mappings":";;;;;;;AAGA;;AACA;;AAIA;;AACA;;AATA;AACA;AACA;AASA,SAASA,iBAAT,OAAmD;AAAA,MAAvB;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,IAAR;AAAcC,IAAAA;AAAd,GAAuB;AAClD,sCAAa,6BAAb,EAA8CC,KAAF,IAAa;AACxDH,IAAAA,IAAI;AACJG,IAAAA,KAAK,CAACC,cAAN;AACA,GAHD;AAKA,sCAAa,6BAAb,EAA8CD,KAAF,IAAa;AACxDF,IAAAA,IAAI;AACJE,IAAAA,KAAK,CAACC,cAAN;AACA,GAHD;AAKA,sCAAa,6BAAb,EAA8CD,KAAF,IAAa;AACxDA,IAAAA,KAAK,CAACC,cAAN;AACAF,IAAAA,IAAI;AACJ,GAHD;AAKA,SAAO,IAAP;AACA;;AAED,SAASG,yBAAT,GAAqC;AACpC,QAAM;AAAEC,IAAAA,gBAAF;AAAoBC,IAAAA;AAApB,MAA2C,uBAChDC,wBADgD,CAAjD;AAIA,0BAAW,MAAM;AAChBF,IAAAA,gBAAgB,CAAE;AACjBG,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAE,cAAI,yBAAJ,CAHI;AAIjBC,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,SADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUAR,IAAAA,gBAAgB,CAAE;AACjBG,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAE,cAAI,sBAAJ,CAHI;AAIjBC,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,cADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUAR,IAAAA,gBAAgB,CAAE;AACjBG,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAE,cAAI,oBAAJ,CAHI;AAIjBC,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,SADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUA,WAAO,MAAM;AACZP,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACAA,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACAA,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACA,KAJD;AAKA,GApCD,EAoCG,CAAED,gBAAF,CApCH;AAsCA,SAAO,IAAP;AACA;;AAEDP,iBAAiB,CAACgB,QAAlB,GAA6BV,yBAA7B;eACeN,iB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\nfunction KeyboardShortcuts( { undo, redo, save } ) {\n\tuseShortcut( 'core/customize-widgets/undo', ( event ) => {\n\t\tundo();\n\t\tevent.preventDefault();\n\t} );\n\n\tuseShortcut( 'core/customize-widgets/redo', ( event ) => {\n\t\tredo();\n\t\tevent.preventDefault();\n\t} );\n\n\tuseShortcut( 'core/customize-widgets/save', ( event ) => {\n\t\tevent.preventDefault();\n\t\tsave();\n\t} );\n\n\treturn null;\n}\n\nfunction KeyboardShortcutsRegister() {\n\tconst { registerShortcut, unregisterShortcut } = useDispatch(\n\t\tkeyboardShortcutsStore\n\t);\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/undo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Undo your last changes.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/redo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Redo your last undo.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primaryShift',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/save',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Save your changes.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 's',\n\t\t\t},\n\t\t} );\n\n\t\treturn () => {\n\t\t\tunregisterShortcut( 'core/customize-widgets/undo' );\n\t\t\tunregisterShortcut( 'core/customize-widgets/redo' );\n\t\t\tunregisterShortcut( 'core/customize-widgets/save' );\n\t\t};\n\t}, [ registerShortcut ] );\n\n\treturn null;\n}\n\nKeyboardShortcuts.Register = KeyboardShortcutsRegister;\nexport default KeyboardShortcuts;\n"]}
1
+ {"version":3,"sources":["@wordpress/customize-widgets/src/components/keyboard-shortcuts/index.js"],"names":["KeyboardShortcuts","undo","redo","save","event","preventDefault","KeyboardShortcutsRegister","registerShortcut","unregisterShortcut","keyboardShortcutsStore","name","category","description","keyCombination","modifier","character","aliases","Register"],"mappings":";;;;;;;AAGA;;AACA;;AAIA;;AACA;;AACA;;AAVA;AACA;AACA;AAUA,SAASA,iBAAT,OAAmD;AAAA,MAAvB;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,IAAR;AAAcC,IAAAA;AAAd,GAAuB;AAClD,sCAAa,6BAAb,EAA8CC,KAAF,IAAa;AACxDH,IAAAA,IAAI;AACJG,IAAAA,KAAK,CAACC,cAAN;AACA,GAHD;AAKA,sCAAa,6BAAb,EAA8CD,KAAF,IAAa;AACxDF,IAAAA,IAAI;AACJE,IAAAA,KAAK,CAACC,cAAN;AACA,GAHD;AAKA,sCAAa,6BAAb,EAA8CD,KAAF,IAAa;AACxDA,IAAAA,KAAK,CAACC,cAAN;AACAF,IAAAA,IAAI;AACJ,GAHD;AAKA,SAAO,IAAP;AACA;;AAED,SAASG,yBAAT,GAAqC;AACpC,QAAM;AAAEC,IAAAA,gBAAF;AAAoBC,IAAAA;AAApB,MAA2C,uBAChDC,wBADgD,CAAjD;AAIA,0BAAW,MAAM;AAChBF,IAAAA,gBAAgB,CAAE;AACjBG,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAE,cAAI,yBAAJ,CAHI;AAIjBC,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,SADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUAR,IAAAA,gBAAgB,CAAE;AACjBG,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAE,cAAI,sBAAJ,CAHI;AAIjBC,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,cADK;AAEfC,QAAAA,SAAS,EAAE;AAFI,OAJC;AAQjB;AACA;AACA;AACA;AACAC,MAAAA,OAAO,EAAE,6BACN,EADM,GAEN,CACA;AACCF,QAAAA,QAAQ,EAAE,SADX;AAECC,QAAAA,SAAS,EAAE;AAFZ,OADA;AAdc,KAAF,CAAhB;AAsBAR,IAAAA,gBAAgB,CAAE;AACjBG,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAE,cAAI,oBAAJ,CAHI;AAIjBC,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,SADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUA,WAAO,MAAM;AACZP,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACAA,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACAA,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACA,KAJD;AAKA,GAhDD,EAgDG,CAAED,gBAAF,CAhDH;AAkDA,SAAO,IAAP;AACA;;AAEDP,iBAAiB,CAACiB,QAAlB,GAA6BX,yBAA7B;eACeN,iB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\nfunction KeyboardShortcuts( { undo, redo, save } ) {\n\tuseShortcut( 'core/customize-widgets/undo', ( event ) => {\n\t\tundo();\n\t\tevent.preventDefault();\n\t} );\n\n\tuseShortcut( 'core/customize-widgets/redo', ( event ) => {\n\t\tredo();\n\t\tevent.preventDefault();\n\t} );\n\n\tuseShortcut( 'core/customize-widgets/save', ( event ) => {\n\t\tevent.preventDefault();\n\t\tsave();\n\t} );\n\n\treturn null;\n}\n\nfunction KeyboardShortcutsRegister() {\n\tconst { registerShortcut, unregisterShortcut } = useDispatch(\n\t\tkeyboardShortcutsStore\n\t);\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/undo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Undo your last changes.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/redo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Redo your last undo.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primaryShift',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t\t// Disable on Apple OS because it conflicts with the browser's\n\t\t\t// history shortcut. It's a fine alias for both Windows and Linux.\n\t\t\t// Since there's no conflict for Ctrl+Shift+Z on both Windows and\n\t\t\t// Linux, we keep it as the default for consistency.\n\t\t\taliases: isAppleOS()\n\t\t\t\t? []\n\t\t\t\t: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmodifier: 'primary',\n\t\t\t\t\t\t\tcharacter: 'y',\n\t\t\t\t\t\t},\n\t\t\t\t ],\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/save',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Save your changes.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 's',\n\t\t\t},\n\t\t} );\n\n\t\treturn () => {\n\t\t\tunregisterShortcut( 'core/customize-widgets/undo' );\n\t\t\tunregisterShortcut( 'core/customize-widgets/redo' );\n\t\t\tunregisterShortcut( 'core/customize-widgets/save' );\n\t\t};\n\t}, [ registerShortcut ] );\n\n\treturn null;\n}\n\nKeyboardShortcuts.Register = KeyboardShortcutsRegister;\nexport default KeyboardShortcuts;\n"]}
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = useSidebarBlockEditor;
9
9
 
10
- var _lodash = require("lodash");
10
+ var _es = _interopRequireDefault(require("fast-deep-equal/es6"));
11
11
 
12
12
  var _element = require("@wordpress/element");
13
13
 
@@ -72,7 +72,7 @@ function useSidebarBlockEditor(sidebar) {
72
72
  const prevWidget = sidebar.getWidget(widgetId); // Bail out updates by returning the previous widgets.
73
73
  // Deep equality is necessary until the block editor's internals changes.
74
74
 
75
- if ((0, _lodash.isEqual)(nextBlock, prevBlock) && prevWidget) {
75
+ if ((0, _es.default)(nextBlock, prevBlock) && prevWidget) {
76
76
  return prevWidget;
77
77
  }
78
78
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/customize-widgets/src/components/sidebar-block-editor/use-sidebar-block-editor.js"],"names":["widgetsToBlocks","widgets","map","widget","useSidebarBlockEditor","sidebar","blocks","setBlocks","getWidgets","subscribe","prevWidgets","nextWidgets","prevBlocks","prevWidgetsMap","Map","id","prevBlocksMap","block","nextBlocks","nextWidget","prevWidget","get","onChangeBlocks","nextBlock","widgetId","has","prevBlock","getWidget","addedWidgetIds","setWidgets","reduce","updatedNextBlocks","index","addedWidgetId","slice"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isEqual } from 'lodash';\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 ( isEqual( nextBlock, prevBlock ) && prevWidget ) {\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"]}
1
+ {"version":3,"sources":["@wordpress/customize-widgets/src/components/sidebar-block-editor/use-sidebar-block-editor.js"],"names":["widgetsToBlocks","widgets","map","widget","useSidebarBlockEditor","sidebar","blocks","setBlocks","getWidgets","subscribe","prevWidgets","nextWidgets","prevBlocks","prevWidgetsMap","Map","id","prevBlocksMap","block","nextBlocks","nextWidget","prevWidget","get","onChangeBlocks","nextBlock","widgetId","has","prevBlock","getWidget","addedWidgetIds","setWidgets","reduce","updatedNextBlocks","index","addedWidgetId","slice"],"mappings":";;;;;;;;;AAGA;;AAKA;;AACA;;AACA;;AAKA;;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;AAGA,SAASA,eAAT,CAA0BC,OAA1B,EAAoC;AACnC,SAAOA,OAAO,CAACC,GAAR,CAAeC,MAAF,IAAc,0BAAeA,MAAf,CAA3B,CAAP;AACA;;AAEc,SAASC,qBAAT,CAAgCC,OAAhC,EAA0C;AACxD,QAAM,CAAEC,MAAF,EAAUC,SAAV,IAAwB,uBAAU,MACvCP,eAAe,CAAEK,OAAO,CAACG,UAAR,EAAF,CADc,CAA9B;AAIA,0BAAW,MAAM;AAChB,WAAOH,OAAO,CAACI,SAAR,CAAmB,CAAEC,WAAF,EAAeC,WAAf,KAAgC;AACzDJ,MAAAA,SAAS,CAAIK,UAAF,IAAkB;AAC5B,cAAMC,cAAc,GAAG,IAAIC,GAAJ,CACtBJ,WAAW,CAACR,GAAZ,CAAmBC,MAAF,IAAc,CAAEA,MAAM,CAACY,EAAT,EAAaZ,MAAb,CAA/B,CADsB,CAAvB;AAGA,cAAMa,aAAa,GAAG,IAAIF,GAAJ,CACrBF,UAAU,CAACV,GAAX,CAAkBe,KAAF,IAAa,CAC5B,mCAAsBA,KAAtB,CAD4B,EAE5BA,KAF4B,CAA7B,CADqB,CAAtB;AAOA,cAAMC,UAAU,GAAGP,WAAW,CAACT,GAAZ,CAAmBiB,UAAF,IAAkB;AACrD,gBAAMC,UAAU,GAAGP,cAAc,CAACQ,GAAf,CAAoBF,UAAU,CAACJ,EAA/B,CAAnB,CADqD,CAGrD;;AACA,cAAKK,UAAU,IAAIA,UAAU,KAAKD,UAAlC,EAA+C;AAC9C,mBAAOH,aAAa,CAACK,GAAd,CAAmBF,UAAU,CAACJ,EAA9B,CAAP;AACA;;AAED,iBAAO,0BAAeI,UAAf,CAAP;AACA,SATkB,CAAnB,CAX4B,CAsB5B;;AACA,YAAK,6BAAgBP,UAAhB,EAA4BM,UAA5B,CAAL,EAAgD;AAC/C,iBAAON,UAAP;AACA;;AAED,eAAOM,UAAP;AACA,OA5BQ,CAAT;AA6BA,KA9BM,CAAP;AA+BA,GAhCD,EAgCG,CAAEb,OAAF,CAhCH;AAkCA,QAAMiB,cAAc,GAAG,0BACpBJ,UAAF,IAAkB;AACjBX,IAAAA,SAAS,CAAIK,UAAF,IAAkB;AAC5B,UAAK,6BAAgBA,UAAhB,EAA4BM,UAA5B,CAAL,EAAgD;AAC/C,eAAON,UAAP;AACA;;AAED,YAAMI,aAAa,GAAG,IAAIF,GAAJ,CACrBF,UAAU,CAACV,GAAX,CAAkBe,KAAF,IAAa,CAC5B,mCAAsBA,KAAtB,CAD4B,EAE5BA,KAF4B,CAA7B,CADqB,CAAtB;AAOA,YAAMN,WAAW,GAAGO,UAAU,CAAChB,GAAX,CAAkBqB,SAAF,IAAiB;AACpD,cAAMC,QAAQ,GAAG,mCAAsBD,SAAtB,CAAjB,CADoD,CAGpD;;AACA,YAAKC,QAAQ,IAAIR,aAAa,CAACS,GAAd,CAAmBD,QAAnB,CAAjB,EAAiD;AAChD,gBAAME,SAAS,GAAGV,aAAa,CAACK,GAAd,CAAmBG,QAAnB,CAAlB;AACA,gBAAMJ,UAAU,GAAGf,OAAO,CAACsB,SAAR,CAAmBH,QAAnB,CAAnB,CAFgD,CAIhD;AACA;;AACA,cACC,iBAAeD,SAAf,EAA0BG,SAA1B,KACAN,UAFD,EAGE;AACD,mBAAOA,UAAP;AACA;;AAED,iBAAO,0BAAeG,SAAf,EAA0BH,UAA1B,CAAP;AACA,SAlBmD,CAoBpD;;;AACA,eAAO,0BAAeG,SAAf,CAAP;AACA,OAtBmB,CAApB,CAZ4B,CAoC5B;;AACA,UAAK,6BAAgBlB,OAAO,CAACG,UAAR,EAAhB,EAAsCG,WAAtC,CAAL,EAA2D;AAC1D,eAAOC,UAAP;AACA;;AAED,YAAMgB,cAAc,GAAGvB,OAAO,CAACwB,UAAR,CAAoBlB,WAApB,CAAvB;AAEA,aAAOO,UAAU,CAACY,MAAX,CACN,CAAEC,iBAAF,EAAqBR,SAArB,EAAgCS,KAAhC,KAA2C;AAC1C,cAAMC,aAAa,GAAGL,cAAc,CAAEI,KAAF,CAApC;;AAEA,YAAKC,aAAa,KAAK,IAAvB,EAA8B;AAC7B;AACA;AACA,cAAKF,iBAAiB,KAAKb,UAA3B,EAAwC;AACvCa,YAAAA,iBAAiB,GAAGb,UAAU,CAACgB,KAAX,EAApB;AACA;;AAEDH,UAAAA,iBAAiB,CAAEC,KAAF,CAAjB,GAA6B,iCAC5BT,SAD4B,EAE5BU,aAF4B,CAA7B;AAIA;;AAED,eAAOF,iBAAP;AACA,OAlBK,EAmBNb,UAnBM,CAAP;AAqBA,KAhEQ,CAAT;AAiEA,GAnEqB,EAoEtB,CAAEb,OAAF,CApEsB,CAAvB;AAuEA,SAAO,CAAEC,MAAF,EAAUgB,cAAV,EAA0BA,cAA1B,CAAP;AACA","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"]}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import { useEffect } from '@wordpress/element';
5
5
  import { useShortcut, store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';
6
+ import { isAppleOS } from '@wordpress/keycodes';
6
7
  import { useDispatch } from '@wordpress/data';
7
8
  import { __ } from '@wordpress/i18n';
8
9
 
@@ -49,7 +50,15 @@ function KeyboardShortcutsRegister() {
49
50
  keyCombination: {
50
51
  modifier: 'primaryShift',
51
52
  character: 'z'
52
- }
53
+ },
54
+ // Disable on Apple OS because it conflicts with the browser's
55
+ // history shortcut. It's a fine alias for both Windows and Linux.
56
+ // Since there's no conflict for Ctrl+Shift+Z on both Windows and
57
+ // Linux, we keep it as the default for consistency.
58
+ aliases: isAppleOS() ? [] : [{
59
+ modifier: 'primary',
60
+ character: 'y'
61
+ }]
53
62
  });
54
63
  registerShortcut({
55
64
  name: 'core/customize-widgets/save',
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/customize-widgets/src/components/keyboard-shortcuts/index.js"],"names":["useEffect","useShortcut","store","keyboardShortcutsStore","useDispatch","__","KeyboardShortcuts","undo","redo","save","event","preventDefault","KeyboardShortcutsRegister","registerShortcut","unregisterShortcut","name","category","description","keyCombination","modifier","character","Register"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,oBAA1B;AACA,SACCC,WADD,EAECC,KAAK,IAAIC,sBAFV,QAGO,+BAHP;AAIA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,EAAT,QAAmB,iBAAnB;;AAEA,SAASC,iBAAT,OAAmD;AAAA,MAAvB;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,IAAR;AAAcC,IAAAA;AAAd,GAAuB;AAClDR,EAAAA,WAAW,CAAE,6BAAF,EAAmCS,KAAF,IAAa;AACxDH,IAAAA,IAAI;AACJG,IAAAA,KAAK,CAACC,cAAN;AACA,GAHU,CAAX;AAKAV,EAAAA,WAAW,CAAE,6BAAF,EAAmCS,KAAF,IAAa;AACxDF,IAAAA,IAAI;AACJE,IAAAA,KAAK,CAACC,cAAN;AACA,GAHU,CAAX;AAKAV,EAAAA,WAAW,CAAE,6BAAF,EAAmCS,KAAF,IAAa;AACxDA,IAAAA,KAAK,CAACC,cAAN;AACAF,IAAAA,IAAI;AACJ,GAHU,CAAX;AAKA,SAAO,IAAP;AACA;;AAED,SAASG,yBAAT,GAAqC;AACpC,QAAM;AAAEC,IAAAA,gBAAF;AAAoBC,IAAAA;AAApB,MAA2CV,WAAW,CAC3DD,sBAD2D,CAA5D;AAIAH,EAAAA,SAAS,CAAE,MAAM;AAChBa,IAAAA,gBAAgB,CAAE;AACjBE,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAEZ,EAAE,CAAE,yBAAF,CAHE;AAIjBa,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,SADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUAP,IAAAA,gBAAgB,CAAE;AACjBE,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAEZ,EAAE,CAAE,sBAAF,CAHE;AAIjBa,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,cADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUAP,IAAAA,gBAAgB,CAAE;AACjBE,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAEZ,EAAE,CAAE,oBAAF,CAHE;AAIjBa,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,SADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUA,WAAO,MAAM;AACZN,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACAA,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACAA,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACA,KAJD;AAKA,GApCQ,EAoCN,CAAED,gBAAF,CApCM,CAAT;AAsCA,SAAO,IAAP;AACA;;AAEDP,iBAAiB,CAACe,QAAlB,GAA6BT,yBAA7B;AACA,eAAeN,iBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\nfunction KeyboardShortcuts( { undo, redo, save } ) {\n\tuseShortcut( 'core/customize-widgets/undo', ( event ) => {\n\t\tundo();\n\t\tevent.preventDefault();\n\t} );\n\n\tuseShortcut( 'core/customize-widgets/redo', ( event ) => {\n\t\tredo();\n\t\tevent.preventDefault();\n\t} );\n\n\tuseShortcut( 'core/customize-widgets/save', ( event ) => {\n\t\tevent.preventDefault();\n\t\tsave();\n\t} );\n\n\treturn null;\n}\n\nfunction KeyboardShortcutsRegister() {\n\tconst { registerShortcut, unregisterShortcut } = useDispatch(\n\t\tkeyboardShortcutsStore\n\t);\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/undo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Undo your last changes.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/redo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Redo your last undo.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primaryShift',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/save',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Save your changes.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 's',\n\t\t\t},\n\t\t} );\n\n\t\treturn () => {\n\t\t\tunregisterShortcut( 'core/customize-widgets/undo' );\n\t\t\tunregisterShortcut( 'core/customize-widgets/redo' );\n\t\t\tunregisterShortcut( 'core/customize-widgets/save' );\n\t\t};\n\t}, [ registerShortcut ] );\n\n\treturn null;\n}\n\nKeyboardShortcuts.Register = KeyboardShortcutsRegister;\nexport default KeyboardShortcuts;\n"]}
1
+ {"version":3,"sources":["@wordpress/customize-widgets/src/components/keyboard-shortcuts/index.js"],"names":["useEffect","useShortcut","store","keyboardShortcutsStore","isAppleOS","useDispatch","__","KeyboardShortcuts","undo","redo","save","event","preventDefault","KeyboardShortcutsRegister","registerShortcut","unregisterShortcut","name","category","description","keyCombination","modifier","character","aliases","Register"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,oBAA1B;AACA,SACCC,WADD,EAECC,KAAK,IAAIC,sBAFV,QAGO,+BAHP;AAIA,SAASC,SAAT,QAA0B,qBAA1B;AACA,SAASC,WAAT,QAA4B,iBAA5B;AACA,SAASC,EAAT,QAAmB,iBAAnB;;AAEA,SAASC,iBAAT,OAAmD;AAAA,MAAvB;AAAEC,IAAAA,IAAF;AAAQC,IAAAA,IAAR;AAAcC,IAAAA;AAAd,GAAuB;AAClDT,EAAAA,WAAW,CAAE,6BAAF,EAAmCU,KAAF,IAAa;AACxDH,IAAAA,IAAI;AACJG,IAAAA,KAAK,CAACC,cAAN;AACA,GAHU,CAAX;AAKAX,EAAAA,WAAW,CAAE,6BAAF,EAAmCU,KAAF,IAAa;AACxDF,IAAAA,IAAI;AACJE,IAAAA,KAAK,CAACC,cAAN;AACA,GAHU,CAAX;AAKAX,EAAAA,WAAW,CAAE,6BAAF,EAAmCU,KAAF,IAAa;AACxDA,IAAAA,KAAK,CAACC,cAAN;AACAF,IAAAA,IAAI;AACJ,GAHU,CAAX;AAKA,SAAO,IAAP;AACA;;AAED,SAASG,yBAAT,GAAqC;AACpC,QAAM;AAAEC,IAAAA,gBAAF;AAAoBC,IAAAA;AAApB,MAA2CV,WAAW,CAC3DF,sBAD2D,CAA5D;AAIAH,EAAAA,SAAS,CAAE,MAAM;AAChBc,IAAAA,gBAAgB,CAAE;AACjBE,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAEZ,EAAE,CAAE,yBAAF,CAHE;AAIjBa,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,SADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUAP,IAAAA,gBAAgB,CAAE;AACjBE,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAEZ,EAAE,CAAE,sBAAF,CAHE;AAIjBa,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,cADK;AAEfC,QAAAA,SAAS,EAAE;AAFI,OAJC;AAQjB;AACA;AACA;AACA;AACAC,MAAAA,OAAO,EAAElB,SAAS,KACf,EADe,GAEf,CACA;AACCgB,QAAAA,QAAQ,EAAE,SADX;AAECC,QAAAA,SAAS,EAAE;AAFZ,OADA;AAdc,KAAF,CAAhB;AAsBAP,IAAAA,gBAAgB,CAAE;AACjBE,MAAAA,IAAI,EAAE,6BADW;AAEjBC,MAAAA,QAAQ,EAAE,QAFO;AAGjBC,MAAAA,WAAW,EAAEZ,EAAE,CAAE,oBAAF,CAHE;AAIjBa,MAAAA,cAAc,EAAE;AACfC,QAAAA,QAAQ,EAAE,SADK;AAEfC,QAAAA,SAAS,EAAE;AAFI;AAJC,KAAF,CAAhB;AAUA,WAAO,MAAM;AACZN,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACAA,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACAA,MAAAA,kBAAkB,CAAE,6BAAF,CAAlB;AACA,KAJD;AAKA,GAhDQ,EAgDN,CAAED,gBAAF,CAhDM,CAAT;AAkDA,SAAO,IAAP;AACA;;AAEDP,iBAAiB,CAACgB,QAAlB,GAA6BV,yBAA7B;AACA,eAAeN,iBAAf","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport {\n\tuseShortcut,\n\tstore as keyboardShortcutsStore,\n} from '@wordpress/keyboard-shortcuts';\nimport { isAppleOS } from '@wordpress/keycodes';\nimport { useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\nfunction KeyboardShortcuts( { undo, redo, save } ) {\n\tuseShortcut( 'core/customize-widgets/undo', ( event ) => {\n\t\tundo();\n\t\tevent.preventDefault();\n\t} );\n\n\tuseShortcut( 'core/customize-widgets/redo', ( event ) => {\n\t\tredo();\n\t\tevent.preventDefault();\n\t} );\n\n\tuseShortcut( 'core/customize-widgets/save', ( event ) => {\n\t\tevent.preventDefault();\n\t\tsave();\n\t} );\n\n\treturn null;\n}\n\nfunction KeyboardShortcutsRegister() {\n\tconst { registerShortcut, unregisterShortcut } = useDispatch(\n\t\tkeyboardShortcutsStore\n\t);\n\n\tuseEffect( () => {\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/undo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Undo your last changes.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/redo',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Redo your last undo.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primaryShift',\n\t\t\t\tcharacter: 'z',\n\t\t\t},\n\t\t\t// Disable on Apple OS because it conflicts with the browser's\n\t\t\t// history shortcut. It's a fine alias for both Windows and Linux.\n\t\t\t// Since there's no conflict for Ctrl+Shift+Z on both Windows and\n\t\t\t// Linux, we keep it as the default for consistency.\n\t\t\taliases: isAppleOS()\n\t\t\t\t? []\n\t\t\t\t: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmodifier: 'primary',\n\t\t\t\t\t\t\tcharacter: 'y',\n\t\t\t\t\t\t},\n\t\t\t\t ],\n\t\t} );\n\n\t\tregisterShortcut( {\n\t\t\tname: 'core/customize-widgets/save',\n\t\t\tcategory: 'global',\n\t\t\tdescription: __( 'Save your changes.' ),\n\t\t\tkeyCombination: {\n\t\t\t\tmodifier: 'primary',\n\t\t\t\tcharacter: 's',\n\t\t\t},\n\t\t} );\n\n\t\treturn () => {\n\t\t\tunregisterShortcut( 'core/customize-widgets/undo' );\n\t\t\tunregisterShortcut( 'core/customize-widgets/redo' );\n\t\t\tunregisterShortcut( 'core/customize-widgets/save' );\n\t\t};\n\t}, [ registerShortcut ] );\n\n\treturn null;\n}\n\nKeyboardShortcuts.Register = KeyboardShortcutsRegister;\nexport default KeyboardShortcuts;\n"]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { isEqual } from 'lodash';
4
+ import fastDeepEqual from 'fast-deep-equal/es6';
5
5
  /**
6
6
  * WordPress dependencies
7
7
  */
@@ -59,7 +59,7 @@ export default function useSidebarBlockEditor(sidebar) {
59
59
  const prevWidget = sidebar.getWidget(widgetId); // Bail out updates by returning the previous widgets.
60
60
  // Deep equality is necessary until the block editor's internals changes.
61
61
 
62
- if (isEqual(nextBlock, prevBlock) && prevWidget) {
62
+ if (fastDeepEqual(nextBlock, prevBlock) && prevWidget) {
63
63
  return prevWidget;
64
64
  }
65
65
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/customize-widgets/src/components/sidebar-block-editor/use-sidebar-block-editor.js"],"names":["isEqual","useState","useEffect","useCallback","isShallowEqual","getWidgetIdFromBlock","addWidgetIdToBlock","blockToWidget","widgetToBlock","widgetsToBlocks","widgets","map","widget","useSidebarBlockEditor","sidebar","blocks","setBlocks","getWidgets","subscribe","prevWidgets","nextWidgets","prevBlocks","prevWidgetsMap","Map","id","prevBlocksMap","block","nextBlocks","nextWidget","prevWidget","get","onChangeBlocks","nextBlock","widgetId","has","prevBlock","getWidget","addedWidgetIds","setWidgets","reduce","updatedNextBlocks","index","addedWidgetId","slice"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,QAAxB;AAEA;AACA;AACA;;AACA,SAASC,QAAT,EAAmBC,SAAnB,EAA8BC,WAA9B,QAAiD,oBAAjD;AACA,OAAOC,cAAP,MAA2B,6BAA3B;AACA,SAASC,oBAAT,EAA+BC,kBAA/B,QAAyD,oBAAzD;AAEA;AACA;AACA;;AACA,SAASC,aAAT,EAAwBC,aAAxB,QAA6C,aAA7C;;AAEA,SAASC,eAAT,CAA0BC,OAA1B,EAAoC;AACnC,SAAOA,OAAO,CAACC,GAAR,CAAeC,MAAF,IAAcJ,aAAa,CAAEI,MAAF,CAAxC,CAAP;AACA;;AAED,eAAe,SAASC,qBAAT,CAAgCC,OAAhC,EAA0C;AACxD,QAAM,CAAEC,MAAF,EAAUC,SAAV,IAAwBf,QAAQ,CAAE,MACvCQ,eAAe,CAAEK,OAAO,CAACG,UAAR,EAAF,CADsB,CAAtC;AAIAf,EAAAA,SAAS,CAAE,MAAM;AAChB,WAAOY,OAAO,CAACI,SAAR,CAAmB,CAAEC,WAAF,EAAeC,WAAf,KAAgC;AACzDJ,MAAAA,SAAS,CAAIK,UAAF,IAAkB;AAC5B,cAAMC,cAAc,GAAG,IAAIC,GAAJ,CACtBJ,WAAW,CAACR,GAAZ,CAAmBC,MAAF,IAAc,CAAEA,MAAM,CAACY,EAAT,EAAaZ,MAAb,CAA/B,CADsB,CAAvB;AAGA,cAAMa,aAAa,GAAG,IAAIF,GAAJ,CACrBF,UAAU,CAACV,GAAX,CAAkBe,KAAF,IAAa,CAC5BrB,oBAAoB,CAAEqB,KAAF,CADQ,EAE5BA,KAF4B,CAA7B,CADqB,CAAtB;AAOA,cAAMC,UAAU,GAAGP,WAAW,CAACT,GAAZ,CAAmBiB,UAAF,IAAkB;AACrD,gBAAMC,UAAU,GAAGP,cAAc,CAACQ,GAAf,CAAoBF,UAAU,CAACJ,EAA/B,CAAnB,CADqD,CAGrD;;AACA,cAAKK,UAAU,IAAIA,UAAU,KAAKD,UAAlC,EAA+C;AAC9C,mBAAOH,aAAa,CAACK,GAAd,CAAmBF,UAAU,CAACJ,EAA9B,CAAP;AACA;;AAED,iBAAOhB,aAAa,CAAEoB,UAAF,CAApB;AACA,SATkB,CAAnB,CAX4B,CAsB5B;;AACA,YAAKxB,cAAc,CAAEiB,UAAF,EAAcM,UAAd,CAAnB,EAAgD;AAC/C,iBAAON,UAAP;AACA;;AAED,eAAOM,UAAP;AACA,OA5BQ,CAAT;AA6BA,KA9BM,CAAP;AA+BA,GAhCQ,EAgCN,CAAEb,OAAF,CAhCM,CAAT;AAkCA,QAAMiB,cAAc,GAAG5B,WAAW,CAC/BwB,UAAF,IAAkB;AACjBX,IAAAA,SAAS,CAAIK,UAAF,IAAkB;AAC5B,UAAKjB,cAAc,CAAEiB,UAAF,EAAcM,UAAd,CAAnB,EAAgD;AAC/C,eAAON,UAAP;AACA;;AAED,YAAMI,aAAa,GAAG,IAAIF,GAAJ,CACrBF,UAAU,CAACV,GAAX,CAAkBe,KAAF,IAAa,CAC5BrB,oBAAoB,CAAEqB,KAAF,CADQ,EAE5BA,KAF4B,CAA7B,CADqB,CAAtB;AAOA,YAAMN,WAAW,GAAGO,UAAU,CAAChB,GAAX,CAAkBqB,SAAF,IAAiB;AACpD,cAAMC,QAAQ,GAAG5B,oBAAoB,CAAE2B,SAAF,CAArC,CADoD,CAGpD;;AACA,YAAKC,QAAQ,IAAIR,aAAa,CAACS,GAAd,CAAmBD,QAAnB,CAAjB,EAAiD;AAChD,gBAAME,SAAS,GAAGV,aAAa,CAACK,GAAd,CAAmBG,QAAnB,CAAlB;AACA,gBAAMJ,UAAU,GAAGf,OAAO,CAACsB,SAAR,CAAmBH,QAAnB,CAAnB,CAFgD,CAIhD;AACA;;AACA,cAAKjC,OAAO,CAAEgC,SAAF,EAAaG,SAAb,CAAP,IAAmCN,UAAxC,EAAqD;AACpD,mBAAOA,UAAP;AACA;;AAED,iBAAOtB,aAAa,CAAEyB,SAAF,EAAaH,UAAb,CAApB;AACA,SAfmD,CAiBpD;;;AACA,eAAOtB,aAAa,CAAEyB,SAAF,CAApB;AACA,OAnBmB,CAApB,CAZ4B,CAiC5B;;AACA,UAAK5B,cAAc,CAAEU,OAAO,CAACG,UAAR,EAAF,EAAwBG,WAAxB,CAAnB,EAA2D;AAC1D,eAAOC,UAAP;AACA;;AAED,YAAMgB,cAAc,GAAGvB,OAAO,CAACwB,UAAR,CAAoBlB,WAApB,CAAvB;AAEA,aAAOO,UAAU,CAACY,MAAX,CACN,CAAEC,iBAAF,EAAqBR,SAArB,EAAgCS,KAAhC,KAA2C;AAC1C,cAAMC,aAAa,GAAGL,cAAc,CAAEI,KAAF,CAApC;;AAEA,YAAKC,aAAa,KAAK,IAAvB,EAA8B;AAC7B;AACA;AACA,cAAKF,iBAAiB,KAAKb,UAA3B,EAAwC;AACvCa,YAAAA,iBAAiB,GAAGb,UAAU,CAACgB,KAAX,EAApB;AACA;;AAEDH,UAAAA,iBAAiB,CAAEC,KAAF,CAAjB,GAA6BnC,kBAAkB,CAC9C0B,SAD8C,EAE9CU,aAF8C,CAA/C;AAIA;;AAED,eAAOF,iBAAP;AACA,OAlBK,EAmBNb,UAnBM,CAAP;AAqBA,KA7DQ,CAAT;AA8DA,GAhEgC,EAiEjC,CAAEb,OAAF,CAjEiC,CAAlC;AAoEA,SAAO,CAAEC,MAAF,EAAUgB,cAAV,EAA0BA,cAA1B,CAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { isEqual } from 'lodash';\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 ( isEqual( nextBlock, prevBlock ) && prevWidget ) {\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"]}
1
+ {"version":3,"sources":["@wordpress/customize-widgets/src/components/sidebar-block-editor/use-sidebar-block-editor.js"],"names":["fastDeepEqual","useState","useEffect","useCallback","isShallowEqual","getWidgetIdFromBlock","addWidgetIdToBlock","blockToWidget","widgetToBlock","widgetsToBlocks","widgets","map","widget","useSidebarBlockEditor","sidebar","blocks","setBlocks","getWidgets","subscribe","prevWidgets","nextWidgets","prevBlocks","prevWidgetsMap","Map","id","prevBlocksMap","block","nextBlocks","nextWidget","prevWidget","get","onChangeBlocks","nextBlock","widgetId","has","prevBlock","getWidget","addedWidgetIds","setWidgets","reduce","updatedNextBlocks","index","addedWidgetId","slice"],"mappings":"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","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"]}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Converts a hex value into the rgb equivalent.
3
+ *
4
+ * @param {string} hex - the hexadecimal value to convert
5
+ * @return {string} comma separated rgb values
6
+ */
1
7
  /**
2
8
  * Colors
3
9
  */
@@ -11,6 +17,12 @@
11
17
  * Don't add to this sheet unless you're pretty sure the value will be reused in many places.
12
18
  * For example, don't add rules to this sheet that affect block visuals. It's purely for UI.
13
19
  */
20
+ /**
21
+ * Converts a hex value into the rgb equivalent.
22
+ *
23
+ * @param {string} hex - the hexadecimal value to convert
24
+ * @return {string} comma separated rgb values
25
+ */
14
26
  /**
15
27
  * Colors
16
28
  */
@@ -82,6 +94,8 @@
82
94
  --wp-admin-theme-color-darker-20: #005a87;
83
95
  --wp-admin-theme-color-darker-20--rgb: 0, 90, 135;
84
96
  --wp-admin-border-width-focus: 2px;
97
+ --wp-block-synced-color: #7a00df;
98
+ --wp-block-synced-color--rgb: 122, 0, 223;
85
99
  }
86
100
  @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
87
101
  :root {
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Converts a hex value into the rgb equivalent.
3
+ *
4
+ * @param {string} hex - the hexadecimal value to convert
5
+ * @return {string} comma separated rgb values
6
+ */
1
7
  /**
2
8
  * Colors
3
9
  */
@@ -11,6 +17,12 @@
11
17
  * Don't add to this sheet unless you're pretty sure the value will be reused in many places.
12
18
  * For example, don't add rules to this sheet that affect block visuals. It's purely for UI.
13
19
  */
20
+ /**
21
+ * Converts a hex value into the rgb equivalent.
22
+ *
23
+ * @param {string} hex - the hexadecimal value to convert
24
+ * @return {string} comma separated rgb values
25
+ */
14
26
  /**
15
27
  * Colors
16
28
  */
@@ -82,6 +94,8 @@
82
94
  --wp-admin-theme-color-darker-20: #005a87;
83
95
  --wp-admin-theme-color-darker-20--rgb: 0, 90, 135;
84
96
  --wp-admin-border-width-focus: 2px;
97
+ --wp-block-synced-color: #7a00df;
98
+ --wp-block-synced-color--rgb: 122, 0, 223;
85
99
  }
86
100
  @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
87
101
  :root {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/customize-widgets",
3
- "version": "3.19.0",
3
+ "version": "4.0.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",
@@ -24,34 +24,35 @@
24
24
  "react-native": "src/index",
25
25
  "dependencies": {
26
26
  "@babel/runtime": "^7.16.0",
27
- "@wordpress/block-editor": "^10.5.0",
28
- "@wordpress/block-library": "^7.19.0",
29
- "@wordpress/blocks": "^11.21.0",
30
- "@wordpress/components": "^22.1.0",
31
- "@wordpress/compose": "^5.20.0",
32
- "@wordpress/core-data": "^5.5.0",
33
- "@wordpress/data": "^7.6.0",
34
- "@wordpress/dom": "^3.22.0",
35
- "@wordpress/element": "^4.20.0",
36
- "@wordpress/hooks": "^3.22.0",
37
- "@wordpress/i18n": "^4.22.0",
38
- "@wordpress/icons": "^9.13.0",
39
- "@wordpress/interface": "^4.21.0",
40
- "@wordpress/is-shallow-equal": "^4.22.0",
41
- "@wordpress/keyboard-shortcuts": "^3.20.0",
42
- "@wordpress/keycodes": "^3.22.0",
43
- "@wordpress/media-utils": "^4.13.0",
44
- "@wordpress/preferences": "^2.14.0",
45
- "@wordpress/widgets": "^2.20.0",
27
+ "@wordpress/block-editor": "^11.0.0",
28
+ "@wordpress/block-library": "^8.0.0",
29
+ "@wordpress/blocks": "^12.0.0",
30
+ "@wordpress/components": "^23.0.0",
31
+ "@wordpress/compose": "^6.0.0",
32
+ "@wordpress/core-data": "^6.0.0",
33
+ "@wordpress/data": "^8.0.0",
34
+ "@wordpress/dom": "^3.23.0",
35
+ "@wordpress/element": "^5.0.0",
36
+ "@wordpress/hooks": "^3.23.0",
37
+ "@wordpress/i18n": "^4.23.0",
38
+ "@wordpress/icons": "^9.14.0",
39
+ "@wordpress/interface": "^5.0.0",
40
+ "@wordpress/is-shallow-equal": "^4.23.0",
41
+ "@wordpress/keyboard-shortcuts": "^4.0.0",
42
+ "@wordpress/keycodes": "^3.23.0",
43
+ "@wordpress/media-utils": "^4.14.0",
44
+ "@wordpress/preferences": "^3.0.0",
45
+ "@wordpress/widgets": "^3.0.0",
46
46
  "classnames": "^2.3.1",
47
+ "fast-deep-equal": "^3.1.3",
47
48
  "lodash": "^4.17.21"
48
49
  },
49
50
  "peerDependencies": {
50
- "react": "^17.0.0",
51
- "react-dom": "^17.0.0"
51
+ "react": "^18.0.0",
52
+ "react-dom": "^18.0.0"
52
53
  },
53
54
  "publishConfig": {
54
55
  "access": "public"
55
56
  },
56
- "gitHead": "7ac04f446242452d3cb24372f9ca58f0cae97715"
57
+ "gitHead": "1eb65aabe6738097f4c062e78f69ae8f05879848"
57
58
  }
@@ -6,6 +6,7 @@ import {
6
6
  useShortcut,
7
7
  store as keyboardShortcutsStore,
8
8
  } from '@wordpress/keyboard-shortcuts';
9
+ import { isAppleOS } from '@wordpress/keycodes';
9
10
  import { useDispatch } from '@wordpress/data';
10
11
  import { __ } from '@wordpress/i18n';
11
12
 
@@ -52,6 +53,18 @@ function KeyboardShortcutsRegister() {
52
53
  modifier: 'primaryShift',
53
54
  character: 'z',
54
55
  },
56
+ // Disable on Apple OS because it conflicts with the browser's
57
+ // history shortcut. It's a fine alias for both Windows and Linux.
58
+ // Since there's no conflict for Ctrl+Shift+Z on both Windows and
59
+ // Linux, we keep it as the default for consistency.
60
+ aliases: isAppleOS()
61
+ ? []
62
+ : [
63
+ {
64
+ modifier: 'primary',
65
+ character: 'y',
66
+ },
67
+ ],
55
68
  } );
56
69
 
57
70
  registerShortcut( {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { isEqual } from 'lodash';
4
+ import fastDeepEqual from 'fast-deep-equal/es6';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -82,7 +82,10 @@ export default function useSidebarBlockEditor( sidebar ) {
82
82
 
83
83
  // Bail out updates by returning the previous widgets.
84
84
  // Deep equality is necessary until the block editor's internals changes.
85
- if ( isEqual( nextBlock, prevBlock ) && prevWidget ) {
85
+ if (
86
+ fastDeepEqual( nextBlock, prevBlock ) &&
87
+ prevWidget
88
+ ) {
86
89
  return prevWidget;
87
90
  }
88
91