@wordpress/editor 13.14.0 → 13.15.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 +2 -0
- package/build/components/entities-saved-states/entity-record-item.js +3 -37
- package/build/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build/components/entities-saved-states/entity-type-list.js +2 -4
- package/build/components/entities-saved-states/entity-type-list.js.map +1 -1
- package/build/components/entities-saved-states/index.js +0 -1
- package/build/components/entities-saved-states/index.js.map +1 -1
- package/build/components/global-keyboard-shortcuts/{save-shortcut.js → index.js} +13 -25
- package/build/components/global-keyboard-shortcuts/index.js.map +1 -0
- package/build/components/index.js +32 -19
- package/build/components/index.js.map +1 -1
- package/build/components/post-preview-button/index.js +62 -157
- package/build/components/post-preview-button/index.js.map +1 -1
- package/build/components/post-publish-button/index.js +4 -9
- package/build/components/post-publish-button/index.js.map +1 -1
- package/build/components/post-publish-button/label.js +2 -4
- package/build/components/post-publish-button/label.js.map +1 -1
- package/build/components/post-publish-panel/index.js +1 -3
- package/build/components/post-publish-panel/index.js.map +1 -1
- package/build/components/post-saved-state/index.js +2 -5
- package/build/components/post-saved-state/index.js.map +1 -1
- package/build/components/post-schedule/label.js +4 -4
- package/build/components/post-schedule/label.js.map +1 -1
- package/build/components/post-sync-status/index.js +84 -5
- package/build/components/post-sync-status/index.js.map +1 -1
- package/build/components/post-text-editor/index.js +51 -58
- package/build/components/post-text-editor/index.js.map +1 -1
- package/build/store/actions.js +37 -3
- package/build/store/actions.js.map +1 -1
- package/build/store/selectors.js +53 -61
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/entities-saved-states/entity-record-item.js +6 -40
- package/build-module/components/entities-saved-states/entity-record-item.js.map +1 -1
- package/build-module/components/entities-saved-states/entity-type-list.js +2 -4
- package/build-module/components/entities-saved-states/entity-type-list.js.map +1 -1
- package/build-module/components/entities-saved-states/index.js +0 -1
- package/build-module/components/entities-saved-states/index.js.map +1 -1
- package/build-module/components/global-keyboard-shortcuts/{save-shortcut.js → index.js} +12 -23
- package/build-module/components/global-keyboard-shortcuts/index.js.map +1 -0
- package/build-module/components/index.js +9 -4
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/post-preview-button/index.js +63 -149
- package/build-module/components/post-preview-button/index.js.map +1 -1
- package/build-module/components/post-publish-button/index.js +4 -9
- package/build-module/components/post-publish-button/index.js.map +1 -1
- package/build-module/components/post-publish-button/label.js +2 -4
- package/build-module/components/post-publish-button/label.js.map +1 -1
- package/build-module/components/post-publish-panel/index.js +1 -3
- package/build-module/components/post-publish-panel/index.js.map +1 -1
- package/build-module/components/post-saved-state/index.js +2 -5
- package/build-module/components/post-saved-state/index.js.map +1 -1
- package/build-module/components/post-schedule/label.js +4 -4
- package/build-module/components/post-schedule/label.js.map +1 -1
- package/build-module/components/post-sync-status/index.js +84 -8
- package/build-module/components/post-sync-status/index.js.map +1 -1
- package/build-module/components/post-text-editor/index.js +48 -56
- package/build-module/components/post-text-editor/index.js.map +1 -1
- package/build-module/store/actions.js +31 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/selectors.js +46 -55
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +0 -18
- package/build-style/style.css +0 -18
- package/package.json +30 -30
- package/src/components/entities-saved-states/entity-record-item.js +3 -61
- package/src/components/entities-saved-states/entity-type-list.js +0 -2
- package/src/components/entities-saved-states/index.js +0 -1
- package/src/components/entities-saved-states/style.scss +0 -15
- package/src/components/global-keyboard-shortcuts/index.js +49 -0
- package/src/components/index.js +12 -3
- package/src/components/post-preview-button/index.js +73 -156
- package/src/components/post-preview-button/test/index.js +94 -158
- package/src/components/post-publish-button/index.js +2 -7
- package/src/components/post-publish-button/label.js +2 -2
- package/src/components/post-publish-button/test/index.js +0 -10
- package/src/components/post-publish-panel/index.js +1 -3
- package/src/components/post-saved-state/index.js +2 -5
- package/src/components/post-schedule/label.js +4 -4
- package/src/components/post-sync-status/index.js +100 -7
- package/src/components/post-text-editor/index.js +34 -57
- package/src/components/post-title/style.native.scss +5 -5
- package/src/store/actions.js +34 -2
- package/src/store/selectors.js +45 -41
- package/src/store/test/selectors.js +36 -25
- package/build/components/global-keyboard-shortcuts/save-shortcut.js.map +0 -1
- package/build/components/global-keyboard-shortcuts/text-editor-shortcuts.js +0 -22
- package/build/components/global-keyboard-shortcuts/text-editor-shortcuts.js.map +0 -1
- package/build/components/global-keyboard-shortcuts/visual-editor-shortcuts.js +0 -45
- package/build/components/global-keyboard-shortcuts/visual-editor-shortcuts.js.map +0 -1
- package/build-module/components/global-keyboard-shortcuts/save-shortcut.js.map +0 -1
- package/build-module/components/global-keyboard-shortcuts/text-editor-shortcuts.js +0 -12
- package/build-module/components/global-keyboard-shortcuts/text-editor-shortcuts.js.map +0 -1
- package/build-module/components/global-keyboard-shortcuts/visual-editor-shortcuts.js +0 -32
- package/build-module/components/global-keyboard-shortcuts/visual-editor-shortcuts.js.map +0 -1
- package/src/components/global-keyboard-shortcuts/save-shortcut.js +0 -55
- package/src/components/global-keyboard-shortcuts/text-editor-shortcuts.js +0 -8
- package/src/components/global-keyboard-shortcuts/visual-editor-shortcuts.js +0 -29
- package/src/components/post-text-editor/test/index.js +0 -156
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-saved-state/index.js"],"names":["PostSavedState","forceIsDirty","
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-saved-state/index.js"],"names":["PostSavedState","forceIsDirty","showIconLabels","forceSavedMessage","setForceSavedMessage","isLargeViewport","isAutosaving","isDirty","isNew","isPending","isPublished","isSaveable","isSaving","isScheduled","hasPublishAction","select","isEditedPostNew","isCurrentPostPublished","isCurrentPostScheduled","isEditedPostDirty","isSavingPost","isEditedPostSaveable","getCurrentPost","isAutosavingPost","getEditedPostAttribute","editorStore","_links","savePost","wasSaving","timeoutId","setTimeout","clearTimeout","label","shortLabel","isSaved","isSavedState","isDisabled","text","type","undefined","displayShortcut","primary","cloudUpload","check","cloud"],"mappings":";;;;;;;;;AAcA;;AAXA;;AAKA;;AAIA;;AACA;;AAEA;;AACA;;AACA;;AAKA;;AAtBA;AACA;AACA;;AAGA;AACA;AACA;;AAYA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,cAAT,CAAyB;AACvCC,EAAAA,YADuC;AAEvCC,EAAAA,cAAc,GAAG;AAFsB,CAAzB,EAGX;AACH,QAAM,CAAEC,iBAAF,EAAqBC,oBAArB,IAA8C,uBAAU,KAAV,CAApD;AACA,QAAMC,eAAe,GAAG,+BAAkB,OAAlB,CAAxB;AAEA,QAAM;AACLC,IAAAA,YADK;AAELC,IAAAA,OAFK;AAGLC,IAAAA,KAHK;AAILC,IAAAA,SAJK;AAKLC,IAAAA,WALK;AAMLC,IAAAA,UANK;AAOLC,IAAAA,QAPK;AAQLC,IAAAA,WARK;AASLC,IAAAA;AATK,MAUF,qBACDC,MAAF,IAAc;AAAA;;AACb,UAAM;AACLC,MAAAA,eADK;AAELC,MAAAA,sBAFK;AAGLC,MAAAA,sBAHK;AAILC,MAAAA,iBAJK;AAKLC,MAAAA,YALK;AAMLC,MAAAA,oBANK;AAOLC,MAAAA,cAPK;AAQLC,MAAAA,gBARK;AASLC,MAAAA;AATK,QAUFT,MAAM,CAAEU,YAAF,CAVV;AAYA,WAAO;AACNnB,MAAAA,YAAY,EAAEiB,gBAAgB,EADxB;AAENhB,MAAAA,OAAO,EAAEN,YAAY,IAAIkB,iBAAiB,EAFpC;AAGNX,MAAAA,KAAK,EAAEQ,eAAe,EAHhB;AAINP,MAAAA,SAAS,EAAE,cAAce,sBAAsB,CAAE,QAAF,CAJzC;AAKNd,MAAAA,WAAW,EAAEO,sBAAsB,EAL7B;AAMNL,MAAAA,QAAQ,EAAEQ,YAAY,EANhB;AAONT,MAAAA,UAAU,EAAEU,oBAAoB,EAP1B;AAQNR,MAAAA,WAAW,EAAEK,sBAAsB,EAR7B;AASNJ,MAAAA,gBAAgB,2BACfQ,cAAc,IAAII,MAAlB,GAA4B,mBAA5B,CADe,yEACsC;AAVhD,KAAP;AAYA,GA1BE,EA2BH,CAAEzB,YAAF,CA3BG,CAVJ;AAwCA,QAAM;AAAE0B,IAAAA;AAAF,MAAe,uBAAaF,YAAb,CAArB;AAEA,QAAMG,SAAS,GAAG,0BAAahB,QAAb,CAAlB;AAEA,0BAAW,MAAM;AAChB,QAAIiB,SAAJ;;AAEA,QAAKD,SAAS,IAAI,CAAEhB,QAApB,EAA+B;AAC9BR,MAAAA,oBAAoB,CAAE,IAAF,CAApB;AACAyB,MAAAA,SAAS,GAAGC,UAAU,CAAE,MAAM;AAC7B1B,QAAAA,oBAAoB,CAAE,KAAF,CAApB;AACA,OAFqB,EAEnB,IAFmB,CAAtB;AAGA;;AAED,WAAO,MAAM2B,YAAY,CAAEF,SAAF,CAAzB;AACA,GAXD,EAWG,CAAEjB,QAAF,CAXH,EAhDG,CA6DH;AACA;;AACA,MAAK,CAAEE,gBAAF,IAAsBL,SAA3B,EAAuC;AACtC,WAAO,IAAP;AACA;;AAED,MAAKC,WAAW,IAAIG,WAApB,EAAkC;AACjC,WAAO,IAAP;AACA;AAED;;;AACA,QAAMmB,KAAK,GAAGvB,SAAS,GAAG,cAAI,iBAAJ,CAAH,GAA6B,cAAI,YAAJ,CAApD;AAEA;;AACA,QAAMwB,UAAU,GAAG,cAAI,MAAJ,CAAnB;AAEA,QAAMC,OAAO,GAAG/B,iBAAiB,IAAM,CAAEK,KAAF,IAAW,CAAED,OAApD;AACA,QAAM4B,YAAY,GAAGvB,QAAQ,IAAIsB,OAAjC;AACA,QAAME,UAAU,GAAGxB,QAAQ,IAAIsB,OAAZ,IAAuB,CAAEvB,UAA5C;AAEA,MAAI0B,IAAJ;;AAEA,MAAKzB,QAAL,EAAgB;AACfyB,IAAAA,IAAI,GAAG/B,YAAY,GAAG,cAAI,YAAJ,CAAH,GAAwB,cAAI,QAAJ,CAA3C;AACA,GAFD,MAEO,IAAK4B,OAAL,EAAe;AACrBG,IAAAA,IAAI,GAAG,cAAI,OAAJ,CAAP;AACA,GAFM,MAEA,IAAKhC,eAAL,EAAuB;AAC7BgC,IAAAA,IAAI,GAAGL,KAAP;AACA,GAFM,MAEA,IAAK9B,cAAL,EAAsB;AAC5BmC,IAAAA,IAAI,GAAGJ,UAAP;AACA,GA3FE,CA6FH;AACA;;;AACA,SACC,4BAAC,kBAAD;AACC,IAAA,SAAS,EACRtB,UAAU,IAAIC,QAAd,GACG,yBAAY;AACZ,gCAA0B,CAAEuB,YADhB;AAEZ,iCAA2BA,YAFf;AAGZ,mBAAavB,QAHD;AAIZ,uBAAiBN,YAJL;AAKZ,kBAAY4B,OALA;AAMZ,OAAE,+CAAqB;AACtBI,QAAAA,IAAI,EAAE;AADgB,OAArB,CAAF,GAEO1B;AARK,KAAZ,CADH,GAWG2B,SAbL;AAeC,IAAA,OAAO,EAAGH,UAAU,GAAGG,SAAH,GAAe,MAAMZ,QAAQ;AACjD;AACH;AACA;AACA;AAnBE;AAoBC,IAAA,QAAQ,EAAGS,UAAU,GAAGG,SAAH,GAAeC,0BAAgBC,OAAhB,CAAyB,GAAzB;AACpC;AACH;AACA;AACA;AACA;AACA;AA1BE;AA2BC,IAAA,WAAW,MA3BZ;AA4BC,IAAA,OAAO,EAAC,UA5BT;AA6BC,IAAA,IAAI,EAAGpC,eAAe,GAAGkC,SAAH,GAAeG,kBA7BtC,CA8BC;AA9BD;AA+BC,IAAA,KAAK,EAAGL,IAAI,IAAIL,KA/BjB;AAgCC,qBAAgBI;AAhCjB,KAkCGD,YAAY,IAAI,4BAAC,WAAD;AAAM,IAAA,IAAI,EAAGD,OAAO,GAAGS,YAAH,GAAWC;AAA/B,IAlCnB,EAmCGP,IAnCH,CADD;AAuCA","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\t__unstableGetAnimateClassName as getAnimateClassName,\n\tButton,\n} from '@wordpress/components';\nimport { usePrevious, useViewportMatch } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Icon, check, cloud, cloudUpload } from '@wordpress/icons';\nimport { displayShortcut } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\n/**\n * Component showing whether the post is saved or not and providing save\n * buttons.\n *\n * @param {Object} props Component props.\n * @param {?boolean} props.forceIsDirty Whether to force the post to be marked\n * as dirty.\n * @param {?boolean} props.showIconLabels Whether interface buttons show labels instead of icons\n * @return {import('@wordpress/element').WPComponent} The component.\n */\nexport default function PostSavedState( {\n\tforceIsDirty,\n\tshowIconLabels = false,\n} ) {\n\tconst [ forceSavedMessage, setForceSavedMessage ] = useState( false );\n\tconst isLargeViewport = useViewportMatch( 'small' );\n\n\tconst {\n\t\tisAutosaving,\n\t\tisDirty,\n\t\tisNew,\n\t\tisPending,\n\t\tisPublished,\n\t\tisSaveable,\n\t\tisSaving,\n\t\tisScheduled,\n\t\thasPublishAction,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisEditedPostNew,\n\t\t\t\tisCurrentPostPublished,\n\t\t\t\tisCurrentPostScheduled,\n\t\t\t\tisEditedPostDirty,\n\t\t\t\tisSavingPost,\n\t\t\t\tisEditedPostSaveable,\n\t\t\t\tgetCurrentPost,\n\t\t\t\tisAutosavingPost,\n\t\t\t\tgetEditedPostAttribute,\n\t\t\t} = select( editorStore );\n\n\t\t\treturn {\n\t\t\t\tisAutosaving: isAutosavingPost(),\n\t\t\t\tisDirty: forceIsDirty || isEditedPostDirty(),\n\t\t\t\tisNew: isEditedPostNew(),\n\t\t\t\tisPending: 'pending' === getEditedPostAttribute( 'status' ),\n\t\t\t\tisPublished: isCurrentPostPublished(),\n\t\t\t\tisSaving: isSavingPost(),\n\t\t\t\tisSaveable: isEditedPostSaveable(),\n\t\t\t\tisScheduled: isCurrentPostScheduled(),\n\t\t\t\thasPublishAction:\n\t\t\t\t\tgetCurrentPost()?._links?.[ 'wp:action-publish' ] ?? false,\n\t\t\t};\n\t\t},\n\t\t[ forceIsDirty ]\n\t);\n\n\tconst { savePost } = useDispatch( editorStore );\n\n\tconst wasSaving = usePrevious( isSaving );\n\n\tuseEffect( () => {\n\t\tlet timeoutId;\n\n\t\tif ( wasSaving && ! isSaving ) {\n\t\t\tsetForceSavedMessage( true );\n\t\t\ttimeoutId = setTimeout( () => {\n\t\t\t\tsetForceSavedMessage( false );\n\t\t\t}, 1000 );\n\t\t}\n\n\t\treturn () => clearTimeout( timeoutId );\n\t}, [ isSaving ] );\n\n\t// Once the post has been submitted for review this button\n\t// is not needed for the contributor role.\n\tif ( ! hasPublishAction && isPending ) {\n\t\treturn null;\n\t}\n\n\tif ( isPublished || isScheduled ) {\n\t\treturn null;\n\t}\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst label = isPending ? __( 'Save as pending' ) : __( 'Save draft' );\n\n\t/* translators: button label text should, if possible, be under 16 characters. */\n\tconst shortLabel = __( 'Save' );\n\n\tconst isSaved = forceSavedMessage || ( ! isNew && ! isDirty );\n\tconst isSavedState = isSaving || isSaved;\n\tconst isDisabled = isSaving || isSaved || ! isSaveable;\n\n\tlet text;\n\n\tif ( isSaving ) {\n\t\ttext = isAutosaving ? __( 'Autosaving' ) : __( 'Saving' );\n\t} else if ( isSaved ) {\n\t\ttext = __( 'Saved' );\n\t} else if ( isLargeViewport ) {\n\t\ttext = label;\n\t} else if ( showIconLabels ) {\n\t\ttext = shortLabel;\n\t}\n\n\t// Use common Button instance for all saved states so that focus is not\n\t// lost.\n\treturn (\n\t\t<Button\n\t\t\tclassName={\n\t\t\t\tisSaveable || isSaving\n\t\t\t\t\t? classnames( {\n\t\t\t\t\t\t\t'editor-post-save-draft': ! isSavedState,\n\t\t\t\t\t\t\t'editor-post-saved-state': isSavedState,\n\t\t\t\t\t\t\t'is-saving': isSaving,\n\t\t\t\t\t\t\t'is-autosaving': isAutosaving,\n\t\t\t\t\t\t\t'is-saved': isSaved,\n\t\t\t\t\t\t\t[ getAnimateClassName( {\n\t\t\t\t\t\t\t\ttype: 'loading',\n\t\t\t\t\t\t\t} ) ]: isSaving,\n\t\t\t\t\t } )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tonClick={ isDisabled ? undefined : () => savePost() }\n\t\t\t/*\n\t\t\t * We want the tooltip to show the keyboard shortcut only when the\n\t\t\t * button does something, i.e. when it's not disabled.\n\t\t\t */\n\t\t\tshortcut={ isDisabled ? undefined : displayShortcut.primary( 's' ) }\n\t\t\t/*\n\t\t\t * Displaying the keyboard shortcut conditionally makes the tooltip\n\t\t\t * itself show conditionally. This would trigger a full-rerendering\n\t\t\t * of the button that we want to avoid. By setting `showTooltip`,\n\t\t\t & the tooltip is always rendered even when there's no keyboard shortcut.\n\t\t\t */\n\t\t\tshowTooltip\n\t\t\tvariant=\"tertiary\"\n\t\t\ticon={ isLargeViewport ? undefined : cloudUpload }\n\t\t\t// Make sure the aria-label has always a value, as the default `text` is undefined on small screens.\n\t\t\tlabel={ text || label }\n\t\t\taria-disabled={ isDisabled }\n\t\t>\n\t\t\t{ isSavedState && <Icon icon={ isSaved ? check : cloud } /> }\n\t\t\t{ text }\n\t\t</Button>\n\t);\n}\n"]}
|
|
@@ -45,7 +45,7 @@ function usePostScheduleLabel({
|
|
|
45
45
|
function getFullPostScheduleLabel(dateAttribute) {
|
|
46
46
|
const date = (0, _date.getDate)(dateAttribute);
|
|
47
47
|
const timezoneAbbreviation = getTimezoneAbbreviation();
|
|
48
|
-
const formattedDate = (0, _date.dateI18n)( // translators: If using a space between 'g:i' and 'a', use a non-breaking
|
|
48
|
+
const formattedDate = (0, _date.dateI18n)( // translators: If using a space between 'g:i' and 'a', use a non-breaking space.
|
|
49
49
|
(0, _i18n._x)('F j, Y g:i\xa0a', 'post schedule full date format'), date);
|
|
50
50
|
return (0, _i18n.isRTL)() ? `${timezoneAbbreviation} ${formattedDate}` : `${formattedDate} ${timezoneAbbreviation}`;
|
|
51
51
|
}
|
|
@@ -68,7 +68,7 @@ function getPostScheduleLabel(dateAttribute, {
|
|
|
68
68
|
|
|
69
69
|
if (isSameDay(date, now)) {
|
|
70
70
|
return (0, _i18n.sprintf)( // translators: %s: Time of day the post is scheduled for.
|
|
71
|
-
(0, _i18n.__)('Today at %s'), // translators: If using a space between 'g:i' and 'a', use a non-breaking
|
|
71
|
+
(0, _i18n.__)('Today at %s'), // translators: If using a space between 'g:i' and 'a', use a non-breaking space.
|
|
72
72
|
(0, _date.dateI18n)((0, _i18n._x)('g:i\xa0a', 'post schedule time format'), date));
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -77,12 +77,12 @@ function getPostScheduleLabel(dateAttribute, {
|
|
|
77
77
|
|
|
78
78
|
if (isSameDay(date, tomorrow)) {
|
|
79
79
|
return (0, _i18n.sprintf)( // translators: %s: Time of day the post is scheduled for.
|
|
80
|
-
(0, _i18n.__)('Tomorrow at %s'), // translators: If using a space between 'g:i' and 'a', use a non-breaking
|
|
80
|
+
(0, _i18n.__)('Tomorrow at %s'), // translators: If using a space between 'g:i' and 'a', use a non-breaking space.
|
|
81
81
|
(0, _date.dateI18n)((0, _i18n._x)('g:i\xa0a', 'post schedule time format'), date));
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
if (date.getFullYear() === now.getFullYear()) {
|
|
85
|
-
return (0, _date.dateI18n)( // translators: If using a space between 'g:i' and 'a', use a non-breaking
|
|
85
|
+
return (0, _date.dateI18n)( // translators: If using a space between 'g:i' and 'a', use a non-breaking space.
|
|
86
86
|
(0, _i18n._x)('F j g:i\xa0a', 'post schedule date format without year'), date);
|
|
87
87
|
}
|
|
88
88
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-schedule/label.js"],"names":["PostScheduleLabel","props","usePostScheduleLabel","full","date","isFloating","select","editorStore","getEditedPostAttribute","isEditedPostDateFloating","getFullPostScheduleLabel","getPostScheduleLabel","dateAttribute","timezoneAbbreviation","getTimezoneAbbreviation","formattedDate","now","Date","isTimezoneSameAsSiteTimezone","isSameDay","tomorrow","setDate","getDate","getFullYear","timezone","abbr","isNaN","Number","symbol","offset","siteOffset","dateOffset","getTimezoneOffset","left","right","getMonth"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf, isRTL } from '@wordpress/i18n';\nimport { getSettings, getDate, dateI18n } from '@wordpress/date';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostScheduleLabel( props ) {\n\treturn usePostScheduleLabel( props );\n}\n\nexport function usePostScheduleLabel( { full = false } = {} ) {\n\tconst { date, isFloating } = useSelect(\n\t\t( select ) => ( {\n\t\t\tdate: select( editorStore ).getEditedPostAttribute( 'date' ),\n\t\t\tisFloating: select( editorStore ).isEditedPostDateFloating(),\n\t\t} ),\n\t\t[]\n\t);\n\n\treturn full\n\t\t? getFullPostScheduleLabel( date )\n\t\t: getPostScheduleLabel( date, { isFloating } );\n}\n\nexport function getFullPostScheduleLabel( dateAttribute ) {\n\tconst date = getDate( dateAttribute );\n\n\tconst timezoneAbbreviation = getTimezoneAbbreviation();\n\tconst formattedDate = dateI18n(\n\t\t// translators: If using a space between 'g:i' and 'a', use a non-breaking
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-schedule/label.js"],"names":["PostScheduleLabel","props","usePostScheduleLabel","full","date","isFloating","select","editorStore","getEditedPostAttribute","isEditedPostDateFloating","getFullPostScheduleLabel","getPostScheduleLabel","dateAttribute","timezoneAbbreviation","getTimezoneAbbreviation","formattedDate","now","Date","isTimezoneSameAsSiteTimezone","isSameDay","tomorrow","setDate","getDate","getFullYear","timezone","abbr","isNaN","Number","symbol","offset","siteOffset","dateOffset","getTimezoneOffset","left","right","getMonth"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, _x, sprintf, isRTL } from '@wordpress/i18n';\nimport { getSettings, getDate, dateI18n } from '@wordpress/date';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostScheduleLabel( props ) {\n\treturn usePostScheduleLabel( props );\n}\n\nexport function usePostScheduleLabel( { full = false } = {} ) {\n\tconst { date, isFloating } = useSelect(\n\t\t( select ) => ( {\n\t\t\tdate: select( editorStore ).getEditedPostAttribute( 'date' ),\n\t\t\tisFloating: select( editorStore ).isEditedPostDateFloating(),\n\t\t} ),\n\t\t[]\n\t);\n\n\treturn full\n\t\t? getFullPostScheduleLabel( date )\n\t\t: getPostScheduleLabel( date, { isFloating } );\n}\n\nexport function getFullPostScheduleLabel( dateAttribute ) {\n\tconst date = getDate( dateAttribute );\n\n\tconst timezoneAbbreviation = getTimezoneAbbreviation();\n\tconst formattedDate = dateI18n(\n\t\t// translators: If using a space between 'g:i' and 'a', use a non-breaking space.\n\t\t_x( 'F j, Y g:i\\xa0a', 'post schedule full date format' ),\n\t\tdate\n\t);\n\treturn isRTL()\n\t\t? `${ timezoneAbbreviation } ${ formattedDate }`\n\t\t: `${ formattedDate } ${ timezoneAbbreviation }`;\n}\n\nexport function getPostScheduleLabel(\n\tdateAttribute,\n\t{ isFloating = false, now = new Date() } = {}\n) {\n\tif ( ! dateAttribute || isFloating ) {\n\t\treturn __( 'Immediately' );\n\t}\n\n\t// If the user timezone does not equal the site timezone then using words\n\t// like 'tomorrow' is confusing, so show the full date.\n\tif ( ! isTimezoneSameAsSiteTimezone( now ) ) {\n\t\treturn getFullPostScheduleLabel( dateAttribute );\n\t}\n\n\tconst date = getDate( dateAttribute );\n\n\tif ( isSameDay( date, now ) ) {\n\t\treturn sprintf(\n\t\t\t// translators: %s: Time of day the post is scheduled for.\n\t\t\t__( 'Today at %s' ),\n\t\t\t// translators: If using a space between 'g:i' and 'a', use a non-breaking space.\n\t\t\tdateI18n( _x( 'g:i\\xa0a', 'post schedule time format' ), date )\n\t\t);\n\t}\n\n\tconst tomorrow = new Date( now );\n\ttomorrow.setDate( tomorrow.getDate() + 1 );\n\n\tif ( isSameDay( date, tomorrow ) ) {\n\t\treturn sprintf(\n\t\t\t// translators: %s: Time of day the post is scheduled for.\n\t\t\t__( 'Tomorrow at %s' ),\n\t\t\t// translators: If using a space between 'g:i' and 'a', use a non-breaking space.\n\t\t\tdateI18n( _x( 'g:i\\xa0a', 'post schedule time format' ), date )\n\t\t);\n\t}\n\n\tif ( date.getFullYear() === now.getFullYear() ) {\n\t\treturn dateI18n(\n\t\t\t// translators: If using a space between 'g:i' and 'a', use a non-breaking space.\n\t\t\t_x( 'F j g:i\\xa0a', 'post schedule date format without year' ),\n\t\t\tdate\n\t\t);\n\t}\n\n\treturn dateI18n(\n\t\t// translators: Use a non-breaking space between 'g:i' and 'a' if appropriate.\n\t\t_x( 'F j, Y g:i\\xa0a', 'post schedule full date format' ),\n\t\tdate\n\t);\n}\n\nfunction getTimezoneAbbreviation() {\n\tconst { timezone } = getSettings();\n\n\tif ( timezone.abbr && isNaN( Number( timezone.abbr ) ) ) {\n\t\treturn timezone.abbr;\n\t}\n\n\tconst symbol = timezone.offset < 0 ? '' : '+';\n\treturn `UTC${ symbol }${ timezone.offset }`;\n}\n\nfunction isTimezoneSameAsSiteTimezone( date ) {\n\tconst { timezone } = getSettings();\n\n\tconst siteOffset = Number( timezone.offset );\n\tconst dateOffset = -1 * ( date.getTimezoneOffset() / 60 );\n\treturn siteOffset === dateOffset;\n}\n\nfunction isSameDay( left, right ) {\n\treturn (\n\t\tleft.getDate() === right.getDate() &&\n\t\tleft.getMonth() === right.getMonth() &&\n\t\tleft.getFullYear() === right.getFullYear()\n\t);\n}\n"]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.PostSyncStatusModal = PostSyncStatusModal;
|
|
6
7
|
exports.default = PostSyncStatus;
|
|
7
8
|
|
|
8
9
|
var _element = require("@wordpress/element");
|
|
@@ -13,8 +14,12 @@ var _i18n = require("@wordpress/i18n");
|
|
|
13
14
|
|
|
14
15
|
var _components = require("@wordpress/components");
|
|
15
16
|
|
|
17
|
+
var _blockEditor = require("@wordpress/block-editor");
|
|
18
|
+
|
|
16
19
|
var _store = require("../../store");
|
|
17
20
|
|
|
21
|
+
var _lockUnlock = require("../../lock-unlock");
|
|
22
|
+
|
|
18
23
|
/**
|
|
19
24
|
* WordPress dependencies
|
|
20
25
|
*/
|
|
@@ -25,24 +30,98 @@ var _store = require("../../store");
|
|
|
25
30
|
function PostSyncStatus() {
|
|
26
31
|
const {
|
|
27
32
|
syncStatus,
|
|
28
|
-
postType
|
|
33
|
+
postType,
|
|
34
|
+
meta
|
|
29
35
|
} = (0, _data.useSelect)(select => {
|
|
30
36
|
const {
|
|
31
37
|
getEditedPostAttribute
|
|
32
38
|
} = select(_store.store);
|
|
33
39
|
return {
|
|
34
40
|
syncStatus: getEditedPostAttribute('wp_pattern_sync_status'),
|
|
41
|
+
meta: getEditedPostAttribute('meta'),
|
|
35
42
|
postType: getEditedPostAttribute('type')
|
|
36
43
|
};
|
|
37
|
-
}
|
|
44
|
+
});
|
|
38
45
|
|
|
39
46
|
if (postType !== 'wp_block') {
|
|
40
47
|
return null;
|
|
41
|
-
}
|
|
48
|
+
} // When the post is first created, the top level wp_pattern_sync_status is not set so get meta value instead.
|
|
49
|
+
|
|
42
50
|
|
|
43
|
-
const
|
|
51
|
+
const currentSyncStatus = meta?.wp_pattern_sync_status === 'unsynced' ? 'unsynced' : syncStatus;
|
|
44
52
|
return (0, _element.createElement)(_components.PanelRow, {
|
|
45
53
|
className: "edit-post-sync-status"
|
|
46
|
-
}, (0, _element.createElement)("span", null, (0, _i18n.__)('Sync status')), (0, _element.createElement)("div", null,
|
|
54
|
+
}, (0, _element.createElement)("span", null, (0, _i18n.__)('Sync status')), (0, _element.createElement)("div", null, currentSyncStatus === 'unsynced' ? (0, _i18n.__)('Not synced') : (0, _i18n.__)('Fully synced')));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function PostSyncStatusModal() {
|
|
58
|
+
const {
|
|
59
|
+
editPost
|
|
60
|
+
} = (0, _data.useDispatch)(_store.store);
|
|
61
|
+
const [isModalOpen, setIsModalOpen] = (0, _element.useState)(false);
|
|
62
|
+
const [syncType, setSyncType] = (0, _element.useState)(undefined);
|
|
63
|
+
const {
|
|
64
|
+
postType,
|
|
65
|
+
isNewPost
|
|
66
|
+
} = (0, _data.useSelect)(select => {
|
|
67
|
+
const {
|
|
68
|
+
getEditedPostAttribute,
|
|
69
|
+
isCleanNewPost
|
|
70
|
+
} = select(_store.store);
|
|
71
|
+
return {
|
|
72
|
+
postType: getEditedPostAttribute('type'),
|
|
73
|
+
isNewPost: isCleanNewPost()
|
|
74
|
+
};
|
|
75
|
+
}, []);
|
|
76
|
+
(0, _element.useEffect)(() => {
|
|
77
|
+
if (isNewPost && postType === 'wp_block') {
|
|
78
|
+
setIsModalOpen(true);
|
|
79
|
+
} // We only want the modal to open when the page is first loaded.
|
|
80
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
81
|
+
|
|
82
|
+
}, []);
|
|
83
|
+
|
|
84
|
+
const setSyncStatus = () => {
|
|
85
|
+
editPost({
|
|
86
|
+
meta: {
|
|
87
|
+
wp_pattern_sync_status: syncType
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
if (postType !== 'wp_block' || !isNewPost) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const {
|
|
97
|
+
ReusableBlocksRenameHint
|
|
98
|
+
} = (0, _lockUnlock.unlock)(_blockEditor.privateApis);
|
|
99
|
+
return (0, _element.createElement)(_element.Fragment, null, isModalOpen && (0, _element.createElement)(_components.Modal, {
|
|
100
|
+
title: (0, _i18n.__)('Set pattern sync status'),
|
|
101
|
+
onRequestClose: () => {
|
|
102
|
+
setIsModalOpen(false);
|
|
103
|
+
},
|
|
104
|
+
overlayClassName: "reusable-blocks-menu-items__convert-modal"
|
|
105
|
+
}, (0, _element.createElement)("form", {
|
|
106
|
+
onSubmit: event => {
|
|
107
|
+
event.preventDefault();
|
|
108
|
+
setIsModalOpen(false);
|
|
109
|
+
setSyncStatus();
|
|
110
|
+
}
|
|
111
|
+
}, (0, _element.createElement)(_components.__experimentalVStack, {
|
|
112
|
+
spacing: "5"
|
|
113
|
+
}, (0, _element.createElement)(ReusableBlocksRenameHint, null), (0, _element.createElement)(_components.ToggleControl, {
|
|
114
|
+
label: (0, _i18n.__)('Synced'),
|
|
115
|
+
help: (0, _i18n.__)('Editing the pattern will update it anywhere it is used.'),
|
|
116
|
+
checked: !syncType,
|
|
117
|
+
onChange: () => {
|
|
118
|
+
setSyncType(!syncType ? 'unsynced' : undefined);
|
|
119
|
+
}
|
|
120
|
+
}), (0, _element.createElement)(_components.__experimentalHStack, {
|
|
121
|
+
justify: "right"
|
|
122
|
+
}, (0, _element.createElement)(_components.Button, {
|
|
123
|
+
variant: "primary",
|
|
124
|
+
type: "submit"
|
|
125
|
+
}, (0, _i18n.__)('Create')))))));
|
|
47
126
|
}
|
|
48
127
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-sync-status/index.js"],"names":["PostSyncStatus","syncStatus","postType","select","getEditedPostAttribute","editorStore","
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-sync-status/index.js"],"names":["PostSyncStatus","syncStatus","postType","meta","select","getEditedPostAttribute","editorStore","currentSyncStatus","wp_pattern_sync_status","PostSyncStatusModal","editPost","isModalOpen","setIsModalOpen","syncType","setSyncType","undefined","isNewPost","isCleanNewPost","setSyncStatus","ReusableBlocksRenameHint","blockEditorPrivateApis","event","preventDefault"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tPanelRow,\n\tModal,\n\tButton,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tToggleControl,\n} from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nexport default function PostSyncStatus() {\n\tconst { syncStatus, postType, meta } = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute } = select( editorStore );\n\t\treturn {\n\t\t\tsyncStatus: getEditedPostAttribute( 'wp_pattern_sync_status' ),\n\t\t\tmeta: getEditedPostAttribute( 'meta' ),\n\t\t\tpostType: getEditedPostAttribute( 'type' ),\n\t\t};\n\t} );\n\n\tif ( postType !== 'wp_block' ) {\n\t\treturn null;\n\t}\n\t// When the post is first created, the top level wp_pattern_sync_status is not set so get meta value instead.\n\tconst currentSyncStatus =\n\t\tmeta?.wp_pattern_sync_status === 'unsynced' ? 'unsynced' : syncStatus;\n\n\treturn (\n\t\t<PanelRow className=\"edit-post-sync-status\">\n\t\t\t<span>{ __( 'Sync status' ) }</span>\n\t\t\t<div>\n\t\t\t\t{ currentSyncStatus === 'unsynced'\n\t\t\t\t\t? __( 'Not synced' )\n\t\t\t\t\t: __( 'Fully synced' ) }\n\t\t\t</div>\n\t\t</PanelRow>\n\t);\n}\n\nexport function PostSyncStatusModal() {\n\tconst { editPost } = useDispatch( editorStore );\n\tconst [ isModalOpen, setIsModalOpen ] = useState( false );\n\tconst [ syncType, setSyncType ] = useState( undefined );\n\n\tconst { postType, isNewPost } = useSelect( ( select ) => {\n\t\tconst { getEditedPostAttribute, isCleanNewPost } =\n\t\t\tselect( editorStore );\n\t\treturn {\n\t\t\tpostType: getEditedPostAttribute( 'type' ),\n\t\t\tisNewPost: isCleanNewPost(),\n\t\t};\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( isNewPost && postType === 'wp_block' ) {\n\t\t\tsetIsModalOpen( true );\n\t\t}\n\t\t// We only want the modal to open when the page is first loaded.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [] );\n\n\tconst setSyncStatus = () => {\n\t\teditPost( {\n\t\t\tmeta: {\n\t\t\t\twp_pattern_sync_status: syncType,\n\t\t\t},\n\t\t} );\n\t};\n\n\tif ( postType !== 'wp_block' || ! isNewPost ) {\n\t\treturn null;\n\t}\n\tconst { ReusableBlocksRenameHint } = unlock( blockEditorPrivateApis );\n\treturn (\n\t\t<>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<Modal\n\t\t\t\t\ttitle={ __( 'Set pattern sync status' ) }\n\t\t\t\t\tonRequestClose={ () => {\n\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t} }\n\t\t\t\t\toverlayClassName=\"reusable-blocks-menu-items__convert-modal\"\n\t\t\t\t>\n\t\t\t\t\t<form\n\t\t\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tsetIsModalOpen( false );\n\t\t\t\t\t\t\tsetSyncStatus();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VStack spacing=\"5\">\n\t\t\t\t\t\t\t<ReusableBlocksRenameHint />\n\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\tlabel={ __( 'Synced' ) }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Editing the pattern will update it anywhere it is used.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tchecked={ ! syncType }\n\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\tsetSyncType(\n\t\t\t\t\t\t\t\t\t\t! syncType ? 'unsynced' : undefined\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<HStack justify=\"right\">\n\t\t\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t\t\t{ __( 'Create' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t</VStack>\n\t\t\t\t\t</form>\n\t\t\t\t</Modal>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -13,6 +13,8 @@ var _reactAutosizeTextarea = _interopRequireDefault(require("react-autosize-text
|
|
|
13
13
|
|
|
14
14
|
var _i18n = require("@wordpress/i18n");
|
|
15
15
|
|
|
16
|
+
var _coreData = require("@wordpress/core-data");
|
|
17
|
+
|
|
16
18
|
var _blocks = require("@wordpress/blocks");
|
|
17
19
|
|
|
18
20
|
var _data = require("@wordpress/data");
|
|
@@ -35,65 +37,51 @@ var _store = require("../../store");
|
|
|
35
37
|
* Internal dependencies
|
|
36
38
|
*/
|
|
37
39
|
function PostTextEditor() {
|
|
38
|
-
const postContent = (0, _data.useSelect)(select => select(_store.store).getEditedPostContent(), []);
|
|
39
|
-
const {
|
|
40
|
-
editPost,
|
|
41
|
-
resetEditorBlocks
|
|
42
|
-
} = (0, _data.useDispatch)(_store.store);
|
|
43
|
-
const [value, setValue] = (0, _element.useState)(postContent);
|
|
44
|
-
const [isDirty, setIsDirty] = (0, _element.useState)(false);
|
|
45
40
|
const instanceId = (0, _compose.useInstanceId)(PostTextEditor);
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
setIsDirty(true);
|
|
71
|
-
valueRef.current = newValue;
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Function called when the user has completed their edits, responsible for
|
|
75
|
-
* ensuring that changes, if made, are surfaced to the onPersist prop
|
|
76
|
-
* callback and resetting dirty state.
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const stopEditing = () => {
|
|
81
|
-
if (isDirty) {
|
|
82
|
-
const blocks = (0, _blocks.parse)(value);
|
|
83
|
-
resetEditorBlocks(blocks);
|
|
84
|
-
setIsDirty(false);
|
|
85
|
-
}
|
|
86
|
-
}; // Ensure changes aren't lost when component unmounts.
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
(0, _element.useEffect)(() => {
|
|
90
|
-
return () => {
|
|
91
|
-
if (valueRef.current) {
|
|
92
|
-
const blocks = (0, _blocks.parse)(valueRef.current);
|
|
93
|
-
resetEditorBlocks(blocks);
|
|
94
|
-
}
|
|
41
|
+
const {
|
|
42
|
+
content,
|
|
43
|
+
blocks,
|
|
44
|
+
type,
|
|
45
|
+
id
|
|
46
|
+
} = (0, _data.useSelect)(select => {
|
|
47
|
+
const {
|
|
48
|
+
getEditedEntityRecord
|
|
49
|
+
} = select(_coreData.store);
|
|
50
|
+
const {
|
|
51
|
+
getCurrentPostType,
|
|
52
|
+
getCurrentPostId
|
|
53
|
+
} = select(_store.store);
|
|
54
|
+
|
|
55
|
+
const _type = getCurrentPostType();
|
|
56
|
+
|
|
57
|
+
const _id = getCurrentPostId();
|
|
58
|
+
|
|
59
|
+
const editedRecord = getEditedEntityRecord('postType', _type, _id);
|
|
60
|
+
return {
|
|
61
|
+
content: editedRecord?.content,
|
|
62
|
+
blocks: editedRecord?.blocks,
|
|
63
|
+
type: _type,
|
|
64
|
+
id: _id
|
|
95
65
|
};
|
|
96
66
|
}, []);
|
|
67
|
+
const {
|
|
68
|
+
editEntityRecord
|
|
69
|
+
} = (0, _data.useDispatch)(_coreData.store); // Replicates the logic found in getEditedPostContent().
|
|
70
|
+
|
|
71
|
+
const value = (0, _element.useMemo)(() => {
|
|
72
|
+
if (content instanceof Function) {
|
|
73
|
+
return content({
|
|
74
|
+
blocks
|
|
75
|
+
});
|
|
76
|
+
} else if (blocks) {
|
|
77
|
+
// If we have parsed blocks already, they should be our source of truth.
|
|
78
|
+
// Parsing applies block deprecations and legacy block conversions that
|
|
79
|
+
// unparsed content will not have.
|
|
80
|
+
return (0, _blocks.__unstableSerializeAndClean)(blocks);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return content;
|
|
84
|
+
}, [content, blocks]);
|
|
97
85
|
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.VisuallyHidden, {
|
|
98
86
|
as: "label",
|
|
99
87
|
htmlFor: `post-content-${instanceId}`
|
|
@@ -101,8 +89,13 @@ function PostTextEditor() {
|
|
|
101
89
|
autoComplete: "off",
|
|
102
90
|
dir: "auto",
|
|
103
91
|
value: value,
|
|
104
|
-
onChange:
|
|
105
|
-
|
|
92
|
+
onChange: event => {
|
|
93
|
+
editEntityRecord('postType', type, id, {
|
|
94
|
+
content: event.target.value,
|
|
95
|
+
blocks: undefined,
|
|
96
|
+
selection: undefined
|
|
97
|
+
});
|
|
98
|
+
},
|
|
106
99
|
className: "editor-post-text-editor",
|
|
107
100
|
id: `post-content-${instanceId}`,
|
|
108
101
|
placeholder: (0, _i18n.__)('Start writing with text or HTML')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/editor/src/components/post-text-editor/index.js"],"names":["PostTextEditor","
|
|
1
|
+
{"version":3,"sources":["@wordpress/editor/src/components/post-text-editor/index.js"],"names":["PostTextEditor","instanceId","content","blocks","type","id","select","getEditedEntityRecord","coreStore","getCurrentPostType","getCurrentPostId","editorStore","_type","_id","editedRecord","editEntityRecord","value","Function","event","target","undefined","selection"],"mappings":";;;;;;;;;AAUA;;AAPA;;AAKA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAKA;;AAnBA;AACA;AACA;;AAGA;AACA;AACA;;AASA;AACA;AACA;AAGe,SAASA,cAAT,GAA0B;AACxC,QAAMC,UAAU,GAAG,4BAAeD,cAAf,CAAnB;AACA,QAAM;AAAEE,IAAAA,OAAF;AAAWC,IAAAA,MAAX;AAAmBC,IAAAA,IAAnB;AAAyBC,IAAAA;AAAzB,MAAgC,qBAAaC,MAAF,IAAc;AAC9D,UAAM;AAAEC,MAAAA;AAAF,QAA4BD,MAAM,CAAEE,eAAF,CAAxC;AACA,UAAM;AAAEC,MAAAA,kBAAF;AAAsBC,MAAAA;AAAtB,QAA2CJ,MAAM,CAAEK,YAAF,CAAvD;;AACA,UAAMC,KAAK,GAAGH,kBAAkB,EAAhC;;AACA,UAAMI,GAAG,GAAGH,gBAAgB,EAA5B;;AACA,UAAMI,YAAY,GAAGP,qBAAqB,CAAE,UAAF,EAAcK,KAAd,EAAqBC,GAArB,CAA1C;AAEA,WAAO;AACNX,MAAAA,OAAO,EAAEY,YAAY,EAAEZ,OADjB;AAENC,MAAAA,MAAM,EAAEW,YAAY,EAAEX,MAFhB;AAGNC,MAAAA,IAAI,EAAEQ,KAHA;AAINP,MAAAA,EAAE,EAAEQ;AAJE,KAAP;AAMA,GAbqC,EAanC,EAbmC,CAAtC;AAcA,QAAM;AAAEE,IAAAA;AAAF,MAAuB,uBAAaP,eAAb,CAA7B,CAhBwC,CAiBxC;;AACA,QAAMQ,KAAK,GAAG,sBAAS,MAAM;AAC5B,QAAKd,OAAO,YAAYe,QAAxB,EAAmC;AAClC,aAAOf,OAAO,CAAE;AAAEC,QAAAA;AAAF,OAAF,CAAd;AACA,KAFD,MAEO,IAAKA,MAAL,EAAc;AACpB;AACA;AACA;AACA,aAAO,yCAA6BA,MAA7B,CAAP;AACA;;AACD,WAAOD,OAAP;AACA,GAVa,EAUX,CAAEA,OAAF,EAAWC,MAAX,CAVW,CAAd;AAYA,SACC,qDACC,4BAAC,0BAAD;AACC,IAAA,EAAE,EAAC,OADJ;AAEC,IAAA,OAAO,EAAI,gBAAgBF,UAAY;AAFxC,KAIG,cAAI,mBAAJ,CAJH,CADD,EAOC,4BAAC,8BAAD;AACC,IAAA,YAAY,EAAC,KADd;AAEC,IAAA,GAAG,EAAC,MAFL;AAGC,IAAA,KAAK,EAAGe,KAHT;AAIC,IAAA,QAAQ,EAAKE,KAAF,IAAa;AACvBH,MAAAA,gBAAgB,CAAE,UAAF,EAAcX,IAAd,EAAoBC,EAApB,EAAwB;AACvCH,QAAAA,OAAO,EAAEgB,KAAK,CAACC,MAAN,CAAaH,KADiB;AAEvCb,QAAAA,MAAM,EAAEiB,SAF+B;AAGvCC,QAAAA,SAAS,EAAED;AAH4B,OAAxB,CAAhB;AAKA,KAVF;AAWC,IAAA,SAAS,EAAC,yBAXX;AAYC,IAAA,EAAE,EAAI,gBAAgBnB,UAAY,EAZnC;AAaC,IAAA,WAAW,EAAG,cAAI,iCAAJ;AAbf,IAPD,CADD;AAyBA","sourcesContent":["/**\n * External dependencies\n */\nimport Textarea from 'react-autosize-textarea';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { store as coreStore } from '@wordpress/core-data';\nimport { useMemo } from '@wordpress/element';\nimport { __unstableSerializeAndClean } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\nimport { VisuallyHidden } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\n\nexport default function PostTextEditor() {\n\tconst instanceId = useInstanceId( PostTextEditor );\n\tconst { content, blocks, type, id } = useSelect( ( select ) => {\n\t\tconst { getEditedEntityRecord } = select( coreStore );\n\t\tconst { getCurrentPostType, getCurrentPostId } = select( editorStore );\n\t\tconst _type = getCurrentPostType();\n\t\tconst _id = getCurrentPostId();\n\t\tconst editedRecord = getEditedEntityRecord( 'postType', _type, _id );\n\n\t\treturn {\n\t\t\tcontent: editedRecord?.content,\n\t\t\tblocks: editedRecord?.blocks,\n\t\t\ttype: _type,\n\t\t\tid: _id,\n\t\t};\n\t}, [] );\n\tconst { editEntityRecord } = useDispatch( coreStore );\n\t// Replicates the logic found in getEditedPostContent().\n\tconst value = useMemo( () => {\n\t\tif ( content instanceof Function ) {\n\t\t\treturn content( { blocks } );\n\t\t} else if ( blocks ) {\n\t\t\t// If we have parsed blocks already, they should be our source of truth.\n\t\t\t// Parsing applies block deprecations and legacy block conversions that\n\t\t\t// unparsed content will not have.\n\t\t\treturn __unstableSerializeAndClean( blocks );\n\t\t}\n\t\treturn content;\n\t}, [ content, blocks ] );\n\n\treturn (\n\t\t<>\n\t\t\t<VisuallyHidden\n\t\t\t\tas=\"label\"\n\t\t\t\thtmlFor={ `post-content-${ instanceId }` }\n\t\t\t>\n\t\t\t\t{ __( 'Type text or HTML' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t<Textarea\n\t\t\t\tautoComplete=\"off\"\n\t\t\t\tdir=\"auto\"\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\teditEntityRecord( 'postType', type, id, {\n\t\t\t\t\t\tcontent: event.target.value,\n\t\t\t\t\t\tblocks: undefined,\n\t\t\t\t\t\tselection: undefined,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t\tclassName=\"editor-post-text-editor\"\n\t\t\t\tid={ `post-content-${ instanceId }` }\n\t\t\t\tplaceholder={ __( 'Start writing with text or HTML' ) }\n\t\t\t/>\n\t\t</>\n\t);\n}\n"]}
|
package/build/store/actions.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.__experimentalTearDownEditor = __experimentalTearDownEditor;
|
|
9
|
-
exports.clearSelectedBlock = exports.autosave = void 0;
|
|
9
|
+
exports.clearSelectedBlock = exports.autosave = exports.__unstableSaveForPreview = void 0;
|
|
10
10
|
exports.createUndoLevel = createUndoLevel;
|
|
11
11
|
exports.insertDefaultBlock = exports.insertBlocks = exports.insertBlock = exports.hideInsertionPoint = exports.exitFormattedText = exports.enterFormattedText = exports.enablePublishSidebar = exports.editPost = exports.disablePublishSidebar = void 0;
|
|
12
12
|
exports.lockPostAutosaving = lockPostAutosaving;
|
|
@@ -37,6 +37,8 @@ var _coreData = require("@wordpress/core-data");
|
|
|
37
37
|
|
|
38
38
|
var _blockEditor = require("@wordpress/block-editor");
|
|
39
39
|
|
|
40
|
+
var _hooks = require("@wordpress/hooks");
|
|
41
|
+
|
|
40
42
|
var _preferences = require("@wordpress/preferences");
|
|
41
43
|
|
|
42
44
|
var _constants = require("./constants");
|
|
@@ -220,11 +222,18 @@ const savePost = (options = {}) => async ({
|
|
|
220
222
|
options
|
|
221
223
|
});
|
|
222
224
|
await registry.dispatch(_coreData.store).saveEntityRecord('postType', previousRecord.type, edits, options);
|
|
225
|
+
let error = registry.select(_coreData.store).getLastEntitySaveError('postType', previousRecord.type, previousRecord.id);
|
|
226
|
+
|
|
227
|
+
if (!error) {
|
|
228
|
+
await (0, _hooks.applyFilters)('editor.__unstableSavePost', Promise.resolve(), options).catch(err => {
|
|
229
|
+
error = err;
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
|
|
223
233
|
dispatch({
|
|
224
234
|
type: 'REQUEST_POST_UPDATE_FINISH',
|
|
225
235
|
options
|
|
226
236
|
});
|
|
227
|
-
const error = registry.select(_coreData.store).getLastEntitySaveError('postType', previousRecord.type, previousRecord.id);
|
|
228
237
|
|
|
229
238
|
if (error) {
|
|
230
239
|
const args = (0, _noticeBuilder.getNotificationArgumentsForSaveFail)({
|
|
@@ -346,12 +355,37 @@ const autosave = ({
|
|
|
346
355
|
});
|
|
347
356
|
}
|
|
348
357
|
};
|
|
358
|
+
|
|
359
|
+
exports.autosave = autosave;
|
|
360
|
+
|
|
361
|
+
const __unstableSaveForPreview = ({
|
|
362
|
+
forceIsAutosaveable
|
|
363
|
+
}) => async ({
|
|
364
|
+
select,
|
|
365
|
+
dispatch
|
|
366
|
+
}) => {
|
|
367
|
+
if ((forceIsAutosaveable || select.isEditedPostAutosaveable()) && !select.isPostLocked()) {
|
|
368
|
+
const isDraft = ['draft', 'auto-draft'].includes(select.getEditedPostAttribute('status'));
|
|
369
|
+
|
|
370
|
+
if (isDraft) {
|
|
371
|
+
await dispatch.savePost({
|
|
372
|
+
isPreview: true
|
|
373
|
+
});
|
|
374
|
+
} else {
|
|
375
|
+
await dispatch.autosave({
|
|
376
|
+
isPreview: true
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
return select.getEditedPostPreviewLink();
|
|
382
|
+
};
|
|
349
383
|
/**
|
|
350
384
|
* Action that restores last popped state in undo history.
|
|
351
385
|
*/
|
|
352
386
|
|
|
353
387
|
|
|
354
|
-
exports.
|
|
388
|
+
exports.__unstableSaveForPreview = __unstableSaveForPreview;
|
|
355
389
|
|
|
356
390
|
const redo = () => ({
|
|
357
391
|
registry
|