UNPKG

@wordpress/editor

Version:
8 lines (7 loc) 5.19 kB
{ "version": 3, "sources": ["../../../src/components/post-schedule/index.js"], "sourcesContent": ["/**\n * External dependencies\n */\nimport { parseISO, endOfMonth, startOfMonth } from 'date-fns';\n\n/**\n * WordPress dependencies\n */\nimport { getSettings } from '@wordpress/date';\nimport { _x } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { useState, useMemo } from '@wordpress/element';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst { PrivatePublishDateTimePicker } = unlock( blockEditorPrivateApis );\n\n/**\n * Renders the PostSchedule component. It allows the user to schedule a post.\n *\n * @param {Object} props Props.\n * @param {Function} props.onClose Function to close the component.\n *\n * @return {React.ReactNode} The rendered component.\n */\nexport default function PostSchedule( props ) {\n\treturn (\n\t\t<PrivatePostSchedule\n\t\t\t{ ...props }\n\t\t\tshowPopoverHeaderActions\n\t\t\tisCompact={ false }\n\t\t/>\n\t);\n}\n\nexport function PrivatePostSchedule( {\n\tonClose,\n\tshowPopoverHeaderActions,\n\tisCompact,\n} ) {\n\tconst { postDate, postType } = useSelect(\n\t\t( select ) => ( {\n\t\t\tpostDate: select( editorStore ).getEditedPostAttribute( 'date' ),\n\t\t\tpostType: select( editorStore ).getCurrentPostType(),\n\t\t} ),\n\t\t[]\n\t);\n\n\tconst { editPost } = useDispatch( editorStore );\n\tconst onUpdateDate = ( date ) => editPost( { date } );\n\n\tconst [ previewedMonth, setPreviewedMonth ] = useState(\n\t\tstartOfMonth( new Date( postDate ) )\n\t);\n\n\t// Pick up published and scheduled site posts.\n\tconst eventsByPostType = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).getEntityRecords( 'postType', postType, {\n\t\t\t\tstatus: 'publish,future',\n\t\t\t\tafter: startOfMonth( previewedMonth ).toISOString(),\n\t\t\t\tbefore: endOfMonth( previewedMonth ).toISOString(),\n\t\t\t\texclude: [ select( editorStore ).getCurrentPostId() ],\n\t\t\t\tper_page: 100,\n\t\t\t\t_fields: 'id,date',\n\t\t\t} ),\n\t\t[ previewedMonth, postType ]\n\t);\n\n\tconst events = useMemo(\n\t\t() =>\n\t\t\t( eventsByPostType || [] ).map( ( { date: eventDate } ) => ( {\n\t\t\t\tdate: new Date( eventDate ),\n\t\t\t} ) ),\n\t\t[ eventsByPostType ]\n\t);\n\n\tconst settings = getSettings();\n\n\t// To know if the current timezone is a 12 hour time with look for \"a\" in the time format\n\t// We also make sure this a is not escaped by a \"/\"\n\tconst is12HourTime = /a(?!\\\\)/i.test(\n\t\tsettings.formats.time\n\t\t\t.toLowerCase() // Test only the lower case a.\n\t\t\t.replace( /\\\\\\\\/g, '' ) // Replace \"//\" with empty strings.\n\t\t\t.split( '' )\n\t\t\t.reverse()\n\t\t\t.join( '' ) // Reverse the string and test for \"a\" not followed by a slash.\n\t);\n\n\treturn (\n\t\t<PrivatePublishDateTimePicker\n\t\t\tcurrentDate={ postDate }\n\t\t\tonChange={ onUpdateDate }\n\t\t\tis12Hour={ is12HourTime }\n\t\t\tdateOrder={\n\t\t\t\t/* translators: Order of day, month, and year. Available formats are 'dmy', 'mdy', and 'ymd'. */\n\t\t\t\t_x( 'dmy', 'date order' )\n\t\t\t}\n\t\t\tevents={ events }\n\t\t\tonMonthPreviewed={ ( date ) =>\n\t\t\t\tsetPreviewedMonth( parseISO( date ) )\n\t\t\t}\n\t\t\tonClose={ onClose }\n\t\t\tisCompact={ isCompact }\n\t\t\tshowPopoverHeaderActions={ showPopoverHeaderActions }\n\t\t/>\n\t);\n}\n"], "mappings": ";AAGA,SAAS,UAAU,YAAY,oBAAoB;AAKnD,SAAS,mBAAmB;AAC5B,SAAS,UAAU;AACnB,SAAS,aAAa,iBAAiB;AACvC,SAAS,eAAe,8BAA8B;AACtD,SAAS,UAAU,eAAe;AAClC,SAAS,SAAS,iBAAiB;AAKnC,SAAS,SAAS,mBAAmB;AACrC,SAAS,cAAc;AAcrB;AAZF,IAAM,EAAE,6BAA6B,IAAI,OAAQ,sBAAuB;AAUzD,SAAR,aAA+B,OAAQ;AAC7C,SACC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACL,0BAAwB;AAAA,MACxB,WAAY;AAAA;AAAA,EACb;AAEF;AAEO,SAAS,oBAAqB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,UAAU,SAAS,IAAI;AAAA,IAC9B,CAAE,YAAc;AAAA,MACf,UAAU,OAAQ,WAAY,EAAE,uBAAwB,MAAO;AAAA,MAC/D,UAAU,OAAQ,WAAY,EAAE,mBAAmB;AAAA,IACpD;AAAA,IACA,CAAC;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,IAAI,YAAa,WAAY;AAC9C,QAAM,eAAe,CAAE,SAAU,SAAU,EAAE,KAAK,CAAE;AAEpD,QAAM,CAAE,gBAAgB,iBAAkB,IAAI;AAAA,IAC7C,aAAc,IAAI,KAAM,QAAS,CAAE;AAAA,EACpC;AAGA,QAAM,mBAAmB;AAAA,IACxB,CAAE,WACD,OAAQ,SAAU,EAAE,iBAAkB,YAAY,UAAU;AAAA,MAC3D,QAAQ;AAAA,MACR,OAAO,aAAc,cAAe,EAAE,YAAY;AAAA,MAClD,QAAQ,WAAY,cAAe,EAAE,YAAY;AAAA,MACjD,SAAS,CAAE,OAAQ,WAAY,EAAE,iBAAiB,CAAE;AAAA,MACpD,UAAU;AAAA,MACV,SAAS;AAAA,IACV,CAAE;AAAA,IACH,CAAE,gBAAgB,QAAS;AAAA,EAC5B;AAEA,QAAM,SAAS;AAAA,IACd,OACG,oBAAoB,CAAC,GAAI,IAAK,CAAE,EAAE,MAAM,UAAU,OAAS;AAAA,MAC5D,MAAM,IAAI,KAAM,SAAU;AAAA,IAC3B,EAAI;AAAA,IACL,CAAE,gBAAiB;AAAA,EACpB;AAEA,QAAM,WAAW,YAAY;AAI7B,QAAM,eAAe,WAAW;AAAA,IAC/B,SAAS,QAAQ,KACf,YAAY,EACZ,QAAS,SAAS,EAAG,EACrB,MAAO,EAAG,EACV,QAAQ,EACR,KAAM,EAAG;AAAA;AAAA,EACZ;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAc;AAAA,MACd,UAAW;AAAA,MACX,UAAW;AAAA,MACX;AAAA;AAAA,QAEC,GAAI,OAAO,YAAa;AAAA;AAAA,MAEzB;AAAA,MACA,kBAAmB,CAAE,SACpB,kBAAmB,SAAU,IAAK,CAAE;AAAA,MAErC;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACD;AAEF;", "names": [] }