diff --git a/package-lock.json b/package-lock.json index a92712b..2b881d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16463,6 +16463,11 @@ "resolved": "https://registry.npmjs.org/redux-optimist/-/redux-optimist-1.0.0.tgz", "integrity": "sha512-AG1v8o6UZcGXTEH2jVcWG6KD+gEix+Cj9JXAAzln9MPkauSVd98H7N7EOOyT/v4c9N1mJB4sm1zfspGlLDkUEw==" }, + "redux-undo": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/redux-undo/-/redux-undo-1.0.1.tgz", + "integrity": "sha512-0yFPT+FUgwxCEiS0Mg5T1S4tkgjR8h6sJRY9CW4EMsbJOf1SxO289TbJmlzhRouCHacdDF+powPjrjLHoJYxWQ==" + }, "reflect.ownkeys": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", diff --git a/package.json b/package.json index c6db140..ed44cad 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,9 @@ }, "devDependencies": { "@wordpress/env": "^2.0.0", + "@wordpress/data-controls": "^1.14.0", "@wordpress/eslint-plugin": "^7.2.0", + "@wordpress/keycodes": "^2.13.0", "@wordpress/scripts": "^12.2.0", "autoprefixer": "^9.8.6", "css-loader": "^4.3.0", @@ -44,6 +46,7 @@ "@wordpress/format-library": "^1.23.0", "@wordpress/i18n": "^3.15.0", "@wordpress/interface": "^0.8.0", - "@wordpress/media-utils": "^1.16.0" + "@wordpress/media-utils": "^1.16.0", + "redux-undo": "^1.0.1" } } diff --git a/src/components/block-editor/index.js b/src/components/block-editor/index.js index 88ae320..8f05c8d 100644 --- a/src/components/block-editor/index.js +++ b/src/components/block-editor/index.js @@ -23,7 +23,8 @@ import { import Sidebar from 'components/sidebar'; function BlockEditor( { settings: _settings } ) { - const [ blocks, updateBlocks ] = useState( [] ); + const blocks = useSelect((select) => select("getdavesbe").getBlocks()); + const { updateBlocks } = useDispatch("getdavesbe"); const { createInfoNotice } = useDispatch( 'core/notices' ); const canUserCreateMedia = useSelect( ( select ) => { @@ -47,17 +48,17 @@ function BlockEditor( { settings: _settings } ) { }; }, [ canUserCreateMedia, _settings ] ); - useEffect( () => { - const storedBlocks = window.localStorage.getItem( 'getdavesbeBlocks' ); + // useEffect( () => { + // const storedBlocks = window.localStorage.getItem( 'getdavesbeBlocks' ); - if ( storedBlocks?.length ) { - handleUpdateBlocks(() => parse(storedBlocks)); - createInfoNotice( 'Blocks loaded', { - type: 'snackbar', - isDismissible: true, - } ); - } - }, [] ); + // if ( storedBlocks?.length ) { + // handleUpdateBlocks(() => parse(storedBlocks)); + // createInfoNotice( 'Blocks loaded', { + // type: 'snackbar', + // isDismissible: true, + // } ); + // } + // }, [] ); /** * Wrapper for updating blocks. Required as `onInput` callback passed to @@ -70,8 +71,9 @@ function BlockEditor( { settings: _settings } ) { } function handlePersistBlocks( newBlocks ) { - updateBlocks( newBlocks ); - window.localStorage.setItem( 'getdavesbeBlocks', serialize( newBlocks ) ); + updateBlocks( newBlocks, true ); + // persistBlocks(newBlocks); + // window.localStorage.setItem( 'getdavesbeBlocks', serialize( newBlocks ) ); } return ( diff --git a/src/components/header/index.js b/src/components/header/index.js index e2cb932..4619802 100644 --- a/src/components/header/index.js +++ b/src/components/header/index.js @@ -3,17 +3,27 @@ */ import { __ } from '@wordpress/i18n'; + +import HistoryUndo from './undo'; +import HistoryRedo from "./redo"; + export default function Header() { + function handleUndo() { + console.log( 'undo' ); + } return (

- { __( 'Standalone Block Editor', 'getdavesbe' ) } + {__("Standalone Block Editor", "getdavesbe")}

+ + +
); } diff --git a/src/components/header/redo.js b/src/components/header/redo.js new file mode 100644 index 0000000..45e60a7 --- /dev/null +++ b/src/components/header/redo.js @@ -0,0 +1,35 @@ +import { __ } from '@wordpress/i18n'; +import { Button } from '@wordpress/components'; +import { withSelect, withDispatch } from '@wordpress/data'; +import { compose } from '@wordpress/compose'; +import { displayShortcut } from '@wordpress/keycodes'; +import { redo as redoIcon } from '@wordpress/icons'; + + +function HistoryRedo( { hasRedo, redo, ...props } ) { + return ( +